Linux как изменить размер разделов

Изменяем раздел диска в Linux: как увеличить, уменьшить, создать или удалить раздел в файловой системе Lnux. Инструкция по изменению размеров логических томов в Linux с помощью gparted и fdisk. Без потери данных!

Изменение размеров логических томов в 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

После ввода последней снова используйте последовательную активацию букв так, как это было показано в предыдущей инструкции, чтобы создать новый раздел. Кроме того, не забудьте смонтировать его обратно!

Обновлено Обновлено: 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

Частая задача в моей текущей работе — увеличить объем раздела на виртуальной машине без выключения машины (на горячую). Под рукой постоянно держу небольшой 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

Размер файловой системы увеличен на весь объём тома.

У вас есть раздел жесткого диска на вашем компьютере с Linux, который вы хотели бы увеличить или уменьшить? Не знаете, как изменить размер разделов жесткого диска в Linux? Следуйте этому руководству, и вскоре вы узнаете, как использовать редактор разделов Gparted для изменения размера разделов жесткого диска в Linux!

Измените размер раздела, не связанного с ОС, с помощью Gparted

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

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

Прежде чем мы перейдем к тому, как изменить размер разделов, не связанных с ОС, вы должны установить приложение Gparted в вашей системе Linux. Чтобы начать установку, откройте окно терминала, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре. Затем следуйте командам установки, которые соответствуют используемой вами ОС.

Ubuntu

Пользователи Ubuntu могут установить приложение Gparted непосредственно из основного репозитория программного обеспечения Ubuntu с помощью следующей команды установки Apt.

sudo apt install gparted

Debian

Gparted находится в репозитории программного обеспечения «Debian Main» для всех версий Debian Linux. Чтобы установить его, используйте команду Apt-get ниже.

sudo apt-get install gparted

Arch Linux

Для Arch Linux приложение Gparted находится в «Дополнительном» репозитории программного обеспечения. Чтобы установить его в вашей системе Arch, убедитесь, что репозиторий «Extra» включен. Затем используйте команду Pacman ниже.

sudo pacman -S gparted

Fedora

Gparted доступен пользователям Fedora в основном репозитории Fedora. Чтобы установить его, используйте следующую команду Dnf.

sudo dnf install gparted

OpenSUSE

В OpenSUSE Linux вы найдете приложение Gparted в репозитории «Oss all». Чтобы установить его, используйте команду Zypper ниже.

sudo zypper install gparted

Как только приложение Gparted будет установлено на вашем ПК с Linux, нажмите Alt + F2, чтобы открыть панель быстрого запуска, затем выполните команду ниже, чтобы открыть только что установленное приложение.

gparted

Или же

pkexec gparted

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

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

Выберите параметр «изменить размер» в контекстном меню, и появится раздел «Изменить размер / переместить». Отсюда используйте графическое изменение размера, чтобы перетащить раздел, чтобы увеличить или уменьшить его. Или найдите «Новый размер (МиБ)» и умножьте его на 1024, чтобы получить точный размер. Например, чтобы изменить размер раздела с 10 ГБ до 5 ГБ, вы должны:

1024 x 5 = 5120

Когда вас устраивает новый размер раздела жесткого диска, нажмите кнопку «Изменить размер / переместить», а затем кнопку с галочкой вверху, чтобы применить изменения.

Измените размер разделов вашей ОС с помощью Gparted

Требуется изменить размер раздела на жестком диске Linux, содержащего текущую операционную систему Linux? Если это так, вы должны загрузить живой диск Gparted, так как невозможно изменить размер используемых в настоящее время разделов.

Чтобы получить доступ к живому диску Gparted, откройте окно терминала, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре. Затем используйте инструмент загрузки wget, чтобы получить последний живой образ Gparted.

wget https://downloads.sourceforge.net/gparted/gparted-live-1.0.0-3-amd64.iso

Когда загрузка файла ISO Gparted live ISO будет завершена, подключите USB-накопитель к USB-порту и используйте Инструмент для обработки изображений Etcher для создания загрузочного живого диска.

После создания загрузочного живого диска Gparted перезагрузите компьютер и загрузите настройки BIOS. Просмотрите настройки BIOS и настройте его для загрузки с USB-накопителя Gparted.

Как только сеанс Gparted live загружается с вашего USB-накопителя, позвольте ему загрузиться. Когда это произойдет, выполните следующие операции, указанные в списке ниже.

Для «Настройка данных консоли» выберите «Не трогать раскладку».
Для языка введите число из списка выше. Или нажмите Enter, чтобы выбрать значение по умолчанию, которое обнаружила ОС.
В поле «Какой режим вы предпочитаете» введите «startx» и нажмите клавишу Enter.

Вскоре после записи «startx» в оболочке на экране появится графическая среда вместе с инструментом разбиения Gparted. Используя инструмент, щелкните раскрывающееся меню в правом верхнем углу и выберите диск, с которым хотите работать.

После того, как вы выбрали жесткий диск, с которым хотите работать, найдите раздел жесткого диска, размер которого вы хотите изменить, и щелкните его правой кнопкой мыши. Затем просмотрите контекстное меню, найдите «Изменить размер / переместить» и щелкните его, чтобы открыть меню «Изменить размер / переместить» раздела.

Внутри меню «Изменить размер / Переместить» используйте графический инструмент, чтобы перетащить раздел жесткого диска, чтобы сделать его меньше или больше. Либо нажмите «Новый размер (МиБ)» и умножьте число 1024 на количество ГБ, чтобы получить точный размер.

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

Перезагрузитесь, когда закончите работу с живым диском Gparted. После повторного входа в ОС размер раздела должен быть изменен до указанного вами размера!

На данный момент Ext4 — это самая популярная файловая система для операционных систем семейства Linux, она используется как на серверах, так и на домашних компьютерах, и там и там часто возникает необходимость изменить размер раздела.

В сегодняшней статье мы рассмотрим как расширить раздел Ext4 в графическом интерфейсе или с помощью терминала.

Шаг 1. Увеличение раздела

Если вы хотите изменить размер корневого раздела файловой системы, то вам обязательно надо будет загрузится с LiveCD иначе вы не сможете редактировать примонтированный раздел. Если это не системный раздел, то его можно отмонтировать и затем изменять. Для увеличения раздела будем использовать parted. Сначала запустите утилиту:

sudo parted /dev/sda

Здесь /dev/sda — это ваш диск, один из разделов которого вы хотите расширить. Сначала выведите текущую таблицу разделов, для этого выполните:

(parted) print

Как видите, здесь есть только один раздел и он занимает 16 гигабайт, а всего на диске доступно 21,7 гигабайт. Чтобы расширить Ext4 и занять всё это пространство используйте команду resizepart:

(parted) resizepart 1 21,7GB

Первый параметр, это номер раздела, который вы узнали из предыдущей команды, а второй, размер раздела, доступный размер тоже выводится в предыдущей команде. Теперь утилиту можно закрыть:

(parted) q

Шаг 2. Увеличение файловой системы

Осталось увеличить самую файловую систему до конца раздела. Для этого воспользуемся утилитой resize2fs. Она может работать даже когда файловая система смонтирована.

sudo resize2fs /dev/sda1

Утилита по умолчанию увеличивает файловую систему на всё доступное пространство раздела.

Шаг 3. Проверка на ошибки

После этого не помешает проверить всё на ошибки с помощью fsck:

sudo e2fsck -f /dev/sda1

Шаг 4. Монтирование

Затем можно монтировать полученную файловую систему и проверять её размер, как видите, теперь она занимает 20 гигабайт:

df -h | grep /dev/sda1

Как уменьшить размер Ext4

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

Шаг 1. Проверка файловой системы

Перед тем, как уменьшить размер Ext4 надо проверить её на ошибки. Если файловая система смонтирована, размонтируйте её:

sudo umount /dev/sda1

Для этого выполните:

sudo e2fsck -f /dev/sda1

Шаг 2. Уменьшение файловой системы

Уменьшение размера файловой системы тоже выполняется с помощью resize2fs. Но теперь утилите надо передать в параметрах новый размер файловой системы. Например, 16 гигабайт:

resize2fs /dev/sda1 16G

Размер можно указывать в килобайтах (K), мегабайтах (M) или гигабайтах (G). Теперь вы знаете как изменить размер Ext4. В выводе утилита вы увидите сколько теперь блоков занимает файловая система. Это число надо умножить на 4096 чтобы получить размер файловой системы в байтах. Цифра четыре взята потому что размер одного блока в Ext4 равняется четырём килобайтам. Например, в данном случае это будет 17179869184 байт или 16 гигабайт:

Теперь надо уменьшить размер раздела с помощью parted. Но значение желательно брать чуть больше, для безопасности, потому, что если вы зацепите пространство, где расположена файловая система, то работать с ней вы больше не сможете.

Шаг 3. Уменьшение раздела

Запустите parted и используйте ту же команду resizepart чтобы уменьшить размер раздела:

sudo parted /dev/sda

Затем:

(parted) resizepart 1 16,1GB

Чтобы закрыть программу выполните:

(parted) q

Шаг 4. Монтирование

После этого файловую систему можно монтирововать и проверять её размер:

sudo mount /dev/sda1 /mnt

df -h | grep /dev/sda1

Выводы

В этой статье мы рассмотрели как уменьшить раздел Ext4, а также как его увеличить через терминал. Если вы работаете в графическом интерфейсе, то всё выполняется гораздо проще. Для этого можно воспользоваться утилитой Gparted. Она автоматически меняет как размер раздела, так и файловой системы. К тому же программа может не только менять положение конца раздела, но и начала, иногда это может быть полезно. А как вы меняете размер файловой системы? Напишите в комментариях!

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

Понравилась статья? Поделить с друзьями:
  • Loyalty error ржд что это
  • Loyalty error приложение ржд
  • Lowlife error мув
  • Lowlevelfatalerror file unknown line 198 как исправить
  • Lowlevel fatal error