Qemu kvm изменить размер диска
Вам когда-нибудь доводилось уменьшать размер qcow2 образа диска, используемого в виртуальных машинах KVM-QEMU? Как известно, процесс увеличения размера образа довольно прост и быстр, а как обстоят дела с уменьшением?
В данной статье я расскажу про ситуацию, когда нужно уменьшить qcow2 образ виртуальной машины KVM в максимально быстрые сроки.
KVM: добавление сетевой карты для виртуальной машины
Попрьуем добавить дополнительный сетевой интерфейс для ВМ. Сначала проверим, какие сетевые интерфейсы созданы на хосте:
У меня на KVM сервере создана одна виртуальная машина, с одним сетевым интерфейсом. К br0 нам нужно прикрепить еще один виртуальный сетевой интерфейс. Выполните команды:
Проверьте, что у ВМ появился дополнительный сетевой интерфейс:
После первого сетевого интерфейса добавьте следующие строки:
Сохраните файл и запустите ВМ. Остальную конфигурацию, KVM добавит сам (mac address и тд).
В данной статье мы затронули основные моменты, которые могут вам понадобиться при управлении виртуальными машинами KVM из консоли Linux сервера. В следующей статье мы рассмотрим управление виртуальными машинами через графический менеджер virt-manager
KVM: добавление сетевой карты для виртуальной машины
Попрьуем добавить дополнительный сетевой интерфейс для ВМ. Сначала проверим, какие сетевые интерфейсы созданы на хосте:
У меня на KVM сервере создана одна виртуальная машина, с одним сетевым интерфейсом. К br0 нам нужно прикрепить еще один виртуальный сетевой интерфейс. Выполните команды:
Проверьте, что у ВМ появился дополнительный сетевой интерфейс:
После первого сетевого интерфейса добавьте следующие строки:
Сохраните файл и запустите ВМ. Остальную конфигурацию, KVM добавит сам (mac address и тд).
В данной статье мы затронули основные моменты, которые могут вам понадобиться при управлении виртуальными машинами KVM из консоли Linux сервера. В следующей статье мы рассмотрим управление виртуальными машинами через графический менеджер virt-manager.
В этой статье мы поговорим об изменении размера дисков виртуальной машины KVM, рассмотрим используемые форматы виртуальных дисков. Покажем, как правильно увеличить диск виртуальной машины в гипервизоре KVM на Linux без потери данных, а также обсудим варианты уменьшения размеров дисков.
Как уменьшить размер виртуального диска в KVM?
В своей работе, ранее я довольно часто сталкивался с данным вопросом, но к сожалению, безболезненно уменьшить диск на виртуальной машине в KVM нельзя! Единственный приемлемый размер уменьшения размер диска виртуальной машины KVM на физическом хранилище – его сжатие через конвертацию.
В интернете фигурирует много статей, якобы благодаря которым вы можете уменьшить размер диска на виртуальной машине, но это не работает.
Я приведу несколько примеров, на которые я натыкался и которые лично мною были проверены.
Уменьшение KVM диска с помощью утилиты qemu
На ряде ресурсов описаны действия, выполняемые с помощью утилиты qemu. В них предлагается уменьшить размер диска виртуальной машины с помощью команды:
qemu-img resize /путь_до_диска -5G — уменьшаем диск на 5G
Или такой вариант с указанием конкретного размера:
qemu-img resize /путь_до_диска 25G — указываем размер диска в 25G
Что происходит после выполнения данной команды? Запускаем сервер и конечно система не грузится:
Я пробовал сначала уменьшить раздел из-под системы с помощью утилиты fdisk, но в таком случае, система так же перестает загружаться, даже если вы пропустите шаг уменьшения диска с физического сервера и это логично. Раздел который мы уменьшаем, системный и соответственно ОС перестает загружаться, так как при уменьшении диска, информация по всей видимости уничтожается.
Уменьшение виртуального диска с подменой образа
Уже не такой распространенный в инструкциях вариант — это уменьшение диска, с подменой на старый. То есть, вы создаете новую виртуальную машину с нужным вам размером диска. После чего, подменяете старый образ диска в новый образ и судя по описанию статей в разных источниках, это работает. Я так же сделал проверку и это сломало файловую систему, как и в первом варианте. Я приведу пример команды:
virt-resize /старый_образ_диска /новый_образ_диска
Приводились так же варианты, с конвертацией диска с формата raw в формат qcow2, НО я изначально создаю машины в данном формате и объясню почему.
Форматы дисков KVM и сжатие диска в qcow2 формате
В самом начале статьи, я упомянул про эти два формата.
raw – в переводе «сырой». Преимущество формата, максимальная производительность, универсальность формата. Минусов масса, основные это:
- Диск занимает все дисковое пространство на физическом сервере, которое ему выделили;
- Нельзя создать снапшоты.
Qcow2 – это родной формат гипервизора QEMU, а так же QEMU-KVM. Это максимально удобный формат виртуального диска из всех поддерживаемых в KVM. Образ диска увеличивается по мере накопления данных на виртуальной машине, поддерживаются снапшоты.
Чем хорош формат qcow2? Вам в принципе не нужно уменьшать размер виртуального диска, так как диск занимает на сервере, ровно столько, сколько места там занято. Если же у вас данные на сервере постоянно перезаписываются и бывает такое, что диск «распух», его можно с легкостью сжать. Рассмотрим такой вариант. Я забью нулями некоторое дисковое пространство и после чего удалю файл:
dd if=/dev/zero of=/mytempfile
rm -rf /mytempfile
При проверке с сервера, образ диска сначала весил 2.4G после чего расширился до 5.9G:
То есть после удаления информации на виртуальной машине, диск обратно не сжался. Чтобы файл диска получил актуальный размер, я использую следующий метод:
Бэкапим файл диска, останавливаем виртуальную машину и после чего выполняем следующие действия:
qemu-img convert -O qcow2 /старый_образ /новый_образ
После чего можно проверить размеры двух дисков:
Как видим, размер сжатого диска 1.6G. Переименуем новый образ диска в нужный нам и запустим виртуальную машину:
Контрольная проверка с сервера:
Способ рабочий. За все время его использования, ни разу файловая система на виртуальной машине не умирала. Но настоятельно рекомендую перед подобными работами, создавать копию диска, если не хотите потерять данные.
Это все, что я хотел в данной статье рассказать. Если у кого-то из посетителей сайта есть рабочий способ по уменьшению диска на KVM, именно уменьшения (не сжатие) и именно рабочий, предлагайте свои варианты и я обязательно их протестирую.
Предыдущая статья Следующая статья
Virt-Manager: графическая консоль управления KVM
Резервное копирование виртуальных машин в KVM
Управление числом vCPU и ядер в виртуальной машине
Управление виртуальными машинами KVM из консоли
На самом деле в своей работе и ext4 пробовали уменьшать, получилось то, что получилось выше)
Ни разу нормально ничего не уменьшилось. Посыл раздела по уменьшению был такой: куча статей с вариантами уменьшения диска, которые гробят систему. А некоторые в принципе не срабатывают даже, непонятно тестируют ли вообще люди то, о чем пишут. Да и с образом в формате qcow2 смысла уменьшать разделы не вижу, лишние нервы. Есть vds не занимает место, то пусть и будет там раздел хоть на 100Гб) На днях еще раз проверю с ext4 и отпишусь, но последний раз это окончилось плачевно.
Виртуалка с диском на 1000гб будет делать бэкапы гораздо дольше чем со 100гб
fstrim на kvm тоже работает, но замечал, что не всегда диск виртуальной машины сжимается в актуально состояние, поэтому приходится конвертацию делать.
Господа. Ваша ошибка с fdisk’ом в том, что вы не уменьшили файловую систему. Уменьшать надо сначала ФС, потом раздел, а потом уже диск. Проблема конкретно с xfs — да, она не уменьшается напрямую. Для остальных есть абсолютно рабочий способ уменьшить диск, многократно проверенный. Повторюсь, это для файловых систем, нормально поддерживающих изменение размера в минус. Даже если это qcow2 — добавьте конвертацию в тип raw, и все работает и с ext[234], и c ntfs.
Для ntfs проще всего, там уменьшение ФС и раздела за один шаг — 1) сжать раздел в консольной оснастке diskmgmt.msc, лучше, чтобы он был несколько меньше конечного объема диска, так не пострадает «хвост» файловой системы. 2) если это qcow/qcow2 — преобразовать в raw (qemu-img convert -p -O raw /»путь к текущему диску» /»путь к новому диску»). 3) уменьшить размер raw диска настолько, чтобы он был несколько больше суммы размеров ваших разделов на нем (если не сделали разделы меньше желаемого объема — см п.1) — той же утилитой (qemu-img resize «/путь к raw-диску» -«размер уменьшения»). 4) меняем в конфигурации виртуалки «/путь к диску qcow» на «/путь к диску raw» и, соответственно, тип диска. 5) пробуем запуск ОС. Если работает (у меня еще не было случаев, чтобы не сработало), то можем удалять старый диск qcow и затем, по желанию, конвертировать назад из raw в qcow(2) с изменением настроек виртуалки. 6) опять заходим в diskmgmt.msc и расширяем раздел до новой границы.
Плюсы — всегда есть старая копия диска до предыдущей операции. Минусы — нужно дополнительное место на диске.
В случае с ext[234] — все то же самое, только вместо diskmgmt и сжатия раздела — resize2fs. Однако, стоит заметить, если ФС примонтирована, лучше этого не делать. Или отмонтировать, если это некритичный для работы раздел, либо загрузиться с live-системы и сделать это, например, если это root
По поводу того, зачем разные форматы — вот так работает 100%, т.е. диск raw отлично меняет свой размер, если вы позаботились о размере ФС (в случае уменьшения). Кроме того, он быстрее на 10% и нет варианта, что вы отдали всем виртуалкам в сумме больше диска, чем у вас есть. Но тут нужно для себч решить — нужны ли эти 10% производительности или снапшоты, которых raw не поддерживает. С другой стороны, если у вас образы лежат на любой структуре, поддерживающей снапшоты (zfs, lvm, та же xfs) — может и не нужен qcow. Вот только смешивать на одном разделе хоста образы в разных форматах не рекомендую: если не уследите за разрастанием qcow-дисков, будет беда. Машины с qcow-дисками при невозможности расшириться дальше просто станут на паузу, а машины с, например, raw-дисками в «тонких» lvm при невозможности расшириться или записать на диск, исковеркают свою ФС и упадут.
Добавлю свои 5 коп.: Если после увеличения размера образа свободное место не отражается в VM c Windows Server, а перезагрузка VM затруднительна, то можно решить проблему командой DISKPART RESCAN
04.03.2020
VyacheslavK
CentOS, KVM, Linux
Комментариев пока нет
В предыдущей статье мы рассмотрели установку гипервизора KVM и создание виртуальной машины. В рамках одной статьи, мы не смогли охватить все нюансы управления виртуальными машинами, а затронули лишь их часть. Сегодня, мы постараемся рассказать все об управлении виртуальными машинами из консоли сервера: как изменить параметры ВМ, добавить дополнительные устройства и рассмотрим основные команды, которые используются для администрирования виртуальных машин KVM.
Формат блочных устройств — qcow2
Но, тем не менее, эту схему можно проделать и с raw образами, достаточно сконвертировать его в qcow2. В общем-то, инструкция будет актуальна для всего, что конвертируется в qcow2.
Простой способ уменьшения диска на KVM заключается в следующих этапах:
- Сжатие блочного устройства qcow2 (диска VM)
- Создание диска меньшего размера
- Подключение gparted образа, старого и нового диска
- Подготовка к загрузке ОС
- Характеристики VM и хост машины:
В чем разница между размером образа, фактическим и физическим объемом?
Допустим, qcow2 image создан размером 80гб и мы об этом знаем. В процессе эксплуатации образ забивался данными, какие-то данные удалялись. Если в общих словах — в связи с особенностями процесса записи-удаления данных, для ОС удаленные данные как бы не существуют, а в образе остаются записанными, пока не будут перезаписаны другими данными. Соответственно хоть в ОС Вы будете видеть 20GB фактически занимаемых данных, то хост KVM покажет такую замечательную картину (используем утилиту qemu-img для получения информации):
Можно заметить что virtual size = disk size, а так же du -sh образа покажет что он занимает реальные 80G:
И так как нам нужно уменьшить размер образа до 40GB, приступаем к процессу.
KVM: добавление диска в виртуальную машину
В одной из наших статей, мы описывали процесс расширения и уменьшения дисков виртуальных машин в KVM. Но мы не описывали вариант по добавлению дополнительного диска.
Сначала нужно создать дополнительный файл диска для виртуальной машины:
Вместо qcow2 вы можете указать нужный формат диска, так же нужно указать путь до файла. У меня хранилище для дисков /vz/disk/.
После этого, можно добавить устройство виртуального диска к самой ВМ:
Остановите и запустите ВМ, проверьте что получилось:
Как видим, диск добавлен. После данных манипуляций, на виртуальной машине нужно разметить этот диск под ваши нужды.
Этап 3 — подключение gparted
Так как иногда админы предпочитают более легкие пути решения вопроса, бубен откладывается в сторону (kpartx) и на его место приходит ISO и VNC. К счастью, в KVM подключить его не очень сложно.
- Подключаем образ ISO GParted
- Подключаем qcow2_shrinked к VM
- Запускаем VM, загружаемся с ISO
Запускаем VM и видим загрузочный экран GParted:
Выбираем первый пункт и следуем инструкциям на экране. Я обычно нажимаю enter до конца.
Увидев сам GParted, приступаем к действу. Быстренько проверяем какая у /dev/vda таблица разделов — msdos или gpt. Это важно:
Переключаемся на второй диск /dev/vdb и создадим таблицу разделов:
При создании таблицы выбираем тип msdos как мы узнали ранее.
Затем переключаемся обратно на /dev/vda и последовательно, с первых дисков начинаем копировать разделы переключаясь между vda и vdb:
Конечным результатом будет:
Нажимаем Apply и ждем завершения результата:
Что уже похоже на правду. Но так как мы сделали некоторые манипуляции, которые приведут к изменению UUID дисков, мы потенциально не загрузимся в ОС. Почему? CentOS 7 использует в fstab UUID дисков, Grub2 использует UUID дисков, поэтому прыгаем в консоль и занимаемся черной магией.
Gparted работает изначально под пользователем, поэтому прыгаем под root командой sudo su — root:
Сделаем blkid чтобы убедится, что UUID разделов поменялся
Видно, что UUID vda1 = vdb1, а у vdb2 он поменялся. Ничего страшного — жить с этим можно.
Монтируем vdb полностью, вместе с /boot разделом, а также смонтируем некоторые разделы для нашего удобства.
Начнем с fstab — так как в VNC набирать UUID не очень удобно, заменим его на привычное название устройства.
Заменяем строку с UUID=… на, внимание:
указываем /dev/vdb2, если старый диск не планируется отключать
указываем /dev/vda2, если старый диск будет отключен
Так как мы старый диск отключаем перед загрузкой ОС, то пишем /dev/vda2
Далее изменим загрузчик, приведем его в порядок. Предположим, что всё лежит штатно в /boot/grub2, grub.cfg там же, а efi нет (msdos table, какой efi :) ):
На этом можно порадоваться за себя и отключив gparted, загрузиться в ОС.
Как уменьшить размер виртуального диска в KVM?
В своей работе, ранее я довольно часто сталкивался с данным вопросом, но к сожалению, безболезненно уменьшить диск на виртуальной машине в KVM нельзя! Единственный приемлемый размер уменьшения размер диска виртуальной машины KVM на физическом хранилище – его сжатие через конвертацию.
В интернете фигурирует много статей, якобы благодаря которым вы можете уменьшить размер диска на виртуальной машине, но это не работает.
Я приведу несколько примеров, на которые я натыкался и которые лично мною были проверены.
Уменьшение KVM диска с помощью утилиты qemu
На ряде ресурсов описаны действия, выполняемые с помощью утилиты qemu. В них предлагается уменьшить размер диска виртуальной машины с помощью команды:
qemu-img resize /путь_до_диска -5G — уменьшаем диск на 5G
Или такой вариант с указанием конкретного размера:
qemu-img resize /путь_до_диска 25G — указываем размер диска в 25G
Что происходит после выполнения данной команды? Запускаем сервер и конечно система не грузится:
Я пробовал сначала уменьшить раздел из-под системы с помощью утилиты fdisk, но в таком случае, система так же перестает загружаться, даже если вы пропустите шаг уменьшения диска с физического сервера и это логично. Раздел который мы уменьшаем, системный и соответственно ОС перестает загружаться, так как при уменьшении диска, информация по всей видимости уничтожается.
Уменьшение виртуального диска с подменой образа
Уже не такой распространенный в инструкциях вариант — это уменьшение диска, с подменой на старый. То есть, вы создаете новую виртуальную машину с нужным вам размером диска. После чего, подменяете старый образ диска в новый образ и судя по описанию статей в разных источниках, это работает. Я так же сделал проверку и это сломало файловую систему, как и в первом варианте. Я приведу пример команды:
virt-resize /старый_образ_диска /новый_образ_диска
Приводились так же варианты, с конвертацией диска с формата raw в формат qcow2, НО я изначально создаю машины в данном формате и объясню почему.
Форматы дисков KVM и сжатие диска в qcow2 формате
В самом начале статьи, я упомянул про эти два формата.
raw – в переводе «сырой». Преимущество формата, максимальная производительность, универсальность формата. Минусов масса, основные это:
- Диск занимает все дисковое пространство на физическом сервере, которое ему выделили;
- Нельзя создать снапшоты.
Qcow2 – это родной формат гипервизора QEMU, а так же QEMU-KVM. Это максимально удобный формат виртуального диска из всех поддерживаемых в KVM. Образ диска увеличивается по мере накопления данных на виртуальной машине, поддерживаются снапшоты.
Чем хорош формат qcow2? Вам в принципе не нужно уменьшать размер виртуального диска, так как диск занимает на сервере, ровно столько, сколько места там занято. Если же у вас данные на сервере постоянно перезаписываются и бывает такое, что диск «распух», его можно с легкостью сжать. Рассмотрим такой вариант. Я забью нулями некоторое дисковое пространство и после чего удалю файл:
dd if=/dev/zero of=/mytempfile
rm -rf /mytempfile
При проверке с сервера, образ диска сначала весил 2.4G после чего расширился до 5.9G:
То есть после удаления информации на виртуальной машине, диск обратно не сжался. Чтобы файл диска получил актуальный размер, я использую следующий метод:
Бэкапим файл диска, останавливаем виртуальную машину и после чего выполняем следующие действия:
qemu-img convert -O qcow2 /старый_образ /новый_образ
После чего можно проверить размеры двух дисков:
Как видим, размер сжатого диска 1.6G. Переименуем новый образ диска в нужный нам и запустим виртуальную машину:
Контрольная проверка с сервера:
Способ рабочий. За все время его использования, ни разу файловая система на виртуальной машине не умирала. Но настоятельно рекомендую перед подобными работами, создавать копию диска, если не хотите потерять данные.
Это все, что я хотел в данной статье рассказать. Если у кого-то из посетителей сайта есть рабочий способ по уменьшению диска на KVM, именно уменьшения (не сжатие) и именно рабочий, предлагайте свои варианты и я обязательно их протестирую.
В предыдущей статье мы рассмотрели установку гипервизора KVM и создание виртуальной машины. В рамках одной статьи, мы не смогли охватить все нюансы управления виртуальными машинами, а затронули лишь их часть. Сегодня, мы постараемся рассказать все об управлении виртуальными машинами из консоли сервера: как изменить параметры ВМ, добавить дополнительные устройства и рассмотрим основные команды, которые используются для администрирования виртуальных машин KVM.
Формат блочных устройств — qcow2
Но, тем не менее, эту схему можно проделать и с raw образами, достаточно сконвертировать его в qcow2. В общем-то, инструкция будет актуальна для всего, что конвертируется в qcow2.
Простой способ уменьшения диска на KVM заключается в следующих этапах:
- Сжатие блочного устройства qcow2 (диска VM)
- Создание диска меньшего размера
- Подключение gparted образа, старого и нового диска
- Подготовка к загрузке ОС
- Характеристики VM и хост машины:
В чем разница между размером образа, фактическим и физическим объемом?
Допустим, qcow2 image создан размером 80гб и мы об этом знаем. В процессе эксплуатации образ забивался данными, какие-то данные удалялись. Если в общих словах — в связи с особенностями процесса записи-удаления данных, для ОС удаленные данные как бы не существуют, а в образе остаются записанными, пока не будут перезаписаны другими данными. Соответственно хоть в ОС Вы будете видеть 20GB фактически занимаемых данных, то хост KVM покажет такую замечательную картину (используем утилиту qemu-img для получения информации):
Можно заметить что virtual size = disk size, а так же du -sh образа покажет что он занимает реальные 80G:
И так как нам нужно уменьшить размер образа до 40GB, приступаем к процессу.
Virsh: команды управления виртуальной машиной KVM
Первый вопрос, который возникает у начинающего администратора KVM: как увидеть созданные виртуальные машины, как остановить, запустить и удалить их. Для управления ВМ в KVM из консоли можно использовать утилиту virsh (использует libvirt API). С помощью утилиты virsh можно выполнить практически все операции с виртуальными машинами KVM.
Как видно из скриншота, в первом случае отключенная ВМ не была отображена.
Еще несколько команд по получению различной информации о виртуальной машине:
Увеличение диска виртуальной машины KVM
Расширение виртуального диска со стороны KVM
Для того, чтобы проводить работы с диском, виртуальная машина должна быть отключена, иначе мы не сможем что-либо сделать. Рассмотрим пример с увеличением диска размер которого изначально был 20Гб.
Чтобы посмотреть параметры диска виртуальной машины KVM, воспользуйтесь командой:
qemu-img info /путь_до_диска
Вывод команды будет примерно такой:
Мы видим, что у нас есть два поля которые указывают на размер, это virtual_size и disk_size:
- virtual_size – размер виртуального диска, указанный при создании или расширении диска (в этом примере максимальный размер диска – 20 Гб);
- disk_size — размер файла диска в текущий момент, т.е. сколько сейчас занимает образ диска места на физическом сервере (относится только к формату qcow). В нашем пример виртуальный диск занимает всего 1,6 Гб на хранилище.
И сразу о форматах. Я рекомендую при создании виртуальных машин на KVM использовать формат диска qcow2, а не raw. Чуть позже я объясню почему.
Если сразу проверить вывод информации об образе диска, мы увидим, что он расширился:
Часть работы мы сделали, но требуется и проведение работ со стороны виртуальной машины в гостевой ОС. Далее мы покажем, как увеличить размер диска в гостевых CentOS 7 и Windows Server 2012.
Если вы планируете добавить дополнительный виртуальный диск для ВМ на KVM гипервизоре, используются qemu-img и virsh.
Расширение раздела в виртуальной машине с Linux CentOS
После расширения диска со стороны сервера, нужно запустить виртуальную машину и подключиться к ней по ssh. Все работы будут проводиться с помощью утилиты управления разделами жестких дисков fdisk.
После подключения к серверу, проверяем наличие нашего дополнительно подключенного места:
На скриншоте видно, раздел /dev/vda2 имеет размер 20Gb, а доступное место на диске у нас больше.
Подправим этот момент и расширим раздел /dev/vda2 до максимального объема:
После чего нам нужно сделать рестарт виртуальной машины и выполнить команду для применения расширения диска:
В итоге мы получили расширенный раздел /dev/vda2. Теперь по порядку, что именно мы сделали:
- fdisk /dev/vda — запустили утилиту fdisk подключившись к разделу /dev/vda
- /d — удаляем раздел, по умолчанию это раздел 2 который нам и нужен, поэтому в следующем пункте жмем просто Enter
- /n – создаем новый раздел, в следующем пункте так же просто жмем Enter или вводим p, далее Enter так как создаваемый раздел по умолчанию будет 2.
- При указании первого и последнего сектора так же жмем просто Enter, если мы хотим расширить раздел до максимума, если вы хотите указать конкретный размер, в последнем секторе указывайте размер диска как указано в меню +size Размер не может быть меньше, чем был ранее!
- /w — применяем наши настройки.
После перезагрузки проверим диск командой:
В некоторых источниках для выполнения данной процедуры указывают команду:
Но с файловой системой xfs это не работает!
Работы по расширению диска на виртуальной машине с ОС CentOS 7 закончены.
Увеличение диска в гостевой Windows Server
Подключаемся к виртуальной машине через rdp или VNC и выполняем работы по расширению диска.
Откройте Server Manager -> Tools -> Computer Management;
В открывшемся окне выбираем в меню Disk Management, после чего у вас должны отобразиться все ваши диски и неразмеченное пространство, которые мы добавили со стороны гипервизора KVM;
Выбираем нужный диск и нажимаем Extended Volume;
По умолчанию для увеличения размера диска будет предложено все доступное место;
Нажимаем «далее» и завершаем расширение. После данной процедуры, ваш раздел в системе должен будет расшириться;
Хотелось бы добавить, что перед процедурой расширения диска для виртуальной машины, я советую выполнять резервное копирование самого диска. Остановите виртуальную машину и скопируйте образ диска в директорию для бэкапа или в любую директорию, в которой есть свободное место. Если в ходе работ, что-то пойдет не так, вы всегда сможете вернуть образ виртуального диска из бэкапа.
Этап 4 — загрузка ОС
Перед загрузкой ОС я всё же рекомендую отключить старый диск от сервера. Поэтому на предыдущем этапе в fstab нужно было прописать vda2, но если Вы внимательный пользователь ПК и ничего не отключали, то проблем возникнуть не должно. Со старым диском велика вероятность загрузиться именно с него.
В процессе загрузки никаких проблем не возникло, сервер загрузился как положено. Проверим это:
Мы видим, что /boot и / нужные, размер 40GB, ОС работает. Счастье, не иначе!
KVM: добавление диска в виртуальную машину
В одной из наших статей, мы описывали процесс расширения и уменьшения дисков виртуальных машин в KVM. Но мы не описывали вариант по добавлению дополнительного диска.
Сначала нужно создать дополнительный файл диска для виртуальной машины:
Вместо qcow2 вы можете указать нужный формат диска, так же нужно указать путь до файла. У меня хранилище для дисков /vz/disk/.
После этого, можно добавить устройство виртуального диска к самой ВМ:
Остановите и запустите ВМ, проверьте что получилось:
Как видим, диск добавлен. После данных манипуляций, на виртуальной машине нужно разметить этот диск под ваши нужды.
Добавление памяти и vCPU виртуальной машине KVM
В консоли KVM вы можете добавить или уменьшить ресурсы процессора и памяти, выделенные для ВМ двумя способами:
Если виртуальная машина запущена, ее нужно остановить:
Теперь с помощью virsh изменим количество виртуальных процессоров до 6 (vCPU):
— количество ядер процессора
Но при применении этой команды, у меня сразу же появилась ошибка:
Мы не можем установить количество ядер процессора, больше, чем максимальное количество. Чтобы увеличить максимальное количество ядер ВМ, выполните команду:
Повторите первую команду и запустите виртуальную машину:
Проверим количество процессоров в настройках ВМ: овленное количество процессоров:
Аналогичным образом добавим память виртуальной машине:
Все по той же причине, сразу же вышла ошибка:
Увеличим максимальное значение памяти::
Теперь можно увеличить память ВМ.
Перед всеми изменениями не забывайте останавливать ВМ, а после запускать ее.
Также вы можете изменить ресурсы ВМ KVM через ее конфигурационный XML файл. Можно изменить файл в режиме онлайн или же сделав бэкап XML файла ВМ, изменить его и применить к виртуальной машине.
Отредактируем XML файл ВМ в онлайн режиме:
В открывшемся редакторе vi внесите изменения, нажав кнопку “Insert”.
Например, зададим для ВМ 2 ядра и 1Гб памяти:
Сохраните изменения в файле и перезапустите ВМ:
Проверьте настройки ВМ:
Тоже самое можно сделать, сделав бэкап XML файла:
Измените нужные вам параметры, сохраните файл и примените к виртуальной машине:
Иногда при изменении конфигурационного файла ВМ в онлайн режиме назначенные ресурсы сбрасываются после перезагрузки. В этом случае выполните остановку виртуальной машины и после этого просто запустите ее.
Этап 1 — Сжатие блочного устройства (образа)
Перед началом процедуры уменьшения диска надо убедиться, что занимаемое пространство внутри ОС меньше объема, до которого диск будет так или иначе уменьшен.
Как мы видим, занято 18GB, что меньше 40GB. Выключаем VM командой
И переходим на хост машину, проверяем:
- сколько занимает образ физически
- сколько фактически
Для сжатия образа нам понадобится простая утилита virt-sparsify. Убедимся что VM не работает и выполним команду в директории вместе с образом диска (Важное замечание: перед началом virt-sparsify, убедитесь, что в /tmp и в хранилище образа достаточно свободного пространства для выполнения операции)
Результатом успешного завершения операции будет следующий вывод:
Затем делаем подмену диска (перемещаем qcow_shrink куда-нибудь в сторону, например qcow_shrink-old, а qcow_shrink-new на его место — qcow_shrink).
Запускаем VM. Если всё запустилось, гасим VM и продолжаем работы.
Этап 2 — Создание диска меньшего размера
Простая процедура включающая в себя всего одну команду:
qcow_shrinked — имя нового образа
40G — новый размер
Добавление памяти и vCPU виртуальной машине KVM
В консоли KVM вы можете добавить или уменьшить ресурсы процессора и памяти, выделенные для ВМ двумя способами:
Если виртуальная машина запущена, ее нужно остановить:
Теперь с помощью virsh изменим количество виртуальных процессоров до 6 (vCPU):
— количество ядер процессора
Но при применении этой команды, у меня сразу же появилась ошибка:
Мы не можем установить количество ядер процессора, больше, чем максимальное количество. Чтобы увеличить максимальное количество ядер ВМ, выполните команду:
Повторите первую команду и запустите виртуальную машину:
Проверим количество процессоров в настройках ВМ: овленное количество процессоров:
Аналогичным образом добавим память виртуальной машине:
Все по той же причине, сразу же вышла ошибка:
Увеличим максимальное значение памяти::
Теперь можно увеличить память ВМ.
Перед всеми изменениями не забывайте останавливать ВМ, а после запускать ее.
Также вы можете изменить ресурсы ВМ KVM через ее конфигурационный XML файл. Можно изменить файл в режиме онлайн или же сделав бэкап XML файла ВМ, изменить его и применить к виртуальной машине.
Отредактируем XML файл ВМ в онлайн режиме:
В открывшемся редакторе vi внесите изменения, нажав кнопку “Insert”.
Например, зададим для ВМ 2 ядра и 1Гб памяти:
Сохраните изменения в файле и перезапустите ВМ:
Проверьте настройки ВМ:
Тоже самое можно сделать, сделав бэкап XML файла:
Измените нужные вам параметры, сохраните файл и примените к виртуальной машине:
Иногда при изменении конфигурационного файла ВМ в онлайн режиме назначенные ресурсы сбрасываются после перезагрузки. В этом случае выполните остановку виртуальной машины и после этого просто запустите ее.
Увеличение диска виртуальной машины KVM
Расширение виртуального диска со стороны KVM
Для того, чтобы проводить работы с диском, виртуальная машина должна быть отключена, иначе мы не сможем что-либо сделать. Рассмотрим пример с увеличением диска размер которого изначально был 20Гб.
Чтобы посмотреть параметры диска виртуальной машины KVM, воспользуйтесь командой:
qemu-img info /путь_до_диска
Вывод команды будет примерно такой:
Мы видим, что у нас есть два поля которые указывают на размер, это virtual_size и disk_size:
- virtual_size – размер виртуального диска, указанный при создании или расширении диска (в этом примере максимальный размер диска – 20 Гб);
- disk_size — размер файла диска в текущий момент, т.е. сколько сейчас занимает образ диска места на физическом сервере (относится только к формату qcow). В нашем пример виртуальный диск занимает всего 1,6 Гб на хранилище.
И сразу о форматах. Я рекомендую при создании виртуальных машин на KVM использовать формат диска qcow2, а не raw. Чуть позже я объясню почему.
Если сразу проверить вывод информации об образе диска, мы увидим, что он расширился:
Часть работы мы сделали, но требуется и проведение работ со стороны виртуальной машины в гостевой ОС. Далее мы покажем, как увеличить размер диска в гостевых CentOS 7 и Windows Server 2012.
Если вы планируете добавить дополнительный виртуальный диск для ВМ на KVM гипервизоре, используются qemu-img и virsh.
Расширение раздела в виртуальной машине с Linux CentOS
После расширения диска со стороны сервера, нужно запустить виртуальную машину и подключиться к ней по ssh. Все работы будут проводиться с помощью утилиты управления разделами жестких дисков fdisk.
После подключения к серверу, проверяем наличие нашего дополнительно подключенного места:
На скриншоте видно, раздел /dev/vda2 имеет размер 20Gb, а доступное место на диске у нас больше.
Подправим этот момент и расширим раздел /dev/vda2 до максимального объема:
После чего нам нужно сделать рестарт виртуальной машины и выполнить команду для применения расширения диска:
В итоге мы получили расширенный раздел /dev/vda2. Теперь по порядку, что именно мы сделали:
- fdisk /dev/vda — запустили утилиту fdisk подключившись к разделу /dev/vda
- /d — удаляем раздел, по умолчанию это раздел 2 который нам и нужен, поэтому в следующем пункте жмем просто Enter
- /n – создаем новый раздел, в следующем пункте так же просто жмем Enter или вводим p, далее Enter так как создаваемый раздел по умолчанию будет 2.
- При указании первого и последнего сектора так же жмем просто Enter, если мы хотим расширить раздел до максимума, если вы хотите указать конкретный размер, в последнем секторе указывайте размер диска как указано в меню +size Размер не может быть меньше, чем был ранее!
- /w — применяем наши настройки.
После перезагрузки проверим диск командой:
В некоторых источниках для выполнения данной процедуры указывают команду:
Но с файловой системой xfs это не работает!
Работы по расширению диска на виртуальной машине с ОС CentOS 7 закончены.
Увеличение диска в гостевой Windows Server
Подключаемся к виртуальной машине через rdp или VNC и выполняем работы по расширению диска.
Хотелось бы добавить, что перед процедурой расширения диска для виртуальной машины, я советую выполнять резервное копирование самого диска. Остановите виртуальную машину и скопируйте образ диска в директорию для бэкапа или в любую директорию, в которой есть свободное место. Если в ходе работ, что-то пойдет не так, вы всегда сможете вернуть образ виртуального диска из бэкапа.
Бонус
То, с чем придется столкнуться в некоторых ситуациях.
- Если VM на Windows, то вместо virt-sparsify можно использовать сжатие тома внутри ОС. Технически весь процесс одинаковый, однако известно, что метки тома меняются (мы это видели ранее в blkid), а значит Windows надо знать, что есть что в новой реальности. Для этого загружаемся в режим восстановления (после всех операций) и делаем fixmbr + rebuildbcd. Что именно и как — да поможет вам man
- Великая проблема — с xfs напороться на Superblock has unknown read-only compatible features (0x4) enabled. После загрузки ОС она будет работать в режиме read-only, а всё будет смонтировано как надо. Решение до безумия простое:
Virsh: команды управления виртуальной машиной KVM
Первый вопрос, который возникает у начинающего администратора KVM: как увидеть созданные виртуальные машины, как остановить, запустить и удалить их. Для управления ВМ в KVM из консоли можно использовать утилиту virsh (использует libvirt API). С помощью утилиты virsh можно выполнить практически все операции с виртуальными машинами KVM.
Как видно из скриншота, в первом случае отключенная ВМ не была отображена.
Еще несколько команд по получению различной информации о виртуальной машине:
На этом всё!
Как видите, ничего сложного в этом нет. Конечно, можно использовать LVM, resize2fs и прочие штуки, но всё-таки qcow2 где-то ещё используется и кому-то даже нужен.
20.02.2021
VyacheslavK
KVM, Linux
комментариев 7
В этой статье мы поговорим об изменении размера дисков виртуальной машины KVM, рассмотрим используемые форматы виртуальных дисков. Покажем, как правильно увеличить диск виртуальной машины в гипервизоре KVM на Linux без потери данных, а также обсудим варианты уменьшения размеров дисков.
Читайте также: