修复 btrfs RAID?错误:设备的 ioctl 不合适

修复 btrfs RAID?错误:设备的 ioctl 不合适

我有一个带有 8 个磁盘的 RAID5 btrfs,其中一个硬盘坏了并且从列表中消失了。

现在我尝试删除它但出现错误:

ERROR: error removing the device '/dev/sdb' - Inappropriate ioctl for device

在 中禁用自动挂载后/etc/fstab,我关闭了系统,更换了故障驱动器并重新启动系统以重置控制器,以防它因其他错误而跳闸,并且损坏的磁盘现在不存在,导致所有其他磁盘重新枚举,因此替换磁盘变得/dev/sdd不是sdb

运行btrfs fi show -d结果如下:

Label: 'store'  uuid: ...
        Total devices 8 FS bytes used 5.27TiB
        devid    2 size 1.36TiB used 784.63GiB path /dev/sdb
        devid    3 size 1.36TiB used 784.63GiB path /dev/sdc
        devid    4 size 1.36TiB used 784.63GiB path /dev/sde
        devid    5 size 1.36TiB used 784.63GiB path /dev/sdf
        devid    6 size 1.36TiB used 784.63GiB path /dev/sdg
        devid    7 size 1.36TiB used 784.63GiB path /dev/sdh
        devid    8 size 1.36TiB used 784.63GiB path /dev/sdi
        *** Some devices missing

Btrfs v3.12

现在我尝试了btrfs device add /dev/sdd /mnt/x,但

ERROR: error adding the device '/dev/sdd' - Inappropriate ioctl for device

现在怎么办?如何恢复或安装 RAID?

我甚至无法安装它。试过了mount [-t btrfs] -o degraded /dev/sdb /mnt/xmount [-t btrfs] -o degraded,device=/dev/sdb,[...] /dev/sdb /mnt/x当然[...]是设备规格):

mount: wrong fs type, bad option, bad superblock on /dev/sdb,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

这是一个带有内核 3.13.0-36-generic x64 的 Ubuntu 14.04 盒子。

答案1

这不是一个“完整”的答案,但我刚刚遇到了与 BTRFS RAID 10 相同的问题。你必须在移除完全失效的设备之前,先让阵列以降级模式联机

btrfs device delete 用于在线删除设备。它将被删除设备上正在使用的任何扩展重新分配给文件系统中的其他设备。

否则,您将继续收到以下消息:

错误:添加设备“/dev/sdd”时出错 - 设备的 ioctl 不合适

我所能做的希望原因是你的 mount 命令不正确。你只需要列出阵列中的设备以及要将其安装到的路径。例如:

sudo mount -o degraded /dev/sda /raid10

.../dev/sda对我来说是在职的阵列中的设备。当我尝试列出所有设备时,如下所示:

sudo mount -o degraded -t btrfs\
/dev/sda \
/dev/sdb \
/dev/sdc1 \
/dev/sdd \
/dev/sde \
/dev/sdf \
/raid10

...该命令将会失败。

安装阵列后,只需执行sudo btrfs device delete missing /raid10并等待一段时间,让阵列自行整理。如果您无法安装阵列,我不确定您能做什么。也许实际上有两个驱动器而不是一个驱动器发生故障,或者(更有可能)BTRFS RAID 5 存在更多问题,因为它存在的时间不如 BTRFS RAID 1/10 长?

相关内容