文件系统是一个在计算机上帮你去管理数据怎么去存储和检索的数据结构。文件系统也能够被视做是磁盘上的物理(或扩展)分区。若是它没有很好地被维护或按期监视,它可能在长期运行中出现各类各样的错误或损坏。前端
这里有几个可能致使文件系统出问题的因素:系统崩溃、硬件或软件故障、 有问题的驱动和程序、不正确的优化、大量的数据过载加上一些小故障。服务器
这其中的任何一个问题均可以致使 Linux 不能顺利地挂载(或卸载)一个文件系统,从而致使系统故障。
另外,受损的文件系统运行在你的系统上可能致使操做系统中的组件或用户应用程序的运行时错误,它可能会进一步扩大到服务器数据的丢失。为避免文件系统错误或损坏,嵌入式物联网等系统学习意义气呜呜吧久零就易,你须要去持续关注它的健康情况。数据结构
在这篇文章中,咱们将介绍监视或维护一个 ext二、ext3 和 ext4 文件系统健康情况的工具。在这里描述的全部工具都须要 root 用户权限,所以,须要使用 sudo 命令去运行它们。工具
怎么去查看 EXT2/EXT3/EXT4 文件系统信息学习
dumpe2fs 是一个命令行工具,用于去转储 ext2/ext3/ext4 文件系统信息,这意味着它能够显示设备上文件系统的超级块和块组信息。优化
在运行 dumpe2fs 以前,先去运行 df -hT 命令,确保知道文件系统的设备名。操作系统
$ sudo dumpe2fs /dev/sda10命令行
示例输出:debug
你能够经过 -b 选项来显示文件系统中的任何保留块,好比坏块(无输出说明没有坏块):调试
$ sudo dumpe2fs -b
检查 EXT2/EXT3/EXT4 文件系统的错误
e2fsck 用于去检查 ext2/ext3/ext4 文件系统的错误。fsck 能够检查而且可选地 修复 Linux 文件系统;它其实是底层 Linux 提供的一系列文件系统检查器 (fsck.fstype,例如 fsck.ext三、fsck.sfx 等等) 的前端程序。
记住,在系统引导时,Linux 会为 /etc/fstab 配置文件中被标为“检查”的分区自动运行 e2fsck/fsck。而在一个文件系统没有被干净地卸载时,通常也会运行它。
注意:不要在已挂载的文件系统上运行 e2fsck 或 fsck,在你运行这些工具以前,首先要去卸载分区,以下所示。
$ sudo unmount /dev/sda10
$ sudo fsck /dev/sda10
此外,可使用 -V 开关去启用详细输出,使用 -t 去指定文件系统类型,像这样:
$ sudo fsck -Vt ext4 /dev/sda10
调优 EXT2/EXT3/EXT4 文件系统
咱们前面提到过,致使文件系统损坏的其中一个因素就是不正确的调优。你可使用 tune2fs 实用程序去改变 ext2/ext3/ext4 文件系统的可调优参数,像下面讲的那样。
去查看文件系统的超级块,包括参数的当前值,使用 -l 选项,以下所示。
$ sudo tune2fs -l /dev/sda10
示例输出:
接下来,使用 -c 标识,你能够设置文件系统在挂载多少次后将进行 e2fsck 检查。下面这个命令指示系统每挂载 4 次以后,去对 /dev/sda10 运行 e2fsck。
$ sudo tune2fs -c 4 /dev/sda10
tune2fs 1.42.13 (17-May-2015)
Setting maximal mount count to 4
你也可使用 -i 选项定义两次文件系统检查的时间间隔。下列的命令在两次文件系统检查之间设置了一个 2 天的时间间隔。
$ sudo tune2fs -i 2d /dev/sda10
tune2fs 1.42.13 (17-May-2015)
Setting interval between checks to 172800 seconds
如今,若是你运行下面的命令,你能够看到对 /dev/sda10 已经设置了文件系统检查的时间间隔。
$ sudo tune2fs -l /dev/sda10
示例输出:
要改变缺省的日志参数,可使用 -J 选项。这个选项也有子选项: size=journal-size (设置日志的大小)、device=external-journal (指定日志存储的设备)和 location=journal-location (定义日志的位置)。
注意,这里一次仅能够为文件系统设置一个日志大小或设备选项:
$ sudo tune2fs -J size=4MB /dev/sda10
最后,一样重要的是,能够去使用 -L 选项设置文件系统的卷标,以下所示。
$ sudo tune2fs -L "ROOT" /dev/sda10
调试 EXT2/EXT3/EXT4 文件系统
debugfs 是一个简单的、交互式的、基于 ext2/ext3/ext4 文件系统的命令行调试器。它容许你去交互式地修改文件系统参数。输入 ? 查看子命令或请求。
$ sudo debugfs /dev/sda10
缺省状况下,文件系统将以只读模式打开,使用 -w 标识去以读写模式打开它。使用 -c 选项以灾难(catastrophic)模式打开它。
示例输出:
要展现未使用空间的碎片,使用 freefrag 请求,像这样:
debugfs: freefrag
示例输出: