Bagaimana cara RAID menangani data yang tidak konsisten?

8

RAID 1 dan RAID 5 (dan saudara mereka 10 dan 50) mencapai redundansi data masing-masing melalui mirroring dan melalui pengecekan paritas. Ini memungkinkan array RAID untuk tetap mengakses data saat sektor pada disk (atau seluruh disk) menjadi tidak dapat dibaca. RAID 6 (atau 60) menggunakan pemeriksaan tambahan untuk memungkinkan kesalahan ganda.

Tetapi bagaimana sebuah array RAID dapat menangani data yang tidak sepenuhnya tidak dapat dibaca, tetapi hanya tidak konsisten?

Jika beberapa kesalahan terjadi sehingga data pada strip diubah pada disk tetapi perubahan tersebut tidak disebarkan ke yang lain, seluruh strip akan menjadi tidak konsisten. Jika dalam set disk yang dicerminkan mengatakan "bit ini adalah 0" sementara disk yang lain mengatakan "bit ini adalah 1", bagaimana bisa kontroler RAID tahu mana yang benar? Alasan yang sama dapat diterapkan pada strip RAID-5, dengan kompleksitas tambahan yang Anda tidak dapat dengan mudah mengetahui sektor mana yang sebenarnya salah dalam strip tersebut. Juga, apakah RAID 6 mengurangi masalah ini dengan double ckecks, atau bisakah masih mengalami kesulitan memulihkan dari korupsi data ketika data sebenarnya dapat dibaca tetapi itu salah di suatu tempat, terutama karena array RAID 6 cenderung memiliki banyak disk?

Ini secara teoritis dapat diselesaikan dengan checksum, untuk memastikan yang menyalin data (atau paritas) adalah salah satu yang benar; tetapi apakah kontroler RAID benar-benar menerapkan checksum semacam ini (yang tentu saja akan mengambil ruang tambahan)? Atau apakah perlu ditangani di tingkat OS, di mana sebagian besar sistem file dapat dan akan memeriksa isinya? Dan jika ini masalahnya, bagaimana mereka dapat memberitahu pengontrol RAID "data pada sektor X pada disk Y pada stripe Z salah", ketika pendekatan umum pengontrol RAID adalah mengabstraksi OS dari lapisan penyimpanan yang mendasarinya sebanyak bisa jadi?

Massimo
sumber
Inilah yang menjadi tujuan "Bacaan Patroli" atau pemeriksaan konsistensi latar belakang.
ewwhite
2
Itu berguna untuk deteksi dini blok buruk dan memindahkan data ke tempat lain sebelum kesalahan aktual terjadi. Tetapi masih harus berurusan dengan data yang dapat dibaca tetapi tidak konsisten . Ambil contoh RAID-1 saya: jika sebuah blok pada disk dapat dibaca dan mengatakan "0", sementara blok yang sama pada disk lain juga dapat dibaca dan mengatakan "1", bagaimana bisa controller mengetahui yang mana yang benar?
Massimo
Karena RAID 1 tidak menawarkan paritas, sistem akan mengalami kesulitan untuk mendeteksi dan memperbaiki masalah. Anda mungkin harus menarik drive dan membacanya secara individual untuk mendapatkan file yang rusak.
Brian D.
Solusi mudah - gunakan ZFS
Patrick

Jawaban:

3
RAID VOLUMES WITH PARITY STRIPE

Pada pengontrol Areca yang kami gunakan (dan semua pengontrol RAID perangkat keras modern) selama pemeriksaan konsistensi, pengontrol dapat mendeteksi apakah korupsi terjadi pada data paritas, data fisik pada disk, atau keduanya. Sebagian besar pengontrol menyelesaikan ini dengan bit checksum sederhana untuk data paritas dan data pada disk.

Dalam hal data paritas rusak, controller akan melihat masalah ketika Anda menjalankan pemeriksaan konsistensi dan membaca kembali disk fisik untuk bit yang benar dan menulis ulang garis paritas. Pengguna tidak akan melihat masalah karena mereka membaca data pada disk saat membuka file. Menyimpan kembali apa pun yang menyebabkan strip paritas rusak untuk ditulis ulang juga akan memperbaiki masalah.

Jika Anda memiliki kebalikannya, dan sedikit membalik pada data-on-disk Anda yang sebenarnya, maka controller Anda akan melihat garis paritas selama pemeriksaan konsistensi untuk melihat apakah telah berubah. Dalam hal ini controller akan menimpa data pada disk agar sesuai dengan data paritas, yang dapat dikonfirmasikan tidak berubah / baik. Pengguna akan mendapatkan kesalahan CRC, atau file yang rusak tergantung pada apa data tersebut sampai pemeriksaan konsistensi dijalankan dan memperbaiki kesalahan.

Karena data paritas untuk data pada disk tertentu tidak pernah disimpan pada drive yang sama dengan data aktual, kegagalan drive tunggal seharusnya tidak menyebabkan masalah korupsi data. Atau dua disk untuk RAID6, dll.

Pemeriksaan konsistensi menjaga data Anda seakurat mungkin dan jika Anda membiarkan data yang rusak cukup lama tersimpan di volume Anda, data itu dapat dituliskan menjadi data paritas, artinya file rusak untuk selamanya dan harus dipulihkan dari cadangan. Jika drive dalam kondisi pra-gagal di mana ia menunjukkan kesalahan selama pemeriksaan konsistensi ganti drive segera daripada menunggu controller untuk menandainya sebagai gagal. Kami menjalankan pemeriksaan konsistensi setiap hari pada volume yang lebih kecil dan mingguan pada yang lebih besar.

RAID VOLUMES WITHOUT PARITY STRIPE (EX. RAID1)

Pengontrol / firmware hard drive mungkin dapat memperbaiki masalah ini. Jika ini tidak memungkinkan, pengontrol RAID akan mengalami kesulitan memperbaiki masalah. Dalam hal ini Anda mungkin harus membaca drive secara individual untuk memulihkan data.

GENERALLY SPEAKING

Jalankan pemeriksaan konsistensi pada interval yang direkomendasikan oleh kartu RAID Anda mfg. Jika Anda benar-benar khawatir tentang korupsi, Anda juga dapat menumpuk sistem file yang tangguh di atas volume RAID. Sistem file tangguh modern dapat memperbaiki banyak masalah integritas data ini dan menumpuk FS yang tangguh atas RAID6 akan menawarkan Anda uptime data yang sangat baik, tanpa korupsi. Dan bahkan dengan 2 kegagalan drive simultan Anda masih akan memiliki data paritas FS yang tersedia untuk menghindari penyajian data yang rusak kepada pengguna.

Brian D.
sumber
2

Anda secara efektif menggambarkan situasi, di mana satu disk menulis (atau membaca) kesalahan. Pengontrol RAID tidak memiliki cara praktis (mis. Menulis dan membaca kembali akan mematikan kinerja Anda) untuk melindungi dari situasi ini. Itu harus bergantung pada disk yang mampu mendeteksi kesalahan semacam ini dan baik menggunakan blok yang berbeda atau bail out dari volume - menyebabkan degradasi RAID.

Jika Anda berpikir tentang situasi disk tunggal, satu-satunya perlindungan terhadap penulisan yang tidak konsisten (atau membaca) adalah disk itu sendiri. RAID dibangun berdasarkan itu, tetapi tidak memperkenalkan perlindungan tambahan.

NB Saya tahu dari pengalaman bahwa XFS bereaksi cukup masuk akal untuk disk yang salah dalam array. Jadi, setidaknya pengendali non-low-end saya dan OS mengenali tetapi tidak melindungi terhadap ketidakkonsistenan itu (disk yang dikenal rusak ditambahkan dengan paksa ke volume).

Michael
sumber