ext2 到底如何向上兼容?

ext2 到底如何向上兼容?

我在某处读到,对 ext3 和 ext4 一无所知的操作系统(即古董 Linux 版本)能够读取/写入 ext4,并且它将任何 ext4 文件系统检测为 ext2。
我不太确定 Tux2 到 tux3 或 FAT12 是否也可以这样做。 (FAT64 是 exFAT)

这到底怎么可能呢?
具体怎样才能ext4 可以像 ext2 一样对待吗?是否没有文件或元数据损坏的风险?

答案1

这在很大程度上取决于 ext4 文件系统的格式化方式。一些较新的 ext4 功能(例如extents64bit)无法被较旧的 ext2 驱动程序理解,并且内核将拒绝挂载文件系统(例如,参见这个帖子)。一般来说,任何使用现代格式mke2fs并使用默认-t ext4选项格式化的文件系统都将不是可以通过旧的 ext2 驱动程序安装,但如果文件系统最初是很久以前格式化的,然后升级到 ext4,则它可能如果没有启用任何较新的 ext4 特定功能,仍然可以通过 ext2 安装。

compatext2/3/4 文件系统跟踪、rocompatincompat功能标志正在使用哪些功能。这些功能通常是按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

尽管这并没有告诉您哪些是compatrocompat、 或incompat。如果您的版本debugfs不理解某些较新的功能,它将打印类似I0400或类似的内容。

相关内容