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>
    

우리에게 흥미로운 것은 디스크입니다. 당신이 보일 것입니다 source및 alias블록. 나를 위해 파일 이름은 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.