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
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!