Файлова система, яка ніколи не порушується (втрата даних прийнятна)


9

Є кілька існуючих тем, що обертаються навколо цього питання, але те, що я шукаю, є дещо іншим. У мене є вбудована карта SD на Linux, і вона страждає від втрати живлення. Можливо, я можу в якийсь момент змінити обладнання, закрити його належним чином тощо. Але зараз я просто хотів би знайти файлову систему, яка переживає втрати електроенергії без суєти. Втрати даних прийнятні. Я вважаю за краще не втрачати більше файлу, про який я зараз пишу, але я все-таки краще втрачу це все, ніж зіткнутись із «не в змозі встановити», «чекати цього 10 хвилин fsck» або «не в змозі створити новий файл через цей inode щось щось помилка '. Програма ОБОВ'ЯЗКОВО продовжить!

Я докладаю багато зусиль для забезпечення цього. Я використовую компоненти промислового класу, я отримав апаратні сторожові собаки, програмні сторожові собаки, внутрішні, зовнішні, init перезапустив програми, демони постійно перевіряють пам’ять, дескриптори файлів і багато чого іншого, я отримав сторожових спостерігачів за своїми сторожовими собаками, які в свою чергу спостерігають інші сторожові собаки ... Але я не можу гарантувати, що SD-карта може змонтуватися та функціонувати?

Моя найкраща ставка зараз - використовувати JFS на SD-картці, включити fsck і fsck.jfs в моїй установці. (Додаю 600 кбіт + з'їдаю мій баран та міг спалах. Що погано.) І запускайте fsck при кожному запуску (можливо, додаючи багато часу на завантаження. Що дещо погано.) Це здається трохи сумно.

Хтось знає про кращий спосіб чи кращу файлову систему?

ОНОВЛЕННЯ: e2fsprogs-libs (залежність від jfsutils) здається пекло складно скласти в моєму розповсюдженні. Я перегляну ZFS (хоча це не є рідним для мого розповсюдження. І, здається, робить багато, що мені не потрібно.)

ОНОВЛЕННЯ2: Ще трохи інформації про мою систему та мої тести: Зберігання SD-карт є вторинним, необов'язковим сховищем. SD-карти - це 2Gb-8Gb microSD промислового класу. SD-карта кріпиться через мій rc командою mount -t. Опції "час переходу", але не "синхронізація". Мій дистрибутив - це спеціальний uClinux з ароматизованим аналоговим пристроєм, з ядром 3,10 та службовою скринькою 1,21. Моє основне сховище - це спіралевий спалах із jffs2. У мене ніколи не було проблем з цим. Я навіть не знаю, чи є в наявності fsck.jffs2. Нанд спалах з іншого боку ... але це вже інша історія. Мета SD-карти - зберігати дані вимірювань. Програма "монітор" додасть результати до файлу та має стратегічні місця синхронізації. Коли файл вийде вище заданого розміру, буде створено новий. Після досягнення заданої кількості файлів найстаріший файл буде видалений. Якщо поточний файл вимірювання втрачено через втрату електроенергії, це не буде катастрофою. Файли зазвичай на 50-100 кбіт, і 1 результат зазвичай становить 1 кбіт. Це лише початкова фаза розвитку. Нічого не виправлено. Це перший раз, коли я маю справу з файловими системами, що не мають флеш-систем, у вбудованих системах. (Я отримав ext4 на своїх серверах x86.)

Я почав з vfat. Файлова система за замовчуванням. (Я подумав, що на фабриках може бути причина для його вибору. І якщо все працює, я не надто переймаюсь цим.) Я ніколи не бачив жодних проблем з втратою електроенергії у своїх вбудованих пристроях vfat. Однак у мене є проблеми з FAT в WinCE. Однак коли моя програма "монітор" досягла 100-200 файлів, вона більше не створювала. Здається, що FAT має спеціальну проблему з обмеженням файлів у корені та дещо більший розмір у підручниках. Мені потрібно вміти створювати 500-1000 файлів за 1 dir. Тож vfat не зробить.

Потім я перейшов на ext2. Я не вставив fsck при запуску. (Не знав, що я повинен це зробити.) Протягом дня моя програма "монітор" не змогла створити більше файлів через помилку "щось щось вводити". Катастрофа!

Моє поточне рішення ext2 з "e2fsck -y" при запуску. Поки що це здається перспективним. Але e2fsck і вся концепція 'fsck при запуску' на мене насувається. Сам e2fsck витрачає більше 350 кб мого основного спалаху та таран. (Коли він не працює.) Це означає, що це моя найбільша програма. Це більше, ніж зайнятий. Це майже конкурує з моїм ядром.

Я розглядав ext3. Він опублікував метадані, що не зашкодить. Я сумніваюся, наскільки це допоможе, хоча. Я думаю, що мої маленькі файли та керовані синхронізації мають бути охоплені? Він має впорядковану послідовність запису. Це означає, що дані також дещо реєструються. Однак це може призвести до недетермінованих відставань. Що погано в моїй ситуації. (Мабуть, це не проблема.) Він також має функцію запланованої синхронізації. Напр. здійснювати кожні 5 сек. Я думаю, що заважає моїм власним синхронізаціям. Занадто багато записів погані для карт SD. Навіть промислові. Я не можу знайти жодної документації, як це відключити. А ext3 як і раніше вимагає запуску fsck при кожному запуску! Але ext3 - це все-таки можливість.

Ext4. Виправить багато проблем із продуктивністю ext3. Мені справді не потрібна продуктивність. І мій розподіл, схоже, не має вбудованого mkfs.ext4 та fsck.ext4. Можливо, це не проблема. Це все-таки може. Напр. e2progs-libs (залежність від jfsutils), здається, має багато проблем із компіляцією.

JFS, XFS, BRFSS. Усі підтримуються моїм ядром. Наразі не входить у вікно мого простору користувачів. Здається, все це досить великі, складні системи. І всі вони, здається, вимагають еквівалент 'fsck' при запуску?

Я також розглядав можливість кинути власну файлову систему: Завжди пишіть 2 копії файлової таблиці. Під час проїзду вибирайте той, з правильним CRC та новим порядковим номером. Складіть послідовність запису на 2 етапи. Виділіть тимчасові, зафіксуйте на коміті. Fsck не потрібен. Боюся, що це може бути трохи наївно.

ОНОВЛЕННЯ3: BTW, природа вбудованих систем (як мінімум, ця) полягає в тому, що вони автономні, без нагляду, недоступні, і вони повинні працювати протягом багатьох років. Такі програми, як fsck, які можуть потребувати взаємодії з людьми, мене відштовхують.


1
Чому б просто не встановити вашу файлову систему лише для читання та зробити невелику файлову систему для того, що ви хочете написати?
Кріс Даун

ZFS також може бути варіантом (хороша перевірка цілісності даних).
Окі

Це є невеликий файлової системою для запису
Illishar

Так, я також дивився на ZFS. Однак підтримка цього не зовсім стрибає мені в обличчя, коли я дивлюся на своє розповсюдження. І мене не дуже турбує цілісність даних. Я просто хочу, щоб він монтувався і працював.
Іллішар

Ви подивилися на btrfs.wiki.kernel.org/index.php/Main_Page, ви повинні відредагувати своє запитання своїм дослідженням, щоб ми могли допомогти вам ефективніше
Kiwy

Відповіді:


2

Тут у вашій історії є трохи невідповідності чи, принаймні, неоднозначності:

Я все одно краще втратити все це, ніж зіткнутись із "не в змозі встановити", "зачекайте цього 10 хвилин fsck"

Наслідки - хоча ви насправді цього не говорите - це проблема, яку ви насправді відчуваєте. Але потім:

e2fsprogs-libs (залежність від jfsutils) здається пекло складно скласти в моєму розповсюдженні.

Тобто у вас взагалі немає fsck , оскільки e2fsprogs-libsце залежність, e2fsprogsяку забезпечує e2fsck. Тож, можливо, ви все ще перебуваєте на етапі планування і навіть не перевіряли систему, наприклад ext4, а натомість прийшли до висновку, що слід почати з JFS? Чи є якась конкретна причина для цього?

Я помітив, що на обміні малинового пі (основним сховищем pi є також SD-карта), що значна кількість користувачів здається дуже засмученими подібними проблемами, хоча більшість (включаючи мене) ніколи не мали цього всі. Спочатку я припускав, що це люди, які не знають про те, що систему слід чисто закрити, але це не важко зрозуміти, коли це пояснюється, і є люди, які повідомляють про це, навіть якщо система була закрита належним чином .

Ви вже говорили, що вам це потрібно, щоб можна було терпіти перерви живлення (що досить справедливо), але я згадую це, оскільки це означає, що є кілька піс, або якісь SD карти, або комбінація обох, які просто схильні пошкоджує файлову систему через якусь подію (сплеск?), яка регулярно виникає або при витягуванні штекера, або після його повторного введення. Я також НЕ бачив - і багато людей намагалося спробувати - БУДЬ-які повідомлення про те, що хтось сказав, що вони перейшли на btrfs або jfs або що завгодно, і тепер проблема вирішена.

Інша таємнича річ у цьому навіть у тому випадку, якщо люди витягують шнур, це не повинно регулярно створювати непридатну файлову систему. Звичайно, я це робив купу разів з пі, і забивав, якщо не сотні разів без звичайного вікна Linux (потужність була відключена, система стала невідповідною, я виснажений і злий і т.д.) і хоча я бачив незначну втрату даних, я ніколи не бачив, щоб файлова система була пошкодженою до того, що вона не була використана після швидкого fsck.

Знову ж таки, якщо припустити, що всі ці звіти є правдивими (я не розумію, чому кількість людей бреше про це), відбувається щось набагато більше, ніж просто не чітко вимикати, але, здається, це впливає лише на невеликий відсоток користувачів, що знову ж таки означає якийсь поширений апаратний дефект.

На пі я пишу , -yщоб /forcefsckв завантажувальному скрипті, так що при наступному завантаженні він запускається автоматично і всі проблеми вирішуються, незалежно від того, чи з'являється це необхідно чи ні. Для одноядерного 700 МГц це займає ~ 10 секунд для файлової системи об'ємом 12 ГБ, що містить ~ 4 ГБ даних. Так «10 хвилин» звучить як неймовірно довго, тим більше , що ви вже сказали «Це є невелика файлова система для запису!».

Ви також можете розглянути можливість дзвонити через syncрівні проміжки часу.

Нарешті, слід оновити питання з більш фактичними, конкретними деталями проблем, з якими ви насправді стикалися, та меншою мірою гіперболи. В іншому випадку це просто виглядає як передчасна проблема XY , яку, швидше за все, швидко пропускають люди з великим досвідом та потенційними порадами для вас.


Насправді мій e2fsck вміє компілювати без залежності e2fsprogs-libs. Я теж про це цікавився. (Це не версія для зайнятих ящиків.) Але я вважаю за краще, щоб її взагалі не було ... Я оновлю питання ще трохи інформації.
Іллішар

Я просто здивований, що він працює без libext2fs (чи ви створили статичну версію? Чи, можливо, це лише питання різної упаковки? Все одно ...). Я б вирішив ext4 над ext2 через поліпшене ведення журналу та швидшу перевірку fsck , якщо це можливо, і можливо syncваріант монтування. Незважаючи на те, що і читання журналів збільшить ваші цикли запису, важко зрозуміти, як альтернативна файлова система (наприклад, теоретична, яка робить перевірку в Інтернеті) може обійти необхідність зробити більш-менш те саме, якщо ціль надійності. Удачі і якщо ви знайдете рішення, додайте свою відповідь.
золотинки

2

Програма ОБОВ'ЯЗКОВО продовжить!

Ну, це загальна вимога, і системи Linux - найкращий вибір, коли справа стосується вибору стабільної системи.

Ваші зусилля, здається, також не йдуть у правильному напрямку. Однак що ви можете зробити для того, щоб отримати стабільну систему?

На першому рівні ви можете вдосконалити вашу файлову систему:

  • Використовувати yournal_data_orderedу ext3/ext4файловій системі під час створення або модифікації за допомогою tune2fs.
  • З JFSвикористанням --replay_journal_onlyпри перевірці.
  • Увімкніть автоматичне відновлення, встановивши FSCKFIX=yesв Initscripts.

Якщо цього недостатньо, ви можете завантажувати систему, не встановлюючи помилковий диск. Натомість створюйте свіжий ramdiskпід час ручної перевірки та ремонту помилкового диска. Це також може бути автоматизовано за допомогою скриптів.

На наступному рівні вам потрібно залишити вбудовану систему та прочитати деякі теми про високу доступність


Для інциденту автоматична перевірка - це те, чого ОП намагається уникати. Таким чином, файлова система повинна підтримувати онлайн-перевірку файлової системи.
Братчлі

1
з yournal_data_orderedабо replay_journal_onlyце займе лише кілька секунд, щоб перевірити, це різниця.

1
Так, будь ласка. Чи знаєте ви файлову систему, яка підтримує онлайн-перевірку?
Іллішар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.