
Я устанавливаю сервер Ubuntu на виртуальную машину KVM/libvirt с помощью текстового/консольного установщика.
Я намерен передать два тома LVM как root и подкачать их в VM как виртуальные диски.
Они определяются правильно как vda
и vdb
, однако установщик, похоже, заставляет меня разбить их на разделы как диски, что нарушит гибкость LVM.
Как установить Ubuntu, отформатировав виртуальные диски напрямую, а не используя разделы, или это плохая идея?
Мотивация:
Суть в том, чтобы снизить сложность, убрав ненужный уровень абстракции из иерархии хранения.
- физические диски:
host:/dev/sd{a,b}
- разбиение на разделы:
host:/dev/sd{a,b}1
- SW-рейд:
host:/dev/md1
- лвм:
host:/dev/vg0/mylv_root
- Диск VirtIO
guest:/dev/vda
- разбиение:
guest:/dev/vda1
- файловая система:
guest:/
В этой схеме при выделении дополнительного пространства для одной виртуальной машины мне приходится выполнять следующие шаги:
lvresize
parted
, что особенно отвратительно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
Ну, вам придется разбить/отформатировать пространство независимо от того, LVM это или нет.
Да, KVM увидит устройства как «vda» и «vdb».
В целом, хотя KVM использует сырые разделы / LVM, на мой взгляд, гораздо надежнее просто использовать виртуальный диск. Занимает то же самое место, и вы всегда можете использовать LVM на виртуальном диске и / или изменить размер виртуального диска.
решение2
На самом деле я обнаружил, что есть тривиальный ответ: если логические тома отформатированы (например, host# mkfs.ext4 /dev/vg0/mylv_root
), то установщик обнаружит и разрешит использовать их как "раздел 1 виртуального диска". Затем он может даже переформатировать разделы.
Однако Grub не установится, вместо этого можно использовать прямую загрузку ядра.