热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Btrfs文件系统修复技巧

nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd

Btrfs 文件系统工具随着内核版本的进步在逐步成熟,不过难免在使用过程有会有一些意外发生,遇到无法挂载的情况怎么办?

若是在其他文件系统异常的情况下,第一反应当然是 fsck 系列工具咯~不过若是在终端运行它的话,会得到这样的结果:

  • 什么都没有发生……
  • 告诉你若是想修复文件系统,请使用 btrfs check 子命令

慢!在撞墙或果断调用 btrfs check 之前,请注意 btrfs 文件系统不像其他文件系统,大多数情况下是不需要 fsck 的,这个不干活的 fsck 其实是为了兼容在 fstab 中错误的非0 fs_passno 设置而生的。

再慢!btrfs check 是个猛药,草率使用可能会适得其反。那么接下来应该怎么办?

使用最新内核挂载

Btrfs 在磁盘上的文件系统格式已经稳定下来了,但是各种内核态和用户态的工具还在发展。不少错误或问题可以通过使用包含修复的新内核解决。

假设您已经通过无论何种方式引导了包含最新内核的 Live 环境,那么此时可以首先尝试以 recovery,ro 选项挂载 btrfs 文件。

之后观察下 dmesgjournalctl -k 的输出,有没有 btrfs 相关的 kernel oops。

没有什么异常的话,可以先检查下最后访问的文件什么的,看是否存在。由于 Btrfs 的 COW 机制,大部分情况应该是都在的。

有且仅有 kernel oops 的情况下,使用 btrfs-zero-log 去尝试修复下。

重新挂载,检查异常

若是上一步通过只读挂载正常且又没有 kernel oops,那么就可以尝试正常的读写挂载了。

运气好的话,没什么问题,可能意味着之前遇到的挂载异常问题已经在新的内核中修复了。 但尽管如此,依然推荐执行 btrfs scrub start 命令,开始检查全部文件及其校验和。

btrfs scrub 是一个在后台运行的命令,耗时比较长,在下一个普通的 Seagate 500G SATA3 7200rpm 的硬盘完成这个工作需要约 26 分钟。期间可以随时使用 btrfs scrub status 查看进度。

请注意对于非 RAID 环境来讲,btrfs scrub仅能检查出文件错误但无法修复问题(木有未损坏的文件拷贝啊……),对于 RAID 1 等级别,这个过程也可以自动使用来自冗余盘的信息进行修复,除非加上 -r参数。

挽救重要数据

只有下列两种情况需要执行 btrfs rescue 命令,因为它扫描磁盘文件簇的方式真的非常费时,不过相对应的,它不要求分区挂载

  1. 最开始连只读挂载都失败的情形
  2. 只读挂载成功,但是读写挂载使用 btrfs scrub 时提示大量错误,而且又是单盘环境

重建文件系统

当你挽救了重要数据之后,最后又回到 btrfs check 这里了,它会尝试修复文件系统。注意为了避免误操作,仅在加上 --repair 选项时才真正执行修复。

个人觉得,若是重要数据不多的话,离线恢复不难的话,还不如重新格式化得了……

总结及提醒

Btrfs 文件系统本身健壮性还是不错的,不过由于工具集还在发展,偶尔出些小状况,通过上述的修复手段也都能应对。

此外,提醒下若是突然遇到挂载异常又排出了硬件问题,可以到 IRC 频道或者 Wiki 的页面看看是不是最近工具集导致的,有时可以节省不少绕弯的精力。

文中所述命令的详情可以通过 man -k btrfs 查阅

参考资料:

  • Btrfs Problem FAQ
  • Btrfs FAQ
  • Btrfs Tips

怎么把Fedora 21 Workstation Cinnamon 的桌面环境安装到 Btrfs 文件系统的计算机上  2014-12/110844.htm

Linux文件系统Btrfs的Makefile分析 2012-10/73301.htm

Linux 文件系统Btrfs 的Kconfig分析 2012-10/73300.htm

Btrfs文件系统在CentOS中的应用 2012-08/68098.htm

Btrfs 的详细介绍:请点这里
Btrfs 的下载地址:请点这里


推荐阅读
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
author-avatar
爱你无丶止境空间
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有