Înlocuirea discurilor de capacitate mai mică cu discuri de capacitate mai mare în Linux

Bună tuturor. În pregătirea începerii unui nou grup de curs „Administrator Linux” publicăm material util scris de studentul nostru, precum și mentorul cursurilor, specialist în suport tehnic pentru produsele corporative REG.RU — Roman Travin.

În acest articol vor fi discutate 2 cazuri de înlocuire a discurilor și transferul informațiilor pe discuri noi de o capacitate mai mare, cu extinderea ulterioară a matricei și a sistemului de fișiere. Primul caz va fi referitor la înlocuirea discurilor cu aceeași partajare MBR/MBR sau GPT/GPT, iar al doilea caz se referă la înlocuirea discurilor cu partajare MBR cu discuri de peste 2 TB, pe care va trebui să instalăm partajare GPT cu partiția biosboot. În ambele cazuri, discurile pe care transferăm datele sunt deja instalate în serverul. Sistemul de fișiere utilizat pentru partiția rădăcină este ext4.

Cazul 1: Înlocuirea discurilor de capacitate mai mică cu discuri de capacitate mai mare (până la 2TB)

Sarcina: Înlocuiți discurile actuale cu discuri de capacitate mai mare (până la 2 TB) cu transferul informației. În acest caz, avem discuri 2 x 240 GB SSD (RAID-1) cu sistemul instalat și discuri 2 x 1 TB SATA, pe care trebuie să transferăm sistemul.

Să examinăm partajarea actuală a discurilor.

[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  

Să verificăm spațiul utilizat al sistemului de fișiere în acest moment.

[root@localhost ~]# df -h
Sistem de fișiere     Dimensiune Utilizat  Disponibil Utilizat% Montat în
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

Dimensiunea sistemului de fișiere înainte de înlocuirea discurilor este de 204 GB, se folosesc 2 matrice software md126, care este montat în /boot și md127, care este utilizat ca volum fizic pentru grupul VG vg0.

1. Eliminarea partițiilor discului din matrice

Verificăm starea matricei

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

Sunt utilizate 2 matrice în sistem: md126 (punct de montare /boot) — constă din partiția /dev/sda1 și /dev/sdb1, md127 (LVM pentru swap și rădăcina sistemului de fișiere) — constă din /dev/sda2 și /dev/sdb2.

Marcăm sectoarele primului disc, care sunt utilizate În fiecare matrice, ca fiind defecte.

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

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

Eliminăm sectoarele dispozitivului bloc /dev/sda din matrice.

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

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

După ce am eliminat discul din matrice, informațiile despre dispozitivele bloc vor arăta astfel.

[root@localhost ~]# lsblk
NUME           MAJ:MIN RM   DIMENSIUNE RO TIP  PUNCT_DE_MONTARE
sda              8:0    0 223,6G  0 disc  
├─sda1           8:1    0     1G  0 parte  
└─sda2           8:2    0 222,5G  0 parte  
sdb              8:16   0 223,6G  0 disc  
├─sdb1           8:17   0     1G  0 parte  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 parte  
  └─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 disc  
sdd              8:48   0 931,5G  0 disc  

Starea matricelor după eliminarea discurilor.

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

2. Copierea tabelului de partiții pe un nou disc

Este posibilă verificarea tabelului de partiții utilizat pe disc cu următoarea comandă.

fdisk -l /dev/sdb | grep 'Disk label type'

Rezultatul pentru MBR va fi:

Disk label type: dos

pentru GPT:

Disk label type: gpt

Copierea tabelului de partiti pentru MBR:

sfdisk -d /dev/sdb | sfdisk /dev/sdc

În această comandă în primul rând se specifică discul de de la care se copiază partitia, iar al doilea — unde se copiază.

ATENȚIE: Pentru GPT în primul rând se specifică discul pe care se copiază partitia, al doilea discul specifică discul de la care se copiază partitia. Dacă se amestecă discurile, atunci structura inițial corectă va fi suprascrisă și distrusă.

Copierea tabelului de partiti pentru GPT:

sgdisk -R /dev/sdc /dev/sdb

Apoi atribuim discului un UUID aleator (pentru GPT).


sgdisk -G /dev/sdc

După executarea comenzii, partitiile ar trebui să apară pe disc. /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  

Dacă după executarea acțiunii, partițiile din sistem pe disc /dev/sdc nu s-au definit, atunci executăm comanda pentru a reîncărca tabela de partiții.

sfdisk -R /dev/sdc

Dacă pe discurile curente se folosește tabela MBR și informațiile trebuie transferate pe discuri cu o capacitate mai mare de 2 TB, va fi necesar să creăm manual o structură GPT pe noile discuri folosind partiția biosboot. Această situație va fi discutată în partea a 2-a a acestui articol.

3. Adăugarea partițiilor pe noul disc în raid

Vom adăuga partițiile discului în array-urile corespunzătoare.

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

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

Verificăm că partițiile au fost adăugate.

[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  

După aceasta așteptăm sincronizarea array-urilor.

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

Pentru a observa continuu procesul de sincronizare, se poate folosi utilitarul watch.

watch -n 2 cat /proc/mdstat

Parametru -n care indică la ce intervale de secunde trebuie executată comanda pentru a verifica progresul.

Repetăm pașii 1 — 3 pentru următorul disc de înlocuit.

Marcăm partițiile celui de-al doilea disc, folosite în fiecare array, ca fiind defecte.

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

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

Eliminăm partițiile dispozitivului bloc /dev/sdb din arraye.

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

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

După ce am eliminat discul din matrice, informațiile despre dispozitivele bloc vor arăta astfel.

[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  

Starea matricelor după eliminarea discurilor.

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

Copierea tabelului de partitiie MBR de pe disc /dev/sdс pe disc /dev/sdd.

sfdisk -d /dev/sdc | sfdisk /dev/sdd

După executarea comenzii, partitiile ar trebui să apară pe disc. /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  

Adăugarea partițiilor de disc în array-uri.

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

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

Verificăm că partițiile au fost adăugate.

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

După aceasta așteptăm sincronizarea array-urilor.

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

5. Instalarea GRUB pe discurile noi

Pentru CentOS:

grub2-install /dev/sdX

Pentru Debian/Ubuntu:

grub-install /dev/sdX

unde X — litera dispozitivului bloc. În acest caz, GRUB trebuie instalat pe /dev/sdc și /dev/sdd.

6. Extinderea sistemului de fișiere (ext4) pe partția principală

Pe noile discuri /dev/sdc și /dev/sdd sunt disponibili 931.5 GB. Deoarece tabelul de partiții a fost copiat de pe discuri de dimensiuni mai mici, pe partițiile /dev/sdc2 și /dev/sdd2 sunt disponibili 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]

Necesită:

  1. Extinderea partiției 2 pe fiecare dintre discuri,
  2. Extinderea aranjamentului md127,
  3. Extinderea PV (volum fizic),
  4. Extinderea LV (volum logic) vg0-root,
  5. Extinderea sistemului de fișiere.

Folosind utilitarul parted vom extinde partiția /dev/sdc2 până la valoarea maximă. Executăm comanda parted \/dev\/sdc (1) și vizualizăm tabelul actual de partiții cu comanda p (2).

Înlocuirea discurilor de capacitate mai mică cu discuri de capacitate mai mare în Linux

După cum se poate observa, sfârșitul partiției 2 se termină la 240 GB. Vom extinde partiția cu comanda resizepart 2, unde 2 este numărul partiției (3). Indicam valoarea într-un format numeric, de exemplu 1000 GB, sau folosim specificarea unei proporții din disc — 100%. Verificăm din nou că partiția are o nouă dimensiune (4).

Repetăm pașii menționați mai sus pentru disc /dev/sdd. După extinderea partițiilor /dev/sdc2 și /dev/sdd2 au devenit egale cu 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]

După aceea, executăm extinderea aranjamentului md127 până la maxim.

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

Verificăm că aranjamentul s-a extins. Acum dimensiunea sa a devenit 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]

Extindem volum fizic. Înainte de extindere, să verificăm starea curentă a PV.

[root@localhost ~]# pvscan
  PV \/dev\/md127   VG vg0             lvm2 [222,40 GiB \/ 0    liber]
  Total: 1 [222,40 GiB] \/ folosite: 1 [222,40 GiB] \/ fără VG: 0 [0   ]

După cum se observă, PV /dev/md127 folosește 222.4 GB de spațiu.

Extindem PV cu următoarea comandă.

pvresize \/dev\/md127

Verificăm rezultatul extinderii PV.

[

root@localhost ~]# pvscan
  PV \/dev\/md127   VG vg0             lvm2 [930,38 GiB \/ 707,98 GiB liber]
  Total: 1 [930,38 GiB] \/ folosite: 1 [930,38 GiB] \/ fără VG: 0 [0   ]

Extindem volumul logic. Înainte de extindere, să verificăm starea curentă a LV (1).

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

LV /dev/vg0/root folosește 206.41 GB.

Extindem LV cu următoarea comandă (2).

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

Verificăm acțiunea efectuată (3).

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

După cum vedem, după extinderea LV, volumul de spațiu pe disc a devenit 914.39 GB.

Înlocuirea discurilor de capacitate mai mică cu discuri de capacitate mai mare în Linux

Volumul LV a crescut (4), dar sistemul de fișiere ocupă în continuare 204 GB (5).

1. Vom extinde sistemul de fișiere.

resize2fs \/dev\/mapper\/vg0-root

Verificăm dimensiunea sistemului de fișiere după comanda efectuată.

[root@localhost ~]# df -h
Sistem de fișiere     Dimensiune Folosit  Disponibil% Utilizat% Montat pe
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

Dimensiunea sistemului de fișiere rădăcină va crește până la 900 GB. După acțiunile efectuate, putem extrage vechile discuri.

Caz 2: Inlocuirea discurilor de volum mai mic cu discuri de volum mai mare (peste 2TB)

Sarcina: Înlocuirea discurilor actuale cu discuri de capacitate mai mare (2 x 3TB) păstrând informațiile. În acest caz, avem discuri 2 x 240 GB SSD (RAID-1) cu sistemul de operare instalat și discuri 2 x 3 TB SATA, pe care trebuie să transferăm sistemul. Pe discurile actuale este utilizată tabela de partiții MBR. Deoarece noile discuri au o capacitate mai mare de 2 TB, va trebui să folosim tabela GPT, deoarece MBR nu poate funcționa cu discuri mai mari de 2TB.

Să examinăm structura actuală a discurilor.

[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  

Să verificăm tabela de partiții utilizată pe disc. /dev/sda.

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

Pe discul /dev/sdb se folosește o tabelă de partiții similară. Să verificăm spațiul pe disc utilizat în sistem.

[root@localhost ~]# df -h
Sistem de fișiere     Dimensiune Utilizat  Disponibil% Utilizat% Montat în
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

După cum se poate observa, rădăcina sistemului de fișiere ocupă 204 GB. Să verificăm starea curentă a RAID-ului software.

1. Instalarea tabelei de partiții GPT și configurarea discului.

Să verificăm structura discurilor pe sectoare.

[root@localhost ~]# parted /dev/sda print
Model: ATA KINGSTON SVP200S (scsi)
Disc /dev/sda: 240GB
Dimensiunea sectorului (logic./fizic.): 512B/512B
Tabela de partiții: msdos
Disk Flags: 

Număr  Început  Sfârșit   Dimensiune  Tip      Sistem de fișiere  Flagi
 1     1049kB  1076MB  1075MB  primary                    bootabil, raid
 2     1076MB  240GB   239GB   primary                    raid

Pe noul disc de 3TB va trebui să creăm 3 partiții:

  1. Secțiunea bios_grub cu dimensiunea de 2MiB pentru compatibilitatea GPT cu BIOS,
  2. Partiție pentru RAID, care va fi montată în /boot.
  3. Partiție pentru RAID, pe care va fi LV root și LV swap.

Instalăm utilitarul parted comanda yum install -y parted (pentru CentOS), apt install -y parted (pentru Debian/Ubuntu).

Folosind parted Vom îndeplini următoarele comenzi pentru partiționarea discului.

We execute the command parted \/dev\/sdc și vom accesa modul de editare a partițiilor discului.

Creăm un tabel de partiții GPT.

(parted) mktable gpt

Creăm 1 partiție bios_grub partiția și îi setăm un steag.

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

Creăm 2 partiție și îi setăm un steag. Această partiție va fi utilizată ca bloc pentru un RAID și va fi montată în /boot.

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

Creăm 3 partiție, care va fi folosită de asemenea ca bloc în care va fi LVM.

(parted) mkpart primary 1028MiB 100% 

În acest caz, setarea steagului nu este obligatorie, dar dacă este necesar, poate fi setat cu următoarea comandă.

(parted) set 3 raid on

Verificăm tabelul de partiții creat.

(parted) p                                                                
Model: ATA TOSHIBA DT01ACA3 (scsi)
Disc /dev/sdc: 3001GB
Dimensiunea sectorului (logic./fizic.): 512B/4096B
Tabelul de partiții: gpt
Disk Flags: 

Număr  Început  Sfârșit   Dimensiune  Sistem de fișiere  Nume      Steaguri
 1     1049kB  3146kB  2097kB                    primary  bios_grub
 2     3146kB  1077MB  1074MB                    primary  boot
 3     1077MB  3001GB  3000GB                    primary

Atribuim discului un nou GUID aleator.

sgdisk -G /dev/sdd

2. Eliminarea partițiilor primului disc din raid-uri

Verificăm starea matricei

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

În sistem sunt utilizate 2 raid-uri: md126 (punct de montare /boot) — constă din /dev/sda1 și /dev/sdb1, md127 (LVM pentru swap și rădăcina sistemului de fișiere) — constă din /dev/sda2 și /dev/sdb2.

Marcăm sectoarele primului disc, care sunt utilizate În fiecare matrice, ca fiind defecte.

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

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

Eliminăm partițiile dispozitivului bloc /dev/sda din arraye.

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

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

Verificăm starea raid-ului după eliminarea discului.

[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. Adăugarea partițiilor pe noul disc în raid

Următorul pas este de a adăuga partițiile noului disc în raid-uri pentru sincronizare. Să vedem starea curentă a partiționării discurilor.

[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  

Secțiunea /dev/sdc1 este bios_grub partiția și nu participă la crearea raid-urilor. Numai în raid-uri vor fi implicate /dev/sdc2 și /dev/sdc3. Adăugăm aceste partiții în raid-urile corespunzătoare.

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

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

După aceea, așteptăm sincronizarea raid-ului.

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

Structura discurilor după adăugarea partițiilor în masiv.

[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. Eliminarea partițiilor de pe al doilea disc din masele

Marcăm partițiile celui de-al doilea disc, folosite în fiecare array, ca fiind defecte.

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

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

Eliminăm partițiile dispozitivului bloc /dev/sda din arraye.

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

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

5. Copiem tabelul de partiții GPT și sincronizăm masivul

Pentru a copia tabelul de partiții GPT, vom folosi utilitarul sgdisk, care face parte din pachetul pentru gestionarea partițiilor discurilor și tabelului GPT — gdisk.

Instalare gdisk pentru CentOS:

yum install -y gdisk

Instalare gdisk pentru Debian/Ubuntu:

apt install -y gdisk

ATENȚIE: Pentru GPT în primul rând se specifică discul pe care copiem structura, al doilea discul specifică discul de la care copiază structura. Dacă se confundă discurile, structura inițial corectă va fi suprascrisă și distrusă.

Copiem tabelul de partiții GPT.

sgdisk -R /dev/sdd /dev/sdc

Structura discurilor după transferul tabelului pe disc /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  

Apoi, adăugăm fiecare dintre partiții, care participă la masele RAID software.

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

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

Așteptăm sincronizarea masivului.

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

După copierea schemei GPT pe al doilea disc nou, schema va arăta astfel.

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

Apoi instalăm GRUB pe noile discuri.

Instalare pentru CentOS:

grub2-install /dev/sdX

Instalare pentru Debian/Ubuntu:

grub-install /dev/sdX

unde X — litera discului, în cazul nostru discurile /dev/sdc și /dev/sdd.

Actualizăm informațiile despre raid.

Pentru CentOS:

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

Pentru Debian/Ubuntu:

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

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

Actualizăm imaginea initrd:
Pentru CentOS:

dracut -f -v --regenerate-all

Pentru Debian/Ubuntu:

update-initramfs -u -k all

Actualizăm configurația GRUB.

Pentru CentOS:

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

Pentru Debian/Ubuntu:

update-grub

După finalizarea acțiunilor, discurile vechi pot fi scoase.

6. Extinderea sistemului de fișiere (ext4) pe partția principală

Schema discurilor înainte de extinderea sistemului de fișiere după transferul sistemului pe discuri de 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]

Acum secțiunile /dev/sdc3 și /dev/sdd3 ocupă 2.7 TB. Deoarece am creat un nou format de disc cu tabel GPT, dimensiunea celor 3 partiții a fost stabilită imediat la maximum posibil, astfel că extinderea partiției nu este necesară în acest caz.

Necesită:

  1. Extinderea RAID-ului md126,
  2. Extinderea PV (volum fizic),
  3. Extinderea LV (volum logic) vg0-root,
  4. Extinderea sistemului de fișiere.

1. Extindem RAID-ul md126 până la maxim.

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

După extinderea RAID-ului md126 dimensiunea spațiului ocupat a crescut la 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]

Extindem volum fizic.

Înainte de extindere, verificăm valoarea curentă a spațiului ocupat PE /dev/md126.

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

Extindem PV cu următoarea comandă.

pvresize /dev/md126

Verificăm dacă acțiunea a avut loc.

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

Extindem volumul logic vg0-root.

După extinderea PV, verificăm spațiul ocupat de VG.

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

Verificăm spațiul ocupat de 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            

Volumul vg0-root ocupă 206.41 GB.

Extindem LV la maximumul spațiului de disc.

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

Verificăm spațiul LV după extindere.

[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

Extindem sistemul de fișiere (ext4).

Verificăm dimensiunea curentă a sistemului de fișiere.

[root@localhost ~]# df -h
Sistem de fișiere     Dimensiune Utilizat  Disponibil Utilizat% Montat pe
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

Volumul /dev/mapper/vg0-root ocupă 204 GB după extinderea LV.

Extindem sistemul de fișiere.

resize2fs \/dev\/mapper\/vg0-root 

Verificăm dimensiunea sistemului de fișiere după extindere.

[root@localhost ~]# df -h
Sistem de fișiere     Dimensiune Utilizat  Rămas Utilizat% Montat în
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

Dimensiunea sistemului de fișiere a fost crescută la întreaga capacitate a volumului.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster