İşletim sistemi ve uygulamalar için küçük bir dahili NAND cihazı (250-500Meg) ve veri için 8Gb SDHC SD kartlı bir SD kart ile küçük bir gömülü Linux sistemi (2.6.35-ish) üzerinde çalışıyoruz.
Ünitenin gücü her zaman kesilebilir.
Sistem verileri SD kartlara kaydetmelidir. Bu veriler oldukça önemli ... sistemin tüm amacı bu. Sistemler genellikle uzak konumlardaki herhangi bir ağdan tamamen ayrılır ve veriler her 4-8 haftada bir sneakernet üzerinden alınır.
Şu anda, SD kartlarda VFAT var. Bu temelde ilk test istemcilerinin verileri kolayca Win7 dizüstü bilgisayarlarına manuel olarak kopyalayabilmeleriydi.
Ancak, yanlış zamanda bir elektrik kesintisinin veri kaybına neden olmasının sadece zaman meselesi olduğundan endişeliyim.
Veri kaybını önlemek için böyle bir sistemi yapılandırmanın en iyi yolu nedir? JFFS2 nasıl veri yazma açısından istediğim gibi geliyor (ve performans ihtiyaçları hiç yüksek değil), ancak block2mtd, vb kullanmak için oldukça kludgy gibi geliyor. Bununla birlikte.
Bunu yapmanın en iyi yolu nedir?
DÜZENLE
Şimdi dosya sistemi VFAT bırakarak ve büyük ölçüde güç döngüsü arızalarına maruz kalma sınırlaması gerekir 0xFF dolu bir seferde günlük boyutlu dosyaları tahsis düşünüyorum. O zaman sadece bu işlenmiş blokların içine kayıtlar ekleyebilirim ve umarım SD kartlar 0xFF bölgelerine yazma / aşınma seviyesi yazmalarını o kadar aptal değildir.
Noatime kullanabilirim, ancak değiştirilen zaman alanına yazmayı önlemek için bir VFAT nomtime eşdeğeri var mı? Yeni bir günlük dosyası oluşturulana kadar meta veri güncellemelerini önlemek için bir yol bulmam gerekir.
DÜZENLEME 2
Elektronik yığını değişimindeki biri bana NAND'de ECC verileri olduğunu hatırlattı, bu nedenle silme ihtiyacını önlemenin bir yolu yok.
Peki, block2mtd üzerinden JFFS2 bu durumda uygun olur mu?
DÜZENLEME 3
Düşündüğümden daha kötü. SD kartlar, aynı içeriği diske yazsanız bile veri bloklarını silecektir. Silme blokları 64KB'dir ve yazmaları tamamen geciktirmek için çok büyüktür. NAND flash'da (yazma davranışını kontrol edebileceğim) bir tür günlükte 128KB'a kadar veri depolayacağım ve daha sonra SD karttaki bir VFAT bölümünde 128KB hizalanmış bir dosyaya 128KB blok yazacağım ( diğer SD kartlarda 128KB eraseblocks varsa).
sync
, SD karta her yazma işleminden sonra komutu kullanın, bitleri değiştirdikten / oluşturduktan sonra bunları RAM'de saklamaksızın derhal yazar, böylece değişiklikleriniz en azından kartta olur ve güç kaybına uğramazdı.
sync
meta verilerin güncelleme ortasında olduğu süreyi artırdığından, büyük olasılıkla işleri daha da kötüleştirecektir.