Pemahaman saya adalah bahwa hard drive dan SSD menerapkan beberapa koreksi kesalahan dasar di dalam drive, dan sebagian besar konfigurasi RAID misalnya mdadm akan bergantung pada ini untuk memutuskan kapan drive gagal untuk memperbaiki kesalahan dan perlu diambil offline. Namun, ini tergantung pada penyimpanan yang 100% akurat dalam diagnosis kesalahannya. Tidak demikian, dan konfigurasi umum seperti cermin RAID-1 dua-drive akan rentan: misalkan beberapa bit pada satu drive rusak secara diam-diam dan drive tidak melaporkan kesalahan baca. Dengan demikian, sistem file seperti btrfs dan ZFS menerapkan checksum mereka sendiri, agar tidak mempercayai firmware kereta buggy, kabel SATA glitchy, dan sebagainya.
Demikian pula, RAM juga dapat memiliki masalah keandalan dan karenanya kami memiliki RAM ECC untuk menyelesaikan masalah ini.
Pertanyaan saya adalah ini : apa cara kanonik untuk melindungi file swap Linux dari korupsi diam / busuk bit yang tidak tertangkap oleh drive firmware pada konfigurasi dua disk (yaitu menggunakan driver kernel garis utama)? Sepertinya saya bahwa konfigurasi yang tidak memiliki perlindungan end-to-end di sini (seperti yang disediakan oleh btrfs) agak meniadakan ketenangan pikiran yang dibawa oleh ECC RAM. Namun saya tidak bisa memikirkan cara yang baik:
- btrfs tidak mendukung swapfile sama sekali. Anda dapat mengatur perangkat loop dari file btrfs dan melakukan swap pada itu. Tapi itu punya masalah:
- Penulisan acak tidak berkinerja baik: https://btrfs.wiki.kernel.org/index.php/Gotchas#Fragmentation
- Saran untuk menonaktifkan copy-on-write juga akan menonaktifkan checksumming - sehingga mengalahkan seluruh poin dari latihan ini. Asumsi mereka adalah bahwa file data memiliki perlindungan internalnya sendiri.
- ZFS di Linux memungkinkan menggunakan ZVOL sebagai swap, yang saya kira bisa berfungsi: http://zfsonlinux.org/faq.html#CanIUseaZVOLforSwap - namun, dari bacaan saya, ZFS biasanya membutuhkan memori, dan membuatnya bekerja dalam swap -hanya aplikasi terdengar seperti beberapa pekerjaan mencari tahu. Saya pikir ini bukan pilihan pertama saya. Mengapa Anda harus menggunakan beberapa modul kernel out-of-tree hanya untuk memiliki swap yang andal berada di luar jangkauan saya - tentunya ada cara untuk mencapai hal ini dengan sebagian besar distribusi / kernel Linux modern di zaman sekarang?
- Sebenarnya ada utas pada mailing list kernel Linux dengan tambalan untuk mengaktifkan checksum dalam manajer memori itu sendiri, untuk alasan yang persis saya bahas dalam pertanyaan ini: http://thread.gmane.org/gmane.linux.kernel/989246 - sayangnya, sejauh yang saya tahu, tambalan itu mati dan tidak pernah berhasil di hulu karena alasan yang tidak saya ketahui. Sayang sekali, itu terdengar seperti fitur yang bagus. Di sisi lain, jika Anda memasang swap pada RAID-1 - jika korupsi di luar kemampuan checksum untuk memperbaiki, Anda ingin manajer memori mencoba membaca dari drive lain sebelum panik atau apa pun, yang merupakan mungkin di luar ruang lingkup apa yang harus dilakukan manajer memori.
Kesimpulan:
- RAM memiliki ECC untuk memperbaiki kesalahan
- File pada penyimpanan permanen memiliki btrf untuk memperbaiki kesalahan
- Swap telah ??? <--- ini pertanyaan saya