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