mdadm adalah utilitas Linux yang digunakan untuk membuat, mengelola, dan memantau software RAID. Nama ini merupakan singkatan dari Multiple Device Administration dan merujuk pada node perangkat md (multiple device) yang dikelola oleh driver kernel Linux.
Level RAID #
| Level RAID | Disk Minimal | Cara Kerja | Kelebihan | Kekurangan | Cocok Untuk |
|---|---|---|---|---|---|
| RAID 0 | 2 | Data dipecah (striping) ke semua disk. | Kecepatan baca/tulis maksimal. Kapasitas total = jumlah seluruh disk. |
Tanpa toleransi kesalahan. Jika satu disk rusak, seluruh data hilang. | Sistem non-kritis atau kebutuhan performa tinggi tanpa redundansi. |
| RAID 1 | 2 | Data dicerminkan (mirroring) ke disk lain. | Toleransi kesalahan tinggi. Dapat kehilangan 1 disk tanpa kehilangan data. |
Kapasitas efektif hanya 50% dari total disk. | Menyimpan data penting dengan prioritas keamanan. |
| RAID 5 | 3 | Data dan paritas didistribusikan ke semua disk. | Seimbang antara kapasitas, performa baca, dan redundansi. | Performa tulis lebih lambat. Proses rebuild lama jika disk rusak. | Server file atau database dengan beban baca tinggi. Hindari disk >4 TB karena risiko URE (Unrecoverable Read Error) saat rebuild. |
| RAID 6 | 4 | Mirip RAID 5, tetapi menggunakan dua blok paritas. | Bisa kehilangan 2 disk tanpa kehilangan data. | Kapasitas lebih kecil, tulis lebih lambat dibanding RAID 5. | Data kritis dengan kapasitas besar dan kebutuhan redundansi tinggi. |
| RAID 10 | 4 | Gabungan RAID 1 (mirror) dan RAID 0 (striping). | Performa tinggi + redundansi tinggi. | Mahal. Kapasitas efektif hanya 50%. | Server dengan kebutuhan performa dan keandalan tinggi. |
RAID 0 #
RAID 0 menggabungkan dua hard disk atau lebih untuk meningkatkan performa dan kapasitas, tetapi tidak memiliki toleransi kesalahan. Jika salah satu disk gagal, seluruh data dalam array akan hilang.
RAID 0 cocok digunakan pada sistem non-kritis, misalnya cache, scratch disk, atau penyimpanan sementara.
Membuat RAID 0 #
Jalankan perintah berikut:
mdadm --create --verbose /dev/md0 \
--level=0 \
--chunk=64K \
--raid-devices=2 \
/dev/sd[a-b]Memeriksa Status RAID #
mdadm --detail /dev/md0Atau pantau status array secara real-time:
watch cat /proc/mdstat/proc/mdstat tetap berguna untuk melihat status array.
Menyimpan Konfigurasi #
Agar array dikenali otomatis saat boot:
mdadm --detail --scan >> /etc/mdadm/mdadm.confPada distro tertentu (Debian/Ubuntu), jalankan juga:
update-initramfs -uMembuat Filesystem #
mkfs.xfs /dev/md0Mount RAID #
mkdir -p /mnt/raid0
mount -o defaults,noatime,discard /dev/md0 /mnt/raid0Mount Permanen Saat Boot #
Tambahkan ke /etc/fstab:
echo '/dev/md0 /mnt/raid0 xfs defaults,nofail,noatime,discard 0 0' >> /etc/fstabVerifikasi #
df -h
mount | grep md0RAID 1 #
RAID 1 atau mirroring umumnya menggunakan dua hard disk atau lebih. Data pada satu disk akan disalin identik ke disk lainnya, sehingga memberikan toleransi kesalahan apabila salah satu disk mengalami kegagalan.
RAID 1 dapat meningkatkan performa baca (read), karena data bisa dibaca dari beberapa disk sekaligus. Namun performa tulis (write) biasanya setara dengan satu disk karena data harus ditulis ke seluruh anggota array.
Membuat RAID 1 #
Jalankan perintah berikut:
mdadm --create --verbose /dev/md0 \
--level=1 \
--raid-devices=2 \
/dev/sd[a-b]Memeriksa Status RAID #
mdadm --detail /dev/md0Untuk memantau proses sinkronisasi (resync) atau rebuild:
watch cat /proc/mdstatMenyimpan Konfigurasi #
Agar array dikenali otomatis saat boot:
mdadm --detail --scan >> /etc/mdadm/mdadm.confPada distro tertentu (Debian/Ubuntu), jalankan juga:
update-initramfs -uMembuat Filesystem #
mkfs.xfs /dev/md0Mount RAID #
mkdir -p /mnt/raid1
mount -o defaults,noatime,discard /dev/md0 /mnt/raid1Mount Permanen Saat Boot #
Tambahkan ke /etc/fstab:
echo '/dev/md0 /mnt/raid1 xfs defaults,nofail,noatime,discard 0 0' >> /etc/fstabVerifikasi #
df -h
mount | grep md0RAID 5 #
RAID 5 memberikan toleransi kesalahan sekaligus meningkatkan performa baca (read). Metode ini membutuhkan minimal 3 hard disk. Data dan informasi paritas didistribusikan ke seluruh disk anggota array.
Jika salah satu disk gagal, data dapat direkonstruksi menggunakan paritas dari disk yang masih sehat. Namun selama proses rebuild, performa biasanya menurun dan risiko kegagalan tambahan meningkat.
RAID 5 cocok untuk file server atau workload dengan dominasi baca, tetapi kurang ideal untuk disk berkapasitas sangat besar karena waktu rebuild yang lama.
Membuat RAID 5 #
Contoh RAID 5 dengan 4 disk:
mdadm --create --verbose /dev/md0 \
--level=5 \
--chunk=64K \
--raid-devices=4 \
/dev/sd[a-d]RAID 5 dengan Spare Disk #
Jika ingin menyediakan 1 disk cadangan (hot spare):
mdadm --create --verbose /dev/md0 \
--level=5 \
--chunk=64K \
--raid-devices=3 \
/dev/sd[a-c] \
--spare-devices=1 \
/dev/sddSaat salah satu disk aktif gagal, spare disk dapat otomatis digunakan untuk proses rebuild.
Memeriksa Status RAID #
mdadm --detail /dev/md0Untuk memantau sinkronisasi atau rebuild:
watch cat /proc/mdstatMenyimpan Konfigurasi #
Agar array dikenali otomatis saat boot:
mdadm --detail --scan >> /etc/mdadm/mdadm.confPada distro tertentu (Debian/Ubuntu), jalankan juga:
update-initramfs -uMembuat Filesystem #
mkfs.xfs /dev/md0Mount RAID #
mkdir -p /mnt/raid5
mount -o defaults,noatime,discard /dev/md0 /mnt/raid5Mount Permanen Saat Boot #
Tambahkan ke /etc/fstab:
echo '/dev/md0 /mnt/raid5 xfs defaults,nofail,noatime,discard 0 0' >> /etc/fstabVerifikasi #
df -h
mount | grep md0RAID 10 #
RAID 10 (RAID 1+0) adalah kombinasi RAID 1 (mirroring) dan RAID 0 (striping). Metode ini memberikan performa baca/tulis tinggi sekaligus redundansi data yang baik.
Data akan dicerminkan ke pasangan disk, lalu data di-stripe antar pasangan tersebut. Karena itu, kapasitas efektif yang dapat digunakan umumnya hanya 50% dari total kapasitas seluruh disk.
RAID 10 sangat cocok untuk database, virtualisasi, dan server dengan kebutuhan IOPS tinggi.
Kelebihan RAID 10 #
- Performa baca dan tulis sangat baik.
- Waktu rebuild lebih cepat dibanding RAID 5/6.
- Toleransi kesalahan tinggi.
- Cocok untuk beban kerja acak (random I/O).
Kekurangan RAID 10 #
- Membutuhkan minimal 4 hard disk.
- Efisiensi kapasitas rendah (hanya 50%).
- Biaya lebih mahal dibanding RAID 5.
Membuat RAID 10 #
mdadm --create --verbose /dev/md0 \
--level=10 \
--chunk=64K \
--raid-devices=4 \
/dev/sd[a-d]Memeriksa Status RAID #
mdadm --detail /dev/md0Untuk memantau sinkronisasi awal (resync):
watch cat /proc/mdstatMenyimpan Konfigurasi #
Agar array dikenali otomatis saat boot:
mdadm --detail --scan >> /etc/mdadm/mdadm.confPada distro tertentu (Debian/Ubuntu), jalankan juga:
update-initramfs -uMembuat Filesystem #
mkfs.xfs /dev/md0Mount RAID #
mkdir -p /mnt/raid10
mount -o defaults,noatime,discard /dev/md0 /mnt/raid10Mount Permanen Saat Boot #
Tambahkan ke /etc/fstab:
echo '/dev/md0 /mnt/raid10 xfs defaults,nofail,noatime,discard 0 0' >> /etc/fstabVerifikasi #
df -h
mount | grep md0Menghapus RAID #
Untuk menghapus array RAID dan membersihkan metadata pada disk, lakukan langkah berikut.
Unmount Filesystem #
Jika RAID sedang digunakan:
umount /mnt/raid0Hapus Signature Filesystem #
wipefs --all --force /dev/md0Stop Array RAID #
mdadm --stop /dev/md0Hapus Metadata RAID di Disk Anggota #
mdadm --zero-superblock /dev/sda /dev/sdbJika anggotanya lebih banyak:
mdadm --zero-superblock /dev/sd[a-d]Verifikasi #
cat /proc/mdstat
lsblkSetelah langkah ini, disk dapat digunakan kembali untuk partisi baru atau RAID lain.
Cheat Sheet #
Menambahkan Spare Device #
Menambahkan disk cadangan (hot spare) ke array:
mdadm --add /dev/md0 /dev/sde
mdadm --add /dev/md0 /dev/sdfAtau sekaligus:
mdadm --add /dev/md0 /dev/sde /dev/sdfMengubah Spare Menjadi Disk Aktif #
Menambah jumlah disk aktif dalam array:
mdadm --grow /dev/md0 --raid-devices=6Setelah proses ini, array akan melakukan reshape/rebuild.
Menghapus Hard Disk dari RAID #
Tandai disk gagal terlebih dahulu:
mdadm /dev/md0 --fail /dev/sdcLalu hapus dari array:
mdadm /dev/md0 --remove /dev/sdcMelihat Status RAID #
mdadm --detail /dev/md0
cat /proc/mdstatMenambahkan Disk Pengganti Setelah Disk Rusak #
mdadm /dev/md0 --add /dev/sdcScan Seluruh Array RAID #
mdadm --assemble --scanSimpan Ulang Konfigurasi #
mdadm --detail --scan > /etc/mdadm/mdadm.confReferensi: