文件系统是一种数据结构,有助于控制如何在计算机系统上存储和检索数据。 文件系统也可以被视为磁盘上的物理(或扩展)分区。 如果维护得不好并且经常受到监控,则可能会以多种不同方式长期受到损害或损坏。
有几个因素可能会导致文件系统变得不健康:系统崩溃,硬件或软件故障,错误的驱动程序和程序,错误地调整它,过度的数据加上其他轻微的故障。
任何这些问题都会导致Linux不能正常挂载(或卸载)文件系统,从而导致系统故障。
另请参阅 : 在Linux中确定文件系统类型的7种方法(Ext2,Ext3或Ext4)
另外,在系统运行受损的文件系统时,可能会在操作系统组件或用户应用程序中产生其他运行时错误,从而导致严重的数据丢失。 为了避免遭受文件系统损坏或损坏,您需要注意其健康状况。
在本文中,我们将介绍用于监视和维护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文件系统 ; 它基本上是在Linux下提供的一系列文件系统检查程序( fsck.fstype ,例如fsck.ext3 , fsck.sfx等)的前端 。
请记住,在标记为检入/ etc / fstab配置文件的分区上,Linux在系统引导时会自动运行e2fack / fsck 。 这通常在文件系统尚未完全卸载之后完成。
注意 :不要在已挂载的文件系统上运行e2fsck或fsck ,请务必首先卸载分区,然后才能运行这些工具,如下所示。
$ sudo unmount /dev/sda10 $ sudo fsck /dev/sda10
或者,使用-V
开关启用详细输出,并使用-t
指定文件系统类型,如下所示:
$ sudo fsck -Vt ext4 /dev/sda10
Tuning 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
请求。
目前为止就这样了! 我们有以下不同类别的相关文章的集合,你会发现有用的。
文件系统使用信息:
检查磁盘或分区运行状况:
保持一个健康的文件系统总能提高你的Linux系统的整体性能。 如果您有任何问题或其他想法共享使用下面的评论表格。