Zamena diskova manjeg kapaciteta diskovima većeg kapaciteta u Linux-u

Pozdrav svima. Uoči početka nove grupe kursa „Administrator Linuxa“ objavljujemo korisne materijale koje je napisao naš student, kao i mentor na kursu, stručnjak za tehničku podršku korporativnih proizvoda REG.RU — Roman Travin.

U ovom članku razmotrićemo 2 slučaja zamjene diskova i prenosa informacija na nove diskove većeg kapaciteta uz daljnje proširenje niza i datotečnog sistema. Prvi slučaj će se odnositi na zamjenu diskova s istom razmjenom MBR/MBR ili GPT/GPT, drugi slučaj se odnosi na zamjenu diskova s razmjenom MBR na diskove kapaciteta većeg od 2 TB, za koje će biti potrebno postaviti razmjenu GPT s biosboot particijom. U oba slučaja, diskovi na koje prenosimo podatke su već instalirani u server. Datotečni sistem koji se koristi za korijensku particiju — ext4.

Slučaj 1: Zamjena manjih diskova diskovima većeg kapaciteta (do 2TB)

Zadatak: Zamijeniti trenutne diskove diskovima većeg kapaciteta (do 2 TB) s prijenosom informacija. U ovom slučaju imamo diskove 2 x 240 GB SSD (RAID-1) s instaliranim sistemom i diskove 2 x 1 TB SATA, na koje je potrebno prenijeti sistem.

Razmotrite trenutnu razmjenu diskova.

[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  

Provjerimo trenutno korištenje prostora datotečnog sistema.

[root@localhost ~]# df -h
Datotečni sistem     Veličina Korišteno  Slobodno Korišteno% Montirano u
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

Veličina datotečnog sistema prije zamjene diskova iznosi 204 GB, koriste se 2 softverska niza md126, koji je montiran u /boot i md127, koji se koristi kao fizički volumen za VG grupu vg0.

1. Uklanjanje particija diska iz nizova

Provjeravamo stanje niza

[root@localhost ~]# cat /proc/mdstat 
Osobine : [raid1] 
md126 : aktivan raid1 sda1[0] sdb1[1]
      1047552 blokova super 1.2 [2/2] [UU]
      bitmap: 0/1 stranice [0KB], 65536KB komad

md127 : aktivan raid1 sda2[0] sdb2[1]
      233206784 blokova super 1.2 [2/2] [UU]
      bitmap: 0/2 stranice [0KB], 65536KB komad

neiskorišteni uređaji:

U sustavu se koriste 2 niza: md126 (točka montaže /boot) — sastoji se od particije /dev/sda1 i /dev/sdb1, md127 (LVM za swap i korijena datotečnog sustava) — sastoji se od /dev/sda2 i /dev/sdb2.

Označavamo particije prvog diska koje se koriste u svakom nizu kao neispravne.

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

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

Uklanjamo particije blok uređaja /dev/sda iz nizova.

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

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

Nakon što smo uklonili disk iz niza, informacija o blok uređajima će izgledati ovako.

[root@localhost ~]# lsblk
IME           MAJ:MIN RM   VELIČINA RO TIPA  TOČKA_MONTAŽE
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 dio  
└─sda2           8:2    0 222,5G  0 dio  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 dio  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 dio  
  └─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  

Stanje nizova nakon uklanjanja diskova.

[root@localhost ~]# cat /proc/mdstat 
Osobine : [raid1] 
md126 : aktivan raid1 sdb1[1]
      1047552 blokova super 1.2 [2/1] [_U]
      bitmap: 0/1 stranice [0KB], 65536KB komad

md127 : aktivan raid1 sdb2[1]
      233206784 blokova super 1.2 [2/1] [_U]
      bitmap: 1/2 stranice [4KB], 65536KB komad

neiskorišteni uređaji:

2. Kopiranje tablice particija na novi disk

Provjeriti korištenu tablicu particija na disku može se sljedećom naredbom.

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

Izlaz za MBR bit će:

Disk label type: dos

za GPT:

Disk label type: gpt

Kopiranje tablice particija za MBR:

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

U ovoj naredbi prvoga navodimo disk s čija se kopira particija, drugoga — kamo kopirati.

PAŽNJA: Za GPT prvoga navodimo disk na koji se kopira particija, drugim diskom navodimo disk s kojeg se kopira particija. Ako se zamijene diskovi, izvorna ispravna particija će biti prepisana i uništena.

Kopiranje tablice particija za GPT:

sgdisk -R /dev/sdc /dev/sdb

Zatim dodjeljujemo disku nasumični UUID (za GPT).


sgdisk -G /dev/sdc

Nakon izvršene naredbe, particije bi se trebale pojaviti na disku. /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  

Ako nakon izvršene radnje particije na sustavu na disku /dev/sdc nisu se odredile, izvršavamo naredbu da bismo ponovo učitali tablicu particija.

sfdisk -R /dev/sdc

Ako se na trenutnim diskovima koristi MBR tablica i informacije je potrebno prenijeti na diskove veće od 2 TB, bit će potrebno ručno stvoriti GPT particiju na novim diskovima koristeći biosboot particiju. Ovaj slučaj bit će obrađen u drugom dijelu ovog članka.

3. Dodavanje particija novog diska u niz

Dodajemo particije diska u odgovarajuće nizove.

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

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

Provjeravamo jesu li particije dodane.

[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  

Nakon toga čekamo da se nizovi sinkroniziraju.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : aktivan raid1 sdc1[2] sdb1[1]
      1047552 blokova super 1.2 [2/2] [UU]
      bitmap: 0/1 stranice [0KB], 65536KB komadić

md127 : aktivan raid1 sdc2[2] sdb2[1]
      233206784 blokova super 1.2 [2/1] [_U]
      [==>..................]  oporavak = 10.6% (24859136/233206784) završetak=29.3min brzina=118119K/sec
      bitmap: 2/2 stranice [8KB], 65536KB komadić

neiskorišteni uređaji:

Neprekidno pratiti proces sinkronizacije moguće je pomoću alata watch.

watch -n 2 cat /proc/mdstat

Parametar -n navodi s kojim intervalom u sekundama treba izvršiti naredbu za provjeru napretka.

Ponovite točke 1 — 3 za sljedeći zamjenski disk.

Označavamo particije drugog diska koje se koriste u svakom nizu kao neispravne.

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

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

Uklanjamo particije blok uređaja /dev/sdb iz nizova.

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

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

Nakon što smo uklonili disk iz niza, informacija o blok uređajima će izgledati ovako.

[root@localhost ~]# lsblk
IME           MAJ:MIN RM   VELIČINA RO TIP  MOUTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 dio  
└─sda2           8:2    0 222,5G  0 dio  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 dio  
└─sdb2           8:18   0 222,5G  0 dio  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 dio  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 dio  
  └─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  

Stanje nizova nakon uklanjanja diskova.

[root@localhost ~]# cat /proc/mdstat 
Osobnosti : [raid1] 
md126 : aktivni raid1 sdc1[2]
      1047552 blokova super 1.2 [2/1] [U_]
      bitmap: 0/1 stranice [0KB], 65536KB komad

md127 : aktivni raid1 sdc2[2]
      233206784 blokova super 1.2 [2/1] [U_]
      bitmap: 1/2 stranice [4KB], 65536KB komad

neiskorišteni uređaji:

Kopiramo MBR tablicu s diska /dev/sdс na disk /dev/sdd.

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

Nakon izvršene naredbe, particije bi se trebale pojaviti na disku. /dev/sdd.

[root@localhost ~]# lsblk
IME           MAJ:MIN RM   VELIČINA RO TIP  MOUTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 dio  
└─sda2           8:2    0 222,5G  0 dio  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 dio  
└─sdb2           8:18   0 222,5G  0 dio  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 dio  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 dio  
  └─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 dio  
└─sdd2           8:50   0 222,5G  0 dio  

Dodajemo particije diska u nizove.

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

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

Provjeravamo jesu li particije dodane.

[root@localhost ~]# lsblk
IME           MAJ:MIN RM   VELIČINA RO TIP  MOUTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 dio  
└─sda2           8:2    0 222,5G  0 dio  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 dio  
└─sdb2           8:18   0 222,5G  0 dio  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 dio  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 dio  
  └─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 dio  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd2           8:50   0 222,5G  0 dio  
  └─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]

Nakon toga čekamo da se nizovi sinkroniziraju.

[root@localhost ~]# cat /proc/mdstat 
Osobnosti : [raid1] 
md126 : aktivni raid1 sdd1[3] sdc1[2]
      1047552 blokova super 1.2 [2/2] [UU]
      bitmap: 0/1 stranice [0KB], 65536KB komad

md127 : aktivni raid1 sdd2[3] sdc2[2]
      233206784 blokova super 1.2 [2/1] [U_]
      [>....................]  obnova =  0.5% (1200000/233206784) završava za 35.4min brzina=109090K/sec
      bitmap: 2/2 stranice [8KB], 65536KB komad

neiskorišteni uređaji:

5. Instalacija GRUB-a na nove diskove

Za CentOS:

grub2-install /dev/sdX

Za Debian/Ubuntu:

grub-install /dev/sdX

gdje X — slovo blok uređaja. U ovom slučaju potrebno je instalirati GRUB na /dev/sdc i /dev/sdd.

6. Proširenje datotečnog sustava (ext4) korijenskog dijela

Na novim diskovima /dev/sdc i /dev/sdd dostupno je 931,5 GB. Budući da je tablica particija kopirana s diskova manjeg kapaciteta, na particijama /dev/sdc2 i /dev/sdd2 dostupno je 222,5 GB.

sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 dio  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 dio  
  └─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 dio  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd2           8:50   0 222,5G  0 dio  
  └─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]

Potrebno je:

  1. Proširiti particiju 2 na svakom od diskova,
  2. Proširiti niz md127,
  3. Proširiti PV (fizički volumen),
  4. Proširiti LV (logički volumen) vg0-root,
  5. Proširiti datotečni sustav.

Koristeći alat parted proširit ćemo particiju /dev/sdc2 do maksimalne vrijednosti. Izvršavamo naredbu parted /dev/sdc (1) i pregledavamo trenutnu tablicu particija naredbom p (2).

Zamena diskova manjeg kapaciteta diskovima većeg kapaciteta u Linux-u

Kao što se može vidjeti, kraj particije 2 završava na 240 GB. Izvršavamo proširenje particije naredbom resizepart 2, gdje je 2 — broj particije (3). Navodimo vrijednost u numeričkom formatu, primjerice 1000 GB, ili koristimo postotak diska — 100%. Ponovno provjeravamo da li particija ima novu veličinu (4).

Ponovimo navedene radnje za disk /dev/sdd. Nakon proširenja particija /dev/sdc2 i /dev/sdd2 postali su jednaki 930,5 GB.

[root@localhost ~]# lsblk                                                 
NAME           MAJ:MIN RM   SIZE RO VRSTA  TOČKA MOUNT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 dio  
└─sda2           8:2    0 222,5G  0 dio  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 dio  
└─sdb2           8:18   0 222,5G  0 dio  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 dio  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 930,5G  0 dio  
  └─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 dio  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd2           8:50   0 930,5G  0 dio  
  └─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]

Nakon toga izvršavamo proširenje niza md127 do maksimuma.

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

Provjeravamo da li je niz proširen. Sada je njegova veličina 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]

Provodimo širenje fizički volumen. Prije širenja provjerimo trenutno stanje 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   ]

Kao što se može vidjeti, PV /dev/md127 koristi 222.4 GB prostora.

Širimo PV sljedećom naredbom.

pvresize \/dev\/md127

Provjeravamo rezultat širenja 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   ]

Širimo logički volumen. Prije širenja provjerimo trenutno stanje 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 koristi 206.41 GB.

Širimo LV sljedećom naredbom (2).

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

Provjeravamo izvršenu radnju (3).

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

Kao što vidimo, nakon širenja LV volumen zauzetog prostora na disku postao je 914.39 GB.

Zamena diskova manjeg kapaciteta diskovima većeg kapaciteta u Linux-u

Zapremina LV se povećala (4), ali datotečni sustav i dalje zauzima 204 GB (5).

1. Provodimo širenje datotečnog sustava.

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

Provjeravamo nakon izvršene naredbe veličinu datotečnog sustava.

[root@localhost ~]# df -h
Datotečni sustav     Veličina Korišteno  Dostupno Korišteno% Montirano u
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

Veličina korijenskog datotečnog sustava povećat će se na 900 GB. Nakon izvršenih radnji mogu se izvući stari diskovi.

Slučaj 2: Zamjena diskova manjeg volumena sa diskovima većeg volumena (više od 2TB)

Zadatak: Zamijeniti trenutačne diskove s diskovima većeg kapaciteta (2 x 3TB) uz očuvanje informacija. U ovom slučaju imamo diskove 2 x 240 GB SSD (RAID-1) s instaliranim sustavom i diskove 2 x 3 TB SATA, na koje je potrebno prenijeti sustav. Na trenutnim diskovima koristi se MBR particijska tablica. Budući da novi diskovi imaju kapacitet veći od 2 TB, na njima će biti potrebno koristiti GPT tablicu, budući da MBR ne može raditi s diskovima većim od 2 TB.

Pogledajmo trenutačnu raspodjelu diskova.

[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  

Provjerimo koju particijsku tablicu koristi disk /dev/sda.

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

Na disku /dev/sdb koristi se slična particijska tablica. Provjerimo iskorišten prostor diska u sustavu.

[root@localhost ~]# df -h
Sustav datoteka     Veličina Iskorišteno  Slobodno % Korišteno Cmontirano u
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

Kao što se vidi, korijen datotečnog sustava zauzima 204 GB. Provjerimo trenutačno stanje softverskog RAID niza.

1. Postavljanje GPT particijske tablice i raspodjela diska

Provjerimo raspodjelu diskova po sektorima.

[root@localhost ~]# parted /dev/sda print
Model: ATA KINGSTON SVP200S (scsi)
Disk /dev/sda: 240GB
Veličina sektora (logički/fizički): 512B/512B
Particijska tablica: msdos
Disk oznake:

Broj  Početak  Kraj   Veličina  Tip      Datotečni sustav  Oznake
 1     1049kB  1076MB  1075MB  primary                    bootable, raid
 2     1076MB  240GB   239GB   primary                    raid

Na novom 3TB disku trebat ćemo stvoriti 3 particije:

  1. Odjeljak bios_grub veličine 2MiB za kompatibilnost GPT s BIOS-om,
  2. Particija za RAID niz koji će biti montiran u /boot.
  3. Particija za RAID niz na kojem će biti LV root i LV swap.

Instaliramo alat parted komandom yum install -y parted (za CentOS), apt install -y parted (za Debian/Ubuntu).

Koristeći parted izvršavamo sljedeće naredbe za particioniranje diska.

Izvršavamo komandu parted /dev/sdc i prelazimo u režim uređivanja particioniranja diska.

Kreiramo GPT tablicu particija.

(parted) mktable gpt

Kreiramo 1. particiju bios_grub particiju i postavljamo oznaku za nju.

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

Kreiramo 2. particiju i postavljamo oznaku za nju. Ova particija će se koristiti kao blok za RAID niz i montirat će se u /boot.

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

Kreiramo 3. particiju, koja će se također koristiti kao blok niza, gdje će biti LVM.

(parted) mkpart primary 1028MiB 100% 

U ovom slučaju nije obavezno postavljati oznaku, ali ako je potrebno, može se postaviti sljedećom naredbom.

(parted) set 3 raid on

Provjeravamo kreiranu tablicu.

(parted) p                                                                
Model: ATA TOSHIBA DT01ACA3 (scsi)
Disk /dev/sdc: 3001GB
Veličina sektora (log./fiz.): 512B/4096B
Tablica particija: gpt
Disk oznake: 

Broj  Početak  Kraj   Veličina  Datotečni sustav  Ime      Oznake
 1     1049kB  3146kB  2097kB                    primary  bios_grub
 2     3146kB  1077MB  1074MB                    primary  pokretačka
 3     1077MB  3001GB  3000GB                    primary

Dodjeljujemo disku novi slučajni GUID.

sgdisk -G /dev/sdd

2. Brisanje particija prvog diska iz nizova

Provjeravamo stanje niza

[root@localhost ~]# cat /proc/mdstat 
Osobine : [raid1] 
md126 : aktivan raid1 sda1[0] sdb1[1]
      1047552 blokova super 1.2 [2/2] [UU]
      bitmap: 0/1 stranice [0KB], 65536KB komad

md127 : aktivan raid1 sda2[0] sdb2[1]
      233206784 blokova super 1.2 [2/2] [UU]
      bitmap: 0/2 stranice [0KB], 65536KB komad

neiskorišteni uređaji:

U sustavu se koriste 2 niza: md126 (točka montiranja /boot) — sastoji se od /dev/sda1 i /dev/sdb1, md127 (LVM za swap i korijena datotečnog sustava) — sastoji se od /dev/sda2 i /dev/sdb2.

Označavamo particije prvog diska koje se koriste u svakom nizu kao neispravne.

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

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

Uklanjamo particije blok uređaja /dev/sda iz nizova.

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

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

Provjeravamo stanje niza nakon brisanja diska.

[root@localhost ~]# cat /proc/mdstat 
Personalnosti : [raid1] 
md126 : aktivan raid1 sdb1[1]
      1047552 blokova super 1.2 [2/1] [_U]
      bitmap: 0/1 stranica [0KB], 65536KBChunk

md127 : aktivan raid1 sdb2[1]
      233206784 blokova super 1.2 [2/1] [_U]
      bitmap: 2/2 stranica [8KB], 65536KBChunk

neiskorišteni uređaji: <none>

3. Dodavanje particija novog diska u niz

Sljedeći korak je dodavanje particija novog diska u nizove radi sinkronizacije. Pogledajte trenutno stanje particioniranja diskova.

[root@localhost ~]# lsblk
IME           MAJ:MIN RM   VELIČINA RO TIP  TOČKA MONTIRANJA
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  

Odjeljak /dev/sdc1 je postao bios_grub particijom i ne sudjeluje u stvaranju nizova. U nizovima će biti uključeni samo /dev/sdc2 i /dev/sdc3. Dodajemo te particije u odgovarajuće nizove.

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

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

Nakon toga čekamo sinkronizaciju niza.

[root@localhost ~]# cat /proc/mdstat 
Osobine : [raid1] 
md126 : aktivan raid1 sdc2[2] sdb1[1]
      1047552 blokova super 1.2 [2/2] [UU]
      bitmap: 0/1 stranice [0KB], 65536KB komad

md127 : aktivan raid1 sdc3[2] sdb2[1]
      233206784 blokova super 1.2 [2/1] [_U]
      [>....................]  oporavak =  0.2% (619904/233206784) završetak=31.2min brzina=123980K/sec
      bitmap: 2/2 stranice [8KB], 65536KB komad
neiskorišteni uređaji:

Raspodjela diska nakon dodavanja particija u niz.

[root@localhost ~]# lsblk
IME           MAJ:MIN RM   VELIČINA RO VRSTA  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. Uklanjanje particija drugog diska iz nizova

Označavamo particije drugog diska koje se koriste u svakom nizu kao neispravne.

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

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

Uklanjamo particije blok uređaja /dev/sda iz nizova.

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

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

5. Kopiramo GPT raspodjelu i sinkroniziramo niz

Za kopiranje GPT raspodjele koristimo alatku sgdisk, koja dolazi u paketu za rad s particijama diskova i GPT raspodjelom — gdisk.

Instalacija gdisk za CentOS:

yum install -y gdisk

Instalacija gdisk za Debian/Ubuntu:

apt install -y gdisk

PAŽNJA: Za GPT prvoga navodimo disk na koji kopiramo raspodjelu, drugim diskom navodimo disk s kojeg kopiraju raspodjelu. Ako se zamijene diskovi, prvobitno ispravna raspodjela bit će prepisana i uništena.

Kopiramo GPT raspodjelu.

sgdisk -R /dev/sdd /dev/sdc

Raspodjela diska nakon prijenosa raspodjele na disk /dev/sdd.

[root@localhost ~]# lsblk
IME           MAJ:MIN RM   VELIČINA RO VRSTA  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  

Nakon toga dodajemo svaku od particija koje sudjeluju u softverskim RAID nizovima.

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

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

Čekamo sinkronizaciju niza.

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

Nakon kopiranja GPT particije na drugi novi disk, particija će izgledati ovako.

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

Sljedeće postavljamo GRUB na nove diskove.

Instalacija za CentOS:

grub2-install /dev/sdX

Instalacija za Debian/Ubuntu:

grub-install /dev/sdX

gdje X — slovo diska, u našem slučaju diskovi /dev/sdc i /dev/sdd.

Ažuriramo informacije o nizu.

Za CentOS:

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

Za Debian/Ubuntu:

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

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

Ažuriramo sliku initrd:
Za CentOS:

dracut -f -v --regenerate-all

Za Debian/Ubuntu:

update-initramfs -u -k all

Ažuriramo konfiguraciju GRUB-a.

Za CentOS:

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

Za Debian/Ubuntu:

update-grub

Nakon izvršenih radnji, stare diskove je moguće izvaditi.

6. Proširenje datotečnog sustava (ext4) korijenskog dijela

Razmjera diskova prije proširenja datotečnog sustava nakon premještanja sustava na diskove 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]

Sada su particije /dev/sdc3 i /dev/sdd3 zauzimaju 2,7 TB. Budući da smo kreirali novu particionu shemu s GPT tablicom, veličina 3 particije odmah je postavljena na maksimalni mogući kapacitet, u ovom slučaju proširenje particije nije potrebno.

Potrebno je:

  1. Proširite niz md126,
  2. Proširiti PV (fizički volumen),
  3. Proširiti LV (logički volumen) vg0-root,
  4. Proširiti datotečni sustav.

1. Proširujemo niz md126 do maksimuma.

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

Nakon proširenja niza md126 veličina zauzetog prostora povećala se na 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]

Širimo fizički volumen.

Prije proširenja provjeravamo trenutnu vrijednost zauzetog prostora PV /dev/md126.

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

Proširujemo PV sljedećom naredbom.

pvresize /dev/md126

Provjeravamo izvršenje radnje.

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

Širimo logički volumen vg0-root.

Nakon proširenja PV provjeravamo zauzeti prostor VG.

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

Provjeravamo zauzeto LV prostor.

[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            

Volumen vg0-root zauzima 206,41 GB.

Proširujemo LV do maksimalnog kapaciteta diska.

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

Provjeravamo prostor LV nakon proširenja.

[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

Proširujemo datotečni sustav (ext4).

Provjeravamo trenutnu veličinu datotečnog sustava.

[root@localhost ~]# df -h
Datotečni sustav     Veličina Zauzeto  Preostalo Zauzeto% Montirano u
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

Volumen /dev/mapper/vg0-root zauzima 204 GB nakon proširenja LV.

Proširujemo datotečni sustav.

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

Provjeravamo veličinu datotečnog sustava nakon što je proširen.

[root@localhost ~]# df -h
Datotečni sustav     Veličina Korisničko  Dostupno Korisničko% Montirano u
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

Veličina datotečnog sustava povećana je na cijeli volumen.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster