Anstataŭigante pli malgrandajn diskojn per pli grandaj diskoj en Linukso

Saluton al ĉiuj. Antaŭtagmeze de la komenco de nova kursgrupo "Linuksa Administranto" Ni publikigas utilan materialon skribitan de nia studento, same kiel kursmentoron, teknikan subtenon specialiston por kompaniaj produktoj REG.RU - Roman Travin.

Ĉi tiu artikolo konsideros 2 kazojn de anstataŭigo de diskoj kaj translokado de informoj al novaj diskoj de pli granda kapablo kun plia ekspansio de la tabelo kaj dosiersistemo. La unua kazo koncernas la anstataŭigon de diskoj kun la sama MBR/MBR aŭ GPT/GPT-dispartigo, la dua kazo koncernas la anstataŭigon de diskoj kun MBR-diskodo kun diskoj kun kapacito de pli ol 2 TB, sur kiuj vi devos instali. GPT-disko kun biosboot-disko. En ambaŭ kazoj, la diskoj al kiuj ni transdonas la datumojn jam estas instalitaj sur la servilo. La dosiersistemo uzata por la radikdisko estas ext4.

Kazo 1: Anstataŭigi pli malgrandajn diskojn per pli grandaj diskoj (ĝis 2TB)

Tasko: Anstataŭigi nunajn diskojn per pli grandaj diskoj (ĝis 2 TB) per informtransdono. En ĉi tiu kazo, ni havas 2 x 240 GB SSD (RAID-1) diskojn kun la sistemo instalita kaj 2 x 1 TB SATA diskoj al kiuj la sistemo devas esti translokigita.

Ni rigardu la nunan diskaranĝon.

[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  

Ni kontrolu la nuntempe uzatan dosiersisteman spacon.

[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

La grandeco de la dosiersistemo antaŭ anstataŭigo de diskoj estas 204 GB, 2 md126 programaraj tabeloj estas uzataj, kiuj estas muntitaj en /boot и md127, kiu estas uzata kiel fizika volumeno por VG-grupo vg0.

1. Forigante diskpartojn de tabeloj

Kontrolante la staton de la tabelo

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

La sistemo uzas 2 tabelojn: md126 (montpunkto /boot) - konsistas el sekcio /dev/sda1 и /dev/sdb1, md127 (LVM por swap kaj la radiko de la dosiersistemo) - konsistas el /dev/sda2 и /dev/sdb2.

Ni markas la sekciojn de la unua disko, kiuj estas uzataj en ĉiu tabelo, kiel malbonaj.

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

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

Ni forigas la /dev/sda-blokajn aparatdiskojn de la tabeloj.

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

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

Post kiam ni forigis la diskon de la tabelo, la informoj pri bloka aparato aspektos tiel.

[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  

Stato de tabeloj post forigo de diskoj.

[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. Kopiu la dispartigan tabelon al nova disko

Vi povas kontroli la uzatan disktablon sur la disko per la sekva komando.

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

La eligo por MBR estus:

Disk label type: dos

por GPT:

Disk label type: gpt

Kopiante la sekciotabelon por MBR:

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

En ĉi tiu teamo unue stirado estas indikita с el kiuj la markado estas kopiita, dua - kie kopio.

ATENTO: Por GPT unue stirado estas indikita sur kiu kopii markadon dua disko indikas la diskon de kiu kopii markadon. Se vi miksas la diskojn, la komence bona subdisko estos anstataŭita kaj detruita.

Kopiante la aranĝan tabelon por GPT:

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

Poste, asignu hazardan UUID al la disko (por GPT).


sgdisk -G /dev/sdc

Post kiam la komando estas ekzekutita, la sekcioj devus aperi sur la disko /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  

Se, post kiam la ago estas farita, la subdiskoj en la sistemo sur la disko /dev/sdc nedecidite, tiam ni plenumas la komandon por relegi la diskpartigan tabelon.

sfdisk -R /dev/sdc

Se la nunaj diskoj uzas la MBR-tabelon kaj informoj devas esti transdonitaj al diskoj pli grandaj ol 2 TB, tiam sur novaj diskoj vi devos permane krei GPT-dispartigon uzante la biosboot-diskon. Ĉi tiu kazo estos diskutita en Parto 2 de ĉi tiu artikolo.

3. Aldonante sekciojn de la nova disko al la tabelo

Ni aldonu diskpartojn al la respondaj tabeloj.

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

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

Ni kontrolas, ke la sekcioj estas aldonitaj.

[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  

Post ĉi tio, ni atendas ke la tabeloj sinkroniĝos.

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

Vi povas kontinue kontroli la sinkronigan procezon uzante la ilon watch.

watch -n 2 cat /proc/mdstat

Parametro -n specifas je kiuj intervaloj en sekundoj la komando devas esti efektivigita por kontroli progreson.

Ripetu paŝojn 1 - 3 por la sekva anstataŭiga disko.

Ni markas la sekciojn de la dua disko, kiuj estas uzataj en ĉiu tabelo, kiel malbonaj.

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

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

Forigante blokajn aparatajn sekciojn /dev/sdb de tabeloj.

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

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

Post kiam ni forigis la diskon de la tabelo, la informoj pri bloka aparato aspektos tiel.

[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  

Stato de tabeloj post forigo de diskoj.

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

Kopiante la MBR-diskotabelon de la disko /dev/sdс al disko /dev/sdd.

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

Post kiam la komando estas ekzekutita, la sekcioj devus aperi sur la disko /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  

Aldonante diskpartojn al tabeloj.

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

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

Ni kontrolas, ke la sekcioj estas aldonitaj.

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

Post ĉi tio, ni atendas ke la tabeloj sinkroniĝos.

[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. Instalante GRUB sur novaj diskoj

Por CentOS:

grub2-install /dev/sdX

Por Debian/Ubuntu:

grub-install /dev/sdX

kie X — letero de la bloka aparato. En ĉi tiu kazo, vi devas instali GRUB sur /dev/sdc и /dev/sdd.

6. Dosiersistema etendo (ext4) de la radika subdisko

Sur novaj diskoj /dev/sdc и /dev/sdd 931.5 GB disponeblaj. Pro la fakto, ke la sekciotabelo estis kopiita de pli malgrandaj diskoj, la sekcioj /dev/sdc2 и /dev/sdd2 222.5 GB disponeblaj.

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]

Estas necese:

  1. Etendi subdiskon 2 sur ĉiu el la diskoj,
  2. Vastigi tabelon md127,
  3. Pligrandigi PV (fizika volumeno),
  4. Vastigu LV (logika-volumeno) vg0-radiko,
  5. Pligrandigu la dosiersistemon.

Uzante la utilecon disigita ni vastigu la sekcion /dev/sdc2 al la maksimuma valoro. Efektivigu la komandon parted /dev/sdc (1) kaj rigardu la nunan disdividan tabelon per la komando p (2).

Anstataŭigante pli malgrandajn diskojn per pli grandaj diskoj en Linukso

Kiel vi povas vidi, la fino de subdisko 2 finiĝas je 240 GB. Ni vastigu la subdiskon per la komando resizepart 2, kie 2 estas la nombro de sekcio (3). Ni indikas la valoron en cifereca formato, ekzemple 1000 GB, aŭ uzas la indikon de la diskparto - 100%. Ni denove kontrolas, ke la subdisko havas la novan grandecon (4).

Ripetu la suprajn paŝojn por la disko /dev/sdd. Post vastigado de sekcioj /dev/sdc2 и /dev/sdd2 iĝis egala al 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]

Post ĉi tio ni vastigas la tabelon Md127 al la maksimumo.

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

Ni kontrolas, ke la tabelo disetendiĝis. Nun ĝia grandeco fariĝis 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]

Etendante la etendon fizika volumeno. Antaŭ ol pligrandigi, ni kontrolu la nunan staton de la 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   ]

Kiel videblas, PV /dev/md127 uzas 222.4 GB da spaco.

Ni vastigas PV per la sekva komando.

pvresize /dev/md127

Kontrolante la rezulton de PV-vastigo.

[

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   ]

Vastiĝanta logika volumeno. Antaŭ ol pligrandigi, ni kontrolu la nunan staton de 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 uzas 206.41 GB.

Ni vastigas LV per la sekva komando (2).

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

Ni kontrolas la plenumitan agon (3).

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

Kiel vi povas vidi, post vastigado de LV, la kvanto de okupita diskspaco fariĝis 914.39 GB.

Anstataŭigante pli malgrandajn diskojn per pli grandaj diskoj en Linukso

La LV-volumo pliiĝis (4), sed la dosiersistemo ankoraŭ okupas 204 GB (5).

1. Ni vastigu la dosiersistemon.

resize2fs /dev/mapper/vg0-root

Post kiam la komando estas ekzekutita, ni kontrolas la grandecon de la dosiersistemo.

[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

La grandeco de la radika dosiersistemo pliiĝos al 900 GB. Post plenumi la paŝojn, vi povas forigi la malnovajn diskojn.

Kazo 2: Anstataŭigi pli malgrandajn diskojn per pli grandaj diskoj (pli ol 2TB)

Ekzerco: Anstataŭigi la nunajn diskojn per pli grandaj diskoj (2 x 3TB) konservante la informojn. En ĉi tiu kazo, ni havas 2 x 240 GB SSD (RAID-1) diskojn kun la sistemo instalita kaj 2 x 3 TB SATA diskoj al kiuj la sistemo devas esti translokigita. Nunaj diskoj uzas la MBR-diskotabelon. Ĉar novaj diskoj havas kapaciton pli grandan ol 2 TB, ili devos uzi GPT-tabelon, ĉar MBR ne povas funkcii kun diskoj pli grandaj ol 2 TB.

Ni rigardu la nunan diskaranĝon.

[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  

Ni kontrolu la diskpartigan tabelon uzatan sur la disko /dev/sda.

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

Sur disko /dev/sdb simila disparttabulo estas uzata. Ni kontrolu la uzatan diskspacon en la sistemo.

[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

Kiel vi povas vidi, la radiko de la dosiersistemo okupas 204 GB. Ni kontrolu la nunan staton de la programaro RAID-tabelo.

1. Instalado de GPT-dispartiga tablo kaj diskpartigado

Ni kontrolu la disko-aranĝon laŭ sektoro.

[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

Sur la nova disko de 3TB ni devos krei 3 sekciojn:

  1. Sekcio bios_grub 2MiB grandeco por GPT BIOS-kongruo,
  2. La sekcio por la RAID-tabelo, kiu estos muntita enen /boot.
  3. La sekcio por la RAID-tabelo sur kiu estos LV radiko и LV-interŝanĝo.

Instalante la utilecon disigita teamo yum install -y parted (por CentOS), apt install -y parted (por Debian/Ubuntu).

Uzante disigita Ni rulu la sekvajn komandojn por dividi la diskon.

Efektivigu la komandon parted /dev/sdc kaj iru al disko-aranĝa redakta reĝimo.

Kreu GPT-diskondan tabelon.

(parted) mktable gpt

Kreu 1 sekcion bios_grub sekcio kaj starigu flagon por ĝi.

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

Kreu subdiskon 2 kaj starigu flagon por ĝi. La sekcio estos uzata kiel bloko por RAID-tabelo kaj muntita enen /boot.

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

Ni kreas 3-an sekcion, kiu ankaŭ estos uzata kiel tabelbloko en kiu situos LVM.

(parted) mkpart primary 1028MiB 100% 

En ĉi tiu kazo, ne necesas agordi la flagon, sed se necese, ĝi povas esti agordita per la sekva komando.

(parted) set 3 raid on

Ni kontrolas la kreitan tabelon.

(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

Ni asignas novan hazardan GUID al la disko.

sgdisk -G /dev/sdd

2. Forigante sekciojn de la unua disko el tabeloj

Kontrolante la staton de la tabelo

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

La sistemo uzas 2 tabelojn: md126 (montpunkto /boot) - konsistas el /dev/sda1 и /dev/sdb1, md127 (LVM por swap kaj la radiko de la dosiersistemo) - konsistas el /dev/sda2 и /dev/sdb2.

Ni markas la sekciojn de la unua disko, kiuj estas uzataj en ĉiu tabelo, kiel malbonaj.

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

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

Forigante blokajn aparatajn sekciojn /dev/sda de tabeloj.

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

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

Kontrolante la staton de la tabelo post forigo de la disko.

[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. Aldonante sekciojn de la nova disko al la tabelo

La sekva paŝo estas aldoni sekciojn de la nova disko al la tabeloj por sinkronigado. Ni rigardu la nunan staton de disko-aranĝo.

[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  

Sekcio /dev/sdc1 Estas bios_grub sekcio kaj ne estas implikita en la kreado de tabeloj. La tabeloj nur uzos /dev/sdc2 и /dev/sdc3. Ni aldonas ĉi tiujn sekciojn al la respondaj tabeloj.

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

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

Tiam ni atendas ke la tabelo sinkroniĝu.

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

Diska aranĝo post aldoni sekciojn al la tabelo.

[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. Forigante sekciojn de la dua disko de tabeloj

Ni markas la sekciojn de la dua disko, kiuj estas uzataj en ĉiu tabelo, kiel malbonaj.

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

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

Forigante blokajn aparatajn sekciojn /dev/sda de tabeloj.

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

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

5. Kopiu la GPT-aranĝan tabelon kaj sinkronigu la tabelon

Por kopii la GPT-marktablon ni uzos la ilon sgdisk, kiu estas inkluzivita en la pakaĵo por labori kun diskpartoj kaj GPT-tabelo - gdisk.

fikso gdisk por CentOS:

yum install -y gdisk

fikso gdisk por Debian/Ubuntu:

apt install -y gdisk

ATENTO: Por GPT unue stirado estas indikita sur kiu kopiu la markadon, dua disko indikas la diskon de kiu kopiu la markadon. Se vi miksas la diskojn, la komence bona subdisko estos anstataŭita kaj detruita.

Kopiu la GPT markada tabelo.

sgdisk -R /dev/sdd /dev/sdc

Diskpartigo post translokado de tablo al disko /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  

Poste, ni aldonas ĉiun el la sekcioj partoprenantaj en programaraj RAID-tabeloj.

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

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

Ni atendas la sinkronigi la tabelon.

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

Post kopiado de la GPT-disko al la dua nova disko, la subdisko aspektos tiel.

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

Poste, instalu GRUB sur la novaj diskoj.

Instalado por CentOS:

grub2-install /dev/sdX

Instalado por Debian/Ubuntu:

grub-install /dev/sdX

kie X — stirletero, en nia kazo stiradoj /dev/sdc и /dev/sdd.

Ni ĝisdatigas informojn pri la tabelo.

Por CentOS:

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

Por Debian/Ubuntu:

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

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

Ĝisdatigante la bildon initrd:
Por CentOS:

dracut -f -v --regenerate-all

Por Debian/Ubuntu:

update-initramfs -u -k all

Ni ĝisdatigas la agordon de GRUB.

Por CentOS:

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

Por Debian/Ubuntu:

update-grub

Post plenumi la paŝojn, la malnovaj diskoj povas esti forigitaj.

6. Dosiersistema etendo (ext4) de la radika subdisko

Diskpartigo antaŭ dosiersistemvastigo post migrado de la sistemo al 2 x 3TB-diskoj (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]

Nun sekcioj /dev/sdc3 и /dev/sdd3 okupas 2.7 TB. Ĉar ni kreis novan diskaranĝon kun GPT-tabelo, la grandeco de subdisko 3 tuj estis agordita al la maksimuma ebla diskspaco; en ĉi tiu kazo, ne necesas vastigi la subdiskon.

Estas necese:

  1. Vastigi tabelon md126,
  2. Pligrandigi PV (fizika volumeno),
  3. Vastigu LV (logika-volumeno) vg0-radiko,
  4. Pligrandigu la dosiersistemon.

1. Vastigu la tabelon md126 al la maksimumo.

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

Post ekspansio de tabelo md126 la grandeco de la okupata spaco pliiĝis al 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]

Vastiĝanta fizika volumeno.

Antaŭ ol pligrandigi, kontrolu la nunan valoron de la okupata spaco PV /dev/md126.

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

Ni vastigas PV per la sekva komando.

pvresize /dev/md126

Ni kontrolas la plenumitan agon.

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

Vastiĝanta logika volumo vg0-radiko.

Post vastiĝo de PV, ni kontrolu la okupatan spacon VG.

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

Ni kontrolu la spacon okupitan 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            

La vg0-radika volumo okupas 206.41 GB.

Ni vastigas LV al la maksimuma diskospaco.

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

Kontrolante la LV-spacon post ekspansio.

[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

Vastigante la dosiersistemon (ext4).

Ni kontrolu la nunan grandecon de la dosiersistemo.

[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

La volumo /dev/mapper/vg0-root okupas 204 GB post LV-vastigo.

Pligrandigante la dosiersistemon.

resize2fs /dev/mapper/vg0-root 

Kontrolante la grandecon de la dosiersistemo post vastigado de ĝi.

[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

La dosiersistemo grandeco estis pliigita por kovri la tutan volumon.

fonto: www.habr.com

Aldoni komenton