Как вы увеличиваете дисковое пространство гостя KVM?

Я настраиваю гостевую систему Ubuntu на хост CentOS KVM с первоначально объемом в 6 ГБ дискового пространства. Как мне увеличить объем дискового пространства гостевого компьютера Ubuntu из командной строки?

EDIT # 1: Я использую файл образа диска (qemu).

81 голос | спросил slm 24 +04002011-10-24T18:23:06+04:00312011bEurope/MoscowMon, 24 Oct 2011 18:23:06 +0400 2011, 18:23:06

11 ответов


101
  1. остановить виртуальную машину
  2. запустить qemu-img resize vmdisk.img +10G, чтобы увеличить размер изображения на 10Gb
  3. запустите виртуальную машину, измените размеры разделов и структуру LVM внутри нее.
ответил dyasny 24 +04002011-10-24T19:32:25+04:00312011bEurope/MoscowMon, 24 Oct 2011 19:32:25 +0400 2011, 19:32:25
20

Онлайн-метод (с использованием qemu, libvirt и virtio-block)

К лучшему или худшему, приведенные ниже команды будут выполняться, даже если целевой виртуальный диск будет установлен. Это может быть полезно в средах, где невозможно размонтировать диск (например, корневой раздел), виртуальная машина должна оставаться включенной, а владелец системы готов принять на себя риск повреждения данных . Чтобы устранить этот риск, вам необходимо сначала войти в виртуальную машину и размонтировать целевой диск, что не всегда возможно.

Выполните следующее из гипервизора KVM.

  1. Увеличьте размер самого файла образа диска (укажите размер увеличения):

    qemu-img resize <my_vm>.img +10G
    
  2. Получите имя устройства 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]
    
  3. Сигнал драйвера virtio для определения нового размера (укажите общую новую емкость):

    virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
    

Затем войдите в виртуальную машину. Запуск dmesg должен сообщать, что виртуозный диск обнаружил изменение емкости. На этом этапе, при необходимости, измените размеры разделов и структуры LVM.

ответил billyw 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 23 Sep 2015 02:08:29 +0300 2015, 02:08:29
16

Эти вопросы с сервером похожи, но более конкретны, размер дискового пространства 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 внутри.

  1. Выключение виртуальной машины
  2. добавьте больше места в «файл изображения» гостя (что-то вроде: cat old.img 10G_addon.raw>> new.img
  3. запустите виртуальную машину (используя вновь созданный new.img)
  4. запустить 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.
    %
    
  5. Перезагрузите виртуальную машину

  6. Измените размер физического объема 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
      ...
    
  7. Измените размер логического объема LVM

      % lvresize /dev/VolGroup00/LogVol00 -l +640
      Extending logical volume LogVol00 to 43.88 GB
      Logical volume LogVol00 successfully resized
    
  8. Увеличить файловую систему

      % 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.
    

Это мой пример, но я выполнил шаги на этом веб-сайт

ответил slm 24 +04002011-10-24T18:36:36+04:00312011bEurope/MoscowMon, 24 Oct 2011 18:36:36 +0400 2011, 18:36:36
11

Изменить размер и развернуть внутренние разделы за один шаг

У меня был хост Ubuntu с образцом гостевого файла qcow2 и вы хотели изменить размер диска и развернуть соответствующие разделы всего за один шаг. Он требует, чтобы вы установили утилиты гостевой файловой системы libvirt, но все это полезно для всех.

Вдохновение отсюда: http://libguestfs.org/virt-resize.1.html

Ключевая команда здесь: virt-resize

  • это утилита libvirt.
  • он может расширить гостевой диск и развернуть разделы внутри за один шаг
  • он копирует диск, он не расширяет его на месте
    • Это хорошо, потому что у вас нетронутый оригинал, как резервное копирование

Приготовление:

* 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) Прибыль!

ответил hdave 13 J0000006Europe/Moscow 2016, 17:02:58
5

Если вы используете 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

, если ОС VM использует LVM. В приведенном выше примере виртуальная машина имеет 30-гигабайтный виртуальный диск, настроенный с использованием LVM с одной группой томов под названием vgWWW, содержащей два логических тома, один для обмена и один для всего остального.

Если LV используется в VM:

  1. Завершение работы VM
  2. На хосте создайте новый файл виртуального диска и добавьте его в VM
  3. Перезапустите виртуальную машину и войдите в систему
  4. Отметьте новый диск как физический том для LVM с помощью sudo pvcreate /dev/vdb
  5. Расширьте группу томов, чтобы включить этот новый блок диска с помощью sudo vgextend vgWWW /dev/vdb
  6. Расширьте логический том, чтобы заняться новым пространством с помощью sudo lvextend --extents +100%FREE /dev/vgWWW/root (или что-то вроде sudo lvextend --size +8G /dev/vgWWW/root, если вы не хотите его полностью расширять, этот пример добавит 8 ГБ к тому)
  7. Измените размер файловой системы с помощью resize2fs /dev/vgWWW/root

Примечание: выше подразумевается, что имена vg /lv совпадают с моим примером, что маловероятно, при необходимости измените, также если у VM уже был виртуальный диск с именем vdb новый будет чем-то другим (vdc и т. д.)

Примечание. resize2fs будет работать только в файловой системе ext2, ext3 и ext4. Если вы используете что-то еще, это будет ошибкой и ничего не делать.

Примечание: при изменении размера файловой системы в реальном времени resize2fs не будет запускаться сначала fsck, как это было бы для размонтированной файловой системы , он будет просто идти вперед. Возможно, вы захотите запустить проверку файловой системы только для чтения, нет проблем перед продолжением.

ответил David Spillett 24 +04002011-10-24T19:10:37+04:00312011bEurope/MoscowMon, 24 Oct 2011 19:10:37 +0400 2011, 19:10:37
3

Существует возможность увеличить размер диска вашей виртуальной машины без перезагрузки виртуальной машины, если вы используете virtio drive и LVM.

  1. Используйте virt-manager или virsh для определения нового пустого диска
  2. Ядро должно увидеть новый /dev /vdb
  3. (Необязательно) Создайте первичный раздел с fdisk для получения /dev /vdb1, затем используйте kpartx -a /dev /vdb, чтобы перечитать таблицу разделов

  4. Используйте vgextend vg_name /dev /vdb1 (или /dev /vdb, если вы не создали раздел)

  5. Использовать lvextend -l + 100% БЕСПЛАТНО /dev /vg_name /lv_name
  6. Используйте resize2fs /dev /vg_name /lv_name для расширения вашей файловой системы.

Вы закончили.

ответил Bruno Mairlot 12 J000000Friday13 2013, 14:25:59
2

Другой способ сделать это

truncate -s +2G vm1.img 

зайдите в режим повторного сканирования диска и после того, как вы сможете изменить размер вашего lvm.

ответил mandela900 18 PMpWed, 18 Apr 2012 21:50:34 +040050Wednesday 2012, 21:50:34
2

Таким образом вы можете расширить раздел, который вы хотите:

    # 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

Смотрите примеры здесь .

ответил Hojat Modaresi 1 +03002016-10-01T18:50:39+03:00312016bEurope/MoscowSat, 01 Oct 2016 18:50:39 +0300 2016, 18:50:39
1

Если у вас LVM в вашей виртуальной машине, тогда это безумно легко и быстро.

  1. Отключить виртуальную машину (гостевой компьютер).
  2. На вашей хост-машине добавьте новое устройство хранения.
  3. Включите гостевую систему.
  4. Открытая система -> Администрирование -> Логическое управление томами (или введите sudo system-config-lvm в терминал) *.

Я нашел GUI довольно интуитивно понятным, но следуйте следующим шагам, если у вас есть проблемы.

  1. Откройте «Uninitialized Entities» и найдите новый диск.
  2. После выбора нового диска под изображением вы должны найти кнопку инициализации. Нажмите его.
  3. Он спросит вас о разделении - вам это не нужно.
  4. По завершении добавления вашего диска в существующую группу томов.
  5. Наконец, вам нужно увеличить логические тома (ы) - это делается в Logical View для группы путем редактирования свойств вашего тома.
  6. Сохраните и сделайте. Нет необходимости перезапускать VM.

Внимание! По крайней мере, на CentOS 6 LVM GUI не установлен по умолчанию, но вы можете установить его с помощью yum install system-config-lvm.

ответил Nux 7 J0000006Europe/Moscow 2013, 20:12:34
1
  1. Выключение виртуальной машины
  2. Изменить размер изображения:

    qemu-img resize vmdisk.img +16G
    

    увеличивает размер изображения на 16 ГБ.

  3. Если ваше изображение имеет 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.

  4. Увеличьте размер раздела, чтобы заполнить все свободное пространство:

    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 или где-то еще .

  5. Перезагрузите или перечитайте разделы с помощью partx -u $MY_DRIVE или partprobe.

  6. Расширьте раздел, пример для ext2, ext3 или ext4:

    MY_PARTITION="${MY_DRIVE}1"
    resize2fs $MY_PARTITION
    
ответил mixel 6 AMpThu, 06 Apr 2017 01:32:26 +030032Thursday 2017, 01:32:26
0

Вы можете использовать solus vm с установленным gparted. После использования с gparted вы можете легко загрузить систему и отрегулировать пространство. Убедитесь, что у вас установлен правильный приоритет загрузки. В качестве ссылки, пожалуйста, обратитесь к приведенному ниже URL-адресу, который может пригодиться. https: //greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html

ответил Muhasin 31 J000000Sunday16 2016, 15:52:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132