KVM/qemu - использовать объемы LVM непосредственно без файла изображения?

Удаленно: это потребовало бы зональной передачи, которая будет заблокирована, если безопасность на сервере не была настроена очень плохо.

Локально: можно открыть зональный файл и grep через него.

22
задан 23 July 2012 в 10:23
4 ответа
  1. qemu-kvm может использовать LV как виртуальные диски вместо файлов. на самом деле это довольно распространенный вариант использования.
  2. libguestfs (и просто найдите набор инструментов virt - * ) может обеспечить доступ к гостевым файловым системам более чистым способом, чем все, что вы перемонтируете на хост напрямую, хотя оба варианта возможны.
  3. Изменение размера файловой системы онлайн не является функцией kvm, но гостевая ОС должна быть способна. resize2fs будет работать в виртуальной машине так же, как и на физическом оборудовании, единственная проблема заключается в том, что гость повторно определяет изменения размера. Попробуйте virt-resize в качестве стандартного инструмента, но также можно легко использовать lvresize и qemu-img (хотя и в автономном режиме, обычно требующем перезагрузки гостя) .

Я думаю, что lvresize с resize2fs действительно будет работать без гостевого перезапуска, но я еще не пробовал

хотя оба варианта возможны.
  • Изменение размера файловой системы в режиме онлайн не является функцией kvm, но гостевая ОС должна быть способна. resize2fs будет работать в виртуальной машине так же, как и на физическом оборудовании, единственная проблема заключается в том, что гость повторно определяет изменения размера. Попробуйте virt-resize в качестве стандартного инструмента, но также можно легко использовать lvresize и qemu-img (хотя и в автономном режиме, обычно требующем перезагрузки гостя) .
  • Я думаю, что lvresize с resize2fs действительно будет работать без гостевого перезапуска, но я еще не пробовал

    хотя оба варианта возможны.
  • Изменение размера файловой системы в режиме онлайн не является функцией kvm, но гостевая ОС должна быть способна. resize2fs будет работать в виртуальной машине так же, как и на физическом оборудовании, единственная проблема заключается в том, что гость повторно определяет изменения размера. Попробуйте virt-resize в качестве стандартного инструмента, но также можно легко использовать lvresize и qemu-img (хотя и в автономном режиме, обычно требующем перезагрузки гостя) .
  • Я думаю, что lvresize с resize2fs действительно будет работать без гостевого перезапуска, но я еще не пробовал

    единственная проблема заключается в том, что гость повторно определяет изменения размера. Попробуйте virt-resize в качестве стандартного инструмента, но также можно легко использовать lvresize и qemu-img (хотя и в автономном режиме, обычно требующем перезагрузки гостя) .

    Думаю, lvresize с resize2fs действительно будет работать без перезапуска гостя, но я еще не пробовал

    единственная проблема заключается в том, что гость повторно определяет изменения размера. Попробуйте virt-resize в качестве стандартного инструмента, но также можно легко использовать lvresize и qemu-img (хотя и в автономном режиме, обычно требующем перезагрузки гостя) .

    Думаю, lvresize с resize2fs действительно будет работать без перезапуска гостя, но я еще не пробовал

    9
    ответ дан 2 December 2019 в 20:02

    Я не знаю способа точно воспроизвести описанное вами поведение Xen. Однако вы можете использовать kpartx , чтобы предоставить разделы в LV, который содержит образ всего диска, как блочные устройства на хосте, которые затем можно смонтировать и т. Д.

    2
    ответ дан 2 December 2019 в 20:02

    См. Мой ответ на мой собственный вопрос по этой проблеме на Загрузка ядра KVM вне образа и существующего раздела . Короче говоря, заставить virt-install создать конфигурацию для этого довольно просто, учитывая небольшую модификацию гостя /etc/fstab.

    2
    ответ дан 2 December 2019 в 20:02

    Я использую qemu-kvm + libvirt с именно той конфигурацией, о которой вы спрашиваете, по указанным вами причинам, но дополнительно потому, что я получаю намного лучшую производительность без KVM уровень файловой системы хоста в области видимости. Если вы добавите VG в качестве «пула хранения» в virt-manager, вы можете создать такие виртуальные машины с помощью его удобного мастера. (Но в наши дни я просто пишу XML вручную, используя существующую виртуальную машину в качестве шаблона.)

    Вот очищенный вывод 'virsh dumpxml' для одного из моих гостей:

    <domain type='kvm'>
      <name>somevm</name>
      <uuid>f173d3b5-704c-909e-b597-c5a823ad48c9</uuid>
      <description>Windows Server 2008 R2</description>
      <memory unit='KiB'>4194304</memory>
      <currentMemory unit='KiB'>4194304</currentMemory>
      <vcpu placement='static'>2</vcpu>
      <os>
        <type arch='x86_64' machine='pc-1.1'>hvm</type>
        <boot dev='hd'/>
      </os>
      <features>
        <acpi/>
        <apic/>
        <pae/>
      </features>
      <cpu mode='custom' match='exact'>
        <model fallback='allow'>Nehalem</model>
        <vendor>Intel</vendor>
        <feature policy='require' name='tm2'/>
        <feature policy='require' name='est'/>
        <feature policy='require' name='monitor'/>
        <feature policy='require' name='smx'/>
        <feature policy='require' name='ss'/>
        <feature policy='require' name='vme'/>
        <feature policy='require' name='dtes64'/>
        <feature policy='require' name='rdtscp'/>
        <feature policy='require' name='ht'/>
        <feature policy='require' name='ds'/>
        <feature policy='require' name='pbe'/>
        <feature policy='require' name='tm'/>
        <feature policy='require' name='pdcm'/>
        <feature policy='require' name='vmx'/>
        <feature policy='require' name='ds_cpl'/>
        <feature policy='require' name='xtpr'/>
        <feature policy='require' name='acpi'/>
      </cpu>
      <clock offset='localtime'/>
      <on_poweroff>destroy</on_poweroff>
      <on_reboot>restart</on_reboot>
      <on_crash>restart</on_crash>
      <devices>
        <emulator>/usr/bin/kvm</emulator>
        <disk type='block' device='disk'>
          <driver name='qemu' type='raw'/>
          <source dev='/dev/vg1/somevm'/>
          <target dev='hda' bus='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
        </disk>
        <disk type='file' device='cdrom'>
          <driver name='qemu' type='raw'/>
          <target dev='hdc' bus='ide'/>
          <readonly/>
          <address type='drive' controller='0' bus='1' target='0' unit='0'/>
        </disk>
        <controller type='usb' index='0'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
        </controller>
        <controller type='ide' index='0'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
        </controller>
        <controller type='pci' index='0' model='pci-root'/>
        <interface type='bridge'>
          <mac address='00:00:00:00:00:00'/>
          <source bridge='br0'/>
          <model type='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
        </interface>
        <serial type='pty'>
          <target port='0'/>
        </serial>
        <console type='pty'>
          <target type='serial' port='0'/>
        </console>
        <input type='tablet' bus='usb'/>
        <input type='mouse' bus='ps2'/>
        <input type='keyboard' bus='ps2'/>
        <graphics type='vnc' port='-1' autoport='yes'/>
        <video>
          <model type='vga' vram='9216' heads='1'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
        </video>
        <memballoon model='virtio'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </memballoon>
      </devices>
      <seclabel type='none' model='none'/>
    </domain>
    

    Другая мысль (не имеет отношения к вашему вопросу, но это может помочь): если можете, убедитесь, что вы используете паравиртуализированные сетевые, блочные, случайные, тактовые драйверы и т. д. - они значительно быстрее, чем полностью виртуализированные. Это "model = virtio" выше. Вам необходимо загрузить модули драйверов в ядро ​​хоста, такие как virtio_net.

    Вот вывод 'virsh pool-dumpxml vg1':

    <pool type='logical'>
      <name>vg1</name>
      <uuid>9e26648e-64bc-9221-835f-140f6def0556</uuid>
      <capacity unit='bytes'>3000613470208</capacity>
      <allocation unit='bytes'>1824287358976</allocation>
      <available unit='bytes'>1176326111232</available>
      <source>
        <device path='/dev/md1'/>
        <name>vg1</name>
        <format type='lvm2'/>
      </source>
      <target>
        <path>/dev/vg1</path>
        <permissions>
          <mode>0700</mode>
        </permissions>
      </target>
    </pool>
    
    4
    ответ дан 2 December 2019 в 20:02

    Теги

    Похожие вопросы