尝试修复 ZFS 池中的镜像:
louis@watson:~$ sudo zpool status
pool: watson
state: ONLINE
scan: resilvered 1.55T in 7h22m with 0 errors on Fri Oct 6 03:19:16 2017
config:
NAME STATE READ WRITE CKSUM
watson ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
wwn-0x50014ee0ad3655a3 ONLINE 0 0 0
ata-Hitachi_HUA723020ALA640_MK0271YGJA5BSA ONLINE 0 0 0
wwn-0x50014ee058480994 ONLINE 0 0 0
当我尝试添加磁盘时,我收到消息“设备具有不同的扇区对齐“:
louis@watson:~$ sudo zpool attach -f watson wwn-0x50014ee058480994 scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP
cannot attach scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP to wwn-0x50014ee058480994:
devices have different sector alignment
以下是新驱动器和目标驱动器的扇区报告:
louis@watson:~$ sudo hdparm -I /dev/disk/by-id/scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP | fgrep Sector
Logical Sector size: 512 bytes
Physical Sector size: 4096 bytes
Logical Sector-0 offset: 0 bytes
louis@watson:~$ sudo hdparm -I /dev/disk/by-id/wwn-0x50014ee058480994 | fgrep Sector
Logical/Physical Sector size: 512 bytes
* SCT Long Sector Access (AC1)
如何将这些驱动器混合在一个池中?
答案1
我认为这与这张支票(详细信息从用户处复制破解版):
主要目的是当您使用 ashift=9 创建池时,尝试替换/附加具有 4k 扇区的磁盘时,这是一种“强制”命令。ZFS 不喜欢这种情况(并且有充分的理由),因此指定 -o ashift=9 会覆盖扇区大小检测并让 ZFS 接受它。
[...]
不,要求是 ashift_of(inserting_disk) <= ashift_of(existing_vdev)。不满足此条件将导致返回 EDOM 且操作无法继续。inserting_disk 值是从磁盘本身读取的,但可以使用 -o ashift=value 覆盖该值,并使用满足上述不等式的值,以使 ZFS 接受该磁盘。
理由是,连接偏移量过大的磁盘会导致性能极差(对于旋转介质而言),用户会不满意。我做过这样的事,我的 500G(半满的 1TB 驱动器)镜像花了 24 小时才重新镀银,而本来应该 2 小时。这是由于混合使用 512 和 4096 字节扇区驱动器造成的。
[...]
反之亦然。池的 ashift=9,但插入具有 4k 个扇区的磁盘(ashift=12)会导致不等式 12 <= 9,这是不正确的。使用 zpool ... -o ashift=9 会使它变为 9 <= 9,并且 ZFS 会接受它。
因此,您可以使用 附加磁盘sudo zpool attach -o ashift=9 -f watson wwn-0x50014ee058480994 scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP
,但性能可能会受到影响。替代方法是使用正确对齐的磁盘重新创建池,或者不要混合和匹配扇区大小(这意味着使用不同的磁盘)。