在 CentOS8 上创建了 raidz1 驱动器阵列。五个驱动器,重启后 zpool 无法加载。
执行了 zpool import -a,以导入 zpool 和数据集。我丢失了一个驱动器,这让我很烦恼,但毫无用处,我使用 ZFS 已经有一段时间了,并且总是使用 /dev/disk/by-id 名称。我尝试使用 zpool replace 将驱动器替换为相同的驱动器,结果发现该驱动器正在使用中并且包含未知的文件系统。该驱动器可通过 dev/disk/by-id 名称和 /dev 名称获得。
我使用 wipefs --all 擦除了驱动器。我使用 gdisk 删除了分区,但仍然收到错误。
而且,我用另一个驱动器物理替换了该驱动器,但仍然收到该错误。
我怎样才能将该驱动器放回 zpool 中?
我已经附加了 zpool status 和 lsblk。
[root@beast by-id]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
└─ST91000640NS_00AJ142_00AJ145IBM_9XG9WE5R 253:2 0 931.5G 0 mpath
├─ST91000640NS_00AJ142_00AJ145IBM_9XG9WE5R1 253:5 0 931.5G 0 part
└─ST91000640NS_00AJ142_00AJ145IBM_9XG9WE5R9 253:7 0 8M 0 part
sdb 8:16 0 931.5G 0 disk
└─ST91000640NS_9XG6KFS5 253:3 0 931.5G 0 mpath
├─ST91000640NS_9XG6KFS5p1 253:11 0 931.5G 0 part
└─ST91000640NS_9XG6KFS5p9 253:12 0 8M 0 part
sdc 8:32 0 931.5G 0 disk
└─ST1000NX0423_S4702HQ1 253:4 0 931.5G 0 mpath
├─ST1000NX0423_S4702HQ1p1 253:8 0 931.5G 0 part
└─ST1000NX0423_S4702HQ1p9 253:9 0 8M 0 part
sdd 8:48 0 931.5G 0 disk
└─ST91000640NS_9XG916G1 253:6 0 931.5G 0 mpath
sde 8:64 0 931.5G 0 disk
└─ST1000NX0313_S4714LHN 253:10 0 931.5G 0 mpath
├─ST1000NX0313_S4714LHN1 253:13 0 931.5G 0 part
└─ST1000NX0313_S4714LHN9 253:14 0 8M 0 part
sdf 8:80 0 931.5G 0 disk
├─sdf1 8:81 0 4G 0 part /boot
└─sdf2 8:82 0 916G 0 part
├─cl-root 253:0 0 900G 0 lvm /
└─cl-swap 253:1 0 16G 0 lvm [SWAP]
[root@beast by-id]#
[root@beast by-id]# zpool status
pool: data
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scan: none requested
config:
NAME STATE READ WRITE CKSUM
data DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ST91000640NS_00AJ142_00AJ145IBM_9XG9WE5R1 ONLINE 0 0 0
ST91000640NS_9XG6KFS5 ONLINE 0 0 0
ST1000NX0423_S4702HQ1 ONLINE 0 0 0
7469149506902765747 OFFLINE 0 0 0 was /dev/disk/by-id/ata-ST91000640NS_9XG4167A-part1
ST1000NX0313_S4714LHN1 ONLINE 0 0 0
errors: No known data errors
[root@beast by-id]#
答案1
我可以通过删除多路径签名来添加驱动器。
我执行了“multipath -ll”来获取所有签名的列表,然后执行了 multipath -f {MULTIPATH NAME}”,然后能够执行 zpool replace 将驱动器添加回 zpool。
答案2
回答晚了,但也许对其他人有用......
当 ZFS 报告“驱动器正在使用中”时,这意味着 ZFS 无法独占打开所需的块设备。它通常取决于内核是否为另一个存储组件打开了驱动器/块设备,例如(但不限于):
- 姆拉伊德
- 多路径
- lvm
由于这些内置组件在启动阶段早期被激活(通常在预根环境等中dracut
),当插入 ZFS 内核模块并导入池时,他们发现驱动器/blockdev 已经很忙 - 因此出现错误消息。
要解决这个问题,通常必须停用有问题的服务或将设备列入黑名单。有时还需要删除任何旧签名(即:跳过 mdraid 自动激活)。