Ответы:
qemu-img resize vmdisk.img +10G
чтобы увеличить размер изображения на 10 Гбstart the VM, resize the partitions and LVM structure within it normally
Как это сделать? Пожалуйста, объясните это.
Что бы там ни было, приведенные ниже команды будут выполняться, даже если целевой виртуальный диск смонтирован. Это может быть полезно в средах, где диск не может быть размонтирован (например, корневой раздел), виртуальная машина должна оставаться включенной, и владелец системы готов принять на себя риск повреждения данных . Чтобы устранить этот риск, вам необходимо войти в виртуальную машину и сначала размонтировать целевой диск, что не всегда возможно.
Выполните следующее из гипервизора KVM.
Увеличьте размер самого файла образа диска (укажите сумму для увеличения):
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
Затем войдите в ВМ. Запуск dmesg
должен сообщить, что диск virtio обнаружил изменение емкости. На этом этапе, измените размер ваших разделов и структуры LVM по мере необходимости.
Эти вопросы о сбое сервера похожи, но конкретнее, изменение размера диска KVM онлайн? & Centos Xen изменяет размер раздела DomU и группы томов . Первый задает вопрос о том, как увеличить гостевой KVM, пока он находится в сети, а второй - для XEN с использованием LVM. Я спрашиваю, как этого добиться, пока KVM отключен.
ПРИМЕЧАНИЕ. Эта ссылка была полезна для МЕТОДА № 1 и показывает, как добиться увеличения дискового пространства KVM (на основе ext3), HOWTO: Изменение размера образа виртуальной машины 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 внутри виртуальной машины и удалить и заново создать раздел 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.
%
Перезагрузите ВМ
Изменить размер физического тома 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 в резервную копию, переименуйте outdisk в indisk (или измените гостевой XML)
6) Перезагрузите гость и тщательно протестируйте новый файл на диске перед удалением исходного файла.
7) Прибыль!
-o preallocation=metadata
создает разреженный файл. С этой опцией он предварительно выделяет весь размер.
-o preallocation=metadata
и если вы этого не сделаете, вам также следует пропустить truncate
шаг. virt-resize
в любом случае будет увеличивать файл соответствующим образом.
Если вы используете LVM в виртуальной машине, самый простой способ сделать это - добавить новый виртуальный диск в виртуальную машину и расширить группу томов и логические тома на нее.
Чтобы проверить, используете ли вы запуск LVM 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. В приведенном выше примере виртуальная машина имеет 30-гигабайтный виртуальный диск, настроенный с использованием LVM с одной группой томов vgWWW, содержащей два логических тома: один для подкачки и один для всего остального.
Если 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 совпадают с моими примерами, что маловероятно, измените их соответствующим образом, также, если виртуальная машина уже имела виртуальный диск, называемый vdb
новым, будет что-то другое ( vdc
и т. Д.)
Примечание: resize2fs
будет работать только на файловой системе ext2, ext3 и ext4. Если вы используете что-то другое, это будет ошибка и ничего не делать.
Примечание: так как вы изменяете размер активной файловой системы, resize2fs
она не будет предлагать вам запустить fsck
сначала, как это было бы для несмонтированной файловой системы, она просто будет идти вперед. Возможно, вы захотите запустить файловую систему только для чтения, чтобы убедиться в отсутствии проблем, прежде чем продолжить.
Возможно сделать онлайн изменение размера. libvirtd поддерживает это изначально:
Найдите имя блочного устройства. Должно быть что-то вроде "Вда"
$ virsh domblklist <libvirtd_vm_name>
Изменить размер виртуального устройства:
$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>
Вот пример, где я расширяю vda
диск 50GB
для 51GB
для undercloud
виртуальной машины.
[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 ~]#
Затем вы можете использовать этот скрипт внутри виртуальной машины, чтобы показать команды для изменения размера блочных устройств и fs: https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh .
Существует возможность увеличить размер диска вашей виртуальной машины без перезагрузки виртуальной машины, если вы используете диск 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
Зайдите в make rescan диска и после того, как вы сможете сделать lvm resize.
Если в вашей виртуальной машине есть 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
исправление не работает, когда tty не представлен (например, при подготовке с помощью 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 mount. После использования с gparted вы можете легко загрузить систему и настроить пространство. Убедитесь, что у вас установлен правильный приоритет загрузки. В качестве ссылки, пожалуйста, обратитесь к приведенному ниже URL, который может пригодиться. https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html