Сжимать динамически расширяемый VHDX Hyper-V, содержащий LVM Ubuntu Server

Сначала я установил динамически расширяемый VHDX под Hyper-V размером около 6 ТБ, а затем установил Ubuntu Server 20.04, используя на нем LVM. С тех пор мне удалось уменьшить установленный сервер Ubuntu до 155 ГБ, но динамически расширяемый VHDX по-прежнему имеет емкость 6 ТБ. Я хочу переместить это на диск, у которого нет и около 6 ТБ.Я думаю, что это может сработать в любом случае, поскольку Ubuntu Server не может превышать 155 ГБ, но я бы хотел, чтобы VHDX отражал максимум 200 или 250 ГБ. Я не могу понять, как уменьшить его, не убивая установленный сервер Ubuntu. Если я удалю все контрольные точки и просто перейду к редактированию VHDX через Hyper-V и уменьшу его таким образом, это каким-то образом вызовет проблему, и сервер Ubuntu впоследствии не загрузится. Я, должно быть, пропустил шаг здесь ... любая помощь приветствуется !!

0
задан 14 May 2021 в 05:30

1 ответ

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

Во-первых, как уже упоминалось, я должен был предварительно (до того, как задал вышеупомянутый вопрос) уменьшить размер всего в Ubuntu Server (размещаю ниже, чтобы быть полным) - я сделал это, следуя приведенным ниже веб-сайтам:

https://maideveloper.com/blog/how-to-move-lvm-partition-to-another-disk-drive

Как я могу изменить размер раздела LVM? (т.е. физический том)

Вот что я сделал:

Я загрузился в LiveCD (Ubuntu Desktop 20.04) и в терминале выполнил эти команды (я думаю - моя память немного туманна в этот момент):

sudo e2fsck -f /dev/<VOLUME_GROUP/<LOGICAL_VOLUME>
sudo resize2fs /dev/<VOLUME_GROUP>/<LOGICAL_VOLUME> 150G
sudo lvreduce -L 155G /dev/<VOLUME_GROUP>/<LOGICAL_VOLUME>
sudo resize2fs /dev/<VOLUME_GROUP>/<LOGICAL_VOLUME>

Вы должны заменить и на соответствующие записи для вашей системы. Я считаю, что вышеприведенные команды: проверяют наличие ошибок, затем сжимают файловую систему, затем сжимают логический том (не сжимайте до размера, меньшего, чем новый размер файловой системы, которую вы только что сжали), затем расширяют файловую систему, чтобы использовать все доступное пространство на логическом томе. Я также думаю, что что-то в этом роде могло бы сработать, но я не пробовал: sudo lvreduce --resizefs -L 155G /dev//

Затем я зашел в GParted GUI на LiveCD и использовал его для уменьшения раздела до нового размера 155 ГБ, после чего осталась куча нераспределенного пространства. Именно здесь и возник мой вопрос выше.

Далее я нашел вот такой ответ: Как переместить корневой раздел LVM 250 ГБ на новый жесткий диск 120 ГБ?

Вот что я сделал:

  1. Использовал Hyper-V для создания нового динамически расширяемого жесткого диска VHDX (на этот раз только 250 ГБ) и подключил его к существующему серверу Ubuntu Server Hyper-V
  2. Снова загрузился в LiveCD и использовал GParted для создания точно таких же разделов на новом жестком диске VHDX (sdb), что и на существующем динамически расширяемом жестком диске VHDX (sda) объемом 6 ТБ - даже установил флаги и т. д.
  3. Загрузился обратно в Ubuntu Server и выполнил следующие команды:
    • sudo pvcreate /dev/sdb3 (sda3 - это место, где находится мой логический том)
    • sudo vgextend /dev/sdb3
    • sudo pvmove /dev/sda3 /dev/sdb3
    • sudo vgreduce /dev/sda3
  4. Загрузился в Clonezilla и клонировал sda1 на sdb1, а затем клонировал sda2 на sdb2
  5. Изменил настройки Hyper-... V:
    • удалил новый второй жесткий диск VHDX объемом 250 ГБ
    • настроил основной диск так, чтобы он указывал на новый жесткий диск VHDX объемом 250 ГБ
  6. Загрузил Ubuntu Server Hyper-V и получил странную ошибку сначала (ненадолго), а затем он загрузился нормально и вуаля - я использовал жесткий диск объемом 250 ГБ! Ошибка, которую я получил, была следующей: System BootOrder not found. Инициализация настроек по умолчанию. Создается загрузочная запись "Boot0004 с меткой "ubuntu" для файла "\EFI\ubuntu\shimx64.efi"
  7. Понял, что если посмотреть настройки Hyper-V в разделе Firmware -> Boot order, то там теперь было 2 файла shimx64.efi - один на самом верху (новый, который, очевидно, был создан Hyper-V в шаге 6 выше) и один под DVD Drive (старый). Нет простого способа удалить старый - поэтому я нашел этот сайт: https://vmlabblog.com/2018/08/how-to-change-vm-bootorder-with-powershell/, который предоставил некоторые рекомендации
  8. В PowerShell администратора выполнил эти команды:
    • $ubuntuserver = Get-VMFirmware ""
    • $goodfile = $ubuntuserver.BootOrder[0]
    • $dvddrive = $ubuntuserver.BootOrder[1]
    • $badfile = $ubuntuserver.BootOrder[2]
    • $hddrive = $ubuntuserver. BootOrder[3]
    • $network = $ubuntuserver.BootOrder[4]
    • Set-VMFirmware -VMName "" -BootOrder $dvddrive,$goodfile,$hddrive,$network
    • $ubuntuserver.BootOrder (просто чтобы подтвердить все)
  9. И я думаю, что это помогло. Думаю, теперь все готово.

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

0
ответ дан 28 July 2021 в 11:41

Другие вопросы по тегам:

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