web-dev-qa-db-ja.com

仮想マシンのディスクのサイズを変更する方法は?

とにかく仮想マシンのディスクのサイズを変更する方法はありますか?ディスクサイズを32GBから64GBに増やしたとします。 Ubuntuサーバー11.10 64ビットでKVM/Qemuを実行しています。ありがとう。

23
Tong Wang

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

27
malat

これを行う前に、ディスクイメージの完全なコピーをそのまま使用することをお勧めします。その後、すべてが壊れたら、コピーして最初からやり直すことができます。

あなたがする必要がある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
18
Caesium

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
4
larsr

見つかった最適なソリューションは次のとおりです。

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
2
kamil