![LVM VG をストレージ プールとして使用して KVM ゲスト ディスクのサイズを増やす方法は?](https://rvso.com/image/632736/LVM%20VG%20%E3%82%92%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%20%E3%83%97%E3%83%BC%E3%83%AB%E3%81%A8%E3%81%97%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20KVM%20%E3%82%B2%E3%82%B9%E3%83%88%20%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%A2%97%E3%82%84%E3%81%99%E6%96%B9%E6%B3%95%E3%81%AF%3F.png)
KVM ホスト サーバーは CentOS 6.5 を実行しており、LVM ボリューム グループ「storage_pool」が KVM のメイン ストレージ プールとして使用されます。
Ubuntu ゲストは ext4 ファイルシステムを使用してインストールされ、/dev/vda1 全体を / としてマウントします。ゲスト ディスクの構成は次のとおりです。
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/storage_pool/kvmguest.img'/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
ゲスト ディスクのサイズを増やすための最善のアプローチは何でしょうか? VG には空き領域がたくさんあります。
いくつかの例を見つけましたが、ほとんどはゲスト内でも LVM を使用しているか、完全には適用できませんでした。私が理解している限りでは、一般的な方法は、同じ VG 内により大きな LV を作成し、ゲストをシャットダウンし、データを転送し、新しい LV を使用するように構成を編集することですか?
ご提案やご指摘をいただければ幸いです
答え1
ゲストをシャットダウンする必要はありません (少なくとも 2019 年では不要です)。
単に
lvextend -L+<size>G /dev/<group>/<volume>
それから
virsh blockresize <domain> /dev/<group>/<volume> --size <newsize>
最後にゲストルームに入り、余分なスペースを活用するためにゲストルームで必要なことはすべて行います。
Windowsゲストでは、
diskpart
list volume
select volume <n>
extend
これらは、qemu 3.1.0 を搭載した Ubuntu 19.04 で KVM ドメインとして実行されている Windows 10 ゲストの C: ドライブを拡張するために私が実行した正確な手順です。
答え2
私が実行した手順は次のとおりです。
kvmゲストの論理ボリュームを拡張する
# lvextend -L+50G /dev/storage_pool/guest.img
kvmゲストをシャットダウンし、論理ボリュームを非アクティブ化します
# virsh shutdown guest # lvchange -a n /dev/storage_pool/guest.img
kvmゲストのパーティション情報を一覧にしてメモします。最も重要なのは最初のセクターです。セクターが表示されない場合は、「-u」または「-u sectors」スイッチを追加する必要があるかもしれません。
# fdisk -l /dev/storage_pool/guest.img
拡張されたスペース全体を埋めるためにパーティションを削除して再作成します。単位としてセクターを使用していることを確認し、同じ最初のセクター(パーティションが整列している場合は通常2048)を選択します。単位を切り替えるには、fdiskコマンドの「u」を使用できます。
# fdisk /dev/storage_pool/guest.img Command (m for help): d Partition number (1-4): 1 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First sector (...): 2048 Last sector...: hit enter and use the default last sector Command (m for help): a Partition number (1-4): 1 Command (m for help): w
ext3/4ファイルシステムを公開してサイズを変更する
# kpartx -a -v /dev/storage_pool/guest.img # e2fsck -p -f /dev/mapper/storage_pool-guest.img1 # resize2fs /dev/mapper/storage_pool-guest.img1 # e2fsck -p -f /dev/mapper/storage_pool-guest.img1 # kpartx -d -v /dev/storage_pool/guest.img
論理ボリュームをアクティブにしてkvmゲストを起動します
# lvchange -a y /dev/storage_pool/guest.img # virsh start guest
答え3
同じことを探していたところ、まだ回答のないあなたの質問を見つけました。私の場合は、次のことがうまくいきました:
通常の方法でゲスト (私の場合は Debian 7.0) をシャットダウンします。
「元の」LV(もちろんホストのVG内)を、たとえば5Gで拡張します。これを行うには、ホスト上でroot/sudoである必要があります。
lvextend -L +5G /dev/ストレージプールVG/拡張する仮想マシンVG
gparted で新しく拡張された lv (つまり、VM の「ディスク」) を開きます。
gparted /dev/mapper/YourStoragePoolVG-YourVirtualMachinesVGToExtend
- 注:しなければならない「/dev/mapper/...」パスを使用します。 ない「/dev/dm-77」または「/dev/YourStoragePoolVG/...」など(これは LVM のバグ/機能のようです)!
- 変更したボリュームのパーティションをいじります(通常どおり GUI を使用します)
- 注意: データ損失、fs タイプなどに関する警告を考慮してください。
- 注意: 注意してください。
- でgpartedパーティションのサイズを変更したり、LV 内の virtio ディスクに保存されているパーティション テーブル内でパーティションを移動したりできます。
- 1 つまたは複数のパーティションを拡張することは、私見では問題ではありません。パーティション/ファイルシステムの縮小については、Google を使用してください...
- gparted は、パーティション自体だけでなく、パーティション上のファイルシステムも適応させます。
- VM を再起動します。変更されたパーティションが表示されます。
前述したように、これは私にとってはうまくいきました (リスクを冒さずにおもちゃのインストールでこれを試すことができました)。どなたか上記の手順を確認して、これが一般的に機能するかどうかコメントしていただけませんか? ありがとうございます。
答え4
簡単です。ホストの LVEXTEND|LVRESIZE 後、GPARTED を搭載した LiveCD ISO から VM を起動します。CD の起動が完了したら、VM 内で使用されるルート パーティション名で GPARTED を実行します。
$ gparted /dev/vda1" # for VirtIO /dev/vda
または
$ gparted /dev/sda1" # for SATA emulated /dev/sda
GPARTEDの通常の方法でパーティションのサイズ変更を実行します