按照《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
模式運行。其中原始方法參考了:進程