Відповіді:
qemu-img resize vmdisk.img +10G
для збільшення розміру зображення на 10 Гбітstart the VM, resize the partitions and LVM structure within it normally
Як це зробити? Будь ласка, поясніть це.
На краще чи гірше, команди нижче будуть виконуватись, навіть якщо встановлений цільовий віртуальний диск. Це може бути корисно в середовищах, коли диск не може бути відключений (наприклад, корінний розділ), VM повинен залишатися включеним, а власник системи готовий взяти на себе ризик пошкодження даних . Щоб вилучити цей ризик, вам потрібно буде увійти в VM і спочатку відключити цільовий диск, що не завжди можливо.
Виконайте наступне з гіпервізора КВМ.
Збільшити розмір самого файлу зображення диска (вкажіть суму для збільшення):
qemu-img resize <my_vm>.img +10G
Отримайте назву пристрою virtio за допомогою оболонки libvirt ( drive-virtio-disk0
у цьому прикладі):
virsh qemu-monitor-command <my_vm> info block --hmp
drive-virtio-disk0: removable=0 io-status=ok file=/var/lib/libvirt/images/<my_vm>.img ro=0 drv=raw encrypted=0
drive-ide0-1-0: removable=1 locked=0 tray-open=0 io-status=ok [not inserted]
Сигналізуйте драйвер virtio, щоб виявити новий розмір (вкажіть загальну нову ємність):
virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
Потім увійдіть у VM. Біг dmesg
повинен повідомити про те, що віріор-диск виявив зміну ємності. На цьому етапі продовжуйте змінити розмір розділів та структури LVM за потребою.
Ці серверні запитання за замовчуванням схожі, але більш конкретні, розмір диска KVM в Інтернеті? & Centos Xen зміни розміру розділів і групи томів DomU . Перший задає питання, як збільшити гость KVM під час роботи в Інтернеті, а другий - специфічний для XEN, використовуючи LVM. Я запитую, як це досягти, коли KVM перебуває в автономному режимі.
ПРИМІТКА: Це посилання було корисним для МЕТОДУ №1 та показує, як досягти збільшення дискового простору KVM (на базі ext3), ЯК: Зміна розміру зображення віртуальної машини KVM .
Одне, що слід пам’ятати гостям KVM, це те, що розділи, які вони використовують всередині, можуть впливати, який метод ви можете використовувати для збільшення їх дискового простору.
МЕТОД №1: Розділи засновані на ext2 / ext3 / ext4
Горіхи цього способу наступні:
# 1. stop the VM
# 2. move the current image
mv mykvm.img mykvm.img.bak
# 3. create a new image
qemu-img create -f raw addon.raw 30G
# 4. concatenate the 2 images
cat mykvm.img.bak addon.raw >> mykvm.img
Тепер з більшим файлом mykvm.img в руці завантажте gparted і розширте існуючий розділ у щойно доданому дисковому просторі. Цей останній крок в основному розширює розділ ОС, щоб він міг використовувати додатковий простір.
МЕТОД №2: Перегородки засновані на LVM
Ось кроки, які я грубо дотримувався, щоб змінити розмір гостя KVM, який використовував LVM внутрішньо.
запустіть fdisk всередині VM та видаліть та створіть LVM-розділ
% fdisk /dev/vda
...
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 3263 26105625 8e Linux LVM
Command (m for help): d
Partition number (1-4): 2
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (14-5874, default 14): 14
Last cylinder or +size or +sizeM or +sizeK (14-5874, default 5874):
Using default value 5874
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 83 Linux
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or
resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
%
Перезавантажте програму VM
Змініть розмір фізичного обсягу LVM
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 24.90 GB / not usable 21.59 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 796
Free PE 0
...
% pvresize /dev/vda2
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 44.90 GB / not usable 22.89 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 1436
Free PE 640
...
Змініть розмір логічного обсягу LVM
% lvresize /dev/VolGroup00/LogVol00 -l +640
Extending logical volume LogVol00 to 43.88 GB
Logical volume LogVol00 successfully resized
Росте файлова система
% resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 11501568 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 11501568 blocks long.
Наведене вище - мій приклад, але я дотримувався кроків на цьому веб-сайті
virt-manager
широко використовую метод №1 і №2, перш ніж перенести наші сервери KVM на новішу версію KVM (CentOS 5 -> CentOS 6). Зараз я також використовую qemu-img resize
метод.
lvextend /dev/Volgroup/lvname /dev/vda2
(все в одному рядку, де / dev / vda2 буде вашим фізичним обсягом). Без будь-яких інших параметрів він використовуватиме максимальний розмір у цій групі гучності.
Змініть розмір та розгорніть внутрішні розділи за один крок
У мене був хост Ubuntu із зображенням файлу гостя qcow2 і хотів змінити розмір диска та розгорнути відповідні розділи все за один крок. Це вимагає, щоб ви встановили утиліти файлової системи libvirt, але їх корисно мати в будь-якому випадку.
Натхнення звідси: http://libguestfs.org/virt-resize.1.html
Ключова команда тут: virt-resize
Підготовка:
* Install libvirt file system utilities package
* sudo apt-get install libguestfs-tools
* Test to see if it works (it won't) -- you need to see "===== TEST FINISHED OK =====" at the bottom:
* sudo libguestfs-test-tool
* If you don't see "===== TEST FINISHED OK =====" at the bottom then repair it:
* sudo update-guestfs-appliance
* Run the test again and verify it works
* sudo libguestfs-test-tool
Тепер виконайте наступне:
1) вимкнення гостя:
2) Перевірте поточний розмір і перегляньте ім'я розділу, яке потрібно розгорнути за допомогою утиліти libvirt:
sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file
3) Створіть новий (40G) вихідний диск:
qcow: sudo qemu-img create -f qcow2 -o preallocation=metadata outdisk 40G
img: sudo truncate -s 40G outdisk
4) Скопіюйте старий у новий, одночасно розгорніть відповідний розділ (припустимо, що для вашого диска розділом 2 був / dev / sda1):
sudo virt-resize --expand /dev/sda1 indisk outdisk
5) Перейменуйте файл загрози як резервну копію, перейменуйте аут-диск як indisk (або змініть гостьовий XML)
6) Перезавантажте гостя і ретельно протестуйте новий файл диска, перш ніж видаляти оригінальний файл
7) Прибуток!
-o preallocation=metadata
створює розріджений файл. За допомогою цього варіанту він попередньо виділяє весь розмір.
-o preallocation=metadata
а якщо ні, ти також повинен пропустити truncate
крок. virt-resize
все одно зросте файл у міру необхідності.
Якщо ви використовуєте LVM у VM, найпростішим способом зробити це було б додати до віртуальної машини новий віртуальний диск та розгорнути на ньому групу томів та логічні томи.
Щоб перевірити, чи використовується LVM run sudo pvs; sudo vgs; sudo lvs
, ви отримаєте щось подібне:
PV VG Fmt Attr PSize PFree
/dev/vda1 vgWWW lvm2 a- 30.00g 0
VG #PV #LV #SN Attr VSize VFree
vgWWW 1 2 0 wz--n- 30.00g 0
LV VG Attr LSize
root vgWWW -wi-ao 28.80g
swap vgWWW -wi-ao 1.19g
якщо ОС ВМ використовує LVM. У наведеному вище прикладі VM має 30Gbyte vdisk, налаштований за допомогою LVM з однією групою томів, яка називається vgWWW, що містить два логічні томи, один для swap і один для всього іншого.
Якщо LV використовується в VM:
sudo pvcreate /dev/vdb
sudo vgextend vgWWW /dev/vdb
sudo lvextend --extents +100%FREE /dev/vgWWW/root
(або щось подібне, sudo lvextend --size +8G /dev/vgWWW/root
якщо ви не хочете все більше його нарощувати, цей приклад додасть 8Gb до обсягу)resize2fs /dev/vgWWW/root
Примітка: вище припускається, що імена vg / lv є такими ж, як і в моєму прикладі, що малоймовірно, змінити за необхідності, також якщо VM вже мав віртуальний привід під назвою vdb
новий буде чимось іншим ( vdc
і так далі)
Примітка: resize2fs
працюватиме лише у файловій системі ext2, ext3 та ext4. Якщо ви використовуєте щось інше, воно помилиться і нічого не зробить.
Примітка: оскільки ви змінюєте розмір живої файлової системи resize2fs
, не запропонуйте вам запустити fsck
спочатку, як і для відключеної файлової системи, вона просто піде вперед. Ви можете запустити перевірку файлової системи лише для читання, перш ніж продовжувати, проблем немає.
Можна зробити розмір в Інтернеті. libvirtd підтримує це спочатку:
Знайдіть назву блокового пристрою. Повинно бути щось на кшталт "vda"
$ virsh domblklist <libvirtd_vm_name>
Змініть розмір віртуального пристрою:
$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>
Ось приклад, коли я розширював vda
диск з 50GB
на 51GB
для undercloud
VM.
[root@gss-rhos-4 ~]# virsh domblklist undercloud
Target Source
------------------------------------------------
vda /home/images/undercloud.qcow2
Тепер подивіться деталі файлу зображення .qcow2:
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
Тепер давайте змінимо розмір пристрою блоку vda:
[root@gss-rhos-4 ~]# virsh blockresize undercloud vda 51G
Block device 'vda' is resized
І підтвердьте:
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 51G (54760833024 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
[root@gss-rhos-4 ~]#
Потім ви можете використовувати цей скрипт всередині VM для показу команд зміни розміру блокових пристроїв і fs: https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh .
Існує можливість збільшити розмір диска Вашого комп'ютера без перезавантаження VM, якщо ви використовуєте привід virtio та LVM.
(Необов’язково) Створіть основний розділ за допомогою fdisk для отримання / dev / vdb1, а потім використовуйте kpartx -a / dev / vdb для перечитування таблиці розділів
Використовуйте vgextend vg_name / dev / vdb1 (або / dev / vdb, якщо ви не створили розділ)
Ви закінчили.
Таким чином ви можете розширити потрібний розділ:
# see what partitions you have?
virt-filesystems --long -h --all -a olddisk
truncate -r olddisk newdisk
truncate -s +5G newdisk
# Note "/dev/sda2" is a partition inside the "olddisk" file.
virt-resize --expand /dev/sda2 olddisk newdisk
Дивіться більше прикладів тут .
Ще один спосіб зробити це
truncate -s +2G vm1.img
перейдіть до створення Rescan диска і після того, як ви зможете змінити розмір lvm.
Якщо у вас в VM є LVM, це божевільно легко і швидко.
sudo system-config-lvm
термінал) *.Я знайшов графічний інтерфейс досить інтуїтивним, але виконайте наступні кроки, якщо у вас є проблеми.
Примітка! Принаймні на CentOS 6 LVM GUI не встановлений за замовчуванням, але ви можете встановити його yum install system-config-lvm
.
Змінити розмір зображення:
qemu-img resize vmdisk.img +16G
збільшує розмір зображення на 16 Гб.
Якщо у вашому зображенні є GPT (таблиця розділів GUID), то розмір диска, який використовується в GPT, буде відрізнятися від нового розміру, вам потрібно виправити це за допомогою gdisk
:
MY_DRIVE=/dev/vda
gdisk $MY_DRIVE <<EOF
w
Y
Y
EOF
або з parted
:
parted $MY_DRIVE print Fix
З якихось причин parted
виправлення не працює, коли жодних файлів не представлено (наприклад, при наданні послуг Vagrant), тому я використовую gdisk
.
Збільшити розмір розділу, щоб заповнити все доступне місце:
MY_PARTITION_GUID=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^Partition unique GUID: //p'
i
EOF
)
MY_PARTITION_FIRST_SECTOR=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^First sector: \([0-9]\+\).*/\1/p'
i
EOF
)
gdisk $MY_DRIVE <<EOF
d
n
$MY_PARTITION_FIRST_SECTOR
x
a
2
c
$MY_PARTITION_GUID
w
Y
EOF
x a 2 <Enter>
Частина є необов'язковою і потрібно , якщо ви використовуєте успадкований BIOS.
MY_PARTITION_GUID=...
і c $MY_PARTITION_GUID
деталі також необов'язкові і потрібні лише в тому випадку, якщо ви використовуєте UUID для розділу у /etc/fstab
будь-якому іншому місці.
Перезавантажте або перечитайте розділи за допомогою partx -u $MY_DRIVE
або partprobe
.
Розгорніть розділ, наприклад ext2
, ext3
або ext4
:
MY_PARTITION="${MY_DRIVE}1"
resize2fs $MY_PARTITION
Ви можете використовувати solus vm із встановленим gparted. Після використання з gparted ви можете легко завантажувати систему та регулювати простір. Переконайтеся, що у вас встановлений правильний пріоритет завантаження. В якості довідки зверніться до наведеної нижче URL-адреси, яка може стати в нагоді. https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html