Proxmox уменьшает размер диска виртуальной машины

Обновлено: 21.11.2024

Блог о моем опыте работы с платформой виртуализации Proxmox (PVE). Проблемы и возникшие, как я их решал. Надеюсь, этот блог окажется полезным и сэкономит время другим администраторам.

Суббота, 5 августа 2017 г.

Уменьшение размера виртуальной машины Windows с помощью Proxmox PVE, использующего формат образа QEMU/KVM QCOW2

Я совершил ошибку, выделив слишком много места на диске для виртуальной машины Windows 7.

Вот технические характеристики виртуальной машины, с которыми у меня есть опыт:

Windows 7 64-разрядная
Исходный размер: 64 ГБ (я хотел бы уменьшить размер на 15 ГБ)
Proxmox PVE 4.x
Qemu KVM с использованием формата файла QCOW2

Хотя вы можете легко увеличить дисковое пространство, просто используя интерфейс Proxmox (см. ниже), вы НЕ МОЖЕТЕ уменьшить/уменьшить дисковое пространство. Причина этого просто в том, что операционная система уже выделила внутреннее пространство, и вы не можете просто уменьшить пространство контейнера без предварительного уменьшения пространства, выделенного ОС.


Несмотря на то, что этот блог был моим опытом работы с Windows 7, вы сможете использовать этот метод с Windows 8 или 10.

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


ШАГ 1 - ВЫКЛЮЧИТЕ ВМ (необязательно - если вам не нужна резервная копия, перейдите к шагу 3)
(вы должны знать, как это сделать)


ШАГ 2. РЕЗЕРВНАЯ КОПИЯ ФАЙЛА ИЗОБРАЖЕНИЯ (необязательно – если вам не нужна резервная копия, перейдите к шагу 3)

  • войдите в свой proxmox, используя ssh
  • перейдите к /var/lib/vz/images
  • скопируйте файл QCOW2 в другой файл или место, например:

ШАГ 3. ЗАПУСК ВМ
(вы должны знать, как это сделать)


ШАГ 4. ИСПОЛЬЗУЙТЕ DISKPART ДЛЯ УМЕНЬШЕНИЯ РАЗМЕРА ТОМА

  • войдите в Windows
  • запустите diskpart из командной строки: перейдите в меню "Пуск", введите "diskpart" + Enter
  • используйте приложение командной строки diskpart, чтобы уменьшить размер тома, см. пример ниже, чтобы уменьшить объем на 15 ГБ:

список дисков (необязательно, но необходимо, если у вас несколько дисков)

выбрать том 1

ШАГ 5. СКАЧАТЬ SDELETE и ВЫПОЛНИТЬ ЕЕ

    Загрузите SDELETE прямо с веб-сайта Microsoft:

ШАГ 6 — ВЫКЛЮЧЕНИЕ ВИРТУАЛЬНОЙ МАШИНЫ
После завершения удаления немедленно выключите виртуальную машину окна.

ШАГ 7 - СЖАТИЕ ФАЙЛА QCOW2
это последний шаг, но перед выполнением qemu-img мы должны сделать резервную копию исходного файла QCOW2, скопировав его в файл с другим именем, оканчивающимся на '-ORIGINAL'. Затем мы выполняем qemu-img. После завершения процесса вы должны протестировать виртуальную машину Windows, чтобы убедиться, что она работает нормально.

mv vm-105-disk-1.qcow2 vm-105-disk-1-ORIGINAL.qcow2

qemu-img convert -O qcow2 vm-105-disk-1-ORIGINAL.qcow2 vm-105-disk-1.qcow2

Кроме того, не забудьте проверить окончательный размер файла QCOW2. Мой уменьшился до 26 ГБ с 64 ГБ, не знаю, почему я получил 26 ГБ, когда я просил только 15 ГБ. Но так все работает. Я счастлив, что освободил больше места. :-)

Когда все будет готово и вы протестировали виртуальную машину Windows, чтобы убедиться, что все работает после процесса сжатия, вы можете удалить файл резервной копии QCOW2.

туатан

Член

У меня есть виртуальная машина с жестким диском объемом 42 ГБ (формат RAW, файловая система zfs), который я хочу уменьшить до 32 ГБ.

Я думал, что мог бы использовать parted, чтобы сначала уменьшить раздел на виртуальной машине, а затем уменьшить размер PVE, но я изо всех сил пытаюсь найти способ сделать это?

Есть ли какой-либо метод/документация?

Стефан_Р

Сотрудник Proxmox

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

  1. Убедитесь, что в секторах диска, которые вы собираетесь удалить, нет абсолютно никаких важных данных (начиная с конца диска).
  2. (Сделайте резервную копию, прежде чем продолжить, чтобы быть уверенным)
  3. Выключите ВМ
  4. Укажите ZFS сжать диск (например, zfs set volsize=XXXG rpool/data/vm- -disk-0 , используйте список zfs, чтобы найти правильный)
  5. Запустить повторное сканирование qm
  6. Запустите виртуальную машину для проверки

С уважением,
Стефан

У вас уже есть подписка на коммерческую поддержку? - Если нет, купите сейчас и прочитайте документацию

СиРоланд

Член

Привет и извините за похищение этой темы!

Эти команды использовались для сжатия большого диска из виртуальной машины Windows.
Предыдущий ИТ-специалист установил диск на 8 ТБ, но требуется только 4. Теперь хранилище данных заполнено более чем на 90 %.

Сжатие диска выглядит хорошо, в StorageOverview из PVE Gui Диск показывает только ~ 4 ТБ.
Но хранилище данных по-прежнему заполнено более чем на 90%. Диск показывает «используемое» значение с 8 ТБ, а не с 4 ТБ

Версия PVE = 6.4.4
ВМ = Windows Server 2016
Отмена активна
Мы также пробовали "Оптимизировать диск Windows -> Дефрагментация" и удалить

Кто-нибудь знает, почему диск не освобождает место?

Дунуин

Известный участник

Вы пробовали обрезать zpool zSpace, чтобы обрезать свой пул?

Вы также сжимали гостевую файловую систему и разделы перед сжатием zvol?

СиРоланд

Член

Я сделал это на тестовой системе с Raicontroller, настроил все диски как Raid0 и zfs Mirrow со следующим результатом
До сих пор я боялся этого в продуктивной системе

Как вы думаете, на Дисках, подключенных через HBA, результат лучше?

Да, файловая система виртуальной машины Windows раньше была уменьшена с 8 ТБ до 4 ТБ.
С помощью «qm rescan» конфигурация была обновлена, и диск внутри виртуальной машины показывает максимальный размер 4 ТБ

СиРоланд

Член

Думаю также, что в системе prod обрезка невозможна. Возможно, вместо HBA используется Raidcontroller

zpool status -t zSpace показывает "обрезка не поддерживается"

пул: Состояние zSpace: ОНЛАЙН сканирование: скраб восстановил 0B в 18:19:58 с 0 ошибками в воскресенье 10 октября 18:44:02 Конфигурация 2021: ИМЯ СОСТОЯНИЕ ЧТЕНИЕ ЗАПИСЬ CKSUM zSpace ОНЛАЙН 0 0 0 raidz1-0 ОНЛАЙН 0 0 0 ата-WDC_WD40EFRX-68N32N0_WD-WCC7K0ZKN1FL ОНЛАЙН 0 0 0 (отделка неподдерживаемый) ата-WDC_WD40EFRX-68N32N0_WD-WCC7K3UHY7RC ОНЛАЙН 0 0 0 (отделка неподдерживаемый) ата-WDC_WD40EFRX-68N32N0_WD-WCC7K3UHY932 ОНЛАЙН 0 0 0 (отделка неподдерживаемый) ата-WDC_WD40EFRX -68N32N0_WD-WCC7K5TR16CJ ONLINE 0 0 0 (обрезка не поддерживается)


Есть ли другое решение для уменьшения используемого пространства?

Дунуин

Известный участник

Аппаратные RAID-контроллеры

Аппаратные RAID-контроллеры не следует использовать с ZFS. Хотя ZFS, вероятно, будет более надежной, чем другие файловые системы на аппаратном RAID, она не будет такой надежной, как была бы сама по себе.

В последнее время, как вы могли заметить, я сосредоточился на виртуальных машинах KVM под управлением операционных систем Windows (последние версии). Этот пост снова будет посвящен виртуальным машинам KVM. Мы поговорим об изменении размера виртуальных дисков.

Может случиться так, что вашей виртуальной машине не хватает места или вы выделили слишком много места на диске, и вы хотите это изменить. Эту операцию можно выполнить внутри инфраструктуры Proxmox VE (PVE), но только из командной строки (веб-интерфейс пока не предоставляет такой возможности — возможно, в версии 2.0)

Процесс изменения размера в основном представляет собой двухэтапный процесс, и порядок этих шагов отличается, если вы увеличиваете или уменьшаете размер диска.

Чтобы увеличить размер диска, вы будете выполнять действия в следующем порядке

  • увеличить размер виртуального диска (через командную строку)
  • Затем вы увеличите размер раздела в операционной системе, чтобы отразить изменения в размере диска.

Чтобы уменьшить размер диска, выполните действия в следующем порядке

  • во-первых, вы уменьшите размер раздела в операционной системе, чтобы отразить изменения в размере диска.
  • и тогда вы уменьшите размер виртуального диска (через командную строку)

Изменение размера файла виртуального диска: инструкции

Давайте взглянем на первую часть процесса.

Шаг 1. Резервное копирование виртуальной машины

Перед выполнением этой операции вы должны сначала сделать резервную копию вашей виртуальной машины на случай, если что-то пойдет не так — не следует, но кто знает 🙂

Шаг 2. Выключите виртуальную машину

Перед применением изменений необходимо выключить виртуальную машину. Это гарантирует корректную фиксацию изменений инфраструктурой PVE.

Шаг 3. Изменение размера виртуального диска

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

qemu-img – помощь

Нажмите, чтобы увеличить

Вы увидите список поддерживаемых параметров. Если у вас недавняя установка Proxmox VE, вы увидите опцию под названием изменение размера. Как следует из названия, использование этой опции позволит вам увеличить или уменьшить размер виртуального диска в формате qcow2, raw или vmdk. (это круто, все поддерживаемые форматы используются PVE). Команду можно использовать следующим образом

qemu-img изменить размер +| –

Примечание: подождите, прежде чем использовать эту команду – прочитайте ее до конца!!

Шаг 4. Проверка новостей о размере виртуального диска

Вы можете использовать команду ls –lh, чтобы убедиться, что файл был соответствующим образом изменен.

Нажмите, чтобы увеличить

Или вы можете использовать информацию qemu-img, чтобы убедиться, что размер файла был изменен в соответствии с требованиями.

Нажмите, чтобы увеличить

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

Практические примеры

Пример 1. Увеличение размера диска

В этом сценарии у нас есть виртуальная машина с VMID 111, для раздела диска c: которой задано значение 20 ГБ. Нам нужно увеличить размер раздела до 25 ГБ.

Нажмите, чтобы увеличить

Мы выключаем виртуальную машину, и, как описано ранее, я устанавливаю консольное подключение (через шпатлевку) к хосту PVE. Я иду в папку, содержащую все файлы моих виртуальных дисков (по умолчанию все виртуальные диски расположены в /var/lib/vz/images), а затем перехожу к папке, содержащей виртуальный диск, размер которого я хочу изменить. (В моем случае vmid равен 111 — см. скриншот)

Нажмите, чтобы увеличить

Мне нужно увеличить размер диска до 25 ГБ. Мне в основном нужно добавить 5 ГБ к исходному файлу. Затем я наберу следующую команду

qemu-img изменить размер vm-111-disk-1.raw +5GB

Нажмите, чтобы увеличить

Теперь я могу перезагрузить виртуальную машину, и вы увидите, что размер диска в операционной системе установлен на 25 ГБ

Нажмите, чтобы увеличить

Пример 2. Уменьшение размера диска

В этом сценарии у нас есть виртуальная машина с VMID 111, для раздела диска c: которой установлено значение 25 ГБ. Нам нужно уменьшить размер раздела до 20 ГБ.

Нажмите, чтобы увеличить

Примечание:

Сначала вам нужно уменьшить размер диска в операционной системе. Чтобы узнать, как уменьшить размер диска в операционной системе, ознакомьтесь с частью II

Я выключу виртуальную машину, установим соединение с хостом PVE и перейду в каталог, содержащий файл виртуального диска, размер которого мне нужно изменить. Чтобы сжать диск, вам нужно ввести следующую команду

qemu-img изменить размер – – -5 ГБ

Нажмите, чтобы увеличить

Если вы загрузите свою виртуальную машину, вы увидите, что диск соответственно уменьшился.

Примечание:

Существует разница в обозначениях увеличения и уменьшения диска. Если вы введете эту команду,

qemu-img изменить размер -5 ГБ

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

qemu-img изменить размер – – – 5 ГБ

чтобы уменьшить размер диска на 5 ГБ.

Заключительные примечания

Пока что мы только изменили размер виртуального диска. Теперь Proxmox VE знает, что размер диска был обновлен. Однако нам может потребоваться выполнить дополнительные действия в операционной системе, чтобы применить эти изменения. Об этом будет рассказано в следующей части этого поста

16 мыслей о «Proxmox VE — изменение размера виртуальных жестких дисков — часть I»

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

Да. Было протестировано и проверено несколько раз…

Я мог бы помочь вам, если бы вы предоставили более подробное описание вашей проблемы и шагов, которые вы предприняли... Опять же, эта процедура была протестирована, поэтому она должна работать

Спасибо! Это работает отлично. Как увеличить размер диска в Windows?

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

При просмотре /var/lib/vz/images появляется сообщение о том, что это виртуальные диски в локальном хранилище хоста, верно? Если да, то как изменить размер диска в группе LVM в iSCSI SAN?

Кроме того, я использую Proxmox 2, так что я предполагаю, что теперь веб-интерфейс может быть больше?

Если вы можете немного подождать… Сначала я проверю… Это может стать новым постом….

Звучит неплохо, спасибо.

Если это поможет вашему следующему сообщению, я смог обнаружить, что диски в iSCSI SAN упоминаются в /dev/dm-0, dm-1 и т. д. Вы можете запустить 'dmsetup ls', чтобы точно узнать, какие диски находятся за символическими ссылками 'dm-x'.

Что я сделал:
– выключил нужную виртуальную машину;
– добавил/создал к ней второй жесткий диск полного желаемого размера;
– подключился по SSH к серверу Proxmox и запустил dd команда, if=vm-101-disk-1 of=vm-101-disk2
– когда это задание копирования/дублирования будет выполнено, удалите меньший диск из виртуальной машины
– запустите виртуальную машину и сообщите Windows, чтобы расширить том, чтобы занять новое дополнительное свободное пространство

Сообщите мне, если вы найдете более элегантный/оптимизированный способ. 🙂

Чтобы ответить на ваш вопрос (короткая версия), да, есть более простой способ увеличить размер виртуальной машины….

– сначала получите информацию о LVM – введите lvdisplay
– найдите имя vg, которое необходимо изменить
– введите lvresize -L+SizeGB
– введите lvchange –refresh
– внутри ОС необходимо изменить размер диска или создать дополнительный раздел….

Сообщение находится в пути…..

Надеюсь, это ответ на ваш вопрос

К сведению: я попытался уменьшить размер виртуального диска Windows 7-64 (драйвер virtio) на 10 ГБ. ВМ не загрузилась с новым файлом образа. У меня есть интерфейс восстановления, но каталог не найден.

К сожалению, вы выполнили все шаги, в частности шаг 1, где я упоминаю о резервном копировании вашей виртуальной машины на случай, если что-то пойдет не так….

в любом случае, можете проверить что-нибудь из следующего

Вы ввели правильную команду?
Это правильная команда для уменьшения размера диска qemu-img resize vm-101-disk-1.raw – – -1OG Если вы ввели qemu-img resize vm -101-disk-1.raw -10G, тогда новый размер диска будет 10 ГБ. это не правильная команда. Возможно, вы уже удалили некоторые файлы

-> в вашей консоли Proxmox, каков размер диска?

Можете ли вы загрузить свою виртуальную машину и запустить ее в режиме восстановления и посмотреть, сможет ли мастер восстановить/восстановить вашу установку Windows?
Возможно, все еще используя режим восстановления (нажмите F8 во время процесса загрузки), вы можете открыть командную строку и посмотреть, можете ли вы вывести список дисков и разделов с помощью Diskpart.

Если режим восстановления не обнаруживает диск, вам потребуется загрузить драйверы virtio. Попробуйте восстановить из этого режима. Если это не помогло, откройте командную строку и проверьте, видите ли вы диск и разделы с помощью утилиты diskpart. проверьте правильность отображения размера раздела и файловой системы.

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

Я еще раз проверю процедуру, но я много раз использовал ее с 64-разрядной версией Windows 7/Windows 2008 R2, и у меня было минимум проблем с этим

Надеюсь, это поможет
Увидимся

Да, у меня есть резервная копия, и я уже восстановил ВМ.
Я внимательно следовал вашим инструкциям и уверен, что командная строка была правильной. Полученный размер файла .raw оказался таким, как я и ожидал.
Мастер восстановления/восстановления Windows запускался автоматически при загрузке с новым образом.
Диск C: не был найден, и мне было предложено вставить диск с драйверами, как будто драйвер virtio scsi был утерян.
Я не экспериментировал с дальнейшими вариантами восстановления.
Как вы думаете, может ли понадобиться дефрагментация диска перед сжатием?

Я собираюсь снова попытаться сжать этот же файл и сообщу о результатах.

Похоже, что при сжатии диска необходимо выполнить два основных шага в обратном порядке. Во-первых, вы сжимаете диск в клиенте Windows. Мастер сжатия запрашивает на диске доступное место для сжатия до момента, когда будут найдены неперемещаемые файлы. (В моем случае максимальный размер сжатия был 7 ГБ, а не 10 ГБ.)
Во-вторых, вы сжимаете диск на хосте, используя максимальный размер сжатия, определенный клиентом.
Итак, вместо своих волюнтаристских 10Гб я уменьшил объем на 7Гб и все прошло отлично!

Спасибо за очень полезные уроки.

Это отличные новости… (Я рад, что ваша виртуальная машина снова подключена к сети). Возможно, вы правы в своем утверждении.
Было бы действительно хорошо предупредить пользователя, что у вас есть максимальный размер сжатия.
Возможно, я обновлю этот пост, чтобы более подробно рассказать об уменьшающейся части.. спасибо

Увидимся
до следующего раза

ОСТАНОВИТЕСЬ ДО ПОТЕРИ ДАННЫХ.

Не следуйте инструкциям этого руководства по уменьшению размера виртуального жесткого диска.

ПРЕЖДЕ ЧЕМ пытаться уменьшить размер виртуального жесткого диска (VHD), НЕОБХОДИМО сначала уменьшить размер раздела, чтобы пустое пространство в конце виртуального жесткого диска было как минимум таким же или больше, чем объем, который вы собираетесь уменьшить. VHD от. В противном случае вы просто отрежете конец раздела, тем самым повредив его и базовую файловую систему, и потеряете все файлы, хранящиеся в этом отсеченном разделе раздела.

Действия по уменьшению виртуального жесткого диска должны в основном выполняться в обратном порядке и с обратным эффектом увеличения виртуального жесткого диска.

В качестве минимального примера (не тестировалось):
Шаг 1 — сделайте резервную копию вашей ВМ!!
Шаг 2. Уменьшите размер разделов виртуальной машины. Это делается внутри самой виртуальной машины с использованием любых необходимых инструментов, таких как управление дисками Windows, загрузочный диск gparted и т. д. Поэтому, если вы уменьшаете виртуальный жесткий диск с 25 ГБ до 20 ГБ, уменьшите раздел так, чтобы он теперь был меньше 20 ГБ, например. 19,8 ГБ.
Шаг 3. Отключите виртуальную машину.
Шаг 4. Измените размер виртуального жесткого диска, используя инструкции, представленные в этом руководстве (вероятно).
Шаг 5. Необязательно. Если вы уменьшили раздел на шаге 2 до меньше уменьшенного размера виртуального жесткого диска, вы можете увеличить этот раздел, чтобы заполнить оставшееся пространство на теперь измененном виртуальном жестком диске. Пример, уменьшил раздел до 19.8 ГБ, размер виртуального жесткого диска изменен на 20 ГБ, поэтому теперь увеличьте раздел, чтобы заполнить оставшиеся 0,2 ГБ.

Удачи и не забудьте сделать резервную копию, а затем протестировать процедуру.

Спасибо за отзыв. действительно, для действия по сжатию вам нужно сначала сжать диск в виртуальной машине, а затем сжать файл виртуального диска. Мы немного обновили сообщение, чтобы отразить различия в процессе увеличения или уменьшения размера диска. Это уже упоминалось в разделе комментариев, но у нас не было времени обновить этот пост

До следующего раза
Увидимся

Оставить ответ

Авторские права и отказ от ответственности

Этот блог и его содержимое находятся в свободном доступе для пользователей, однако на них распространяются авторские права. Содержание является собственностью c-nergy.be. Это означает, что вы не можете дублировать или (. )

Поддержите нас

Вы можете поддержать нас, загрузив Brave Browser, и дать нам чаевые через систему вознаграждений Brave Browser.

Скачать браузер Brave БЕСПЛАТНО

Вы также можете купить у нас кофе, если считаете, что представленная здесь информация была вам полезна.

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

Как увеличить размер диска виртуальной машины KVM?

Увеличение виртуального диска на KVM

Давайте рассмотрим пример увеличения размера виртуального диска объемом 20 ГБ. Перед изменением настроек виртуального диска выключите виртуальную машину.

Чтобы просмотреть настройки виртуального диска виртуальной машины KVM, используйте следующую команду:

информация qemu-img /path_to_disk

Вы увидите такой результат:

Мы видим, что есть два поля, которые показывают размер: virtual_size и disk_size:

  • virtual_size — размер виртуального диска, устанавливаемый при создании или расширении диска (в данном примере максимальный размер диска — 20 ГБ);
  • disk_size — текущий размер файла на диске, т.е. т. е. сколько места диск занимает на физическом сервере (применимо только к формату диска qcow). В нашем примере виртуальный диск занимает всего 1,6 ГБ в хранилище.

И несколько слов о типах (форматах) KVM-дисков. Я рекомендую использовать qcow2 вместо raw при создании виртуальных машин в KVM. Позже я объясню почему.

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

Часть работы мы сделали, но нам еще нужны некоторые действия в гостевой ОС виртуальной машины. Теперь мы покажем, как увеличить размер диска в гостевых CentOS 7 и Windows Server 2012 R2.

Если вы собираетесь добавить еще один виртуальный диск для вашей ВМ в гипервизор KVM, используются инструменты qemu-img и virsh.

Как расширить раздел виртуальной машины под управлением CentOS Linux?

После увеличения размера виртуального диска на стороне KVM-сервера запустите виртуальную машину и подключитесь к ней. Мы будем использовать инструмент управления разделами жесткого диска fdisk, чтобы увеличить размер раздела и файловой системы.

Подключитесь к гостевой ОС ВМ через SSH и убедитесь, что появились дополнительные 5 ГБ свободного места на диске.

На снимке экрана видно, что /dev/vda2 имеет размер 20 ГБ, а доступное место на диске — 25 ГБ.

Расширим /dev/vda2 до максимально доступного размера:

Затем перезапустите виртуальную машину и выполните команду, которая применит новый размер диска:

В результате у нас получился расширенный раздел /dev/vda2. Вот что именно мы сделали:

  • fdisk /dev/vda — мы запустили fdisk и подключились к /dev/vda;
  • /d — мы удалили раздел. По умолчанию нам был нужен именно раздел 2, поэтому мы просто нажали Enter в следующем пункте;
  • /n — мы создали новый раздел и нажали Enter или p, затем снова нажали Enter, так как раздел, который мы пытались создать, по умолчанию имел бы номер 2;
  • При указании первого и последнего сектора мы также просто нажимаем Enter, если вы хотите максимально расширить раздел. Если вы хотите установить конкретный размер, введите размер диска в последний сектор, как показано в меню +размер;
  • /w — применить новые настройки.

После перезапуска ВМ проверьте диск с помощью этой команды:

Некоторые источники рекомендуют использовать следующую команду:

Но это не будет работать для файловой системы XFS!

Таким образом, вы увеличили размер диска на виртуальной машине под управлением CentOS 7.

Как увеличить размер диска в гостевой Windows Server?

Подключитесь к виртуальной машине Windows Server с помощью RDP или VNC и расширьте диск.

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

Как уменьшить размер диска виртуальной машины KVM?

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

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

Я приведу несколько примеров, с которыми я столкнулся и протестировал.

Уменьшение размера диска KVM с помощью Qemu

Некоторые ресурсы описывают действия, которые можно выполнять с помощью инструмента qemu. Они предлагают уменьшить дисковое пространство виртуальной машины с помощью этой команды:

qemu-img resize /path_to_disk -5G — уменьшить дисковое пространство на 5G

Или следующий вариант, где вы устанавливаете конкретный размер виртуального диска:

qemu-img resize /path_to_disk 25G — установить размер диска 25G

Что происходит после запуска этой команды? После запуска сервера система не загружается:

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

Уменьшение размера виртуального диска с помощью замены образа

Менее популярный вариант в этих руководствах — уменьшение места на диске с помощью замены диска. Это означает, что вы создаете новую виртуальную машину с нужным вам размером диска. Затем вы заменяете новый образ диска на старый, и он работает на основе описаний в разных источниках. Я проверил этот способ, и файловая система стала неработоспособной, как и в предыдущем варианте. Вот пример команды:

virt-resize /old_disk_image /new_disk_image

Были также некоторые методы, которые использовали преобразование диска из необработанного формата в формат qcow2, но я изначально создаю машины в этом формате, и вот объяснение, почему я это делаю.

Форматы дисков KVM и сжатие диска QCOW2

В начале статьи я упомянул эти два формата дисков: raw и qcow.

  • Файл виртуального диска занимает все выделенное ему место на физическом сервере;
  • Вы не можете делать снимки.

Qcow2 — это собственный формат гипервизора QEMU и QEMU-KVM. Это самый удобный формат виртуального диска из всех других форматов, поддерживаемых KVM. Образ диска увеличивается по мере накопления данных в виртуальной машине, и поддерживаются моментальные снимки.

Каковы преимущества qcow2? Вам не нужно уменьшать размер вашего виртуального диска, так как он занимает ровно столько места в хранилище сервера, сколько ему нужно. Если на вашем сервере постоянно перезаписываются данные, а диск вздулся, вы можете легко его сжать. Рассмотрим этот вариант. Я заполню часть виртуального диска нулями, а затем удалю файл:

dd if=/dev/zero of=/mytempfile
rm -rf /mytempfile

При проверке со своего сервера, раньше размер образа диска был 2,4Гб, а потом стал 5,9Гб:

Это означает, что после удаления информации с виртуальной машины размер виртуального диска не уменьшился. Чтобы файл виртуального диска мог получить свой реальный размер, я использую следующий метод:

Создайте резервную копию файла виртуального диска, остановите виртуальную машину и выполните следующие действия:

qemu-img convert -O qcow2 /old_image /new_image

Затем вы можете сравнить размеры обоих дисков:

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

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

Читайте также: