Как изменить размер системного диска linux

Шпаргалка по увеличению дискового пространства на компьютерах с Linux. Рассмотрена работа с несколькими файловыми системами и типами разделов.

Обновлено Обновлено: 09.01.2023
Опубликовано Опубликовано: 22.06.2017

В инструкции рассмотрены сценарии расширения дискового пространства разделов в Linux без потери информации.

Принцип увеличения диска:

  1. Расширение раздела.
  2. Изменение размера файловой системы.

В зависимости от типа раздела и файловой системы, действия различаются.

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

Расширение разделов
    Обычных
    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:

Изменение раздела в GParted

В открывшемся окне с помощью мышки или форм меняем размер раздела:

Уменьшение или увеличение пространства в GParted

Нажимаем кнопку Resize/Move.

Проверяем изменения в окне программы и сохраняем настройки кнопкой «Apply All Operations»:

Сохранение изменение в GParted

Изменение размеров логических томов в Linux осуществляется сложнее, нежели в Windows, что связано с особенностями использования консольных команд и доступных графических приложений. Однако эта задача под силу любому пользователю, и приведенные далее инструкции помогут разобраться с тем, как выполнить ее быстро.

Работа с разделами в GParted

Не все юзеры Linux предпочитают использовать терминал, когда можно обойтись без него. К тому же новички в этой операционной системе не особо желают разбираться с активацией сложных команд. Поэтому в качестве первого варианта предлагаю ознакомиться с использованием программы GParted, которая представляет собой полноценную систему управления дисками.

GParted по умолчанию установлена в большинстве популярных дистрибутивов и их оболочках. Однако если при запуске окажется, что она отсутствует, используйте менеджер приложений или пользовательские репозитории для стандартной процедуры инсталляции. После этого приступайте к выполнению следующей инструкции.

  1. Запустите приложение через терминал, введя там gparted, или нажмите по созданному значку. В главном окне сразу можно выбрать диск, размер которого необходимо изменить, и нажать по кнопке «Изменить размер/Переместить».Переход к изменению размера диска через GParted в Linux
  2. Отобразится новое окно, где вы можете добавить свободное пространство к диску или же сжать том, освободив тем самым определенное количество мегабайт. Как только выставите новые настройки, подтвердите действие, чтобы закрыть это окно.Выбор нового размера для диска через GParted в Linux
  3. В главном меню разверните всплывающее меню «Редактировать» и нажмите «Применить все операции».Запуск процесса внесения изменений в размер диска через GParted в Linux
  4. В новом окне следите за прогрессом операции, а по ее завершении можете убедиться в том, что размер был успешно изменен.Процесс внесения изменений в размер диска через GParted в Linux

Если все пространство уже распределено по разделам, учитывайте, что сначала его придется вернуть к нераспределенному, сжав один или несколько логических томов. Затем свободные мегабайты уже можно будет отнести к новому тому, расширив его.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Меняем размер разделов диска с помощью fdisk

Более гибкий, но сложный вариант изменения размера диска в Linux подразумевает использование консольной утилиты fdisk. Для выполнения расширения тома на все свободное пространство понадобится выполнить более десятка разных действий, но на все про все уйдет не больше 10 минут.

Просмотр списка дисков перед изменением размера в Linux

  1. Если вы пока не знаете, под какими метками располагается сам диск и его логические тома, используйте команду sudo fdisk -l, отобразив список со всеми секторами.
  2. Используйте команду umount /dev/sdb2 для размонтирования раздела. Замените его название на необходимое и учитывайте, что корневой том размонтировать так просто нельзя, понадобится загрузка с LiveCD.
  3. Далее укажите fdisk /dev/sdb, подключившись тем самым к указанному диску.
  4. Посмотрите все разделы, введя p и нажав на Enter.
  5. За удаление отвечает d; после активации этого атрибута понадобится ввести цифру раздела, который вы хотите удалить (при этом форматирования не происходит, все данные сохраняются).
  6. Последовательно активируйте n (новый раздел), p (основной) и 2 (замените на номер тома). При появлении уведомления о создании первого и последнего сектора подтверждайте операцию нажатием на Enter.
  7. Проверьте список томов еще раз через 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 20 увеличение системного раздела

Предположим, что у нас есть виртуальная машина с установленной операционной системой 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. Я делаю это на горячую на свой страх и риск.

  1. Делаем бекап машины! (не могу не написать этого)
  2. Увеличиваем объем диска в гипервизоре (этот пункт не затрагиваем)
  3. Сканируем диски в системе
  4. Меняем размер раздела
  5. Увеличиваем файловую систему

Сканируем диски в системе

После увеличения объема диска есть вероятность того, что в системе мы новый объем сразу не увидим. Проверяем. Я использую команду 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 -lFix


💡 Подписывайтесь на Телеграм-канал, чтобы не пропускать новые статьи

  • Телеграм канал 📺
  • Чат 🤘🏼

Всем привет. В преддверии старта новой группы курса «Администратор 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]

Необходимо:

  1. Расширить раздел 2 на каждом из дисков,
  2. Расширить массив md127,
  3. Расширить PV (physical volume),
  4. Расширить LV (logical-volume) vg0-root,
  5. Расширить файловую систему.

Используя утилиту 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 раздела:

  1. Раздел bios_grub размером 2MiB для совместимости GPT с BIOS,
  2. Раздел для RAID массива, который будет смонтирован в /boot.
  3. Раздел для 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 раздела был сразу задан на максимально возможное дисковое пространство, расширять раздел в данном случае не требуется.

Необходимо:

  1. Расширить массив md126,
  2. Расширить PV (physical volume),
  3. Расширить LV (logical-volume) vg0-root,
  4. Расширить файловую систему.

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 the parted package on most Linux distributions.
  • The fdisk, swapoff, mkswap, swapon, and resize2fs 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/

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить размер сетки excel
  • Как изменить размер серебряного кольца
  • Как изменить размер сектора жесткого диска
  • Как изменить размер сектора ssd диска
  • Как изменить размер сводной таблицы excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии