私のXen仮想サーバーの1つは、週末に400Gディスクを分割してサイズ変更する必要があり、ダウンタイムを最小限に抑えたいと考えていました。ディスクには240Gが使用され、そのうち235Gは/ backupディレクトリであり、残りの5Gは通常のDebianLinuxインストール専用です。ディスクを2つのディスクに分割したかったのです。Linuxシステムを含む20GBのディスクと、/backupとしてマウントする300Gのディスクです。次に、DRBDセットアップを適用して、その300Gバックアップパーティションを別の2番目のバックアップマシンに複製できます。
物理ホストに大量のデータをコピーしなければならない状況に陥りたくありませんでした。また、実行中に仮想マシンをダウンさせたくありませんでした。
仮想マシンのディスクイメージは/vm/domains/b1/disk.imgにあり、それに付随するswap.imgについて心配する必要はありません。
問題:
losetup -a
使用されているすべてのループデバイスを検索します。私の場合、/ dev/loop20が最初の無料デバイスでした。次に、イメージのループバックデバイスを設定し、マウントします。
mkdir -p / mnt / loop-copy-from / mnt / loop-copy-to
losetup /dev/loop20 /vm/domains/b1/disk.img
マウント/dev/ loop20 / mnt / loop-copy-from
ここで、/ backupを移動するのではなく、他のすべてを新しい20Gイメージに移動します。次のコマンドを使用して、20Gのスパースイメージファイルを作成します。
dd if =/ dev / zero of =/ vm / domains / b1 / disk-root.img bs =1k count =1 seek =$(((20 * 1024 * 1024)-1))
次に、新しいループデバイスをセットアップし、ファイルシステムを作成して、最後にこの新しいイメージをマウントする必要があります
losetup /dev/loop21 /vm/domains/b1/disk-root.img
mkfs.ext3 / dev / loop21
/ dev / loop21 / mnt / loop-copy-to
をマウントします次に、/ mnt/loop-copy-fromから/mnt/ loop-copy-まで、235Gバックアップディレクトリ以外のすべてをコピーします。
rsync -arplogu --exclude "/ backup" --stats --progress / mnt / loop-copy-from / / mnt / loop-copy-to
/ mnt / loop-copy-fromのバックアップディレクトリを除くすべてを削除したい:
cd / mnt / loop-copy-from; ls | grep-v'バックアップ'| xargs rm -rf
次に、両方のデバイスをアンマウントします:
umount / mnt / loop-copy-from
umount / mnt / loop-copy-to
/ dev / loop20を400Gから300Gに縮小する必要があります:
e2fsck -f / dev / loop20
resize2fs / dev / loop20 300G
次に、ループバックデバイスを破棄する前にブートデータをコピーします。
dd if =/ dev / loop20 of =/ dev / loop21 bs =1 count =512
losetup -d / dev / loop20
losetup -d / dev / loop21
Xen構成とVMブート
次に、Xen VM構成ファイル(私の場合は/etc/xen/b1.cfg)を編集し、次のように変更します。
disk = [ 'file:/vm/domains/b1/disk.img,xvda2,w', 'file:/vm/domains/b1/swap.img,xvda1,w', ]
あり:
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', ]そして最後に:
xm create b1.cfg
IOデジタル秒
Debian WheezyXEN+ゲストセットアップ