Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

KVM:仮想マシンのディスクサイズを拡大または縮小する方法は?

この記事では、一般的なディスクタイプに合わせてKVM仮想マシンディスクのサイズを変更する方法について説明します。 Linux上のKVMハイパーバイザーでデータを失うことなく仮想マシンのディスクサイズを正しく増やす方法を示し、ディスクサイズを減らすためのオプションについて説明します。

KVM仮想マシンのディスクサイズを拡大/拡張するにはどうすればよいですか?

KVMで仮想ディスクを増やす

20GBの仮想ディスクのサイズを増やす例を考えてみましょう。仮想ディスクの設定を変更する前に、VMの電源を切ってください。

KVM仮想マシンの仮想ディスク設定を表示するには、次のコマンドを使用します。

qemu-img info / path_to_disk

次のような結果が表示されます:

KVM:仮想マシンのディスクサイズを拡大または縮小する方法は?

サイズを示す2つのフィールドがあります:virtual_sizeとdisk_size:

  • virtual_size –は、ディスクを作成または拡張するときに設定される仮想ディスクのサイズです(この例では、最大ディスクサイズは20GBです)。
  • disk_size —はディスクファイルの現在のサイズです。たとえば、ディスクが物理サーバー上で占めるスペースの量(qcowディスクフォーマットにのみ適用されます)。この例では、仮想ディスクはストレージ上でわずか1.6GBしか使用しません。
そして、KVMディスクタイプ(フォーマット)についてのいくつかの言葉。 qcow2の使用をお勧めします の代わりに KVMで仮想マシンを作成する場合。後でその理由を説明します。

次のステップでは、仮想マシンのサイズを5GB増やします(ディスクを適切に拡張するには、仮想マシンにスナップショットがないようにする必要があります)。
#qemu-img resize / path toディスク+5G

Image resized.

仮想ディスクの設定を確認すると、拡張されていることがわかります。

#qemu-img info / path_to_disk

image: /path_to_disk
file format: qcow2
virtual size: 25G (26843535600 bytes)
disk size: 1.6G
cluster_size: 65536
Format specific information:
compat: 0.10
refcount bits: 16

作業の一部を実行しましたが、仮想マシンのゲストOSでもいくつかのアクションが必要です。次に、ゲストCentOS7およびWindowsServer2012R2でディスクサイズを拡張する方法を示します。

KVMハイパーバイザーでVM用に別の仮想ディスクを追加する場合は、 qemu-img およびvirsh ツールが使用されます。

CentOS Linuxを実行している仮想マシンでパーティションを拡張するにはどうすればよいですか?

KVMサーバー側で仮想ディスクのサイズを増やした後、仮想マシンを起動して接続します。ハードディスクパーティション管理ツールfdiskを使用します パーティションとファイルシステムのサイズを拡張します。

SSH経由でVMゲストOSに接続し、さらに5Gbのディスク容量が表示されることを確認します。

df –h
fdisk -l <​​/ code>

KVM:仮想マシンのディスクサイズを拡大または縮小する方法は?

スクリーンショットは、/ dev / vda2のサイズが20GBで、使用可能なディスク容量が25GBであることを示しています。

/ dev / vda2を利用可能な最大サイズに拡張しましょう:

#fdisk / dev / vda

Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): d
Partition number (1,2, default 2):
Partition 2 is deleted
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2):
First sector (1050624-52428799, default 1050624):
Using default value 1050624
Last sector, +sectors or +size{K,M,G} (1050624-52428799, default 52428799):
Using default value 52428799
Partition 2 of type Linux and of size 24.5 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

次に、仮想マシンを再起動し、新しいディスクサイズを適用するコマンドを実行します。

#xfs_growfs / dev / vda2

meta-data=/dev/vda2 isize=512 agcount=4, agsize=1277888 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=5111552, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 5111552 to 6422272

#df -h

Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.6M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 25G 1.3G 24G 6% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0

その結果、拡張パーティション/ dev/vda2が作成されました。これがまさに私たちが行ったことです:

  • fdisk / dev / vda — fdiskを実行し、/ dev/vdaに接続しました;
  • / d —パーティションを削除しました。デフォルトでは、必要なのはパーティション2だったので、次の項目でEnterキーを押しただけです。
  • / n –新しいパーティションを作成し、Enterキーまたは pを押しました 、次にEnterキーをもう一度押します。これは、作成しようとしたパーティションがデフォルトで2になるためです。
  • 最初と最後のセクターを指定するときに、パーティションを最大に拡張する場合は、Enterキーを押すだけです。特定のサイズを設定する場合は、メニュー+ size {K、M、G};
  • に示すように、最後のセクターにディスクサイズを入力します。
  • / w —新しい設定を適用します。

VMの再起動後、次のコマンドを使用してディスクを確認します。

xfs_growfs / dev / vda2

一部のソースでは、次のコマンドの使用を推奨しています:

resize2fs / dev / vda2

ただし、XFSファイルシステムでは機能しません!

したがって、CentOS7を実行している仮想マシンのディスクサイズを拡張しました。

ゲストWindowsServerのディスクサイズを増やす方法

RDPまたはVNCを使用してWindowsServer仮想マシンに接続し、ディスクを拡張します。

  1. サーバーマネージャーを開く->ツール->コンピューターの管理;
  2. ストレージを選択します ->ディスク管理 左ペインにあります。追加されたすべてのディスクパーティションと未割り当て領域が表示されます。 KVM:仮想マシンのディスクサイズを拡大または縮小する方法は?
  3. 増やしたいパーティションを選択し、ボリュームの拡張をクリックします; KVM:仮想マシンのディスクサイズを拡大または縮小する方法は?
  4. デフォルトでは、ディスクサイズを増やすために使用可能なすべてのスペースが提供されます。 KVM:仮想マシンのディスクサイズを拡大または縮小する方法は?
  5. [次へ]をクリックして拡張機能を終了します。その後、パーティションのサイズが大きくなります。 KVM:仮想マシンのディスクサイズを拡大または縮小する方法は?

仮想マシンのディスク拡張の前に、仮想ディスクをバックアップすることをお勧めします。仮想マシンを停止し、ディスクイメージを空き領域のあるバックアップディレクトリにコピーします。拡張プロセス中に問題が発生した場合は、いつでもバックアップから仮想ディスクイメージを復元できます。

KVM仮想マシンのディスクサイズを減らす方法

私の仕事では、この問題に遭遇することがよくありますが、残念ながら、KVMの仮想マシンのディスクサイズを安全に減らすことはできません。物理ストレージ上の仮想ディスクサイズを減らす唯一の許容可能な方法は、ディスクを変換することです。

KVM仮想マシンのディスク容量を減らす方法を説明するガイドはWebにたくさんありますが、これは機能しません。

私が出くわしてテストしたいくつかの例を挙げます。

Qemuを使用したKVMディスクサイズの削減

一部のリソースでは、qemuツールで実行できるアクションについて説明しています。次のコマンドを使用して、仮想マシンのディスク容量を減らすことができます。

qemu-img resize / path_to_disk -5G —ディスク容量を5G縮小する

または、特定の仮想ディスクサイズを設定する次のオプション:

qemu-img resize / path_to_disk 25G —ディスクサイズを25Gに設定する

このコマンドを実行するとどうなりますか?サーバーを起動した後、システムは起動しません:

Unable to verify superblock, continuing...
Sorry, could not find valid secondary superblock. Exiting now.

KVM:仮想マシンのディスクサイズを拡大または縮小する方法は?

最初にfdiskを使用してシステムのディスクサイズを小さくしようとしましたが、物理サーバーでディスクの縮小をスキップしてもシステムが起動しません。そしてそれは非常に論理的です。縮小しようとしているパーティションはシステムのものであり、サイズを縮小しようとするとOSの情報が明らかに消去されるため、OSは起動しません。

イメージ置換を使用した仮想ディスクサイズの縮小

これらのガイドであまり一般的ではない変形は、ディスク交換を使用してディスク容量を減らすことです。これは、必要なディスクサイズで新しい仮想マシンを作成することを意味します。次に、新しいディスクイメージを古いディスクイメージに置き換えます。これは、さまざまなソースの説明に基づいて機能します。この方法を確認したところ、以前のバージョンと同様にファイルシステムが動作しなくなりました。コマンドの例を次に示します。

virt-resize / old_disk_image / new_disk_image

rawからqcow2形式へのディスク変換を使用する方法もいくつかありましたが、私は最初はこの形式でマシンを作成しています。これがその理由の説明です。

KVMディスクフォーマットとQCOW2ディスク圧縮

記事の冒頭で、rawとqcowの2つのディスクフォーマットについて説明しました。

利点は、最大のパフォーマンスと一般性です。しかし、それには多くの欠点があり、その主なものは次のとおりです。

  • 仮想ディスクファイルは、物理サーバー上で割り当てられたすべてのスペースを占有します。
  • スナップショットを撮ることはできません。

Qcow2 ネイティブのQEMUおよびQEMU-KVMハイパーバイザー形式です。これは、KVMでサポートされている他のすべての形式の中で最も便利な仮想ディスク形式です。データが仮想マシンに蓄積され、スナップショットがサポートされると、ディスクイメージが増加します。

qcow2の利点は何ですか?仮想ディスクはサーバーストレージ上で必要なだけのスペースを占有するため、仮想ディスクのサイズを小さくする必要はありません。サーバー上でデータが絶えず上書きされ、ディスクが膨張している場合は、簡単にデータを圧縮できます。このオプションについて考えてみましょう。仮想ディスク領域をゼロで埋めてから、ファイルを削除します:

dd if =/ dev / zero of =/ mytempfile
rm -rf / mytempfile

KVM:仮想マシンのディスクサイズを拡大または縮小する方法は?

サーバーから確認すると、以前はディスクイメージのサイズは2.4Gでしたが、その後5.9Gになりました:

#du -sh / image_path

2.4G *****

#du -sh / image_path

5.9G *****

これは、仮想マシンから情報を削除した後、仮想ディスクのサイズが縮小していないことを意味します。仮想ディスクファイルが実際のサイズを取得できるようにするには、次の方法を使用します。

仮想ディスクファイルをバックアップし、仮想マシンを停止してから、次の手順を実行します。

qemu-img convert -O qcow2 / old_image / new_image

次に、両方のディスクのサイズを比較できます。

#du -sh / new_disk

1.6G /****

#du -sh / old_disk

5.8G /****

ご覧のとおり、圧縮ディスクのサイズは1.6Gです。必要に応じて新しいディスクイメージファイルの名前を変更し、仮想マシンを起動します。
#df -h

Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.6M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 25G 1.3G 24G 6% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0

この方法は機能します。ずっと使っていましたが、仮想マシンのファイルシステムに障害が発生したことはありませんでした。ただし、データが失われないように、何かを行う前にディスクをバックアップすることを強くお勧めします。

この記事で伝えたかったのはこれだけです。このWebサイトの訪問者の誰かが、KVM(圧縮ではない)のディスクサイズを減らすための他の本当に実用的な方法を知っている場合は、ここで説明してください。テストします。


  1. vSphere Hypervisor ESXi 6.7 で仮想マシンを作成する方法

    vSphere Hypervisor ESXi のインストールが完了した後の最も一般的で重要なタスクの 1 つは、仮想環境に必要な仮想マシンを作成することです。このタスクを実行するには、ESXi ハイパーバイザー ホスト クライアントまたは vCenter Server for Windows から「新しい仮想マシン」ウィザードを使用する必要があります。 どちらの方法でも、仮想マシンを作成するためのほぼ同じオプションが提供されますが、そのうちの 2 つのうち、vCenter Server for Windows には、時間を節約し、展開プロセスを管理しやすくスケーラブルにするいくつかの追加機

  2. 物理マシンを VirtualBox マシンに変換する方法

    物理マシンを VirtualBox で実行できる仮想マシンに変換する場合は、以下を読み続けてください。 古いコンピューターに含まれるプログラムやファイルを保存しておく必要がある場合があります。このような場合、(ハードウェアに問題がない場合) 古いコンピューターを保持するか、VirtualBox を使用して開くことができる仮想マシンに物理コンピューターを変換できます。 このチュートリアルでは、物理的な Windows XP マシンを VirtualBox マシンに変える方法を学びます。同じ手順を使用して、Windows 7、8、または 10 OS を実行している物理マシンを VirtualB