Výměna menších disků za větší v Linuxu

Ahoj všichni. V předvečer zahájení nové skupiny kurzů "Správce Linuxu" Publikujeme užitečný materiál, který napsal náš student, ale i mentor kurzu, specialista technické podpory pro firemní produkty REG.RU - Roman Travin.

Tento článek se bude zabývat 2 případy výměny disků a přenosu informací na nové disky s větší kapacitou s dalším rozšířením pole a souborového systému. První případ se bude týkat výměny disků se stejným rozdělením MBR/MBR nebo GPT/GPT, druhý případ výměny disků s rozdělením MBR za disky s kapacitou větší než 2 TB, na které bude potřeba nainstalovat oddíl GPT s oddílem biosboot. V obou případech jsou disky, na které data přenášíme, již nainstalovány na serveru. Souborový systém používaný pro kořenový oddíl je ext4.

Případ 1: Výměna menších disků za větší disky (až 2 TB)

Úkol: Vyměňte současné disky za větší disky (až 2 TB) s přenosem informací. V tomto případě tu máme 2 x 240 GB SSD (RAID-1) disky s nainstalovaným systémem a 2 x 1 TB SATA disky, na které je potřeba systém přenést.

Podívejme se na aktuální rozložení disku.

[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  

Zkontrolujeme aktuálně používaný prostor souborového systému.

[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 souborového systému před výměnou disků je 204 GB, jsou použita 2 softwarová pole md126, která se montují v /boot и md127, který se používá jako fyzický objem pro skupinu VG vg0.

1. Odstranění diskových oddílů z polí

Kontrola stavu pole

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

Systém používá 2 pole: md126 (bod připojení /boot) - skládá se z oddílu /dev/sda1 и /dev/sdb1, md127 (LVM pro výměna a kořen souborového systému) – skládá se z /dev/sda2 и /dev/sdb2.

Oddíly prvního disku, které jsou použity v každém poli, označíme jako špatné.

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

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

Z polí odstraníme oddíly blokových zařízení /dev/sda.

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

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

Poté, co vyjmeme disk z pole, budou informace o blokovém zařízení vypadat takto.

[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  

Stav polí po vyjmutí disků.

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

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

unused devices: <none>

2. Zkopírujte tabulku oddílů na nový disk

Použitou tabulku oddílů na disku můžete zkontrolovat pomocí následujícího příkazu.

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

Výstup pro MBR by byl:

Disk label type: dos

pro GPT:

Disk label type: gpt

Kopírování tabulky oddílů pro MBR:

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

V tomto týmu nejprve je indikován disk с z toho označení se zkopíruje, druhý - kde kopírovat.

UPOZORNĚNÍ: Pro GPT nejprve je indikován disk na kterých kopírovat označení, druhá disk označuje disk z nichž kopírovat označení. Pokud zaměníte disky, původně dobrý oddíl bude přepsán a zničen.

Kopírování tabulky rozvržení pro GPT:

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

Dále disku přiřaďte náhodné UUID (pro GPT).


sgdisk -G /dev/sdc

Po provedení příkazu by se oddíly měly objevit 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  

Pokud se po provedení akce oddíly v systému na disku /dev/sdc nerozhodnutý, pak provedeme příkaz k opětovnému přečtení tabulky oddílů.

sfdisk -R /dev/sdc

Pokud aktuální disky používají tabulku MBR a informace je třeba přenést na disky větší než 2 TB, pak na nových discích budete muset ručně vytvořit oddíl GPT pomocí oddílu biosboot. Tento případ bude popsán v části 2 tohoto článku.

3. Přidání oddílů nového disku do pole

K odpovídajícím polím přidáme diskové oddíly.

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

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

Zkontrolujeme, zda byly sekce přidány.

[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  

Poté počkáme, až se pole synchronizují.

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

Pomocí nástroje můžete průběžně sledovat proces synchronizace watch.

watch -n 2 cat /proc/mdstat

Parametr -n určuje, v jakých intervalech v sekundách musí být příkaz proveden, aby se zkontroloval průběh.

Opakujte kroky 1–3 pro další náhradní disk.

Oddíly druhého disku, které jsou použity v každém poli, označíme jako špatné.

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

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

Odstranění oddílů blokového zařízení /dev/sdb z polí.

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

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

Poté, co vyjmeme disk z pole, budou informace o blokovém zařízení vypadat takto.

[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  

Stav polí po vyjmutí disků.

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

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

unused devices: <none>

Zkopírování tabulky oddílů MBR z disku /dev/sdс na disk /dev/sdd.

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

Po provedení příkazu by se oddíly měly objevit na disku /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  

Přidání diskových oddílů do polí.

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

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

Zkontrolujeme, zda byly sekce přidány.

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

Poté počkáme, až se pole synchronizují.

[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. Instalace GRUB na nové disky

Pro CentOS:

grub2-install /dev/sdX

Pro Debian/Ubuntu:

grub-install /dev/sdX

kde X — písmeno blokového zařízení. V tomto případě musíte nainstalovat GRUB /dev/sdc и /dev/sdd.

6. Přípona systému souborů (ext4) kořenového oddílu

Na nových discích /dev/sdc и /dev/sdd K dispozici 931.5 GB. Vzhledem k tomu, že tabulka oddílů byla zkopírována z menších disků, oddíly /dev/sdc2 и /dev/sdd2 K dispozici 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]

Je nutné:

  1. Rozšiřte oddíl 2 na každém z disků,
  2. Rozbalit pole md127,
  3. Rozbalte PV (fyzický objem),
  4. Rozbalte LV (logický svazek) vg0-root,
  5. Rozbalte systém souborů.

Pomocí utility rozdělil se rozšíříme sekci /dev/sdc2 na maximální hodnotu. Proveďte příkaz parted /dev/sdc (1) a pomocí příkazu zobrazte aktuální tabulku oddílů p (2).

Výměna menších disků za větší v Linuxu

Jak vidíte, konec oddílu 2 končí na 240 GB. Rozbalíme oddíl pomocí příkazu resizepart 2, kde 2 je číslo sekce (3). Hodnotu uvádíme v digitálním formátu, například 1000 GB, nebo použijeme údaj o sdílení disku - 100 %. Znovu zkontrolujeme, že oddíl má novou velikost (4).

Opakujte výše uvedené kroky pro disk /dev/sdd. Po rozbalení oddílů /dev/sdc2 и /dev/sdd2 se rovnala 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]

Poté pole rozšíříme md127 na maximum.

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

Zkontrolujeme, zda se pole rozšířilo. Nyní se jeho velikost stala 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]

Prodloužení prodloužení fyzický objem. Před rozbalením zkontrolujme aktuální stav FV.

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

Jak je vidět, PV /dev/md127 využívá 222.4 GB prostoru.

PV rozbalíme následujícím příkazem.

pvresize /dev/md127

Kontrola výsledku expanze FV.

[

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   ]

Rozšiřující se logický objem. Před rozšířením zkontrolujme aktuální stav 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 používá 206.41 GB.

LV rozbalíme následujícím příkazem (2).

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

Zkontrolujeme dokončenou akci (3).

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

Jak vidíte, po rozšíření LV se velikost obsazeného místa na disku stala 914.39 GB.

Výměna menších disků za větší v Linuxu

Objem LV se zvýšil (4), ale souborový systém stále zabírá 204 GB (5).

1. Rozšiřme souborový systém.

resize2fs /dev/mapper/vg0-root

Po provedení příkazu zkontrolujeme velikost souborového systému.

[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 kořenového systému souborů se zvýší na 900 GB. Po dokončení kroků můžete staré disky vyjmout.

Případ 2: Výměna menších disků za větší disky (více než 2 TB)

Zadání: Vyměňte stávající disky za větší disky (2 x 3 TB) při zachování informací. V tomto případě máme 2 x 240 GB SSD (RAID-1) disky s nainstalovaným systémem a 2 x 3 TB SATA disky, na které je potřeba systém přenést. Současné disky používají tabulku oddílů MBR. Protože nové disky mají kapacitu větší než 2 TB, budou muset použít tabulku GPT, protože MBR nemůže pracovat s disky většími než 2 TB.

Podívejme se na aktuální rozložení disku.

[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  

Zkontrolujeme tabulku oddílů použitou na disku /dev/sda.

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

Na disku /dev/sdb používá se podobná tabulka oddílů. Pojďme zkontrolovat použité místo na disku v systému.

[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

Jak vidíte, kořen souborového systému zabírá 204 GB. Pojďme zkontrolovat aktuální stav softwarového pole RAID.

1. Instalace tabulky oddílů GPT a rozdělení disku

Zkontrolujeme rozložení disku podle sektorů.

[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 novém 3TB disku budeme muset vytvořit 3 oddíly:

  1. Část bios_grub Velikost 2MiB pro kompatibilitu GPT BIOS,
  2. Oddíl pro pole RAID, do kterého bude připojeno /boot.
  3. Oddíl pro pole RAID, na kterém bude LV kořen и Výměna LV.

Instalace utility rozdělil se tým yum install -y parted (pro CentOS), apt install -y parted (pro Debian/Ubuntu).

Použití rozdělil se Spusťte následující příkazy k rozdělení disku.

Proveďte příkaz parted /dev/sdc a přejděte do režimu úprav rozložení disku.

Vytvořte tabulku oddílů GPT.

(parted) mktable gpt

Vytvořte 1 sekci bios_grub sekce a nastavit pro ni vlajku.

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

Vytvořte oddíl 2 a nastavte pro něj příznak. Oddíl bude použit jako blok pro pole RAID a připojen /boot.

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

Vytvoříme 3. sekci, která bude také použita jako blok pole, ve kterém bude umístěn LVM.

(parted) mkpart primary 1028MiB 100% 

V tomto případě není nutné příznak nastavovat, ale v případě potřeby jej lze nastavit následujícím příkazem.

(parted) set 3 raid on

Vytvořenou tabulku zkontrolujeme.

(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

Disk přiřadíme nový náhodný GUID.

sgdisk -G /dev/sdd

2. Odstranění oddílů prvního disku z polí

Kontrola stavu pole

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

Systém používá 2 pole: md126 (připojovací bod /boot) - skládá se z /dev/sda1 и /dev/sdb1, md127 (LVM pro swap a kořen souborového systému) – skládá se z /dev/sda2 и /dev/sdb2.

Oddíly prvního disku, které jsou použity v každém poli, označíme jako špatné.

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

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

Odstranění oddílů blokového zařízení /dev/sda z polí.

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

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

Kontrola stavu pole po vyjmutí disku.

[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. Přidání oddílů nového disku do pole

Dalším krokem je přidání oddílů nového disku do polí pro synchronizaci. Podívejme se na aktuální stav rozložení disku.

[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  

Část /dev/sdc1 to je bios_grub sekce a nepodílí se na vytváření polí. Pole budou pouze používat /dev/sdc2 и /dev/sdc3. Tyto sekce přidáme do odpovídajících polí.

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

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

Poté počkáme, až se pole synchronizuje.

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

Rozdělení disku po přidání oddílů do pole.

[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. Odebrání oddílů druhého disku z polí

Oddíly druhého disku, které jsou použity v každém poli, označíme jako špatné.

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

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

Odstranění oddílů blokového zařízení /dev/sda z polí.

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

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

5. Zkopírujte tabulku rozložení GPT a synchronizujte pole

Ke zkopírování tabulky značek GPT použijeme nástroj sgdisk, který je součástí balení pro práci s diskovými oddíly a tabulkou GPT - gdisk.

Instalace gdisk pro CentOS:

yum install -y gdisk

Instalace gdisk pro Debian/Ubuntu:

apt install -y gdisk

UPOZORNĚNÍ: Pro GPT nejprve je indikován disk na kterých zkopírovat označení, druhá disk označuje disk z nichž zkopírujte označení. Pokud zaměníte disky, původně dobrý oddíl bude přepsán a zničen.

Zkopírujte tabulku značek GPT.

sgdisk -R /dev/sdd /dev/sdc

Rozdělení disku po přenosu tabulky 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  

Dále přidáme každý z oddílů účastnících se softwarových polí RAID.

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

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

Čekáme na synchronizaci pole.

[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 zkopírování oddílu GPT na druhý nový disk bude oddíl vypadat takto.

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

Dále nainstalujte GRUB na nové disky.

Instalace pro CentOS:

grub2-install /dev/sdX

Instalace pro Debian/Ubuntu:

grub-install /dev/sdX

kde X — písmeno jednotky, v našem případě jednotky /dev/sdc и /dev/sdd.

Aktualizujeme informace o poli.

Pro CentOS:

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

Pro Debian/Ubuntu:

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

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

Aktualizace obrázku initrd:
Pro CentOS:

dracut -f -v --regenerate-all

Pro Debian/Ubuntu:

update-initramfs -u -k all

Aktualizujeme konfiguraci GRUB.

Pro CentOS:

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

Pro Debian/Ubuntu:

update-grub

Po dokončení kroků lze staré disky vyjmout.

6. Přípona systému souborů (ext4) kořenového oddílu

Rozdělení disku před rozšířením systému souborů po migraci systému na disky 2 x 3 TB (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]

Nyní sekce /dev/sdc3 и /dev/sdd3 zabírají 2.7 TB. Protože jsme vytvořili nové rozložení disku s tabulkou GPT, velikost oddílu 3 byla okamžitě nastavena na maximální možné místo na disku, v tomto případě není nutné oddíl rozšiřovat.

Je nutné:

  1. Rozbalit pole md126,
  2. Rozbalte PV (fyzický objem),
  3. Rozbalte LV (logický svazek) vg0-root,
  4. Rozbalte systém souborů.

1. Rozbalte pole md126 na maximum.

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

Po rozšíření pole md126 velikost obsazeného prostoru se zvýšila 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]

Rozšiřující se fyzický objem.

Před rozbalením zkontrolujte aktuální hodnotu obsazeného prostoru PV /dev/md126.

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

PV rozbalíme následujícím příkazem.

pvresize /dev/md126

Dokončenou akci zkontrolujeme.

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

Rozšiřující se logický svazek vg0-root.

Po rozbalení PV zkontrolujme obsazené místo VG.

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

Zkontrolujme místo obsazené LV.

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

Vg0-root svazek zabírá 206.41 GB.

Rozšiřujeme LV na maximální místo na disku.

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

Kontrola prostoru NN po rozšíření.

[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

Rozšíření systému souborů (ext4).

Zkontrolujeme aktuální velikost souborového systému.

[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

Svazek /dev/mapper/vg0-root zabírá po rozšíření LV 204 GB.

Rozšíření systému souborů.

resize2fs /dev/mapper/vg0-root 

Kontrola velikosti souborového systému po jeho rozbalení.

[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 systému souborů byla zvětšena tak, aby pokryla celý svazek.

Zdroj: www.habr.com

Přidat komentář