Bagaimana cara kerja parity pada array RAID-5?


31

Saya ingin membangun array RAID kecil yang bagus untuk cadangan khusus. Saya ingin memiliki sekitar 2-4TB ruang yang tersedia, karena saya memiliki kebiasaan kecil yang jahat untuk mendigitalkan semuanya. Jadi, saya membutuhkan banyak penyimpanan dan banyak redundansi jika terjadi kegagalan drive. Saya pada dasarnya juga akan membuat cadangan /homefolder 2-3 komputer menggunakan salah satu klon "Mesin Waktu" untuk Linux. Array ini akan dapat diakses melalui jaringan lokal saya melalui SSH.

Saya mengalami kesulitan memahami bagaimana RAID-5 mencapai kesetaraan dan berapa banyak drive yang sebenarnya diperlukan. Orang akan menganggap bahwa itu membutuhkan 5 drive, tetapi saya bisa saja salah. Sebagian besar diagram yang saya lihat hanya membingungkan saya. Tampaknya ini adalah cara kerja RAID-5, perbaiki saya karena saya yakin saya tidak memahami dengan benar:

/---STORAGE---\    /---PARITY----\
|   DRIVE_1   |    |   DRIVE_4   |
|   DRIVE_2   |----|     ...     |
|   DRIVE_3   |    |             |
\-------------/    \-------------/

Tampaknya drive 1-3 muncul dan berfungsi sebagai drive tunggal besar ( capacity * number_of_drives) dan drive paritas mencadangkan drive tersebut. Apa yang tampak aneh bagi saya adalah bahwa saya biasanya melihat drive penyimpanan 3+ dalam diagram hanya 1 atau 2 drive paritas. Katakanlah kita menjalankan 4 1TB drive dalam array RAID-5, 3 menjalankan penyimpanan dan 1 menjalankan paritas, kita memiliki penyimpanan aktual 3TB, tetapi hanya memiliki 1TB paritas !?

Saya tahu saya kehilangan sesuatu di sini, dapatkah seseorang membantu saya? Juga, untuk kasus penggunaan saya, apa yang lebih baik, RAID-5 atau RAID-6? Toleransi kesalahan adalah prioritas tertinggi bagi saya pada saat ini, karena ini akan berjalan di jaringan hanya untuk digunakan di rumah, kecepatan tidak sangat penting.

Jawaban:


30

Itu hanya XOR masing-masing bit yang sesuai dari setiap drive - Jika Anda kehilangan drive apa pun, Anda dapat membangun kembali data yang hilang.

Untuk latar belakang:

A B (A XOR B)
0 0    0
1 1    0
0 1    1
1 0    1

Asumsikan bahwa D adalah XOR dari kolom lainnya, maka selama Anda hanya kehilangan satu drive, Anda dapat mengetahui apa yang hilang.

A B C D
1 0 0 1
0 1 0 1
1 1 0 0

Beberapa kali stripe bit akan didistribusikan di seluruh drive, tetapi konsepnya sama.

Jadi untuk RAID-5, tidak peduli berapa banyak drive, Anda hanya perlu 1 drive untuk paritas yang sama atau lebih besar dari drive terkecil dalam array yang ingin Anda RAID.

RAID-5 untuk penggunaan pribadi mungkin yang terbaik karena kompleksitas komputasi jauh lebih rendah daripada RAID-6.

RAID-6 lebih rumit menggunakan Galois Fields untuk menghitung paritas. Dan itu bisa membebani perhitungan paritas. Namun, Anda dapat kehilangan lebih banyak drive, tetapi jika Anda membangun kembali array Anda segera setelah Anda mendapatkan satu kegagalan, Anda harus tetap menggunakan RAID-5.


Jawaban yang sangat bagus. Saya berpikir pada skala yang terlalu besar, pada basis hard-disk lengkap yang sebenarnya, daripada level-bit. Jadi apakah RAID-5 menggunakan drive khusus untuk paritas, atau lebih tepatnya semua drive untuk paritas? Saya bingung soal itu.
Naftuli Kay

2
Saya percaya pendekatan modern adalah mendistribusikan paritas secara diagonal di semua drive. Ini memiliki efek mempercepat waktu baca ke bit paritas karena beberapa permintaan IO dapat dikirim secara paralel ke drive yang berbeda, tetapi jangan mengutip saya tentang itu.
Matt

Apakah ada rumus matematika yang dapat saya gunakan untuk menentukan kapasitas yang diberikan xdrive dan yGB yang tersedia di setiap drive?
Naftuli Kay

2
Ya, itu adalah (ukuran drive terkecil) * (jumlah drive dalam array - 1)
Matt

1
Jika paritasnya hanya XOR dari dua disk lain, bagaimana Anda tahu yang mana dari dua disk yang rusak? Tidakkah sedikit membalik pada salah satu disk menghasilkan sedikit perubahan pada paritas?
Jay Sullivan

8

Inilah yang saya pikir adalah diagram yang lebih baik untuk menunjukkan bagaimana paritas bekerja di RAID4 dan RAID5

RAID4

Disk1  Disk2  Disk3  Disk4
----------------------------
data1  data1  data1  parity1
data2  data2  data2  parity2
data3  data3  data3  parity3
data4  data4  data4  parity4

RAID5

Disk1   Disk2   Disk3   Disk4
----------------------------
parity1 data1   data1   data1   
data2   parity2 data2   data2  
data3   data3   parity3 data3
data4   data4   data4   parity4


4

Saya akan merekomendasikan membaca artikel Wikipedia ini pada Raid 5 dan Raid 6

http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5_parity_handling

RAID 5 menulis blok paritas di setiap strip, jadi untuk Strip A dari 4 disk array ia menulis cek paritas pada disk ke-4, dengan Data pada disk 1, 2 dan 3

Untuk Strip B, blok paritas ada di disk 3, dengan data di disk 1,2 dan 4 .. dll.

Jika mengatakan disk 4 gagal, data dapat dipulihkan untuk Strip B saat Anda mengetahui data pada disk 1 dan 2 dan periksa paritasnya pada disk 3.

Jika strip B memiliki paritas "2" dan disk 1 memiliki data "1" dan data disk 2 "0" maka disk 4 harus memiliki data yang sama dengan "1" sehingga disk tersebut ditulis dengan data = "1"

Seluruh disk dapat dibuat ulang dengan cara ini, RAID 6 memperluas ini dengan memiliki 2 blok partai per strip.

Mengenai ruang untuk Raid 5 Anda hanya akan kehilangan satu disk senilai ruang hingga paritas, karena hanya menulis pada blok paritas per strip, sedangkan dengan Raid 6 Anda akan kehilangan 2 disk tetapi juga dapat kehilangan dua disk daripada yang Anda bisa lepas di Serangan 5;)

Artikel Wikipedia menjelaskan ini lebih baik!


3

RAID 5 menggunakan satu drive untuk paritas, terlepas dari berapa banyak drive data yang ada dalam array. Ini berarti bahwa itu menjadi lebih efisien, dalam hal ruang yang dapat digunakan, semakin banyak drive yang ditambahkan.

Parity dicapai dengan melakukan operasi XOR melintasi blok yang sama di setiap drive; isi dari parity drive disesuaikan sehingga semua drive XOR menjadi nol . Ini berarti bahwa RAID 5 dibatasi oleh kapasitas terkecil dari semua drive dalam array.

RAID 6 serupa kecuali bahwa dua kegagalan drive simultan dapat ditoleransi. Ini berguna karena proses " resilver " array setelah kegagalan drive tunggal mungkin cukup menegangkan untuk menyebabkan drive kedua gagal.


Jadi itu pada dasarnya berarti bahwa saya dapat memiliki 4 drive 2TB dan memiliki 6TB penyimpanan yang efektif dan berlebihan?
Naftuli Kay

@TK Kocheran Dengan RAID 5, ya. Perhatikan bahwa penyimpanan yang efektif akan sedikit kurang karena sistem file. Sebagai contoh, NAS saya dengan 4 drive 2TB di RAID-Z1 (versi RAID 5 ZFS) memiliki ruang yang dapat digunakan sebesar 5.18TB.
sblair

Ya, tentu saja :) Selalu terjadi seperti itu. Pertanyaan selanjutnya adalah filesystem apa yang digunakan ...
Naftuli Kay

0

Jika toleransi kesalahan adalah tujuan Anda, RAID-6 akan memberikan redundan yang cukup untuk kehilangan dua drive. Biasanya RAID-5 hanya akan mentolerir kegagalan satu drive.


Berapa rasio drive terhadap paritas (total penyimpanan) untuk RAID-6? drive_size * (drive_count - 2)?
Naftuli Kay

1
Selain toleransi kesalahan untuk drive kedua yang rusak sebelum Anda dapat mengganti yang pertama, ada satu situasi lain yang sangat bagus untuk itu dan saya telah menemukan lebih dari sekali: Drive rusak dalam array RAID, dan karenanya drive baru dipesan. Beberapa pria acak yang tidak tahu apa-apa tentang array RAID masuk ke ruang server dengan drive baru di tangan, mengacaukan penomoran, dan mengeluarkan drive yang salah dari array untuk penggantian. Di bawah RAID5, array Anda kacau di sana. RAID6 berarti Anda masih dapat memulihkan.
camster342
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.