Установка на виртуальные LVM-диски без разделов

Установка на виртуальные LVM-диски без разделов

Я устанавливаю сервер Ubuntu на виртуальную машину KVM/libvirt с помощью текстового/консольного установщика.

Я намерен передать два тома LVM как root и подкачать их в VM как виртуальные диски.
Они определяются правильно как vdaи vdb, однако установщик, похоже, заставляет меня разбить их на разделы как диски, что нарушит гибкость LVM.

Как установить Ubuntu, отформатировав виртуальные диски напрямую, а не используя разделы, или это плохая идея?

Мотивация:

Суть в том, чтобы снизить сложность, убрав ненужный уровень абстракции из иерархии хранения.

  1. физические диски:host:/dev/sd{a,b}
  2. разбиение на разделы:host:/dev/sd{a,b}1
  3. SW-рейд:host:/dev/md1
  4. лвм:host:/dev/vg0/mylv_root
  5. Диск VirtIOguest:/dev/vda
  6. разбиение:guest:/dev/vda1
  7. файловая система:guest:/

В этой схеме при выделении дополнительного пространства для одной виртуальной машины мне приходится выполнять следующие шаги:

  1. lvresize
  2. parted, что особенно отвратительно
  3. resize2fs

Чтобы наоборот уменьшить выделенное пространство (что еще более некрасиво).

Для резервного копирования (например lvcreate --snapshot, с помощью ) есть дополнительный шаг, kpartexкак объяснил psusi.

Я хочу убрать 6. из уравнения, потому что не вижу, какую ценность дает эта абстракция. Но она стоит дополнительных сложностей, возможного влияния на производительность и небольших потерь пространства.

Хакерское решение:

Используя его, kpartxмне удалось переместить корневую файловую систему из «загрузочного раздела» (внутри другого временного логического тома) на целевой логический том, а затем выполнить загрузку с помощью прямой загрузки ядра.

kpartx -a /dev/vg0/mylv_bootstrapper
dd if=/dev/mapper/vg0-mylv_bootstrapper1 of=/dev/vg0/mylv_root bs=4M
e2fsck -f /dev/vg0/mylv_root
# Edit fstab inside /dev/vg0/mylv_root accordingly
resize2fs /dev/vg0/mylv_root
kpartx -d /dev/vg0/mylv_bootstrapper

Однако:

  1. Это кажется странным и неуклюжим.
  2. Мне не очень нравится идея прямой загрузки ядра, так как в этом случае мне пришлось бы вручную обновлять версию ядра гостевой системы на хосте каждый раз при обновлении ядра.

решение1

Ну, вам придется разбить/отформатировать пространство независимо от того, LVM это или нет.

Да, KVM увидит устройства как «vda» и «vdb».

В целом, хотя KVM использует сырые разделы / LVM, на мой взгляд, гораздо надежнее просто использовать виртуальный диск. Занимает то же самое место, и вы всегда можете использовать LVM на виртуальном диске и / или изменить размер виртуального диска.

решение2

На самом деле я обнаружил, что есть тривиальный ответ: если логические тома отформатированы (например, host# mkfs.ext4 /dev/vg0/mylv_root), то установщик обнаружит и разрешит использовать их как "раздел 1 виртуального диска". Затем он может даже переформатировать разделы.

Однако Grub не установится, вместо этого можно использовать прямую загрузку ядра.

Связанный контент