创buildzfs池,允许用较小的磁盘replace其中一个磁盘

这是关于Linux上的zfs(CentOS 7)的一个问题。 我有一个非常简单的安装两个8 TB磁盘,一个磁盘镜像另一个。

zpool create -f -o ashift = 12 $ zpoolName mirror $ disksById

如果需要更换一个磁盘,根据zpool手册页,更换磁盘的大小必须等于或大于configuration中两个磁盘的最小大小。 从我所了解的情况来看,通常情况下,不同品牌和型号的驱动器(和型号修订版)之间的确切尺寸通常会有所不同,即使它们都被标记为8 TB。 不过, 我希望能够用任何其他的8TB磁盘replace它 ,而不一定是相同的品牌和型号。

我如何做到这一点?

我会期望有一个选项来创buildzpool命令,以便整个磁盘不是用于池,但留下一些松懈,但我找不到这样的选项。 我看到的唯一build议是在创build池之前对磁盘进行分区,创build一个“池”分区和一个“松散”分区,但是我读过这会影响磁盘性能,因为磁盘caching不能被正确使用zfs,所以我想我想避免这个。

我所看到的唯一build议是在创build池之前对磁盘进行分区,创build一个“池”分区和一个“松弛”分区

这是正确的答案。

但是我已经读过了,这会影响磁盘性能,因为磁盘caching不能被zfs正确使用。

这是一个误解。 如果分区未alignment,使用分区而不是整个磁盘只会影响性能,如果您使用的是现代的分区编辑器,通常需要对用户的部分进行真实的判断。 Linux和BSD的fdisk,sfdisk和gparted都明白分区的界限,并在其中工作,除非直接强迫不要。

另外,如果仔细观察一个已经被zfs加载的磁盘,你会注意到zfs实际上已经对它进行了分区。 例:

root@banshee:~# zpool status data pool: data state: ONLINE scan: scrub repaired 0 in 27h54m with 0 errors on Mon Mar 13 05:18:20 2017 config: NAME STATE READ WRITE CKSUM data ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 wwn-0x50014ee206fd9549 ONLINE 0 0 0 wwn-0x50014ee2afb368a9 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 wwn-0x50014ee25d2510d4 ONLINE 0 0 0 wwn-0x5001517bb29d5333 ONLINE 0 0 0 errors: No known data errors root@banshee:~# ls -l /dev/disk/by-id | grep 510d4 lrwxrwxrwx 1 root root 9 Mar 22 15:57 wwn-0x50014ee25d2510d4 -> ../../sdd lrwxrwxrwx 1 root root 10 Mar 22 15:57 wwn-0x50014ee25d2510d4-part1 -> ../../sdd1 lrwxrwxrwx 1 root root 10 Mar 22 15:57 wwn-0x50014ee25d2510d4-part9 -> ../../sdd9 

如您所见,ZFS已经在池中分割了原始磁盘。 池使用分区1; 分区9是松弛的。

 root@banshee:~# sfdisk -d /dev/sdd label: gpt label-id: B2DED677-DB67-974C-80A6-070B72EB8CFB device: /dev/sdd unit: sectors first-lba: 34 last-lba: 3907029134 /dev/sdd1 : start= 2048, size= 3907010560, type=6A898CC3-1DD2-11B2-99A6-080020736631, uuid=A570D0A4-EA32-F64F-80D8-7479D918924B, name="zfs" /dev/sdd9 : start= 3907012608, size= 16384, type=6A945A3B-1DD2-11B2-99A6-080020736631, uuid=85D0957B-65AF-6B4A-9F1B-F902FE539170 

sdd9 16384个扇区。 这是一个4K磁盘,所以出现到64M,任何不超过现有磁盘63M-ish的磁盘都可以作为这个磁盘的替代品,如果它失败的话。

我看到的唯一build议是在创build池之前对磁盘进行分区

这确实是解决这个问题的唯一解决scheme。 您不必创build第二个小分区,该空间可以保持未分区。 由于磁盘之间的差异通常很小,所以只会损失几兆字节,这在8TB磁盘上是没有问题的。

另一种方法是购买完全相同的磁盘型号(通常不build议,因为制造中的串行故障只影响一个型号)。 或者从最小的磁盘开始,只能用更大的磁盘来replace,但是这会损失更多的空间,并且在一段时间后可能无法完成。