Zamenjava manjših diskov z večjimi v Linuxu

Pozdravljeni vsi skupaj. Na predvečer začetka nove tečajne skupine "Linux Administrator" Objavljamo koristno gradivo, ki ga je napisal naš študent, pa tudi mentor tečaja, strokovnjak za tehnično podporo za korporativne izdelke REG.RU - Roman Travin.

Ta članek bo obravnaval 2 primera zamenjave diskov in prenosa informacij na nove diske večje zmogljivosti z nadaljnjo širitvijo polja in datotečnega sistema. V prvem primeru gre za zamenjavo diskov z enako MBR/MBR ali GPT/GPT particioniranjem, v drugem primeru pa za zamenjavo diskov z MBR particioniranjem z diski s kapaciteto nad 2 TB, na katere boste morali namestiti particijo GPT s particijo biosboot. V obeh primerih sta diska, na katera prenašamo podatke, že nameščena na strežniku. Datotečni sistem, uporabljen za korensko particijo, je ext4.

1. primer: Zamenjava manjših diskov z večjimi (do 2TB)

Naloga: Zamenjajte trenutne diske z večjimi (do 2 TB) s prenosom informacij. V tem primeru imamo 2 x 240 GB SSD (RAID-1) diska z nameščenim sistemom in 2 x 1 TB SATA diska, na katera je potrebno prenesti sistem.

Poglejmo trenutno postavitev diska.

[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  

Preverimo trenutno uporabljen prostor datotečnega sistema.

[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

Velikost datotečnega sistema pred zamenjavo diskov je 204 GB, uporabljena sta 2 programska polja md126, ki je nameščena v /boot и md127, ki se uporablja kot fizični volumen za skupino VG vg0.

1. Odstranjevanje diskovnih particij iz nizov

Preverjanje stanja matrike

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

Sistem uporablja 2 polja: md126 (točka pritrditve /boot) - sestoji iz razdelka /dev/sda1 и /dev/sdb1, md127 (LVM za swap in koren datotečnega sistema) - sestavljen iz /dev/sda2 и /dev/sdb2.

Particije prvega diska, ki se uporabljajo v posameznem polju, označimo kot slabe.

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

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

Iz nizov odstranimo particije blokovnih naprav /dev/sda.

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

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

Ko odstranimo disk iz polja, bodo informacije o blokovni napravi videti takole.

[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  

Stanje nizov po odstranitvi diskov.

[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. Kopirajte particijsko tabelo na nov disk

Uporabljeno tabelo particij na disku lahko preverite z naslednjim ukazom.

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

Izhod za MBR bi bil:

Disk label type: dos

za GPT:

Disk label type: gpt

Kopiranje particijske tabele za MBR:

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

V tej ekipi prvi disk je označen с od tega oznaka je kopirana, drugič - kje kopirati.

POZOR: Za GPT prvi disk je označen na katerem kopiranje oznake, drugič disk označuje disk od katerih kopijo oznake. Če pomešate diske, bo prvotno dobra particija prepisana in uničena.

Kopiranje tabele postavitve za GPT:

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

Nato disku dodelite naključni UUID (za GPT).


sgdisk -G /dev/sdc

Po izvedbi ukaza bi se morale na disku pojaviti particije /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  

Če po izvedbi dejanja particije v sistemu na disku /dev/sdc neodločen, nato izvedemo ukaz za ponovno branje particijske tabele.

sfdisk -R /dev/sdc

Če trenutni diski uporabljajo tabelo MBR in je treba podatke prenesti na diske, večje od 2 TB, boste morali na novih diskih ročno ustvariti particijo GPT z uporabo particije biosboot. O tem primeru bomo razpravljali v 2. delu tega članka.

3. Dodajanje particij novega diska v polje

Ustreznim poljem dodamo diskovne particije.

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

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

Preverimo, ali so razdelki dodani.

[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  

Po tem počakamo, da se nizi sinhronizirajo.

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

S pomočjo pripomočka lahko nenehno spremljate proces sinhronizacije watch.

watch -n 2 cat /proc/mdstat

Parameter -n določa, v katerih intervalih v sekundah mora biti ukaz izveden za preverjanje napredka.

Ponovite korake 1–3 za naslednji nadomestni disk.

Particije drugega diska, ki se uporabljajo v vsakem polju, označimo kot slabe.

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

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

Odstranjevanje blokovnih particij naprave /dev/sdb iz nizov.

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

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

Ko odstranimo disk iz polja, bodo informacije o blokovni napravi videti takole.

[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  

Stanje nizov po odstranitvi diskov.

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

Kopiranje particijske tabele MBR z diska /dev/sdс na disk /dev/sdd.

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

Po izvedbi ukaza bi se morale na disku pojaviti particije /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  

Dodajanje diskovnih particij v polja.

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

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

Preverimo, ali so razdelki dodani.

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

Po tem počakamo, da se nizi sinhronizirajo.

[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. Namestitev GRUB na nove pogone

Za CentOS:

grub2-install /dev/sdX

Za Debian/Ubuntu:

grub-install /dev/sdX

če X — črka blokovne naprave. V tem primeru morate GRUB namestiti na /dev/sdc и /dev/sdd.

6. Pripona datotečnega sistema (ext4) korenske particije

Na novih diskih /dev/sdc и /dev/sdd Na voljo 931.5 GB. Ker je bila particijska tabela prekopirana z manjših diskov, particije /dev/sdc2 и /dev/sdd2 Na voljo 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]

Potrebno je:

  1. Razširite particijo 2 na vsakem od diskov,
  2. Razširi niz md127,
  3. Razširi PV (fizična glasnost),
  4. Razširite LV (logični nosilec) vg0-root,
  5. Razširite datotečni sistem.

Uporaba pripomočka razdeljen razširimo razdelek /dev/sdc2 na največjo vrednost. Izvedite ukaz parted /dev/sdc (1) in si oglejte trenutno particijsko tabelo z ukazom p (2).

Zamenjava manjših diskov z večjimi v Linuxu

Kot lahko vidite, se konec particije 2 konča pri 240 GB. Razširimo particijo z ukazom resizepart 2, kjer je 2 številka odseka (3). Vrednost navedemo v digitalni obliki, na primer 1000 GB, ali uporabimo navedbo diskovnega deleža - 100%. Ponovno preverimo, ali ima particija novo velikost (4).

Ponovite zgornje korake za disk /dev/sdd. Po razširitvi predelnih sten /dev/sdc2 и /dev/sdd2 postal enak 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]

Po tem razširimo matriko md127 do maksimuma.

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

Preverimo, ali se je niz razširil. Zdaj je njegova velikost postala 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]

Podaljšanje podaljška fizični volumen. Pred razširitvijo preverimo 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   ]

Kot je razvidno, PV /dev/md127 uporablja 222.4 GB prostora.

PV razširimo z naslednjim ukazom.

pvresize /dev/md127

Preverjanje rezultata PV ekspanzije.

[

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   ]

Širi se logični volumen. Pred razširitvijo preverimo 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 uporablja 206.41 GB.

LV razširimo z naslednjim ukazom (2).

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

Preverimo opravljeno akcijo (3).

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

Kot lahko vidite, je po razširitvi LV količina zasedenega prostora na disku postala 914.39 GB.

Zamenjava manjših diskov z večjimi v Linuxu

Prostornina LV se je povečala (4), vendar datotečni sistem še vedno zaseda 204 GB (5).

1. Razširimo datotečni sistem.

resize2fs /dev/mapper/vg0-root

Po izvedbi ukaza preverimo velikost datotečnega sistema.

[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

Velikost korenskega datotečnega sistema se bo povečala na 900 GB. Ko končate korake, lahko odstranite stare diske.

2. primer: Zamenjava manjših diskov z večjimi (več kot 2TB)

Naloga: Zamenjajte trenutne diske z večjimi diski (2 x 3TB), pri tem pa ohranite podatke. V tem primeru imamo 2 x 240 GB SSD (RAID-1) diska z nameščenim sistemom in 2 x 3 TB SATA diska, na katera je potrebno prenesti sistem. Trenutni diski uporabljajo particijsko tabelo MBR. Ker imajo novi diski kapaciteto večjo od 2 TB, bodo morali uporabiti tabelo GPT, saj MBR ne more delovati z diski, večjimi od 2 TB.

Poglejmo trenutno postavitev diska.

[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  

Preverimo particijsko tabelo, uporabljeno na disku /dev/sda.

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

Na disku /dev/sdb uporabljena je podobna razdelilna tabela. Preverimo zaseden prostor na disku v sistemu.

[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

Kot lahko vidite, koren datotečnega sistema zavzame 204 GB. Preverimo trenutno stanje programskega polja RAID.

1. Namestitev particijske tabele GPT in particioniranje diska

Preverimo postavitev diska po sektorjih.

[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

Na novem 3TB disku bomo morali ustvariti 3 particije:

  1. Oddelek bios_grub Velikost 2 MiB za združljivost GPT BIOS,
  2. Particija za polje RAID, v katero bo nameščen /boot.
  3. Particija za polje RAID, na kateri bo Koren LV и Zamenjava LV.

Namestitev pripomočka razdeljen ekipa yum install -y parted (za CentOS), apt install -y parted (za Debian/Ubuntu).

Uporaba razdeljen Zaženimo naslednje ukaze za razdelitev diska.

Izvedite ukaz parted /dev/sdc in pojdite v način urejanja postavitve diska.

Ustvarite particijsko tabelo GPT.

(parted) mktable gpt

Ustvarite 1 razdelek bios_grub in zanj nastavite zastavico.

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

Ustvarite particijo 2 in nastavite zastavico zanjo. Particija bo uporabljena kot blok za polje RAID in nameščena vanj /boot.

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

Ustvarimo 3. razdelek, ki bo uporabljen tudi kot blok polja, v katerem bo LVM.

(parted) mkpart primary 1028MiB 100% 

V tem primeru zastavice ni potrebno nastaviti, po potrebi pa jo lahko nastavimo z naslednjim ukazom.

(parted) set 3 raid on

Preverimo izdelano tabelo.

(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

Disku dodelimo nov naključni GUID.

sgdisk -G /dev/sdd

2. Odstranjevanje particij prvega diska iz nizov

Preverjanje stanja matrike

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

Sistem uporablja 2 niza: md126 (mount point /boot) - sestavljen iz /dev/sda1 и /dev/sdb1, md127 (LVM za swap in koren datotečnega sistema) - sestavljen iz /dev/sda2 и /dev/sdb2.

Particije prvega diska, ki se uporabljajo v posameznem polju, označimo kot slabe.

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

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

Odstranjevanje blokovnih particij naprave /dev/sda iz nizov.

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

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

Preverjanje stanja polja po odstranitvi diska.

[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. Dodajanje particij novega diska v polje

Naslednji korak je dodajanje particij novega diska v polja za sinhronizacijo. Poglejmo trenutno stanje postavitve diska.

[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  

Oddelek /dev/sdc1 je bios_grub in ne sodeluje pri ustvarjanju nizov. Nizi bodo uporabljali samo /dev/sdc2 и /dev/sdc3. Te razdelke dodamo v ustrezne nize.

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

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

Nato počakamo, da se niz sinhronizira.

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

Particioniranje diska po dodajanju particij v polje.

[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. Odstranjevanje particij drugega diska iz nizov

Particije drugega diska, ki se uporabljajo v vsakem polju, označimo kot slabe.

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

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

Odstranjevanje blokovnih particij naprave /dev/sda iz nizov.

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

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

5. Kopirajte tabelo postavitve GPT in sinhronizirajte matriko

Za kopiranje označevalne tabele GPT bomo uporabili pripomoček sgdisk, ki je vključen v paket za delo s particijami diska in tabelo GPT - gdisk.

Namestitev gdisk za CentOS:

yum install -y gdisk

Namestitev gdisk za Debian/Ubuntu:

apt install -y gdisk

POZOR: Za GPT prvi disk je označen na katerem kopiraj oznako, drugič disk označuje disk od katerih kopirajte oznako. Če pomešate diske, bo prvotno dobra particija prepisana in uničena.

Kopirajte označevalno tabelo GPT.

sgdisk -R /dev/sdd /dev/sdc

Particioniranje diska po prenosu tabele na disk /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  

Nato dodamo vsako od particij, ki sodelujejo v programskih nizih RAID.

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

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

Čakamo na sinhronizacijo polja.

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

Po kopiranju particije GPT na drugi novi disk bo particija videti takole.

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

Nato namestite GRUB na nove diske.

Namestitev za CentOS:

grub2-install /dev/sdX

Namestitev za Debian/Ubuntu:

grub-install /dev/sdX

če X — črka pogona, v našem primeru pogoni /dev/sdc и /dev/sdd.

Posodabljamo podatke o matriki.

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

Posodabljanje slike initrd:
Za CentOS:

dracut -f -v --regenerate-all

Za Debian/Ubuntu:

update-initramfs -u -k all

Posodobimo konfiguracijo GRUB.

Za CentOS:

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

Za Debian/Ubuntu:

update-grub

Po opravljenih korakih lahko stare diske odstranite.

6. Pripona datotečnega sistema (ext4) korenske particije

Particioniranje diska pred razširitvijo datotečnega sistema po selitvi sistema na diske 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]

Zdaj razdelki /dev/sdc3 и /dev/sdd3 zasedejo 2.7 TB. Ker smo ustvarili novo postavitev diska s tabelo GPT, je bila velikost particije 3 takoj nastavljena na največji možni prostor na disku; v tem primeru ni treba razširiti particije.

Potrebno je:

  1. Razširi niz md126,
  2. Razširi PV (fizična glasnost),
  3. Razširite LV (logični nosilec) vg0-root,
  4. Razširite datotečni sistem.

1. Razširite matriko md126 do maksimuma.

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

Po razširitvi polja md126 velikost zasedenega prostora se je povečala 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]

Širi se fizični volumen.

Pred razširitvijo preverite trenutno vrednost zasedenega prostora PV /dev/md126.

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

PV razširimo z naslednjim ukazom.

pvresize /dev/md126

Preverimo opravljeno dejanje.

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

Širi se logični nosilec vg0-root.

Po razširitvi PV preverimo zaseden prostor VG.

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

Preverimo prostor, ki ga zaseda 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            

Nosilec vg0-root zavzema 206.41 GB.

LV razširimo na največji diskovni prostor.

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

Preverjanje LV prostora po ekspanziji.

[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

Razširitev datotečnega sistema (ext4).

Preverimo trenutno velikost datotečnega sistema.

[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

Nosilec /dev/mapper/vg0-root zaseda 204 GB po razširitvi LV.

Razširitev datotečnega sistema.

resize2fs /dev/mapper/vg0-root 

Preverjanje velikosti datotečnega sistema po njegovi razširitvi.

[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

Velikost datotečnega sistema je bila povečana, da pokrije celoten nosilec.

Vir: www.habr.com

Dodaj komentar