Masalahnya
Alat mdadm digunakan untuk membuat mirror RAID perangkat lunak menggunakan dua perangkat device-mapper-multipath:
# /sbin/mdadm /dev/md0 --create --verbose --level=1 --raid-devices=2 /dev/mapper/ocrp1 /dev/mapper/ocrmirrorp1
Penyiapan kemudian dikonfirmasi:
# /sbin/mdadm --detail /dev/md0 ... Number Major Minor RaidDevice State 0 253 2 0 active sync /dev/dm-2 1 253 3 1 active sync /dev/dm-3
Karena nama perangkat multipath yang sebenarnya (/dev/dm-N) ditampilkan, pemetaan nama yang lebih ramah (/dev/mapped/ocrp1) juga diverifikasi:
# /bin/ls -l /dev/mpath/ lrwxrwxrwx 1 root root 7 Apr 23 11:15 ocrp1 -> ../dm-2 lrwxrwxrwx 1 root root 7 Apr 23 11:15 ocrmirrorp1 -> ../dm-3
# /bin/ls -l /dev/mapper/ brw-rw---- 1 root disk 253, 2 Apr 23 11:15 ocrp1 brw-rw---- 1 root disk 253, 3 Apr 23 11:15 ocrmirrorp1
Karena nama-nama yang mudah digunakan ini dipetakan ke perangkat multipath yang sama, pengaturannya telah terbukti benar. Setelah reboot, mdadm menampilkan yang berikut:
# /sbin/mdadm --detail /dev/md0 ... Number Major Minor RaidDevice State 0 8 97 0 active sync /dev/sdg1 1 8 113 1 active sync /dev/sdh1
RAID aktif tetapi tidak menggunakan perangkat multipath seperti yang diharapkan.
Solusinya
Ini sebenarnya masalah waktu. Selama boot sistem, /etc/rcN.d skrip memulai mdadm sebelum perangkat multipath terdeteksi dan siap. Ini pada dasarnya adalah kondisi balapan karena sejumlah besar perangkat multipath membutuhkan waktu lebih lama untuk dikenali dan mdadm dapat dijalankan sebelum pemrosesan multipath selesai.
Solusinya adalah dengan menambahkan penangan dan perangkat sistem file yang diperlukan ke dalam /initrd file sehingga ini akan tersedia untuk kernel pada saat boot. Ini akan memungkinkan kernel untuk mulai memproses perangkat multipath lebih awal.
Catatan :File /vmlinuz kernel Linux dibuat dengan dukungan hanya untuk beberapa perangkat yang sangat mendasar. Handler sistem file dan driver perangkat umum dikompilasi secara terpisah dan dikemas dalam file /initrd (ramdisk awal). Bootloader GRUB atau LILO harus terlebih dahulu menempatkan konten file /initrd ke dalam memori dan kemudian memuat kernel. Kernel kemudian menggunakan ramdisk awal untuk mendapatkan driver perangkat yang diperlukan untuk mengakses sistem file root. Kemudian kernel beralih menggunakan sistem file root yang sebenarnya dan membebaskan memori yang digunakan oleh image memori /initrd.Pendekatan cerdas ini memungkinkan satu imej kernel disediakan dengan set driver perangkat yang disesuaikan untuk setiap sistem, tanpa membuang memori sistem untuk menyimpan driver perangkat dan kode pengendali sistem file yang tidak pernah digunakan.
Untuk membuat file /initrd kustom termasuk dukungan multipath, gunakan teknik di bawah ini:
1. Buat file initrd baru termasuk multipath, device-mapper-multipath, dan driver HBA:
# /sbin/mkinitrd -v /root/initrd-mp.img 2.6.18-prep --with=multipath --with=dm-multipath --with=lpfc --omit-raid-modules
Untuk melakukan hal yang sama pada CentOS/RHEL 6 dan 7, silakan lihat postingan di bawah ini.
Cara Membangun Kembali "initramfs" dengan Multipath di CentOS/RHEL 6 dan 72. Verifikasi file /etc/mdadm.conf dikonfigurasi untuk perangkat RAID:
# /bin/cat /etc/mdadm.conf DEVICE /dev/mapper/* ARRAY /dev/md0 uuid=ccfe8a98:ea584ff2:2fad9d51:305ea2da devices=/dev/mapper/ocrp1,/dev/mapper/ocrmirrorp1 level=raid1
3. Salin image ramdisk baru ke lokasi boot yang diharapkan oleh bootloader:
# /bin/cp /root/initrd-mp.img /boot/
4. Tambahkan entri baru ke file konfigurasi bootloader /boot/grub/grub.conf untuk menggunakan image ramdisk baru:
title MDADM-MP root (hd0,0) kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-mp.imgCatatan :Ubah contoh bait GRUB sebagaimana mestinya. Versi kernel dan perangkat root Anda pasti akan berbeda dari contoh ini.
Saat menggunakan CentOS/RHEL 7 dan grub2, silakan lihat posting di bawah ini untuk langkah-langkah yang tepat.
CentOS / RHEL 7 :Cara Memodifikasi Argumen GRUB2 dengan grubby5. Reboot sistem Anda dan pilih entri MDADM-MP dari menu GRUB.
Petunjuk :Jika Anda masih tidak melihat perangkat multipath yang digunakan, Anda perlu menambahkan skrip start-up untuk menjalankan mdadm sebagai langkah boot terakhir. Salah satu cara untuk melakukannya adalah dengan menambahkan perintah yang diperlukan ke /etc/rc.local jika Anda tidak ingin menulis skrip layanan /etc/init.d/ lengkap.