とにかく仮想マシンのディスクのサイズを変更する方法はありますか?ディスクサイズを32GBから64GBに増やしたとします。 Ubuntuサーバー11.10 64ビットでKVM/Qemuを実行しています。ありがとう。
Debianベースのディストリビューションでは、代わりにvirt-resize
を使用する必要があります。これは、今ではほとんどすべてを処理します。イメージがWin7と呼ばれると仮定します(なぜですか?)。まず、VMがシャットダウンされていることを確認してください:
ツールをインストールします。
# apt-get install libguestfs-tools
VMディスクの場所を取得します。
# virsh dumpxml Win7 | xpath -e /domain/devices/disk/source
Found 2 nodes in stdin:
-- NODE --
<source file="/var/lib/libvirt/images/Win7.img" />
-- NODE --
<source file="/var/lib/libvirt/images/Win7.iso" />
次の/var/lib/libvirt/images/Win7.img
を適応させる必要がある場合があります。
# virt-filesystems --long --parts --blkdevs -h -a /var/lib/libvirt/images/Win7.img
Name Type MBR Size Parent
/dev/sda1 partition 07 100M /dev/sda
/dev/sda2 partition 07 32G /dev/sda
/dev/sda device - 32G -
64Gディスクを作成します。
# truncate -s 64G /var/lib/libvirt/images/outdisk
/ dev/sda2(ブートパーティションではない)を展開する必要があります。
# virt-resize --expand /dev/sda2 /var/lib/libvirt/images/Win7.img /var/lib/libvirt/images/outdisk
Examining /var/lib/libvirt/images/Win7.img ...
100% [progress bar] --:--
**********
Summary of changes:
/dev/sda1: This partition will be left alone.
/dev/sda2: This partition will be resized from 32G to 64G. The
filesystem ntfs on /dev/sda2 will be expanded using the
'ntfsresize' method.
**********
Setting up initial partition table on outdisk ...
Copying /dev/sda1 ...
Copying /dev/sda2 ...
100% [progress bar] 00:00
100% [progress bar] 00:00
Expanding /dev/sda2 using the 'ntfsresize' method ...
Resize operation completed with no errors. Before deleting the old
disk, carefully check that the resized disk boots and works correctly.
念のためバックアップを作成します(または、バックアップが必要ない場合はmv
を使用します)。
# cp /var/lib/libvirt/images/Win7.img /var/lib/libvirt/images/Win7.img.old
# mv /var/lib/libvirt/images/outdisk /var/lib/libvirt/images/Win7.img
さあブート!
詳細: man virt-resize
これを行う前に、ディスクイメージの完全なコピーをそのまま使用することをお勧めします。その後、すべてが壊れたら、コピーして最初からやり直すことができます。
あなたがする必要がある3つのことがあります:
1)ディスクイメージを大きくします。ホストで:
qemu-img resize foo.qcow2 +32G
これでゲストはより大きなディスクを見ることができますが、古いパーティションとファイルシステムはまだあります。
2)ディスクイメージ内のパーティションを大きくします。このためには、ゲストのLiveCDからブートする必要があります。マウントされたパーティションを台無しにすることはできないからです。これは非常に複雑で、おそらく最も危険な部分です。ここにコピーするのは非常に多いので、今のところ代わりにリンクします。あなたはこのようなことをしたい:
http://www.howtoforge.com/linux_resizing_ext3_partitions_p2
または2b)より多くのストレージスペースが必要な場合は、新しいパーティションを作成する方が簡単(かつ安全)です。 fdiskまたはcfdisk、または使い慣れたものを使用してください。ゲストディスクに未割り当ての領域がすべて表示されるはずです。
3)最後に、既存のパーティションのサイズを変更した場合、新しい大きなパーティション内のファイルシステムを大きくします(これは実際には上記のリンクのガイドに記載されています)。ゲストの内部:
resize2fs /dev/sda1
Caesiumの答えは素晴らしいと思います。同じことを達成するために、他のコマンドを書き留めたいだけです。
ファイルdisk.img
にディスクイメージがある、つまりパーティションテーブルと1つ以上のパーティションがあるとし、最後のパーティションを大きくしたいとします。あなたがしなければならないことは
1)4GiBなど、ファイル全体を大きくします。簡単な方法は、dd
を使用することです
dd if=/dev/zero of=disk.img bs=1c seek=4G count=0
2)fdiskを使用してパーティションを大きくします(これをpartedまたはより良いツールで行うことができればいいのですが...誰か?)
fdisk disk.img
p
と入力して、パーティションテーブルを印刷し、パーティションの開始セクターを探します。たとえば、パーティション2はセクター106496から始まります。
パーティションテーブルからそのパーティションを削除し、まったく同じセクターで始まり、後のセクターで終わる新しいパーティションを作成します。その後、パーティションには有効なファイルシステムが含まれます。
d
と入力し、削除するパーティション番号を指定します。 (むしゃむしゃ!)
n
と入力し、目的のパーティション番号を入力してから、セクターを開始します。以前と同じ開始セクターを使用する必要があります。最後に最後のセクターを指定するか、使用可能な最高のセクターをfdiskに選択させます。
w
と入力して、変更をディスクイメージファイルに書き戻し、fdiskを終了します。
3)次に、ファイルシステムのサイズを変更する必要があります。このためには、ディスクイメージ内のファイルシステムへのオフセット(=の位置)が必要です。セクターサイズ(通常は512)がわかっている場合は、セクター番号からこれを計算するか、parted
を使用できます。
parted disk.img u b p
(parted
はコマンドライン引数としてコマンドを受け取ることができるため、これは「ユニットバイト」および「印刷」を意味するため、パーティションテーブルを印刷し、サイズuintとしてバイトを使用します。)
これにより、パーティションの開始と終了が出力されます。パーティションが54525952から始まるとすると、losetup
でループバックブロックデバイスを作成します。
losetup -f --show -o 54525952 disk.img
losetup
は、たとえば/dev/loop0
など、どのdevを選択したかを示します。これでresize2fs
を使用できます:
resize2fs /dev/loop0
そして最後にループデバイスを取り外します
losetup -d /dev/loop0
見つかった最適なソリューションは次のとおりです。
http://www.linux-kvm.com/content/how-resize-your-kvm-virtual-disk
私は@Caesiumが言ったことは上記の公式リンクから与えられていると思う
これが役立つことを願っています。
3ステップ:
1.qemu-img resize windows.qcow2 +5GB
2.GParted live cd to resize
3.reboot and use os tools to resize