Изменение размера жесткого диска на Virtual Machine под управлением Oracle Linux

Изменение размера жесткого диска на Virtual Machine под управлением Oracle Linux

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

Версия используемого VirtualBox – 7.0.4, версия используемой ОС Oracle Linux – 7.9, однако методы и команды, приведенные в данной статье, могут применяться, как и к более ранним версиям VirtualBox, так и к более ранним и более поздним версиям ОС Oracle Linux. Часто возникает задача увеличения дискового пространства внутри виртуальной машины. Для начала, выполним в ОС виртуальной машины команду df -h для просмотра имеющихся дисков:

[rustam@dushanbe ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 831M 0 831M 0% /dev
tmpfs 850M 0 831M 0% /dev/shm
tmpfs 850M 9.4M 841M 2% /run
tmpfs 850M 0 850M 0% /sys/fs/cgroup
/dev/mapper/ol-root 26G 23G 3.1G 89% /
/dev/sda1 1014M 40K 170M 24% /boot

На скриншоте мы видим файловые системы и разделы, к которым они примонтированы. Основное пространство нашего диска находится в файловой системе /dev/mapper/ol-root, размером в 26 Гб. Остальные разделы в сумме дают 30 Гб – именно такое место мы выделяли изначально для виртуальной машины. Просмотреть выделенный виртуальной машине диск можно, выбрав машину в меню VirtualBox и нажав на кнопку “Настроить”.

Далее в открывшемся меню, необходимо выбрать раздел “Носители”, в котором и будет располагаться наш жесткий диск. Как можно видеть на скриншоте ниже, его размер составляет 30 Гб.

Условно разделим процесс увеличения размера диска на два этапа:

  1. Настройка виртуальной машины.
  2. Настройка операционной системы.

Первый этап. Настройка виртуальной машины.

На этом этапе необходимо увеличить диск в самой виртуальной машине. Для этого необходимо предварительно выключить виртуальную машину, а затем в VirtualBox, в верхнем контекстном меню, выбрать вкладку “Файл” – “Инструменты” – “Менеджер виртуальных носителей”.

В открывшемся окне надо выбрать наш диск (просмотренный ранее) и кликнув на нем правой кнопкой мыши нажать на “Свойства”.

В открывшемся поле увеличим размер диска с 30 Гб до, к примеру, 40 Гб. Сделать это можно передвинув в соответствующем направлении ползунок в графе “Размер”, либо вручную вписав нужное значение в окошко справа. Далее, надо нажать кнопку “Применить” для сохранения результата.

Войдя обратно в настройки носителя виртуальной машины, можно увидеть, что размер диска изменился с 30 на 40 Гб.

Второй этап. Настройка операционной системы.

Мы увеличили диск, но наша ОС пока не увидела и не приняла эти изменения. Для этого необходимо войти под пользователем root, либо иметь права суперпользователя.

Далее, необходимо выполнить репартицию – то есть удалить старые партиции или разбивку диска и создать новую, которая будет учитывать увеличившийся размер диска.

Это можно сделать утилитой fdisk.

fdisk, также известная как format disk, — это утилита командной строки с меню, используемая для создания и манипулирования таблицей разделов диска. Она используется для просмотра, создания, удаления, изменения, изменения размера, копирования и перемещения разделов на жестком диске с помощью диалогового интерфейса.

Утилита fdisk является самой простой утилитой для разметки диска в терминале. Другие популярные инструменты – parted и cfdisk в терминале, а также графическая утилита gparted.

Для начала работы с fdisk используется команда формата fdisk <имя диска>, где <имя диска> – имя устройства, которому необходимо выделить раздел. Например, команда fdisk /dev/sda по умолчанию выберет первый диск на SATA-контроллере.

Чтобы понять, над каким диском надо проводить работу, можно выполнить команду:

[rustam@dushanbe ~] $ sudo dmesg |grep -i attached  |grep disk
[ 2.873709] sd 2:0:0:0: [sda] Attached SCSI disk

Видим, что диск имеет метку sda. Её и будем использовать.

Чтобы начать работу, нужно выбрать нужный диск (к примеру, fdisk /dev/sda). После этого утилита предложит ввести команду для работы. Рассмотрим все виды команд (для удобства, описания команд переведены на русский язык):

Command (m for help): m
Command action
a установить/снять флаг загрузочного раздела (утилит запросит номер раздела)
b редактировать bsd метку диска
c переключить флаг совместимости с dos
d удалить раздел
l список известных типов разделов
m показать это меню
n добавить новый раздел
o создать новую пустую таблицу разделов в стиле DOS
p показать существующую таблицу разделов
q выйти без сохранения изменений
s создать новый раздел с меткой Sun
t изменить метку типа раздела
u изменить отображение/запись блоков
v проверить таблицу разделов
w сохранить изменения и выйти
x дополнительные возможности (только для экспертов)

Начнем работу. Просмотрим, какие разделы есть на диске сейчас.

[rustam@oracle ~] $ sudo fdisk -l /dev/sda
Disk /dev/sda: 30.9 GB, 30858345410 bytes, 62914559 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: 0xcfab32ac
Device Boot Start End Blocks Id System
/dev/sda1 2048 62914559 30407680 83 Linux

Удалим партицию введя букву d и создадим её заново введя n. Данные при этом не удалятся. Чтобы сохранить новую партицию необходимо нажать w.

[oracle@dushanbe ~]$ sudo 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): d
Selected partition 1
Partition 1 is deleted

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

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Еще раз проверим раздел и убедимся, что диск изменил размер.

[rustam@dushanbe ~]$ sudo fdisk -l /dev/sda
Disk /dev/sda: 42.9 GB, 42949345920 bytes, 83886080 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: 0xcfab32ac
 Device Boot      Start         End      Blocks   Id  System
 /dev/sda1            2048    83104551    41227631   83  Linux
 re-read partition table.
Syncing disks.

Далее необходимо увеличить файловую систему, которая еще не знает об увеличении диска. В зависимости от файловой системы способ реализации будет меняться.

Чтобы проверить, какая файловая система используется на вашей ОС, можно выполнить команду df -Th:

[rustam@dushanbe ~]$ df -Th
Filesystem           Type      Size  Used Avail Use% Mounted on
devtmpfs             devtmpfs  831M     0  831M   0% /dev
tmpfs                tmpfs     850M     0  831M   0% /dev/shm
tmpfs                tmpfs     850M  9.4M  841M   2% /run
tmpfs                tmpfs     850M     0  850M   0% /sys/fs/cgroup
/dev/mapper/ol-root  xfs       26G    23G  3.1G  89% /
/dev/sda1            xfs      1014M   40K  170M  24% /boot

Можно увидеть, что на основных разделах используется файловая система xfs. На Oracle Linux вы, с большей долей вероятности, будете иметь дело либо с xfs, либо с ext3/ext4. Рассмотрим способы увеличения обоих файловых систем. Для XFS:

[rustam@dushanbe /]$ cd /
[rustam@dushanbe /]$ sudo xfs_growfs /
meta-data=/dev/sda1              isize=256    agcount=4, agsize=3276736 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=13106944, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=6399, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13106944 to 20971264
[rustam@dushanbe /]$ sudo xfs_info /
meta-data=/dev/sda1              isize=256    agcount=7, agsize=3276736 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=20971264, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=6399, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Видим, что значение размера блока для диска файловая система определила, и теперь наш раздел видит свободное место.
Для ext3/ext4:

[rustam@dushanbe /]$ sudo e2fsck -f /dev/sda1
e2fsck 1.42.9 (29-Jan-2023)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda1: 13/196608 files (0.0% non-contiguous), 438082/786176 blocks
[rustam@dushanbe /]$ sudo resize2fs -f /dev/sda1
resize2fs 1.42.9 (29-Jan-2023)
Filesystem at /dev/sda1 is mounted on /ext04; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/sda1 is now 1310464 blocks long.

Видим, что значение размера блока для диска файловая система определила, и теперь наш раздел видит свободное место.

Последний шаг – необходимо примонтировать файловую систему, чтобы можно было использовать свободное пространство. Чтобы это осуществить, выполним команды:

[rustam@dushanbe ~]$ sudo mount -a

Затем, можно проверить состояние диска:

[rustam@dushanbe ~] $ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 831M 0 831M 0% /dev
tmpfs 850M 0 831M 0% /dev/shm
tmpfs 850M 9.4M 841M 2% /run
tmpfs 850M 0 850M 0% /sys/fs/cgroup
/dev/mapper/ol-root 40G 23G 17G 57% /
/dev/sda1 1014M 40K 170M 24% /boot

Leave a Reply

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