Была ли разработана файловая система, полностью защищенная от повреждений, вызванных сбоями питания? Если мы предположим, что критически важные данные хранятся без ИБП, а производительность не имеет значения, существует ли файловая система, полностью неподдающаяся повреждению в случае сбоя питания?
На самом деле, нет. Однако есть несколько способов снизить риск.
Как уже было сказано, журналируемая файловая система является ближайшей, хотя это не может быть гарантировано. Это похоже на журналируемую систему баз данных. Есть моменты, хотя они могут быть краткими, когда данные все еще находятся в транзакции, но еще не полностью записаны в журнал. Ущерб в таком случае может быть крайне минимальным, но если это действительно критический момент, вы все равно будете идти по пресловутому ручью.
Реальность: Несмотря на все усилия некоторых действительно великих разработчиков, мы все еще страдаем от повреждения файловой системы из-за сбоев питания.
ZFS - это определенно то, что вы ищете.
Есть много способов предотвратить повреждение данных. Наиболее показательный пример - это только те данные, которые были полностью записаны на диск. Это должно предотвратить большую часть, если не все, повреждение данных.
Другой способ - это контрольная сумма, которая проверяет правильность записанных на диск данных. Это поможет в случае сбоя питания, когда на диск будет записана только часть данных.
Кроме того, карты RAID с батарейным питанием - это действительно легкая задача ...
Ничто не будет на 100% безопасным, если бы из-под него не отключилось питание. Лучше всего использовать журналируемую файловую систему (например, EXT3 или новые версии NTFS) с дисками, размещенными на RAID-контроллере с батарейным питанием (батарея находится на RAID-контроллере). Контроллер RAID с резервной поддержкой позволит карте записать то, что находится в кеше, пока не стало слишком поздно.
В зависимости от вашего использования вы можете рассмотреть файловую систему только для чтения с изменениями, хранящимися только в памяти. В случае отключения питания состояние диска просто восстанавливается до исходного состояния. Идеально подходит для таких вещей, как киоски / веб-терминалы или серверы стиля обработки, работающие с данными из сетевого источника.
В интересах других, написав этот вопрос, я нашел на рынке два решения для жизнеспособной энергобезопасной файловой системы. Оба используют принцип копирования при записи. (Что интересно, их было на удивление трудно найти). Они есть:
Из Встроенный HCC, они предлагают два решения для файловой системы - SafeFAT и SafeFLASH, которые заявлены как полностью безопасные при отключении питания. Первый вариант совместим с FAT, а позже оптимизирован для выравнивания износа и повышения производительности. Хотя эти продукты хороши, их цена, как правило, рассчитана на массовых пользователей.
Из Программные системы QNX & рассмотрено здесь, они предлагают ряд различных решений для файловых систем, одно из которых потенциально безопасное при отключении питания, судя по тому, что я читал. Эта компания предлагает как коммерческое лицензирование, так и лицензирование с открытым исходным кодом, что было приятно видеть. К сожалению, они поддерживают драйверы только для nix-вариантов.
Другой вариант, который следует рассмотреть, - это настоящая транзакционная файловая система, такая как Datalight Reliance или Reliance Nitro. В отличие от журналируемой файловой системы, рекомендованной в других публикациях, которая защищает структуры файловой системы, настоящая транзакционная файловая система защищает как пользовательские данные, так и структуры файловой системы от повреждения из-за потери питания. Кроме того, Reliance и Reliance Nitro не страдают от недетерминированного времени запуска после сбоя питания, вызванного требованием воспроизведения журнала.
Обе файловые системы семейства Reliance могут использоваться с любыми носителями: HDD, SSD, CF-карты, NOR flash, NAND flash и т. Д.
Дополнительная информация, включая сравнение файловых систем, на Datalight.com
[полное раскрытие информации: я директор по продажам и маркетингу Datalight]