Образы дисков виртуальных машин обычно содержат таблицу разделов, которая содержит одну или несколько файловых систем. Изменение размера немного болезненно, так как вам нужно тщательно переписать таблицу разделов, прежде чем вы сможете изменить размер. Внутри виртуальной машины Linux измененная таблица разделов не может быть прочитана на лету, поэтому вам потребуется еще одна перезагрузка виртуальной машины.

Я бы хотел, чтобы образ диска содержал файловую систему напрямую, без каких-либо разделов. Это позволит легко изменять размеры как внутри, так и снаружи виртуальной машины. Тем не менее, в такой установке загрузчик Grub больше не является надежным, потому что он должен указывать на свой stage2 через жестко закодированное положение блока, что делает виртуальную машину не загружаемой каждые несколько месяцев, когда файловая система перемещает содержимое. (В таблице разделов DOS он использует нераспределенное пространство между MBR и первым разделом, чтобы поместить в него свой stage2. Для других таблиц разделов вы создаете отдельный раздел загрузчика для этого.)

Есть ли способ обойти это?

Как организовать образ диска виртуальной машины, чтобы было как можно проще изменить размер?

Первые идеи:

  • Использование двух образов дисков на виртуальную машину, один диск фиксированного размера только для загрузчика (MBR+stage2) и второй диск, содержащий непосредственно файловую систему.

  • Использование другого загрузчика. Но разве у LILO и Syslinux одинаковые проблемы? Первые 512 байт диска просто слишком малы, чтобы содержать драйвер файловой системы.

Есть ли другой, возможно, более простой способ добиться этого?

1 ответ1

-1

Во-первых, осознайте, что это разделение аппаратного и программного обеспечения. Они не соответствуют друг другу динамически, потому что это совершенно разные вещи.

Я бы хотел, чтобы образ диска содержал файловую систему напрямую, без каких-либо разделов.

Таблица разделов - это то, как ОС знает, какое оборудование она официально использует для хранения данных. Типичная ОС НЕ определяет размер диска динамически. Требуется, чтобы при изменении размера основного диска на "меньший" необходимо было изменить таблицу разделов для соответствия; даже если вы используете экстенты диска для раздела.

Кроме того, гипервизор по своей сути не осведомлен о деталях ОС и ее разделах, потому что разделы изначально программные, а гипервизор моделирует ТОЛЬКО оборудование.

Это означает, что вам нужно интегрированное программное и аппаратное решение, где каждый знает и контролирует другого. Я не знаю ничего подобного.

Это позволит легко изменять размеры как внутри, так и снаружи виртуальной машины.

Думайте о виртуальной машине с точки зрения аппаратного обеспечения. По сути, вы просите изменить размер реального жесткого диска на лету и динамически настроить ОС. Это не то, как все настроено. Изменение размера виртуального диска по сравнению с реальным размером аппаратного диска ничем не отличается от ОС. То, что оно является виртуальным, не означает, что они каким-либо образом "интегрируются".

Как организовать образ диска виртуальной машины, чтобы было как можно проще изменить размер?

Вы можете отделить свою ОС от всех других файлов .; у вас есть отдельный VD (виртуальный диск) для вашей ОС с достаточным запасом для изменений и обновлений. Затем установите "другие вещи" на другой VD. Таким образом, вы изменяете раздел диска без полномочий root, что по своей сути проще, чем изменение раздела корневого диска. Для этой цели большинство моих виртуальных машин имеют как минимум 2 виртуальных диска.

LVM - это еще одна вещь, которая должна помочь с этим, но я не знаю всех вариантов там.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .