Mengapa RAID 1 + 6 bukan tata letak yang lebih umum?

17

Mengapa level RAID bersarang 1 + 5 atau 1 + 6 hampir tidak pernah terdengar? The tingkat bersarang RAID artikel Wikipedia saat ini hilang bagian mereka. Saya tidak mengerti mengapa mereka tidak lebih umum daripada RAID 1 + 0, terutama bila dibandingkan dengan RAID 1 + 0 mirroring tiga.

Jelas bahwa waktu pembangunan kembali menjadi semakin bermasalah karena kapasitas drive meningkat lebih cepat daripada kinerja atau keandalannya. Saya diberitahu bahwa RAID 1 membangun kembali lebih cepat dan bahwa RAID 0 array RAID 1 pasang menghindari masalah, tetapi tentunya demikian juga dengan RAID 5 atau 6 array RAID 1 pasang. Saya setidaknya berharap mereka menjadi alternatif umum untuk RAID 1 + 0.

Untuk 16 dari 1TB drive, berikut adalah perhitungan saya tentang kemungkinan naif untuk menggunakan cadangan, yaitu dengan asumsi penyederhanaan bahwa drive independen dengan probabilitas genap:

RAID | storage | cumulative probabilities of resorting to backup /m
 1+0 |     8TB | 0, 67, 200, 385, 590, 776, 910, 980, 1000, 1000, 1000
 1+5 |     7TB | 0,  0,   0,  15,  77, 217, 441, 702,  910, 1000, 1000
 1+6 |     6TB | 0,  0,   0,   0,   0,   7,  49, 179,  441,  776, 1000
(m = 0.001, i.e. milli.)

Jika ini benar maka cukup jelas bahwa RAID 1 + 6 secara luar biasa lebih dapat diandalkan daripada RAID 1 + 0 hanya dengan pengurangan 25% dalam kapasitas penyimpanan. Seperti halnya pada umumnya, throughput penulisan teoritis (tidak termasuk waktu pencarian) adalah kapasitas penyimpanan / ukuran array × jumlah drive × throughput tulis dari drive paling lambat dalam array (level RAID dengan redundansi memiliki amplifikasi tulis yang lebih tinggi untuk penulisan yang jangan mengisi garis tetapi ini tergantung pada ukuran chunk), dan throughput baca teoretis adalah jumlah dari throughput baca dari drive dalam array (kecuali bahwa RAID 0, RAID 5, dan RAID 6 masih secara teori dapat dibatasi oleh drive yang paling lambat, paling lambat 2, dan 3 paling lambat membaca throughput masing-masing). Yaitu, dengan asumsi drive identik, itu akan menjadi masing-masing 8 ×, 7 ×,

Selain itu, pertimbangkan RAID 0 empat kali lipat dari RAID 1 tiga kali lipat, yaitu RAID 1 + 0 mirroring tiga kali lipat dari 12 drive, dan RAID 6 sextuple dari pasangan RAID 1, yaitu RAID 1 + 6 dari 12 drive. Sekali lagi, ini adalah drive 1TB yang identik. Kedua tata letak memiliki jumlah drive yang sama (12), jumlah kapasitas penyimpanan yang sama (4TB), proporsi redundansi yang sama (2/3), throughput tulis maksimum yang sama (4 ×), dan throughput baca maksimum yang sama ( 12 ×). Berikut perhitungan saya (sejauh ini):

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | 0, 0, 18,  ?,   ?,   ?,   ?,   ?, 1000
1+6 (6×2) | 0, 0,  0,  0,   0,  22, 152, 515, 1000

Ya, ini mungkin terlihat seperti berlebihan, tetapi di mana triple mirroring digunakan untuk memisahkan klon untuk cadangan, RAID 1 + 6 juga dapat digunakan, hanya dengan membekukan dan menghapus 1 setiap drive dari semua kecuali 2 RAID. 1 pasang, dan saat melakukannya, masih memiliki keandalan yang jauh lebih baik ketika terdegradasi daripada RAID 1 + 0 array yang terdegradasi. Berikut adalah perhitungan saya untuk 12 drive yang terdegradasi oleh 4 dengan cara ini:

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | (0, 0, 0, 0), 0, 143, 429, 771, 1000
1+6 (6×2) | (0, 0, 0, 0), 0,   0,  71, 414, 1000

Namun, membaca throughput dapat diturunkan hingga 6 × selama waktu ini untuk RAID 1 + 6, sedangkan RAID 1 + 0 hanya dikurangi menjadi 8 ×. Namun demikian, jika drive gagal saat array dalam keadaan terdegradasi, array RAID 1 + 6 akan memiliki peluang 50–50 untuk tetap di sekitar 6 × atau dibatasi lebih lanjut hingga 5 ×, sedangkan array RAID 1 + 0 akan dibatasi hingga kemacetan 4 × . Throughput penulisan seharusnya tidak terpengaruh (bahkan dapat meningkat jika drive yang diambil untuk cadangan adalah drive yang paling lambat).

Bahkan, keduanya dapat dilihat sebagai 'mirroring tiga' karena array RAID 1 + 6 yang terdegradasi mampu memisahkan kelompok RAID 6 tambahan dari 4 drive. Dengan kata lain, tata letak RAID 1 + 6 12-drive ini dapat dibagi menjadi 3 array RAID 6 yang terdegradasi (namun fungsional)!

Jadi apakah hanya sebagian besar orang yang tidak masuk matematika secara terperinci? Apakah kita akan melihat lebih banyak RAID 1 + 6 di masa depan?

James Haigh
sumber
2
Kalkulatorputput Anda tampaknya tidak memperhitungkan amplifikasi tulis untuk membuat paritas.
JamesRyan
1
@ JamesRyan: Ya, saya memang menganggap bahwa paritas perlu ditulis. Untuk itulah "kapasitas penyimpanan / ukuran larik" adalah - kebalikan dari ini adalah faktor amplifikasi tulis, tidak termasuk amplifikasi tulis lebih lanjut yang terkait dengan drive solid-state. Perhatikan bahwa ini termasuk amplifikasi penulisan redundansi RAID 1 juga. Pada dasarnya, faktor amplifikasi tulis sama dengan kebalikan dari 1 dikurangi proporsi redundansi. Jadi 50% redundansi memberikan faktor amplifikasi tulis 2; 62,5% (10/16) redundansi memberikan faktor amplifikasi tulis ~ 2,67 (16/6).
James Haigh
1
tidak ada yang salah. Setiap penulisan RAID6 membutuhkan 6 IOs dan setiap penulisan RAID1 membutuhkan 2 IO, ini adalah multiplikatif. Jadi dalam RAID 1 + 6 setiap penulisan akan membutuhkan 12 IO, untuk RAID 10 adalah 2 IO. Throughput penulisan pada 12 drive akan menjadi 1x untuk RAID1 + 6 dan 6x untuk RAID10!
JamesRyan
@JamesRyan: Oh, saya melihat ke mana Anda akan pergi dengan ini sekarang - untuk menulis yang kurang dari garis penuh, faktor amplifikasi tulis dapat berlipat ganda untuk RAID 1 + 6 sehingga mengurangi separuh throughput penulisan maksimum. Untuk strip penuh, ya ada 12 tulisan dalam contoh 6 × 2, tetapi Anda lupa bahwa ini adalah untuk data 4 potongan. Untuk masing-masing senilai 4, 3, 2, 1 bongkahan, faktor amplifikasi tulis adalah (6 × 2) / 4 = 3, (5 × 2) / 3 = ~ 3,33, (4 × 2) / 2 = 4, ( 3 × 2) / 1 = 6, memberikan throughput tulis maksimum 4 ×, 3,6 ×, 3 ×, 2 ×. Untuk RAID 1 + 0 4 × 3 itu (4 × 3) / 4, (3 × 3) / 3, (2 × 3) / 2, (1 × 3) / 1 memberikan konstanta 4 ×. ...
James Haigh
2
Anda menyatakan berdasarkan perhitungan Anda bahwa RAID1 + 6 memiliki throughput tulis yang sama dengan RAID10 dengan tiga kali lipat. Pada kenyataannya, RAID1 + 6 bahkan tidak menulis throughput RAID10 dari jarak jauh sehingga perhitungan Anda atau asumsi yang mereka gunakan salah . Saya berusaha membantu Anda memahami mengapa, jika Anda menolak untuk mendengarkan maka kami mungkin membuang-buang waktu kami, tetapi Andalah yang menyia-nyiakannya.
JamesRyan

Jawaban:

17

Secara umum saya akan mengatakan RAID 1 + 0 akan cenderung lebih banyak digunakan daripada 1 + 5 atau 1 + 6 karena RAID 1 + 0 cukup andal dan memberikan kinerja yang sedikit lebih baik dan penyimpanan yang lebih bermanfaat.

Saya pikir sebagian besar orang akan menganggap kegagalan pasangan RAID 1 penuh dalam grup RAID 1 + 0 sebagai peristiwa yang sangat langka yang layak untuk dicadangkan untuk cadangan - dan mungkin tidak terlalu antusias untuk mendapatkan di bawah 50% dari fisik mereka. disk sebagai ruang yang dapat digunakan.

Jika Anda membutuhkan keandalan yang lebih baik daripada RAID 1 + 0, maka lakukanlah! ..tapi kebanyakan orang mungkin tidak membutuhkannya.

Shane Madden
sumber
1
Masalah yang saya miliki dengan RAID 1 + 0 adalah bahwa ia memiliki rasio keandalan untuk penyimpanan yang buruk. Jika RAID 6 diperluas secara sewenang-wenang ke sejumlah paritas (di bawah n - 1) maka untuk drive yang sama Anda dapat mencapai peningkatan penyimpanan dan keandalan yang lebih baik daripada RAID 1 + 0. Untuk contoh di atas, jika dimungkinkan untuk memiliki RAID 6 dengan 4 paritas, Anda akan memiliki 50% lebih banyak penyimpanan dan throughput penulisan maksimum daripada RAID 1 + 0 namun memiliki keandalan yang sangat tinggi. RAID 6 dengan 3 atau 4 paritas akan memiliki keandalan-penyimpanan yang baik.
James Haigh
4
@JamesHaigh RAID 6 vs RAID 1 + 0 adalah diskusi yang jauh berbeda dari RAID 1 + 6 vs RAID 1 + 0, Anda agak mengubah topik pembicaraan. Raidz3 ZFS sepertinya akan menjadi jalan Anda? Ngomong-ngomong, untuk poin Anda, ada beberapa keuntungan kinerja yang dipertahankan RAID 1 + 0 di atas RAID 6, seperti penulisan blok tunggal kecil yang perlu menyentuh jumlah drive yang jauh lebih kecil (dan kembali ke raidz3, ZFS menangani ini dengan cerdas dengan menulis banyak salinan lengkap alih-alih menulis ke semua disk untuk penulisan kecil)
Shane Madden
Maaf, ya, saya pikir inilah yang sebenarnya saya kejar. Sejak komentar terakhir saya telah menulis pertanyaan baru khusus tentang RAID dengan 3 paritas atau lebih . Itu akan lebih baik daripada RAID 1 + 6 saya pikir. Akan lebih fleksibel dan sederhana untuk mendapatkan trade-off yang diinginkan. Anda mungkin ingin melanjutkan ini pada pertanyaan itu.
James Haigh
3
RAID 6 tidak dapat diperpanjang secara linear, karena tidak berfungsi seperti itu. Perhitungan sindrom untuk paritas kedua tidak akan skala sepele ke pihak ketiga. Tetapi Anda dapat dengan mudah melakukan kelompok RAID 6 yang lebih kecil - tidak ada alasan nyata yang perlu Anda lakukan 14 + 2, dan sebaliknya bisa melakukan 2 + 2 atau 4 + 2 dan mendapatkan banyak keandalan.
Sobrique
1
@ JamesHigh Apa yang Anda inginkan adalah raidz8 12 arah. Berdasarkan logika yang masuk ke perhitungan paritas, itu akan mematok prosesor untuk selamanya bahkan dengan data sepele. Paritas tunggal pada dasarnya adalah XOR (mudah). Paritas ganda adalah sesuatu yang berkaitan dengan kotak (tidak sulit, tetapi tidak mudah). Triple parity adalah berbasis kubus atau serupa (keras). 4, 5, 6, 7, atau 8 paritas menuntut perhitungan yang lebih besar (dengan skala eksponensial) (yang mungkin membutuhkan komputer kuantum untuk mengimbangi). Ingatlah bahwa seiring pertumbuhan bentuk, ada peningkatan NOL di IOPS. Untuk media, siapa yang peduli? Untuk VM, itu membunuh.
killermist
16

Jawaban praktisnya terletak di persimpangan spesifikasi pengontrol RAID perangkat keras, ukuran disk rata-rata, faktor bentuk drive, dan desain server.

Sebagian besar pengontrol RAID perangkat keras terbatas pada level RAID yang didukungnya. Berikut adalah opsi RAID untuk pengontrol HP ProLiant Smart Array:

[raid=0|1|1adm|1+0|1+0adm|5|50|6|60]

Catatan: "adm" hanya mirroring tiga

Dukungan pengontrol RAID LSI: 0, 1, 5, 6, 10, 50, and 60

Jadi pengendali ini hanya mampu RAID 50 dan 60 sebagai level bersarang. LSI ( née Dell PERC ) dan HP terdiri dari sebagian besar pasar adaptor penyimpanan server perusahaan. Itulah alasan utama Anda tidak melihat sesuatu seperti RAID 1 + 6, atau RAID 61 di lapangan.

Di luar pertimbangan itu, level RAID yang bersarang di luar RAID 10 memerlukan jumlah disk yang relatif besar. Dengan meningkatnya kapasitas drive yang tersedia saat ini (dengan drive SAS dan SATA nearline 3,5 "), ditambah dengan fakta bahwa banyak sasis server dirancang di sekitar sangkar drive 8 x 2,5", tidak ada banyak peluang untuk mengkonfigurasi secara fisik RAID 1+ 6, atau RAID 61.

Area di mana Anda mungkin melihat sesuatu seperti RAID 1 + 6 akan menjadi solusi RAID perangkat lunak chassis besar. Linux MD RAID atau ZFS pasti mampu melakukannya. Tetapi pada saat itu, kegagalan drive dapat dikurangi dengan disk panas atau dingin. Keandalan RAID tidak banyak masalah akhir-akhir ini, asalkan Anda menghindari level RAID dan kombinasi perangkat keras yang beracun (mis., Disk RAID 5 dan 6TB). Selain itu, kinerja membaca dan menulis akan diabstraksi dengan lapisan tiering dan caching. Beban kerja penyimpanan rata-rata biasanya mendapat manfaat dari satu atau yang lain.

Jadi pada akhirnya, sepertinya kebutuhan / permintaan tidak ada.

putih
sumber
1
Ada permintaan dalam bentuk replikasi array. Saya tahu beberapa situs yang melakukan multi-situs DR, yang secara praktis berbicara RAID 10 atau 5 atau 6 direplikasi ke situs jarak jauh (RAID 10 atau 5 atau 6). Tidak sedikit - di luar tingkat keandalan disk tertentu, prosesor, pengontrol, jaringan, daya, AC, pusat data, api-api merupakan ancaman yang lebih besar terhadap keandalan Anda.
Sobrique
1
Saya tidak berpikir OP bahkan mempertimbangkan replikasi atau penggunaan multi-situs.
ewwhite
1
Tidak, mungkin juga tidak. Seperti yang Anda katakan - tidak ada permintaan karena itu berlebihan. Ini adalah satu-satunya use case yang bisa saya pikirkan di mana itu tidak berlebihan :)
Sobrique
Saya (secara singkat) telah mengkonfigurasi sesuatu seperti serangan 6 + 1- sebuah syncmirror lokal Netapp akan membuat salinan yang identik dari dirinya sendiri dan membaca multipleks di kedua plexes, sementara mirroring menulis. Ini sebagian besar digunakan untuk memigrasi Netapp V-Series ke LUN backend baru, namun jika saya ingin menggandakan keandalan saya, saya bisa melakukannya dengan ini.
Basil
12
  • Anda memiliki pengembalian yang menurun pada keandalan. RAID 6 sangat tidak mungkin untuk menambah kegagalan bahkan pada drive SATA jahat dengan tingkat UBER 1 banding 10 ^ 14. Pada drive FC / SAS, UBER Anda adalah 1 dalam 10 ^ 16 dan Anda juga mendapatkan kinerja yang jauh lebih baik.

  • Keandalan grup RAID tidak melindungi Anda dari penghapusan tidak disengaja. (jadi Anda tetap membutuhkan cadangan)

  • melampaui tingkat RAIDing tertentu, peluang Anda untuk kegagalan gabungan pada disk menjadi lebih rendah daripada kegagalan gabungan infrastruktur pendukung (daya, jaringan, kebocoran AC, dll.)

  • Tulis penalti. Setiap tulisan yang masuk pada RAID 61 Anda akan memicu 12 operasi IO (selesai secara naif). RAID 6 sudah menyakitkan dalam skenario 'tingkat rendah' ​​dalam hal IOP per penulisan acak TB. (dan di tingkat yang lebih tinggi, tingkat kegagalan Anda 100x lebih baik)

  • ini bukan 'pengurangan 25%' itu pengurangan 25% lebih lanjut . 16TB Anda berubah menjadi 6TB. Jadi Anda mendapatkan 37,5% penyimpanan yang dapat digunakan. Anda membutuhkan disk 3x lebih banyak per kapasitas, dan ruang pusat data 3x lebih banyak. Anda mungkin akan mendapatkan lebih banyak keandalan dengan hanya membuat set RAID6 yang lebih kecil. Saya belum melakukan perhitungan angka, tetapi coba - misalnya jumlah RAID 6 dalam 3x 3 + 2 set (15 drive, lebih sedikit overhead penyimpanan daripada RAID10 Anda). Atau melakukan mirror 3 way sebagai gantinya.

Karena itu - ini lebih umum daripada yang Anda pikirkan untuk melakukannya untuk multi-situs DR. Saya menjalankan array penyimpanan yang direplikasi di mana saya punya kelompok RAID5 / 6 / DP RAID asinkron atau sinkron ke situs DR. (Jangan melakukan sinkronisasi jika Anda mungkin bisa menghindarinya - itu terlihat bagus, itu sebenarnya mengerikan).

Dengan NetApps saya, itu adalah metrocluster dengan beberapa agregat cermin. Dengan VMAX saya, kami telah Symmetrix Remote Data Facility (SRDF). Dan 3PAR saya melakukan copy jarak jauh.

Itu mahal, tetapi menyediakan tingkat DR 'data center catching fire'.

Mengenai mirror ganda - Saya sudah menggunakannya, tetapi bukan sebagai langkah-langkah ketahanan RAID langsung, melainkan sebagai klon penuh sebagai bagian dari strategi cadangan. Sinkronkan mirror ketiga, pisahkan, pasang di server yang terpisah dan buat cadangannya menggunakan infrastruktur yang sama sekali berbeda. Dan terkadang memutar cermin ketiga sebagai opsi pemulihan.

Poin yang saya coba sampaikan adalah bahwa dalam pengalaman langsung saya sebagai admin penyimpanan - dalam ~ 40.000 spindle estate (ya, kami mengganti puluhan drive setiap hari) - kami harus pergi ke cadangan untuk berbagai alasan dalam 5 tahun terakhir, tetapi tidak satupun dari mereka yang gagal RAID grup. Kami memperdebatkan manfaat relatif dan waktu pemulihan yang dapat diterima, titik pemulihan, dan jendela pemadaman. Dan yang mendasari semua ini SELALU adalah biaya ketahanan ekstra.

Array kami semua scrub dan kegagalan media memprediksi, dan secara agresif menyimpan dan menguji drive.

Bahkan jika ada implementasi RAID yang sesuai, biaya-manfaatnya tidak ada. Uang yang dihabiskan untuk ruang penyimpanan akan lebih baik diinvestasikan dalam retensi yang lebih lama atau siklus cadangan yang lebih sering. Atau komunikasi yang lebih cepat. Atau spindle yang umumnya lebih cepat, karena meskipun dengan angka ketahanan yang sama, pembangunan kembali suku cadang yang lebih cepat meningkatkan probabilitas kegagalan gabungan Anda.

Jadi saya pikir saya akan menawarkan jawaban untuk pertanyaan Anda:

Anda tidak sering melihat RAID 1 + 6 dan 1 + 5, karena manfaat biaya tidak menumpuk. Mengingat jumlah uang yang terbatas, dan mengingat kebutuhan untuk mengimplementasikan solusi cadangan, yang Anda lakukan hanyalah mengeluarkan uang untuk mengurangi frekuensi pemadaman Anda. Ada cara yang lebih baik untuk menghabiskan uang itu.

Sobrique
sumber
“Keandalan kelompok RAID tidak melindungi Anda dari penghapusan tidak disengaja. (jadi Anda tetap membutuhkan cadangan) ”- Saya tidak menyiratkan bahwa ini membuat cadangan tidak perlu (Saya sangat sadar bahwa RAID bukan cadangan ). Saya benar-benar menyiratkan yang sebaliknya dengan mengatakan "probabilitas kumulatif beralih ke cadangan" - Saya menganggap bahwa mengingat cadangan adalah praktik standar. Saya setuju dengan hal ini, namun, ini disajikan sebagai balasan atas alasan saya tentang RAID 1 + 6, yang tidak masuk akal.
James Haigh
"RAID 61" - RAID 6 + 1 akan menjadi array RAID 1 dari array RAID 6. Itu sarang terbalik, dan saya pikir itu akan memiliki keandalan yang jauh lebih sedikit. Yaitu, apa yang terjadi jika 3 drive gagal dalam array RAID 6 bersarang yang sama? Bukankah seluruh array RAID 6 yang bersarang perlu dibangun kembali? Drive yang sama bersarang sebagai RAID 1 + 6 akan mempertahankan kegagalan 3 drive yang sama tanpa mengambil offline drive yang berfungsi.
James Haigh
"Di luar level RAIDing tertentu, peluang Anda untuk kegagalan gabungan pada disk menjadi lebih rendah daripada kegagalan gabungan infrastruktur pendukung (daya, jaringan, kebocoran AC, dll.)"; “Ini merupakan pengurangan 25% lebih lanjut ” - Benar dan benar, ini adalah tata letak sarang yang berlebihan. Tapi mengapa satu orang Bumi menggunakan RAID 0 array dari RAID 1 tiga kali lipat? Terima kasih telah mengingatkan saya tentang RAID 1 + 0 mirroring tiga! "Saya belum melakukan angka-angka"; “Atau melakukan mirror 3 arah sebagai gantinya.” - Anda benar-benar harus melakukan beberapa perhitungan sebelum memberikan case pendukung sebagai sampel tandingan. Perhitungan ini harus dieksplorasi ...
James Haigh
1
Pengalaman langsung saya adalah ini - Saya memiliki 40.000 spindel di tanah saya, dalam berbagai konfigurasi. Kami belum mengalami kegagalan grup serangan dalam 5 tahun terakhir. Saya telah menggunakan mirror ganda, tetapi tidak untuk ketahanan - mereka untuk membuat salinan klon untuk alasan cadangan. Saya telah menggunakan replika multi-situs untuk alasan DR - yang saya gunakan - tetapi tidak ada yang diperlukan untuk kegagalan RG juga.
Sobrique
1
Anda salah paham apa itu hukuman penalti. Hanya untuk satu overwrite, Anda harus membaca dari dua perangkat paritas Anda, menghitung paritas, menulis kembali kepada Anda twp perangkat paritas dan blok target Anda. Jadi 6 IOs per 'tulis'. Ini bukan batasan perangkat lunak atau implementasi. Anda mengurangi sebagian dengan caching menulis yang baik, tetapi hanya sebagian.
Sobrique
3

Sistem modern dan canggih tidak menerapkan bentuk seperti itu karena terlalu rumit, sama sekali tidak perlu, dan bertentangan dengan kemiripan efisiensi.

Seperti yang telah ditunjukkan orang lain, perbandingan ruang mentah dengan ruang yang dapat digunakan pada dasarnya adalah 3: 1. Itu pada dasarnya adalah tiga salinan (dua salinan berlebihan). Karena biaya perhitungan "raid6" (dua kali lipat, jika dicerminkan), dan hilangnya IOPS yang dihasilkan, ini sangat tidak efisien. Dalam ZFS, yang dirancang dan disetel dengan sangat baik, solusi yang setara, berdasarkan kapasitas, adalah membuat strip cermin 3 arah.

Sebagai contoh, alih-alih cermin bentuk raid6 / raidz2 6-arah (total 12 drive), yang akan sangat tidak efisien (juga bukan sesuatu yang ZFS punya mekanisme untuk implementasikan), Anda akan memiliki cermin 3-arah 3 arah (juga 12 drive). Dan bukannya 1 drive senilai IOPS, Anda akan memiliki 4 drive senilai IOPS. Terutama dengan mesin virtual, itu perbedaan yang sangat besar. Bandwidth total untuk dua bentuk ini mungkin sangat mirip dalam urutan baca / tulis, tetapi garis cermin 3-arah pasti akan lebih responsif dengan baca / tulis acak.

Singkatnya: raid1 + 6 secara umum tidak praktis, tidak efisien, dan tidak mengejutkan bahwa tidak ada orang yang serius dengan penyimpanan yang ingin dikembangkan.

Untuk memperjelas perbedaan IOPS: Dengan cermin bentuk raid6 / raidz2, dengan setiap penulisan, ke-12 drive harus bertindak sebagai satu. Tidak ada kemampuan untuk bentuk total untuk membagi aktivitas menjadi beberapa tindakan yang beberapa bentuk dapat lakukan secara mandiri. Dengan strip cermin 3 arah, setiap penulisan mungkin merupakan sesuatu yang hanya harus ditangani oleh satu dari 4 cermin, sehingga penulisan lain yang masuk tidak harus menunggu seluruh bentuk omnibus untuk ditangani sebelum melihat tindakan selanjutnya. .

pembunuh kulit
sumber
2

Karena tidak ada yang mengatakannya secara langsung: Kinerja penulisan Raid6 tidak jauh lebih buruk. Ini mengerikan di luar deskripsi jika diletakkan di bawah beban.

Menulis berurutan adalah OK dan selama caching, menulis penggabungan dll dapat menutupinya, itu terlihat ok. Di bawah beban tinggi, hal-hal terlihat buruk dan ini adalah alasan utama pengaturan 1 + 5/6 hampir tidak pernah digunakan.

Florian Heigl
sumber
Saya setuju, tapi itu terutama karena apa yang Anda katakan hanyalah versi yang diringkas dari apa yang saya katakan. Dan tentu saja saya setuju dengan diri saya sendiri.
killermist
1

Mencari waktu

Masalahnya adalah bahwa, amplifikasi pencarian tulis berperilaku sangat berbeda dengan amplifikasi throughput tulis . Amplifikasi throughput tulis minimal dengan paritas terjadi ketika seluruh strip dituliskan sekaligus (sebut saja kata sifat ini 'strip penuh') namun amplifikasi pencarian tulis minimal terjadi, sebaliknya, ketika seluruh penulisan yang mengikuti pencarian di perangkat virtual cocok dengan sepotong tunggal. Sebelum masuk ke detail, hubungan lebih mudah disampaikan dalam bentuk tabulasi:

RAID | write throughput amplification factor | write seek amplification factor
     | full-stripe (e.g.) | single-chunk     | full-stripe  | single-chunk
   0 | 1           ;  1   | 1           ;  1 | n       ; 12 | 1           ;  1
   1 | n           ; 12   | n           ; 12 | n       ; 12 | n           ; 12
   5 | n/(n - 1)   ; ~1.1 | min [3, n]  ;  3 | n       ; 12 | min [3, n]  ;  3
   6 | n/(n - 2)   ;  1.2 | min [5, n]  ;  5 | n       ; 12 | min [5, n]  ;  5
*1+0 | n₁          ;  3   | n₁          ;  3 | n       ; 12 | n₁          ;  3*
 1+5 | n/(n₅ - 1)  ;  2.4 | expr₁       ;  5 | n       ; 12 | expr₁       ;  5
*1+6 | n/(n₆ - 2)  ;  3   | expr₂       ;  8 | n       ; 12 | expr₂       ;  8*
expr₁ = 2n₁ + min [1, n₅ - 2]
expr₂ = 3n₁ + min [2, n₆ - 3]

di mana n adalah jumlah total drive, n₁ adalah jumlah drive dalam grup RAID 1, dan n₅ dan n₆ adalah jumlah grup dalam array RAID 5 atau RAID 6 masing-masing. Contoh terkait dengan contoh 12-drive dalam pertanyaan (baris yang relevan adalah ' *bolded*'); contoh untuk level RAID 1 + 0, 1 + 5, 1 + 6 masing-masing adalah 4 × 3, 6 × 2, 6 × 2.

Perhatikan bahwa hanya faktor amplifikasi throughput tulis jalur penuh yang secara langsung terkait dengan proporsi redundansi. Kotak-kotak tunggal lebih rumit bagi mereka yang memiliki paritas. Mereka muncul karena menulis potongan tunggal memerlukan pembacaan mana yang paling mudah dari potongan paritas atau potongan data lainnya, sebelum menulis potongan paritas bersama dengan potongan data baru. (Mereka tidak langsung multiplikasi karena pembacaan yang diinduksi harus dikalikan dengan masing-masing throughput baca / cari faktor amplifikasi untuk RAID 1, keduanya 1; lihat di bawah.)

Sayangnya, memilih ukuran chunk yang meminimalkan amplifikasi throughput tulis ekstra ini memiliki efek samping yang sebenarnya memaksimalkanPenulisan mencari amplifikasi. Untuk tulisan kecil dengan waktu tulis yang dapat diabaikan dibandingkan dengan waktu mencari, kinerja penulisan garis-garis dengan ukuran potongan yang sangat kecil (menjadi garis-penuh) hanya 1 ×, seperti mirroring, karena memerlukan semua drive untuk mencari potongan untuk setiap penulisan dan throughput yang diperoleh dari memobilisasi semua drive ini tidak relevan. Ini telah membagi rasio waktu menulis untuk mencari waktu dengan jumlah drive dalam array, tetapi untuk menulis kecil ini sudah dapat diabaikan. Tidak masuk akal untuk menggunakan ukuran chunk yang sangat kecil sehingga membuat tulisan kecil menjadi full-stripe. Untuk menulis yang cukup kecil untuk merasakan efek pencarian, yang terbaik adalah mereka cocok dalam satu potongan.

RAID | large contiguous write throughput    | concurrent tiny writes throughput
     | full-stripe    | single-chunk        | full-stripe | single-chunk
   0 | n×       ; 12× | n×          ; 12×   | 1×     ; 1× | n×          ; 12×
   1 | 1×       ;  1× | 1×          ;  1×   | 1×     ; 1× | 1×          ;  1×
   5 | (n - 1)× ; 11× | max[n/3, 1]×;  4×   | 1×     ; 1× | max[n/3, 1]×;  4×
   6 | (n - 2)× ; 10× | max[n/5, 1]×;  2.4× | 1×     ; 1× | max[n/5, 1]×;  2.4×
*1+0 | n₀×      ;  4× | n₀×         ;  4×   | 1×     ; 1× | n₀×         ;  4×  *
 1+5 | (n₅ - 1)×;  5× | expr₃×      ;  2.4× | 1×     ; 1× | expr₃×      ;  2.4×
*1+6 | (n₆ - 2)×;  4× | expr₄×      ;  1.5× | 1×     ; 1× | expr₄×      ;  1.5×*
expr₃ = n/(2n₁ + min [1, n₅ - 2]) = max [n/(2n₁ + 1), n/(2n₁ + n₅ - 2)]
expr₄ = n/(3n₁ + min [2, n₆ - 3]) = max [n/(3n₁ + 2), n/(3n₁ + n₆ - 3)]

Catatan: Kolom 2 throughput tengah dapat diabaikan dengan ukuran chunk yang masuk akal yang lebih besar dari pada penulisan yang waktu pencariannya signifikan, tetapi cukup kecil sehingga tulisan besar berukuran penuh. Ukuran potongan besar dari kolom throughput ke-2 lebih mirip dengan drive yang direntang. Tulisan 'kecil' adalah di mana efek throughput dapat diabaikan.

Memiliki ukuran chunk kecil yang tidak tepat juga meningkatkan efek mencari amplifikasi untuk dibaca, meskipun tidak sebanyak dan hanya dalam case full-stripe.

RAID | read throughput amplification factor | read seek amplification factor
     | full-stripe      | single-chunk      | full-stripe (e.g.) | single-chunk
   0 | 1                | 1                 | n      to n;    12 | 1
   1 | 1                | 1                 | 1      to n;  1–12 | 1
   5 | 1                | 1                 | n - 1  to n; 11–12 | 1
   6 | 1                | 1                 | n - 2  to n; 10–12 | 1
*1+0 | 1                | 1                 | n₀     to n;  4–12 | 1           *
 1+5 | 1                | 1                 | n₅ - 1 to n;  5–12 | 1
*1+6 | 1                | 1                 | n₆ - 2 to n;  4–12 | 1           *

Catatan: 'ke n' adalah karena ketika hanya ada satu pembacaan yang terjadi secara bersamaan, secara teori dimungkinkan untuk memobilisasi semua drive untuk mencari ke tempat yang tepat dan secara bersama-sama membaca data untuk throughput baca bersebelahan maksimum yang besar.

RAID | large contiguous read throughput | concurrent tiny reads throughput
     | full-stripe (e.g.)| single-chunk | full-stripe         | single-chunk
   0 | n×          ; 12× | n×     ; 12× | 1×          ;  1×   | n×     ; 12×
   1 | n×          ; 12× | n×     ; 12× | n×          ; 12×   | n×     ; 12×
   5 | n×          ; 12× | n×     ; 12× | n/(n - 1)×  ; ~1.1× | n×     ; 12×
   6 | n×          ; 12× | n×     ; 12× | n/(n - 2)×  ;  1.2× | n×     ; 12×
*1+0 | n×          ; 12× | n×     ; 12× | n₁×         ;  3×   | n×     ; 12×*
 1+5 | n×          ; 12× | n×     ; 12× | n/(n₅ - 1)× ;  2.4× | n×     ; 12×
*1+6 | n×          ; 12× | n×     ; 12× | n/(n₆ - 2)× ;  3×   | n×     ; 12×*

Catatan: Sekali lagi, kolom 2 throughput tengah dapat diabaikan mengingat ukuran potongan yang masuk akal. Kolom throughput ke-3 sekali lagi terkait erat dengan proporsi redundansi.

Namun, ukuran bongkahan yang cukup besar berarti bacaan kecil tidak pernah penuh. Jadi mengingat implementasi yang efisien dan ukuran chunk yang tepat, kinerja baca harus proporsional dengan jumlah drive yang identik saat tidak terdegradasi.

Jadi sebenarnya, 'faktor amplifikasi' jauh lebih rumit daripada rumus dalam pertanyaan, di mana hanya amplifikasi throughput jalur penuh yang dipertimbangkan. Secara khusus, kinerja penulisan 6 × 2 RAID 1 + 6 untuk penulisan bersamaan yang cukup kecil untuk diikat akan lebih buruk daripada kinerja 4 × 3 RAID 1 + 0. Dan untuk penulisan kecil, yang semuanya dicari, kinerja hanya dapat sekitar sepertiga dari yang 4 × 3 RAID 1 + 0 di terbaik absolut (yaitu diberi implementasi yang sempurna).

Setelah menyelesaikan masalah itu, perbandingan 12-drive tidak memiliki pemenang langsung:

                                  | 4×3 RAID 1+0 | 6×2 RAID 1+6
   number of identical 1TB drives | 12           | 12
                 storage capacity | 4TB          | 4TB
            redundancy proportion | 2/3          | 2/3
large contiguous write throughput | 4×           | 4×
 large contiguous read throughput | 12×          | 12×
concurrent tiny writes throughput |*4×           | 1.5×
 concurrent tiny reads throughput | 12×          | 12×
safe number of random drive loses | 2            |*5
    12 - 1 large write throughput | 4×           | 4×
     12 - 1 large read throughput | 8×           |*11×
    12 - 1 tiny writes throughput |*4×           | ~1.42×
     12 - 1 tiny reads throughput | 8×           |*~9.33×
  can split-off a copy for backup | yes[1]       | yes[1]
                  2-site failover | yes          | yes
    2-copy large write throughput | 4×           | 4×
     2-copy large read throughput |*8×           | 6×
    2-copy tiny writes throughput |*4×           | ~1.28×
     2-copy tiny reads throughput |*8×           | 6×
   2-copy safe random drive loses | 1            |*2
2-copy - 1 large write throughput | 4×           | 4×
 2-copy - 1 large read throughput | 4×           |*5× or 6×[2]
2-copy - 1 tiny writes throughput |*4×           | ~1.46× or 1.2×[2]
 2-copy - 1 tiny reads throughput | 4×           |*3.6x or 6×[2]
can be divided into 3 full copies | yes          | yes
                  3-site failover | yes          | yes
    1-copy large write throughput | 4×           | 4×
     1-copy large read throughput | 4×           | 4×
    1-copy tiny writes throughput |*4×           | ~0.85×
     1-copy tiny reads throughput |*4×           | 2×
   1-copy safe random drive loses | 0            | 0
                       complexity |*simple       | more complex

Catatan 1: Salinan lengkap dari data yang disimpan masing-masing adalah RAID 0 quadruple atau array RAID 6 4/6 yang terdegradasi. Catatan 2: Ada kemungkinan bahkan apakah kegagalan drive menyinggung salah satu dari 4 pasangan RAID 1 terdegradasi atau menurunkan salah satu dari 2 pasangan normal.

Namun demikian, itu akan menggandakan kinerja membaca dari array RAID 6 dari 6 drive dan throughput menulis kecil harus 25% lebih baik (1,5 / 1.2) karena bacaan wajib dibagi antara pasangan RAID 1, dan RAID 6 jelas tidak memiliki aplikasi yang cocok, sehingga dalam aplikasi ketersediaan tinggi yang memiliki menulis yang lebih besar atau yang lebih prihatin tentang kinerja membaca dari menulis kinerja, mungkin ada adalah ceruk untuk RAID 1 + 6 afterall. Tapi bukan itu saja ...

Kompleksitas

Ini masih hanya dalam teori sejauh ini (sebagian besar kombinatorik ), dalam praktiknya kompleksitas akan berarti bahwa implementasi RAID 1 + 6 mungkin memiliki kekurangan yang kehilangan peluang dan tidak mencapai hasil teoritis. RAID 6 sudah lebih kompleks, dan bersarang menambah sedikit kompleksitas di atas ini.

Sebagai contoh, itu tidak segera jelas bahwa 6 × 2 RAID 1 + 6 dapat diabstraksikan sebagai memiliki 3 kepala baca virtual independen yang mampu secara bersamaan membaca 3 besar membaca bersebelahan pada throughput 4 × masing-masing, sama seperti 4 × 3 RAID 1 + 0. Cukup membuat 6 pasangan RAID 1 dalam array RAID 6 menggunakan perangkat lunak RAID mungkin tidak begitu elegan; implementasinya mungkin bodoh dan berlebihan (saya belum menguji hipotesis ini).

Kompleksitas juga menghadirkan peningkatan biaya pengembangan implementasi dan alat. Meskipun mungkin ada aplikasi yang dapat mengambil manfaat dari sarang seperti itu, perbaikannya mungkin tidak sebanding dengan biaya pengembangan.

James Haigh
sumber
Silakan sebutkan sumber Anda untuk informasi ini. Tes praktis dengan tulisan besar atau kecil tidak sesuai dengan kinerja yang Anda sarankan.
JamesRyan
@JamesRyan: Ini bukan informasi bekas. Hasil teoritis diturunkan dari dasar-dasar cara kerja level RAID standar. Semua yang diperlukan untuk teori adalah pemahaman tentang cara kerja RAID dan pemahaman tentang logika dan derivasi matematika. Jika perhitungan ini dilakukan oleh orang lain, tentu saja saya akan menyatakan ini dan memberikan tautan untuk referensi jika memungkinkan. Perhatikan bahwa ada banyak cara implementasi RAID 1 + 6 yang praktis dapat menjadi suboptimal, tetapi implementasi yang berbeda akan bervariasi. Yang ingin saya ketahui adalah mengapa tes praktis Anda tidak sesuai.
James Haigh
@JamesRyan: Bisakah Anda memberikan detail lebih lanjut tentang implementasi apa yang Anda gunakan, drive apa yang Anda gunakan, konfigurasi mana, dengan metode benchmark apa? Apakah Anda mencoba keduanya RAID 6 array 6 RAID 1 pasang dan RAID 0 array 4 RAID 1 tiga kali lipat dengan 12 drive dan ukuran chunk yang sama? Apakah itu perangkat lunak RAID?
James Haigh
Karena Anda mengusulkan teori yang belum diuji yang menentang kearifan konvensional, mengapa Anda tidak merinci pengaturan Anda di mana Anda telah menunjukkan itu berfungsi? Saya akan menebak bahwa karena matematika Anda berbeda dari setiap sumber lain pada subjek ini serta dunia nyata menguji alasan mengapa itu tidak berhasil adalah karena matematika Anda salah.
JamesRyan