Как увеличить размер виртуального диска vmdk
Увеличение размера диска в виртуальной машине под управлением VMware.
Для увеличения размера диска в виртуальной машине под управлением VMware, необходимо выполнить несколько важных шагов. Во-первых, необходимо увеличить размер диска в vSphere Client. Эта операция увеличит размер жесткого диска на уровне оборудования. Затем необходимо увеличить размер раздела.
Небольшая заметка, если сервер поддерживает “hot swap“, можно легко добавить новый жесткий диск к виртуальной машине. В противном случае, будет означать, что мы не можем увеличить размер LVM без перезагрузки. Если увеличим размер присоединенного диска (как в примере ниже), необходимо перезагрузить сервер или, по крайней мере, перечитать таблицу разделов.
В Linux можно повторно сканировать жесткие диски без перезагрузки гостевой виртуальной машины. Прочтите статью об этом, если вы не хотите, перезагружать VM после добавления нового жесткого диска или увеличения текущего размера диска: Обновление дисков виртуальных машин на Linux без перезагрузки в инфраструктуре VMware
Увеличиваем размер виртуального диска в VMware
Допустим, имеется виртуальная машина, которой презентован один виртуальный жесткий диск (vmdk) размером 20 Гб. Нам необходимо увеличить данный диск до 301 Гб.
Для этого в консоли VMWare vSphere найдите нужную виртуальную машину и перейдите в ее настройки. Найдите элемент виртуального оборудования Hard Disk 1 (жесткий диск ) и в поле Provisioned Size укажите новый размер виртуального диска (301 Gb) и нажмите ОК.
Итак, мы увеличили размер диска в консоли, но расширение виртуального диска не означает расширения раздела Windows на нем.
Шаг 2. Расширяем диск в виртуальной машине с ОС Windows
Необходимо, чтобы гостевая ОС обнаружила дополнительное пространство. Для этого в Windows необходимо открыть консоль управления дисками ( Computer Management -> Storage -> Disk Management ) и выполнить команду Rescan Disk.
После завершения сканирование обнаружим неразмеченную область.
Выбираем диск, который будем увеличивать (в нашем случае C:/) и запускаем мастер расширения дискового пространства.
Далее необходимо указать количество места (в Мб), которое хотим добавить к текущему разделу. Это значение можно внести и отредактировать вручную. Естественно, мы не сможем добавить больше Мб, чем доступно.
Операция выполняется практически мгновенно и перезагрузка системы не потребуется.
Расширение диска завершено.
1) Пуск -> Выполнить -> CMD
2) В командной строке вводим diskpart
3) Выбираем необходимый диск Select disk 0 и его раздел Select partition 1 . В нашем случае это диск 0, раздел 1
4) После того, как выбран нужный диск и раздел, используем команду EXTEND . Если в параметре команды EXTEND не указывать размер, который необходимо добавить к текущей партиции, будет использовано все доступное место.
21.11.2012
itpro
VMWare
комментариев 12
При создании виртуальной машины VMware зачастую сложно точно рассчитать какой размер диска ей понадобится в ближайшем будущем, кроме того, если новая виртуальная машина создается из созданного администратором шаблона, размер виртуального жесткого диска такой машины равен размеру диска в шаблоне. Рано или поздно администратор столкнется с необходимостью расширить диск виртуальной машины VMware. В этой статье мы опишем как можно расширить диск виртуальной машины с гостевой ОС Windows без остановки и перезагрузки виртуалки.
Примечание: изменить размер виртуального жесткого диска при наличии снимков (снапшотов) вириальной машины невозможно, поэтому перед началом процедуры удалите все снапшоты. Кроме того имейте в виду, что «на лету» можно расширить только виртуальные диски типа SCSI (с IDE такой трюк не выйдет).
Всю процедуру можно условно разделить на два этапа:
-
Увеличение виртуального диска
Расширяем диск в виртуальной машине с ОС Windows
Далее нам необходимо, чтобы гостевая ОС увидела дополнительно пространство. Для этого в Windows нужно открыть консоль управления дисками (Computer Management-> Storage-> Disk Management) и выполнить команду Rescan Disk.
В результате вы должны увидеть неразмеченную область, размером около 280 Гб.
В том случае, если гостевая ОС Windows Server 2008/ Windows 7, расширение диска осуществляется по уже знакомой вам инструкции Как расширить дисковый раздел в Windows 7.
Если же гостевая ОС Windows Server 2003/2000 или Win XP и расширяется именно системный диск — все не так просто (если диск не является системным, его можно расширить с помощью утилиты Diskpart, подробности в ссылке выше). Системный диск расширить средствами самой ОС (как в Windows 2008/7) в этом случае не получится, diskpart просто откажется работать с этим диском.
Что можно сделать:
- Загрузить виртуальную машину с любого livecd и расширить свободное место
- Подключить виртуальный vmdk к другой машине и увеличить раздел уже из нее
- С помощью утилиты VMware Converter сконвертировать виртуалку в режиме переконфигурирования
- С помощью утилит типа Acronis/ Ghost перенести содержимое виртуального диска в новый диск нужного размера, растянув разделы
Примечание: последние два способа можно использовать также при необходимости уменьшить размеры диска для виртуальной машины.
Главный недостаток всех указанных методов – необходимость остановки виртуальной машины и, соответственно, простой оказываемого сервиса, что не всегда возможно.
Для того, чтобы расширить системный дисковый раздел в Windows 2003/XP скопируйте утилиту в гостевую ОС и запустите ее с параметрами:
, где c: — имя раздела который необходимо расширить, 1020 – размер (в Мб), на который нужно расширить диск
Стоит отметить, что утилита ExtPart не работает в 64-битных ОС.
Итак, в данной статье мы разобрались в способах расширения виртуального жесткого диска в среде VMWare vSphere с гостевой ОС Windows различных версий.
20.02.2021
VyacheslavK
KVM, Linux
комментариев 7
В этой статье мы поговорим об изменении размера дисков виртуальной машины KVM, рассмотрим используемые форматы виртуальных дисков. Покажем, как правильно увеличить диск виртуальной машины в гипервизоре KVM на Linux без потери данных, а также обсудим варианты уменьшения размеров дисков.
Шаг 2. “Физическое” добавление диска на виртуальную машину
Увеличиваем диск виртуальной машины через vSphere клиент
Если «Provisioned Size» недоступно, необходимо выключить виртуальную машину (так как не поддерживается «горячее» добавление дисков), и проверить, если есть какие-то снепшоты, сделанные в этой виртуальной машине. Невозможно изменить размер диска пока доступны снепшоты.
Альтернатива, если уже есть четыре раздела, можно выбрать «Add…» и добавить новое оборудование «Virtual Disk» в виртуальную машину, чтобы увеличить размер диска.
Увеличение диска виртуальной машины 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 и выполняем работы по расширению диска.
Хотелось бы добавить, что перед процедурой расширения диска для виртуальной машины, я советую выполнять резервное копирование самого диска. Остановите виртуальную машину и скопируйте образ диска в директорию для бэкапа или в любую директорию, в которой есть свободное место. Если в ходе работ, что-то пойдет не так, вы всегда сможете вернуть образ виртуального диска из бэкапа.
Шаг 1. Проверка необходимости добавления нового диска, либо добавления нового
Довольно важный пункт, поскольку диск, который уже был разделен на 4 основных раздела не может быть увеличен. Чтобы проверить это, запустим fdisk -l
Насколько видно из вывода команды, то у нас только два раздел, поэтому увеличение диска в данном случае возможно.
Как уменьшить размер виртуального диска в 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
Расширяем Logical Volume
Теперь создаем физический том как основной для LVM командой pvcreate /dev/sda3
Узнаем Volume Group
И расширяем Volume Group только что добавленным томом, выполнив команду vgextend VolumeGroupName /dev/sda3
Используя команду pvscan , можно обнаружить новый том и дисковое пространство (20Гб в нашем случае).
Следующим действием, расширяем Logical Volume командой lvextend /dev/VolGroup00/LogVol00 /dev/sda3 .
(Для поиска LogVol00 значения используем команду lvdisplay -v )
Если испольузется убунтоподобная система, то выполняем команду lvextend /dev/mapper/vg-name /dev/sda3
Чтобы использовать новое дисковое пространство, необходимо только изменить размер файловой системы в группе томов.
Запускаем ресайз командой: resize2fs /dev/VolGroup00/LogVol00
Увеличение диска завершено - проверяем!
Если используется файловая система XFS , как правило на CentOS 7 она идет по умолчанию, то при запуске команды resize2fs появится ошибка:
Есть файл VMDK. Это файл,который является образом жёсткого диска для таких программ как виртуальные машины Oracle virtualbox, vmware и т.п. Соответственно, виртуальная машина — это программа, которая нужна, чтобы внутри, например, windows 7, установленной на компьютере, запустить windows xp.
Зачем это нужно? Ну, например, для обкатки каких-то приложений или для спама, или для того, чтобы посмотреть, как выглядит linux, но не устанавливать его.
В общем, задача была такая:
На моём ноуте установлена винда семёрка. А для использования одного бота используется в виртуальной машине Windows XP. И вот потребовалось мне туда поставить Microsoft dot net. А ему места не хватает — вылетает с ошибкой. Следовательно, нужно увеличить размер файла-образа.
И вот тут началась эпопея, решение которой расскажу в этой статье.
В качестве виртуальной машины у меня используется Virtualbox. Родной формат образов дисков для этой программы — .vdi. Искать и ставить VMWare, чтобы изучать, можно ли там менять размер VMDK-файла я не стал.
Шаг 1. В главном окне Oracle VM VirtualBox Manager нажал на файл, выбрал Менеджер виртуальных носителей
Шаг 2. Выделил строку с нужным файлом-образом и нажал копировать
Шаг 3. Протыкал по кнопкам в выскочившем окне. И получилось, что я преобразовал (скопировал) VMDK-файл в VDI-файл.
Теперь нужно изменить его размер.
Для этого в Virtualbox используется программа, которая называется vboxmanage.exe, она лежит в папке с программой virtualbox
Запускаем командную строку Windows (для этого можно нажать кнопки win r), вводим три буквы CMD, нажимаем Enter
Открывается окно консоли CMD
В ней мы перемещаемся в папку, в которой находится нужный нам файл vboxmanage.exe
Теперь нужно найти необходимый файл vdi, который мы недавно создали из vmdk. Он находится в той же папке, что и сам vmdk-файл. Нам нужен адрес этого файла вместе с путём к нему.
Теперь собираем всю команду на преобразование размера файла. Перед её запуском закройте саму программу virtualbox
У меня это выглядит так:
Собственно, всё. Теперь файл — нужного размера. В примере я увеличил его до 5 гигабайт (5120 мегабайт).
Если угодно, можно его теперь снова скопировать, сделав снова vmdk-файл, но уже большего размера.
Имеется виртуальная машина, с одним виртуальным диском (vmdk) размером 60 Гб. Нам необходимо увеличить данный диск до 70 Гб.
Для этого в клиенте VMWare vSphere найдем нужную виртуальную машину и в настройках Hard Disk 1 и в поле Provisioned Size укажем новый размер виртуального диска (60 Gb)
Мы увеличили размер диска в консоли, но расширение виртуального диска не означает расширения раздела Windows на нем.
Шаг 1. Проверка необходимости добавления нового диска, либо добавления нового
Довольно важный пункт, поскольку диск, который уже был разделен на 4 основных раздела не может быть увеличен. Чтобы проверить это, запустим fdisk -l
Насколько видно из вывода команды, то у нас только два раздел, поэтому увеличение диска в данном случае возможно.
Шаг 3. Создание разделов на нераспределенном пространстве
После того как мы изменили размер диска, необходимо включить виртуальную машину еще раз, или перезагрузить, если она работала. Системе необходимо загрузиться с нового диска, для того чтобы он мог обнаружить добавленное (незанятое) дисковое пространство.
После загрузки можно проверить, есть ли дополнительное пространство на диске.
Проверяем:
Как видим - объем диска изменился, теперь создадим раздел, используя утилиту fdisk для устройства /dev/sda . Пожалуйста, обратите внимание, что система может иметь только 4 основных разделов на диске! Если уже достигнут предел, необходимо создать расширенный раздел.
Значение цилиндров могут отличатся в системе. FDISK даст значение по умолчанию для первого и последнего цилиндра (как раз будет использоваться добавленное дисковое пространство).
Теперь изменим тип раздела. Вводим номер раздела, берем из предыдущего шага. Когда необходимо будет вводить «Hex code», вводим 8e , и подтверждаем.
После перезагрузки, можно увидеть новый раздел, используя команду fdisk .
Читайте также: