KVM Как да увеличите / намалите размера на диска на виртуална машина?

В тази статия ще говорим за преоразмеряване на дискове на виртуалната машина KVM, ще разгледаме форматите на виртуалните дискове, които се използват. Ще покажем как правилно да увеличите диска на виртуалната машина в хипервизора KVM на Linux без загуба на данни, а също така ще обсъдим опциите за намаляване на размера на диска.

Съдържание:

  • Увеличете задвижването на виртуалната машина KVM
  • Как да намалите размера на виртуалния диск в KVM?

Увеличете задвижването на виртуалната машина KVM

KVM разширение на виртуален диск

За да работим с диска, виртуалната машина трябва да бъде изключена, в противен случай няма да можем да направим нищо. Помислете за пример с увеличение на диска, чийто размер първоначално е бил 20 GB.

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

qemu-img info / drive_path

Изходът от командата ще бъде нещо подобно:

Виждаме, че имаме две полета, които указват размера, това са virtual_size и disk_size:

  • virtual_size - размер на виртуален диск, посочен при създаване или разширяване на диска (в този пример, максималният размер на диска е 20 GB);
  • disk_size - текущ размер на дисковия файл, т.е. колко дисково пространство в момента е заето на физическия сървър (важи само за формата qcow). В нашия пример виртуален диск заема само 1.6 GB място за съхранение.

И веднага за форматите. Препоръчвам да използвате дисковия формат qcow2, а не суров, когато създавате виртуални машини на KVM. По-късно ще обясня защо.

Следващата стъпка е да разширите диска на виртуалната машина с 5Gb (за правилното разширяване на диска виртуалната машина не трябва да има снимки!).
# qemu-img оразмеряване / задвижване на пътя + 5G

Изображението е преоразмерено.

Ако веднага проверим изхода на информация за образа на диска, ще видим, че той се е разширил:

# qemu-img info / drive_path

изображение: / drive_drive формат на файла файл: qcow2 виртуален размер: 25G (26843545600 байта) размер на диска: 1.6G cluster_size: 65536 Форматиране на специфична информация: compat: 0.10 отстъпка бит: 16 

Ние свършихме част от работата, но тя също изисква работа от виртуалната машина в гост-операционната система. След това показваме как да увеличите размера на диска в CentOS 7 гост и Windows Server 2012..

Ако планирате да добавите допълнителен виртуален диск за виртуални машини на хипервизора KVM, се използват qemu-img и virsh.

Разширяване на дялове във виртуална машина на Linux CentOS

След разширяване на устройството от страна на сървъра, трябва да стартирате виртуалната машина и да се свържете към нея чрез ssh. Цялата работа ще се извърши с помощта на помощната програма за управление на дялове на твърдия диск. Fdisk.

След като се свържем със сървъра, проверяваме наличността на допълнително свързаното ни място:

df -h
fdisk -l

На екрана се вижда, че секцията / dev / vda2 е с размер 20Gb и имаме повече свободно пространство на диска.

Нека да поправим този момент и да разширим секцията / dev / vda2 до максималния размер:

# fdisk / dev / vda

Добре дошли във fdisk (util-linux 2.23.2). Промените ще останат само в паметта, докато не решите да ги напишете. Внимавайте преди да използвате командата за запис. Команда (m за помощ): г Номер на дяла (1,2, по подразбиране 2): дял 2 се изтрива Команда (m за помощ): п Тип дял: p първичен (1 първичен, 0 удължен, 3 безплатни) e удължен Избор (p по подразбиране): р Номер на дял (2-4, по подразбиране 2): Първи сектор (1050624-52428799, по подразбиране 1050624): Използване на стойност по подразбиране 1050624 Последен сектор, + сектори или + размер K, M, G (1050624-52428799, по подразбиране 52428799): Използвайки стойността по подразбиране 52428799 дял 2 от тип Linux и с размер 24.5 GiB се задава Command (m за помощ): w Таблицата на дяловете е променена! Извикване на ioctl () за препрочитане на таблицата на дяловете. ВНИМАНИЕ: Препрочитането на таблицата с дялове не е успешно с грешка 16: Устройството или ресурсът е зает. Ядрото все още използва старата таблица. Новата таблица ще се използва при следващото рестартиране или след като стартирате partprobe (8) или kpartx (8) Синхронизиране на дискове. 

След това трябва да рестартираме виртуалната машина и да изпълним командата за прилагане на разширението на диска:

# xfs_growfs / dev / vda2

meta-data = / dev / vda2 isize = 512 agcount = 4, agsize = 1277888 blks = sectsz = 512 attr = 2, projid32bit = 1 = crc = 1 finobt = 0 spinodes = 0 data = bsize = 4096 блока = 5111552, imaxpct = 25 = sunit = 0 swidth = 0 blks именуване = версия 2 bsize = 4096 ascii-ci = 0 ftype = 1 log = вътрешна bsize = 4096 блока = 2560, версия = 2 = sectsz = 512 sunit = 0 blks, мързелив брой = 1 реално време = няма extsz = 4096 блока = 0, rtextents = 0 блока данни са променени от 5111552 на 6422272 

# df -h

Използван размер на файловата система Наличност Използва се% Монтиран на devtmpfs 485M 0 485M 0% / dev tmpfs 496M 0 496M 0% / dev / shm tmpfs 496M 6.6M 489M 2% / run tmpfs 496M 0 496M 0% / sys / fs / cgroup / dev / vda2 25G 1.3G 24G 6% / / dev / vda1 488M 100M 353M 23% / зареждане tmpfs 100M 0 100M 0% / run / user / 0 

В резултат на това получихме разширения / dev / vda2 дял. Сега, за да разберем какво точно направихме:

  • fdisk / dev / vda - стартира помощната програма fdisk чрез свързване към секцията / dev / vda
  • / г - изтрийте секцията, по подразбиране това е раздел 2, от който се нуждаем, така че в следващия параграф просто натискаме Enter
  • / n - създайте нов раздел, в следващия параграф просто натиснете Enter или въведете р, След това въведете, тъй като създадената секция по подразбиране е 2.
  • Когато посочваме първия и последния сектор, ние също просто натискаме Enter, ако искаме да разширим секцията до максимум, ако искате да зададете конкретен размер, в последния сектор посочете размера на диска, както е посочено в менюто + размер K, M, G Размерът не може да бъде по-малко от преди!
  • / ш - прилагайте нашите настройки.

След рестартиране проверете диска с командата:

xfs_growfs / dev / vda2

Някои източници посочват командата за завършване на тази процедура:

resize2fs / dev / vda2

Но това не работи с файловата система xfs!

Работата по разширяване на диска на виртуална машина CentOS 7 приключи.

Разширяване на диска в гост Windows Server

Свързваме се към виртуалната машина чрез rdp или VNC и извършваме работа по разширяването на диска.

  1. Отворете Server Manager -> Инструменти -> Управление на компютъра;
  2. В прозореца, който се отваря, изберете в менюто Управление на дискове, след което трябва да видите всичките си дискове и неразпределено пространство, които добавихме от хипервизора KVM;
  3. Изберете желаното устройство и щракнете върху Удължен обем;
  4. По подразбиране ще се предлага цялото налично пространство за увеличаване на размера на диска;
  5. Кликнете върху „Напред“ и завършете разширението. След тази процедура вашият раздел в системата ще трябва да се разшири;

Бих искал да добавя, че преди процедурата за разширяване на диска за виртуална машина ви съветвам да направите резервно копие на самия диск. Спрете виртуалната машина и копирайте изображението на диска в директорията за архивиране или във всяка директория, която има свободно място. Ако по време на работа нещо се обърка, винаги можете да върнете образа на виртуалния диск от архивиране.

Как да намалите размера на виртуалния диск в KVM?

В работата си по-рано често се сблъсквах с този проблем, но за съжаление, не можете безопасно да намалите диска на виртуална машина в KVM! Единственият приемлив размер за намаляване на размера на диска на виртуалната машина на KVM при физическо съхранение е да го компресирате чрез преобразуване.

В интернет има много статии, уж поради които можете да намалите размера на диска във виртуална машина, но това не работи.

Ще дам няколко примера, на които попаднах и които лично проверих.

Намаляване на KVM диск с qemu полезност

Редица ресурси описват действията, извършени с помощта на помощната програма qemu. Те предлагат намаляване на размера на диска на виртуална машина с помощта на командата:

qemu-img resize / drive_path -5G - намалете диска с 5G

Или тази опция с конкретен размер:

qemu-img resize / 25G drive_path - посочете размера на диска в 25G

Какво се случва след изпълнение на тази команда? Стартираме сървъра и разбира се системата не се зарежда:

Опитах се първо да намаля дяла от под системата, използвайки полезността fdisk, но в този случай системата също спира да се зарежда, дори ако пропуснете стъпката за намаляване на диска от физическия сървър и това е логично. Секцията, която намаляваме, системата и съответно операционната система спира да се зарежда, защото когато дискът е намален, информацията очевидно е унищожена.

Намаляване на виртуален диск с подмяна на изображение

Вече не е толкова често срещана опция в инструкциите - това е намаляване на диска, с подмяната на стария. Тоест създавате нова виртуална машина с необходимия размер на диска. След това заменете старото изображение на диск с ново изображение и съдейки по описанието на статиите в различни източници, това работи. Аз също направих проверка и тя наруши файловата система, както в първата версия. Ще дам примерна команда:

virt-resize / old_drive_ image / new_drive_image

Бяха дадени и опциите, с конвертиране на диска от суров във формат qcow2, но първоначално създавам машини в този формат и обяснявам защо.

KVM дискови формати и компресия на диск във формат qcow2

В самото начало на статията споменах тези два формата.

суров - преведено „сурово“. Предимството на формата, максималната производителност, гъвкавостта на формата. Минусите маса, основните от тях са:

  • Дискът заема цялото дисково пространство на физически сървър, който му е разпределен;
  • Не могат да се създадат моментни снимки.

Qcow2 - Това е родният хипервизор QEMU формат, както и QEMU-KVM. Това е най-удобният формат на виртуален диск от всички поддържани в KVM. Изображението на диска се увеличава с натрупването на данни във виртуалната машина, поддържат се моментни снимки.

За какво е подходящ формат qcow2? По принцип не е необходимо да намалявате размера на виртуалния диск, тъй като дискът заема сървъра, точно толкова място е заето там. Ако вашите данни на сървъра непрекъснато се презаписват и понякога се случва дискът да е "подут", можете лесно да го компресирате. Обмислете тази опция. Ще нулирам малко дисково пространство и след това ще изтрия файла:

dd, ако = / dev / zero от = / mytempfile
rm -rf / mytempfile

При проверка от сървъра, образът на диска първо претегля 2.4G и след това се разширява до 5.9G:

# du -sh / image_path

2.4G *****

# du -sh / image_path

5.9G *****

Тоест, след изтриване на информацията във виртуалната машина, дискът не се компресира обратно. За да може дисковият файл да получи действителния размер, използвам следния метод:

Ние архивираме дисковия файл, спираме виртуалната машина и след това правим следното:

qemu-img convert -O qcow2 / old_image / new_image

След това можете да проверите размерите на двата диска:

# du -sh / new_drive

1.6G / ****

# du -sh / old_disk

5.8G / ****

Както можете да видите, размерът на компресирания диск е 1.6G. Преименувайте новото изображение на диска в това, от което се нуждаем и стартирайте виртуалната машина:

# df -h

Използван размер на файловата система Наличност Използва се% Монтиран на devtmpfs 485M 0 485M 0% / dev tmpfs 496M 0 496M 0% / dev / shm tmpfs 496M 6.6M 489M 2% / run tmpfs 496M 0 496M 0% / sys / fs / cgroup / dev / vda2 25G 1.3G 24G 6% / / dev / vda1 488M 100M 353M 23% / зареждане tmpfs 100M 0 100M 0% / run / user / 0 

Проверка от сървъра:

# du -sh / диск на изображение

1.6G / ****

Методът работи. За цялото време на използването му файловата система във виртуалната машина никога не е загивала. Но горещо препоръчвам преди такава работа да създадете копие на диска, ако не искате да загубите данни.

Това е всичко, което исках да разкажа в тази статия. Ако някой от посетителите на сайта има работещ начин за намаляване на диска на KVM, а именно намаляване (не компресия) и работещ, предлагайте свои собствени опции и определено ще ги тествам.