Рейтинг:0

перемещение изображения KVM с одного сервера на другой, а затем изменение размера

флаг cn

host1 имеет гостевой образ 40G внутри LV.

host2 имеет доступный гостевой раздел LV 50G.

dd для передачи host1/guest(40G) --> host2/guest(50G).

gdisk для исправления расположения таблицы GPT -

root@ns:~# gdisk /dev/vda2
Команда (? для справки): w
Предупреждение! Вторичный заголовок размещен на диске слишком рано! Вы хотите, чтобы
исправить эту проблему? (Д/Н): Д
Переместили второй заголовок и таблицу разделов в правильное место.

перенастроил guest.xml, и гость загрузился отлично.

у гостя нормальный раздел - нет LV

ПРОБЛЕМА: я не могу изменить размер файловая система на госте залить всего 50G LV. Гостевая файловая система остается на уровне 40G.

Диск /dev/vda: 50 ГиБ, 53687091200 байт, 104857600 секторов
Единицы: секторы 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода/вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: 564A38FB-02AE-4E84-B080-173963955B2E

Размер начальных и конечных секторов устройства Тип
/dev/vda1 2048 4095 2048 1M Загрузка BIOS
/dev/vda2 4096 85977087 85972992 файловая система 41G Linux

попытка изменить размер гостя:

root@ns:~# resize2fs /dev/vda2
resize2fs 1.45.5 (07 января 2020 г.)
Файловая система уже имеет длину 10746624 (4k) блоков. Нечего делать!

Это вывод fdisk -l с нового хоста:

Диск /dev/mapper/vg--main-nstest: 50 ГиБ, 53687091200 байт, 104857600 секторов
Единицы: секторы 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода/вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: 564A38FB-02AE-4E84-B080-173963955B2E

Размер начальных и конечных секторов устройства Тип
/dev/mapper/vg--main-nstest-part1 2048 4095 2048 Загрузка BIOS 1M
/dev/mapper/vg--main-nstest-part2 4096 85977087 85972992 Файловая система Linux 41G

.. и вот что произойдет, если я попытаюсь изменить размер с хоста:

root@virtual3:~# resize2fs /dev/mapper/vg--main-nstest-part2
resize2fs 1.45.5 (07 января 2020 г.)
open: Нет такого файла или каталога при открытии /dev/mapper/vg--main-nstest-part2

или же....неудивительно:

root@virtual3:~# resize2fs /dev/vg-main/nstest 
resize2fs 1.45.5 (07 января 2020 г.)
resize2fs: неправильное магическое число в суперблоке при попытке открыть /dev/vg-main/nstest
Не удалось найти действительный суперблок файловой системы.

Я попытался смонтировать гостевой корневой раздел на хосте следующим образом:

# mount -o loop,offset=2097152 /dev/vg-main/ns-test /mnt

... а затем попытался изменить размер результирующего устройства цикла: /dev/loop7 Это плохая идея - уничтожает суперблок и гость не загружается. Вернуться к доске для рисования.

Рейтинг:0
флаг cn

Отвечая на мой собственный вопрос. Хотелось бы получить некоторые комментарии, поскольку некоторые из них кажутся загадочными.

Это оказалось намного сложнее, чем я думал... вот сделанные мной заметки - они включают в себя множество выводов, которые могут иметь отношение к моей ситуации. Также все, что начинается с «<<<<», является комментарием! Не копируйте!:

ПРОБЛЕМА: скопирован образ старого сервера qemu 40G LV в новый 50G LV Нужно изменить размер файловой системы на 50G

root@virtual3:~# ssh oldserver "dd bs=1M if=/dev/oldvg/oldnstest" | \
           дд статус=прогресс=/dev/vg-main/nstest
root@virtual3:~# scp oldserver:/etc/libvirt/quemu/oldnstest.xml /etc/libvirt/qemu/nstest.xml
.... отредактируйте nstest.xml по мере необходимости и virsh определите nstest.xml

Я нашел некоторые недостающие биты и ошибки, но в значительной степени основанные на этой странице:

https://subscription.packtpub.com/book/virtualization-and-cloud/9781788294676/1/ch01lvl1sec14/изменение размера изображения

  root@virtual3:~# qemu-img info /dev/vg-main/nstest 
    изображение: /dev/vg-main/nstest
    формат файла: сырой
    виртуальный размер: 50 ГиБ (53687091200 байт)
    размер диска: 0 Б
  root@virtual3:~# lossup -f
    /dev/loop0
  root@virtual3:~# lossup /dev/loop0 /dev/vg-main/nstest 
  root@virtual3:~# kpartx -av /dev/loop0
    GPT: основной заголовок думает, что Alt. заголовок не в конце диска.
    GPT: Альтернативный заголовок GPT не в конце диска.
    GPT: используйте GNU Parted для исправления ошибок GPT.
    добавить карту loop0p1 (253:3): 0 2048 линейная 7:0 2048
    добавить карту loop0p2 (253:4): 0 85972992 линейная 7:0 4096
  root@virtual3:~# parted /dev/vg-main/nstest печать
    Предупреждение: Не все пространство, доступное для /dev/dm-2, похоже, используется, вы можете
    исправить GPT, чтобы использовать все пространство (дополнительные блоки 18877064) или продолжить
    текущие настройки? 
    Исправить/игнорировать? исправить                                                           
    Модель: Linux device-mapper (linear) (dm)
    Диск /dev/dm-2: 53,7 ГБ
    Размер сектора (логический/физический): 512Б/512Б
    Таблица разделов: gpt
    Флаги диска: 
    
    Номер Начальный Конечный Размер Файловая система Имя Флаги
     1 1049 КБ 2097 КБ 1049 КБ bios_grub
     2 2097 КБ 44,0 ГБ 44,0 ГБ доб.4

ВМ ПО-ПРЕЖНЕМУ ЗАПУСКАЕТСЯ - посмотрим, как мы пойдем дальше!

Обратите внимание, что ведение журнала, по-видимому, должно быть отключено, чтобы это работало, но e2fsck снова включит его. Смотри ниже.

  root@virtual3:~# kpartx -av /dev/loop0
    добавить карту loop0p1 (253:3): 0 2048 линейная 7:0 2048
    добавить карту loop0p2 (253:4): 0 85972992 линейная 7:0 4096
  root@virtual3:~# ls -la /dev/mapper/loop0*
    lrwxrwxrwx 1 root root 7 13 января 23:47 /dev/mapper/loop0p1 -> ../dm-3
    lrwxrwxrwx 1 root root 7 13 января 23:47 /dev/mapper/loop0p2 -> ../dm-4
    root@virtual3:~# tune2fs -l /dev/mapper/loop0p2
      .... много всего, вырезано для краткости
    Особенности файловой системы: has_journal ext_attr resize_inode dir_index .... и т.д. и т.п.
     .... еще много чего.... но обратите внимание на "has_journal" выше
  root@virtual3:~# e2fsck /dev/mapper/loop0p2 >>>>>>>> исправить мелкие проблемы?
    e2fsck 1.45.5 (07 января 2020 г.)
    /dev/mapper/loop0p2: восстановление журнала
    Очистка потерянного inode 788499 (uid=0, gid=0, mode=0100644, size=113)
    Очистка потерянного inode 531614 (uid=0, gid=0, mode=0100666, size=0)
    Очистка потерянного индекса 531613 (uid=112, gid=117, режим=0100600, размер=0)
    Очистка потерянного индекса 531610 (uid=112, gid=117, режим=0100600, размер=0)
    Очистка потерянного inode 531609 (uid=112, gid=117, mode=0100600, size=0)
    Очистка потерянного inode 531606 (uid=112, gid=117, mode=0100600, size=0)
    Установка количества свободных инодов на 2511295 (было 2511334)
    Установка количества свободных блоков на 6187161 (было 6192365)
    /dev/mapper/loop0p2: чистый, 175681/2686976 файлов, 4559463/10746624 блоков
  root@virtual3:~# tune2fs -O ^has_journal /dev/mapper/loop0p2 >>>> NB: заглавная буква O
   tune2fs 1.45.5 (07 января 2020 г.)
  root@virtual3:~# tune2fs -l /dev/mapper/loop0p2 | grep "функции"
   Особенности файловой системы: ext_attr resize_inode dir_index .... и т.д. и т.п.
  root@virtual3:~# kpartx -dv /dev/loop0
   карта разработчиков: loop0p2
   карта разработчиков: loop0p1
  root@virtual3:~# lossup -d /dev/loop0
  root@virtual3:~# modprobe nbd max_parts=8 <<<<< необходимо для создания /dev/nbd*
    (отредактируйте /etc/modprobe... добавьте nbd, чтобы сделать его постоянным)
  root@virtual3:~# qemu-nbd --format=raw --connect=/dev/nbd0 /dev/vg-main/nstest 
  root@virtual3:~# fdisk /dev/nbd0
    
    Добро пожаловать в fdisk (util-linux 2.34).
    Изменения останутся только в памяти, пока вы не решите их записать.
    Будьте осторожны перед использованием команды записи.
    
    
    Команда (m для помощи): p
    Диск /dev/nbd0: 50 ГиБ, 53687091200 байт, 104857600 секторов
    Единицы: секторы 1 * 512 = 512 байт
    Размер сектора (логический/физический): 512 байт / 512 байт
    Размер ввода/вывода (минимальный/оптимальный): 512 байт / 512 байт
    Тип метки диска: gpt
    Идентификатор диска: 564A38FB-02AE-4E84-B080-173963955B2E
    
    Размер начальных и конечных секторов устройства Тип
    /dev/nbd0p1 2048 4095 2048 1M Загрузка BIOS
    /dev/nbd0p2 4096 85977087 85972992 Файловая система Linux 41G
    
    Команда (m для помощи): d
    Номер раздела (1,2, по умолчанию 2): 2
    
    Раздел 2 удален.
    
    Команда (m для справки): n
    Номер раздела (2-128, по умолчанию 2): 2
    Первый сектор (4096-104857566, по умолчанию 4096): 
    Последний сектор, +/-секторы или +/-размер{K,M,G,T,P} (4096-104857566, по умолчанию 104857566): 
    
    Создан новый раздел 2 типа «Файловая система Linux» размером 50 ГБ.
    Раздел №2 содержит подпись ext4.
    
    Вы хотите удалить подпись? [Д]да/[Н]о: н <<<< NB!
    
    Команда (m для справки): w
    
    Таблица разделов была изменена.
    Вызов ioctl() для повторного чтения таблицы разделов.
    Синхронизация дисков.
    
  root@virtual3:~# qemu-nbd --disconnect /dev/nbd0 <<< этот шаг не на веб-странице
    /dev/nbd0 отключен
  root@virtual3:~# e2fsck -f /dev/mapper/loop0p2
    e2fsck 1.45.5 (07 января 2020 г.)
    Суперблок имеет недопустимый журнал (инод 8).
    Очистить<у>? да
    *** журнал удален ***
    
    Очистка потерянного inode 788499 (uid=0, gid=0, mode=0100644, size=113)
    Недопустимый индекс 1642119663 в списке потерянных индексов.
    Проход 1: проверка индексных дескрипторов, блоков и размеров
    У удаленного индекса 531606 нулевое время ожидания. Исправить<y>? да
    Найдены индексные дескрипторы, которые были частью поврежденного связанного списка потерянных файлов. Исправить<y>? да
    Инод 531609 был частью списка потерянных индексов. ИСПРАВЛЕНО.
    Инод 531610 был частью списка потерянных инодов. ИСПРАВЛЕНО.
    Инод 531613 был частью списка потерянных индексов. ИСПРАВЛЕНО.
    Инод 531614 был частью списка потерянных индексов. ИСПРАВЛЕНО.
    Проход 2: проверка структуры каталогов
    Шаг 3: проверка подключения к каталогу
    Шаг 4: проверка счетчиков ссылок
    Шаг 5: Проверка сводной информации о группе
    Неверный подсчет свободных блоков для группы №97 (21582, counted=21583).
    Исправить<y>? да
    Неверный подсчет свободных блоков (6192364, counted=6252696).
    Исправить<y>? да
    Различия битовых карт индексов: -531606 -(531609--531610) -(531613--531614) -788499
    Исправить<y>? да
    Неверный подсчет свободных инодов для группы №64 (869, counted=874).
    Исправить<y>? да
    Неверный подсчет свободных инодов для группы №96 (2772, counted=2773).
    Исправить<y>? да
    Неверный подсчет свободных инодов (2511328, counted=2511295).
    Исправить<у>? да
    Различия в растровых изображениях блоков: растровое изображение блоков группы 97 не соответствует контрольной сумме.
    ИСПРАВЛЕНО.
    Воссоздать журнал («a» означает «да» для всех) <y>? да для всех
    Создание журнала (65536 блоков): Готово.
    
    *** журнал восстановлен ***
    
    /dev/mapper/loop0p2: ***** ФАЙЛОВАЯ СИСТЕМА БЫЛА ИЗМЕНЕНА *****
    /dev/mapper/loop0p2: 175681/2686976 файлов (0,6% несмежных), 4559464/10746624 блоков
  root@virtual3:~# resize2fs /dev/mapper/loop0p2 <<<< Веб-страница NB ссылается на /dev/nbd0
    resize2fs 1.45.5 (07 января 2020 г.)
    Изменение размера файловой системы на /dev/mapper/loop0p2 до 13106683 (4k) блоков.
    Файловая система на /dev/mapper/loop0p2 теперь имеет длину 13106683 (4k) блоков.
    
  root@virtual3:~# tune2fs -j /dev/mapper/loop0p2
    tune2fs 1.45.5 (07 января 2020 г.)
    В файловой системе уже есть журнал.
  root@virtual3:~# kpartx -dv /dev/loop0
    карта разработчиков: loop0p2
    карта разработчиков: loop0p1
  root@virtual3:~# lossup -d /dev/loop0
  root@virtual3:~# virsh start nstest

 Гость не смог правильно загрузиться !!! 

Гость упал на спасательный снаряд, из которого я сделал:

fsck /dev/vda2 

(вошел в систему через средство просмотра удаленного рабочего стола.) Исправлено несколько несоответствий. Возможно, это была моя собственная проблема - надеюсь, не ваша! Гость теперь загрузится, но все еще только 41G ........ теперь попробовать еще раз!

root@virtual3:~# virsh start nstest

ТОГДА вошел в гостевую систему через ssh:

  root@ns:~# resize2fs /dev/vda2
    resize2fs 1.45.5 (07 января 2020 г.)
    Файловая система /dev/vda2 смонтирована на /; требуется онлайн изменение размера
    old_desc_blocks = 6, new_desc_blocks = 7
    Файловая система на /dev/vda2 теперь имеет длину 13106683 (4k) блоков.
    
  root@ns:~# df -h
    Используемый размер файловой системы Доступно Использование % Установлено на
     ...... снип .......
    /dev/vda2 49G 17G 31G 36%/

УСПЕХ!

Ответить или комментировать

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