Новая функция, добавленная в ext4 и введенная с помощью ядра 3.5, называется так называемыми «контрольными суммами метаданных», что является еще одной особенностью ext4, которая должна повысить надежность и целостность структуры файловой системы.
Общая реализация хорошо объясняется новичками Kernel:
Современные файловые системы, такие как ZFS и Btrfs, доказали, что обеспечение целостности файловой системы с использованием контрольных сумм является ценной функцией. Ext4 добавила возможность хранить контрольные суммы различных полей метаданных. Каждый раз, когда считывается поле метаданных, контрольная сумма данных чтения сравнивается с хранимыми контрольными суммами, если они различны, это означает, что медаты повреждены (обратите внимание, что эта функция не охватывает данные, а только внутренние структуры метаданных и у него нет возможностей «самовосстановления»). Любая файловая система ext4 может быть обновлена для использования контрольных сумм с использованием команды «tune2fs -O metadata_csum» или «mkfs -O metadata_csum» во время создания. Когда эта функция включена в файловой системе, более старые ядра без поддержки контрольной суммы смогут только смонтировать ее в режиме только для чтения.Статьи, такие как новички ядра , подробно обсуждают, как использование контрольных сумм метаданных может помешать поврежденным метаданным повреждать структуру файловой системы.
Однако статья также предупреждает:
Современные файловые системы, такие как ZFS и Btrfs, доказали, что обеспечение целостности файловой системы с использованием контрольных сумм является ценной функцией. Ext4 добавила возможность хранить контрольные суммы различных полей метаданных. Каждый раз, когда считывается поле метаданных, контрольная сумма данных чтения сравнивается с хранимыми контрольными суммами, если они различны, это означает, что медаты повреждены (обратите внимание, что эта функция не охватывает данные, а только внутренние структуры метаданных и у него нет возможностей «самовосстановления»).
Код проверки контрольных сумм метаданных начал работать в mainline в Linux 3.5, а с 3.7-rc1 он проходит некоторое тестирование пользователя. Этот код еще не прочный.