Обновлено: 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»:
Изменение размеров логических томов в Linux осуществляется сложнее, нежели в Windows, что связано с особенностями использования консольных команд и доступных графических приложений. Однако эта задача под силу любому пользователю, и приведенные далее инструкции помогут разобраться с тем, как выполнить ее быстро.
Работа с разделами в GParted
Не все юзеры Linux предпочитают использовать терминал, когда можно обойтись без него. К тому же новички в этой операционной системе не особо желают разбираться с активацией сложных команд. Поэтому в качестве первого варианта предлагаю ознакомиться с использованием программы GParted, которая представляет собой полноценную систему управления дисками.
GParted по умолчанию установлена в большинстве популярных дистрибутивов и их оболочках. Однако если при запуске окажется, что она отсутствует, используйте менеджер приложений или пользовательские репозитории для стандартной процедуры инсталляции. После этого приступайте к выполнению следующей инструкции.
- Запустите приложение через терминал, введя там gparted, или нажмите по созданному значку. В главном окне сразу можно выбрать диск, размер которого необходимо изменить, и нажать по кнопке «Изменить размер/Переместить».
- Отобразится новое окно, где вы можете добавить свободное пространство к диску или же сжать том, освободив тем самым определенное количество мегабайт. Как только выставите новые настройки, подтвердите действие, чтобы закрыть это окно.
- В главном меню разверните всплывающее меню «Редактировать» и нажмите «Применить все операции».
- В новом окне следите за прогрессом операции, а по ее завершении можете убедиться в том, что размер был успешно изменен.
Если все пространство уже распределено по разделам, учитывайте, что сначала его придется вернуть к нераспределенному, сжав один или несколько логических томов. Затем свободные мегабайты уже можно будет отнести к новому тому, расширив его.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Меняем размер разделов диска с помощью fdisk
Более гибкий, но сложный вариант изменения размера диска в Linux подразумевает использование консольной утилиты fdisk. Для выполнения расширения тома на все свободное пространство понадобится выполнить более десятка разных действий, но на все про все уйдет не больше 10 минут.
- Если вы пока не знаете, под какими метками располагается сам диск и его логические тома, используйте команду sudo fdisk -l, отобразив список со всеми секторами.
- Используйте команду umount /dev/sdb2 для размонтирования раздела. Замените его название на необходимое и учитывайте, что корневой том размонтировать так просто нельзя, понадобится загрузка с LiveCD.
- Далее укажите fdisk /dev/sdb, подключившись тем самым к указанному диску.
- Посмотрите все разделы, введя p и нажав на Enter.
- За удаление отвечает d; после активации этого атрибута понадобится ввести цифру раздела, который вы хотите удалить (при этом форматирования не происходит, все данные сохраняются).
- Последовательно активируйте n (новый раздел), p (основной) и 2 (замените на номер тома). При появлении уведомления о создании первого и последнего сектора подтверждайте операцию нажатием на Enter.
- Проверьте список томов еще раз через p, а затем нажмите w для сохранения изменений.
Осталось только указать файловой системе, что размер тома был расширен до максимального, поскольку пока отображается старое значение. Для этого сначала определите используемую файловую систему через df -T. Введите одну из трех следующих команд, отталкиваясь от полученной информации:
Для ext2/ext3/ext4:
resize2fs /dev/vg_centos/lv_root
XFS:
xfs_growfs /dev/sda2
Reiserfs:
resize_reiserfs /dev/sdb
В командах номера разделов указаны в качестве примеров, вы же заменяете их на свои. Еще оставлю пример команды для монтирования диска, если ранее он был отключен:
mount /dev/sda1 /mnt
Сделать это нужно уже после внесения всех изменений.
Для уменьшения размера раздела используйте последовательность команд:
umount /dev/vdb1 fsck -f /dev/vdb1 resize2fs /dev/vdb1 100M fdisk /dev/vdb
После ввода последней снова используйте последовательную активацию букв так, как это было показано в предыдущей инструкции, чтобы создать новый раздел. Кроме того, не забудьте смонтировать его обратно!
Предположим, что у нас есть виртуальная машина с установленной операционной системой Ubuntu и требуется увеличить размер раздела, например системного. В этой статье мы рассмотрим на примере Ubuntu 20 увеличение системного раздела без LVM.
Вводные данные
Наша Ubuntu 20 установлена на Hyper-V. Для начала проверим размер файловой системы, выполнив df -h (все команды выполняются от root пользователя):
# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 394M 1,4M 392M 1% /run
/dev/sda3 24G 7,4G 16G 33% /
tmpfs 2,0G 0 2,0G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 4,0M 0 4,0M 0% /sys/fs/cgroup
/dev/sda2 512M 7,8M 505M 2% /boot/efi
tmpfs 394M 144K 394M 1% /run/user/1000
Наш системный раздел, смонтированный в / имеет размер 24 Гб.
Посмотрим вывод fdisk -l:
# fdisk -l
Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: F5F02D9D-060D-422F-BA27-1981A6CA23F4
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 1054719 1050624 513M EFI System
/dev/sda3 1054720 52426751 51372032 24.5G Linux filesystem
В данном примере у нас 1 диск /dev/sda размером 25 гигабайт, который разбит на 3 логических: /dev/sda1, /dev/sda2 и /dev/sda3 с типом Linux filesystem – он нас и интересует.
Увеличение размера диска
В среде виртуализации увеличиваем размер жесткого диска нашей виртуальной машины. Скорее всего ваша система виртуализации попросит вас предварительно выключить ВМ. Я увеличил диск до 30 гигабайт, запускаем машину и проверяем:
# fdisk -l
Disk /dev/sda: 30 GiB, 32212254720 bytes, 62914560 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: F5F02D9D-060D-422F-BA27-1981A6CA23F4
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 1054719 1050624 513M EFI System
/dev/sda3 1054720 52426751 51372032 24.5G Linux filesystem
Внимание! Перед тем, как приступить к работам по расширению системного раздела, обязательно сделайте резервную копию данных!
После увеличения размера диска необходимо увеличить сам системный раздел. Выполним fdisk /dev/sda, где /dev/sda – метка нашего диска (Disk /dev/sda):
# fdisk /dev/sda
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
Вводим p, чтобы посмотреть на список разделов:
Command (m for help): p
Disk /dev/sda: 30 GiB, 32212254720 bytes, 62914560 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: F5F02D9D-060D-422F-BA27-1981A6CA23F4
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 1054719 1050624 513M EFI System
/dev/sda3 1054720 52426751 51372032 24.5G Linux filesystem
Чтобы расширить раздел требуется предварительно удалить информацию о нём. Для этого вводим d и указываем раздел (3 для /dev/sda3):
Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.
При этом удаляется только запись о разделе, сами данные остаются на диске!
Вводим n – создание нового раздела:
Command (m for help): n
Далее указываем порядковый номер раздела:
Partition number (3-128, default 3):3
Далее указываются начальный и конечный сектор. Обязательно проверьте, чтобы они совпадали со значениям, указанными через дефис. Таким образом мы используем все неразмеченное пространство:
First sector (1054720-62914526, default 1054720): 1054720
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1054720-62914526, default 62914526): 62914526
Created a new partition 3 of type 'Linux filesystem' and of size 29.5 GiB.
Как видим, был создан раздел на 29.5 гигабайт с типом Linux filesystem.
Также будет задан вопрос, хотим ли мы удалить текущую файловую систему. Отвечаем отказом:
Partition #3 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: N
Осталось только сохранить таблицу разделов:
Command (m for help): w
Перезагружаем виртуальную машину:
# reboot
Теперь воспользуемся утилитой resize2fs (для ext4) для увеличения размера файловой системы:
# resize2fs /dev/sda3
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/sda3 is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 4
The filesystem on /dev/sda3 is now 7732475 (4k) blocks long.
Проверяем результат:
# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 394M 1.4M 392M 1% /run
/dev/sda3 29G 7.4G 21G 27% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/sda2 512M 7.8M 505M 2% /boot/efi
tmpfs 394M 84K 394M 1% /run/user/126
tmpfs 394M 72K 394M 1% /run/user/1000
Заключение
Как видим, в Ubuntu 20 увеличение системного раздела – не такая уж и сложная задача.
Вы можете посмотреть похожие статьи по расширению разделов в различных дистрибутивах linux:
- Ubuntu 21 увеличение раздела диска
- CentOS 8 увеличение LVM раздела
- Debian 11 увеличение раздела
Частая задача в моей текущей работе — увеличить объем раздела на виртуальной машине без выключения машины (на горячую). Под рукой постоянно держу небольшой cheatsheet (шпаргалку) по работе с разделами в Linux.
План действий
Перед изменением размеров разделов рекомендуется отмонтировать диск. Если диск системный, то нужно загружаться в recovery. Я делаю это на горячую на свой страх и риск.
- Делаем бекап машины! (не могу не написать этого)
- Увеличиваем объем диска в гипервизоре (этот пункт не затрагиваем)
- Сканируем диски в системе
- Меняем размер раздела
- Увеличиваем файловую систему
Сканируем диски в системе
После увеличения объема диска есть вероятность того, что в системе мы новый объем сразу не увидим. Проверяем. Я использую команду lsblk
:
root@hostname.infra.local:/home/user# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
loop0 7:0 0 99,2M 1 loop /snap/core/10908
loop2 7:2 0 99,2M 1 loop /snap/core/10958
sda 8:0 0 32G 0 disk
├─sda1 8:1 0 1M 0 part
└─sda2 8:2 0 32G 0 part /
sdb 8:16 0 4T 0 disk <<<--------
└─sdb1 8:17 0 4T 0 part /pgsqldb <<<--------
sdc 8:32 0 109,8G 0 disk
└─sdc1 8:33 0 109,8G 0 part /temp_dump
sr0 11:0 1 829M 0 rom
Стрелкой я выделил диск, который мы увеличили до 5Т, но увеличенный объем не видим.
Нужно заставить систему просканировать диск.
echo 1 > /sys/block/sdb/device/rescan
(вместо sdb — нужный диск)
Сразу после этого снова выполняем lsblk
:
sdb 8:16 0 5T 0 disk
└─sdb1 8:17 0 4T 0 part /pgsqldb
То что нужно. Перейдем к увеличению раздела.
Меняем размер раздела
Вообще, мы можем для любых вариантов использовать программу parted, но я покажу еще способ с программой fdisk. Он подходит для разделов объемом менее 4 терабайт.
Здесь будет несколько вариантов:
- у нас обычная разметка диска или LVM
- у нас диск c таблицей разметки GPT более 4 терабайт объемом
Рекомендую на этом этапе сначала выполнить команду parted -l
, которая может показать ошибку и предложить опции Fix\Ignore
:
Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 41943040 blocks) or continue with the
current setting?
Fix/Ignore? Fix
ПишемFix
.
Обычные разделы или LVM
Чаще всего я пользуюсь программой fdisk. Можно посмотреть все наши дискиразделы: fdisk -l
.
Так как меняем размер раздела на диске sdb
, то и заходим в fdisk /dev/sdb.
Вводим команду p
и получаем наш текущий список разделов:
Device Start End Sectors Size Type
/dev/sdb1 2048 8589843750 8589841703 4T Linux filesystem
Удаляем раздел /dev/sdb1
: вводим команду d
.
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Если разделов на диске больше, программа предложит ввести цифру нужного раздела.
Никаких изменений на диск мы еще не сделали! Не боимся.
Создаем новый раздел n
:
Command (m for help): n
Partition number (1-128, default 1):
First sector (34-8589934558, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-8589934558, default 8589934558):
Created a new partition 1 of type 'Linux filesystem' and of size 4 TiB.
Обратите внимание, программа сообщает, что при создании раздела она нашла запись ext4 в разделе и предлагает удалить ее. Не удаляем. Нет! Не надо!
Partition #1 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: N
Опять вводим команду p
, чтобы посмотреть новую информацию:
Device Start End Sectors Size Type
/dev/sdb1 2048 10751953125 10751951078 5T Linux filesystem
Ну вроде все хорошо. Теперь вводим команду w
(write). После этого ваши изменения запишутся на диск.
Большой диск GPT
Если по предыдущему пункту попробовать отресайзить диск большого объема (больше 4 терабайт), то появится ошибка Value out of range
. Придется воспользоваться программой parted.
Делаем parted /dev/sdb
и смотрим текущие разделы командой print
:
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 4398GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 3299GB 3299GB ext4 primary
Меняем размер раздела командой resizepart 1
:
(parted) resizepart 1
Warning: Partition /dev/sdb1 is being used. Are you sure you want to continue?
Yes/No? Yes
End? [3299GB]? 4398GB
На вопрос End?
пишем новый объем раздела. Если хотим расширить его до максимума, то цифры можно подсмотреть выше в выводе команды print
: Disk /dev/sdb: 4398GB
Здесь изменения происходят сразу, поэтому при отсутствии вывода после предыдущей команды можно делать quit.
Увеличение файловой системы
Тут должно быть все просто. Разница только между разметками: обычная или LVM.
Обычная разметка
Просто выполняем команду resize2fs /dev/sdb1
:
root@hostname.infra.local:/home/user# resize2fs /dev/sdb1
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/sdb1 is mounted on /pgsqldb; on-line resizing required
old_desc_blocks = 384, new_desc_blocks = 512
The filesystem on /dev/sdb1 is now 1073730212 (4k) blocks long.
LVM
Вообще, LVM позволяет добавлять физические диски (PV — physical volume) в VG — volume group, а в них создавать логические тома (LV — logical volume) примерно по такой схеме:
sda1 sda2 sdb sdc <-- PV
| | | |
| | | |
+--------+- VG00 -+-------+ <-- VG
|
+-------+-------+---------+
| | | |
root usr home var <-- LV
| | | |
ext3 reiserfs reiserfs xfs <-- Файловые системы
Следовательно, можно не ресайзить диск в гипервизоре, а добавить еще один. Затем добавить новый PV в VG.
Но мы идем путем джедая увеличения диска, поэтому в случае с LVM к ресайзингу файловой системы добавляется несколько команд.
Для просмотра информации о PV, VG, LV существуют команды pvs
, vgs
, lvs
. И их более подробные варианты pvscan
, vgscan
, lvscan
:
root@hostname:/home/user# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 t-ubuntu16-vg lvm2 a-- 49.52g 0
root@hostname:/home/user# vgs
VG #PV #LV #SN Attr VSize VFree
t-ubuntu16-vg 1 2 0 wz--n- 49.52g 0
root@hostname:/home/user# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root t-ubuntu16-vg -wi-ao---- 48.52g
swap_1 t-ubuntu16-vg -wi-ao---- 1.00g
- Меняем размер PV
pvresize /dev/sda1
- Увеличиваем размер LV до максимального
lvextend -l +100%FREE /dev/mapper/vg1-dsads-lv-root
- Увеличиваем файловую систему на нужном разделе
resize2fs /dev/mapper/vg1-dsads-lv-root
Итог
Смотрим, что у нас получилось df -h
:
root@hostname.infra.local:/home/user# df -h
Filesystem Size Used Avail Use% Mounted on
udev 38G 0 38G 0% /dev
tmpfs 7,5G 4,4M 7,5G 1% /run
/dev/sda2 32G 24G 6,3G 79% /
/dev/sdb1 5,0T 3,3T 1,5T 71% /pgsqldb <<<-----
Видим новый объем. Все счастливы и довольны.
TL;DR
Кратко cheatsheet у меня выглядит так:
Смотрим, видит ли система новое место на дисках: lsblk
, parted -l
, fdisk -l
Если не видит: echo 1 > /sys/block/sda/device/rescan
(вместо sda — нужный диск) fdisk /dev/sda
(if sda)
p
— просмотр разделов
d
— удалить раздел который расширяешь
n
— создать новый раздел (создастся с тем индексом, который удалишь)
В большинстве случаев везде ответы будут по умолчанию. Когда спросит про затирание метки — НЕ удалять
p
— проверить что разделы имеют тот же вид что и в начале
w
— записать изменения на диск
resize2fs /dev/sda1
(номер — индекс раздела)
Если LVM:
pvresize /dev/sda1
lvextend -l +100%FREE /dev/mapper/vg1-dsads-lv-root
resize2fs /dev/mapper/vg1-dsads-lv-root
Если ошибка с gpt
parted -l
→ Fix
💡 Подписывайтесь на Телеграм-канал, чтобы не пропускать новые статьи
- Телеграм канал 📺
- Чат 🤘🏼
Всем привет. В преддверии старта новой группы курса «Администратор Linux» публикуем полезный материал, написанный нашим студентом, а также наставником на курсах, специалистом технической поддержки корпоративных продуктов REG.RU — Романом Травиным.
В данной статье будет рассмотрены 2 случая замены дисков и переноса информации на новые диски большего объёма с дальнейшим расширением массива и файловой системы. Первый случай будет касаться замены дисков c одноименной разметкой MBR/MBR либо GPT/GPT, второй случай касается замены дисков с разметкой MBR на диски объёмом более 2 TB, на которые потребуется ставить разметку GPT с разделом biosboot. В обоих случаях диски, на которые переносим данным, уже установлены в сервер. Файловая система, используемая для корневого раздела — ext4.
Случай 1: Замена дисков меньшего объёма на диски большего объёма (до 2TB)
Задача: Заменить текущие диски на диски большего объёма (до 2 TB) с переносом информации. В данном случае имеем диски 2 x 240 GB SSD (RAID-1) с установленной системой и диски 2 x 1 TB SATA, на которые необходимо перенести систему.
Рассмотрим текущую разметку дисков.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sda2 8:2 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdc 8:32 0 931,5G 0 disk
sdd 8:48 0 931,5G 0 disk
Проверим используемое пространство файловой системы на данный момент.
[root@localhost ~]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 9,6M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/mapper/vg0-root 204G 1,3G 192G 1% /
/dev/md126 1007M 120M 837M 13% /boot
tmpfs 6,3G 0 6,3G 0% /run/user/0
Размер файловой системы до замены дисков составляет 204 GB, используются 2 программных массива md126, который смонтирован в /boot
и md127
, который используется как physical volume для VG группы vg0.
1. Удаление разделов диска из массивов
Проверям состояние массива
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sda1[0] sdb1[1]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sda2[0] sdb2[1]
233206784 blocks super 1.2 [2/2] [UU]
bitmap: 0/2 pages [0KB], 65536KB chunk
unused devices: <none>
В системе используется 2 массива: md126
(точка монтирования /boot
) — состоит из раздела /dev/sda1
и /dev/sdb1
, md127
(LVM для swap и корня файловой системы) — состоит из /dev/sda2
и /dev/sdb2
.
Помечаем разделы первого диска, которые используются в каждом массиве, как сбойные.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Удаляем разделы блочного устройства /dev/sda из массивов.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
После того, как мы удалили диск из массива, информация о блочных устройствах будет выглядеть следующим образом.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdc 8:32 0 931,5G 0 disk
sdd 8:48 0 931,5G 0 disk
Состояние массивов после удаления дисков.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdb1[1]
1047552 blocks super 1.2 [2/1] [_U]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sdb2[1]
233206784 blocks super 1.2 [2/1] [_U]
bitmap: 1/2 pages [4KB], 65536KB chunk
unused devices: <none>
2. Копирование таблицы разделов на новый диск
Проверить используемую таблицу разделов на диске можно следующей командой.
fdisk -l /dev/sdb | grep 'Disk label type'
Выводом для MBR будет:
Disk label type: dos
для GPT:
Disk label type: gpt
Копирование таблицы разметки для MBR:
sfdisk -d /dev/sdb | sfdisk /dev/sdc
В данной команде первым указывается диск с которого копируется разметка, вторым — куда копировать.
ВНИМАНИЕ: Для GPT первым указывается диск на который копировать разметку, вторым диском указывается диск с которого копировать разметку. Если перепутать диски, то изначально исправная разметка будет перезаписана и уничтожена.
Копирование таблицы разметки для GPT:
sgdisk -R /dev/sdс /dev/sdb
Далее назначаем диску случайный UUID (для GPT).
sgdisk -G /dev/sdc
После выполненной команды разделы должны появится на диске /dev/sdc
.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
└─sdc2 8:34 0 222,5G 0 part
sdd 8:48 0 931,5G 0 disk
Если после выполненного действия разделы в системе на диске /dev/sdc
не определились, то выполняем команду, чтобы перечитать таблицу разделов.
sfdisk -R /dev/sdc
Если на текущих дисках используется таблица MBR и информацию необходимо перенести на диски объёмом более 2 TB, то на новых дисках потребуется вручную создавать разметку GPT с использованием раздела biosboot. Данный случай будет рассмотрен во 2 части данной статьи.
3. Добавление разделов нового диска в массив
Добавим разделы диска в соответствующие массивы.
mdadm /dev/md126 --add /dev/sdc1
mdadm /dev/md127 --add /dev/sdc2
Проверяем, что разделы добавлены.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
После этого дожидаемся синхронизации массивов.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdc1[2] sdb1[1]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sdc2[2] sdb2[1]
233206784 blocks super 1.2 [2/1] [_U]
[==>..................] recovery = 10.6% (24859136/233206784) finish=29.3min speed=118119K/sec
bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>
Непрерывно наблюдать за процессом синхронизации можно с помощью утилиты watch
.
watch -n 2 cat /proc/mdstat
Параметр -n
указывает с каким интервалов в секундах необходимо выполнять команду для проверки прогресса.
Повторяем пункты 1 — 3 для следующего заменяемого диска.
Помечаем разделы второго диска, которые используются в каждом массиве, как сбойные.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Удаляем разделы блочного устройства /dev/sdb
из массивов.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
После того, как мы удалили диск из массива, информация о блочных устройствах будет выглядеть следующим образом.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 222,5G 0 part
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
Состояние массивов после удаления дисков.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdc1[2]
1047552 blocks super 1.2 [2/1] [U_]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sdc2[2]
233206784 blocks super 1.2 [2/1] [U_]
bitmap: 1/2 pages [4KB], 65536KB chunk
unused devices: <none>
Копируем таблицу разметки MBR с диска /dev/sdс
на диск /dev/sdd
.
sfdisk -d /dev/sdс | sfdisk /dev/sdd
После выполненной команды разделы должны появится на диске /dev/sdd
.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 222,5G 0 part
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
├─sdd1 8:49 0 1G 0 part
└─sdd2 8:50 0 222,5G 0 part
Добавляем разделы диска в массивы.
mdadm /dev/md126 --add /dev/sdd1
mdadm /dev/md127 --add /dev/sdd2
Проверяем, что разделы добавлены.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 222,5G 0 part
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
├─sdd1 8:49 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd2 8:50 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
После этого дожидаемся синхронизации массивов.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdd1[3] sdc1[2]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sdd2[3] sdc2[2]
233206784 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.5% (1200000/233206784) finish=35.4min speed=109090K/sec
bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>
5. Установка GRUB на новые диски
Для CentOS:
grub2-install /dev/sdX
Для Debian/Ubuntu:
grub-install /dev/sdX
где X
— буква блочного устройства. В данном случае установить GRUB необходимо на /dev/sdc
и /dev/sdd
.
6. Расширение файловой системы (ext4) корневого раздела
На новых дисках /dev/sdc
и /dev/sdd
доступны 931.5 GB. Из-за того, что таблица разделов скопирована с дисков меньшего объёма, на разделах /dev/sdc2
и /dev/sdd2
доступны 222.5 GB.
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
├─sdd1 8:49 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd2 8:50 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
Необходимо:
- Расширить раздел 2 на каждом из дисков,
- Расширить массив md127,
- Расширить PV (physical volume),
- Расширить LV (logical-volume) vg0-root,
- Расширить файловую систему.
Используя утилиту parted расширим раздел /dev/sdc2
до максимального значения. Выполняем команду parted /dev/sdc
(1) и просматриваем текущую таблицу разделов командой p
(2).
Как видно, конец раздела 2 заканчивается на 240 GB. Выполним расширение раздела командой resizepart
2
, где 2 — номер раздела (3). Указываем значение в цифровом формате, например 1000 GB, или используем указание доли диска — 100%. Снова проверяем, что раздел имеет новый размер (4).
Повторяем указанные выше действия для диска /dev/sdd
. После расширения разделов /dev/sdc2
и /dev/sdd2
стали равными 930.5 GB.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 222,5G 0 part
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 930,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
├─sdd1 8:49 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd2 8:50 0 930,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
После этого выполняем расширение массива md127 до максимума.
mdadm --grow /dev/md127 --size=max
Проверяем, что массив расширился. Теперь его размер стал 930.4 GB.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 222,5G 0 part
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 930,5G 0 part
└─md127 9:127 0 930,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
├─sdd1 8:49 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd2 8:50 0 930,5G 0 part
└─md127 9:127 0 930,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
Выполняем расширение physical volume. Перед расширением проверим текущее состояние PV.
[root@localhost ~]# pvscan
PV /dev/md127 VG vg0 lvm2 [222,40 GiB / 0 free]
Total: 1 [222,40 GiB] / in use: 1 [222,40 GiB] / in no VG: 0 [0 ]
Как видно, PV /dev/md127
использует 222.4 GB пространства.
Расширяем PV следующей командой.
pvresize /dev/md127
Проверяем результат расширения PV.
[
root@localhost ~]# pvscan
PV /dev/md127 VG vg0 lvm2 [930,38 GiB / 707,98 GiB free]
Total: 1 [930,38 GiB] / in use: 1 [930,38 GiB] / in no VG: 0 [0 ]
Расширяем logical volume. Перед расширением проверим текущее состояние LV (1).
[root@localhost ~]# lvscan
ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit
ACTIVE '/dev/vg0/root' [<206,41 GiB] inherit
LV /dev/vg0/root
использует 206.41 GB.
Расширяем LV следующей командой (2).
lvextend -l +100%FREE /dev/mapper/vg0-root
Проверяем выполненное действие (3).
[root@localhost ~]# lvscan
ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit
ACTIVE '/dev/vg0/root' [<914,39 GiB] inherit
Как видим, после расширения LV объём занимаемого дискового пространства стал 914.39 GB.
Объём LV увеличился (4), но файловая система по прежнему занимает 204 GB (5).
1. Выполним расширение файловой системы.
resize2fs /dev/mapper/vg0-root
Проверяем после выполненной команды размер файловой системы.
[root@localhost ~]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 9,5M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/mapper/vg0-root 900G 1,3G 860G 1% /
/dev/md126 1007M 120M 837M 13% /boot
tmpfs 6,3G 0 6,3G 0% /run/user/0
Размер корневой файловой системы увеличится до 900 GB. После выполненных действий можно извлекать старые диски.
Случай 2: Замена дисков меньшего объёма на диски большего объёма (более 2TB)
Задание: Заменить текущие диски на диски большего объёма (2 x 3TB) с сохранением информации. В данном случае имеем диски 2 x 240 GB SSD (RAID-1) с установленной системой и диски 2 x 3 TB SATA, на которые необходимо перенести систему. На текущих дисках используется таблица разделов MBR. Так как новые диски имеют объём больше 2 TB, то на них потребуется использовать таблицу GPT, так как MBR не может работать с дисками более 2TB.
Просмотрим текущую разметку дисков.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sda2 8:2 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdc 8:32 0 2,7T 0 disk
sdd 8:48 0 2,7T 0 disk
Проверим используемую таблицу разделов на диске /dev/sda
.
[root@localhost ~]# fdisk -l /dev/sda | grep 'Disk label type'
Disk label type: dos
На диске /dev/sdb
используется аналогичная таблица разделов. Проверим используемое дисковое пространство в системе.
[root@localhost ~]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 9,5M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/vg0-root 204G 1,3G 192G 1% /
/dev/md126 1007M 120M 837M 13% /boot
tmpfs 3,2G 0 3,2G 0% /run/user/0
Как видно, корень файловой системы занимает 204 GB. Проверим текущее состояние программного RAID-массива.
1. Установка GPT таблицы разделов и разметка диска
Проверим разметку дисков по секторам.
[root@localhost ~]# parted /dev/sda print
Модель: ATA KINGSTON SVP200S (scsi)
Диск /dev/sda: 240GB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Disk Flags:
Номер Начало Конец Размер Тип Файловая система Флаги
1 1049kB 1076MB 1075MB primary загрузочный, raid
2 1076MB 240GB 239GB primary raid
На новом диске 3TB нам необходимо будет создать 3 раздела:
- Раздел
bios_grub
размером 2MiB для совместимости GPT с BIOS, - Раздел для RAID массива, который будет смонтирован в
/boot
. - Раздел для RAID-массива, на котором будет LV root и LV swap.
Устанавливаем утилиту parted командой yum install -y parted
(для CentOS), apt install -y parted
(для Debian/Ubuntu).
Используя parted выполним следующие команды для разметки диска.
Выполняем команду parted /dev/sdc
и переходим в режим редактирования разметки диска.
Создаём таблицу разделов GPT.
(parted) mktable gpt
Создаём 1 раздел bios_grub
раздел и устанавливаем флаг для него.
(parted) mkpart primary 1MiB 3MiB
(parted) set 1 bios_grub on
Создаём 2 раздел и устанавливаем флаг для него. Раздел будет использовать в качестве блока для RAID-массива и монтирования его в /boot
.
(parted) mkpart primary ext2 3MiB 1028MiB
(parted) set 2 boot on
Создаём 3 раздел, который также будет использоваться в качестве блока массива, в котором будет LVM.
(parted) mkpart primary 1028MiB 100%
В данном случае устанавливать флаг не обязательно, но если необходимо, то возможно его установить следующей командой.
(parted) set 3 raid on
Проверяем созданную таблицу.
(parted) p
Модель: ATA TOSHIBA DT01ACA3 (scsi)
Диск /dev/sdc: 3001GB
Размер сектора (логич./физич.): 512B/4096B
Таблица разделов: gpt
Disk Flags:
Номер Начало Конец Размер Файловая система Имя Флаги
1 1049kB 3146kB 2097kB primary bios_grub
2 3146kB 1077MB 1074MB primary загрузочный
3 1077MB 3001GB 3000GB primary
Назначаем диску новый случайный GUID.
sgdisk -G /dev/sdd
2. Удаление разделов первого диска из массивов
Проверям состояние массива
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sda1[0] sdb1[1]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sda2[0] sdb2[1]
233206784 blocks super 1.2 [2/2] [UU]
bitmap: 0/2 pages [0KB], 65536KB chunk
unused devices: <none>
В системе используется 2 массива: md126 (точка монтирования /boot) — состоит из /dev/sda1
и /dev/sdb1
, md127
(LVM для swap
и корня файловой системы) — состоит из /dev/sda2
и /dev/sdb2
.
Помечаем разделы первого диска, которые используются в каждом массиве, как сбойные.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Удаляем разделы блочного устройства /dev/sda
из массивов.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
Проверяем состояние массива после удаления диска.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdb1[1]
1047552 blocks super 1.2 [2/1] [_U]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sdb2[1]
233206784 blocks super 1.2 [2/1] [_U]
bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>
3. Добавление разделов нового диска в массив
Следующим шагом необходимо добавить разделы нового диска в массивы для синхронизации. Смотрим текущее состояние разметки дисков.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdc 8:32 0 2,7T 0 disk
├─sdc1 8:33 0 2M 0 part
├─sdc2 8:34 0 1G 0 part
└─sdc3 8:35 0 2,7T 0 part
sdd 8:48 0 2,7T 0 disk
Раздел /dev/sdc1
является bios_grub
разделом и не участвует с создании массивов. В массивах будут задействованы только /dev/sdc2
и /dev/sdc3
. Добавляем данные разделы в соответствующие массивы.
mdadm /dev/md126 --add /dev/sdc2
mdadm /dev/md127 --add /dev/sdc3
После чего дожидаемся синхронизации массива.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdc2[2] sdb1[1]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sdc3[2] sdb2[1]
233206784 blocks super 1.2 [2/1] [_U]
[>....................] recovery = 0.2% (619904/233206784) finish=31.2min speed=123980K/sec
bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>
Разметка дисков после добавления разделов в массив.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdc 8:32 0 2,7T 0 disk
├─sdc1 8:33 0 2M 0 part
├─sdc2 8:34 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 2,7T 0 disk
4. Удаление разделов второго диска из массивов
Помечаем разделы второго диска, которые используются в каждом массиве, как сбойные.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Удаляем разделы блочного устройства /dev/sda
из массивов.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
5. Копируем таблицу разметки GPT и синхронизируем массив
Для копирования таблицы разметки GPT воспользуемся утилитой sgdisk
, которая входит в пакет для работы с разделами дисков и таблицей GPT — gdisk
.
Установка gdisk
для CentOS:
yum install -y gdisk
Установка gdisk
для Debian/Ubuntu:
apt install -y gdisk
ВНИМАНИЕ: Для GPT первым указывается диск на который копируем разметку, вторым диском указывается диск с которого копируют разметку. Если перепутать диски, то изначально исправная разметка будет перезаписана и уничтожена.
Копируем таблицу разметки GPT.
sgdisk -R /dev/sdd /dev/sdc
Разметка дисков после переноса таблицы на диск /dev/sdd
.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 222,5G 0 part
sdc 8:32 0 2,7T 0 disk
├─sdc1 8:33 0 2M 0 part
├─sdc2 8:34 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 2,7T 0 disk
├─sdd1 8:49 0 2M 0 part
├─sdd2 8:50 0 1G 0 part
└─sdd3 8:51 0 2,7T 0 part
Далее добавляем каждый из разделов, участвующих в программных RAID-массивах.
mdadm /dev/md126 --add /dev/sdd2
mdadm /dev/md127 --add /dev/sdd3
Дожидаемся синхронизации массива.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdd2[3] sdc2[2]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk
md127 : active raid1 sdd3[3] sdc3[2]
233206784 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.0% (148224/233206784) finish=26.2min speed=148224K/sec
bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>
После копирования разметки GPT на второй новый диск, разметка будет выглядеть следующим образом.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 222,5G 0 part
sdc 8:32 0 2,7T 0 disk
├─sdc1 8:33 0 2M 0 part
├─sdc2 8:34 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 2,7T 0 disk
├─sdd1 8:49 0 2M 0 part
├─sdd2 8:50 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd3 8:51 0 2,7T 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
Далее устанавливаем GRUB на новые диски.
Установка для CentOS:
grub2-install /dev/sdX
Установка для Debian/Ubuntu:
grub-install /dev/sdX
где X
— буква диска, в нашем случае диски /dev/sdc
и /dev/sdd
.
Обновляем информацию о массиве.
Для CentOS:
mdadm --detail --scan --verbose > /etc/mdadm.conf
Для Debian/Ubuntu:
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
Обновляем образ initrd
:
Для CentOS:
dracut -f -v --regenerate-all
Для Debian/Ubuntu:
update-initramfs -u -k all
Обновляем конфигурацию GRUB.
Для CentOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
Для Debian/Ubuntu:
update-grub
После выполненных действий старые диски можно извлекать.
6. Расширение файловой системы (ext4) корневого раздела
Разметка дисков до расширения файловой системы после переноса системы на диски 2 x 3TB (RAID-1).
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
sdb 8:16 0 223,6G 0 disk
sdc 8:32 0 2,7T 0 disk
├─sdc1 8:33 0 2M 0 part
├─sdc2 8:34 0 1G 0 part
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 part
└─md126 9:126 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 2,7T 0 disk
├─sdd1 8:49 0 2M 0 part
├─sdd2 8:50 0 1G 0 part
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdd3 8:51 0 2,7T 0 part
└─md126 9:126 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
Сейчас разделы /dev/sdc3
и /dev/sdd3
занимают 2.7 TB. Так как мы создавали новую разметку дисков с таблицей GPT, то размер 3 раздела был сразу задан на максимально возможное дисковое пространство, расширять раздел в данном случае не требуется.
Необходимо:
- Расширить массив md126,
- Расширить PV (physical volume),
- Расширить LV (logical-volume) vg0-root,
- Расширить файловую систему.
1. Расширяем массив md126
до максимума.
mdadm --grow /dev/md126 --size=max
После расширения массива md126
размер занимаемого пространства увеличился до 2.7 TB.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
sdb 8:16 0 223,6G 0 disk
sdc 8:32 0 2,7T 0 disk
├─sdc1 8:33 0 2M 0 part
├─sdc2 8:34 0 1G 0 part
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 part
└─md126 9:126 0 2,7T 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 2,7T 0 disk
├─sdd1 8:49 0 2M 0 part
├─sdd2 8:50 0 1G 0 part
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdd3 8:51 0 2,7T 0 part
└─md126 9:126 0 2,7T 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
Расширяем physical volume.
Перед расширением проверяем текущее значение занимаемого пространства PV /dev/md126
.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- 222,40g 0
Расширяем PV следующем командой.
pvresize /dev/md126
Проверяем выполненное действие.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- <2,73t 2,51t
Расширяем logical volume vg0-root.
После расширения PV проверим занимаемое пространство VG.
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- <2,73t 2,51t
Проверим занимаемое LV пространство.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root vg0 -wi-ao---- <206,41g
swap vg0 -wi-ao---- <16,00g
Том vg0-root занимает 206.41 GB.
Расширяем LV до максимума дискового пространства.
lvextend -l +100%FREE /dev/mapper/vg0-root
Проверяем пространство LV после расширения.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root vg0 -wi-ao---- 2,71t
swap vg0 -wi-ao---- <16,00g
Расширяем файловую систему (ext4).
Проверим текущий размер файловой системы.
[root@localhost ~]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 9,6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/vg0-root 204G 1,4G 192G 1% /
/dev/md127 1007M 141M 816M 15% /boot
tmpfs 3,2G 0 3,2G 0% /run/user/0
Том /dev/mapper/vg0-root занимает 204 GB после расширения LV.
Расширяем файловую систему.
resize2fs /dev/mapper/vg0-root
Проверяем размер файловой системы после её расширения.
[root@localhost ~]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 9,6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/vg0-root 2,7T 1,4G 2,6T 1% /
/dev/md127 1007M 141M 816M 15% /boot
tmpfs 3,2G 0 3,2G 0% /run/user/0
Размер файловой системы увеличен на весь объём тома.
Resize a Linux Root Partition Without Rebooting
Introduction
A typical Linux server deployed from a ProfitBricks supplied image has a single storage volume, /dev/vda
. If we take a look at that using fdisk
we will see that the disk is divided into two partitions. The first one, /dev/vda1
, is the boot partition where the OS resides. The second partition, /dev/vda2
, is configured as swap space.
root@debian:~# fdisk -l /dev/vda
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 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 Disklabel type: dos Disk identifier: 0x0041f8a8
Device Boot Start End Sectors Size Id Type /dev/vda1 2048 96471039 96468992 46G 83 Linux /dev/vda2 96471040 104857599 8386560 4G 82 Linux swap / Solaris
In the example above, the total 50 GB storage volume is split into 46 GB usable space and 4 GB for swap. What if after provisioning we find that 46 GB of disk space is not enough but we prefer not to add an additional storage volume? The goal is to increase the amount of disk space available on the root filesystem. This can be accomplished with minimal disruption. We do not need to reboot the server!
Requirements
- A Linux Server created from a ProfitBricks supplied image.
- SSH or console access (via the DCD) to the Linux Server.
- The
partprobe
command. Can be installed from theparted
package on most Linux distributions. - The
fdisk
,swapoff
,mkswap
,swapon
, andresize2fs
commands. Likely available by default. - A current snapshot or other backup of the system you are working on. Just to be safe!
Provision Additional Space
To increase the size of the hard drive, go into the DCD (Data Center Designer) and upscale the drive.
After you have increased the amount of drive space, click on «provisioning» to process the change. Takes around a minute and your hard drive is bigger.
We then need to switch off the swap — so make sure you can live a few minutes without swap space:
root@debian:~# swapoff -a
Once swap has been disabled, we need to reconfigure the partitions using fdisk
:
We will delete the two existing partitions first. We run fdisk /dev/vda
and then use the d
command to delete partition 2, and then delete partition 1. Follow the example below:
root@debian:~# fdisk /dev/vda
Command (m for help): d Partition number (1,2, default 2):
Partition 2 has been deleted.
Command (m for help): d Selected partition 1 Partition 1 has been deleted.
Now we recreate our partitions. In the example we have 4 GB of swap space. So we need to keep at least that much space available for the new swap partition.
Recreate /dev/vda1
first. Press n to create a new partition. Enter p to create a primary partition. We can press Enter to accept the default value of 2048 for the first sector. Then enter a size for the partition. You can enter a value in GB, so if we are increasing the disk to 100 GB, we subtract our 4 GB for swap, and enter +96G for 96 GB.
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-209715199, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): +96G
Created a new partition 1 of type 'Linux' and of size 96 GiB.
Now we recreate the swap partition following a simalar process. Press n and then p to create a new primary partition. Press Enter to accept the default value for «First sector». We can also press Enter again to accept the default value for «Last sector».
Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): p Partition number (2-4, default 2): 2 First sector (201328640-209715199, default 201328640): Last sector, +sectors or +size{K,M,G,T,P} (201328640-209715199, default 209715199):
Created a new partition 2 of type 'Linux' and of size 4 GiB.
Since this second partition is going to be used for swap space, we need to change the partition type. This can be done by pressing t at the fdisk
prompt. We then press 2 to select the second partition. If you want to see the list of available partition types, press L, otherwise enter 82 to select «Linux swap / Solaris».
Command (m for help): t Partition number (1,2, default 2): 2 Partition type (type L to list all types): 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 or 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 ea Rufus alignment e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT 10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/ 11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b 12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor 14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor 16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fd Linux raid auto 1c Hidden W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep 1e Hidden W95 FAT1 80 Old Minix be Solaris boot ff BBT Partition type (type L to list all types): 82
fdisk
helpfully informs us that we have changed the partition type with the message:
Changed type of partition 'Linux' to 'Linux swap / Solaris'.
After that, we save using the w
command and are returned to a shell prompt:
Command (m for help): w
You may get a message like this before the shell prompt:
The partition table has been altered. Calling ioctl() to re-read partition table. Re-reading the partition table failed.: 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).
Lets forgo rebooting and instead tell the kernel about the new partitions using partprobe
:
root@debian:~# partprobe
We should be returned to the shell prompt with no output from partprobe
.
Now we need to resize our filesystem on /dev/vda1
:
root@debian:~# resize2fs /dev/vda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/vda1
is now 25165824 (4k) blocks long.
Initialize the new swap location of /dev/vda2
:
root@debian:~# mkswap /dev/vda2
Setting up swapspace version 1, size = 4193276 KiB
no label, UUID=c55c25a2-a386-4653-8455-4d9030586dd2
Finally we edit /etc/fstab
and replace the old UUID with the new one returned in the output of the mkswap
command. The line to change has no value for «mount point» and has «type» set to swap.
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=332f8fb5-ff1f-4297-b512-f2c93a277296 / ext4 errors=remount-ro 0 1
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
UUID=c55c25a2-a386-4653-8455-4d9030586dd2 none swap sw 0 0
After editing /etc/fstab
, we need to enable swap again:
root@debian:~# swapon -a
Verify
We can verify the new larger disk size by utilizing df
and/or fdisk
.
Device Boot Start End Sectors Size Id Type
/dev/vda1 2048 201328639 201326592 96G 83 Linux
/dev/vda2 201328640 209715199 8386560 4G 82 Linux swap / Solaris
We can also confirm that the server was not rebooted by looking at the output of uptime
:
$ uptime
23:54:21 up 7 days, 1:15, 1 user, load average: 0.00, 0.01, 0.05
Summary
We have successfully increased the amount of disk space available on our Linux server.
Reference
https://devops.ionos.com/tutorials/increase-the-size-of-a-linux-root-partition-without-rebooting/
OR
https://web.archive.org/web/20201113021238/https://devops.ionos.com/tutorials/increase-the-size-of-a-linux-root-partition-without-rebooting/