Увеличение размера виртуального диска в VirtualBox для гостевой операционной системы Oracle Linux

Увеличение размера виртуального диска в VirtualBox для гостевой операционной системы Oracle Linux

В данном посте пошагово описывается способ расширения размера дискового раздела root операционной системы Oracle Linux за счет увеличения виртуального диска VirtualBox.

Могут возникнуть случаи, когда заранее выделенного места на дисковом пространстве гостевой операционной системы (далее ОС) Oracle Enterprise Linux (далее OEL) в виртуальной машине может быть недостаточно. В такой ситуации, есть возможность расширить дисковое пространство (виртуальный диск) на гостевой операционной системе средствами VirtualBox и системными средствами ОС OEL, не пересоздавая виртуальную машину. Под гостевой ОС подразумевается операционная система, которая устанавливается, настраивается и работает на виртуальной машине. В данном посте описывается ситуация, когда заполняется дисковое пространство на корневом дисковом разделе root. Для расширения дискового пространства системного диска гостевой ОС Oracle Linux, надо выполнить следующие шаги:

  1. Проверить текущий размер диска гостевой ОС.
  2. Настроить диск виртуальной машины в VirtualBox.
  3. Расширить системный диск гостевой операционной системы.

1. Проверка текущего размера расширяемого локального диска гостевой ОС.

Проверяется текущий размер дискового раздела root гостевой ОС с помощью инструментов командной строки.

[root@dushanbe ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             472M     0  472M   0% /dev
tmpfs                496M     0  496M   0% /dev/shm
tmpfs                496M  7.5M  488M   2% /run
tmpfs                496M     0  496M   0% /sys/fs/cgroup
/dev/mapper/ol-root  8.0G  7.7G  350M  96% /
/dev/sda1           1014M  200M  815M  20% /boot
tmpfs                100M   52K  100M   1% /run/user/1000
[root@dushanbe ~]# 

Анализируя полученный результат, можно заключить, что в корневом разделе (/) (в данном случае /dev/mapper/ol-root) свободно 350М из имеющихся 8 Гб.

Проверяется размер диска в гостевой Oracle Linux.

[root@dushanbe ~]# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos

Disk identifier: 0x000b826b
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    20971519     9436160   8e  Linux LVM

Disk /dev/mapper/ol-root: 8585 MB, 8585740288 bytes, 16769024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/ol-swap: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@dushanbe ~]#  

Результат команды fdisk показывает, что размер виртуального диска /dev/sda 10.7 Гб и из них 8585 MB (то есть 8 Гб) используется корневым разделом – /dev/mapper/ol-root: 8585 MB.

После этого можно приступать к расширению дискового пространства корневого раздела.

2. Настройка диска виртуальной машины в VirtualBox.

Необходимо остановить гостевую операционную систему Oracle Linux. Надо убедиться, что виртуальная машина выключена, а не находится в состоянии сохранения. Также перед продолжением, необходимо удалить снэпшоты (snapshots), которые ассоциируются с виртуальной машиной, если они используются в VirtualBox. Это поможет определить, что модифицируется корректный виртуальный диск, и что все будет правильно работать после модификации.

Для настройки расширения диска виртуальной машины в VirtualBox, надо войти в меню «Файл» и выбрать «Менеджер виртуальных носителей», как показано на скриншоте ниже.

В «Менеджере виртуальных носителей» можно увидеть все виртуальные диски существующих виртуальных машин. В данном примере их три. Изменение размера виртуального диска будет выполняться для OEL-fdisk.vdi, у которой размер диска 10 Гб. Выбирается OEL-fdisk.vdi и по нажатию на «Свойства» можно получить доступ к дополнительной информации и опциям, среди которых есть и изменение размера диска.

Размер диска увеличивается на 2 Гб в пункте «Размер», то есть был 10 Гб и теперь назначается 12 Гб.

3. Расширение корневого раздела (/) гостевой операционной системы внутри виртуальной машины.

Теперь необходимо запустить виртуальную машину на Oracle Linux и распределить появившееся дисковое пространство. Для этого можно использовать утилиту fdisk и проверить размер раздела диска /dev/sda, где находится корневой раздел (/).

[root@dushanbe ~]# fdisk -l /dev/sda

Disk /dev/sda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b826b

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    20971519     9436160   8e  Linux LVM
[root@dushanbe ~]# 

Видно, что размер диска изменился с 10 на 12 Гб. Теперь надо сделать это новое пространство видимым для системы и нужного раздела. Запускается утилита fdisk для удаления и пересоздания LVM, данные пользователей останутся без изменений.

[root@dushanbe ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Выбирается ключ «m» для получения списка команд. Из списка выбирается ключ «p» для вывода данных таблицы разделов (партицирования).

Command (m for help): p

Disk /dev/sda: 12.9 GB, 12884901888 bytes, 25165824 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b826b

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    20971519     9436160   8e  Linux LVM

Удаляется второй раздел ключом «d», т.к. основной раздел по умолчанию находится во втором разделе:

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 is deleted

Создается новый основной раздел ключом «n» и начальные и конечные значения секторов оставляются по умолчанию:

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2099200-25165823, default 2099200): 
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-25165823, default 25165823): 
Using default value 25165823
Partition 2 of type Linux and of size 11 GiB is set

После создания нового раздела проверяются текущие значения таблицы разделов (партицирования):

Command (m for help): p
Disk /dev/sda: 12.9 GB, 12884901888 bytes, 25165824 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b826b
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    25165823    11533312   83  Linux

Меняется системный идентификатор для созданного раздела с помощью ключа «t» и шестнадцатеричного кода 8e, который обозначает Linux LVM. Таким образом, тип раздела сменится с Linux на Linux LVM.

Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): L
 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Все изменения на диск записываются  ключом «w».

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 or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@dushanbe ~]#

Новые изменения разделов вступят в силу после следующей перезагрузки операционной системы. В связи с этим перезагружается операционная система.

[root@dushanbe ~]# shutdown -r now

После перезагрузки ОС проверяются настройки физического раздела диска.

[root@dushanbe ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               ol
  PV Size               <9.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              2303
  Free PE               0
  Allocated PE          2303
  PV UUID               ww56kW-YGE7-cwiF-Q0YF-DjER-qabM-H5IAbs
[root@dushanbe ~]# 

и изменяется размер физического диска:

[root@dushanbe ~]# pvresize /dev/sda2
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
[root@dushanbe ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               ol
  PV Size               <11.00 GiB / not usable 2.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              2815
  Free PE               512
  Allocated PE          2303
  PV UUID               ww56kW-YGE7-cwiF-Q0YF-DjER-qabM-H5IAbs
[root@dushanbe ~]# 

Проверяются размер и другие настройки логического размера диска.

[root@dushanbe ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/ol/swap
  LV Name                swap
  VG Name                ol
  LV UUID                DcuUcA-sjK0-Bng5-fLBv-Y9bM-CoAN-txH7JX
  LV Write Access        read/write
  LV Creation host, time dushanbe, 2020-12-18 13:10:52 +0500
  LV Status              available
  # open                 2
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
currently set to     8192
Block device           249:1
--- Logical volume ---
LV Path                /dev/ol/root
LV Name                root
VG Name                ol
LV UUID                8FT9Ud-VTiN-6Uk4-Cev6-uP4Y-CqRm-YdV00j
LV Write Access        read/write
LV Creation host, time dushanbe, 2020-12-18 13:10:52 +0500
LV Status              available
open                 1
LV Size                <8.00 GiB
Current LE             2047
Segments               1
Allocation             inherit
Read ahead sectors     auto
currently set to     8192
Block device           249:0 
[root@dushanbe ~]#

Далее расширяется логический диск с помощью команды lvextend:

[root@dushanbe ~]# lvextend -L 10G /dev/ol/root
  Insufficient free space: 513 extents needed, but only 512 available

Ошибка выше возникает из-за того, что в этой логической группе уже есть логический том, который занимает место и не дает расшириться на 10 Гб. В данном случае можно распределить логическому тому все свободное дисковое пространство, используя приведенную ниже команду:

[root@dushanbe ~]# lvextend -l +100%FREE /dev/ol/root
  Size of logical volume ol/root changed from <8.00 GiB (2047 extents) to <10.00 GiB (2559 extents).
  Logical volume ol/root successfully resized.
[root@dushanbe ~]# 

Проверяются настройки логического размера диска после его расширения:

[root@dushanbe ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/ol/swap
  LV Name                swap
  VG Name                ol
  LV UUID                DcuUcA-sjK0-Bng5-fLBv-Y9bM-CoAN-txH7JX
  LV Write Access        read/write
  LV Creation host, time dushanbe, 2020-12-18 13:10:52 +0500
  LV Status              available
  # open                 2
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
currently set to     8192
Block device           249:1
--- Logical volume ---
LV Path                /dev/ol/root
LV Name                root
VG Name                ol
LV UUID                8FT9Ud-VTiN-6Uk4-Cev6-uP4Y-CqRm-YdV00j
LV Write Access        read/write
LV Creation host, time dushanbe, 2020-12-18 13:10:52 +0500
LV Status              available
open                 1
LV Size                <10.00 GiB
Current LE             2559
Segments               1
Allocation             inherit
Read ahead sectors     auto
currently set to     8192
Block device           249:0 
[root@dushanbe ~]#

Применяются изменения для логического раздела диска.

[root@dushanbe ~]# xfs_growfs /dev/mapper/ol-root
meta-data=/dev/mapper/ol-root    isize=256    agcount=4, agsize=524032 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2096128, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2096128 to 2620416
[root@dushanbe ~]#

Проверяются размеры разделов из чего видно, что корневой раздел (/) (в данном случае /dev/mapper/ol-root) расширился с 8 Гб на 10 Гб и свободно стало 2.4 Гб вместо 350 Мб.

[root@dushanbe ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             472M     0  472M   0% /dev
tmpfs                496M     0  496M   0% /dev/shm
tmpfs                496M  6.9M  489M   2% /run
tmpfs                496M     0  496M   0% /sys/fs/cgroup
/dev/mapper/ol-root   10G  7.7G  2.4G  77% /
/dev/sda1           1014M  200M  815M  20% /boot
tmpfs                100M   24K  100M   1% /run/user/1000
[root@dushanbe ~]# 

На этом завершается процесс увеличения размера корневого диска гостевой операционной системы Oracle Enterprise Linux, работающей в VirtualBox.

Leave a Reply

Your email address will not be published. Required fields are marked *