Я не совсем уверен, как сформулировать этот вопрос (отсюда и плохое название), поэтому позвольте мне привести пример того, что я пытаюсь сделать.
На моем (старом) хосте Xen я могу представить файловые системы LVM непосредственно каждому гостю. Эти файловые системы фактически создаются и форматируются на хосте и передаются напрямую. Например, для одного из моих хостов, использующих отдельные разделы tmp и swap, я определяю хранилище следующим образом:
диск = [
'phy: / dev / vg1 / guest1-swap, sda1, w',
'phy: / dev / vg1 / guest1-disk, sda2, w',
'phy: / dev / vg1 / guest1-tmp, sda3 , ш ',
]
Итак, guest1-swap отформатирован как раздел подкачки, guest1-disk и guest1-tmp отформатированы с ext4, и с точки зрения гостя он просто видит их как три отформатированных раздела в / dev / sda.
(Это может показаться большой работой, но есть сценарии инициализации, такие как удивительные инструменты xen , которые автоматизировали почти все).
Это обеспечивает некоторые действительно полезные возможности, две из которых я особенно заинтересован в выяснении для KVM:
Смонтируйте гостевые файловые системы с хост-ОС . Я могу выполнить монтирование только для чтения любой гостевой файловой системы в любое время, даже когда гость работает. Это имеет побочное преимущество, позволяя my создавать снимки LVM любого существующего тома во время работы гостя. Таким образом, я могу централизованно создавать резервные копии всех моих гостей во время работы с хоста.
Изменение громкости онлайн . Поскольку тома содержат стандартные файловые системы Linux, я могу использовать комбинацию lvextend и resize2fs для расширения моих гостевых файловых систем, когда они находятся в сети.
В настоящее время я настраиваю хост KVM, который заменит хост Xen. Подобно настройке Xen, я использую LVM для обеспечения прямого доступа к файловой системе, но KVM / qemu ведет себя по-другому, так как всегда создает файл образа для гостей, даже на томе LVM. С точки зрения гостя, он видит это как неразмеченный диск, и гость может применить метку раздела, а затем создать разделы и файловые системы.
С точки зрения гостя это нормально, но с точки зрения сервера / управления это кажется гораздо менее гибким, чем описанная мной установка Xen. Я все еще новичок в KVM, поэтому я могу (надеюсь) что-то упустить.
Я столкнулся с этой проблемой, когда пытался повторно внедрить свое прежнее решение для резервного копирования на хосте KVM, и команда mount прервалась, когда я попытался смонтировать одну из файловых систем гостя. Таким образом, решение этой проблемы является моей текущей заботой, но это также заставило меня беспокоиться об изменении размера, потому что я уверен, что эта проблема также возникнет в какой-то момент.
Итак, вот мои вопросы:
Есть ли способ заставить kvm / qemu напрямую использовать файловые системы томов LVM, как я описал для моей установки Xen? Я использую libvirt для управления, если это имеет значение.
Если нет, что я могу сделать, чтобы получить аналогичные функции монтирования / резервного копирования в KVM? Я видел дискуссии об использовании libguestfs с FUSE для этого, но действительно ли это лучший вариант? Я бы предпочел придерживаться нативного монтирования файловой системы, если это вообще возможно.
Также, если нет, возможно ли изменить размер файловой системы в режиме онлайн под KVM? Я нашел несколько обсуждений / статей об этом, но ответы, кажется, повсюду без четких и определенно простых решений.
Извините за длинный пост, просто хотел убедиться, что это было ясно. Пожалуйста, дайте мне знать, если я могу предоставить любую другую информацию, которая будет полезна. С нетерпением жду обсуждения. :-)
источник
Ответы:
virt-*
инструментов) может обеспечить доступ к гостевым файловым системам более чистым способом, чем все, что вы перемонтируете непосредственно на хост, хотя оба варианта возможны.resize2fs
будет работать в виртуальной машине так же, как и на физическом оборудовании, единственная проблема заключается в переопределении гостя изменений размера. Попробуйте вvirt-resize
качестве стандартного инструмента, ноlvresize
иqemu-img
также может быть легко использована (хотя в автономном режиме, требуя гостевой перезапуск обычно).Я думаю, что
lvresize
сresize2fs
фактически будет работать без перезагрузки гостя, но я еще не пробовалисточник
virsh
но достаточно простойvirt-manager
. Более серьезные системы, такие как RHEV / oVirt, на самом деле все время используют LVM для хранилища на основе FC / iSCSIattach-disk
его для динамического подключения, но это не постоянно, и я не могу заставить его работать на /. Можете ли вы указать какую-либо документацию для этого или предоставить конкретные советы? Благодарность!Я использую qemu-kvm + libvirt именно с той конфигурацией, о которой вы спрашиваете, по причинам, которые вы перечислили, но дополнительно потому, что я получаю намного лучшую производительность без уровня файловой системы хоста KVM. Если вы добавите VG в качестве «пула хранения» в virt-manager, вы можете создать такие виртуальные машины с помощью удобного в использовании мастера. (Но я просто пишу XML вручную, используя существующую виртуальную машину в качестве шаблона).
Вот обработанный вывод 'virsh dumpxml' для одного из моих гостей:
Еще одна мысль (не относится к вашему вопросу, но она может помочь): если вы можете, убедитесь, что вы используете «паравиртуализированные» сетевые, блочные, случайные, тактовые и т. Д. Драйверы - они значительно быстрее, чем полностью виртуализированные. Это материал "модель = virtio" выше. Вы должны загрузить модули драйвера в ядро хоста, например virtio_net.
Вот вывод 'virsh pool-dumpxml vg1':
источник
virsh pool-dumpxml mypool
Я не знаю, как точно воспроизвести описанное вами поведение Xen. Тем не менее, вы можете использовать
kpartx
для предоставления разделов в LV, который содержит образ всего диска, как блочные устройства на хосте, которые вы затем можете подключить и т. Д.источник
Смотрите мой ответ на мой собственный вопрос по этому вопросу в KVM, загружающем ядро вне образа и существующий раздел . Короче говоря, получить virt-install для создания конфигурации для этого довольно просто, учитывая небольшую модификацию гостя / etc / fstab.
источник