답변:
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 쉘을 통해 virtio 장치의 이름을 가져옵니다 ( drive-virtio-disk0
이 예에서는).
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 구조의 크기를 조정하십시오.
이러한 serverfault 질문은 비슷하지만보다 구체적인 KVM 온라인 디스크 크기는? & Centos Xen 크기 조정 DomU 파티션 및 볼륨 그룹 . 첫 번째는 온라인 상태 일 때 KVM 게스트를 늘리는 방법에 대한 질문을하고 두 번째는 LVM을 사용하여 XEN 전용입니다. KVM이 오프라인 상태 일 때이 작업을 수행하는 방법을 묻습니다.
참고 : 이 링크는 방법 # 1에 유용했으며 KVM의 디스크 공간을 늘리는 방법 (ext3 기반), 하우투 : KVM 가상 머신 이미지 크기 조정 방법을 보여줍니다 .
KVM 게스트에 대해 알아야 할 한 가지는 내부에서 사용중인 파티션이 디스크 공간을 늘리는 데 사용할 수있는 방법에 영향을 줄 수 있다는 것입니다.
방법 # 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 파일과 gparted를 새로 추가 된 디스크 공간으로 기존 파티션을 확장 할 수 있습니다. 이 마지막 단계는 기본적으로 추가 공간을 사용할 수 있도록 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.
위는 내 예이지만이 웹 사이트 의 단계를 수행했습니다.
virt-manager
KVM 서버를 최신 버전의 KVM (CentOS 5-> CentOS 6)으로 마이그레이션하기 전에 방법 1과 2를 광범위하게 사용했습니다. 이제이 qemu-img resize
방법도 사용합니다 .
lvextend /dev/Volgroup/lvname /dev/vda2
(여기에서 / dev / vda2는 물리적 볼륨입니다). 다른 옵션이 없으면 해당 볼륨 그룹의 최대 크기가 사용됩니다.
한 번에 내부 파티션 크기 조정 및 확장
qcow2 게스트 파일 이미지가있는 Ubuntu 호스트가 있었고 디스크 크기를 조정하고 적절한 파티션을 한 번에 모두 확장하려고했습니다. 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에는 LVM을 사용하여 vgWWW라는 하나의 볼륨 그룹과 두 개의 논리 볼륨 (스왑 용 및 다른 하나 용)이 포함 된 LVM을 사용하여 구성된 30GB vdisk가 있습니다.
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)을 사용하십시오.
끝났습니다.
이 방법으로 원하는 파티션을 확장 할 수 있습니다.
# see what partitions you have?
virt-filesystems --long -h --all -a olddisk
truncate -r olddisk newdisk
truncate -s +5G newdisk
# Note "/dev/sda2" is a partition inside the "olddisk" file.
virt-resize --expand /dev/sda2 olddisk newdisk
VM에 LVM이 있으면 쉽고 빠릅니다.
sudo system-config-lvm
터미널 입력) 를 엽니 다 . *.GUI는 매우 직관적이지만 문제가 있으면 다음 단계를 따르십시오.
노트! 적어도 CentOS 6에서 LVM GUI는 기본적으로 설치되어 있지 않지만로 설치할 수 있습니다 yum install system-config-lvm
.
이미지 크기 조정 :
qemu-img resize vmdisk.img +16G
이미지 크기를 16GB 늘립니다.
이미지에 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
부품 또한 선택하고 당신이 파티션의 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