Latar Belakang
Salah satu server virtual Xen saya perlu membagi dan mengubah ukuran disk 400G selama akhir pekan, dan saya ingin meminimalkan waktu henti. Disk tersebut menggunakan 240G, 235G di antaranya adalah direktori /backup, dan 5G sisanya didedikasikan untuk instalasi Debian Linux biasa. Saya ingin membagi disk menjadi dua disk - disk 20GB yang berisi sistem Linux, dan disk 300G untuk dipasang sebagai /backup. Kemudian saya dapat menerapkan pengaturan DRBD saya untuk mereplikasi partisi cadangan 300G itu ke mesin cadangan kedua yang terpisah.
Saya tidak ingin berakhir dalam situasi harus menyalin banyak data di host fisik, dan tentu saja saya tidak ingin mesin virtual mati saat saya melakukannya.
Menyiapkan gambar
Mesin virtual memiliki gambar disk yang terletak di /vm/domains/b1/disk.img dan swap.img yang menyertainya yang tidak perlu kita khawatirkan.
Masalah:
kalah -a
Untuk menemukan semua perangkat loop yang digunakan. Dalam kasus saya, /dev/loop20 adalah perangkat gratis pertama. Selanjutnya, saya akan menyiapkan perangkat loopback untuk gambar, lalu memasangnya:
mkdir -p /mnt/loop-copy-from /mnt/loop-copy-to
losetup /dev/loop20 /vm/domains/b1/disk.img
mount /dev/loop20 /mnt/loop-copy-from
Buat gambar sparse kosong baru
Sekarang, kita tidak akan memindahkan /backup, sebaliknya, kita akan memindahkan yang lainnya ke image 20G yang baru. Kami akan membuat file gambar sparse 20G dengan:
dd if=/dev/zero of=/vm/domains/b1/disk-root.img bs=1k count=1 seek=$((20*1024*1024)-1))
Selanjutnya, kita perlu menyiapkan perangkat loop baru, membuat sistem file, dan terakhir memasang gambar baru ini
losetup /dev/loop21 /vm/domains/b1/disk-root.img
mkfs.ext3 /dev/loop21
mount /dev/loop21 /mnt/loop-copy-to
Salin sistem file root
Sekarang, saya akan menyalin semuanya dari /mnt/loop-copy-from ke /mnt/loop-copy-to selain dari direktori cadangan 235G:
rsync -arplogu --exclude "/backup" --stats --progress /mnt/loop-copy-from/ /mnt/loop-copy-to
Bersihkan sistem file yang ada
Saya ingin menghapus semua yang ada di /mnt/loop-copy-from kecuali direktori cadangan:
cd /mnt/loop-copy-from; ls | grep -v 'cadangan' | xargs rm -rf
Kami kemudian akan melepas kedua perangkat:
umount /mnt/loop-copy-from
umount /mnt/loop-copy-to
Perkecil sistem file yang ada
Sekarang saya harus mengecilkan /dev/loop20 dari 400G ke 300G:
e2fsck -f /dev/loop20
resize2fs /dev/loop20 300G
Salin data boot
Dan kemudian, salin data boot sebelum menghancurkan perangkat loopback:
dd if=/dev/loop20 of=/dev/loop21 bs=1 count=512
losetup -d /dev/loop20
losetup -d /dev/loop21
Konfigurasi Xen dan boot VM
Sekarang edit file konfigurasi Xen VM, dalam kasus saya, /etc/xen/b1.cfg, ubah:
disk = [ 'file:/vm/domains/b1/disk.img,xvda2,w', 'file:/vm/domains/b1/swap.img,xvda1,w', ]
Dengan:
disk = [ 'file:/vm/domains/b1/disk-root.img,xvda2,w', 'file:/vm/domains/b1/disk.img,xvda3,w', 'file:/vm/domains/b1/swap.img,xvda1,w', ]Dan akhirnya:
xm buat b1.cfg
Tautan
Detik Digital IO
Debian Wheezy XEN + Pengaturan Tamu