Как я могу оптимизировать ext4 для надежности?

11

Поскольку ext4 был представлен как более надежный, чем ext3 с блочными журналами, есть ли шанс предположить, что он надежен на 100%? Что если включить блокировку журналирования на нем, которая по умолчанию отключена?

Как руководство друга, чтобы объяснить мой случай более подробно: у меня есть встроенное устройство Linux, после установки клавиатура и монитор отсоединены, и он работает автономно.

Моя обязанность - обеспечить надежную файловую систему, чтобы при ошибках не было возможности вручную исправить ошибки на устройстве. Я не могу заставить своего клиента использовать ups с каждым устройством, чтобы не допустить сбоев при сбое питания.

Что еще может предложить мне ext4 помимо блочного журналирования?

Заранее спасибо.

Амин
источник
я знаю, что у меня есть некоторые компромиссные возможности, такие как блочное ведение журнала, но я пристрастился к надежности и готов за это заплатить
Амин
См. Также: serverfault.com/questions/244095/how-to-make-ext4-more-reliable , закрыт из-за своей неоднозначности.
Олли
да, я задал свой вопрос там, и не было никакой помощи просто закрыто! моя система linux - это встроенная система без монитора или клавиатуры. поэтому я хочу, чтобы он был более надежным в случае сбоя питания и т. д. Я знаю, что блокировка журналов - это один из способов, но я хочу знать, есть ли еще варианты. я не могу предложить своему клиенту иметь взлеты для каждого устройства.
Амин
1
@amin Информация о вашем варианте использования была бы более полезной в вашем вопросе, поэтому, вероятно, она была закрыта за неоднозначность; добавьте больше информации к вашему вопросу!
Хорхе Кастро
2
Вопрос слишком расплывчатый. Что значит «100% надежный»? Предполагая, что под «блокировкой журнала» вы подразумеваете data = journal, тогда это просто гигантская трата времени. FS по своей природе надежен; журнал просто гарантирует, что вам не придется долго ждать fsck после сбоя.
Псуси

Ответы:

11

Нет. Никогда нельзя полагать, что что-то на 100% надежно.

Журналируемые файловые системы минимизируют потерю данных в случае непредвиденного простоя. Экстенты и барьеры помогают еще больше, но не могут устранить все связанные с этим проблемы. Лично я никогда не испытывал потери данных из-за повреждения файловой системы при использовании файловых систем журналирования.

Также ведение журнала не отключено по умолчанию.

Вот хороший обзор ext4 и его улучшений: http://kernelnewbies.org/Ext4

djeikyb
источник
1
+1 за «никогда нельзя предполагать, что что-то на 100% надежно»
Лекенштейн
поскольку ведение журнала блоков Comparison_of_file_systems отключено, а ведение журнала метаданных включено, это компромисс между надежностью и скоростью
амин
Я только что перезагрузил сервер, чтобы обнаружить огромное повреждение данных на ext4, где файлы содержат недопустимые данные. Это не могло произойти на zfs или btrfs, потому что данные имеют контрольные суммы.
user239558
5

Новая функция, добавленная в ext4 и введенная в ядре 3.5, называется так называемой «контрольной суммой метаданных», которая является еще одной особенностью ext4, которая должна повысить надежность и целостность структуры файловой системы.

Общая реализация хорошо объясняется новичками в Kernel :

Современные файловые системы, такие как ZFS и Btrfs, доказали, что обеспечение целостности файловой системы с помощью контрольных сумм является ценной функцией. Ext4 добавил возможность хранить контрольные суммы различных полей метаданных. Каждый раз, когда поле метаданных читается, контрольная сумма прочитанных данных сравнивается с сохраненными контрольными суммами, если они отличаются, это означает, что медата повреждена (обратите внимание, что эта функция не охватывает данные, только внутренние структуры метаданных, и у него нет способностей к "самовосстановлению").

Любая файловая система ext4 может быть обновлена ​​для использования контрольных сумм с помощью команды "tune2fs -O metadata_csum" или "mkfs -O metadata_csum" во время создания. Как только эта функция включена в файловой системе, старые ядра без поддержки контрольной суммы смогут монтировать ее только в режиме только для чтения.

Такие статьи, как эта на kernel.org, подробно обсуждают технические подробности того, как использование контрольных сумм метаданных может предотвратить повреждение структуры файловой системы поврежденными метаданными.

Однако статья также предупреждает, что:

Код контрольной суммы метаданных начал входить в основную линию в Linux 3.5, а с версии 3.7-rc1 он проходит некоторое пользовательское тестирование. Этот код еще не очень прочный.

Он не включен по умолчанию в Ubuntu 12.10, и, вероятно, лучше не включать его на мгновение после недавних проблем с файловой системой ext4, как отмечалось здесь .


источник
1

Вы можете отключить отложенное выделение в ext4 (nodelalloc), что значительно повысит вероятность восстановления большего количества данных, если / когда вы столкнулись с отключением питания во время записи, но это произошло бы за счет большей фрагментации файла. Система с течением времени.

user3495444
источник