Saya memiliki mesin virtual (Debian) yang berjalan di host mesin fisik. Mesin virtual bertindak sebagai penyangga untuk data yang sering diterima melalui jaringan lokal (periode untuk data ini adalah 0,5s, sehingga throughput yang cukup tinggi). Setiap data yang diterima disimpan di mesin virtual dan berulang kali diteruskan ke server eksternal melalui UDP. Setelah server eksternal mengakui (lebih dari UDP) bahwa ia telah menerima paket data, data asli dihapus dari mesin virtual dan tidak dikirim ke server eksternal lagi. Koneksi internet yang menghubungkan VM dan server eksternal tidak dapat diandalkan, artinya bisa turun selama berhari-hari.
Mesin fisik yang meng-host VM mendapatkan pemadaman listriknya beberapa kali per hari secara acak. Tidak ada cara untuk mengetahui kapan ini akan terjadi dan tidak mungkin untuk menambahkan UPS, baterai, atau solusi serupa ke sistem.
Awalnya, data disimpan pada basis data HSQLDB berbasis file di mesin virtual. Namun, pemadaman listrik yang sering pada akhirnya menyebabkan file skrip database menjadi rusak (tidak pada tingkat sistem file, yaitu dapat dibaca, tetapi HSQLDB tidak dapat memahaminya), yang mengarah ke pertanyaan saya:
Bagaimana seharusnya data disimpan di lingkungan di mana pemadaman listrik dapat dan memang sering terjadi?
Satu pilihan yang bisa saya pikirkan adalah menggunakan file flat, menyimpan setiap paket data sebagai file pada sistem file. Dengan cara ini jika suatu file rusak karena kehilangan daya, itu dapat diabaikan dan sisa data tetap utuh. Ini menimbulkan beberapa masalah Namun, terutama terkait dengan jumlah data yang kemungkinan disimpan di mesin virtual. Pada 0,5s antara setiap bagian data, 1.728.000 file akan dihasilkan dalam 10 hari. Ini setidaknya berarti menggunakan sistem file dengan peningkatan jumlah inode untuk menyimpan data ini (pengaturan sistem file saat ini kehabisan inode pada ~ 250.000 pesan dan 30% ruang disk yang digunakan). Juga, sulit (bukan tidak mungkin) untuk dikelola.
Apakah ada opsi lain? Apakah ada mesin basis data yang berjalan pada Debian yang tidak akan rusak oleh pemadaman listrik? Juga, sistem file apa yang harus digunakan untuk ini? ext3 adalah apa yang digunakan saat ini.
Perangkat lunak yang berjalan pada mesin virtual ditulis menggunakan Java 6, jadi semoga solusinya tidak akan kompatibel.