Perangkat linux saya yang tertanam menggunakan kartu SD untuk menyimpan data diagnostik tertentu, terlalu berlebihan untuk flash internal.
Masalahnya adalah jika perangkat dimatikan secara tak terduga, sistem file (FAT32) pada kartu rusak.
Tidak ada cara untuk mencegah pemadaman listrik yang tak terduga atau pengguna mematikannya seperti itu, dan perangkat harus relatif bebas perawatan. Lebih buruk lagi, data ini ditulis terus menerus, sehingga korupsi sangat sering terjadi, dan Linux setelah mendeteksi FS yang salah mencatatnya hanya-baca secara diam-diam.
Metode apa yang akan Anda sarankan untuk mengurangi ini? Apakah menjalankan fsck.vfat secara otomatis pada saat startup sudah cukup?
Beberapa info lebih lanjut:
- Kartu ini tidak dianggap dapat dilepas oleh pengguna. Ini dianggap sebagai disk internal. Setiap data yang disimpan di dalamnya akan dapat diakses untuk diunduh melalui jaringan atau ke drive usb, dan sistem secara otomatis membersihkan entri tertua. Itu berarti tidak perlu dibaca di PC rata-rata Anda.
- Sistem saat ini mendukung FAT, yaffs dan jffs2. Menambahkan sistem file lain ke kernel dimungkinkan tetapi jika ada jalan lain, kami lebih suka dulu.
- Menulis dapat ditangguhkan sesuai permintaan bahkan selama beberapa menit tanpa kehilangan data.
- hilangnya sebagian data atau korupsi kecil dapat diterima. Berhenti total logging tidak.
- peristiwa poweroff benar-benar tidak dapat diprediksi sebagian besar waktu.
- sistem ini berjalan pada ARM9, 200MHZ, RAM 64MB, flash internal 32MB dan menggunakan sebagian besar daya CPU untuk peran utamanya. Pertimbangkan hal ini sambil memikirkan solusi mewah yang membutuhkan banyak sumber daya.
Jawaban:
Anda dapat menggunakan
block2mtd
driver untuk menggunakan sistem file jffs2 atau yaffs transaksional (2) yang tampaknya Anda gunakan di tempat lain untuk kartu SD Anda, yang akan menyelesaikan masalah kehilangan data atau korupsi sistem file di poweroff.Namun, hal itu dapat menimbulkan masalah lain. Karena kartu SD kemungkinan memiliki mekanisme sendiri untuk meratakan keausan dan memetakan kembali sektor, ini dapat mengganggu implementasi jffs2 dan yaffs untuk melakukan hal yang sama, mengurangi umur atau kinerja kartu SD Anda. Jika ini bukan masalah, patut dicoba.
sumber
Periksa apakah kernel yang Anda gunakan mendukung flush dan / atau sync flag untuk vfat (sepertinya beberapa versi mengabaikannya, hati-hati!).
Atau singkirkan saja sistem file jika semuanya dapat masuk ke satu file (seperti halnya aliran log mentah!) Atau ke beberapa file ukuran tetap (gunakan partisi;)
sumber