Назад | Перейти на главную страницу

Почему существует / sys / fs / ext4 / vda1, когда / dev / vda1 является ext3?

Я пытаюсь настроить свою файловую систему для выполнения некоторых операций с огромным количеством файлов. Потом я запутался, какую ФС я вообще использую.

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 (...)

монтировать (и / 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

Что происходит, так это то, что ext4 - это ext3, это ext2. То есть это одна и та же файловая система, только с включенными новыми функциями. Какие функции включены, описано в суперблоке. Поскольку драйвер ext4 поддерживает все предыдущие функции, его можно использовать для монтирования всех старых файловых систем с меньшим количеством включенных функций. Ядро сохранило исходный код для модулей ext2 и ext3, поэтому его можно использовать для монтирования старых файловых систем без включения новых функций, но модуль ext4 также можно использовать, и большинство современных дистрибутивов собирают ядро ​​с параметром конфигурации, который его устанавливает. использовать драйвер ext4 для всех трех разновидностей файловой системы, а не переносить старый, менее функциональный код.