У мене віртуальна машина (Debian) працює на хості фізичної машини. Віртуальна машина виступає в якості буфера для даних, які вона часто отримує через локальну мережу (період для цих даних становить 0,5 с, тому досить висока пропускна здатність). Будь-які отримані дані зберігаються на віртуальній машині та повторно передаються на зовнішній сервер через UDP. Після того, як зовнішній сервер визнає (через UDP), що він отримав пакет даних, вихідні дані видаляються з віртуальної машини і більше не надсилаються на зовнішній сервер. Підключення до Інтернету, яке з'єднує VM та зовнішній сервер, ненадійне, тобто може бути відключено протягом кількох днів.
Фізична машина, яка розміщує ВМ, вимикає потужність кілька разів на день навмання. Немає можливості сказати, коли це станеться, і неможливо додати в систему джерело живлення, акумулятор чи подібне рішення.
Спочатку дані зберігалися у файловій базі даних HSQLDB на віртуальній машині. Однак часті відключення живлення зрештою призводять до пошкодження файлу скрипта бази даних (не на рівні файлової системи, тобто він є читабельним, але HSQLDB не може його мати сенс), що призводить до мого питання:
Як слід зберігати дані в середовищі, коли відключення електроенергії можуть і трапляються часто?
Один з варіантів, який я можу придумати, - це використання плоских файлів, збереження кожного пакету даних у вигляді файлів у файловій системі. Таким чином, якщо файл пошкоджений через втрату живлення, його можна проігнорувати, а решта даних залишиться недоторканою. Однак це викликає декілька питань, головним чином пов'язаних із кількістю даних, які, ймовірно, зберігаються на віртуальній машині. За 0,5s між кожним фрагментом даних за 10 днів буде створено 1,728,000 файлів. Принаймні, це означає використання файлової системи із збільшеною кількістю входів для зберігання цих даних (поточна настройка файлової системи закінчилася в розмірах ~ 250 000 повідомлень та 30% використовуваного дискового простору). Також керувати важко (не неможливо).
Чи є інші варіанти? Чи є двигуни бази даних, які працюють на Debian, які не були б пошкоджені відключення живлення? Також яку файлову систему слід використовувати для цього? ext3 - це те, що використовується на даний момент.
Програмне забезпечення, яке працює на віртуальній машині, написане за допомогою Java 6, тому, сподіваємось, рішення не було б несумісним.