Episode ini membahas RAID 10 sebagai kombinasi mirror dan striping untuk workload performa tinggi, cara menghitung IOPS dan throughput, rebuild yang cepat, serta kapan memilih RAID 10 dibanding RAIDZ atau RAID 6 untuk database dan VM.

Sampai episode 8 kita membahas RAID parity dan RAIDZ. Episode 9 ini membahas kebalikannya: untuk workload yang menuntut performa tinggi, banyak tim justru memilih RAID 10 — kombinasi mirror dan striping yang menukar sebagian kapasitas demi kecepatan dan rebuild yang singkat.
Mengapa database dan VM mendominasi pembahasan RAID 10? Karena keduanya penuh dengan I/O acak — tulis dan baca kecil yang tidak berurutan. Di workload seperti ini, parity RAID 5 atau 6 justru menjadi beban. Mari kita bedah cara kerja, keunggulan, dan kapan RAID 10 adalah pilihan tepat.
RAID 10 (ditulis juga RAID 1+0) membangun dua lapisan: disk dipasang berpasangan sebagai mirror, lalu semua pasangan digabung dengan striping. Dengan empat disk, struktur yang dihasilkan adalah dua mirror yang di-stripe.
sudo mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sdePerintah mdadm --create --level=10 di atas membuat array RAID 10. Output /proc/mdstat menampilkan md0 : active raid10 sde[3] sdd[2] sdc[1] sdb[0]. Kapasitasnya N/2 — setengah dari total kapasitas fisik.
Keunggulan terbesar RAID 10 adalah kecepatan rebuild. Saat satu disk gagal, data tidak perlu dihitung ulang dari parity — cukup disalin dari pasangan mirror-nya. Ini membuat window of vulnerability jauh lebih pendek dibanding RAID 5 atau RAIDZ pada array besar.
Database (PostgreSQL, MySQL, dan lainnya) serta VM disk dipenuhi operasi baca-tulis acak berukuran kecil. Pada RAID 10, tulis acak didistribusikan ke pasangan mirror tanpa harus menghitung parity — setiap tulis "murah". Inilah perbedaan mendasar dengan RAID 5 dan 6 yang harus melakukan read-modify-write untuk parity.
IOPS (Input/Output Operations Per Second) adalah metrik utama untuk workload ini. Perkiraan sederhana:
total_IOPS ≈ jumlah_pair * IOPS_per_disk * 2 (untuk baca)
total_IOPS ≈ jumlah_pair * IOPS_per_disk (untuk tulis, dengan asumsi penuh)Konsepnya: dengan N disk dalam mirror berpasangan, baca bisa menyebar ke semua disk, sementara tulis acak dibatasi pasangan masing-masing. Inilah kenapa untuk database, RAID 10 dengan HDD bisa melampaui throughput RAID 5 secara signifikan.
Untuk hypervisor yang menampung banyak VM, kebutuhan I/O sangat tidak terduka. RAID 10 memberi latensi yang stabil dan murah untuk workload campuran — menjadi alasan ia menjadi standar di banyak setup Proxmox dan KVM. Stripping menjamin distribusi, mirroring menjamin ketahanan.
Setiap tulis kecil pada RAID 5 dan 6 memaksa sistem membaca blok data yang ada, menghitung parity baru, lalu menulis dua lokasi. Siklus ini disebut read-modify-write — dan setiap langkahnya menambah latensi. Pada workload yang dipenuhi tulis acak kecil, overhead ini terjadi terus-menerus.
tulis kecil → baca data + parity lama → hitung parity baru → tulis data → tulis parityRAID 10 menghindari alur ini seluruhnya: tulis hanya diteruskan ke sepasang disk mirror tanpa perhitungan parity. Inilah alasan fundamental mengapa RAID 10 terasa lebih cepat pada tulis acak — bukan karena disknya lebih cepat, tapi karena jalurnya lebih pendek.
Satu lagi keunggulan RAID 10 yang sering terlewat: latensi yang konsisten. Pada RAID parity, latensi tulis naik saat cache stripe penuh atau saat banyak stripe berbagi satu disk parity. RAID 10 mendistribusikan tulis ke pasangan yang sudah siap, sehingga distribusi latensi lebih sempit dan dapat diprediksi — sangat berharga untuk aplikasi transaksional yang sensitif terhadap outlier.
| Aspek | RAID 10 | RAIDZ2 | RAID 6 |
|---|---|---|---|
| Kapasitas | N/2 | N-2 | N-2 |
| Rebuild | Cepat (salin mirror) | Lambat (hitung ulang) | Lambat (hitung ulang) |
| Tulis acak | Sangat baik | Cukup | Cukup |
| Kapasitas per disk | 2x | 2x | 2x |
| Checksum data | Tidak ada | Ya | Tidak ada |
lsblk -o NAME,SIZE,TYPE,FSTYPE
df -h /dev/md0Output lsblk dan df -h membantu kalian memverifikasi perhitungan kapasitas sebelum memutuskan level. Biasakan menghitung dulu di atas kertas, baru mengeksekusi perintah.
Warning
Jangan memilih RAID 10 hanya karena "terdengar cepat". Untuk media server dengan data berukuran besar yang dominan sequential, RAIDZ2 memberikan kapasitas lebih banyak dengan redundancy yang sama. Ukur workload kalian, baru pilih level.
Bayangkan database transaksional 500GB di server dengan empat disk 4TB. Opsi A: RAID 10 dengan kapasitas 8TB, rebuild cepat, tulis acak optimal. Opsi B: RAIDZ2 dengan kapasitas 8TB, checksum plus self-healing, tapi tulis acak lebih berat dan rebuild lebih lama. Untuk database yang mengejar latensi rendah dan uptime, opsi A hampir selalu menang; untuk kumpulan data yang jarang ditulis tapi mahal kehilangannya, opsi B lebih waras.
Episode 9 menjelaskan posisi RAID 10 dalam spektrum pilihan: ia adalah pilihan utama untuk workload dengan I/O acak dan tulis tinggi seperti database dan VM, dengan harga setengah kapasitas. Kalian juga sudah tahu kapan harus beralih ke RAIDZ2 atau RAID 6 untuk kapasitas dan integritas.
Inti yang harus dibawa pulang:
Di episode 10 selanjutnya kita akan membahas RAID untuk SSD/NVMe — TRIM dan discard pada array, wear-leveling, overhead parity untuk SSD, serta peran SLOG/ZIL dan L2ARC di ZFS. Kalian akan memahami perbedaan mendasar mengelola RAID di atas media solid-state.