KVM 및 Libvirt-새로운 virtio 디스크를 어떻게 핫 플러그합니까?


24

실행중인 KVM 가상 서버에 파일 기반 디스크를 핫 추가하려고합니다. 명령을 사용하여 처음부터 새 디스크를 만들었습니다

dd of=/home/cloud/vps_59/test.img bs=1 seek=5G count=0

그리고 나는 virsh shell에서 이것을 수행하여 게스트에 핫 추가하기를 바랐다.

virsh # attach-disk vps_59 /home/cloud/vps_59/test.img \
        vdd --driver=file --subdriver=raw

도메인의 XML 정의는 다음과 같습니다.

<disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/home/cloud/vps_59/root.img'/>
  <target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='disk'>
  <driver name='file' type='raw'/>
  <source file='/home/cloud/vps_59/test.img'/>
  <target dev='vdd' bus='virtio'/>
</disk>

보다시피, 드라이버 이름이 잘못되어 driver name='qemu'기존 vda디스크 와 같아야합니다 . 시도 --drive=qemu했지만 지원되지 않습니다.

둘째, Ubuntu 10.04.4 LTS를 실행하는 가상 머신을 재부팅하면 새로 추가 된 드라이브 만 "보"게됩니다. 드라이브를 "핫 플러그"로 만들려면 어떻게해야합니까? 가상 머신이 재부팅하지 않고 새 드라이브를 즉시 "보고"원합니다.


1
관련없는 제안, qemu-img대신에 사용 dd-그 주장은 더 자연스럽고 똑같은 일을합니다.qemu-img create test.img 5G
chutz

답변:


31

virsh attach-disk제한된 양의 옵션으로 사용하지 말아야한다는 점부터 시작하고 싶습니다 . 대신 별도의 임시 XML 파일로 또는 virt-manager GUI 응용 프로그램을 사용하여 원하는 정확한 디스크 형식을 지정하는 것이 좋습니다 (후자는 첫 번째 단계를 건너 뜁니다).

  1. 아래와 같은 디스크 정의로 임시 파일을 작성하십시오 .

    상황에 맞게 속성을 조정하십시오

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/path/to/disk-image.img'/>
      <target dev='vdb' bus='virtio'/>
    </disk>
    

    팁 : 현재 XML 도메인 구성을 <disk>살펴보고 해당 섹션을 복사 하십시오.

    virsh dumpxml <domainname>
    
  2. 이제 디스크를 현재 도메인에 추가하기 전에 필요한 핫 플러그 ​​커널 모듈이 게스트에로드되어 있는지 확인하십시오.

    최근 CentOS / RHEL / Fedora와 같은 일부 Linux 배포판에는 커널이 내장되어 있습니다. 이 경우을 확인하십시오 CONFIG_HOTPLUG_PCI_ACPI. 이 경우 y모든 설정이 완료되었으며이 단계를 건너 뛸 수 있습니다.

    modprobe acpiphp
    modprobe pci_hotplug
    

    /etc/modules부팅시 기본적으로로드되도록하려면 이 두 모듈을 추가하십시오 .

  3. 다음을 사용하여 실행중인 VM에 디스크를 추가하십시오.

    virsh attach-device <domain name> /path/to/disk.xml
    

    선택적으로 --persistentLibvirt가 도메인 XML 정의 'persistent'를 업데이트 할 수 있는 옵션을 추가하십시오 .

  4. 마지막으로 게스트 내부에서 디스크가 실제로 핫 플러그 ​​삽입되었는지 확인하십시오. 커널은 다음과 같이 확인할 수 있습니다 dmesg.

    [  321.946440] virtio-pci 0000:00:06.0: using default PCI settings
    [...]
    [  321.952782]  vdb: vdb1 vdb2
    

    위의 예 vdb에서 파티션 테이블에 두 개의 파티션이있는 것처럼 디스크를 추가했습니다 .

참고 문헌


--persistent가상 시스템의 전원을 끌 때이 구성이 손실되지 않도록 추가 하지 않아야합니까?
chutz December
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.