Apakah RAID 1 melindungi dari korupsi?

14

Apakah Raid 1 melindungi terhadap korupsi data? Misalnya, katakanlah saya menyimpan semua file penting saya di NAS yang menggunakan 2 disk dalam RAID 1. Jika satu hard drive memiliki beberapa masalah internal dan data menjadi rusak, apakah RAID mengenali ini secara otomatis dan benar menggunakan data dari disk lain yang bagus?

Mungkinkah ia tahu salinan mana yang bagus?

Apakah RAID 5 melindungi dari korupsi?

Saya tahu bahwa RAID bukan solusi cadangan. Saya mencoba mencari cara untuk memastikan bahwa saya tidak mencadangkan data yang korup!

Sunting Reg
sumber

Jawaban:

13

RAID-1 melindungi terhadap kegagalan total salah satu dari dua drive. Jika drive tidak ditandai sebagai gagal, maka isinya dianggap akurat. Tetapi jika, untuk alasan apa pun, salah satu dari dua drive mengembalikan data yang tidak konsisten, maka kesalahan itu tidak akan terdeteksi oleh sistem RAID, dan aplikasi akan mendapatkan data yang buruk.

Banyak pengontrol memiliki proses verifikasi yang berjalan secara berkala, tetapi tujuan dari ini adalah untuk menguji kegagalan disk, bukan integritas data. Hard drive menerapkan tes integritas data mereka sendiri dan checksum yang mereka gunakan untuk melihat sektor yang buruk, tetapi algoritma ini dirancang untuk menjadi cepat dan kompak, tidak menyeluruh, sehingga kesalahan dapat bocor.

Meskipun korupsi data merupakan pengecualian daripada aturan, korupsi juga bukan hal yang tidak pernah terjadi. Seorang anggota tim ZFS, misalnya, melaporkan dalam sebuah wawancara melihat data yang korup diberikan kepada mereka oleh perangkat RAID-5 kelas atas yang mereka temukan berdasarkan fakta bahwa ZFS mengimplementasikan checksum pada tingkat sistem file tersebut.

tylerl
sumber
5

Itu tergantung dari mana korupsi berasal. Jika drive di mirror RAID 1 benar-benar kacau dan menulis omong kosong maka mirror RAID akan menurun dan drive yang baik akan digunakan dan Anda akan memiliki file yang baik. Dalam kasus RAID 5 ini dilakukan dengan 2 drive data dan drive paritas (dalam bentuk paling sederhana) dan jika salah satu dari 3 drive gagal untuk menulis file yang tepat maka akan gagal dan Anda akan ditinggalkan dengan 2 data drive atau 1 drive data dan drive paritas.

Sekarang mari kita lihat apa yang terjadi jika korupsi disebabkan oleh virus atau bug dalam suatu program. Dalam RAID 1 dan RAID 5 tidak ada drive yang akan dihapus karena drive ditulis dengan benar. Tidak ada yang gagal. Namun file akan dimusnahkan karena virus atau bug sedang menulis sampah, dan itu akan menulisnya ke kedua drive Anda di mirror RAID 1, dan ke semua 3 drive Anda dalam sistem RAID 5.

Itu sebabnya RAID bukan cadangan. Ini mencegah kegagalan yang paling mungkin yaitu kegagalan disk tetapi tidak memperhitungkan banyak skenario lainnya.

Joshua Levitsky
sumber
4
+1 "Inilah sebabnya mengapa RAID bukan cadangan" Tuhan tahu berapa kali saya mendengar "Saya baik-baik saja, cadangan saya ditutupi dengan RAID"
Urda
2
Bagaimana cara RAID membedakan antara data mana yang baik dan mana yang buruk?
1
Shaun ... jika data Anda dimakan oleh virus atau terhapus secara tidak sengaja, RAID tidak akan pernah bisa membedakannya baik atau buruk. Semua RAID yang bertanggung jawab memastikan bahwa (dalam RAID 1) bahwa kedua disk sama. Jika suatu sektor gagal checksum, pengontrol RAID mengkompensasi untuk memperbaikinya, atau memicu pembangunan kembali. Dalam RAID 5, jika suatu sektor gagal melakukan pemeriksaan paritas, pembangunan kembali dipicu. RAID melindungi drive fisik dari kegagalan, dan hasil dari kehilangan data. Mereka tidak dapat melindungi terhadap data yang hilang karena kesalahan program atau virus.
Urda
6
Karakterisasi RAID 5 Anda tidak akurat. Tidak ada paritas drive yang terpisah, sebaliknya paritas didistribusikan di semua drive. Anda berakhir dengan total ruang n-1 yang tersedia, tetapi tidak ada drive yang didedikasikan untuk paritas.
MDMarra
2
Saya harus mengundurkan diri ini. RAID1 tidak melakukan checksumming, itu hanya melindungi terhadap kerusakan drive lengkap. Jika satu drive mulai mengembalikan sampah, ia tidak memiliki cara untuk mengetahui mana yang benar, dan dengan senang hati akan mengembalikan data sampah. RAID5 Saya tidak yakin, karena pemeriksaan paritas. Inilah mengapa sistem file seperti ZFS dan BTRFS ditemukan, sehingga Anda mendapatkan sistem seperti RAID yang 'sadar data', yang dapat memperbaiki data sampah dengan tepat menggunakan checksum untuk memverifikasi blok data.
Alex
5

Seperti yang telah dicatat orang lain, sistem raid1 tidak memiliki cara untuk mengetahui mana dari dua sektor yang buruk.

Sistem serangan tingkat tinggi menjalankan operasi scrub di latar belakang untuk membandingkan kedua salinan, dan perbedaan flag. Lebih baik lagi adalah sistem yang membaca kedua blok dari drive setiap kali, dan membandingkannya pada waktu baca. Namun menyelesaikan perbedaan itu tidak mungkin untuk pengontrol serangan.

Pada sistem Unix di bawah mdadm, pemeriksaan scrub dapat dimulai dengan "sync_action":

array md dapat dihapus dengan menulis baik memeriksa atau memperbaiki file md / sync_action di direktori sysfs untuk perangkat.

Meminta scrub akan menyebabkan md membaca setiap blok pada setiap perangkat dalam array, dan memeriksa apakah datanya konsisten. Untuk RAID1 dan RAID10, ini berarti memeriksa bahwa salinannya identik. Untuk RAID4, RAID5, RAID6 ini berarti memeriksa bahwa blok paritas (atau blok) sudah benar.

raid1 adalah tentang melindungi dari kegagalan total drive yang tiba-tiba. Cari tempat lain untuk perlindungan terhadap korupsi. Di luar itu, Raid1 tidak menawarkan "riwayat", jadi tidak dapat pulih dari kesalahan manusia atau perangkat lunak. Lihat ke filesystems seperti ZFS atau history yang melestarikan filesystem seperti Hammer untuk melindungi dari korupsi.

Bryce
sumber
3

Dalam latihan, ya. Sebagian besar kegagalan hard drive terjadi semua atau tidak sama sekali. Entah (a) kabel dicabut atau mikrokontroler drive gagal, sehingga pengontrol RAID tidak mendapat respons sama sekali - drive gagal jelas. Atau (b) Mikrokontroler kabel dan drive baik, tetapi ketika mencoba membaca suatu sektor, mikrokontroler drive internal mendeteksi korupsi data karena checksum ECC internal gagal, dan upaya berulang-ulang untuk membaca sektor itu (jika itu kesalahan baca sementara ) akhirnya waktu habis, sehingga pengontrol RAID mendapat respons "maaf" yang sopan - drive yang gagal jelas. Either way, jelas ke controller RAID-1 atau RAID-5 bahwa drive telah gagal.

Pada prinsipnya tidak. Jika ada sesuatu yang sangat salah sehingga hard drive menulis omong kosong, dan entah bagaimana bekerja cukup baik untuk menulis kode ECC internal yang benar untuk omong kosong itu, maka RAID-1 tidak dapat menentukan drive mana yang benar. Sistem RAID-1 kemungkinan akan menimpa data yang baik dengan data yang rusak pada sinkronisasi ulang. RAID-5 tidak lebih baik. Kegagalan daya "RAID-5 write hole" selama penulisan aktif adalah satu kasus yang jarang tetapi tidak mustahil.

Sejauh yang saya tahu, satu-satunya cara untuk menghindari korupsi tersebut adalah dengan menggunakan checksum end-to-end selain mirroring file, baik secara otomatis sebagai bagian dari sistem file (ZFS atau Btrfs) atau secara berkala atau manual (menghitung ulang checksum rsync, verifikasi file sederhana, set file Parchive, dll.); idealnya dengan hash kriptografi seperti SHA-256.

David Cary
sumber
Setiap kesempatan Anda bisa memberikan jawaban untuk yang satu ini .... superuser.com/questions/736612/…
Mick