我在 4 个硬盘的 zfspool 上安装了 Debian 系统(如 raid10 - 两个 raid1 的 raid0)。并显示为 2 个镜像的集合,每个镜像都有 2 个硬盘,即 mirror0 和 mirror1。
其中一个磁盘出现故障。由于此服务器中没有更多可用插槽,我使用以下命令将其分离:
zpool detach poolname diskname
然后物理拔掉旧电源,再插入新的电源。现在 zpool 如下所示:
zpool status rpool
pool: rpool
state: ONLINE
scan: scrub repaired 52K in 0 days 08:33:06 with 0 errors on Sun May 9 08:57:09 2021
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-TOSHIBA_HDWQ140_104EK2MQFAYG-part3 ONLINE 0 0 0
ata-TOSHIBA_HDWQ140_1042K0ECFAYG-part3 ONLINE 0 0 0
ata-TOSHIBA_HDWQ140_104EK2MLFAYG ONLINE 0 0 0
看起来它不再是 raid10。我无法用新磁盘替换故障磁盘:
zpool replace rpool 4504484537486819887 /dev/disk/by-id/newdisk_id
cannot replace 4504484537486819887 with /dev/disk/by-id/newdisk_id: no such device in pool
向池中添加新磁盘并恢复池配置的安全方法是什么?
答案1
当您使用detach
故障磁盘时,顶层 vdev 不再是镜像。因此您无法使用replace
旧磁盘。相反,您需要使用attach
类似以下内容的命令来创建新磁盘:
zpool attach rpool ata-TOSHIBA_HDWQ140_104EK2MLFAYG <newdisk>
与往常一样,在运行任何东西之前,请确保拥有当前备份。