背景
我一直在重建一个小型家用 NAS。该服务器代表了我第一次“真正”涉足服务器管理领域,它已经教会了我很多东西。最初,这个东西是在一个拇指驱动器上使用 FreeNAS 设置的,该驱动器在 raidz1 中配置了 3 个磁盘。从那时起,我决定将整个系统迁移到 FreeBSD 9.0(稳定),以便更好地控制系统,并简单地学习如何“自己动手”。一切都很顺利,操作系统成功安装和更新(再次拇指驱动器,RW,访问时间和其他一些东西被禁用以防止闪存滥用)。
现在我正在设置我的磁盘存储,再次使用 raidz1。为此,我已将所有想要保留的文件复制到外部存储。在探索各种 zfs 命令时,我发现 FreeNAS 安装中的原始 zpool 仍然可见。我使用导入并升级了池
# zpool import ZFS1 tank //Import the original zpool 'ZFS1', renaming it 'tank'
# zpool upgrade tank //FreeNAS uses an older ZFS version, FreeBDS is v28
# zfs mount tank
并能够再次查看我的文件。肉汁。经过一番探索后,我决定还是想扔掉旧的游泳池并重新开始。我发出
# zfs umount tank
# zpool destroy tank
没有错误地完成了。现在我希望用这些磁盘重新创建一个“干净”的 raidz1。
问题
在创建新的 raidz1 之前,我在 中做了一些研究/dev
,只是为了看看我能学到什么。我想检查阵列中使用的磁盘,但我得到的输出对我来说似乎很奇怪。更糟糕的是,谷歌搜索并不能真正解释发生了什么。磁盘列表如下:
# ls -l ad*
lrwxr-xr-x 1 root wheel 4 Aug 12 20:50 ad2 -> ada2
lrwxr-xr-x 1 root wheel 4 Aug 12 20:50 ad4 -> ada0
lrwxr-xr-x 1 root wheel 4 Aug 12 20:50 ad6 -> ada1
crw-r----- 1 root operator 0, 96 Aug 12 20:50 ada0
crw-r----- 1 root operator 0, 98 Aug 12 20:50 ada1
crw-r----- 1 root operator 0, 100 Aug 12 20:50 ada2
我知道我在设置 raid 时在 FreeNAS 中创建了三个虚拟磁盘,我怀疑这就是链接的来源。我对此的疑问如下:
通过搜索符号链接的工作原理,我了解到符号链接只是一个将一个项目链接到另一个项目的文件。如果是这种情况,为什么 ada* 设备不使用“l”属性列出,而实际硬件设备不使用另一个属性(可能是块设备)列出?
这些链接是我之前设置的产物思考是必要的。它们可以被删除吗?如果是这样,如何(有点害怕随意删除东西;请参阅参考资料部分中的最后一个链接)?删除
ad*
条目是否会隐式删除ada*
节点,因为它们现在引用了不存在的链接?或者我有这个倒退吗?哪些是实际的硬件设备?正如我在上一个问题中提到的,我认为
ad*
节点将是字符设备或类似的设备,ada*
节点将是链接文件。最后,我知道根据设置和个人喜好肯定会存在一些差异,但是为简单的 raidz1 配置我的 SATA 设备的“可接受”方式是什么?对于一个简单的家庭 NAS 来说,所有这些符号链接业务似乎有点大材小用。
对于这么长的帖子,我深表歉意,但我已经尝试了很长一段时间来理解这一点。预先感谢您的时间和帮助。
参考
答案1
ada
设备是连接到较新的 SATA 端口的驱动器。有些人错过了这份备忘录,因此对 DevFS 进行了修改,以像传统设备一样提供这些设备名称的符号链接ad
。但是,系统可能已经有一些较旧的 SATA 端口或 IDE 端口,因此这些端口将占用较低的ad
设备编号(ad0、ad1 等)。因此映射的ada
设备会获得更高的数字。注意:如果您还没有意识到,
/dev
这是一种不同类型的文件系统(开发文件系统)。虽然它显示了像符号链接这样的简单结构,但它们并不是您所想的意义上的实际符号链接。- 你的前提是错误的,参见#1。
- 那些没有说它们是符号链接(通过
l
您指出的)的是设备驱动程序。它们的“真实性”程度各不相同,因为软件也可以提供设备。 我认为“最好”的方法是使用 GPT 分区,为它们指定合理的名称,并将这些命名分区作为 raidz 的 vdev 包含在内。
像下面这样的东西就可以做到这一点:
gpart create -s GPT ada0 gpart create -s GPT ada1 gpart create -s GPT ada2 gpart add -t freebsd-zfs -l tank-disk0 ada0 gpart add -t freebsd-zfs -l tank-disk1 ada1 gpart add -t freebsd-zfs -l tank-disk2 ada2 zpool create tank raidz /dev/gpt/tank-disk0 /dev/gpt/tank-disk1 /dev/gpt/tank-disk2
否则,最建议将磁盘直接传递到 ZFS。这两种配置都有支持者。如果您走这条路,我强烈建议您也设置
smartd
监控磁盘运行状况。还可以配置periodic
清理 zpool、监控 SMART 并定期向您发送报告(每周或您喜欢的任何时间)。
顺便说一句,FreeNAS 和其他 FreeBSD 派生项目使使用 FreeBSD 比简单地深入研究核心操作系统要容易得多。手册将指导您完成绝大多数您想要设置的内容,但随着时间的推移您也会遇到一些问题。如果你用 Google 搜索“handbook”,FreeBSD Handbook 就是排名第二的链接;它是如此重要/流行/良好。
关于参考文献的另一项注释。第一个是一个糟糕的例子,因为您不应该对网卡进行符号链接,您应该重命名它们(尽管不是文件系统类型重命名)。 DevFS 确实会响应链接和取消链接请求,大部分正如您所期望的那样。第二个和第三个参考文献看起来不错。请记住,链接的类型比符号链接的类型更多。