因此,我正在研究最终将成为文件服务器的 ZFS,并且我设法使自己进入这种状态:
pool: storage
state: DEGRADED
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-9P
scan: scrub in progress since Wed Oct 18 17:55:08 2017
272G scanned out of 665G at 512M/s, 0h13m to go
8K repaired, 40.92% done
config:
NAME STATE READ WRITE CKSUM
storage DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ata-Hitachi_HUA723020ALA641_YFH0ZXHA ONLINE 0 0 0
ata-Hitachi_HUA723020ALA641_YFH2808B ONLINE 0 0 0
ata-Hitachi_HUA723020ALA641_YGGLAUJA ONLINE 0 0 0
ata-Hitachi_HUA723020ALA641_YGGN6B7A ONLINE 0 0 0
sdf OFFLINE 0 0 2 (repairing)
errors: No known data errors
我通过构建一个 5 驱动器 raidz2 池,然后故意损坏其中一个磁盘,然后以某种方式移除/替换它来实现此目的。但我认为在某个时候我使用 sdX 标签而不是我想要的“by-id”标签添加了磁盘。
数组在这种状态下工作,但如果是生产的话,我更愿意保持命名的一致性,而且在某种程度上,我只是想更好地理解它。
有哪些可能的方法来“重命名”这个最后的设备?(除了彻底摧毁池!)
答案1
所以我不确定我是否以正确的方式或最佳的方式做到了这一点,但唯一能让它工作的方法是用不同的磁盘替换该磁盘,然后用我想要的新名称/ID 替换原来的磁盘。我 99% 确定这是因为 ZFS 不允许您替换标记为正在使用的磁盘,并且上面的“sdf”的 UUID 在 ZFS 数据库中作为活动设备。因此,即使将标签/元数据归零也无济于事,因为当您尝试添加/替换时,该磁盘仍然存在于数据库中。
如果您用具有不同 ID 的磁盘替换此磁盘,则替换完成后,它会从 zdb 中清除 ID。然后,您可以用原始磁盘“重新替换”该磁盘(因为不再存在冲突)。
我相当确定,如果您可以手动编辑 ZFS 数据库,您可能就可以解决这个问题,但我还没有走那么远……