Замена дыскаў меншага аб'ёму на дыскі большага аб'ёму ў 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 першым паказваецца дыск на які капіяваць разметку, другім дыскам паказваецца дыск з якога капіяваць разметку. Калі пераблытаць дыскі, то першапачаткова спраўная разметка будзе перазапісана і знішчана.

Капіраванне табліцы разметкі для GPT:

sgdisk -R /dev/sdс /dev/sdb

Далей прызначаем дыску выпадковы UUID (для GPT).


sgdisk -G /dev/sdc

Пасля выкананай каманды раздзелы павінны з'явіцца на дыску /dev/sdc.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
└─sdc2           8:34   0 222,5G  0 part  
sdd              8:48   0 931,5G  0 disk  

Калі пасля выкананага дзеяння раздзелы ў сістэме на дыску /dev/sdc не вызначыліся, то выконваем каманду, каб перачытаць табліцу раздзелаў.

sfdisk -R /dev/sdc

Калі на бягучых дысках выкарыстоўваецца табліца MBR і інфармацыю неабходна перанесці на дыскі аб'ёмам больш за 2 TB, то на новых дысках спатрэбіцца ўручную ствараць разметку GPT з выкарыстаннем раздзела biosboot. Гэты выпадак будзе разгледжаны ў 2 частцы гэтага артыкула.

3. Даданне раздзелаў новага дыска ў масіў

Дадамо раздзелы дыска ў адпаведныя масівы.

mdadm /dev/md126 --add /dev/sdc1

mdadm /dev/md127 --add /dev/sdc2

Правяраем, што раздзелы дададзены.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  

Пасля гэтага чакаем сінхранізацыі масіваў.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdc1[2] sdb1[1]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdc2[2] sdb2[1]
      233206784 blocks super 1.2 [2/1] [_U]
      [==>..................]  recovery = 10.6% (24859136/233206784) finish=29.3min speed=118119K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk

unused devices: <none>

Бесперапынна назіраць за працэсам сінхранізацыі можна з дапамогай утыліты watch.

watch -n 2 cat /proc/mdstat

Параметр -n паказвае з якім інтэрвалаў у секундах неабходна выконваць каманду для праверкі прагрэсу.

Паўтараем пункты 1 - 3 для наступнага заменнага дыска.

Пазначаем раздзелы другога дыска, якія выкарыстоўваюцца ў кожным масіве, як збойныя.

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

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

Выдаляем раздзелы блокавай прылады /dev/sdb з масіваў.

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

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

Пасля таго, як мы выдалілі дыск з масіва, інфармацыя аб блокавых прыладах будзе выглядаць наступным чынам.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  

Стан масіваў пасля выдалення дыскаў.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdc1[2]
      1047552 blocks super 1.2 [2/1] [U_]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdc2[2]
      233206784 blocks super 1.2 [2/1] [U_]
      bitmap: 1/2 pages [4KB], 65536KB chunk

unused devices: <none>

Капіяваны табліцу разметкі MBR з дыска /dev/sdс на дыск /dev/sdd.

sfdisk -d /dev/sdс | sfdisk /dev/sdd

Пасля выкананай каманды раздзелы павінны з'явіцца на дыску /dev/sdd.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  
├─sdd1           8:49   0     1G  0 part  
└─sdd2           8:50   0 222,5G  0 part  

Дадаем раздзелы дыска ў масівы.

mdadm /dev/md126 --add /dev/sdd1

mdadm /dev/md127 --add /dev/sdd2

Правяраем, што раздзелы дададзены.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  
├─sdd1           8:49   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd2           8:50   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

Пасля гэтага чакаем сінхранізацыі масіваў.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdd1[3] sdc1[2]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdd2[3] sdc2[2]
      233206784 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.5% (1200000/233206784) finish=35.4min speed=109090K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk

unused devices: <none>

5. Устаноўка GRUB на новыя дыскі

Для CentOS:

grub2-install /dev/sdX

Для Debian/Ubuntu:

grub-install /dev/sdX

дзе X - літара блокавай прылады. У дадзеным выпадку ўсталяваць GRUB неабходна на /dev/sdc и /dev/sdd.

6. Пашырэнне файлавай сістэмы (ext4) каранёвай часткі

На новых дысках /dev/sdc и /dev/sdd даступныя 931.5 GB. З-за таго, што табліца раздзелаў скапіяваная з дыскаў меншага аб'ёму, на раздзелах /dev/sdc2 и /dev/sdd2 даступныя 222.5 GB.

sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  
├─sdd1           8:49   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd2           8:50   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

неабходна:

  1. Пашырыць раздзел 2 на кожным з дыскаў,
  2. Пашырыць масіў md127,
  3. Пашырыць PV (physical volume),
  4. Пашырыць LV (logical-volume) vg0-root,
  5. Пашырыць файлавую сістэму.

Выкарыстоўваючы ўтыліту рассталіся пашырым падзел /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 Гб. Пасля выкананых дзеянняў можна здабываць старыя дыскі.

Выпадак 2: Замена дыскаў меншага аб'ёму на дыскі большага аб'ёму (больш за 2TB)

заданне: Замяніць бягучыя дыскі на дыскі большага аб'ёму (2 x 3TB) з захаваннем інфармацыі. У дадзеным выпадку маем кружэлкі 2 x 240 GB SSD (RAID-1) з усталяванай сістэмай і кружэлкі 2 x 3 TB SATA, на якія неабходна перанесці сістэму. На бягучых дысках выкарыстоўваецца табліца раздзелаў MBR. Так як новыя дыскі маюць аб'ём больш за 2 TB, то на іх спатрэбіцца выкарыстоўваць табліцу GPT, так як MBR не можа працаваць з дыскамі больш за 2TB.

Прагледзім бягучую разметку дыскаў.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sda2           8:2    0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0   2,7T  0 disk  
sdd              8:48   0   2,7T  0 disk  

Праверым табліцу раздзелаў на дыску, якая выкарыстоўваецца. /dev/sda.

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

На дыску /dev/sdb выкарыстоўваецца аналагічная табліца раздзелаў. Праверым выкарыстоўваную дыскавую прастору ў сістэме.

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                16G            0   16G            0% /dev
tmpfs                   16G            0   16G            0% /dev/shm
tmpfs                   16G         9,5M   16G            1% /run
tmpfs                   16G            0   16G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   204G         1,3G  192G            1% /
/dev/md126            1007M         120M  837M           13% /boot
tmpfs                  3,2G            0  3,2G            0% /run/user/0

Як бачна, корань файлавай сістэмы займае 204 GB. Праверым бягучы стан праграмнага RAID-масіва.

1. Устаноўка GPT табліцы раздзелаў і разметка дыска

Праверым разметку дыскаў па сектарах.

[root@localhost ~]# parted /dev/sda print
Модель: ATA KINGSTON SVP200S (scsi)
Диск /dev/sda: 240GB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Disk Flags: 

Номер  Начало  Конец   Размер  Тип      Файловая система  Флаги
 1     1049kB  1076MB  1075MB  primary                    загрузочный, raid
 2     1076MB  240GB   239GB   primary                    raid

На новым дыску 3TB нам неабходна будзе стварыць 3 раздзелы:

  1. Раздзел bios_grub памерам 2MiB для сумяшчальнасці GPT з BIOS,
  2. Раздзел для RAID масіва, які будзе змантаваны ў /boot.
  3. Раздзел для RAID-масіва, на якім будзе LV root и LV swap.

Усталёўваны ўтыліту рассталіся камандай 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 (кропка мантавання /boot) - складаецца з /dev/sda1 и /dev/sdb1, md127 (LVM для swap і кораня файлавай сістэмы) - складаецца з /dev/sda2 и /dev/sdb2.

Пазначаем часткі першай кружэлкі, якія выкарыстоўваюцца ў кожным масіве, як збойныя.

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

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

Выдаляем раздзелы блокавай прылады /dev/sda з масіваў.

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

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

Правяраем стан масіва пасля выдалення дыска.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdb1[1]
      1047552 blocks super 1.2 [2/1] [_U]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdb2[1]
      233206784 blocks super 1.2 [2/1] [_U]
      bitmap: 2/2 pages [8KB], 65536KB chunk

unused devices: <none>

3. Даданне раздзелаў новага дыска ў масіў

Наступным крокам неабходна дадаць часткі новага дыска ў масівы для сінхранізацыі. Глядзім бягучы стан разметкі дыскаў.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
└─sdc3           8:35   0   2,7T  0 part  
sdd              8:48   0   2,7T  0 disk  

Раздзел /dev/sdc1 з'яўляецца bios_grub раздзелам і не ўдзельнічае з стварэнні масіваў. У масівах будуць задзейнічаны толькі /dev/sdc2 и /dev/sdc3. Дадаем дадзеныя раздзелы ў адпаведныя масівы.

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

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

Пасля чаго чакаем сінхранізацыі масіва.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdc2[2] sdb1[1]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdc3[2] sdb2[1]
      233206784 blocks super 1.2 [2/1] [_U]
      [>....................]  recovery =  0.2% (619904/233206784) finish=31.2min speed=123980K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>

Разметка дыскаў пасля дадання раздзелаў у масіў.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  

4. Выдаленне раздзелаў другога дыска з масіваў

Пазначаем раздзелы другога дыска, якія выкарыстоўваюцца ў кожным масіве, як збойныя.

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

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

Выдаляем раздзелы блокавай прылады /dev/sda з масіваў.

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

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

5. Капіяваны табліцу разметкі GPT і сінхранізуем масіў

Для капіявання табліцы разметкі GPT скарыстаемся ўтылітай sgdisk, якая ўваходзіць у пакет для працы з раздзеламі дыскаў і табліцай GPT gdisk.

Ўстаноўка gdisk для CentOS:

yum install -y gdisk

Ўстаноўка gdisk для Debian/Ubuntu:

apt install -y gdisk

УВАГА: Для GPT першым паказваецца дыск на які капіюем разметку, другім дыскам паказваецца дыск з якога капіююць разметку. Калі пераблытаць дыскі, то першапачаткова спраўная разметка будзе перазапісана і знішчана.

Капіяваны табліцу разметкі GPT.

sgdisk -R /dev/sdd /dev/sdc

Разметка дыскаў пасля пераносу табліцы на дыск /dev/sdd.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  
├─sdd1           8:49   0     2M  0 part  
├─sdd2           8:50   0     1G  0 part  
└─sdd3           8:51   0   2,7T  0 part  

Далей дадаем кожны з раздзелаў, якія ўдзельнічаюць у праграмных RAID-масівах.

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

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

Чакаем сінхранізацыі масіва.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdd2[3] sdc2[2]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdd3[3] sdc3[2]
      233206784 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.0% (148224/233206784) finish=26.2min speed=148224K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>

Пасля капіявання разметкі GPT на другі новы дыск, разметка будзе выглядаць наступным чынам.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  
├─sdd1           8:49   0     2M  0 part  
├─sdd2           8:50   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd3           8:51   0   2,7T  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

Далей усталёўваны GRUB на новыя дыскі.

Усталёўка для CentOS:

grub2-install /dev/sdX

Усталяванне для Debian/Ubuntu:

grub-install /dev/sdX

дзе X - літара дыска, у нашым выпадку дыскі /dev/sdc и /dev/sdd.

Абнаўляем інфармацыю аб масіве.

Для CentOS:

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

Для Debian/Ubuntu:

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

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

Абнаўляем вобраз initrd:
Для CentOS:

dracut -f -v --regenerate-all

Для Debian/Ubuntu:

update-initramfs -u -k all

Абнаўляем канфігурацыю GRUB.

Для CentOS:

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

Для Debian/Ubuntu:

update-grub

Пасля выкананых дзеянняў старыя дыскі можна здабываць.

6. Пашырэнне файлавай сістэмы (ext4) каранёвай часткі

Разметка дыскаў да пашырэння файлавай сістэмы пасля пераносу сістэмы на дыскі 2 x 3TB (RAID-1).

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
sdb              8:16   0 223,6G  0 disk  
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md126        9:126  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  
├─sdd1           8:49   0     2M  0 part  
├─sdd2           8:50   0     1G  0 part  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdd3           8:51   0   2,7T  0 part  
  └─md126        9:126  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

Зараз раздзелы /dev/sdc3 и /dev/sdd3 займаюць 2.7/3 TB. Бо мы стваралі новую разметку дыскаў з табліцай GPT, то памер XNUMX часткі быў адразу зададзены на максімальна магчымую дыскавую прастору, пашыраць частку ў дадзеным выпадку не патрабуецца.

неабходна:

  1. Пашырыць масіў md126,
  2. Пашырыць PV (physical volume),
  3. Пашырыць LV (logical-volume) vg0-root,
  4. Пашырыць файлавую сістэму.

1. Пашыраем масіў md126 да максімуму.

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

Пасля пашырэння масіва md126 памер займаемай прасторы павялічыўся да 2.7 TB.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
sdb              8:16   0 223,6G  0 disk  
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md126        9:126  0   2,7T  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  
├─sdd1           8:49   0     2M  0 part  
├─sdd2           8:50   0     1G  0 part  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdd3           8:51   0   2,7T  0 part  
  └─md126        9:126  0   2,7T  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

Пашыраем фізічны аб'ём.

Перад пашырэннем правяраем бягучае значэнне займанай прасторы PV /dev/md126.

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

Пашыраем PV наступным камандай.

pvresize /dev/md126

Правяраем выкананае дзеянне.

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

Пашыраем logical volume vg0-root.

Пасля пашырэння PV праверым займанае прастору VG.

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

Праверым займанае LV прастору.

[root@localhost ~]# lvs
  LV   VG  Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root vg0 -wi-ao---- <206,41g                                                    
  swap vg0 -wi-ao----  <16,00g            

Тым vg0-root займае 206.41 GB.

Пашыраем LV да максімуму дыскавай прасторы.

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

Правяраем прастору LV пасля пашырэння.

[root@localhost ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root vg0 -wi-ao----   2,71t                                                    
  swap vg0 -wi-ao---- <16,00g

Пашыраем файлавую сістэму (ext4).

Праверым бягучы памер файлавай сістэмы.

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                16G            0   16G            0% /dev
tmpfs                   16G            0   16G            0% /dev/shm
tmpfs                   16G         9,6M   16G            1% /run
tmpfs                   16G            0   16G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   204G         1,4G  192G            1% /
/dev/md127            1007M         141M  816M           15% /boot
tmpfs                  3,2G            0  3,2G            0% /run/user/0

Тым /dev/mapper/vg0-root займае 204 GB пасля пашырэння LV.

Пашыраем файлавую сістэму.

resize2fs /dev/mapper/vg0-root 

Правяраем памер файлавай сістэмы пасля яе пашырэння.

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                16G            0   16G            0% /dev
tmpfs                   16G            0   16G            0% /dev/shm
tmpfs                   16G         9,6M   16G            1% /run
tmpfs                   16G            0   16G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   2,7T         1,4G  2,6T            1% /
/dev/md127            1007M         141M  816M           15% /boot
tmpfs                  3,2G            0  3,2G            0% /run/user/0

Памер файлавай сістэмы павялічаны на ўвесь аб'ём тома.

Крыніца: habr.com

Дадаць каментар