Здравейте на всички. В навечерието на старта на новата група курс публикуваме полезен материал, написан от наш студент, както и наставник по курсовете, специалист по техническа поддръжка на корпоративни продукти 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
Файловата система Размер Използвано Дост Използвано% Смонтировано в
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
Личности : [raid1]
md126 : активен raid1 sda1[0] sdb1[1]
1047552 блока супер 1.2 [2/2] [UU]
битмап: 0/1 страниц [0KB], 65536KB пачка
md127 : активен raid1 sda2[0] sdb2[1]
233206784 блока супер 1.2 [2/2] [UU]
битмап: 0/2 страниц [0KB], 65536KB пачка
неиспользуемые устройства: В системата се използват 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 диск
├─sda1 8:1 0 1G 0 част
└─sda2 8:2 0 222.5G 0 част
sdb 8:16 0 223.6G 0 диск
├─sdb1 8:17 0 1G 0 част
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222.5G 0 част
└─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 диск
sdd 8:48 0 931.5G 0 диск Състоянието на масивите след премахването на дисковете.
[root@localhost ~]# cat /proc/mdstat
Личности : [raid1]
md126 : активен raid1 sdb1[1]
1047552 блока супер 1.2 [2/1] [_U]
битмап: 0/1 страниц [0KB], 65536KB пачка
md127 : активен raid1 sdb2[1]
233206784 блока супер 1.2 [2/1] [_U]
битмап: 1/2 страниц [4KB], 65536KB пачка
неиспользуеми устройства: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/sdc /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. Тази ситуация ще бъде разгледана във втората част на статията.
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: Непрекъснато следене на процеса на синхронизация може да се извърши с помощта на утилитата 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 диск
├─sda1 8:1 0 1G 0 част
└─sda2 8:2 0 222,5G 0 част
sdb 8:16 0 223,6G 0 диск
├─sdb1 8:17 0 1G 0 част
└─sdb2 8:18 0 222,5G 0 част
sdc 8:32 0 931,5G 0 диск
├─sdc1 8:33 0 1G 0 част
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 222,5G 0 част
└─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 диск
Състоянието на масивите след премахването на дисковете.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : активен raid1 sdc1[2]
1047552 блока супер 1.2 [2/1] [U_]
масив: 0/1 страници [0KB], 65536KB фрагмент
md127 : активен raid1 sdc2[2]
233206784 блока супер 1.2 [2/1] [U_]
масив: 1/2 страници [4KB], 65536KB фрагмент
неизползвани устройства: Копиране на таблицата за разпределение MBR от диска /dev/sdс на диск /dev/sdd.
sfdisk -d /dev/sdc | sfdisk /dev/sdd След изпълнението на командата разделите трябва да се появят на диска /dev/sdd.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 диск
├─sda1 8:1 0 1G 0 част
└─sda2 8:2 0 222,5G 0 част
sdb 8:16 0 223,6G 0 диск
├─sdb1 8:17 0 1G 0 част
└─sdb2 8:18 0 222,5G 0 част
sdc 8:32 0 931,5G 0 диск
├─sdc1 8:33 0 1G 0 част
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 222,5G 0 част
└─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 диск
├─sdd1 8:49 0 1G 0 част
└─sdd2 8:50 0 222,5G 0 част Добавяне на дялове от диска в масивите.
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 диск
├─sda1 8:1 0 1G 0 част
└─sda2 8:2 0 222,5G 0 част
sdb 8:16 0 223,6G 0 диск
├─sdb1 8:17 0 1G 0 част
└─sdb2 8:18 0 222,5G 0 част
sdc 8:32 0 931,5G 0 диск
├─sdc1 8:33 0 1G 0 част
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 222,5G 0 част
└─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 диск
├─sdd1 8:49 0 1G 0 част
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd2 8:50 0 222,5G 0 част
└─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 : активен raid1 sdd1[3] sdc1[2]
1047552 блока супер 1.2 [2/2] [UU]
масив: 0/1 страници [0KB], 65536KB фрагмент
md127 : активен raid1 sdd2[3] sdc2[2]
233206784 блока супер 1.2 [2/1] [U_]
[>....................] възстановяване = 0.5% (1200000/233206784) завършване=35.4мин скорост=109090K/сек
масив: 2/2 страници [8KB], 65536KB фрагмент
неизползвани устройства:
5. Инсталиране на GRUB на нови дискове
За CentOS:
grub2-install /dev/sdXЗа Debian/Ubuntu:
grub-install /dev/sdX където X — буква на блоковото устройство. В този случай GRUB трябва да бъде инсталиран на /dev/sdc и /dev/sdd.
6. Разширение на файловата система (ext4) на кореновия дял
На новите дискове /dev/sdc и /dev/sdd са налични 931.5 GB. Поради факта, че таблицата на дяловете е копирана от дискове с по-малък обем, на дяловете /dev/sdc2 и /dev/sdd2 са налични 222.5 GB.
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 \/boot
└─sdc2 8:34 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm \/
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
├─sdd1 8:49 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 \/boot
└─sdd2 8:50 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm \/
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]Необходимо е:
- Да разширим дял 2 на всеки от дисковете,
- Да разширим масива md127,
- Да разширим PV (физически обем),
- Да разширим LV (логически обем) vg0-root,
- Да разширим файловата система.
Използвайки утилитата parted ще разширим дяла /dev/sdc2 до максималната стойност. Изпълняваме командата parted \/dev\/sdc (1) и преглеждаме текущата таблица на дяловете с командата p (2).

Както се вижда, краят на дял 2 завършва на 240 GB. Изпълняваме разширението на дяла с командата resizepart 2, където 2 е номерът на дяла (3). Указваме стойността в цифров формат, например 1000 GB, или използваме указание за дял от диска — 100%. Отново проверяваме, че дялът има нов размер (4).
Повтаряме посочените по-горе действия за диска /dev/sdd. След разширението на дяловете /dev/sdc2 и /dev/sdd2 стаха равни на 930.5 GB.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 222,5G 0 part
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 \/boot
└─sdc2 8:34 0 930,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm \/
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
├─sdd1 8:49 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 \/boot
└─sdd2 8:50 0 930,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm \/
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]След това изпълняваме разширението на масива md127 до максимума.
mdadm --grow \/dev\/md127 --size=maxПроверяваме, че масивът е разширен. Сега размерът му стана 930.4 GB.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 222,5G 0 part
sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 930,5G 0 part
└─md127 9:127 0 930,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 931,5G 0 disk
├─sdd1 8:49 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd2 8:50 0 930,5G 0 part
└─md127 9:127 0 930,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]Извършваме разширение физически том. Преди разширението проверяваме текущото състояние на PV.
[root@localhost ~]# pvscan
PV /dev/md127 VG vg0 lvm2 [222,40 GiB / 0 свободно]
Общо: 1 [222,40 GiB] / в употреба: 1 [222,40 GiB] / в никакъв 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 свободно]
Общо: 1 [930,38 GiB] / в употреба: 1 [930,38 GiB] / в никакъв VG: 0 [0 ]Разширяваме логическия обем. Преди разширението проверяваме текущото състояние на LV (1).
[root@localhost ~]# lvscan
АКТИВЕН 'раз/dev/vg0/swap' [<16,00 GiБ] наследява
АКТИВЕН 'раз/dev/vg0/root' [<206,41 GiБ] наследява LV /dev/vg0/root използва 206.41 GB.
Разширяваме LV сега (2).
lvextend -l +100%FREE /dev/mapper/vg0-rootПроверяваме извършеното действие (3).
[root@localhost ~]# lvscan
АКТИВЕН 'раз/dev/vg0/swap' [<16,00 GiБ] наследява
АКТИВЕН 'раз/dev/vg0/root' [<914,39 GiБ] наследява
Както виждаме, след разширението LV обемът на заетото дисково пространство стана 914.39 GB.

Обемът на LV се увеличи (4), но файловата система все още заема 204 GB (5).
1. Изпълняваме разширение на файловата система.
resize2fs /dev/mapper/vg0-rootПроверяваме размера на файловата система след изпълнението на командата.
[root@localhost ~]# df -h
Файловата система Размер Използвано Остава Използвано% Монтирано в
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
Файловата система Размер Използвано Дост Използвано% Смонтировано в
devtmpfs 16G 0 16G 0% \/dev
tmpfs 16G 0 16G 0% \/dev\/shm
tmpfs 16G 9,5M 16G 1% \/run
tmpfs 16G 0 16G 0% \/sys\/fs\/cgroup
\/dev\/mapper\/vg0-root 204G 1,3G 192G 1% \
\/dev\/md126 1007M 120M 837M 13% \/boot
tmpfs 3,2G 0 3,2G 0% \/run\/user\/0Както се вижда, коренът на файловата система заема 204 GB. Нека проверим текущото състояние на софтуерния RAID масив.
1. Инсталиране на GPT таблица за разпределение и маркиране на диска.
Нека проверим разметката на дисковете по сектори.
[root@localhost ~]# parted \/dev\/sda print
Модел: ATA KINGSTON SVP200S (scsi)
Диск \/dev\/sda: 240GB
Размер на сектора (логичен/физически): 512B\/512B
Таблица за разпределение: msdos
Disk Flags:
Номер Начало Край Размер Тип Файлова система Флаги
1 1049kB 1076MB 1075MB primary загрузочный, raid
2 1076MB 240GB 239GB primary raid
На новия диск с капацитет 3TB ще трябва да създадем 3 раздела:
- Раздел
bios_grubс размер 2MiB за съвместимост на GPT с BIOS, - Раздел за RAID масив, който ще бъде монтиран в
/boot. - Раздел за RAID масив, на който ще бъде LV root и LV swap.
Инсталираме утилитата parted с командата yum install -y parted (за CentOS), apt install -y parted (за Debian\/Ubuntu).
Използвайки parted изпълняваме следните команди за разпределение на диска.
Изпълняваме командата parted \/dev\/sdc и преминаваме в режим на редактиране на разпределението на диска.
Създаваме таблица за дялове GPT.
(parted) mktable gpt Създаваме 1 дял bios_grub дял и задаваме флаг за него.
(parted) mkpart primary 1MiB 3MiB
(parted) set 1 bios_grub on Създаваме 2 дял и задаваме флаг за него. Дялът ще се използва като блок за RAID масив и за неговото монтиране в /boot.
(parted) mkpart primary ext2 3MiB 1028MiB
(parted) set 2 boot onСъздаваме 3 дял, който също ще се използва като блок в масива, в който ще бъде LVM.
(parted) mkpart primary 1028MiB 100% В този случай задаването на флаг не е задължително, но ако е необходимо, може да бъде зададено с следната команда.
(parted) set 3 raid onПроверяваме създадената таблица.
(parted) p
Модел: ATA TOSHIBA DT01ACA3 (scsi)
Диск /dev/sdc: 3001GB
Размер на сектора (логичен/физичен): 512B/4096B
Таблица на дяловете: gpt
Disk Flags:
Номер Начало Край Размер Файлова система Име Флагове
1 1049kB 3146kB 2097kB primary bios_grub
2 3146kB 1077MB 1074MB primary загрузочный
3 1077MB 3001GB 3000GB primary
Назначаваме на диска нов случаен GUID.
sgdisk -G /dev/sdd
2. Премахване на дяловете от първия диск от масивите
Проверяваме състоянието на масива
[root@localhost ~]# cat /proc/mdstat
Личности : [raid1]
md126 : активен raid1 sda1[0] sdb1[1]
1047552 блока супер 1.2 [2/2] [UU]
битмап: 0/1 страниц [0KB], 65536KB пачка
md127 : активен raid1 sda2[0] sdb2[1]
233206784 блока супер 1.2 [2/2] [UU]
битмап: 0/2 страниц [0KB], 65536KB пачка
неиспользуемые устройства: В системата са използвани 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:
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
Личности : [raid1]
md126 : активен raid1 sdc2[2] sdb1[1]
1047552 блока супер 1.2 [2/2] [UU]
битмап: 0/1 страницы [0KB], 65536KB участок
md127 : активен raid1 sdc3[2] sdb2[1]
233206784 блока супер 1.2 [2/1] [_U]
[>....................] восстановление = 0.2% (619904/233206784) завершить через 31.2мин скорость=123980K/сек
битмап: 2/2 страницы [8KB], 65536KB участок
неиспользуемые устройства: <нет>Разметка дисков след от добавленных разделов в массив.
[root@localhost ~]# lsblk
ИМЯ MAJ:MIN RM РАЗМЕР RO ТИП ТОЧКА МОНТАЖА
sda 8:0 0 223,6G 0 диск
├─sda1 8:1 0 1G 0 часть
└─sda2 8:2 0 222,5G 0 часть
sdb 8:16 0 223,6G 0 диск
├─sdb1 8:17 0 1G 0 часть
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 часть
└─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 диск
├─sdc1 8:33 0 2M 0 часть
├─sdc2 8:34 0 1G 0 часть
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 часть
└─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 диск 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
ИМЯ MAJ:MIN RM РАЗМЕР RO ТИП ТОЧКА МОНТАЖА
sda 8:0 0 223,6G 0 диск
├─sda1 8:1 0 1G 0 часть
└─sda2 8:2 0 222,5G 0 часть
sdb 8:16 0 223,6G 0 диск
├─sdb1 8:17 0 1G 0 часть
└─sdb2 8:18 0 222,5G 0 часть
sdc 8:32 0 2,7T 0 диск
├─sdc1 8:33 0 2M 0 часть
├─sdc2 8:34 0 1G 0 часть
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 часть
└─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 диск
├─sdd1 8:49 0 2M 0 часть
├─sdd2 8:50 0 1G 0 часть
└─sdd3 8:51 0 2,7T 0 часть Далее добавляем каждый из разделов, участвующих в программных RAID-массивах.
mdadm /dev/md126 --add /dev/sdd2
mdadm /dev/md127 --add /dev/sdd3Дожидаемся синхронизации массива.
[root@localhost ~]# cat /proc/mdstat
Личности: [raid1]
md126: активен raid1 sdd2[3] sdc2[2]
1047552 блока супер 1.2 [2/2] [UU]
битовая карта: 1/1 страницы [4KB], 65536KB часть
md127: активен raid1 sdd3[3] sdc3[2]
233206784 блока супер 1.2 [2/1] [U_]
[>....................] восстановление = 0.0% (148224/233206784) окончание=26.2мин скорость=148224K/сек
битовая карта: 2/2 страницы [8KB], 65536KB часть
неиспользуемые устройства: <нет>След от копирования разметки GPT на вторичный новый диск, разметка будет выглядеть следующим образом.
[root@localhost ~]# lsblk
ИМЯ MAJ:MIN RM РАЗМЕР RO ТИП ТОЧКА МОНТАЖА
sda 8:0 0 223,6G 0 диск
├─sda1 8:1 0 1G 0 часть
└─sda2 8:2 0 222,5G 0 часть
sdb 8:16 0 223,6G 0 диск
├─sdb1 8:17 0 1G 0 часть
└─sdb2 8:18 0 222,5G 0 часть
sdc 8:32 0 2,7T 0 диск
├─sdc1 8:33 0 2M 0 часть
├─sdc2 8:34 0 1G 0 часть
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 часть
└─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 диск
├─sdd1 8:49 0 2M 0 часть
├─sdd2 8:50 0 1G 0 часть
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd3 8:51 0 2,7T 0 часть
└─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
ИМЯ MAJ:MIN RM РАЗМЕР RO ТИП ТОЧКА МОНТАЖА
sda 8:0 0 223,6G 0 диск
sdb 8:16 0 223,6G 0 диск
sdc 8:32 0 2,7T 0 диск
├─sdc1 8:33 0 2M 0 част
├─sdc2 8:34 0 1G 0 част
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 част
└─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 диск
├─sdd1 8:49 0 2M 0 част
├─sdd2 8:50 0 1G 0 част
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdd3 8:51 0 2,7T 0 част
└─md126 9:126 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP] Сега разделите /dev/sdc3 и /dev/sdd3 заемат 2.7 TB. Тъй като създадохме нова структура на дисковете с таблица GPT, размерът на 3-те раздела беше зададен веднага на максимално възможното дисково пространство, разширяването на раздела в този случай не е необходимо.
Необходимо е:
- Разширяване на масива md126,
- Да разширим PV (физически обем),
- Да разширим LV (логически обем) vg0-root,
- Да разширим файловата система.
1. Разширяваме масива md126 до максимума.
mdadm --grow /dev/md126 --size=max
След разширението на масива md126 размерът на заетото пространство се увеличи до 2.7 TB.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
sdb 8:16 0 223,6G 0 disk
sdc 8:32 0 2,7T 0 disk
├─sdc1 8:33 0 2M 0 part
├─sdc2 8:34 0 1G 0 part
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 part
└─md126 9:126 0 2,7T 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 2,7T 0 disk
├─sdd1 8:49 0 2M 0 part
├─sdd2 8:50 0 1G 0 part
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdd3 8:51 0 2,7T 0 part
└─md126 9:126 0 2,7T 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
Разширяваме физически том.
Преди разширението проверяваме текущото значение на заетото пространство 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
Файловата система Размер Използвано Дост Използвано% Смонтирано в
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
Файловата система Размер Използвано Остава Използвано% Монтирано в
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" Размерът на файловата система е увеличен до целия обем на тома.
Източник: habr.com
