按照《Linux上的新一代文件系统-Btrfs实践 》将一台机器的两个磁盘转为btrfs格式后,将其加载到GlusterFS。其中raid1两块磁盘之一出现故障后没法恢复,致使数据丢失。linux
复制数TB的数据到该数据集,运行一段时间后,其中一个磁盘出现故障,Ubuntu系统自动将该磁盘以只读模式挂载,致使没法写入,复制进程自动终止。网络
搜索网络,RAID1组成的两块磁盘,若是其中之一 /dev/sda
失效,但另一块 /dev/sdc
是好的。ui
/etc/fstab
中关闭自动挂载,重启。咱们但愿btrfs忘掉该磁盘组,可是这里有一个bug,即使已经拔出,但系统仍然试图使用其中的驱动器。如今磁盘组已经 unmounted,执行下面的命令来去除失效的的磁盘设备:spa
echo 1 | sudo tee /sys/block/sda/device/delete
.net
替换 sda
为失败的磁盘设备名称,这将致使磁盘设备从系统中去除 (能够经过命令 dmesg来检查),而后内核没法访问该磁盘。code
替代方式:拔出驱动器!blog
-o degraded
模式。可是,加载失败!
sudo btrfs balance start -f -mconvert=single -dconvert=single /mountpoint
。 该命令将从新组织正常磁盘上的 extents ,并转换为 single
(non-RAID)模式。
sudo btrfs device remove missing /bpool
来从raid1磁盘组中移除失效设备。sudo btrfs balance start -mconvert=dup /mountpoint
,恢复元数据。将耗费数分钟的时间。single
模式运行。其中原始方法参考了:进程