LVM VG를 스토리지 풀로 사용하여 KVM 게스트 디스크 크기를 늘리는 방법은 무엇입니까?

LVM VG를 스토리지 풀로 사용하여 KVM 게스트 디스크 크기를 늘리는 방법은 무엇입니까?

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

제가 진행한 절차는 다음과 같습니다.

  1. kvm 게스트의 논리 볼륨 확장

    # lvextend -L+50G /dev/storage_pool/guest.img
    
  2. kvm 게스트를 종료하고 논리 볼륨을 비활성화합니다.

    # virsh shutdown guest
    # lvchange -a n /dev/storage_pool/guest.img
    
  3. kvm 게스트의 파티션 정보(가장 중요한 첫 번째 섹터)를 나열하고 기록해 둡니다. 섹터가 표시되지 않으면 '-u' 또는 '-u 섹터' 스위치를 추가해야 할 수도 있습니다.

    # fdisk -l /dev/storage_pool/guest.img
    
  4. 전체 확장 공간을 채우기 위해 파티션을 삭제하고 다시 생성합니다. 섹터를 단위로 사용하고 있는지 확인하고 동일한 첫 번째 섹터(파티션이 정렬된 경우 일반적으로 2048)를 선택하려면 'u' fdisk 명령을 사용하여 단위 간에 전환할 수 있습니다.

    # 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
    
  5. 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
    
  6. 논리 볼륨을 활성화하고 kvm 게스트를 시작합니다.

    # lvchange -a y /dev/storage_pool/guest.img
    # virsh start guest
    

답변3

같은 내용을 검색했는데 아직 답변이 없는 질문을 찾았습니다. 나에게는 다음이 효과가 있었습니다.

  1. 일반적인 방법으로 게스트(내 경우에는 데비안 7.0)를 종료합니다.

  2. 예를 들어 5G만큼 "원래" LV(물론 호스트의 VG에서)를 확장합니다. 이를 위해서는 호스트에서 루트/sudo여야 합니다.

    lvextend -L +5G /dev/YourStoragePoolVG/YourVirtualMachinesVGToExtend

  3. gparted에서 새로 확장된 lv(예: VM의 "디스크")를 엽니다.

    gparted /dev/mapper/YourStoragePoolVG-YourVirtualMachinesVGToExtend

  • 참고: 당신~ 해야 하다"/dev/mapper/..." 경로를 사용하세요. ~ 아니다"/dev/dm-77" 또는 "/dev/YourStoragePoolVG/..." 또는 기타(LVM의 버그/기능인 것 같습니다)!
  1. 수정된 볼륨의 파티션을 살펴봅니다(일반적으로 GUI 사용).
  • 참고: 데이터 손실, fs 유형 등에 대한 경고를 고려하십시오!
  • 참고: 조심하세요.
  • ~ 안에갈라진, LV 내의 virtio 디스크에 저장된 파티션 테이블에서 파티션 크기를 조정하고 이동할 수 있습니다.
  • 하나 이상의 파티션을 확장하는 것은 IMHO 문제가 아닙니다. 파티션/fs 축소의 경우 Google을 사용하세요...
  • gparted는 파티션 자체뿐만 아니라 파티션의 파일 시스템도 조정합니다.
  1. VM을 다시 시작하세요. 이제 수정된 파티션이 표시됩니다.

내가 말했듯이 이것은 나에게 효과적이었습니다(위험을 감수하지 않고 일부 장난감 설치에 이것을 시도해 볼 수 있었습니다). 누군가 위의 지침을 검토하고 이것이 일반적으로 작동하는지 의견을 제시해 주시겠습니까? 감사합니다.

답변4

GPARTED가 탑재된 LiveCD ISO에서 호스트의 LVEXTEND|LVRESIZE가 VM으로 부팅된 후에는 쉽습니다. CD 부팅이 완료되면 VM 내에서 사용되는 루트 파티션 이름으로 GPARTED를 실행합니다.

$ gparted /dev/vda1" # for VirtIO /dev/vda

또는

$ gparted /dev/sda1" # for SATA emulated /dev/sda

GPARTED의 일반적인 방식으로 파티션 크기 조정을 수행합니다.

관련 정보