2016-08-01 17 views
0

Мне было интересно, для Bluetooth у нас есть стандарт IEEE 802.15.1, который управляется специальной группой по интересам Bluetooth. Для Wi-Fi у нас есть стандарты IEEE 802.11, а также Альянс Wifi. Для SSD NVMe на PCIe у нас есть nvmexpress, которые регулируют и публикуют официальную документацию.Есть ли официальная спецификация файловых систем ext2/ext3/ext4?

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

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

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

Или есть некоторые официальные спецификации где-то? А кто это дает?

Спасибо

ответ

4

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

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

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

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