Saya telah membaca akhir-akhir ini tentang menulis caching, NCQ, bug firmware, hambatan, dll tentang drive SATA, dan saya tidak yakin apa pengaturan terbaik yang akan membuat data saya aman jika terjadi kegagalan daya.
Dari apa yang saya pahami, NCQ memungkinkan drive untuk menyusun ulang penulisan untuk mengoptimalkan kinerja, sambil tetap memberi tahu kernel tentang permintaan yang telah ditulis secara fisik.
Cache tulis membuat drive melayani permintaan lebih cepat, karena tidak menunggu data ditulis ke disk fisik.
Saya tidak yakin bagaimana campuran NCQ dan Write cache di sini ...
Filesystem, khususnya yang dijurnal, perlu memastikan kapan permintaan tertentu telah ditulis. Juga, proses ruang pengguna menggunakan fsync () untuk memaksa flush file tertentu. Panggilan ke fsync () tidak boleh kembali sampai sistem file yakin bahwa data ditulis ke disk.
Ada fitur (FUA, Force Unit Access), yang saya lihat hanya pada drive SAS, yang memaksa drive untuk mem-bypass cache dan menulis langsung ke disk. Untuk semua yang lain, ada hambatan penulisan, yang merupakan mekanisme yang disediakan oleh kernel yang dapat memicu flush cache pada drive. Ini memaksa semua cache untuk ditulis, bukan hanya data penting, sehingga memperlambat seluruh sistem jika disalahgunakan, dengan fsync () misalnya.
Kemudian ada drive dengan bug firmware, atau yang sengaja berbohong tentang kapan data telah ditulis secara fisik.
Setelah mengatakan ini .. ada beberapa cara untuk mensetup drive / filesystems: A) NCQ dan Write cache dinonaktifkan B) Hanya NCQ diaktifkan C) Hanya Write cache diaktifkan D) Baik NCQ dan cache tulis diaktifkan
Saya berasumsi hambatan diaktifkan .. BTW, bagaimana cara memeriksa apakah mereka benar-benar diaktifkan?
Dalam hal kehilangan daya, saat secara aktif menulis ke disk, tebakan saya adalah bahwa opsi B (NCQ, tanpa cache) aman, baik untuk jurnal sistem data dan data. Mungkin ada penalti kinerja.
Opsi D (NCQ + cache), jika menggunakan hambatan atau FUA, akan aman untuk jurnal sistem file dan aplikasi yang menggunakan fsync (). Akan buruk untuk data yang menunggu di cache, dan terserah sistem file untuk mendeteksinya (checksum), dan setidaknya sistem file tidak akan (semoga) dalam keadaan tidak stabil. Dari segi kinerja, seharusnya lebih baik.
Namun pertanyaan saya adalah ... Apakah saya kehilangan sesuatu? Apakah ada variabel lain yang perlu dipertimbangkan? Apakah ada alat yang dapat mengkonfirmasi ini, dan drive saya berperilaku sebagaimana mestinya?