在 Linux 中管理 EXT2、EXT3 和 EXT4 运行状况的 4 个工具
文件系统是一种数据结构,有助于控制数据在计算机系统上的存储和检索方式。文件系统也可以被视为磁盘上的物理(或扩展)分区。如果没有得到很好的维护和定期监控,从长远来看,它可能会以多种不同的方式受到损坏或损坏。
有多种因素可能导致文件系统变得不健康:系统崩溃、硬件或软件故障、有缺陷的驱动程序和程序、错误调整、过多数据过载以及其他小故障。
任何这些问题都可能导致 Linux 无法正常挂载(或卸载)文件系统,从而导致系统故障。
另请阅读:确定 Linux 中文件系统类型(Ext2、Ext3 或 Ext4)的 7 种方法
此外,使用受损的文件系统运行系统可能会导致操作系统组件或用户应用程序中出现其他运行时错误,这可能会升级为严重的数据丢失。为了避免文件系统损坏或损坏,您需要密切关注其健康状况。
在本文中,我们将介绍用于监控和维护 ext2、ext3 和 ext4 文件系统运行状况的工具。这里描述的所有工具都需要 root 用户权限,因此使用 sudo 命令来运行它们。
如何查看 EXT2/EXT3/EXT4 文件系统信息
dumpe2fs是一个命令行工具,用于转储ext2/ext3/ext4文件系统信息,这意味着它显示设备上文件系统的超级块和块组信息。
在运行 dumpe2fs 之前,请确保运行 df -hT 命令以了解文件系统设备名称。
sudo dumpe2fs /dev/sda10
样本输出
dumpe2fs 1.42.13 (17-May-2015)
Filesystem volume name:
Last mounted on: /
Filesystem UUID: bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 21544960
Block count: 86154752
Reserved block count: 4307737
Free blocks: 22387732
Free inodes: 21026406
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 1003
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Sun Jul 31 16:19:36 2016
Last mount time: Mon Nov 6 10:25:28 2017
Last write time: Mon Nov 6 10:25:19 2017
Mount count: 432
Maximum mount count: -1
Last checked: Sun Jul 31 16:19:36 2016
Check interval: 0 ()
Lifetime writes: 2834 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
First orphan inode: 6947324
Default directory hash: half_md4
Directory Hash Seed: 9da5dafb-bded-494d-ba7f-5c0ff3d9b805
Journal backup: inode blocks
Journal features: journal_incompat_revoke
Journal size: 128M
Journal length: 32768
Journal sequence: 0x00580f0c
Journal start: 12055
您可以传递 -b
标志来显示文件系统中保留为坏块的任何块(没有输出意味着坏块):
dumpe2fs -b
检查 EXT2/EXT3/EXT4 文件系统是否有错误
e2fsck 用于检查 ext2/ext3/ext4 文件系统的错误和 fsck 检查,并且可以选择修复 Linux 文件系统;它基本上是一系列文件系统检查器(fsck.fstype,例如fsck.ext3、fsck.sfx等)的前端在Linux下。
请记住,Linux 在系统启动时会在标记为签入 /etc/fstab 配置文件的分区上自动运行 e2fack/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
样本输出
tune2fs 1.42.13 (17-May-2015)
Filesystem volume name:
Last mounted on: /
Filesystem UUID: bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 21544960
Block count: 86154752
Reserved block count: 4307737
Free blocks: 22387732
Free inodes: 21026406
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 1003
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Sun Jul 31 16:19:36 2016
Last mount time: Mon Nov 6 10:25:28 2017
Last write time: Mon Nov 6 10:25:19 2017
Mount count: 432
Maximum mount count: -1
Last checked: Sun Jul 31 16:19:36 2016
Check interval: 0 ()
Lifetime writes: 2834 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
First orphan inode: 6947324
Default directory hash: half_md4
Directory Hash Seed: 9da5dafb-bded-494d-ba7f-5c0ff3d9b805
Journal backup: inode blocks
接下来,使用-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
样本输出
Filesystem created: Sun Jul 31 16:19:36 2016
Last mount time: Mon Nov 6 10:25:28 2017
Last write time: Mon Nov 6 13:49:50 2017
Mount count: 432
Maximum mount count: 4
Last checked: Sun Jul 31 16:19:36 2016
Check interval: 172800 (2 days)
Next check after: Tue Aug 2 16:19:36 2016
Lifetime writes: 2834 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
First orphan inode: 6947324
Default directory hash: half_md4
Directory Hash Seed: 9da5dafb-bded-494d-ba7f-5c0ff3d9b805
Journal backup: inode blocks
要更改默认日志记录参数,请使用 -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
选项。
样本输出
debugfs 1.42.13 (17-May-2015)
debugfs: ?
Available debugfs requests:
show_debugfs_params, params
Show debugfs parameters
open_filesys, open Open a filesystem
close_filesys, close Close the filesystem
freefrag, e2freefrag Report free space fragmentation
feature, features Set/print superblock features
dirty_filesys, dirty Mark the filesystem as dirty
init_filesys Initialize a filesystem (DESTROYS DATA)
show_super_stats, stats Show superblock statistics
ncheck Do inode->name translation
icheck Do block->inode translation
change_root_directory, chroot
....
要显示可用空间碎片,请使用 freefrag 请求,如下所示。
debugfs: freefrag
样本输出
Device: /dev/sda10
Blocksize: 4096 bytes
Total blocks: 86154752
Free blocks: 22387732 (26.0%)
Min. free extent: 4 KB
Max. free extent: 2064256 KB
Avg. free extent: 2664 KB
Num. free extent: 33625
HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range : Free extents Free Blocks Percent
4K... 8K- : 4883 4883 0.02%
8K... 16K- : 4029 9357 0.04%
16K... 32K- : 3172 15824 0.07%
32K... 64K- : 2523 27916 0.12%
64K... 128K- : 2041 45142 0.20%
128K... 256K- : 2088 95442 0.43%
256K... 512K- : 2462 218526 0.98%
512K... 1024K- : 3175 571055 2.55%
1M... 2M- : 4551 1609188 7.19%
2M... 4M- : 2870 1942177 8.68%
4M... 8M- : 1065 1448374 6.47%
8M... 16M- : 364 891633 3.98%
16M... 32M- : 194 984448 4.40%
32M... 64M- : 86 873181 3.90%
64M... 128M- : 77 1733629 7.74%
128M... 256M- : 11 490445 2.19%
256M... 512M- : 10 889448 3.97%
512M... 1024M- : 2 343904 1.54%
1G... 2G- : 22 10217801 45.64%
debugfs:
只需阅读所提供的简短说明,您就可以探索许多其他请求,例如创建或删除文件或目录、更改当前工作目录等等。要退出 debugfs,请使用 q
请求。
目前为止就这样了!我们在下面的不同类别下收集了相关文章,您会发现它们很有用。
文件系统使用信息:
- 12 个有用的“df”命令来检查 Linux 中的磁盘空间
- Pydf 是一个替代的“df”命令,用于以不同颜色检查磁盘使用情况
- 10 个有用的 du(磁盘使用)命令来查找文件和目录的磁盘使用情况
检查磁盘或分区健康状况:
- 3 个有用的基于 GUI 和终端的 Linux 磁盘扫描工具
- 如何在Linux中检查硬盘上的坏扇区或坏块
- 如何修复 Linux 系统分区和目录并进行碎片整理
保持健康的文件系统总是可以提高 Linux 系统的整体性能。如果您有任何问题或其他想法要分享,请使用下面的评论表。