回答:
qemu-img resize vmdisk.img +10G
して画像サイズを10Gb増やしますstart the VM, resize the partitions and LVM structure within it normally
どうやるか?説明してください。
良くも悪くも、ターゲット仮想ディスクがマウントされていても、以下のコマンドが実行されます。これは、ディスクをアンマウントできない環境(ルートパーティションなど)、VMを維持する必要がある環境、およびシステム所有者がデータ破損のリスクを引き受ける意思がある環境で役立ちます。そのリスクを取り除くには、VMにログインして、最初にターゲットディスクをアンマウントする必要がありますが、これは常に可能とは限りません。
KVMハイパーバイザーから次を実行します。
ディスクイメージファイル自体のサイズを増やします(増やす量を指定します)。
qemu-img resize <my_vm>.img +10G
libvirtシェル(drive-virtio-disk0
この例では)を使用して、virtioデバイスの名前を取得します。
virsh qemu-monitor-command <my_vm> info block --hmp
drive-virtio-disk0: removable=0 io-status=ok file=/var/lib/libvirt/images/<my_vm>.img ro=0 drv=raw encrypted=0
drive-ide0-1-0: removable=1 locked=0 tray-open=0 io-status=ok [not inserted]
virtioドライバーにシグナルを送信して、新しいサイズを検出します(新しい合計容量を指定します)。
virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
次に、VMにログインします。実行dmesg
すると、virtioディスクが容量の変更を検出したことが報告されます。この時点で、必要に応じてパーティションとLVM構造のサイズを変更します。
これらのサーバー障害の質問は似ていますが、より具体的には、KVMオンラインディスクのサイズ変更ですか?&Centos Xenは、DomUパーティションとボリュームグループのサイズを変更します。1つ目はオンライン中にKVMゲストを増やす方法について質問し、2つ目はLVMを使用してXEN固有です。KVMがオフラインの間にこれを達成する方法を尋ねています。
注:このリンクは方法1で役立ち、KVMのディスク容量(ext3ベース)を増やす方法を示しています。HOWTO:KVM仮想マシンイメージのサイズを変更します。
KVMゲストで知っておくべきことの1つは、内部で使用しているパーティションが、ディスク容量を増やすために使用できる方法に影響する可能性があることです。
方法1:パーティションはext2 / ext3 / ext4ベースです
このメソッドの要点は次のとおりです。
# 1. stop the VM
# 2. move the current image
mv mykvm.img mykvm.img.bak
# 3. create a new image
qemu-img create -f raw addon.raw 30G
# 4. concatenate the 2 images
cat mykvm.img.bak addon.raw >> mykvm.img
これで、より大きなmykvm.imgファイルを手に入れて、gpartを起動し、既存のパーティションを新しく追加されたディスクスペースに拡張します。この最後のステップでは、基本的にOSパーティションを拡張して、余分なスペースを利用できるようにします。
方法#2:パーティションはLVMベースです
以下は、LVMを内部的に使用するKVMゲストのサイズを変更するために大まかに行った手順です。
VM内でfdiskを実行し、LVMパーティションを削除して再作成します
% fdisk /dev/vda
...
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 3263 26105625 8e Linux LVM
Command (m for help): d
Partition number (1-4): 2
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (14-5874, default 14): 14
Last cylinder or +size or +sizeM or +sizeK (14-5874, default 5874):
Using default value 5874
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 83 Linux
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 8e Linux LVM
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.
Syncing disks.
%
VMを再起動します
LVM物理ボリュームのサイズを変更する
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 24.90 GB / not usable 21.59 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 796
Free PE 0
...
% pvresize /dev/vda2
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 44.90 GB / not usable 22.89 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 1436
Free PE 640
...
LVM論理ボリュームのサイズ変更
% lvresize /dev/VolGroup00/LogVol00 -l +640
Extending logical volume LogVol00 to 43.88 GB
Logical volume LogVol00 successfully resized
ファイルシステムを成長させる
% resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 11501568 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 11501568 blocks long.
上記は私の例ですが、このWebサイトの手順に従いました
virt-manager
KVMサーバーを新しいバージョンのKVM(CentOS 5-> CentOS 6)に移行する前に、方法#1と#2を広範囲に使用しています。現在、このqemu-img resize
メソッドも使用しています。
lvextend /dev/Volgroup/lvname /dev/vda2
(すべて1行で、/ dev / vda2が物理ボリュームになります)。他のオプションがない場合、そのボリュームグループの最大サイズが使用されます。
ワンステップで内部パーティションのサイズ変更と拡張
qcow2ゲストファイルイメージを持つUbuntuホストがあり、ディスクのサイズを変更して適切なパーティションをすべて1ステップで拡張したいと考えていました。libvirtゲストファイルシステムユーティリティを設定する必要がありますが、いずれにしてもこれらは便利です。
ここからのインスピレーション:http : //libguestfs.org/virt-resize.1.html
ここで重要なコマンドは次のとおりです。 virt-resize
準備:
* Install libvirt file system utilities package
* sudo apt-get install libguestfs-tools
* Test to see if it works (it won't) -- you need to see "===== TEST FINISHED OK =====" at the bottom:
* sudo libguestfs-test-tool
* If you don't see "===== TEST FINISHED OK =====" at the bottom then repair it:
* sudo update-guestfs-appliance
* Run the test again and verify it works
* sudo libguestfs-test-tool
次の手順を実行します。
1)ゲストをシャットダウンします:
2)現在のサイズを確認し、libvirtユーティリティを使用して拡張するパーティション名を表示します。
sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file
3)新しい(40G)出力ディスクを作成します。
qcow: sudo qemu-img create -f qcow2 -o preallocation=metadata outdisk 40G
img: sudo truncate -s 40G outdisk
4)適切なパーティションを拡張しながら古いものを新しいものにコピーします(ステップ2のディスクパーティションが/ dev / sda1であったと仮定):
sudo virt-resize --expand /dev/sda1 indisk outdisk
5)indiskファイルの名前をバックアップとして、outdiskの名前をindiskに変更します(またはゲストXMLを変更します)
6)ゲストを再起動し、元のファイルを削除する前に新しいディスクファイルを慎重にテストします
7)利益!
-o preallocation=metadata
すると、スパースファイルが作成されます。このオプションを使用すると、サイズ全体が事前に割り当てられます。
-o preallocation=metadata
。そうでない場合は、このtruncate
ステップをスキップする必要があります。 virt-resize
とにかく適切にファイルを拡大します。
VM内でLVMを使用している場合、これを行う最も簡単な方法は、新しい仮想ディスクをVMに追加し、その上にボリュームグループと論理ボリュームを展開することです。
LVM runを使用しているかどうかを確認するにはsudo pvs; sudo vgs; sudo lvs
、次のようなものを取得します。
PV VG Fmt Attr PSize PFree
/dev/vda1 vgWWW lvm2 a- 30.00g 0
VG #PV #LV #SN Attr VSize VFree
vgWWW 1 2 0 wz--n- 30.00g 0
LV VG Attr LSize
root vgWWW -wi-ao 28.80g
swap vgWWW -wi-ao 1.19g
VMのOSがLVMを使用している場合。上記の例では、VMには30Gバイトのvdiskがあり、LVMを使用してvgWWWと呼ばれる1つのボリュームグループで構成され、2つの論理ボリュームを含みます。
VMでLVが使用されている場合:
sudo pvcreate /dev/vdb
sudo vgextend vgWWW /dev/vdb
sudo lvextend --extents +100%FREE /dev/vgWWW/root
(または、ボリュームをsudo lvextend --size +8G /dev/vgWWW/root
ずっと大きくしたくない場合、この例ではボリュームに8Gbを追加します)resize2fs /dev/vgWWW/root
注:上記はvg / lv名が私の例と同じであると想定しているため、変更することはほとんどありません。また、VMにvdb
新しいものと呼ばれる仮想ドライブが既にある場合は、別のものになります(vdc
など)
注: resize2fs
ext2、ext3、ext4ファイルシステムでのみ機能します。他の何かを使用している場合、エラーになり、何もしません。
注:ライブファイルシステムのサイズを変更するresize2fs
ときfsck
、マウントされていないファイルシステムの場合のように最初に実行するように求められることはありません。先に進む前に、読み取り専用のファイルシステムチェックを実行して、問題がないことを確認してください。
オンラインでサイズ変更を行うことができます。libvirtdはこれをネイティブにサポートします。
ブロックデバイス名を見つけます。「vda」のようなものでなければなりません
$ virsh domblklist <libvirtd_vm_name>
仮想デバイスのサイズを変更します。
$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>
ここで私は拡大した例であるvda
から、ディスクを50GB
する51GB
ためのundercloud
VM。
[root@gss-rhos-4 ~]# virsh domblklist undercloud
Target Source
------------------------------------------------
vda /home/images/undercloud.qcow2
.qcow2イメージファイルの詳細を見てみましょう。
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
それでは、vdaブロックデバイスのサイズを変更しましょう。
[root@gss-rhos-4 ~]# virsh blockresize undercloud vda 51G
Block device 'vda' is resized
そして確認:
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 51G (54760833024 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
[root@gss-rhos-4 ~]#
その後、ブロックデバイスとFSのサイズを変更するためのコマンドを表示するには、VMの内部で、このスクリプトを使用することができます。https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh。
virtioドライブとLVMを使用している場合、VMを再起動せずにVMのディスクのサイズを大きくする可能性があります。
(オプション)fdiskでプライマリパーティションを作成して/ dev / vdb1を取得し、kpartx -a / dev / vdbを使用してパーティションテーブルを再読み取りします
vgextend vg_name / dev / vdb1(またはパーティションを作成しなかった場合は/ dev / vdb)を使用します
できました。
VMにLVMがある場合、これは非常に簡単で高速です。
sudo system-config-lvm
端末に入力)*を開きます。GUIは非常に直感的ですが、問題がある場合は次の手順に従ってください。
注意!少なくともCentOS 6では、LVM GUIはデフォルトではインストールされませんが、でインストールできますyum install system-config-lvm
。
画像のサイズ変更:
qemu-img resize vmdisk.img +16G
画像サイズを16 GB増やします。
イメージにGPT(GUIDパーティションテーブル)がある場合、GPTで使用されるドライブサイズは新しいサイズと異なるため、次のように修正する必要がありますgdisk
。
MY_DRIVE=/dev/vda
gdisk $MY_DRIVE <<EOF
w
Y
Y
EOF
またはparted
:
parted $MY_DRIVE print Fix
何らかの理由でparted
、ttyが表示されない場合(Vagrantでプロビジョニングする場合など)に修正が機能しないため、を使用しますgdisk
。
パーティションサイズを増やして、使用可能なすべてのスペースを埋めます。
MY_PARTITION_GUID=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^Partition unique GUID: //p'
i
EOF
)
MY_PARTITION_FIRST_SECTOR=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^First sector: \([0-9]\+\).*/\1/p'
i
EOF
)
gdisk $MY_DRIVE <<EOF
d
n
$MY_PARTITION_FIRST_SECTOR
x
a
2
c
$MY_PARTITION_GUID
w
Y
EOF
このx a 2 <Enter>
部分はオプションであり、レガシーBIOSを使用している場合に必要です。
MY_PARTITION_GUID=...
また、c $MY_PARTITION_GUID
partsはオプションであり、パーティションUUIDを/etc/fstab
他の場所で使用する場合にのみ必要です。
再起動したりしてパーティションを再読み込みpartx -u $MY_DRIVE
かpartprobe
。
パーティションを拡張します。たとえばext2
、ext3
またはext4
:
MY_PARTITION="${MY_DRIVE}1"
resize2fs $MY_PARTITION
gpartedがマウントされた状態で、solus vmを使用できます。gpartedで使用すると、システムを簡単に起動してスペースを調整できます。正しいブート優先順位が設定されていることを確認してください。参考として、以下の便利なURLを参照してください。 https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html