Saya akan mengganti array RAID5 perangkat keras lama dengan array RAID1 perangkat lunak Linux. Saya sedang berbicara dengan seorang teman dan dia mengklaim bahwa RAID5 lebih kuat daripada RAID1.
Klaimnya adalah bahwa dengan RAID5, saat membaca data paritas dibaca untuk memastikan bahwa semua drive mengembalikan data yang benar. Dia lebih lanjut mengklaim bahwa pada RAID1 kesalahan yang terjadi pada drive akan luput dari perhatian karena tidak ada pemeriksaan seperti yang dilakukan dengan RAID1.
Saya bisa melihat bagaimana ini bisa benar, tetapi juga bisa melihat bahwa itu semua tergantung pada bagaimana sistem RAID diimplementasikan. Tentunya sistem RAID5 tidak harus membaca dan memeriksa data paritas saat dibaca dan sistem RAID1 dapat dengan mudah membaca dari semua drive yang dibaca untuk memeriksa mereka semua memegang data yang sama dan karenanya mencapai tingkat ketahanan yang sama ( dengan hilangnya kinerja yang sesuai).
Jadi pertanyaannya adalah, apa yang sebenarnya dilakukan oleh sistem RAID5 / RAID1 di dunia nyata? Apakah sistem RAID5 memeriksa data paritas saat dibaca? Apakah ada sistem RAID1 yang membaca dari semua drive dan membandingkan data saat dibaca?
sumber
Dengan RAID-5, paritas umumnya hanya dibaca pada array rebuild, bukan pada read umum. Ini artinya membaca bisa lebih acak dan lebih cepat (karena Anda tidak perlu membaca dan menghitung paritas untuk seluruh strip setiap kali Anda menginginkan 1K data dari array).
Dengan RAID-1, umumnya pembacaan dilangkahi di drive kapan pun memungkinkan untuk memberikan peningkatan kinerja baca. Seperti yang Anda catat, jika subsistem RAID mencoba membaca kedua drive dan mereka berbeda, subsistem tidak memiliki cara untuk mengetahui drive mana yang salah.
Sebagian besar subsistem RAID bergantung pada drive untuk memberi tahu pengontrol atau komputer ketika kondisi buruk.
Jadi apakah RAID-5 "lebih kuat"? Jawabannya adalah, tergantung. RAID-5 memungkinkan Anda mendapatkan penyimpanan yang lebih efektif untuk sejumlah disk daripada RAID-1; Meskipun untuk memberikan penyimpanan efektif di luar satu disk, RAID-1 perlu dikombinasikan dengan RAID-0, baik sebagai strip array RAID-1, atau RAID-1 melintasi dua garis RAID-0.
(Saya lebih suka yang pertama, karena kegagalan drive tunggal akan mengeluarkan elemen RAID-1 tunggal, yang berarti bahwa hanya drive tunggal akan memerlukan pembangunan kembali. Dengan yang terakhir, kegagalan drive tunggal membunuh elemen RAID-0, yang berarti SETENGAH disk akan terlibat dalam pembangunan kembali ketika drive diganti.)
Ini juga mengarah pada diskusi "phantom wrote", di mana sebuah tulisan dilaporkan berhasil oleh drive elektronik, tetapi untuk alasan apa pun tulisan itu tidak pernah sampai ke disk. Ini memang terjadi. Pertimbangkan bahwa untuk array RAID-5, ketika Anda mengalami kegagalan drive, array tersebut HARUS membaca SEMUA sektor pada SEMUA drive yang bertahan SEMPURNA untuk memulihkan. NetApp mengklaim bahwa ukuran besar drive ditambah ukuran besar kelompok serangan berarti bahwa dalam beberapa kasus peluang Anda gagal selama pembangunan kembali bisa sama buruknya dengan satu dari sepuluh. Jadi, mereka merekomendasikan bahwa disk besar dalam kelompok RAID besar menggunakan dual-parity (yang saya pikir terkait dengan RAID-6).
Saya belajar ini pada diskusi teknis NetApp yang diberikan oleh beberapa insinyur mereka.
sumber
Tidak ada implementasi RAID umum biasanya memeriksa paritas pada akses data. Saya belum pernah melihatnya. Beberapa implementasi RAID5 membaca data paritas untuk streaming yang dibaca untuk mencegah pencarian yang tidak perlu (lebih murah untuk membuang setiap blok ke-n daripada menyebabkan drive mencari dari setiap blok ke-n). Implementasi RAID1 tidak dapat memeriksa karena mereka membaca dari kedua disk untuk kinerja (baik, di sebagian besar implementasi RAID1. Segelintir yang Anda pilih, yang dapat berguna jika satu disk jauh lebih lambat dari yang lain dan tidak intensif menulis beban.)
Beberapa memang mengecek dengan latar belakang 'scrubbing'. Dalam hal ini, RAID6 menang karena dapat memulihkan data, dan RAID5 dan RAID1 berada dalam situasi yang sama, Anda dapat mengidentifikasi tetapi tidak memperbaiki. (Ini tidak sepenuhnya benar karena drive dapat mendeteksi CRC yang buruk, mengembalikan kesalahan, dan membiarkan Anda menulis ulang blok dari paritas. Ini sering terjadi).
Jika Anda ingin integritas data, simpan hash dengan setiap blok (atau rekam, atau terbagi) di lapisan aplikasi. Sybase dan Oracle melakukan ini (saya percaya pada tingkat halaman) dan saya telah melihatnya pada banyak kesempatan menyimpan basis data raksasa. (mis. kontroler mulai mengembalikan data yang buruk, sybase crash dengan kesalahan yang jelas, oleh karena itu tidak ada penulisan yang dilakukan ketika database berjalan pada perangkat keras yang gagal dengan keadaan tidak konsisten).
Satu-satunya solusi sistem file dan satu-satunya solusi RAID yang melakukan ini untuk Anda adalah ZFS.
sumber
Apakah teman Anda berbicara tentang bit paritas yang terlibat dalam beberapa level RAID , atau checksum dari data yang ditulis ke disk?
Jika mereka tentang paritas, maka RAID1 tidak memiliki bit paritas - Anda memiliki dua salinan data yang sama. Seharusnya ada checksum yang dilakukan oleh disk untuk memastikan apa yang ditulis ke disk cocok dengan apa yang terjadi
RAID5 memang memiliki bit paritas. Ini berarti bahwa Anda dapat kehilangan disk di set RAID Anda, dan melanjutkan seolah-olah tidak ada yang terjadi. Namun, harus ada checksum yang dilakukan dari data yang ditulis ke disk untuk memastikan itu cocok dengan apa yang terjadi
Dalam hal ini, checksum sepenuhnya independen dari RAID yang mungkin atau mungkin tidak dilakukan dengan banyak disk
Diedit untuk menambahkan: Anda menyebutkan beralih dari RAID perangkat keras ke perangkat lunak RAID. Preferensi selalu RAID perangkat keras daripada perangkat lunak RAID. Jika Anda dapat membeli perangkat keras yang diperlukan untuk memberikan tingkat RAID yang ingin Anda terapkan, saya sarankan Anda melakukannya. Ini akan memungkinkan semua perhitungan paritas dilakukan oleh kartu RAID, bukan dari host. Oleh karena itu membebaskan sumber daya pada tuan rumah. Tidak ada keraguan manfaat lainnya, tetapi mereka melarikan diri saya saat ini
sumber
Itu akan tergantung pada jenis implementasi raid (hw / sw), disk, controller raid jika ada, dan fitur-fiturnya.
itu memang masuk akal, tetapi tidak benar-benar :) apa yang terjadi adalah - jika data yang salah ditulis, di cermin itu akan dikirim ke kedua drive, dan pada paritas raid5 untuk itu akan dihasilkan dan menyebar di seluruh drive. pengecekan baca / tulis data dilakukan oleh disk dan firmware pengontrol, dan tidak ada hubungannya dengan tingkat serangan.
seperti yang saya katakan, cek bukan bagian dari algoritma raid, meskipun beberapa pengendali mungkin memiliki sesuatu tambahan yang diterapkan.
ketahanan array hingga kualitas drive (2,5 "drive cenderung hidup lebih lama dari 3,5" karena penurunan tingkat RV; dalam pengalaman saya TIDAK PERNAH membeli drive SCSI / SAS maxtor - mereka memiliki gangguan firmware yang mengerikan), lingkungan (kontrol suhu dan kelembaban), controller itu sendiri (apakah ada BBU? apakah firmware up to date? apakah benar-benar raid atau fakeraid?), jumlah PSU di server, kualitas UPS dll.
sumber
Saya tidak tahu ini, tetapi bagi saya sepertinya tidak. Ingatlah bahwa untuk menghitung paritas, ia harus membaca blok dari semua drive di set RAID Anda dan kemudian melakukan matematika untuk menentukan kebenaran, sedangkan jika tidak, hanya membaca dari satu drive.
Juga, jika pembacaan Anda kurang dari satu blok, pembacaan paritas-cek harus memperluasnya menjadi blok penuh, sedangkan pembacaan reguler tidak. (Dengan asumsi, tentu saja, bahwa blok RAID lebih besar daripada blok disk. Saya pikir membaca dari disk harus dari blok penuh. Jika tidak, poin saya bahkan lebih valid.)
Jadi, dari sudut pandang saya, ya, itu bisa melakukan itu, tetapi jika itu terjadi, itu akan menjadi tidak efisien, dan saya ragu ada yang diimplementasikan dengan cara itu.
Namun, sekali lagi, saya tidak memiliki pengetahuan pribadi tentang implementasi yang sebenarnya.
sumber
Itu tidak masuk akal. Apa yang Anda lakukan ketika Anda menemukan ketidakcocokan paritas? (Bagaimana Anda tahu blok mana yang salah?)
Untuk pembacaan acak memeriksa paritas akan mahal. Biasanya Anda dapat melayani pembacaan acak dengan hanya melihat pada satu disk, tetapi jika Anda ingin memeriksa paritas Anda harus membaca semua disk pada setiap pembacaan. (Itu mungkin masih masuk akal jika ada yang bisa kamu lakukan!)
Perhatikan bahwa RAID-1 juga memiliki masalah ini - yang masuk akal ketika Anda melihat RAID-1 sebagai dua disk RAID-5.
sumber
Saya telah berpikir sedikit tentang klaim, bahwa RAID-1 harus lebih cepat dibaca daripada RAID-5, karena membaca di kedua drive sekaligus.
Sekarang, karena parity tidak dibaca pada RAID-5 kecuali array perlu dibangun kembali, sebenarnya sama dengan array RAID-0 dalam hal membaca, apakah saya benar?
RAID-0 umumnya dianggap sebagai level tercepat (meskipun harus dinamai "AID", karena tidak ada redundansi sama sekali). :-D
Berbicara tentang RAID perangkat lunak Linux, tes sederhana - menggunakan hdparm - mengkonfirmasi teori ini: array RAID-5 saya selalu menunjukkan kecepatan baca yang lebih tinggi daripada array RAID-1 saya.
NAMUN: Tampaknya array yang terdegradasi jauh lebih lambat daripada array yang berjalan normal! Saya baru saja menguji ini dengan Fedora 9, berjalan pada 4 WD 1 TB drive dengan tingkat RAID yang berbeda. Inilah hasilnya:
RAID-5 terdegradasi: kecepatan baca 43 MB / detik Normal RAID-5: kecepatan baca 240 MB / detik (!) RAID-1: kecepatan baca 88 MB / detik
Karena hilangnya disk yang diizinkan adalah sama di RAID-1 dan RAID-5 (yaitu satu), saya pikir RAID-5 harus mengungguli RAID-1 di setiap aspek - memberikan kapasitas lebih banyak dalam kaitannya dengan jumlah disk yang digunakan dalam array dan sama toleransi kesalahan. Ini mengarah pada kesimpulan yang menyatakan, bahwa RAID-6 mengungguli setiap tingkat RAID lainnya, karena itu secepat RAID-0 pada pembacaan normal (tidak ada paritas yang dibaca dari dua disk paritas), dan masih toleran kesalahan jika terjadi kehilangan anggota array. ;-)
sumber
Secara pribadi, saya berpikir bahwa tes terakhir dari sistem RAID adalah seberapa baik dapat menahan kegagalan. Dalam hal ini, baik RAID5 dan RAID1 dapat menangani kegagalan drive tunggal tetapi tidak ada yang bisa bertahan lebih dari itu.
Adapun pertanyaan Anda pada bit paritas, saya akan berpikir bahwa itu tergantung pada driver RAID. Ini pasti akan dibaca selama rekonstruksi tetapi pada penggunaan normal, itu tidak masuk akal untuk dilakukan karena bandwidth akan terbuang sia-sia.
sumber
afaik, saya bukan pro penyimpanan 24/7, controller selalu memeriksa apa yang ditulis dan dibaca dari disk. yaitu dengan raid1 Anda memiliki penulisan sedikit lebih buruk daripada pada satu disk tetapi bacaan Anda sedikit lebih cepat (harus menulis file ke dua disk tetapi dapat membaca satu bagian dari disk satu dan bagian lain dari disk dua).
Mungkin Anda dapat menonaktifkan pemeriksaan data untuk tingkat serangan tetapi apa gunanya ini, semua tingkat serangan (kecuali 0) ada untuk memberi Anda redundansi data jadi mengapa menghambat diri Anda sendiri.
Dengan raid 5 Anda membutuhkan setidaknya 3 disk dan dapat menggunakan disk N-1 untuk data. Dengan raid 1 Anda selalu membutuhkan jumlah disk yang genap dan dapat menggunakan N / 2 disk untuk data.
Jadi dalam serangan yang lebih besar level 5 memberi Anda lebih banyak penyimpanan sementara serangan 1 memberi Anda lebih banyak redundansi.
Jika maksud Anda lebih kuat yang menawarkan redundansi lebih banyak daripada serangan 1.
tergantung pada ukuran serangan, Anda juga harus mempertimbangkan untuk membangun kembali kali jika terjadi kesalahan (berapa banyak disk yang ada, seberapa besar satu disk, jenis serangan (lunak, palsu, perangkat keras-), tingkat mana, dll. )
Jadi tidak mungkin untuk mengatakan bahwa satu serangan lebih kuat dari yang lain (mungkin serangan 6 selalu lebih kuat daripada serangan 5 dengan biaya Anda kehilangan ruang penyimpanan)
sumber