KVM으로 온라인 디스크 크기를 조정할 수 있습니까?


15

우리는 몇몇 프로젝트에서 Linux 용 KVM 가상화를 피하고 있습니다. 지금까지 모든 것이 잘 진행되고 있습니다. 그러나 요구 사항 중 하나는 재부팅하거나 오프라인 상태로 만들지 않고 실행중인 게스트에 디스크 공간을 추가하는 기능입니다. KVM에서 가능합니까?

지금까지 내가 찾은 것은 (아직 테스트되지 않은) 디스크를 컴퓨터에 핫 플러그하는 기능입니다. 이 경로로 이동하면 게스트의 LVM 볼륨 그룹에 항상 새 디스크를 추가 한 다음 선택한 논리 볼륨을 확장 할 수 있습니다. 이 접근 방식의 가장 큰 단점은 시간이 지남에 따라 가상 디스크가 여러 개인 게스트가 생길 수 있다는 것입니다. "실제"디스크 공간은 SAN을 통해 호스트에 제공되므로 언제든지 호스트에 더 많은 공간을 추가 할 수 있습니다.


(그리고 "예"가능합니다.)
poige

답변:


4

나는 당신이 기계를 쓰러 뜨리지 않고 그것을하고 싶다면 언급 한 것을 고집하고 있다고 생각합니다.

가상 머신에 LUN을 SAN에서 바로주고 공간을 관리하지 않는 이유는 무엇입니까? 라이브 마이그레이션과 같은 기능을 사용하려는 경우 더 효과적입니다.

KVM은 QEMU를 기반으로하므로 이미지 형식 지원은 모두 해당 프로젝트에서 제공됩니다. 다음 은 Qemu / KVM이 지원하는 다양한 형식의 크기를 조정 하는 좋은 방법 입니다. 그러나 Qemu 포럼은 여기에 확실한 답변이 없다면이 질문을하기에 좋은 장소입니다.

이상적이지 않은 또 다른 옵션은 드라이브에 실제로 큰 qcow2 또는 다른 스파 스 이미지 형식을 사용하는 것입니다. 따라서 각 머신에 OS 용 소형 드라이브와 LVM 하의 데이터 용 대용량 스파 스 이미지를 제공 할 수 있습니다. 최소한 관리해야 할 가상 드라이브 / 이미지 수를 유지해야합니다. 그러나이 씬 프로비저닝은 1000 대의 머신에이 작업을 수행하고 모든 사람이 볼 수있는 여유 공간을 차지하면 문제가 될 수 있습니다.

XEN 나는 현재 같은 제한이 있다고 생각합니다.


추가로 고려해야 할 사항은 게스트 자체에서 SAN 스토리지를 마운트하는 것입니다. 그리고 추가 정보도 감사합니다.
Eil

씬 프로비저닝도 조각화로 인해 비용이 많이들 수 있습니다.
wazoox

15

나는 그것이 오래된 질문이라는 것을 알고 있지만 해결책을 찾기 위해 인터넷을 검색하면서 다른 사람에게 도움이되기를 바랍니다.

오늘이 그것 입니다 컴퓨터의 하드 드라이브 크기를 조정할 수 있습니다. 여기에서 작동하는 방법을 찾았습니다.

https://bugzilla.redhat.com/show_bug.cgi?id=648594

다음 단계를 수행해야합니다.

  1. 크기를 조정하려는 하드 드라이브의 파일 이름과 KVM 장치 이름을 찾으십시오.

    root@vhstage02:/data# virsh dumpxml test | xpath -e /domain/devices/disk
    Found 2 nodes in stdin:
    -- NODE --
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" />
      <source file="/data/test.img" />
      <backingStore />
      <target dev="vda" bus="virtio" />
      <alias name="virtio-disk0" />
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" />
    </disk>
    -- NODE --
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw" />
      <source file="/data/images/debian-8.2.0-amd64-netinst.iso" />
      <backingStore />
      <target dev="hda" bus="ide" />
      <readonly />
      <alias name="ide0-1-1" />
      <address type="drive" controller="0" bus="1" target="0" unit="1" />
    </disk>
    

우리에게 흥미로운 것은 디스크입니다. 당신이 보일 것입니다 sourcealias블록. 나를 위해 파일 이름은 test.img이고 별명은 virtio-disk0입니다. 이 이름에 drive-qemu 드라이브 이름 을 추가 하려면 앞에 추가해야합니다 .

  1. 이제 qemu 모니터를 사용하여 드라이브 크기를 조정합니다.

    virsh qemu-monitor-command test block_resize  drive-virtio-disk0  100G --hmp
    

filename은 .img 확장자없이 사용되었으며 drive-는 디스크 별칭에 추가되었습니다. 100G는 우리가 원하는 드라이브의 결과 크기입니다.

  1. 기계에 로그인하여 실제 크기가 변경되었는지 확인하십시오.

    root@test:~# fdisk -l
    
    Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x7e6e7f71
    
    Device     Boot  Start       End   Sectors  Size Id Type
    /dev/vda1  *      2048    499711    497664  243M 83 Linux
    /dev/vda2       501758 167770111 167268354 79.8G  5 Extended
    /dev/vda5       501760 167770111 167268352 79.8G 8e Linux LVM
    

그게 다야! 이제 새 파티션을 만들거나 기존 파티션의 크기를 조정할 수 있습니다.


1
돌아와서이 답변을 추가해 주셔서 감사합니다! 기존 방식보다 훨씬 간단합니다.
Dave Sherohman

4

AFAIK는 불가능합니다. 새 디스크 이미지를 추가 할 수 있으며, 지적했듯이 LVM 볼륨에 새 이미지를 추가 할 수도 있지만 부팅 가능한 활성 디스크 이미지의 크기를 조정하려면 종료해야합니다. 파티션을 아래로 편집하십시오.

다음 은 이미지를 확장하는 좋은 설명 입니다. 시스템 종료가 필요하지만, 특히 --nonsparse image 옵션을 피하고 gparted 디스크를 iso 파일로 dd하고 KVM 게스트에 미리 마운트하는 경우 몇 분의 다운 타임으로 벗어날 수 있습니다. 도움이 되었기를 바랍니다.


2
문제는 실제로 KVM과 관련이 없습니다. Linux에서는 부팅 한 디스크의 크기를 조정할 수 없습니다. 물리적 RAID 어레이에도 적용됩니다.
wazoox

3

Linux 시스템이 실행되는 동안 디스크간에 이동할 수 있습니다. 한계는 변경할 수 없다는 것입니다 파티션 이있는 디스크에 파티션을 사용.

이렇게하려면 루트 파일 시스템이 LVM에 있어야합니다. 이는 종종 별도의 부트 파일 시스템을 가져야한다는 것을 의미합니다 (그러나 필수 사항은 아닙니다)

새 디스크를 연결 한 후 vgextend를 사용하여 LVM에 추가하고 pvmove를 사용하여 rootfs를 새 디스크로 이동 한 다음 lvextend 및 resize2fs를 사용하여 논리 볼륨 및 파일 시스템을 각각 확장 한 다음 vgreduce를 사용하여 볼륨에서 이전 디스크를 제거하십시오. 그룹. 일단 제거하면 이전 볼륨을 분리 할 수 ​​있습니다.

간단한 경우 부팅 파일 시스템을위한 작은 디스크가있어서 절대 손대지 않아도됩니다. 그러나 자체 설치되어 있으면 마운트를 쉽게 분리 할 수 ​​있습니다. 플러그를 뽑고 새 것을 연결 한 다음 시스템을 중지하지 않고 부트 디스크를 다시 빌드하십시오. (하고있는 동안 충돌하지 마십시오)

참고 : resize2fs는 파일 시스템을 축소 할 수도 있습니다.


0

가능한 ATM은 아니지만 개발중인 기능입니다. 대신 VM에서 iSCSI 대상에 연결하고 SAN 쪽에서 해당 대상의 공간을 관리합니다.


그가 사용할 수있는 대답으로 질문에 대답하지 않았습니다.
Mei

@David : 어떻게 생각하고 내 대답을 하향식으로 바꿀 수 있습니까? 내 답변이 현재 문제에 대한 해결 방법을 제공하지 않는 방법은 무엇입니까?
dyasny

"Not at atm ..."이라고 말한 후 현재 불가능한 기능에 대해 이야기했습니다. (이제 거의 2 년 후에는 다를 수 있습니다. 그러나이 답변은 그렇지 않습니다.)
Mei

1
2 년 전에 나는 "2 년 안에 가능할 것"이라고 말 했어야합니까? 내가 당신에게 선지자처럼 보이나요? 그 당시에는 핫 플러깅이 개발 중이 었으며 이것이 바로 제가 말한 것입니다. 그런 다음 스토리지를 VM에 연결하는 다른 접근 방식을 제공했는데 이는 전체 qemu 기능 세트와 독립적입니다. 절대로이 유일한 방법이었다 진술 없지만이다 방법.
dyasny

이해합니다. 귀하의 의도를보다 잘 보여주기 위해 귀하의 답변을 편집했습니다.
Mei
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.