Изменение размеров дисков виртуальных машин Proxmox (KVM) на LVM

В данном посте речь пойдет о изменение размера дисков у виртуальных машин под Proxmox (KVM) контейнеры которых расположены на томах LVM и внутри которых (машин) крутится Windows.

Чем проще готовая система виртуализации, чем она более полно охватывает все нужды администратора, тем меньше он разбирается в ее начинке. И от этого, у многих администраторов Proxmox проблемы с уменьшением жестких дисков системы, ибо в консоли они работать не умеют, или боятся что то делать в «замкнутой» системе. Поэтому я и решил сделать эту инструкцию.

Я надеюсь все в курсе, что Proxmox позволяет через свой интерфейс  увеличивать размер жесткого диска машины, но вот уменьшить, не позволяет. Сделано это ИМХО для того, что бы не убить машину при заходе на файловую систему машины.

Если выключить машину, увеличить размер диска, а потом снова включить, машина ничего не заметит, но в управление дисками у жесткого диска появится не распределенное место. Растянуть файловую систему на свободное место начиная с висты можно стандартными средствами, для ХР можно применить образ Hiren и встроенные в него дисковые утилиты, по типу Partition Magic.

Увеличение диска совершенно безопасная процедура, ее даже можно делать на работающей машине, только вот изменения не применяться, причем даже после перезагрузки. Надо будет выключить машину, удалить диск, а потом кнопкой «Редактировать» вернуть его на прежнее место.

С уменьшением все точно так же, но через консоль.

Для примера уменьшим диск виртуальной машины с 2008 сервером на борту.

proxmox

На данный момент размер диска 82G, я хочу уменьшить его до 30G. Диск виртуальной машины находится в LVM хранилище с именем VM.

proxmox2

Первым делом, сжимаем файловую систему до нужного размера.

disk

Осталось 51,9G которые надо отрезать.

Заходим в консоль сервера и смотрим какие диски у нас есть, набрав команду lvs

root@hypervisor:~# lvs
 LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
 vm-100-disk-1 data -wi-ao--- 558,00g
 openvz_vm vm -wi-ao--- 100,00g
 vm-100-disk-2 vm -wi-ao--- 50,00g
 vm-101-disk-1 vm -wi-ao--- 32,00g
 vm-103-disk-1 vm -wi-a---- 10,00g
 vm-104-disk-1 vm -wi-a---- 20,00g
 vm-106-disk-1 vm -wi-a---- 32,00g
 vm-107-disk-1 vm -wi-a---- 82,00g
 vm-108-disk-1 vm -wi-ao--- 32,00g
 vm-108-disk-2 vm -wi-ao--- 32,00g

Диск виден и имеет такой же размер, как в веб морде, все нормально, можно продолжать.

Набираем команду lvdisplay и в выводе ищем нужный нам диск.

--- Logical volume ---
 LV Path /dev/vm/vm-107-disk-1
 LV Name vm-107-disk-1
 VG Name vm
 LV UUID OkGuWW-1WZ6-qDzC-dSKV-H0op-aScn-fN16sr
 LV Write Access read/write
 LV Creation host, time hypervisor, 2014-03-07 23:23:59 +0400
 LV Status available
 # open 0
 LV Size 82,00 GiB
 Current LE 20992
 Segments 1
 Allocation inherit
 Read ahead sectors auto
 - currently set to 4096
 Block device 253:3

Смотрим точку монтирования, в моем случае это /dev/vm/vm-107-disk-1

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

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

disk2

 

 

 

 

 

 

 

 

 

 

 

Уменьшаем размер диска командой lvreduce -L 30726M /dev/vm/vm-107-disk-1

root@hypervisor:~# lvreduce -L 30726M /dev/vm/vm-107-disk-1

Rounding size to boundary between physical extents: 30,01 GiB
WARNING: Reducing active logical volume to 30,01 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce vm-107-disk-1? [y/n]: y

Reducing logical volume vm-107-disk-1 to 30,01 GiB
Logical volume vm-107-disk-1 successfully resized

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

root@hypervisor:~# lvs
 LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
 vm-100-disk-1 data -wi-ao--- 558,00g
 openvz_vm vm -wi-ao--- 100,00g
 vm-100-disk-2 vm -wi-ao--- 50,00g
 vm-101-disk-1 vm -wi-ao--- 32,00g
 vm-103-disk-1 vm -wi-a---- 10,00g
 vm-104-disk-1 vm -wi-a---- 20,00g
 vm-106-disk-1 vm -wi-a---- 32,00g
 vm-107-disk-1 vm -wi-ao--- 30,01g
 vm-108-disk-1 vm -wi-ao--- 32,00g
 vm-108-disk-2 vm -wi-ao--- 32,00g

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

В настройках самой машины, размер диска не изменился, как и внутри машины.

proxmox3

Но его размер изменился в хранилище VM.

proxmox5

Теперь надо в настройках виртуальной машины удалить диск, встать на получившийся «Неиспользуемый диск«, нажать кнопку «Редактировать» и вернуть диск на место, с теми же настройками.

proxmox6

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

The End

Смотрите так же:

Изменение размеров дисков виртуальных машин Proxmox (KVM) на LVM: 3 комментария

  1. С динамическими дисками без предварительного бэкапа не советую делать, данные потеряете. Корректно срабатывает только с базовыми.

  2. А вот с увеличением не все так ясно! Вы говорите, как о чем то очевидном, но как же увеличить объем диска? В proxmoxe нет кнопки увеличить размер.

    1. Как же нет, есть она, на этой картинке ее даже видно http://cdn.itroad.ru/wp-content/uploads/2014/03/proxmox3.png

      Resize disk называется

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.