Apakah RAID5 lebih kuat daripada RAID1

12

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?

andynormancx
sumber

Jawaban:

22

RAID-5 adalah solusi toleransi kesalahan, bukan solusi integritas data .

Ingat bahwa RAID adalah singkatan dari Redundant Array of Inexpensive Disk . Disk adalah unit atom redundansi - RAID tidak terlalu peduli dengan data. Anda membeli solusi yang menggunakan sistem file seperti WAFL atau ZFS untuk mengatasi redundansi dan integritas data.

Pengontrol RAID (perangkat keras atau perangkat lunak) tidak memverifikasi paritas blok pada waktu baca. Ini adalah risiko utama menjalankan RAID-5 - jika Anda menemukan kegagalan media sebagian pada drive (situasi di mana blok buruk tidak ditandai "buruk"), Anda sekarang berada dalam situasi di mana data Anda diam-diam rusak

RAID-Z / ZFS milik Sun benar-benar memberikan integritas data ujung ke ujung , dan saya curiga sistem file dan sistem RAID lainnya akan menyediakan fitur ini di masa depan karena jumlah core yang tersedia pada CPU terus meningkat.

Jika Anda menggunakan RAID-5, Anda menjadi murah, menurut saya. RAID 1 berkinerja lebih baik, menawarkan perlindungan lebih besar, dan tidak memengaruhi produksi ketika drive gagal - untuk perbedaan biaya marjinal.

duffbeer703
sumber
6

Saya percaya bahwa jawabannya tergantung pada controller / software misalnya cukup umum untuk sistem mirroring untuk hanya membaca satu disk dari satu pasangan dan karena itu mampu memberikan data yang salah. Saya perhatikan bahwa jika hasil Anda bergantung pada data tersebut saat data ditulis ke kedua disk, maka akan rusak di kedua disk .....

Dari pdf di bawah SATAssure (tm) Plus:

"Teknologi SATAssure yang revolusioner memberikan perlindungan dan keandalan data kelas perusahaan menggunakan kapasitas besar, drive disk SATA yang murah. SATAssure beroperasi pada semua operasi baca, memastikan integritas data dan secara otomatis memperbaiki masalah secara real-time - semua tanpa penalti kinerja atau kapasitas yang ditemukan pada tradisional sistem penyimpanan. Kurangi RMA drive dengan kemampuan baru untuk menggerakkan siklus masing-masing drive. "

Sangat menarik bahwa beberapa manufaktur membuat keributan tentang fakta bahwa mereka selalu menghitung paritas, ini membuat saya berpikir bahwa itu relatif tidak umum pada pengontrol perangkat keras. Juga perlu dicatat bahwa sistem seperti ZFS dan WAFL (netapp) melakukan perhitungan paritas untuk setiap pembacaan.

James
sumber
Tautan itu terlihat menarik, tetapi apakah sebenarnya secara eksplisit mengatakan di mana saja pada halaman itu atau brosur bahwa mereka menghitung ulang paritas pada semua bacaan?
andynormancx
Saya menambahkan kutipan dari pdf. Perhatikan bahwa kotak S2A adalah kelas atas yang tenang.
James
3

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.

David Mackintosh
sumber
Saya tidak akan menggunakan istilah "lebih efektif" ... "lebih banyak kapasitas" akan lebih tepat. Dalam pikiran saya, solusi yang membuatnya lebih mungkin bahwa saya akan kehilangan data saya tidak lebih efektif.
duffbeer703
Semuanya adalah tradeoff nilai-biaya. RAID-5 lebih hemat-biaya penyimpanan, sementara RAID-1 atau RAID-1 + 0 (0 + 1) lebih kuat-efektif.
David Mackintosh
Alasan lain untuk memilih 1 + 0 lebih dari 0 + 1 adalah bahwa 1 + 0 dapat bertahan 4 dari 6 kemungkinan "drive kedua gagal sebelum drive pertama gagal diganti dan array dibangun kembali" skenario di mana 0 + 1 hanya dapat bertahan hidup 2 dari 6. Meskipun 0 +1 dapat bertahan dari kegagalan pengontrol pada satu lengan (di mana 0 +1 tidak dapat) ini jauh lebih jarang daripada kegagalan drive (bahkan kegagalan beberapa drive).
David Spillett
RAID-DP (implementasi paritas ganda NetApp) adalah RAID-6. RAID-6 (tidak seperti RAID-5) didefinisikan secara fungsional sebagai RAID yang dapat bertahan dari dua kegagalan disk. RAID-DP berbeda dari RAID-6 pada umumnya tidak mendistribusikan paritas - WAFL tidak menulis secara acak, sehingga mendistribusikan paritas tidak memberikan manfaat apa pun.
Kapten Segfault
3

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.

carlito
sumber
0

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

Ben Cepat
sumber
Dia berbicara tentang paritas. Dia mengklaim bahwa pada RAID5 informasi paritas diambil pada membaca dan dibandingkan dengan data yang berasal dari disk lain untuk memeriksa bahwa tidak ada kesalahan baca.
andynormancx
5
Saya tidak setuju dengan rekomendasi Anda tentang peranti penangkap keras RAID atas perangkat lunak dalam semua kasus. Dengan perangkat keras modern, RAID perangkat lunak dapat secepat perangkat keras jika server Anda memiliki banyak CPU cadangan (yang akan selalu saya miliki). Juga, perangkat keras RAID memiliki beberapa kelemahan, yang utama berada dalam situasi pemulihan Anda memerlukan kartu RAID yang cocok. Dengan perangkat lunak RAID Anda dapat menarik drive keluar dari mesin, memasukkannya ke drive lain dan menjauh tanpa mendapatkan kartu RAID baru yang persis sama dengan yang lama.
andynormancx
Saya mencoba untuk sampai ke bawah apa konteks yang dia bicarakan. Seperti yang saya pahami, checksum digunakan pada penulisan disk (terlepas dari RAID). Parity digunakan untuk menempatkan potongan data pada disk yang berbeda, dan untuk membangun kembali sebuah array jika terjadi kegagalan disk. Paritas tidak digunakan pada semua tingkatan RAID
Ben Cepat
1
Silakan lihat en.wikipedia.org/wiki/… untuk diskusi tentang perangkat lunak Vs perangkat keras RAID Jelas, implementasi yang Anda pilih tergantung pada lingkungan dan persyaratan Anda. Preferensi saya adalah hardware RAID atas perangkat lunak RAID
Ben Cepat
Saya mengerti, lupa saya pernah menyebutkan checksum. Saya telah memperbarui pertanyaan untuk menjernihkan kebingungan. Pertanyaannya adalah semua tentang apakah sistem RAID5 biasanya memeriksa data paritas saat dibaca.
andynormancx
0

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.

Itu akan tergantung pada jenis implementasi raid (hw / sw), disk, controller raid jika ada, dan fitur-fiturnya.

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.

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.

So the question is, what do RAID5/RAID1 systems in the real world

sebenarnya? Apakah sistem RAID5 memeriksa data paritas saat dibaca? Apakah ada sistem RAID1 yang membaca dari semua drive dan membandingkan data saat dibaca?

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.

dyasny
sumber
Saya khawatir Anda belum menjawab pertanyaan, yang sangat tepat tentang apa implementasi nyata sebenarnya dari RAID5 sehubungan dengan memeriksa data paritas saat dibaca.
andynormancx
0

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.

wfaulk
sumber
0

Apakah sistem RAID5 memeriksa data paritas saat dibaca?

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.

Kapten Segfault
sumber
0

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
Beberapa hal menarik, tetapi Anda telah mengulangi kesalahan RAID1 yang saya dengar sepanjang waktu. RAID1 tidak harus berarti bahwa ia hanya dapat bertahan dari kegagalan disk tunggal. Anda tidak harus memiliki hanya dua disk di array RAID1 Anda. Misalnya Anda memiliki array RAID1 dengan 3 disk, ia akan selamat dari dua kegagalan disk dan kinerja baca juga akan meningkat ( jika sistem RAID Anda membaca dari beberapa drive saat dibaca).
andynormancx
-1

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.

sybreon
sumber
Saya khawatir jawaban Anda sama dengan "Saya tidak tahu apakah ada implementasi RAID5 yang memeriksa paritas saat dibaca" sehingga tidak menjawab pertanyaan.
andynormancx
Ini adalah jawaban yang valid karena tidak ada yang akan tahu pasti kecuali orang yang benar-benar menulis driver.
sybreon
-2

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)

mrt181
sumber
1
Saya khawatir ini tidak benar-benar menjawab pertanyaan saya, pertanyaan saya sangat tepat tentang apakah implementasi RAID5 khas memeriksa data paritas saat dibaca. Dan sebagai catatan, RAID1 tidak membutuhkan jumlah disk yang genap. Anda bisa dengan senang hati memiliki array RAID1 dengan lebih dari dua disk, sehingga meningkatkan redundansi sekaligus mengurangi kecepatan menulis.
andynormancx
1
"Pengontrol selalu memeriksa apa yang ditulis dan dibaca dari disk." Ini bukan kasus controller dapat membaca dari kedua disk tetapi beberapa pengontrol mengembalikan data pertama yang mereka dapatkan.
James
Saya pikir itu mungkin untuk mengatakan bahwa RAID1 membutuhkan jumlah disk yang genap, dan bahwa mirror ketiga adalah sesuatu selain RAID1. Begitu sedikit implementasi yang mendukung mirror ketiga yang terminologinya tidak pernah distandarisasi.
carlito