Изменение размера жесткого диска на 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 Гб.
Условно разделим процесс увеличения размера диска на два этапа:
- Настройка виртуальной машины.
- Настройка операционной системы.
Первый этап. Настройка виртуальной машины.
На этом этапе необходимо увеличить диск в самой виртуальной машине. Для этого необходимо предварительно выключить виртуальную машину, а затем в 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