RAID memberikan manfaat dalam hal redundansi data dan peningkatan kinerja, dan pengaturan yang disarankan untuk server penting misi. Misalnya, RAID 1 menghasilkan kumpulan cermin, yang dapat mentolerir kegagalan disk tunggal, sementara berpotensi mempercepat kinerja karena permintaan baca dapat dilayani oleh disk apa pun dalam larik. RAID 10 (RAID 1+0) adalah rangkaian kumpulan cermin, atau RAID 0 kumpulan cerminan RAID 1, yang memberikan throughput dan latensi yang lebih baik, sekaligus mentolerir kegagalan beberapa disk selama tidak ada cermin yang kehilangan semua drive-nya.
Tutorial ini memberikan panduan langkah demi langkah tentang cara membuat RAID 1 secara manual pada sistem dua disk atau RAID 10 pada sistem empat disk pada sistem yang sedang berjalan dan telah menginstal CentOS / RedHat. Bootloader GRUB juga dikonfigurasi sedemikian rupa sehingga sistem masih dapat melakukan booting jika salah satu hard drive gagal. Ini berguna terutama jika Anda tidak dapat mengakses konsol di server khusus yang berlangganan dari perusahaan hosting web, yang secara tidak sengaja mencegah Anda membuat perangkat RAID selama penginstalan.
Fase pertama dari migrasi sistem yang sedang berjalan ke RAID tanpa kehilangan data adalah untuk memastikan semua data saat ini direplikasi ke RAID yang terdegradasi. Dalam tutorial ini, kita akan bekerja pada sistem yang dilengkapi dengan 477 MB /boot partisi sebagai /dev/sda1, lebih dari 900 GB / partisi root sebagai /dev/sda2, 4 GB ruang swap di /dev/sda3, dan lainnya Partisi logis 4GB /tmp /dev/sda5 dihosting di /dev/sda4 partisi extended.
- Periksa dan pastikan tidak ada perangkat RAID yang berjalan saat ini. Isi file /etc/mdadm.conf dan hasil cat /proc/mdstat harus kosong, dan tidak ada array yang dapat ditemukan di file konfigurasi atau secara otomatis.
mdadm --examine --scan > /etc/mdadm.conf mdadm --assemble --scan cat /proc/mdstat
- Sebagai tindakan pencegahan, matikan semua larik yang dapat dimatikan (yaitu saat ini tidak digunakan):
mdadm --stop --scan
- Ubah tabel partisi disk menjadi MBR dengan perintah berikut. Lewati langkah ini jika disk Anda tidak memiliki tabel partisi GTP.
parted /dev/sdb (parted) mktable msdos (parted) quit
Jawaban Y(es) ketika diminta dengan “peringatan:Label disk yang ada di /dev/sdb akan dimusnahkan dan semua data di disk ini akan hilang. Apakah Anda ingin melanjutkan?”
Kirim pembaruan ke kernel:
partprobe /dev/sdb
Ulangi perintah untuk drive lain, yaitu /dev/sdc dan /dev/sdd, jika ada.
- Partisi hard drive sesuai keinginan Anda.
Dalam tutorial ini, kita akan menggunakan perintah berikut untuk membuat partisi yang identik dengan drive yang ada, /dev/sda:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Ulangi perintah untuk drive lain, yaitu /dev/sdc dan /dev/sdd, jika ada.
TipJika Anda menggunakan "fdisk" untuk membuat partisi secara manual, Anda dapat menggunakan perintah "sfdisk" di atas untuk mereplikasi struktur partisi ke disk lain jika Anda memiliki lebih dari 1 hard drive tambahan. Misalnya, “sfdisk -d /dev/sdb | sfdisk –force /dev/sdc” akan mereplikasi partisi /dev/sdb ke /dev/sdc. - Mengubah jenis partisi ke deteksi otomatis RAID Linux. Untuk melakukannya, "fdisk" hard disk tertentu. Misalnya,
fdisk /dev/sdb
Kemudian, terbitkan t perintah:
Command (m for help): t Partition number (1-5): 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect)
Ulangi proses untuk sisa partisi pada disk. Kemudian, buat perubahan itu permanen:
Command (m for help): w
- Hapus RAID untuk disk baru, untuk berjaga-jaga jika RAID telah disiapkan pada disk "baru" sebelumnya:
mdadm --stop --scan mdadm --zero-superblock /dev/sdb{1..9}
Dan kemudian kirim pembaruan ke kernel:
partprobe /dev/sdb
Ulangi perintah untuk drive lain, yaitu /dev/sdc dan /dev/sdd, jika ada.
- Muat modul yang diperlukan ke dalam kernel:
modprobe raid0 modprobe raid1 modprobe raid10
Jika Anda menjalankan “cat /proc/mdstat” sekarang, Anda akan melihat sesuatu yang mirip seperti:
Kepribadian :[raid0] [raid1] [raid10]
perangkat yang tidak digunakan:Modul terkait RAID telah dimuat di kernel, tetapi tidak ada set RAID yang dikonfigurasi.
- Buat perangkat RAID dalam keadaan terdegradasi karena satu drive hilang, yaitu /dev/sda yang saat ini diinstal dengan OS dan digunakan untuk boot. Karena CentOS dan RedHat versi 5.0 dan 6.0 menggunakan Grub 0.97 secara default, “–metadata=0.9” ditentukan sehingga versi superblok yang lebih lama digunakan. Jika tidak, Grub mungkin merespons dengan kesalahan "tipe sistem file tidak diketahui, tipe partisi 0xfd" dan menolak untuk menginstal. Selain itu, mdadm juga akan membunyikan peringatan untuk larik boot:larik ini memiliki metadata di awal dan mungkin tidak cocok sebagai perangkat boot. Jika Anda berencana untuk menyimpan '/ boot' pada perangkat ini, pastikan bahwa boot-loader Anda memahami metadata md/v1.x, atau gunakan –metadata=0,90. Parameter tidak diperlukan dengan Grub2. Sintaks berikut mengasumsikan bahwa kita sedang membangun array RAID10 dengan 4 disk. Ubah ke RAID1 jika Anda hanya memiliki 2 disk dengan mengubah opsi ke “–level=1” dan menghapus partisi disk yang tidak ada.
Untuk /boot, kami menggunakan RAID1:
mdadm --create --verbose /dev/md1 --metadata=0.9 --level=1 --raid-devices=4 missing /dev/sdb1 /dev/sdc1 /dev/sdd1
Untuk / root, gunakan RAID10 sebagaimana dimaksud:
mdadm --create --verbose /dev/md2 --metadata=0.9 --level=10 --raid-devices=4 missing /dev/sdb2 /dev/sdc2 /dev/sdd2
Saat menanyakan apakah akan melanjutkan pembuatan larik, jawab Y(es) . Ulangi proses untuk membuat larik RAID untuk ruang swap dan partisi lain, jika tersedia.
Array NoteRAID tidak dapat dibuat pada partisi yang diperluas, dengan mdadm merespons dengan /dev/sdbX tidak cocok untuk array ini. - Periksa hasilnya dengan:
cat /proc/mdstat
Outputnya harus:
[serangan0] [serangan1] [serangan10]
md5 :aktif raid10 sdd5[3] sdc5[2] sdb5[1]
4189184 blok 512K potongan 2 hampir salinan [4/3] [_UUU]md2 :aktif raid10 sdd2[3] sdc2[2] sdb2[1]
1939915776 blok 512K potongan 2 salinan hampir [4/3] [_UUU]
bitmap:15/15 halaman [60KB], potongan 65536KBmd1 :aktif raid1 sdd1[3] sdc1[2] sdb1[1]
511936 blok [4/3] [_UUU]md3 :aktif raid10 sdd3[3] sdb3[1] sdc3[2]
8387584 blok 512K potongan 2 hampir salinan [4/3] [_UUU]perangkat yang tidak digunakan:
- Buat mdadm.conf dari konfigurasi RAID saat ini:
mdadm --examine --scan >> /etc/mdadm.conf
- Buat sistem file pada perangkat RAID baru:
mkfs.ext4 /dev/md1 # You may want to use mkfs.ext2 for ext2 filesystem for /boot mkfs.ext4 /dev/md2 # ext4 filesystem for / root mkswap /dev/md3 # Swap space
Buat sistem file ext4 ke larik RAID baru lainnya yang dibuat.
- Ganti entri perangkat di /etc/fstab dengan perangkat RAID baru. Untuk melakukannya, pertama jalankan:
blkid | grep /dev/md
Ini mengembalikan output dengan UUID perangkat RAID perangkat lunak baru yang terlihat seperti ini:
/dev/md1:UUID=”1234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″
/dev/md2:UUID=”2234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″
/dev/md3:UUID=”3234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”swap”
/dev/md5:UUID=”4234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″Di /etc/fstab , ubah baris yang berisi berbagai titik pemasangan ke UUID sistem file RAID baru /dev/mdX baru yang sesuai, yaitu nilai setelah “UUID=". Misalnya,
UUID=2234abcd-12ab-12ab-12ab-123456abcdef / ext4 defaults 1 1 UUID=1234abcd-12ab-12ab-12ab-123456abcdef /boot ext4 defaults 1 2 UUID=4234abcd-12ab-12ab-12ab-123456abcdef /tmp ext4 noexec,nosuid,nodev 1 2 UUID=3234abcd-12ab-12ab-12ab-123456abcdef swap swap defaults 0 0
Biarkan tmpfs, devpts, sysfs, proc, dan lainnya tidak tersentuh. Tentu saja, jika Anda tahu apa yang Anda lakukan, atau memiliki sistem file yang sangat berbeda, Anda dapat memodifikasi fstab sesuka Anda.
- Perbarui initrd dan bangun kembali initramf dengan mdadm.conf baru:
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.old dracut --mdadmconf --add-drivers "raid1 raid10" --filesystems "ext4 ext3 swap tmpfs devpts sysfs proc" --force /boot/initramfs-$(uname -r).img $(uname -r)
Catatan:Ganti $(uname -r) dengan versi kernel yang sebenarnya jika perintah tidak bekerja untuk Anda, terutama pada LiveCD.
- Di /boot/grub/menu.lst , ubah nilai UUID atau entri label untuk kernel menjadi UUID dari / (direktori root) pada array RAID atau /dev/md2 (ubah sesuai jika /boot Anda dipasang pada partisi yang berbeda). Misalnya:
title CentOS (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=UUID=2234abcd-12ab-12ab-12ab-123456abcdef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
Atau,
title CentOS (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=/dev/md2 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
Pastikan TIDAK rn_NO_DM dan rn_NO_MD parameter boot tidak terdaftar sebagai opsi untuk kernel. Setelah selesai mengedit, simpan menu.lst yang diperbarui.
- Replikasi secara manual data yang ada pada partisi yang ada ke partisi RAID perangkat lunak baru.
Untuk / root (/dev/md2, ubah sesuai jika tidak):
mkdir /mnt/raid mount /dev/md2 /mnt/raid cd /mnt/raid cp -ax / . sync
Untuk /boot:
rm -rf /mnt/raid/boot mkdir /mnt/raid/boot mount /dev/md1 /mnt/raid/boot cd /mnt/raid/boot cp -ax /boot/* . sync
Di SELinux, jalankan juga:touch /mnt/raid/.autorelabel untuk /boot.
Jika Anda memiliki lebih banyak partisi, seperti /var, /home dan lain-lain, ulangi proses untuk sistem file ini. Misalnya:
rm -rf /mnt/raid/home mkdir /mnt/raid/home mount /dev/md1 /mnt/raid/home cd /mnt/raid/home cp -ax /home/* . sync
TipAda banyak cara untuk menyalin dan menduplikasi file ke array RAID baru. Misalnya:rsync -avxHAXS --delete --progress / /mnt/raid tar -C / -clspf - . | tar -xlspvf - find / -depth -xdev | cpio -pmd /mnt/raid
- Instal Grub 0.97 pada MBR semua disk sehingga jika salah satu disk gagal, sistem dapat melakukan booting. Agar hal ini terjadi, langkah berikut harus dilakukan::
grub grub> root (hd0,0) grub> setup (hd0) grub> root (hd1,0) grub> setup (hd1) grub> root (hd2,0) grub> setup (hd2) grub> root (hd3,0) grub> setup (hd3) grub> quit
Lewati hd2 dan hd3 jika Anda hanya memiliki 2 hard drive.
- Kami akan memulai ulang server. Cadangkan semuanya untuk berjaga-jaga jika server tidak kembali, lalu terbitkan:
reboot
Bagian pertama dari konfigurasi dukungan RAID perangkat lunak Linux pada sistem yang sedang berjalan telah selesai. Jika server kembali, lanjutkan dengan prosedur berikut untuk menambahkan kembali hard disk yang hilang (mis. /dev/sda yang menjalankan sistem awalnya) ke array RAID. Panduan berikut mengasumsikan bahwa sisa disk yang belum ditambahkan ke array RAID adalah /dev/sda. Ubah jika nama perangkat Anda berbeda.
- Setelah server melakukan booting, konfirmasikan bahwa sistem file dipasang pada larik RAID, yaitu /dev/md0, /dev/md1…./dev/md3.
df -h
Hasil yang diharapkan:
Filesystem Size Used Avail Use% Mounted on /dev/md2 1.8T 1.2G 1.7T 1% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/md1 477M 76M 377M 17% /boot /dev/md5 3.9G 8.1M 3.7G 1% /tmp
- Ubah tabel partisi disk menjadi MBR dengan perintah berikut. Lewati langkah ini jika disk tidak memiliki tabel partisi GTP.
parted /dev/sda (parted) mktable msdos (parted) quit
Jawaban Y(es) ketika diminta dengan “peringatan:Label disk yang ada di /dev/sdb akan dimusnahkan dan semua data di disk ini akan hilang. Apakah Anda ingin melanjutkan?”
- Hapus semua partisi yang ada di /dev/sda:
fdisk /dev/sda
Command (m for help): d Partition number (1-5): 1 Command (m for help): d Partition number (1-5): 2 Command (m for help): d Partition number (1-5): 3 Command (m for help): d Partition number (1-5): 4 Command (m for help): d Partition number (1-5): 5 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
- Hapus semua RAID pada disk:
mdadm --zero-superblock /dev/sda{1..9}
Kirim pembaruan ke kernel:
partprobe /dev/sda
- Salin struktur partisi dari /dev/sdb:
sfdisk -d /dev/sdb | sfdisk --force /dev/sda
- Jalankan:
fdisk -l
Pastikan bahwa semua partisi yang membentuk larik RAID adalah fd Jenis partisi autodetect RAID Linux (nilai di bawah kolom "Id"). Jika Linux tipe 83, gunakan fdisk, cfdisk atau parted untuk mengubahnya menjadi “fd”. Misalnya:
Kirim update ke kernel jika ada perubahan.
partprobe /dev/sda
- Tambahkan partisi di /dev/sda ke masing-masing larik RAID untuk melengkapi larik (4 disk di RAID10 atau 2 disk di RAID1):
mdadm --add /dev/md1 /dev/sda1 mdadm --add /dev/md2 /dev/sda2 mdadm --add /dev/md3 /dev/sda3
Ulangi untuk partisi lain, jika ada.
- Periksa kemajuan proses pemulihan RAID dengan:
cat /proc/mdstat
Outputnya harus:
[serangan0] [serangan1] [serangan10]
md5 :aktif raid10 sdd5[3] sdc5[2] sdb5[1]
4189184 blok 512K potongan 2 hampir salinan [4/3] [_UUU]md2 :aktif raid10 sdd2[3] sdc2[2] sdb2[1]
1939915776 blok 512K potongan 2 salinan hampir [4/3] [_UUU]
[====>……………………………….] pemulihan =37,8% (177777777/388888888) selesai=60,5 menit kecepatan=100000K/dtk
bitmap:15/15 halaman [60KB], potongan 65536KBmd1 :aktif raid1 sdd1[3] sdc1[2] sdb1[1]
511936 blok [4/3] [_UUU]md3 :aktif raid10 sdd3[3] sdb3[1] sdc3[2]
8387584 blok 512K potongan 2 hampir salinan [4/3] [_UUU]perangkat yang tidak digunakan:
watch -n 5 cat /proc/mdstat
- Buat ulang catatan boot pada /dev/sda MBR dengan grub untuk memastikan bahwa sistem dapat melakukan booting pada disk apa pun:
grub grub> root (hd0,0) grub> setup (hd0) grub> quit
- Saat memulihkan semua larik RAID, lakukan mulai ulang sistem.
reboot
- Saat sistem kembali aktif dan online, selamat, Anda sekarang menjalankan RAID perangkat lunak.
Setelah RAID diaktifkan dengan mdadm, hal terpenting adalah memastikan bahwa sistem notifikasi peringatan email berfungsi. RAID perangkat lunak Linux dapat memantau sendiri kemungkinan masalah pada larik RAID seperti kegagalan disk, dan dapat mengirim pemberitahuan email saat menemukan kemungkinan kesalahan.
Untuk memverifikasi bahwa pemberitahuan email berfungsi, jalankan perintah berikut:
mdadm --monitor --test --oneshot /dev/md1
Anda akan menerima email dengan isi /proc/mdstat. Jika Anda tidak menerima email, pastikan sistem Anda dapat mengirim email, dan periksa MAILADDR nilai di mdadm.conf . Itu harus membaca sesuatu seperti:
MAILADDR [email protected]