zpool create -f -o ashift = 12 $zpoolName mirror $disksById
如果需要更换其中一个磁盘,则根据zpool手册页,替换磁盘的大小必须等于或大于配置中两个磁盘中的最小磁盘.根据我的理解,通常精确的尺寸通常在不同品牌和型号(和型号修订版)的驱动器之间略有不同,即使它们都标记为8 TB.但是,我希望能够用任何其他8 TB磁盘替换它,不一定是相同的品牌和型号.
我该如何实现这一目标?
我本来期望zpool create命令的一个选项,这样就不会将整个磁盘用于池,但留下一些松弛,但是我找不到这样的选项.我看到的唯一建议是在创建池之前对磁盘进行分区,创建一个“池”分区和一个“松弛”分区,但我读过这会影响磁盘性能,因为磁盘缓存无法正常使用zfs,所以我想我想避免这个.
解决方法
The only suggestion that I have seen is partitioning the disk before creating the pool,creating one “pool” partition and one “slack” partition
这是正确的答案.
but I’ve read the this will affect disk performance as the disk cache can not be used properly by zfs.
这是一种误解.如果分区未对齐,则使用分区而不是完整磁盘只会影响性能,如果您使用的是模糊的现代分区编辑器,则通常需要对用户进行一些真正的确定. 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的磁盘应该可以替代这个磁盘,如果它失败了.