Подмяна на по-малки дискове с по-големи дискове в Linux

Здравейте всички. В навечерието на началото на нова курсова група „Linux администратор“ Публикуваме полезни материали, написани от нашия студент, както и ментор на курса, специалист по техническа поддръжка за корпоративни продукти REG.RU - Роман Травин.

Тази статия ще разгледа 2 случая на подмяна на дискове и прехвърляне на информация към нови дискове с по-голям капацитет с по-нататъшно разширяване на масива и файловата система. Първият случай ще се отнася до подмяната на дискове със същото 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, който се използва като физически обем за 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 за размяна и корена на файловата система) - състои се от /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 първи е посочен диск на която копиране на маркиране, втори disk показва диска от кое копиране на маркиране. Ако объркате дисковете, първоначално добрият дял ще бъде презаписан и унищожен.

Копиране на таблицата с оформление за 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 undecided, тогава изпълняваме командата за препрочитане на таблицата на дяловете.

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 (физически обем),
  4. Разширете LV (логически том) vg0-root,
  5. Разширете файловата система.

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

Подмяна на по-малки дискове с по-големи дискове в 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 на максимум.

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]

Удължаване на разширението физически обем. Преди да разширим, нека проверим текущото състояние на 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   ]

Разширяване логически обем. Преди да разширим, нека проверим текущото състояние на 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.

Подмяна на по-малки дискове с по-големи дискове в Linux

Обемът 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 не може да работи с дискове, по-големи от 2 TB.

Нека да разгледаме текущото оформление на диска.

[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 корен и Смяна на НН.

Инсталиране на помощната програма разединен екип yum install -y parted (за CentOS), apt install -y parted (за Debian/Ubuntu).

Използването на разединен Нека изпълним следните команди, за да разделим диска.

Изпълнете командата 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 (точка на монтиране /зареждане) - състои се от /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 първи е посочен диск на която копирайте маркирането, втори disk показва диска от кое копирайте маркировката. Ако объркате дисковете, първоначално добрият дял ще бъде презаписан и унищожен.

Копирайте таблицата за маркиране на 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 (физически обем),
  3. Разширете LV (логически том) 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]

Разширяване физически обем.

Преди разширяване проверете текущата стойност на заетото пространство 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

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

Размерът на файловата система е увеличен, за да покрие целия обем.

Източник: www.habr.com

Добавяне на нов коментар