标签归档:TrueNAS

[TrueNAS]解决使用USB硬盘柜导致多块硬盘被识别为一块

这篇文章不是用来帮你在TrueNAS GUI里找到不显示的硬盘的,而是使用命令创建Pool。

由于大多数USB硬盘柜或者硬盘盒会硬编码一个序列号,而且接入的所有硬盘都会提供这同一个序列号给系统(不知道这是什么脑梗逻辑),又因为TrueNAS平台本身就是靠硬盘序列号来区分硬盘的,所以就会导致它的硬盘列表里只显示你插入的其中一块硬盘。

虽然TrueNAS不显示同序号的其余硬盘,但它们在系统里却是存在盘号的,所以你其实可以直接用命令创建池。

以下操作需要执行shell命令,请打开ssh服务后通过ssh连接操作,不要使用gui的终端,因为gui的会话时间太短了。

首先要找到列表里看不到的硬盘,执行以下命令,你就会看到一堆linux给硬盘分配的盘号,比如sd[abcdefg…]这样按字母顺序排下去的

lsblk

如果你插了很多硬盘,搞不清到底是少了哪块,可以去GUI的硬盘列表里扫一遍盘号,比如我的列表里就是少了sdc,再在lsblk命令的结果里确认一下sdc设备的空间大小,确认和你加的盘相符那就是那块了。

知道盘符之后就好办了,直接找个zfs的使用说明参考一下,手动创建池即可,比如这个:https://docs.oracle.com/cd/E19253-01/819-7065/gaynr/index.html

参考:我这里做了个raid1,执行以下命令创建池,创建一个raid1池,其中使用sdc和sdd盘做镜像

zpool create 池名 mirror sdc sdd

现在你的池创建好了,但你会发现在GUI的存储标签页里看不到它,在数据集里面可以看到它,但创建数据集之后也无法共享。这是因为直接使用命令创建的池缺少一些步骤,导致这个池不仅挂载点不对,而且系统池记录中没有这个池,所以大部分操作都是不允许的。

要解决这个问题很简单,我们只要先把这个池导出(export):

zpool export 池名

然后再用GUI的导入池功能把它导入进来,池的所有功能就正常了。

最后注意,由于TrueNAS是用序列号来区分硬盘的,所以使用此方法创建的pool不要在gui中执行硬盘替换等操作,可能会出问题!相关操作请使用zfs、zpool命令操作。

 

其它歪门邪道:

如果你和我一样是让TrueNAS跑在Windows宿主的虚拟机里的,那么可以让新加入的硬盘先在宿主里格式化成NTFS后生成vhd放在里面,接着让虚拟机把vhd挂载成虚拟机的硬盘,这样就有不一样的序列号了,但这么做就多了一层处理开销,也增加了意外情况下出错的风险,个人建议尽量不要这么做,除非使用vhd对你会有其它什么好处。这么一说其实其它平台的宿主也可以用其它虚拟磁盘来搞出不一样的序列号。

[TrueNAS]替换系统盘阵列中的坏盘

TrueNAS中的系统盘池不能在GUI中直接操作,所以需要敲点命令来替换坏盘,这里做个记录

首先查看zfs状态

# zpool status
 pool: boot-pool
 state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
        repaired.
  scan: scrub repaired 0B in 00:00:39 with 0 errors on Sat Nov  4 03:45:40 2023
config:

        NAME        STATE     READ WRITE CKSUM
        boot-pool   DEGRADED     0     0     0
          mirror-0  DEGRADED     0     0     0
            sdc3    FAULTED      2    17     0  too many errors
            sdd3    ONLINE       0     0     0

可以看到是sdc这块盘不行了,所以我们要替换它。

首先把它offline:

zpool offline boot-pool sdc3

然后把这块盘拔了,插进新盘,去web gui的磁盘页面看看新盘获得的盘号叫什么,我这里分配到了sde,所以接下来使用sde替换sdc3

zpool replace -f boot-pool sdc3 sde

由于boot-pool的内容其实很少,所以稍微等一会儿就同步好了,期间可以继续用`zpool status`查看同步状态。

TrueNAS启用pkg包管理器

这是一篇小笔记,truenas默认没法使用pkg install来安装包,会出现以下报错

pkg: file:///usr/ports/packages/meta.txz: No such file or directory
.....
pkg: file:///usr/ports/packages/packagesite.txz: No such file or directory
Unable to update repository local

解决方案是进入`/usr/local/etc/pkg/repos/` ,把`local.conf`中`enabled`后的yes改成no,把`FreeBSD.conf`中`enabled`后的no改成yes即可。

 

方案来源 : https://www.justinsilver.com/random/fix-pkg-on-freenas-11-2/