文档章节

Btrfs磁盘故障、无法卸载与重置

openthings
 openthings
发布于 02/15 13:47
字数 835
阅读 35
收藏 0

按照《Linux上的新一代文件系统-Btrfs实践 》将一台机器的两个磁盘转为btrfs格式后,将其加载到GlusterFS。其中raid1两块磁盘之一出现故障后无法恢复,导致数据丢失。

1、问题描述

复制数TB的数据到该数据集,运行一段时间后,其中一个磁盘出现故障,Ubuntu系统自动将该磁盘以只读模式挂载,导致无法写入,复制进程自动终止。

  • 根据Btrfs的手册,使用btfrs devvice remove操作将故障盘卸载,但是一直提示卸载失败。
  • 最后不得不将btrfs的raid1两块磁盘全部重置,导致数据丢失。
  • 因此,目前btrfs的raid1模式并没有起到镜像模式下单盘失效恢复的作用,是不可用的

2、处理过程

搜索网络,RAID1组成的两块磁盘,如果其中之一 /dev/sda 失效,但另外一块 /dev/sdc 是好的。

  • 在系统文件 /etc/fstab中关闭自动挂载,重启。我们希望btrfs忘掉该磁盘组,但是这里有一个bug,即便已经拔出,但系统仍然试图使用其中的驱动器。
  • 现在磁盘组已经 unmounted,执行下面的命令来去除失效的的磁盘设备:

    echo 1 | sudo tee /sys/block/sda/device/delete

    替换 sda 为失败的磁盘设备名称,这将导致磁盘设备从系统中去除 (可以通过命令 dmesg来检查),然后内核无法访问该磁盘。

    替代方式:拔出驱动器!

  • 加载磁盘组,使用 -o degraded 模式。但是,加载失败!
    • 但我的系统在执行 mount -t btrfs /dev/sda /bpool 时失败,提示无法找到设备(已经移除了嘛),然后mount -t btrfs /dev/sdb /bpool提示,dev/sdb为无法认识的文件格式(这个肯定是btrfs格式啊,之前与/dev/sda一起使用makefs.btrfs来创建的bpool磁盘组)。
  • 如果加载成功,执行再平衡操作操作。执行sudo btrfs balance start -f -mconvert=single -dconvert=single /mountpoint。 该命令将重新组织正常磁盘上的 extents ,并转换为 single (non-RAID)模式。
    • 这将消耗将近一天的时间,取决于磁盘的速度和大小。 (mine had ~700 GiB, and rebalanced at a rate of 11GiB chunk per minute) 。
    • 幸运的是,该操作可以暂停,而且磁盘保持在线。
  • 完成以后,执行sudo btrfs device remove missing /bpool来从raid1磁盘组中移除失效设备。
  • 再次执行平衡操作: sudo btrfs balance start -mconvert=dup /mountpoint ,恢复元数据。将耗费数分钟的时间。
  • 完成!现在磁盘组以 single 模式运行。
  • 移除失效的磁盘。

其中原始方法参考了:

3、更多问题的解决

  • Help, btrfs tried to write to my faulty disk, errored out, and forced it readonly!
    • Did you follow step 1, and reboot before continuing? It's likely that btrfs still thinks the drive you spun down is present. Rebooting will cause btrfs to forget any errors, and will let you continue.

© 著作权归作者所有

openthings

openthings

粉丝 328
博文 1152
码字总数 698437
作品 1
东城
架构师
私信 提问
Linux Btrfs 文件系统

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/88706503 1、Btrfs文件系统简介 文件系统似乎是内核中比较稳定的部分,多年来...

魏晓蕾
03/22
0
0
Linux上的新一代文件系统-Btrfs简介

Linux上的新一代文件系统-Btrfs简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3,ext 文件系统以其卓越的稳定性成为了事实上的 Linux 标准文件系统。 近年来 ext2/3...

openthings
02/12
73
0
Linux上的新一代文件系统-Btrfs使用

Linux上的新一代文件系统-Btrfs使用 准备工作 Btrfs 支持已经包含在linux和linux-lts的内核中。 要使用一些用户空间工具的话,需要安装 不在 base 包组中的而且基础操作必须的 btrfs-progs ...

openthings
02/12
387
0
Linux初学之btrfs文件系统及磁盘配额

btrfs Technical Preview, 技术预览版 BtrFS(B-tree文件系统,又称为Butter FS或Better FS),2007由oracle开源后,得到了IBM、intel等厂商的大力支持,其目标计划是替代linux目前的ext3/4,...

孟东
2017/05/26
0
0
#12 btrfs文件系统

btrfs Technical Preview, 技术预览版 BtrFS(B-tree文件系统,又称为Butter FS或Better FS),2007由oracle开源后,得到了IBM、intel等厂商的大力支持,其目标计划是替代linux目前的ext3/4,...

谁等了谁
2017/05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

你知道多少this,new,bind,call,apply?那我告诉你

那么什么是this,new,bind,call,apply呢?这些你都用过吗?掌握这些内容都是基础中的基础了。如果你不了解,那还不赶快去复习复习,上网查阅资料啥的! 通过call,apply,bind可以改变thi...

达达前端小酒馆
今天
4
0
设计模式之命令模式

命令模式的类图 其中的角色有: Client 客户端。只依赖于调用者Invoker、接收者Receiver、以及Command(网上找的图片这里没有画出来),不用关注接收者如何执行命令,只需要告诉调用者需要执行...

陈年之后是青葱
今天
7
0
2. 彤哥说netty系列之IO的五种模型

你好,我是彤哥,本篇是netty系列的第二篇。 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识。 简介 本文将介绍linux中的五种IO模型,同时也会介绍阻塞/非阻塞与同步/异步的区别。 何...

彤哥读源码
今天
5
0
OSChina 周四乱弹 —— 喵的波粒二象性

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 小小编辑推荐:《水墨兰亭》- 李志辉 《水墨兰亭》- 李志辉 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪维 :卧室里采光要足够好,这样...

小小编辑
今天
37
1
前后端分离接口规范

最近在开发,遇到前后端关于Boolean类型的参数传参和接收的问题: 场景:后台会根据用户是否出车/是否出司机(Boolean类型)来决定后端的业务逻辑(比如费用的计算),前端使用JSON字符串类型...

code-ortaerc
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部