为什么 /dev/vda1 是 ext3 时会存在 /sys/fs/ext4/vda1?

为什么 /dev/vda1 是 ext3 时会存在 /sys/fs/ext4/vda1?

我正在尝试调整文件系统,以便处理涉及大量文件的一些操作。然后我对正在使用的文件系统感到困惑。

tune2fs -l /dev/vda1包含:

Filesystem magic number:  0xEF53

所以这意味着它要么是 ext2,要么是 ext3,要么是 ext4,因为它们共享相同的神奇数字。

blkid /dev/vda1说:

/dev/vda1: UUID="c38b3343-603a-49d3-85e0-88af1c8617c5" TYPE="ext3" PARTUUID="1bf082a8-01"

/etc/fstab包含:

UUID=c38b3343-603a-49d3-85e0-88af1c8617c5 / ext3 (...)

mount (和 /proc/mounts)说:

/dev/vda1 on / type ext3 (rw,relatime,errors=remount-ro,data=ordered)

看起来我确实在使用 ext3。

但是之后,突然出现

liam@lorenz /sys/fs % ls
cgroup  ext4  pstore

liam@lorenz /sys/fs % ls ext4
features  vda1

liam@lorenz /sys/fs % cd /proc/fs

liam@lorenz /proc/fs % ls
ext4 jbd2 nfsd

liam@lorenz /proc/fs % ls ext4
ext4

发生了什么事?自从构建此虚拟机以来,它一直是 ext3,并且从未转换或安装为 ext4。

uname -a:

Linux lorenz 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux

答案1

实际情况是,ext4 就是 ext3,也就是 ext2。也就是说,它们是相同的文件系统,只是启用了较新的功能。启用了哪些功能在超级块中描述。由于 ext4 驱动程序支持所有以前的功能,因此它可用于挂载所有启用了较少功能的旧文件系统。内核保留了 ext2 和 ext3 模块的原始代码,因此它可用于挂载未启用较新功能的旧文件系统,但也可以使用 ext4 模块,并且大多数现代发行版都使用配置选项构建内核,该选项将其设置为对所有 3 种文件系统使用 ext4 驱动程序,而不是携带较旧的、功能较差的代码。

相关内容