It ferfangen fan lytsere skiven mei gruttere skiven yn Linux

Всем привет. В преддверии старта новой группы курса "Linux behearder" публикуем полезный материал, написанный нашим студентом, а также наставником на курсах, специалистом технической поддержки корпоративных продуктов REG.RU — Романом Травиным.

В данной статье будет рассмотрены 2 случая замены дисков и переноса информации на новые диски большего объёма с дальнейшим расширением массива и файловой системы. Первый случай будет касаться замены дисков c одноименной разметкой MBR/MBR либо GPT/GPT, второй случай касается замены дисков с разметкой MBR на диски объёмом более 2 TB, на которые потребуется ставить разметку GPT с разделом biosboot. В обоих случаях диски, на которые переносим данным, уже установлены в сервер. Файловая система, используемая для корневого раздела — ext4.

Случай 1: Замена дисков меньшего объёма на диски большего объёма (до 2TB)

In taak: Заменить текущие диски на диски большего объёма (до 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, который используется как fysike folume для VG группы vg0.

1. Удаление разделов диска из массивов

Kontrolearje de steat fan 'e array

[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 foar ruillist en de root fan it bestânsysteem) - bestiet út /dev/sda2 и /dev/sdb2.

Wy markearje de partysjes fan 'e earste skiif dy't brûkt wurde yn elke array as min.

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

В данной команде earst drive wurdt oanjûn с wa копируется разметка, вторым — куда копировать.

ATTENTION: Foar GPT earst drive wurdt oanjûn op hokker копировать разметку, de twadde skiif jout de skiif oan fan hokker копировать разметку. Если перепутать диски, то изначально исправная разметка будет перезаписана и уничтожена.

Копирование таблицы разметки для 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. It tafoegjen fan partysjes fan de nije skiif oan de rige

Добавим разделы диска в соответствующие массивы.

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

Parameter -n указывает с каким интервалов в секундах необходимо выполнять команду для проверки прогресса.

Повторяем пункты 1 — 3 для следующего заменяемого диска.

Wy markearje de partysjes fan 'e twadde skiif dy't brûkt wurde yn elke array as min.

mdadm /dev/md126 --fail /dev/sdb1

mdadm /dev/md127 --fail /dev/sdb2

Fuortsmite blok apparaat partysjes /dev/sdb út arrays.

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 на новые диски

Foar CentOS:

grub2-install /dev/sdX

Foar Debian/Ubuntu:

grub-install /dev/sdX

wêr X — буква блочного устройства. В данном случае установить GRUB необходимо на /dev/sdc и /dev/sdd.

6. Triemsysteemútwreiding (ext4) fan 'e root-partysje

На новых дисках /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]

It is needich:

  1. Расширить раздел 2 на каждом из дисков,
  2. Wreidzje array md127,
  3. PV útwreidzje (fysikaal folume),
  4. LV útwreidzje (logysk-volume) vg0-root,
  5. Wreidzje it bestânsysteem út.

Используя утилиту skieden расширим раздел /dev/sdc2 до максимального значения. Выполняем команду parted /dev/sdc (1) и просматриваем текущую таблицу разделов командой p (2).

It ferfangen fan lytsere skiven mei gruttere skiven yn Linux

Как видно, конец раздела 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 oant it maksimum.

mdadm --grow /dev/md127 --size=max

Wy kontrolearje dat de array útwreide is. No is syn grutte 930.4 GB wurden.

[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]

It útwreidzjen fan de útwreiding fysike folume. Foardat wy útwreidzje, litte wy de hjoeddeistige steat fan 'e PV kontrolearje.

[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   ]

As te sjen is, PV /dev/md127 brûkt 222.4 GB romte.

Wy wreidzje PV út mei it folgjende kommando.

pvresize /dev/md127

Kontrolearje it resultaat fan PV útwreiding.

[

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   ]

Wreidzjen logyske folume. Foardat wy útwreidzje, litte wy de hjoeddeistige steat fan LV (1) kontrolearje.

[root@localhost ~]# lvscan
  ACTIVE            '/dev/vg0/swap' [<16,00 GiB] inherit
  ACTIVE            '/dev/vg0/root' [<206,41 GiB] inherit

LV /dev/vg0/root brûkt 206.41 GB.

Wy wreidzje LV út mei it folgjende kommando (2).

lvextend -l +100%FREE /dev/mapper/vg0-root

Wy kontrolearje de foltôge aksje (3).

[root@localhost ~]# lvscan 
  ACTIVE            '/dev/vg0/swap' [<16,00 GiB] inherit
  ACTIVE            '/dev/vg0/root' [<914,39 GiB] inherit

Sa't jo sjen kinne, nei it útwreidzjen fan LV, waard it bedrach fan besette skiifromte 914.39 GB.

It ferfangen fan lytsere skiven mei gruttere skiven yn Linux

It LV-volume is ferhege (4), mar it bestânsysteem beslacht noch 204 GB (5).

1. Litte wy it triemsysteem útwreidzje.

resize2fs /dev/mapper/vg0-root

Nei't it kommando is útfierd, kontrolearje wy de grutte fan it bestânsysteem.

[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

De grutte fan it rootbestânsysteem sil tanimme nei 900 GB. Nei it foltôgjen fan de stappen kinne jo de âlde skiven fuortsmite.

Geval 2: Ferfange lytsere skiven mei gruttere skiven (mear dan 2TB)

De taak: Ferfange de hjoeddeiske skiven mei gruttere skiven (2 x 3TB) wylst de ynformaasje behâldt. Yn dit gefal, wy hawwe 2 x 240 GB SSD (RAID-1) skiven mei it systeem ynstallearre en 2 x 3 TB SATA skiven dêr't it systeem moat wurde oerdroegen. Aktuele skiven brûke de MBR partition tabel. Sûnt nije skiven hawwe in kapasiteit grutter as 2 TB, se sille moatte brûke in GPT tafel, sûnt MBR kin net wurkje mei skiven grutter as 2 TB.

Litte wy nei de hjoeddeistige skiifyndieling sjen.

[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  

Lit ús kontrolearje de partition tabel brûkt op 'e skiif /dev/sda.

[root@localhost ~]# fdisk -l /dev/sda | grep 'Disk label type'
Disk label type: dos

Op disk /dev/sdb in ferlykbere partition tabel wurdt brûkt. Litte wy de brûkte skiifromte op it systeem kontrolearje.

[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

Sa't jo sjen kinne, nimt de root fan it bestânsysteem 204 GB op. Litte wy de hjoeddeistige tastân fan 'e software RAID-array kontrolearje.

1. It ynstallearjen fan in GPT partition tafel en skiif partitioning

Litte wy de skiifyndieling kontrolearje per sektor.

[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

Op de nije 3TB skiif moatte wy 3 partysjes oanmeitsje:

  1. Seksje bios_grub 2MiB grutte foar GPT BIOS kompatibiliteit,
  2. De partysje foar de RAID-array dy't sil wurde monteard yn /boot.
  3. De partysje foar de RAID-array wêrop d'r sil wêze LV root и LV ruilje.

Ynstallaasje fan it nut skieden ploech yum install -y parted (foar CentOS), apt install -y parted (foar Debian/Ubuntu).

Mei help fan skieden Litte wy de folgjende kommando's útfiere om de skiif te dielen.

Fier it kommando út parted /dev/sdc en gean nei de bewurkingsmodus foar skiiflayout.

Meitsje in GPT partition tabel.

(parted) mktable gpt

Meitsje 1 seksje bios_grub seksje en set der in flagge foar.

(parted) mkpart primary 1MiB 3MiB
(parted) set 1 bios_grub on  

Meitsje partition 2 en set der in flagge foar. De partysje sil brûkt wurde as in blok foar in RAID-array en ynstalleare /boot.

(parted) mkpart primary ext2 3MiB 1028MiB
(parted) set 2 boot on

Wy meitsje in 3e seksje, dy't ek sil wurde brûkt as in arrayblok wêryn LVM sil sitte.

(parted) mkpart primary 1028MiB 100% 

Yn dit gefal is it net nedich om de flagge yn te stellen, mar as it nedich is, kin it ynsteld wurde mei it folgjende kommando.

(parted) set 3 raid on

Wy kontrolearje de makke tabel.

(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

Wy tawize in nije willekeurige GUID oan de skiif.

sgdisk -G /dev/sdd

2. It fuortsmiten fan partysjes fan de earste skiif út arrays

Kontrolearje de steat fan 'e array

[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>

It systeem brûkt 2 arrays: md126 (mount punt / boot) - bestiet út /dev/sda1 и /dev/sdb1, md127 (LVM foar swap en de root fan it bestânsysteem) - bestiet út /dev/sda2 и /dev/sdb2.

Wy markearje de partysjes fan 'e earste skiif dy't brûkt wurde yn elke array as min.

mdadm /dev/md126 --fail /dev/sda1

mdadm /dev/md127 --fail /dev/sda2

Fuortsmite blok apparaat partysjes /dev/sda út arrays.

mdadm /dev/md126 --remove /dev/sda1

mdadm /dev/md127 --remove /dev/sda2

Kontrolearje de tastân fan 'e array nei it fuortsmiten fan de skiif.

[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. It tafoegjen fan partysjes fan de nije skiif oan de rige

De folgjende stap is om partysjes fan 'e nije skiif ta te foegjen oan de arrays foar syngronisaasje. Litte wy nei de hjoeddeistige steat fan skiifyndieling sjen.

[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  

Seksje /dev/sdc1 it is bios_grub seksje en is net belutsen by it meitsjen fan arrays. De arrays sille allinich brûke /dev/sdc2 и /dev/sdc3. Wy foegje dizze seksjes ta oan de oerienkommende arrays.

mdadm /dev/md126 --add /dev/sdc2

mdadm /dev/md127 --add /dev/sdc3

Dan wachtsje wy oant de array syngronisearret.

[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>

Skiifpartisjonearring nei it tafoegjen fan partysjes oan 'e array.

[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. It fuortsmiten fan partysjes fan de twadde skiif út arrays

Wy markearje de partysjes fan 'e twadde skiif dy't brûkt wurde yn elke array as min.

mdadm /dev/md126 --fail /dev/sdb1

mdadm /dev/md127 --fail /dev/sdb2

Fuortsmite blok apparaat partysjes /dev/sda út arrays.

mdadm /dev/md126 --remove /dev/sdb1

mdadm /dev/md127 --remove /dev/sdb2

5. Kopiearje de GPT-opmaaktabel en syngronisearje de array

Om de GPT-markuptabel te kopiearjen sille wy it nut brûke sgdisk, dat is opnaam yn it pakket foar wurkjen mei skiifpartysjes en in GPT-tabel - gdisk.

ynstelling gdisk foar CentOS:

yum install -y gdisk

ynstelling gdisk foar Debian/Ubuntu:

apt install -y gdisk

ATTENTION: Foar GPT earst drive wurdt oanjûn op hokker kopiearje de markup, de twadde skiif jout de skiif oan fan hokker kopiearje de markup. As jo ​​de skiven mingje, sil de yn earste ynstânsje goede dieling oerskreaun wurde en ferneatige.

Kopiearje de GPT-markuptabel.

sgdisk -R /dev/sdd /dev/sdc

Skiif partitioning nei it oerdragen fan in tabel nei skiif /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  

Dêrnei foegje wy elk fan 'e partysjes ta dy't dielnimme oan software RAID-arrays.

mdadm /dev/md126 --add /dev/sdd2

mdadm /dev/md127 --add /dev/sdd3

Wy wachtsje op de array om te syngronisearjen.

[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>

Nei it kopiearjen fan de GPT-partysje nei de twadde nije skiif, sil de partysje der sa útsjen.

[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]

Ynstallearje dan GRUB op 'e nije skiven.

Ynstallaasje foar CentOS:

grub2-install /dev/sdX

Ynstallaasje foar Debian/Ubuntu:

grub-install /dev/sdX

wêr X - rydletter, yn ús gefal rydt /dev/sdc и /dev/sdd.

Wy update ynformaasje oer de array.

Foar CentOS:

mdadm --detail --scan --verbose > /etc/mdadm.conf

Foar Debian/Ubuntu:

echo "DEVICE partitions" > /etc/mdadm/mdadm.conf

mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf

It bywurkjen fan de ôfbylding initrd:
Foar CentOS:

dracut -f -v --regenerate-all

Foar Debian/Ubuntu:

update-initramfs -u -k all

Wy aktualisearje de GRUB-konfiguraasje.

Foar CentOS:

grub2-mkconfig -o /boot/grub2/grub.cfg

Foar Debian/Ubuntu:

update-grub

Nei it foltôgjen fan de stappen kinne de âlde skiven fuortsmiten wurde.

6. Triemsysteemútwreiding (ext4) fan 'e root-partysje

Skiif partitioning foardat triemsysteem útwreiding nei it migrearjen fan it systeem nei 2 x 3TB skiven (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]

No seksjes /dev/sdc3 и /dev/sdd3 besette 2.7 TB. Om't wy in nije skiifyndieling makke hawwe mei in GPT-tabel, waard de grutte fan partysje 3 fuortendaliks ynsteld op de maksimale mooglike skiifromte; yn dit gefal is d'r gjin needsaak om de partysje út te wreidzjen.

It is needich:

  1. Wreidzje array md126,
  2. PV útwreidzje (fysikaal folume),
  3. LV útwreidzje (logysk-volume) vg0-root,
  4. Wreidzje it bestânsysteem út.

1. Wreidzje de array út md126 oant it maksimum.

mdadm --grow /dev/md126 --size=max

Nei array útwreiding md126 de grutte fan 'e besette romte is tanommen nei 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]

Wreidzjen fysike folume.

Kontrolearje foardat jo útwreidzje de hjoeddeistige wearde fan 'e besette romte PV /dev/md126.

[root@localhost ~]# pvs
  PV         VG  Fmt  Attr PSize   PFree
  /dev/md126 vg0 lvm2 a--  222,40g    0 

Wy wreidzje PV út mei it folgjende kommando.

pvresize /dev/md126

Wy kontrolearje de foltôge aksje.

[root@localhost ~]# pvs
  PV         VG  Fmt  Attr PSize  PFree
  /dev/md126 vg0 lvm2 a--  <2,73t 2,51t

Wreidzjen logysk folume vg0-root.

Nei it útwreidzjen fan PV, litte wy de besette romte VG kontrolearje.

[root@localhost ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree
  vg0   1   2   0 wz--n- <2,73t 2,51t

Lit ús kontrolearje de romte beset troch 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            

It vg0-rootvolumint beslacht 206.41 GB.

Wy wreidzje LV út nei de maksimale skiifromte.

lvextend -l +100%FREE /dev/mapper/vg0-root 

Kontrolearje de LV romte nei útwreiding.

[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

It bestânsysteem útwreidzje (ext4).

Litte wy de hjoeddeistige grutte fan it bestânsysteem kontrolearje.

[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

It folume /dev/mapper/vg0-root beslacht 204 GB nei LV-útwreiding.

It útwreidzjen fan it bestânsysteem.

resize2fs /dev/mapper/vg0-root 

Kontrolearje de grutte fan it bestânsysteem nei it útwreidzjen.

[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

De grutte fan it bestânsysteem is ferhege om it heule folume te dekken.

Boarne: www.habr.com

Add a comment