Статья рассказывает о двух способах увеличения размера раздела диска в CentOS 7: посредством утилиты fdisk и с помощью загрузочного диска GParted
По умолчанию в CentOS 7 создается два основных раздела. На базе одного из них создается физический диск LVM, образующий группу разделов LVM, на основе которой создается логический раздел LVM, на который в свою очередь устанавливается операционная система
Таким образом, нам необходимо увеличить размер раздела диска, а затем — физического и логического разделов LVM
Увеличение раздела посредством fdisk
- выключаем виртуальную машину, увеличиваем на необходимую величину объем виртуального жесткого диска и снова запускаем виртуальную машину
- входим в интерфейс командной строки fdisk
- fdisk /dev/sda
- просматриваем список доступных разделов
- p
- по умолчанию в CentOS 7 создаются два раздела, конфигурация которых должна выглядеть подобным образом
-
Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM
- удаляем раздел «Linux LVM»
- d
- создаем новый primary-раздел
- n
- Замечание: важно, чтобы созданный раздел начинался с того же сектора, что и ранее удаленный
- изменяем тип созданного раздела на «Linux LVM» (код — 8e)
- t
- Замечание: просмотреть список всех типов разделов можно командой «l»
- записываем изменения в таблицу разделов
- w
- перезагружаем виртуальную машину
- увеличиваем размер физического раздела LVM до максимально возможного
- pvresize /dev/sda2
- увеличиваем размер логического раздела LVM до максимально возможного
- lvextend /dev/cl_ms/root —extents +100%FREE —resizefs
Увеличение раздела с помощью GParted
- выключаем виртуальную машину и увеличиваем на необходимую величину объем виртуального жесткого диска
- скачиваем загрузочный диск Gparted и загружаем с него виртуальную машину
- в программе GParted увеличиваем размер раздела диска (программа будет автоматически запущена после загрузки системы)
- перезагружаем виртуальную машину
- выполняем увеличение физического и логического разделов LVM описанным в предыдущем разделе способом
Появилась необходимость увеличения размера виртуальных дисков на виртуальной машине с CentOS 7. Задача простая, но все мануалы которые находятся поиском в google почему-то не работают. На деле всё достаточно просто, делается буквально несколькими командами.
Итак, имеется два виртуальных диска, системный – 16Gb, смонтированный – 5Gb. Смотрим список всех разделов, их размеры и процент использования
[root@centos7 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 14G 9.9G 3.4G 75% / devtmpfs 898M 0 898M 0% /dev tmpfs 912M 84K 912M 1% /dev/shm tmpfs 912M 8.9M 903M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sdb1 4.8G 3.9G 666M 86% /mnt/mailstore /dev/sda1 297M 152M 146M 51% /boot tmpfs 183M 12K 183M 1% /run/user/42 tmpfs 183M 0 183M 0% /run/user/0
Средствами гипервизора увеличиваем размеры дисков, системный – 20Gb, смонтированный – 15Gb.
Смотрим таблицы разделов
[root@centos7 ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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: 0x000c45a0 Device Boot Start End Blocks Id System /dev/sda1 * 2048 616447 307200 83 Linux /dev/sda2 616448 3762175 1572864 82 Linux swap / Solaris /dev/sda3 3762176 31457279 13847552 83 Linux Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 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: 0x5d48b270 Device Boot Start End Blocks Id System /dev/sdb1 2048 10485759 5241856 83 Linux
Размеры дисков увеличились, осталось увеличить размеры разделов. Сначала изменим смонтированный диск – в конкретном случае sdb1. Первым делом размонтируем его, потом удалим имеющийся раздел (данная операция не затрагивает хранящиеся данные на диске) и создадим его заново большего размера
[root@centos7 ~]# umount /mnt/mailstore/ [root@centos7 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 14G 9.9G 3.4G 75% / devtmpfs 898M 0 898M 0% /dev tmpfs 912M 84K 912M 1% /dev/shm tmpfs 912M 9.0M 903M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 297M 152M 146M 51% /boot tmpfs 183M 16K 183M 1% /run/user/42 tmpfs 183M 0 183M 0% /run/user/0 [root@centos7 ~]# fdisk /dev/sdb 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-31457279, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279): Using default value 31457279 Partition 1 of type Linux and of size 15 GiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@centos7 ~]# resize2fs /dev/sdb1 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/sdb1 is mounted on /mnt/mailstore; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/sdb1 is now 3931904 blocks long.
Монтируем диск обратно, перечитаем таблицу разделов и проверяем размер интересующего раздела
[root@centos7 ~]# mount -t ext4 /dev/sdb1 /mnt/mailstore/ [root@centos7 ~]# /sbin/partprobe [root@centos7 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 14G 9.9G 3.4G 75% / devtmpfs 898M 0 898M 0% /dev tmpfs 912M 84K 912M 1% /dev/shm tmpfs 912M 9.0M 903M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 297M 152M 146M 51% /boot tmpfs 183M 16K 183M 1% /run/user/42 tmpfs 183M 0 183M 0% /run/user/0 /dev/sdb1 15G 3.9G 11G 28% /mnt/mailstore
Теперь вторая половина задания, увеличим системный раздел – в текущей конфигурации sda3. Смотрим таблицу разделов, удаляем нужный, создаём его заново – большего размера
[root@centos7 ~]# 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): p Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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: 0x000c45a0 Device Boot Start End Blocks Id System /dev/sda1 * 2048 616447 307200 83 Linux /dev/sda2 616448 3762175 1572864 82 Linux swap / Solaris /dev/sda3 3762176 31457279 13847552 83 Linux Command (m for help): d Partition number (1-3, default 3): 3 Partition 3 is deleted Command (m for help): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p Partition number (3,4, default 3): 3 First sector (3762176-41943039, default 3762176): Using default value 3762176 Last sector, +sectors or +size{K,M,G} (3762176-41943039, default 41943039): Using default value 41943039 Partition 3 of type Linux and of size 18.2 GiB is set 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@centos7 ~]# /sbin/partprobe Error: Partition(s) 3 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
Как видно – перечитать таблицу разделов не удалось, т.к. раздел используется системой. Для внесения изменений необходима перезагрузка операционной системы. После перезагрузки осталось расширить раздел
[root@centos7 ~]# resize2fs /dev/sda3 resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/sda3 Couldn't find valid filesystem superblock.
Проблема в том, что resize2fs умеет работать только с ext2-4 файловыми системами, а CentOS7 по умолчанию создаёт разделы в файловой системе xfs. Решением является использование команды xfs_growfs
[root@centos7 ~]# xfs_growfs /dev/sda3 meta-data=/dev/sda3 isize=512 agcount=4, agsize=865472 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=3461888, 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 3461888 to 4772608 [root@centos7 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 19G 9.9G 8.4G 55% / devtmpfs 898M 0 898M 0% /dev tmpfs 912M 84K 912M 1% /dev/shm tmpfs 912M 8.9M 903M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sdb1 15G 3.9G 11G 28% /mnt/mailstore /dev/sda1 297M 152M 146M 51% /boot tmpfs 183M 12K 183M 1% /run/user/42 tmpfs 183M 0 183M 0% /run/user/0
В результате получилось увеличить раздел sda3 с 14Gb до 19Gb, а монтируемый раздел sdb1 с 4,8Gb до 15Gb.
5 671
Обновлено: 09.01.2023
Опубликовано: 22.06.2017
В инструкции рассмотрены сценарии расширения дискового пространства разделов в Linux без потери информации.
Принцип увеличения диска:
- Расширение раздела.
- Изменение размера файловой системы.
В зависимости от типа раздела и файловой системы, действия различаются.
Любая работа с диском несет риск потери информации. Перед началом работ убедитесь в наличие резервных копий ценных данных.
Расширение разделов
Обычных
LVM
Изменение размера файловой системы
Использование GParted
Шаг 1. Расширение раздела
Мы рассмотрим варианты работы с обычными томами (разделами) и томами LVM. Проверить, какой тип раздела у нас используется можно командой:
lsblk
Нам интересны варианты part и lvm.
Обычные тома (part)
Допустим, есть диск /dev/sdb и раздел /dev/sdb2, который нужно увеличить. Разберем два подхода, сделать это.
1. С помощью утилиты growpart (без отмонтирования раздела)
Данная утилита позволяет увиличить размер слайса без необходимости его отмонтировать. Это очень удобно для работы с корневыми разделами. Данная утилита не установлена в системе. В зависимости от последней наши действия будут различаться.
а) Для систем DEB:
apt install cloud-guest-utils
б) Для систем RPM:
yum install cloud-utils-growpart
Если наш диск имеет разметку GPT, то потребуется установить также утилиту gdisk.
а) Для DEB:
apt install gdisk
б) Для RPM:
yum install gdisk
Установка growpart завершена. Идем дальше.
Для расширения раздела /dev/sdb2 вводим команду:
growpart /dev/sda 2
Мы должны увидеть что-то на подобие:
CHANGED: partition=2 start=4096 old: size=20965376 end=20969472 new: size=41938910 end=41943006
Готово.
2. С помощью утилиты fdisk/parted (требуется отмонтировать раздел)
Данный способ удобнее тем, что не нужно устанавливать дополнительных утилит, но он потребует отмонтирование раздела. Это можно сделать командой:
umount /dev/sdb2
В случае работы с корневой директорией, отмонтировать ее не получиться. В таком случае необходимо загрузить компьютер с Windows LiveCD или GParted Live.
Подключаемся утилитой fdisk к /dev/sdb:
fdisk /dev/sdb
Если мы работаем с разделом более чем 2Тб, используем утилиту parted.
Смотрим номера разделов:
: p
Удаляем раздел (не переживайте — все данные сохраняются):
: d
: 2
* в моем примере, раздел для удаления на второй позиции.
Создаем новый раздел:
: n
Первичный (primary):
: p
Номер раздела — 2:
: 2
На запрос начального и конечного секторов просто нажимаем Enter.
Если раздел был загрузочный, добавляем соответствующий флаг:
: a
Еще раз проверяем, что получилось:
: p
Сохраняем изменения:
: w
LVM
LVM-тома расширяются на лету, даже для корневых разделов. В данном примере, работаем с /dev/sda.
Открываем диск утилитой fdisk:
fdisk /dev/sda
* напомню, что при работе с диском 2Тб и более, следует использовать утилиту parted.
Создаем еще один раздел:
: n
Первичный:
: p
Номер раздела оставляем тот, который предлагает система (просто нажимаем Enter).
Первый и последний сектора также оставляем по умолчанию для использования всего дискового пространства (еще два раза Enter).
Задаем тип раздела:
: t
Выбираем номер раздела (в моем примере создавался раздел 3):
: 3
Командой L можно посмотреть список всех типов, но нас интересует конкретный — LVM (8e):
: 8e
Сохраняем настройки:
: w
Проинформируем систему, что в таблице разделов произошли изменения:
partprobe
Создаем физический том из нового раздела:
pvcreate /dev/sda3
Смотрим наши Volume Group и для нужного добавляем созданный том:
vgdisplay
vgextend vg_centos /dev/sda3
* в моем примере группа томов LVM называется vg_centos
Смотрим LVM-разделы и расширяем пространства для нужного:
lvdisplay
lvextend -l +100%FREE /dev/vg_centos/lv_root
* данная команда расширяем LVM-раздел /dev/vg_centos/lv_root, используя все свободное пространство (100%FREE).
Шаг 2. Изменение размера для файловой системы
После того, как на предыдущем шаге мы расширили раздел, система по-прежнему будет видеть старый по объему диск. Чтобы это исправить, необходимо выполнить команду по изменению размера файловой системы. В зависимости от последней, команды различаются.
Посмотреть файловую систему:
df -T
ext2/ext3/ext4:
resize2fs /dev/vg_centos/lv_root
XFS:
xfs_growfs /dev/sda2
Reiserfs:
resize_reiserfs /dev/sdb
* обратите внимание, что в данных примерах используются различные устройства.
Если раздел был отмонтирован, монтируем его, например:
mount /dev/sda2 /mnt
Проверяем, что настройки применились:
df -h
Увеличение разделов с Gparted
Если работы выполняются на системе с графическим интерфейсом или есть возможность перезагрузить сервер и загрузиться с LiveCD, можно воспользоваться простым средством — утилитой Gparted, которая позволяем менять размер разделов мышкой.
Запускаем утилиту — выбираем диск, с которым будем работать — кликаем правой кнопкой по разделу, который хотим увеличить и выбираем Resize/Move:
В открывшемся окне с помощью мышки или форм меняем размер раздела:
Нажимаем кнопку Resize/Move.
Проверяем изменения в окне программы и сохраняем настройки кнопкой «Apply All Operations»:
После увеличения дискового пространства в панели управления, необходимо также сделать доступным диск для операционной системы.
Под пользователем root и вводим следующие команды:
[root@Serverspace ~]# echo 1 > /sys/block/sda/device/rescan
С помощью fdisk выполним:
[root@Serverspace ~]# fdisk /dev/sda
Удалим раздел /dev/sda2:
Command (m for help): d
Partition number (1,2, default 2): 2
Создадим раздел:
Command (m for help): n
Выбираем тип раздела (p) — основной
Select (default p): p
Partition number (2-4, default 2): 2
Нажимаем два раза Enter — принимаем значения по умолчанию
First sector (XXX-YYY, default ZZZ):
Last sector, +sectors or +size{K,M,G} (XXX-YYY, default ZZZ):
Изменяем тип раздела
Command (m for help): t
Partition number (1-2): 2
Hex code (type L to list all codes): 8e
...
Сохраним изменения:
Command (m for help): w
Известим ядро об изменениях:
[root@Serverspace ~]# partx -u /dev/sda2
Внесем изменения в физический том:
[root@Serverspace ~]# pvresize /dev/sda2
Теперь необходимо узнать название логического тома, для этого выполним:
lvdisplay
Нас интересует название тома оканчивающееся на XXXXXXX/root (в примере ниже это /dev/centos_vg/root) запоминаем данное название
--- Logical volume ---
LV Path /dev/centos_vg/swap
....
--- Logical volume ---
LV Path /dev/centos_vg/var
...
--- Logical volume ---
LV Path /dev/centos_vg/root
...
Расширяем логический том:
[root@Serverspace ~]# lvextend -l +100%FREE /dev/XXXXXXX/root
......
Logical volume root successfully resized
Расширяем файловую систему:
[root@Serverspace ~]# xfs_growfs /dev/XXXXXXX/root
220140
Минск
ул. Домбровская, д. 9
+375 (173) 88-72-49
700
300
ООО «ИТГЛОБАЛКОМ БЕЛ»
220140
Минск
ул. Домбровская, д. 9
+375 (173) 88-72-49
700
300
ООО «ИТГЛОБАЛКОМ БЕЛ»