Есть ли официальная спецификация для файловых систем ext2/ext3/ext4?

Мне интересно, для Bluetooth у нас есть стандарт IEEE 802.15.1, которым управляет Bluetooth Special Interest Group. Для Wi-Fi у нас есть стандарты IEEE 802.11, а также Wifi Alliance. Для твердотельных накопителей NVMe на PCIe у нас есть nvmexpress, который регулирует и публикует свою официальную документацию.

Таким образом, обычно существует регулирующее агентство, которое принимает решения и стандартизирует некоторые вещи, чтобы обеспечить совместимость между несколькими различными реализациями.

Но для файловых систем ext2/ext3/ext4 я не нашел официального стандарта, кроме кода ядра Linux.

Являются ли эти файловые системы в основном продиктованными сообществом ядра? И они обязуются не менять их, чтобы они по-прежнему были совместимы с другими операционными системами?

Или есть какая-то официальная спецификация? А кто обеспечивает?

Спасибо


person Lilás    schedule 01.08.2016    source источник


Ответы (1)


Очень немногие файловые системы стандартизированы комитетами по стандартизации. На практике обязательство не нарушать совместимость связано с тем, что нам необходимо поддерживать обратную совместимость со старыми версиями Linux. То же самое верно для MacOS, Windows и т. д. Пользователи раздражаются, когда файловая система, написанная с использованием MacOS 10.1, не может быть прочитана MacOS 10.3 и т. д.

В случае ext4 у нас есть битовые маски в суперблоках. Когда мы добавляем новую функцию, мы определяем новый бит в одной из трех битовых масок: compat, r/o compat, incompat. Если ядро ​​увидит бит, о котором оно не знает в битовой маске r/o compat, теперь оно разрешит монтировать файловую систему для чтения/записи, но разрешит монтировать файловую систему только для чтения/только. Если там ядро ​​увидит бит, который оно не понимает в несовместимой битовой маске, то оно вообще не позволит смонтировать файловую систему. И если в файловой системе совместимости установлен бит, который ядро ​​​​не понимает, ядро ​​​​знает, что независимо от этого монтировать файловую систему безопасно. Однако средство проверки целостности файловой системы (e2fsck) и некоторые другие утилиты файловой системы (например, resize2fs) могут потребовать более строгой проверки совместимости, поэтому они не будут пытаться вносить изменения в файловую систему, имеющую некоторые функции совместимости. что оно не понимает.

На практике, когда мы добавляем новую функцию, мы довольно долго ждем, прежде чем утилита mke2fs включит эту функцию по умолчанию. Это позволяет более предприимчивым пользователям протестировать функцию файловой системы, прежде чем мы включим ее по умолчанию для всех. На практике другие операционные системы реализуют только очень небольшое подмножество функций ext4 --- чаще всего набор функций, который не-Linux реализация ext2/ext3/ext4 примерно соответствует функциям файловой системы, которые включаются через " mke2fs -t ext2 /dev/диск".

Эти функции не изменились с тех пор, как они были впервые реализованы почти четверть века назад. И они не изменятся по той очевидной причине, что многие предприятия все еще используют RHEL 5, в котором используется ядро, выпущенное более десяти лет назад, и мы очень заботимся об обратной совместимости как с собой, так и с другими. операционные системы. Итак, вы можете посмотреть «Проектирование и реализация Ext2» (http://web.mit.edu/tytso/www/linux/ext2intro.html), опубликованной в 1994 году, и что касается основ, то они не изменились.

Конечно, мы все еще добавляем новые функции --- например, совсем недавно мы добавили шифрование на уровне файловой системы (используется в Android и вскоре, надеюсь, в Chrome OS), проектную квоту, контрольные суммы метаданных и т. д. в ext4. Каждая из этих новых функций защищена флагами функций, и все эти функции не включены по умолчанию в текущей версии mke2fs, распространяемой в исходных дистрибутивах e2fsprogs. Некоторые дистрибутивы сообщества (такие как Debian) могут включать некоторые передовые функции, такие как контрольные суммы метаданных, просто для того, чтобы они получили больше информации и тестирования, прежде чем они будут включены для всех, включая более консервативных корпоративных пользователей корпоративных дистрибутивов Linux.

Естественно, другие операционные системы не будут поддерживать эти новейшие передовые функции. Но это нормально, потому что вы также можете создать файловую систему с помощью «mke2fs -t ext2», что будет гораздо проще и должно быть легко использовано для взаимодействия. Как правило, люди будут использовать файловую систему с расширенными функциями для собственного использования и очень простую файловую систему со всеми отключенными расширенными функциями для целей обмена. Вот почему многие USB-накопители используют FAT — поскольку Linux, Windows и MacOS могут читать файловые системы FAT без какой-либо специальной обработки.

Другая возможность заключается в том, что последняя версия e2fsprogs поставляется с реализацией ext4 файловой системы пользовательского пространства, которая называется fuse2fs. Для операционных систем, поддерживающих FUSE (включая большинство систем BSD, а также MacOS), это может быть удобным способом чтения файловой системы ext4. Это не будет высокопроизводительная реализация чтения/записи, но для тех, кто просто хочет получить данные из образа файловой системы ext4, fuse2fs вполне подойдет.

person Theodore Ts'o    schedule 01.08.2016