热门标签 | 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。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
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社区 版权所有