Я устанавливаю гостевую систему Ubuntu на хосте CentOS KVM с исходным 6 ГБ дискового пространства. Как мне увеличить дисковое пространство гостевой системы Ubuntu из командной строки?
РЕДАКТИРОВАТЬ №1: я использую файл образа диска (qemu).
qemu-img resize vmdisk.img +10G
увеличить размер изображения на 10ГбХорошо это или плохо, но приведенные ниже команды будут выполняться, даже если целевой виртуальный диск смонтирован. Это может быть полезно в средах, где диск не может быть отключен (например, в корневом разделе), виртуальная машина должна оставаться включенной и владелец системы готов взять на себя риск повреждения данных. Чтобы устранить этот риск, вам нужно будет войти в виртуальную машину и сначала отключить целевой диск, что не всегда возможно.
Выполните следующее из гипервизора 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.
Это мой пример, но я выполнил шаги на этом интернет сайт
Изменение размера и расширение внутренних разделов за один шаг
У меня был хост 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) Создайте новый выходной диск (40 ГБ):
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 как резервную копию, переименуйте исходящий диск как indisk (или измените гостевой XML)
6) Перезагрузите гостевую систему и внимательно проверьте новый файл на диске перед удалением исходного файла.
7) Прибыль!
Если вы используете 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 используется в виртуальной машине:
sudo pvcreate /dev/vdb
sudo vgextend vgWWW /dev/vdb
sudo lvextend --extents +100%FREE /dev/vgWWW/root
(или что-то вроде sudo lvextend --size +8G /dev/vgWWW/root
если вы не хотите увеличивать его полностью, в этом примере к тому добавится 8 ГБ)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@localhost ~]# virsh domblklist undercloud
Target Source
------------------------------------------------
vda /home/images/undercloud.qcow2
Теперь взгляните на детали файла изображения .qcow2:
[root@localhost ~]# 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@localhost ~]# virsh blockresize undercloud vda 51G
Block device 'vda' is resized
И подтверждаем:
[root@localhost ~]# 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@localhost ~]#
Затем вы можете использовать этот скрипт внутри виртуальной машины, чтобы показать команды для изменения размера блочных устройств и 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 a disk rescan и после того, как вы сможете изменить размер lvm.
Если у вас есть 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
fix не работает, когда 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. После использования с gparted вы можете легко загрузить систему и настроить пространство. Убедитесь, что у вас установлен правильный приоритет загрузки. В качестве справки используйте приведенный ниже URL-адрес, который может пригодиться. https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html