Perlawanan terbaik terhadap korupsi pada satu kartu SD akan ditawarkan oleh BTRFS di RAID1 mode dengan scrub otomatis berjalan setiap periode waktu yang telah ditentukan.
Manfaatnya:
- mempertahankan kemampuan RW ke sistem file
- sistem file modern berfitur lengkap dengan opsi yang sangat berguna untuk RPi, seperti kompresi transparan dan snapshot
- dirancang dengan mempertimbangkan memori flash (antara lain)
Berikut adalah cara melakukannya:
Saya menjalankan RaspberryPi saya di ArchARM linux dan kartu saya ada di pembaca SD, jadi ubah instruksi tersebut sesuai untuk distro lain dan antarmuka /dev.
Berikut adalah contoh tata letak partisi:
/dev/mmcblk0p1: fat32 boot partition
/dev/mmcblk0p2: to be used as btrfs partition
/dev/mmcblk0p3: to be used as btrfs partition (mirrored with the above)
/dev/mmcblk0p4 (optional): swap
Untuk memasukkan btrf ke dalam RAID1, Anda membuat sistem file seperti ini:
mkfs.btrfs -m raid1 -d raid1 /dev/mmcblk0p2 /dev/mmcblk0p3
Kemudian Anda rsync -aAXv
ke sistem cadangan Anda sebelumnya.
Untuk mem-boot dari BTRFS di raid1, Anda perlu memodifikasi initramfs . Oleh karena itu, Anda perlu melakukan hal berikut saat sistem Anda masih berjalan di sistem file lama Anda.
Raspberry biasanya tidak menggunakan mkinitcpio jadi Anda harus menginstalnya. Kemudian, Anda perlu menambahkan "btrfs" ke array MODULES di mkinitcpio.conf dan membuat ulang initramfs dengan
mkinitcpio -g /boot/initrd -k YOUR_KERNEL_VERSION
Untuk mengetahui apa yang harus diketik selain YOUR_KERNEL_VERSION, jalankan
ls /lib/modules
Jika Anda memperbarui kernel, Anda HARUS membuat ulang initramfs SEBELUM melakukan reboot.
Kemudian, Anda perlu memodifikasi file boot RPi.
Di cmdline.txt, Anda harus memiliki
root=/dev/mmcblk0p2 initrd=0x01f00000 rootfstype=btrfs
dan di config.txt, Anda perlu menambahkan
initramfs initrd 0x01f00000
Setelah Anda melakukan semua itu dan berhasil mem-boot ke sistem btrfs RAID1 Anda, satu-satunya yang tersisa adalah mengatur scrub berkala (setiap 3-7 hari) baik dengan systemd timer (lebih disukai), atau cron (dcron) seperti:
btrfs scrub start /
Ini akan berjalan di sistem file Anda membandingkan checksum dari semua file dan memperbaikinya (mengganti dengan salinan yang benar) jika menemukan kerusakan.
Kombinasi BTRFS RAID1, single medium, dan Raspberry Pi membuat hal-hal yang cukup misterius ini. Butuh beberapa waktu dan usaha untuk menyatukan semua bagian, tapi ini dia.
Saya akan menggunakan cara lain dan hanya akan menggunakan sistem file read-only. Saya tidak pernah mendapatkan raspberry pi saya cukup stabil saat menggunakan sistem file root baca-tulis di sdcard. Anda dapat mem-boot root Anda melalui kernel cmdline (ro) atau menggunakan initramfs dengan piggyback termasuk sistem lengkap Anda.
Keduanya dapat dibuat dengan sistem build buatan saya OpenADK.(http://www.openadk.org)
Penyimpanan flash lebih diinginkan daripada penyimpanan magnetik, karena berbagai alasan, tetapi untuk aplikasi ini saya akan mengatakan terutama karena tidak ada bagian yang bergerak. Karena itu, menurut saya tidak ada sistem file 'bukti korupsi' di luar sana, tetapi ada beberapa sistem file yang kuat (ext4 menjadi satu) di luar sana, serta beberapa taktik untuk membantu mengurangi korupsi.
Disk RAM
Jika gambar RPi tidak memiliki untuk berubah, dan sepertinya tidak, jika tidak ada yang mencoba (atau harus mencoba) menulis ke disk, maka coba gunakan sistem file root yang dibuat untuk dibongkar ke dalam RAM. Idenya di sini adalah Anda memiliki sistem file root terkompresi saat boot yang dibongkar ke dalam RAM. Semua perubahan terjadi pada disk RAM, jadi secara efektif tidak ada penulisan ke Kartu SD, hanya membaca saat boot. ini akan mengurangi pembacaan/penulisan ke drive Anda, mempertahankan masa pakainya. Ini serupa dengan apa yang dilakukan saat Anda mem-boot linux dari CD, dan merupakan salah satu hal pertama yang terjadi saat linux mem-boot.