VirtualBox: увеличение размера диска VM

Виртуальные машины и среды исполнения

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

VirtualBox: увеличение размера диска VM

Непрочитанное сообщение Olej » 17 мар 2012, 17:50

Вот такая задача:
- отрабатывается Linux ПО для разных версий ядра, дистрибутивов...
- проще всего это делать в виртуальной машине, наделав нужное количество VM
- я использую Oracle VirtualBox менеджер VM, для этих задач он по всем показателям ОК...
- VirtualBox по дефаулту предлагает для Linux систем 8Gb пазмер виртуального диска и не хотелось бы их делать с запасом (поскольку VM несколько),
- при такой установке Fedora 16 RFR после некоторой работы и дополнений начинает голосить, что свободное место близко к исчепанию... такое же будет с другими дистрибутивами.

Вопрос:
- как увеличить размер виртуальной системы VM? для конкретики скажем до 10Gb
Уточнение:
- формат виртуальной файловой системы - динамический, vdi :

Код: Выделить всё

[olej@nvidia fedora.16.RFR]$ ls -l fedora.16.RFR.vdi
-rw-------. 1 olej olej 5540712448 Мар 17 16:31 fedora.16.RFR.vdi
т.е. реальный размер < максимального объявленного ... что ещё вносит сомнения :-?

Есть у меня соображения по нескольким способам, попробовать - что получится отпишу.
Но может у кого есть хороший рецепт?
... задача то общего характера - у всех и в разных ситуациях может возникать...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: увеличение размера диска VM

Непрочитанное сообщение Olej » 17 мар 2012, 19:18

Olej писал(а):... задача то общего характера - у всех и в разных ситуациях может возникать...
Более чем :lol:
Поиск по Яндекс по ключу <VirtualBox увеличить размер диска>:
1 млн ответов

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: увеличение размера диска VM

Непрочитанное сообщение Olej » 19 мар 2012, 04:13

Olej писал(а): Поиск по Яндекс по ключу <VirtualBox увеличить размер диска>:
Очень интересных вещей накопал - обычно, в большинстве, предлагают:

1. Создать GUI менеджером дополнительный диск (2Gb для определённости, чтоб 8Gb перевести в 10Gb) + примонтировать его позже в VM как самый активно используемый каталог разработки, /home например...

2. Создать GUI менеджером новый больший (10Gb) диск fedora.16.RFR-disk2.vmdk, а потом клонировать в него существующий fedora.16.RFR-disk1.vmdk (8Gb) консольной командой типа:

Код: Выделить всё

VBoxManage clonehd fedora.16.RFR-disk1.vdmk fedora.16.RFR-disk2.vmdk --existing
Но на этом приключения не заканчиваются, потому как том создан, но раздел установочный нужно ещё расширить на неиспользуемое пространство. Делается это, например программой gparted.

3. Но в новом (>4.0) VirtualBox есть и новая команда консольного менеджера:

Код: Выделить всё

[olej@nvidia fedora.16.RFR]$ VBoxManage modifyhd fedora.16.RFR-disk1.vmdk --resize 1500
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!
Только номер у меня этот не проходит, потому как образ диска был в формате .vdmk (после экспорта-импорта).
Но этому делу легко помочь:

Код: Выделить всё

[olej@nvidia fedora.16.RFR]$ time VBoxManage clonehd fedora.16.RFR-disk1.vmdk --format VDI fedora.16.RFR-disk1.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 21b8e25a-aa4b-4375-82d8-d5fb7ddbe773
real    5m31.269s
user    0m0.463s
sys     0m0.622s
- превратили в .vdi ... только долго это, потому как выполнение показано на очень быстром процессоре.

Расширение диска проходит на редкость гладко и быстро:

Код: Выделить всё

[olej@nvidia fedora.16.RFR]$ time VBoxManage modifyhd fedora.16.RFR-disk1.vdi --resize 10000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
real    0m1.029s
user    0m0.017s
sys     0m0.039s
В виртуальной машине доставляем gparted (его там естественно нет):

Код: Выделить всё

[olej@fedora16vm ~]$ sudo yum install gparted
...
[olej@fedora16vm ~]$ gparted
======================
libparted : 3.0
======================
The backup GPT table is not at the end of the disk, as it should be.  This might mean that another operating system believes the disk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?
Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 3702784 blocks) or continue with the current setting? 
...
- gparted подправляет записи диска ... и вот тут - облом:
GParted.png
GParted.png (38.34 КБ) 14717 просмотров
- Fedora ставится по дефаулту в LVM ... никакой gparted не может изменить такой раздел, нужно лезть в управление логическими томами.

P.S. но 90% дела - сделано ;-) : gparted видит 10Gb диск и не подвергает это сомнению.
Последний раз редактировалось Olej 19 мар 2012, 04:17, всего редактировалось 1 раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: увеличение размера диска VM

Непрочитанное сообщение Olej » 19 мар 2012, 04:16

Olej писал(а): - Fedora ставится по дефаулту в LVM ... никакой gparted не может изменить такой раздел, нужно лезть в управление логическими томами.
Лучшее что мне помниться про LVM - это Повесть о Linux и LVM (Logical Volume Manager).
Пошёл читать...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: увеличение размера диска VM

Непрочитанное сообщение Olej » 19 мар 2012, 12:46

Olej писал(а):Вот такая задача:
Задача не из любопытства выросла, а для того, чтобы:
- отрабатывать (разрабатывать, тестировать) разное ПО под разными вариантами Linux...
- а делать это проще всего под виртуальными машинами...
- которые нужно понаделать в некотором количестве, и которым нужно бы с лёгкостью менять размеры их HDD, чтоб не создавать наперёд заведомо большие.

Как показали опыты, задача разделяется на 2 независимые и послдовательные:
1. как изменить физический раздел виртуального HDD - это решается средствами VM-менеджера, VirtualBox;
2. как изменить разделы Linux (/) на увеличенный физический раздел - а это уже вопрос сугубо Linux, и к виртуальным машинам он не имеет никакого касательства.
2а. вот если Linux установлен более традиционно, в фиксированные разделы (/dev/sda1, /dev/sda2, ... ) то это решается элементарно gparted...
2б. а вот если LVM, то тут с утилитами /sbin/lvm придётся повозиться.

Тут попутно в этой задаче ещё несколько ... "дочерние" возникают актуальные, и не всегда до конца ясные:
2в. как перераспределять пространство в LVM (например, между swap и /)?
3. как перемещать образы (файлы) виртуальных HDD внутри хостовой системы, чтобы сохранять работоспособность VM?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: увеличение размера диска VM

Непрочитанное сообщение Olej » 19 мар 2012, 12:47

Olej писал(а):
Olej писал(а): - Fedora ставится по дефаулту в LVM ... никакой gparted не может изменить такой раздел, нужно лезть в управление логическими томами.
Лучшее что мне помниться про LVM - это Повесть о Linux и LVM (Logical Volume Manager).
Пошёл читать...
http://www.ibm.com/developerworks/ru/library/l-lvm2/

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: увеличение размера диска VM

Непрочитанное сообщение Olej » 19 мар 2012, 12:59

Olej писал(а): 2в. как перераспределять пространство в LVM (например, между swap и /)?
Группа томов LVM2 и тома, которые насоздавала Fedora смотрю так:

Код: Выделить всё

[olej@fedora16vm ~]$ sudo vgdisplay -v
    Finding all volume groups
    Finding volume group "vg_nvidia"
  --- Volume group ---
  VG Name               vg_nvidia
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               7,50 GiB
  PE Size               32,00 MiB
  Total PE              240
  Alloc PE / Size       240 / 7,50 GiB
  Free  PE / Size       0 / 0
  VG UUID               2hrfb3-5LMl-Qrvi-dDy0-0B2t-J2dS-3qM2I6

  
  --- Logical volume ---
  LV Name                /dev/vg_nvidia/lv_swap
  VG Name                vg_nvidia
  LV UUID                HC1hv2-jGyh-c9dO-cW08-02l7-0KBK-B19EFz
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                2,41 GiB
  Current LE             77
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/vg_nvidia/lv_root
  VG Name                vg_nvidia
  LV UUID                yNh4qU-zw1k-k78b-Xfol-4cYq-EI2L-t1RObU
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                5,09 GiB
  Current LE             163
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Physical volumes ---
  PV Name               /dev/sda3
  PV UUID               FlwWe8-vFoo-AheO-PZoO-RfSf-kFeD-UDpZmt
  PV Status             allocatable
  Total PE / Free PE    240 / 0

Теперь из этого листинга извлекаются все данные (имена) для копи-пасте работы с LVM:

Код: Выделить всё

[root@fedora16vm ~]# lvresize -v --size -1400M /dev/vg_nvidia/lv_swap
    Finding volume group vg_nvidia
  Rounding up size to full physical extent 1,34 GiB
  WARNING: Reducing active and open logical volume to 1,06 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_swap? [y/n]: y
    Archiving volume group "vg_nvidia" metadata (seqno 5).
  Reducing logical volume lv_swap to 1,06 GiB
    Found volume group "vg_nvidia"
    Found volume group "vg_nvidia"
    Loading vg_nvidia-lv_swap table (253:0)
    Suspending vg_nvidia-lv_swap (253:0) with device flush
    Found volume group "vg_nvidia"
    Resuming vg_nvidia-lv_swap (253:0)
    Creating volume group backup "/etc/lvm/backup/vg_nvidia" (seqno 6).
  Logical volume lv_swap successfully resized
- отобрал 1.4Gb у swap...

Код: Выделить всё

[root@fedora16vm ~]# lvresize -v --size +1360M /dev/vg_nvidia/lv_root
    Finding volume group vg_nvidia
  Rounding up size to full physical extent 1,34 GiB
    Archiving volume group "vg_nvidia" metadata (seqno 6).
  Extending logical volume lv_root to 8,19 GiB
    Found volume group "vg_nvidia"
    Found volume group "vg_nvidia"
    Loading vg_nvidia-lv_root table (253:1)
    Suspending vg_nvidia-lv_root (253:1) with device flush
    Found volume group "vg_nvidia"
    Resuming vg_nvidia-lv_root (253:1)
    Creating volume group backup "/etc/lvm/backup/vg_nvidia" (seqno 7).
  Logical volume lv_root successfully resized
- вернул их в /

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: увеличение размера диска VM

Непрочитанное сообщение Olej » 19 мар 2012, 13:33

Olej писал(а):
Olej писал(а):
Olej писал(а): - Fedora ставится по дефаулту в LVM ... никакой gparted не может изменить такой раздел, нужно лезть в управление логическими томами.
Лучшее что мне помниться про LVM - это Повесть о Linux и LVM (Logical Volume Manager).
Пошёл читать...
http://www.ibm.com/developerworks/ru/library/l-lvm2/
По идее ;-) увеличение виртуального HDD для LVM должно происходить так ... но есть вопросы! (то что мне непонятно и нужна бы помощь зала):

1. создать новый физический раздел в неиспользуемом пространстве HDD (пространство, которое ранее создано VirtualBox). Это можно делать тем же gparted, parted, или:

Код: Выделить всё

[root@fedora16vm ~]# pvcreate /dev/hda4

вопрос №1: для дальнейших целей мы его так и используем - не форматированным под тип fs?

2. добавить новосозданный /dev/sda4 к группе логических томов:

Код: Выделить всё

[root@fedora16vm ~]# vgextend  -v /dev/vg_nvidia /dev/sda4
    Checking for volume group "vg_nvidia"
    Archiving volume group "vg_nvidia" metadata (seqno 3).
  No physical volume label read from /dev/sda4
    Set up physical volume for "/dev/sda4" with 3702784 available sectors
    Adding physical volume '/dev/sda4' to volume group 'vg_nvidia'
    Volume group "vg_nvidia" will be extended by 1 new physical volumes
    Zeroing start of device /dev/sda4
  Writing physical volume data to disk "/dev/sda4"
  Physical volume "/dev/sda4" successfully created
    Creating volume group backup "/etc/lvm/backup/vg_nvidia" (seqno 4).
  Volume group "vg_nvidia" successfully extended
3. расширить на добавленный объём логический том этой группы:

Код: Выделить всё

[root@fedora16vm ~]# lvresize -v --size +1770M /dev/vg_nvidia/lv_root
    Finding volume group vg_nvidia
  Rounding up size to full physical extent 1,75 GiB
    Archiving volume group "vg_nvidia" metadata (seqno 4).
  Extending logical volume lv_root to 6,84 GiB
    Found volume group "vg_nvidia"
    Found volume group "vg_nvidia"
    Loading vg_nvidia-lv_root table (253:1)
    Suspending vg_nvidia-lv_root (253:1) with device flush
    Found volume group "vg_nvidia"
    Resuming vg_nvidia-lv_root (253:1)
    Creating volume group backup "/etc/lvm/backup/vg_nvidia" (seqno 5).
  Logical volume lv_root successfully resized
4. растянуть файловую систему /, чтобы она могла использовать пространство.
Для reiserfs это понятно, и можно сделать online, на лету, не размонтируя:

Код: Выделить всё

# resize_reiserfs /dev/vg_nvidia/lv_root
Т.е. вопрос стоит об изменении таблицы inode файловой системы...
вопрос №2: А как это сделать для ext4, которую по дефаулту делает Fedora, или ext3?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: увеличение размера диска VM

Непрочитанное сообщение Olej » 19 мар 2012, 13:44

Olej писал(а): Т.е. вопрос стоит об изменении таблицы inode файловой системы...
вопрос №2: А как это сделать для ext4, которую по дефаулту делает Fedora, или ext3?
Смущает вот что:

Код: Выделить всё

[root@fedora16vm ~]# parted /dev/mapper/vg_nvidia-lv_root
GNU Parted 3.0
Используется /dev/mapper/vg_nvidia-lv_root
Добро пожаловать в GNU Parted! Наберите 'help' для просмотра списка команд.
(parted) help                                                             
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  help [КОМАНДА]                   распечатать общую справку или справку по КОМАНДЕ
  mklabel,mktable ТИП_МЕТКИ         создать новую метку диска (таблицу раздела) 
  mkpart ТИП_РАЗД [ТИП_ФС] НАЧ КОН создать раздел
  name НОМЕР ИМЯ                   назначает имя разделу НОМЕР на ИМЯ
  print [devices|free|list,all|НОМЕР]     отображает таблицу разделов, доступные устройства, свободное место, все найденные
        разделы или определённый раздел
  quit                             выйти из программы
  rescue НАЧАЛО КОНЕЦ              восстановить потерянный раздел в промежутке от НАЧАЛА до КОНЦА
  rm НОМЕР                         удалить раздел НОМЕР
  select УСТРОЙСТВО                выбор устройства для редактирования
  set НОМЕР ФЛАГ СОСТОЯНИЯ         изменить ФЛАГ на разделе НОМЕР
  toggle [НОМЕР [ФЛАГ]]            переключает состояния ФЛАГА на разделе НОМЕР
  unit УСТРОЙСТВО                  установить устройство по умолчанию на УСТРОЙСТВО
  version                                  отображает текущую версию GNU Parted и информацию о лицензии
(parted) print                                                            
Модель: Linux device-mapper (linear) (dm)
Диск /dev/mapper/vg_nvidia-lv_root: 8791MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: loop

Номер  Начало  Конец   Размер  Файловая система  Флаги
 1     0,00B   8791MB  8791MB  ext4
т.е. parted видит уже увеличенный размер системы ext4???

Как-то оно не так :twisted:

Код: Выделить всё

[root@fedora16vm ~]# df
Файловая система              1K-блоков Использовано Доступно Использовано% Cмонтировано в
rootfs                          5325460      4772140   286264           95% /
devtmpfs                         620336            0   620336            0% /dev
tmpfs                            628904           76   628828            1% /dev/shm
/dev/mapper/vg_nvidia-lv_root   5325460      4772140   286264           95% /
tmpfs                            628904        41768   587136            7% /run
tmpfs                            628904            0   628904            0% /sys/fs/cgroup
tmpfs                            628904            0   628904            0% /media
/dev/sda2                        508745        49780   433365           11% /boot

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: увеличение размера диска VM

Непрочитанное сообщение Olej » 19 мар 2012, 13:57

Olej писал(а): Как-то оно не так :twisted:

Код: Выделить всё

[root@fedora16vm ~]# df
Файловая система              1K-блоков Использовано Доступно Использовано% Cмонтировано в
rootfs                          5325460      4772140   286264           95% /
devtmpfs                         620336            0   620336            0% /dev
tmpfs                            628904           76   628828            1% /dev/shm
/dev/mapper/vg_nvidia-lv_root   5325460      4772140   286264           95% /
tmpfs                            628904        41768   587136            7% /run
tmpfs                            628904            0   628904            0% /sys/fs/cgroup
tmpfs                            628904            0   628904            0% /media
/dev/sda2                        508745        49780   433365           11% /boot
Всё :!:
Вот оно:

Код: Выделить всё

[root@fedora16vm ~]# e2fsck /dev/mapper/vg_nvidia-lv_root
e2fsck 1.41.14 (22-Dec-2010)
/dev/mapper/vg_nvidia-lv_root is mounted.  

WARNING!!!  The filesystem is mounted.   If you continue you ***WILL***
cause ***SEVERE*** filesystem damage.

Do you really want to continue (y/n)? yes

/dev/mapper/vg_nvidia-lv_root: recovering journal
Clearing orphaned inode 179984 (uid=1000, gid=1000, mode=0100600, size=4096)
Clearing orphaned inode 196041 (uid=1000, gid=1000, mode=0100644, size=8835)
Clearing orphaned inode 140073 (uid=1000, gid=1000, mode=0100644, size=8835)
/dev/mapper/vg_nvidia-lv_root: clean, 165453/333904 files, 1196959/1335296 blocks

[root@fedora16vm ~]# resize2fs /dev/mapper/vg_nvidia-lv_root
resize2fs 1.41.14 (22-Dec-2010)
Filesystem at /dev/mapper/vg_nvidia-lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg_nvidia-lv_root to 2146304 (4k) blocks.
The filesystem on /dev/mapper/vg_nvidia-lv_root is now 2146304 blocks long.

[root@fedora16vm ~]# df
Файловая система              1K-блоков Использовано Доступно Использовано% Cмонтировано в
rootfs                          8518196      4773252  3317364           59% /
devtmpfs                         620336            0   620336            0% /dev
tmpfs                            628904           76   628828            1% /dev/shm
/dev/mapper/vg_nvidia-lv_root   8518196      4773252  3317364           59% /
tmpfs                            628904        41768   587136            7% /run
tmpfs                            628904            0   628904            0% /sys/fs/cgroup
tmpfs                            628904            0   628904            0% /media
/dev/sda2                        508745        49780   433365           11% /boot
Рисково для не размонтированной системы ... но для виртуального HDD как-то прокатит ;-)

Ответить

Вернуться в «Виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей