ext2 究竟是如何向上兼容的?
我在某處讀到,一個對 ext3 和 ext4 (即古董 Linux 版本)一無所知的作業系統能夠讀取/寫入 ext4,並且它將任何 ext4 文件系統檢測為 ext2。
我不太確定,Tux2 到 tux3 或 FAT12 是否可能相同。(FAT64 是 exFAT)
這到底是怎麼可能的?
ext4究竟如何**像 ext2 一樣對待?**文件或元數據損壞是否沒有風險?
這在很大程度上取決於 ext4 文件系統的格式化方式。舊的 ext2 驅動程序無法理解一些較新的 ext4 功能(例如
extents
或),並且核心將拒絕掛載文件系統(例如,參見這篇文章)。一般來說,任何使用預設選項的現代格式化的文件系統都不會被舊的 ext2 驅動程序掛載,但如果文件系統最初是很久以前格式化的,然後升級到 ext4,它可能仍然可以被 ext2 掛載,如果沒有啟用了較新的 ext4 特定功能。64bit``mke2fs``-t ext4
ext2/3/4 文件系統跟踪哪些功能被
compat
、rocompat
和incompat
功能標誌使用。這些功能通常在mke2fs
時間設置,但有時可以通過 更改tune2fs
。如果發現未知compat
功能,核心將掛載它,但e2fsck
會拒絕檢查它,因為它可能會出錯。如果發現未知rocompat
特性,核心可以只讀方式掛載文件系統,任何未知特性都將阻止文件系統被掛載(在這種情況下incompat
將列印一條消息)。/var/log/messages
您可以使用
debugfs -c -R features <device>
轉儲文件系統上啟用的功能,例如:# debugfs -c -R features /dev/sdb1 debugfs 1.42.13.wc5 (15-Apr-2016) /dev/sdb1: catastrophic mode - not reading inode or group bitmaps Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery dirdata sparse_super large_file huge_file uninit_bg dir_nlink
雖然這並沒有告訴你哪些是
compat
,rocompat
或incompat
. 如果您的版本debugfs
不了解某些較新的功能,它將以類似I0400
或類似的方式列印。