소프트웨어 RAID 10 어레이를 갖춘 KVM 호스트가 있습니다. 소프트웨어 RAID 10 어레이는 호스트의 PV이며 VG를 포함합니다.
호스트 수준에서 사용하는 여러 LV(KVM 게스트 파일 .img
용 데이터 저장소 )가 있습니다.
일반적으로 게스트에 새 디스크를 추가할 때 호스트에 LV를 생성한 다음 이를 게스트 구성에 추가합니다. 그런 다음 pvcreate
블록 장치(파티셔닝 없이)에서 직접, vgcreate
그리고 게스트 내부의 새 블록 장치에서 lvcreate
.mkfs
pvcreate
호스트에서 LV 크기를 조정할 때 단계가 한 단계 줄어들었기 때문에 이전에는 블록 장치를 분할하는 데 신경 쓰지 않았습니다 . 단점은 이론적으로 일부 시스템이 LVM 메타데이터를 인식하지 못하기 때문에 분할되지 않은 블록 장치를 자동으로 분할하기로 결정할 수 있다는 것입니다. 그러나 실제로는 이런 일이 발생하는 것을 본 적이 없습니다.
호스트에서 LV 크기를 조정하면 PV의 여유 공간이 차지하므로 이 작업을 수행해야 하며 게스트 vgextend
에서도 마찬가지입니다. 게스트에서 LVM 실행을 건너 뛰고 호스트에서 실행한 다음 게스트에서 실행하는 방법은 없다고 생각합니까 ?lvextend
resize2fs
lvextend
resize2fs
답변1
게스트에서 LVM 실행을 건너뛰고 호스트에서 lvextend를 수행한 다음 게스트에서 size2fs를 조정하는 방법이 없다고 생각합니까?
게스트에서 LVM을 사용해야 한다는 요구 사항은 전혀 없습니다. 블록 장치를 직접 사용하면 됩니다. LVM 사용~에게스트는 귀하에게 거의 혜택을 제공하지 않습니다(귀하가 이미 호스트에서 LVM을 사용하여 공간을 관리하고 있기 때문에).
"KVM"이 "libvirt"를 참조하는 경우 이 명령을 사용하면 블록 장치 크기를 조정한 후 virsh blockresize
게스트가 추가 공간을 인식할 수 있습니다. 즉, 추가 LV가 있는 게스트가 있는 경우:
</disk><disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<source dev="/dev/tank/foobar"/>
<backingStore/>
<target dev="vdb" bus="virtio"/>
<alias name="virtio-disk1"/></disk>
어디:
# lvs
foobar tank -wi-ao---- 4.00g
호스트의 LV에 공간을 추가할 수 있습니다.
# lvresize -L +2G /dev/tank/foobar
libvirt에 크기를 업데이트하도록 지시합니다.
# virsh blockresize myguest /dev/tank/foobar --size 0
그런 다음 게스트 내부에서 파일 줄기의 크기를 조정합니다.
guest# resize2fs 1.42.12 (29-Aug-2014)
Resizing the filesystem on /dev/vdb to 1572864 (4k) blocks.
The filesystem on /dev/vdb is now 1572864 (4k) blocks long.