SuperBlock 中是否有任何 Flag 或某个字节,我可以通过它来区分它是 ext4 还是 ext3 文件系统?我已经在 Google 上搜索过,找到了 ext3 和 ext4 的一些内部结构,但找不到答案。
答案1
首先,让我们创建两个小的磁盘映像文件my-ext3
和并分别在和my-ext4
中格式化它们,以便我们可以测试并查看差异:ext3
ext4
truncate -s 10M my-ext3
mkfs.ext3 my-ext3
truncate -s 10M my-ext4
mkfs.ext4 my-ext4
现在检查它们是什么的最简单方法是使用以下file
命令:
$ file my-ext*
my-ext3: Linux rev 1.0 ext3 filesystem data, UUID=7ba99eb3-57c0-4d81-a2e7-529fdee64cbb (large files)
my-ext4: Linux rev 1.0 ext4 filesystem data, UUID=2308e0f8-443e-4164-b5ee-4810e9def008 (extents) (large files) (huge files)
如您所见,它正确识别了每种文件系统类型。您还可以使用fsck
、通过挂载它们或使用某些分区工具来检查文件系统。
然而,@林兹温德指出他的评论、所有ext2
和文件系统基本相同,只是更高版本支持更多文件系统功能。这些不会直接告诉您它是还是,ext3
但您可以检查每个功能从哪个文件系统版本开始可用。如果您发现任何-only 功能,那一定是。让我们来看看它们。ext4
ext3
ext4
ext4
ext4
检查文件系统的命令是dumpe2fs
。我们只对超级块数据感兴趣,所以我们添加了选项-h
,否则控制台也会充斥着大量的 inode 信息。对我们来说,只有它们的“文件系统功能”才是有趣的,所以让我们使用grep
它来过滤掉它:
$ dumpe2fs -h my-ext3 |& grep "^Filesystem features:"
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
$ dumpe2fs -h my-ext4 |& grep "^Filesystem features:"
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
现在我们有两个文件系统功能列表,可以检查每个列表以找出ext?
支持每个功能的最低文件系统修订版本。我们可以查看man ext4
它,它包含一个列表,其中包含所有ext4
文件系统功能、它们的描述以及它们受支持的时间。
我为您列出了一个小列表,并按支持它们的第一个修订版对功能进行了排序ext?
。较旧修订版中的所有功能在较新的修订版中也受支持:
ext2
:ext_attr
,,filetype
sparse_super
ext3
:dir_index
,has_journal
ext4
:64bit
,,,,,,,,,,bigalloc
dir_nlink
extent
extra_isize
flex_bg
huge_file
meta_bg
mmp
uninit_bg
在 中描述了更多功能man ext4
,但没有关于哪些文件系统修订版支持它们的信息:journal_dev
,large_file
,sparse_super2
,quota
,resize_inode
可能它们自 以来都存在ext2
,但我不能 100% 确定。如果您对他们有更多了解,请发表评论。