Memigrasi server yang sedang berjalan ke RAID

Sekali waktu ada server LAMP di Ubuntu 12,04 yang bekerja pada satu drive. Karenanya, muncul masalah untuk memastikan transfer server ke konfigurasi yang lebih toleran terhadap kesalahan - RAID1. Kawan-kawan yang bertanggung jawab atas server ini menginstal disk kedua, dan sisanya ditugaskan kepada saya, dan akses ke server hanya melalui ssh, yang mempersulit tugas.

Setelah mencari, panduan ditemukan dan pelatihan dimulai di mesin virtual. Ketika saya mencapai hasil yang diinginkan, dengan beberapa kegembiraan, tetapi saya berhasil mentransfer server yang disebutkan sebelumnya ke RAID1 dan membuat langkah-langkah yang diperlukan sebelumnya. Saya memutuskan untuk menempatkan artikel di mana proses transfer dijelaskan secara lebih rinci tentang "Habr".

Rincian disk adalah sebagai berikut:

/dev/sda1 2048 1574911 786432 swap /dev/sda2 * 1574912 16254975 7340032 / /dev/sda3 16254976 31457279 7601152 /home 

Karena disk kedua adalah baru, tidak ada operasi yang diperlukan untuk menghapus partisi sebelumnya.

Hal-hal pertama diubah di /etc/default/grub :
GRUB_TIMEOUT = 5 (memperpendek batas waktu);
GRUB_RECORDFAIL_TIMEOUT = 10 (tambahkan sehingga sistem dapat melakukan boot jika terjadi kesalahan, tanpa memerlukan intervensi interaktif; batas waktu sesuai selera);
GRUB_CMDLINE_LINUX_DEFAULT = "bootdegraded" (pastikan untuk menambahkan "bootdegraded" sehingga sistem dapat boot dari array yang lebih rendah);
# GRUB_HIDDEN_TIMEOUT_QUIET = true (harus dikomentari agar menu GRUB selalu ditampilkan).

Nonaktifkan swap untuk sementara, atur fdisk ke partisi / dev / sda1 menggunakan fdisk (Linux raid autodetect), lalu partisi disk kedua sama dengan yang pertama (semua operasi dilakukan dengan hak pengguna super):

 sfdisk –d /dev/sda | sfdisk –f /dev/sdb 

Kemudian kita mulai membangun RAID kita langkah demi langkah:

 mdadm --create --verbose /dev/md0 --raid-devices=2 --level=1 --metadata=1.2 /dev/sda1 /dev/sdb1 

Buat bagian di bawah swap :
 mkswap /dev/md0 

Kami memperbaiki /etc/fstab , mengganti partisi disk pertama dengan partisi RAID dan mengubah angka di kolom keenam (kebutuhan untuk memeriksa fsck) menjadi nol:

 /dev/sda1 β†’ /dev/md0 # SWAP /dev/sda2 β†’ /dev/md1 # / /dev/sda3 β†’ /dev/md2 # /home 

Aktifkan swap :
 swapon -a 

Karena server kami saat ini bekerja pada disk pertama, kami membuat RAID menggunakan sejauh ini hanya disk kedua:

 mdadm --create --verbose /dev/md1 --raid-devices=2 --level=1 --metadata=1.2 missing /dev/sdb2 mkfs.ext4 /dev/md1 mdadm --create --verbose /dev/md2 --raid-devices=2 --level=1 --metadata=1.2 missing /dev/sdb3 mkfs.ext4 /dev/md2 

Memperbarui konfigurasi mdadm.conf :

 mdadm --examine --scan >> /etc/mdadm/mdadm.conf 

initramfs sehingga initramfs informasi tentang RAID kami:

 update-initramfs -u 

Selanjutnya, proses terlama dimulai - sinkronisasi data. Karena server kami melakukan beberapa tugas, mungkin ternyata setelah sinkronisasi selesai, bagian dari informasi pada bagian array akan berbeda dari data pada bagian yang sesuai dari disk yang berfungsi. Ada beberapa opsi: Anda dapat memilih waktu pemuatan yang paling sedikit, Anda dapat menghentikan bagian dari layanan selama sinkronisasi, atau Anda dapat mengabaikan perbedaan. Secara umum, kami memasang dan menyinkronkan:

 mount /dev/md1 /mnt/ && [tmux|screen] rsync -axu / /mnt mount /dev/md2 /mnt/home && [tmux|screen] rsync -axu /home/ /mnt/home 

Agar sinkronisasi tidak terputus karena gangguan tak terduga pada koneksi ssh, penggunaan terminal multiplexer tidak akan menghalangi.

Setelah menunggu akhir sinkronisasi, pasang direktori sistem ke root baru:

 mount --bind /proc /mnt/proc mount --bind /dev /mnt/dev mount --bind /var /mnt/var mount --bind /run /mnt/run mount --bind /sys /mnt/sys 

Kami pindah ke sistem baru
 chroot /mnt 
dan instal bootloader pada kedua disk

 grub-install -–recheck /dev/sda grub-install --recheck /dev/sdb 

Kami memperbarui konfigurasi boot untuk memuat modul yang diperlukan untuk RAID ( mdraid1x ):

 update-grub 

Kami kembali ke sistem asli dan, jika perlu, menyinkronkan kembali bagian-bagian:

 [tmux|screen] rsync -axu / /mnt [tmux|screen] rsync -axu /home/ /mnt/home 

Karena kami tidak memiliki akses fisik ke konsol atau server dan kami tidak dapat memilih disk tempat RAID akan boot, kami menggunakan trik ini: kami mentransfer konfigurasi bootloader yang telah disiapkan ke disk tempat sistem memulai dan yang tidak di RAID Siapa yang tahu tentang RAID. Salin grub.cfg dari disk yang terletak di RAID ke disk boot kami saat ini. Ini akan memungkinkan sistem untuk memulai dengan / dev / sda, tetapi pasang array dan lanjutkan boot dari partisi yang sudah ada di RAID. Pertama, simpan file lama, yang mungkin diperlukan ketika mengembalikan sistem jika tidak mungkin untuk boot dari RAID, dan kemudian salin file konfigurasi "tempur":

 cp -p /boot/grub/grub.cfg /boot/grub/grub.old cp -p /mnt/boot/grub/grub.cfg /boot/grub/grub.cfg 

Selain itu, Anda dapat membandingkan file-file ini dan memastikan bahwa dalam file konfigurasi bootloader baru, partisi root terdaftar sebagai RAID.

Sekarang kita beralih ke tahap paling penting dari pekerjaan yang dilakukan dan reboot. Anda dapat mulai melakukan ping ke server di konsol sehingga menjadi jelas kapan server akan tersedia lagi. Kami masuk dan melihat bahwa semuanya ternyata seperti yang kami inginkan: lsblk menunjukkan bahwa direktori / dan /home berada di partisi RAID.

Pekerjaan yang mudah dan menyenangkan tetap untuk pembuka - tambahkan dua partisi dari disk pertama ke array, setelah mengaturnya dengan fdisk mengetik fd :

 mdadm /dev/md1 --add /dev/sda2 mdadm /dev/md2 --add /dev/sda3 

dan kemudian secara berkala melihat bagaimana sinkronisasi mirror berlangsung:

 watch -n 5 cat /proc/mdstat 

Biarkan saya selesai di sini, terima kasih atas perhatian Anda!

Source: https://habr.com/ru/post/id481818/


All Articles