Здравейте на всички. В навечерието на старта на нова група курс публикуваме полезен материал, написан от нашия студент, а също така наставник по курсовете, специалист в техническата поддръжка на корпоративни продукти 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]
bitmap: 0/1 страници [0KB], 65536KB chunk
md127: активен raid1 sda2[0] sdb2[1]
233206784 блока супер 1.2 [2/2] [UU]
bitmap: 0/2 страници [0KB], 65536KB chunk
неизползвани устройства: В системата се използват 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]
bitmap: 0/1 страници [0KB], 65536KB chunk
md127: активен raid1 sdb2[1]
233206784 блока супер 1.2 [2/1] [_U]
bitmap: 1/2 страници [4KB], 65536KB chunk
неизползвани устройства: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. Този случай ще бъде разгледан в част 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 : активен raid1 sdc1[2] sdb1[1]
1047552 блока супер 1.2 [2\/2] [UU]
bitmap: 0\/1 страници [0KB], 65536KB chunk
md127 : активен raid1 sdc2[2] sdb2[1]
233206784 блока супер 1.2 [2\/1] [_U]
[==>..................] възстановяване = 10.6% (24859136\/233206784) завършване=29.3мин скорост=118119K\/сек
bitmap: 2\/2 страници [8KB], 65536KB chunk
ненужни устройства: Постоянно може да наблюдавате процеса на синхронизация чрез утилитата 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
Личности : [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
Личности : [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 диск
├─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 930,5G 0 част
└─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 диск
├─sdd1 8:49 0 1G 0 част
│ └─md126 9:126 0 1023M 0 raid1 \/boot
└─sdd2 8:50 0 930,5G 0 част
└─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
ACTIVE '\/dev\/vg0\/swap' [<16,00 GiB] наследяване
ACTIVE '\/dev\/vg0\/root' [<206,41 GiB] наследяване 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] наследяване
ACTIVE '\/dev\/vg0\/root' [<914,39 GiB] наследяване
Както виждаме, след разширението на 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 bootable, 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]
bitmap: 0/1 страници [0KB], 65536KB chunk
md127: активен raid1 sda2[0] sdb2[1]
233206784 блока супер 1.2 [2/2] [UU]
bitmap: 0/2 страници [0KB], 65536KB chunk
неизползвани устройства: В системата се използват 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
Личности: [raid1]
md126: активен raid1 sdb1[1]
1047552 блока супер 1.2 [2/1] [_U]
bitmap: 0/1 страницы [0KB], 65536KB chunk
md127: активен raid1 sdb2[1]
233206784 блока супер 1.2 [2/1] [_U]
bitmap: 2/2 страницы [8KB], 65536KB chunk
неизползвани устройства:
3. Добавяне на раздели от новия диск в масива
Следващата стъпка е да добавим дяловете на новия диск в масивите за синхронизация. Нека видим текущото състояние на разпределението на дисковете.
[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 2,7T 0 диск
├─sdc1 8:33 0 2M 0 дял
├─sdc2 8:34 0 1G 0 дял
└─sdc3 8:35 0 2,7T 0 дял
sdd 8:48 0 2,7T 0 диск Дял /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]
bitmap: 0/1 страници [0KB], 65536KB chunk
md127: активен raid1 sdc3[2] sdb2[1]
233206784 блока супер 1.2 [2/1] [_U]
[>....................] възстановяване = 0.2% (619904/233206784) завършва=31.2мин скорост=123980K/сек
bitmap: 2/2 страници [8KB], 65536KB chunk
неизползвани устройства:Разпределение на дисковете след добавянето на дялове в масива.
[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 "УСТРОЙСТВА разпределения" > /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
Файловата система Размер Използвано Дост Использвано% 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
Файловата система Размер Използвано Достъпно Използвано% Смонтировано в
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
