Episode ini mengupas tiga mekanisme dasar RAID — striping, mirroring, dan parity — serta level RAID 0, 1, 4, 5, 6, 10, dan nested, termasuk cara menghitung kapasitas dan overhead serta tradeoff URE untuk disk besar.

Episode 1 sudah menjelaskan mengapa RAID ada. Sekarang saatnya membangun fondasi teknis: bagaimana RAID sebenarnya bekerja. Episode 2 ini memperkenalkan tiga mekanisme dasar — striping, mirroring, dan parity — lalu merangkainya menjadi level RAID yang akan kalian temui di produksi.
Memahami level RAID dengan benar adalah pembeda antara admin yang sekedar menjalankan perintah dan admin yang bisa merancang storage. Kalian akan belajar membaca angka di belakang level seperti "RAID 5" dan tahu persis apa yang didapat dan apa yang dikorbankan. Mari mulai dari mekanisme yang paling sederhana.
Striping membagi data menjadi potongan (stripe) dan mendistribusikannya ke beberapa disk secara bergantian. Ukuran tiap potongan disebut chunk size. Dengan striping, tulis dan baca besar bisa memanfaatkan beberapa disk sekaligus, sehingga throughput meningkat. Kelemahan terbesarnya: tanpa parity atau mirror, satu disk mati berarti seluruh array mati.
data: A1 A2 A3 A4 B1 B2 B3 B4
disk1: A1 B1 | disk2: A2 B2 | disk3: A3 B3 | disk4: A4 B4Chunk size yang terlalu kecil membuat overhead seek tinggi, terlalu besar membuat distribusi tidak merata. Nilai umum adalah 64K atau 512K, dan akan kita bahas untuk tuning di episode 18.
Mirroring menulis data yang sama ke dua disk atau lebih secara lengkap. Setiap tulis menghasilkan duplikat, sehingga jika satu disk gagal, salinan tetap utuh. Baca bisa dibagi ke kedua disk untuk menambah throughput baca, sementara tulis dikenakan biaya ganda.
disk1: A1 B1 C1 | disk2: A1 B1 C1Mirroring adalah mekanisme paling sederhana dan paling cepat saat recovery, karena rebuild cukup menyalin dari disk pasangan tanpa menghitung apa pun.
Parity adalah data checksum yang dihitung dari isi beberapa blok data, biasanya memakai operasi XOR. Jika satu blok data hilang, blok itu bisa dihitung ulang dari blok data lain plus parity. Parity membutuhkan kapasitas jauh lebih kecil daripada mirroring — hanya satu atau dua disk — tapi setiap tulis memaksa sistem membaca blok lain dan menghitung parity, yang menambah overhead.
a = 0b1010, b = 0b1100
parity = a XOR b = 0b0110
a = parity XOR b (rekonstruksi saat a hilang)Nanti di episode 18 kita akan melihat bagaimana ZFS dan mdadm memilih algoritma parity yang efisien.
N kali kapasitas disk. Cocok untuk data yang boleh hilang atau performa maksimal, misalnya cache dan scratch.N/2 untuk sepasang disk. Cocok untuk OS, boot, dan data yang butuh redundancy penuh.# RAID 0: kapasitas = N * kapasitas_disk
# RAID 1: kapasitas = (N/2) * kapasitas_disk
# RAID 5: kapasitas = (N-1) * kapasitas_disk
# RAID 6: kapasitas = (N-2) * kapasitas_diskPerintah mdadm --detail /dev/md0 nantinya menampilkan jumlah device aktif dan jumlah yang digunakan, sehingga kalian bisa mengecek apakah kapasitas sesuai formula.
N-1. Tahan terhadap satu disk gagal.N-2. Tahan terhadap dua disk gagal, cocok untuk array besar atau disk berkapasitas tinggi.N/2, dengan rebuild yang cepat karena hanya menyalin dari pasangan.| Level | Mekanisme | Kapasitas | Tahan Gagal | Kasus Penggunaan |
|---|---|---|---|---|
| RAID 0 | Striping | N | 0 disk | Cache, scratch |
| RAID 1 | Mirror | N/2 | 1 disk | OS, boot |
| RAID 5 | Striping + parity | N-1 | 1 disk | NAS umum |
| RAID 6 | Striping + parity ganda | N-2 | 2 disk | Disk besar |
| RAID 10 | Mirror + striping | N/2 | 1 per grup | Database |
Setiap disk memiliki Unrecoverable Read Error (URE) — probabilitas bahwa satu bit tidak bisa dibaca saat dibutuhkan. Untuk HDD umum, angka ini sekitar 1 bit per 10 pangkat 14 bit yang dibaca, artinya sekitar 12,5TB. Saat rebuild RAID 5, seluruh isi array harus dibaca untuk menghitung ulang data disk yang hilang. Jika kapasitas array sudah mendekati angka URE, peluang menemukan satu bit yang tidak bisa dibaca selama rebuild menjadi besar.
sudo smartctl -a /dev/sda | grep -i readPerintah smartctl -a /dev/sda menampilkan atribut SMART termasuk error rate. Kita akan membaca SMART secara rutin di episode 13.
Untuk disk 4TB ke atas dengan banyak disk dalam satu array, RAID 5 mulai berisiko: kegagalan satu disk saat rebuild bisa dibarengi URE pada disk lain, dan array akan gagal total. RAID 6 memberi dua lapis parity sehingga masih bisa survive satu kegagalan lagi selama rebuild. Inilah alasan utama banyak tim storage beralih ke RAID 6 atau RAIDZ2 untuk disk besar.
Warning
Rebuild RAID 5 pada array disk besar adalah momen paling berbahaya dalam umur array. Selama rebuild, semua disk bekerja keras membaca data penuh — tekanan yang sama justru bisa memicu kegagalan disk kedua. RAID 6 atau RAIDZ2 direkomendasikan untuk array dengan kapasitas besar.
Episode 2 memberi kalian bahasa teknis untuk berbicara tentang RAID: striping mendistribusikan data, mirroring menduplikasinya, dan parity melindunginya dengan checksum. Kalian juga sudah bisa menghitung kapasitas untuk level 0, 1, 5, 6, dan 10, serta memahami mengapa URE membuat RAID 6 lebih menarik untuk disk besar.
Inti yang harus dibawa pulang:
Di episode 3 selanjutnya kita akan membahas software vs hardware vs firmware RAID — kelebihan dan kekurangan kernel MD driver dengan mdadm, controller hardware dengan cache baterai, serta fake RAID IMSM dan DDF. Kalian akan tahu jalur implementasi mana yang tepat untuk kebutuhan kalian.