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
選項來顯示檔案系統中的任何保留塊,比如壞塊(無輸出說明沒有壞塊):
$ sudo dumpe2fs -b
檢查 EXT2/EXT3/EXT4 檔案系統的錯誤
e2fsck
用於去檢查 ext2/ext3/ext4 檔案系統的錯誤。fsck
可以檢查並且可選地 修復 Linux 檔案系統;它實際上是底層 Linux 提供的一系列檔案系統檢查器 (fsck.fstype,例如 fsck.ext3、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
示例輸出:
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
選項以災難(catastrophic)模式開啟它。
示例輸出:
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 Useful “df” Commands to Check Disk Space in Linux
- Pydf an Alternative “df” Command to Check Disk Usage in Different Colours
- 10 Useful du (Disk Usage) Commands to Find Disk Usage of Files and Directories
檢查磁碟或分割槽健康狀況:
- 3 Useful GUI and Terminal Based Linux Disk Scanning Tools
- How to Check Bad Sectors or Bad Blocks on Hard Disk in Linux
- How to Repair and Defragment Linux System Partitions and Directories
維護一個健康的檔案系統可以提升你的 Linux 系統的整體效能。如果你有任何問題或更多的想法,可以使用下面的評論去分享。
via: https://www.tecmint.com/manage-ext2-ext3-and-ext4-health-in-linux/
作者:Aaron Kili 譯者:qhwdw 校對:wxy
相關文章
- Linux File Systems: Ext2 vs Ext3 vs Ext4Linux
- linux ext4,ext3的特點和區別Linux
- Linux系統中ext3和ext4有什麼不同?Linux
- Linux中ext3和ext4有什麼區別?如何選擇?Linux
- dumpe2fs 命令的使用,轉儲 ext2/ext3/ext4 檔案系統資訊
- ext3 ext4 格式下 rm 誤刪恢復工具 extundeletedelete
- extundelete工具恢復rm -rf 刪除的目錄(ext4、ext3)delete
- Linux下誤刪除後的恢復操作(ext3/ext4)Linux
- Linux中檔案系統ext2和ext3有什麼區別?Linux
- EXT2和EXT3的詳細區別(轉)
- ext3,ext4,xfs和btrfs檔案系統效能對比
- linux ext4Linux
- eMarketer:媽媽們使用數字工具研究健康狀況
- 如何檢測機械硬碟和固態硬碟的健康狀況?硬碟
- 認識Linux下Ext2與Ext3檔案系統的區別(轉)Linux
- 磁硬碟陣列後如何檢測和監控硬碟健康狀況?硬碟陣列
- Linux中監控磁碟分割槽和使用情況的幾個工具Linux
- 我理想中的狀態管理工具
- linux中使用dumpe2fs檢視EXT2(或EXT3)檔案系統資訊Linux
- Linux系統中檔案被刪除後的恢復方法(ext4)Linux
- Linux EXT4檔案系統介紹Linux
- Linux下如何選擇檔案系統:EXT4、Btrfs 和 XFSLinux
- 對sd卡分割槽fat和ext4SD卡
- Linux硬碟的使用狀況指令碼Linux硬碟指令碼
- HBase工具之監控Region的可用和讀寫延時狀況
- Linux Ext4檔案系統的優點介紹Linux
- ext4和xfs檔案系統的擴容和收縮
- 在Linux中,有哪些日誌管理和分析工具?Linux
- Smartmontools工具檢測Linux硬碟狀況 - 安裝及基本應用Linux硬碟
- 深入理解 ext4 等 Linux 檔案系統Linux
- 最佳化你的 ext2/ext3 檔案系統-目錄最佳化(轉)
- Oracle運維指令碼-檢視DB各時間段健康狀況Oracle運維指令碼
- 如何查詢iPhone電池健康狀況、迴圈週期等資訊iPhone
- Linux EXT4檔案系統TF卡空間容量顯示和計算Linux
- ext4 tree單擊事件事件
- 記前端狀態管理庫Akita中的一個坑前端
- ext4檔案系統的優化優化
- 穆迪分析:研究顯示美國千禧一代健康狀況不佳