我最近检测到我的 ZFS raid-5 阵列中的硬盘出现故障。所以我买了一个硬盘,关闭并更换了故障硬盘。恐怕我应该先从池中移除故障的驱动器。它现在正在造成大麻烦……
pool: maxtorage
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub repaired 0B in 7h10m with 0 errors on Sun Jul 11 07:34:21 2021
config:
NAME STATE READ WRITE CKSUM
maxtorage DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
sdd ONLINE 0 0 0
sdf ONLINE 0 0 0
3022016455510322769 UNAVAIL 0 0 0 was /dev/sda1
sde ONLINE 0 0 0
cache
sdg ONLINE 0 0 0
errors: No known data errors
如果我尝试替换:
$ sudo zpool replace maxtorage 3022016455510322769 /dev/sdc
invalid vdev specification
use '-f' to override the following errors:
/dev/sdc1 is part of active pool 'maxtorage'
zpool labelclear -f /dev/sdc1 对我的情况没有任何作用
尝试删除 sdc(1)
$ sudo zpool remove maxtorage /dev/sdc1
cannot remove /dev/sdc1: no such device in pool
$ sudo zpool remove maxtorage /dev/sdc
cannot remove /dev/sdc: no such device in pool
$
我现在很为难,不知道如何修理我的游泳池。有人能给我一些建议吗?
ZFS 文档说明(zfsonlinux.org/msg/ZFS-8000-4J):
如果该设备已被同一物理插槽中的另一个磁盘替换,则可以使用“zpool replace”命令的单个参数来替换该设备:
zpool 替换测试 c0t0d1
一旦发出替换命令,ZFS 就会开始将数据迁移到新设备。重新同步完成后,原始设备(如果与替换设备不同)将被移除,池将恢复为 ONLINE 状态。
$ sudo zpool replace maxtorage /dev/sda
cannot open '/dev/sda': Médium nebylo nalezeno
internal error: Médium nebylo nalezeno
Neúspěšně ukončen (SIGABRT)
(未找到驱动器,执行失败)
答案1
所以我最终想通了。主要问题是在我的池中使用驱动器号(sda、sdb……)。只要你插入另一个驱动器,这些(可以)随时更改。这对我帮助很大https://serverfault.com/a/953026
#zpool export maxtorage
#zpool import -d /dev/disk/by-id maxtorage
编辑/etc/default/zfs
以使用 /dev/disk/by-id
ls -la /dev/disk/by-id/
找到新驱动器的 IDwwn-0x5000c500c8599b96
#zpool export maxtorage
必须强制(-f)标签清除,因为它表示新驱动器可能是池的一部分