Kleinere schijven vervangen door grotere schijven in Linux

Dag Allemaal. Aan de vooravond van de start van een nieuwe cursusgroep "Linux-beheerder" We publiceren nuttig materiaal geschreven door onze student, maar ook door cursusmentor en specialist in technische ondersteuning voor REG.RU-bedrijfsproducten - Roman Travin.

In dit artikel worden twee gevallen besproken van het vervangen van schijven en het overbrengen van informatie naar nieuwe schijven met een grotere capaciteit met verdere uitbreiding van de array en het bestandssysteem. Het eerste geval betreft de vervanging van schijven met dezelfde MBR/MBR- of GPT/GPT-partitionering, het tweede geval betreft de vervanging van schijven met MBR-partitionering door schijven met een capaciteit van meer dan 2 TB, waarop u moet installeren een GPT-partitie met een biosboot-partitie. In beide gevallen zijn de schijven waarnaar we de gegevens overbrengen al op de server geïnstalleerd. Het bestandssysteem dat voor de rootpartitie wordt gebruikt, is ext2.

Geval 1: Kleinere schijven vervangen door grotere schijven (tot 2TB)

doelstelling: Vervang huidige schijven door grotere schijven (tot 2 TB) met informatieoverdracht. In dit geval hebben we 2 x 240 GB SSD (RAID-1) schijven waarop het systeem is geïnstalleerd en 2 x 1 TB SATA-schijven waarnaar het systeem moet worden overgebracht.

Laten we eens kijken naar de huidige schijfindeling.

[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  

Laten we de momenteel gebruikte bestandssysteemruimte controleren.

[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

De grootte van het bestandssysteem vóór het vervangen van schijven is 204 GB, er worden 2 md126-software-arrays gebruikt, die zijn gemount in /boot и md127, die wordt gebruikt als fysiek volume voor VG-groep vg0.

1. Schijfpartities uit arrays verwijderen

De status van de array controleren

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

Het systeem gebruikt 2 arrays: md126 (koppelpunt /boot) - bestaat uit een sectie /dev/sda1 и /dev/sdb1, md127 (LVM voor ruilen en de root van het bestandssysteem) - bestaat uit /dev/sda2 и /dev/sdb2.

We markeren de partities van de eerste schijf die in elke array worden gebruikt als slecht.

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

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

We verwijderen de /dev/sda blokapparaatpartities uit de arrays.

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

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

Nadat we de schijf uit de array hebben verwijderd, ziet de blokapparaatinformatie er als volgt uit.

[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  

Status van arrays na het verwijderen van schijven.

[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. Kopieer de partitietabel naar een nieuwe schijf

U kunt de gebruikte partitietabel op de schijf controleren met de volgende opdracht.

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

De uitvoer voor MBR zou zijn:

Disk label type: dos

voor GPT:

Disk label type: gpt

De partitietabel voor MBR kopiëren:

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

Bij deze opdracht de eerste schijf is aangegeven с waarvan de opmaak wordt gekopieerd, tweede - waar kopiëren.

ВНИМАНИЕ: Voor GPT de eerste schijf is aangegeven waarop? kopieer opmaak, de tweede schijf geeft de schijf aan van welke kopieer opmaak. Als u de schijven door elkaar haalt, wordt de aanvankelijk goede partitie overschreven en vernietigd.

De lay-outtabel voor GPT kopiëren:

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

Wijs vervolgens een willekeurige UUID toe aan de schijf (voor GPT).


sgdisk -G /dev/sdc

Nadat de opdracht is uitgevoerd, moeten de partities op de schijf verschijnen /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  

Als de actie is uitgevoerd, staan ​​de partities in het systeem op de schijf /dev/sdc onbeslist, dan voeren we de opdracht uit om de partitietabel opnieuw te lezen.

sfdisk -R /dev/sdc

Als de huidige schijven de MBR-tabel gebruiken en de informatie moet worden overgebracht naar schijven groter dan 2 TB, dan moet u op nieuwe schijven handmatig een GPT-partitie maken met behulp van de biosboot-partitie. Deze casus wordt besproken in deel 2 van dit artikel.

3. Partities van de nieuwe schijf aan de array toevoegen

Laten we schijfpartities toevoegen aan de overeenkomstige arrays.

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

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

We controleren of de secties zijn toegevoegd.

[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  

Hierna wachten we tot de arrays zijn gesynchroniseerd.

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

U kunt het synchronisatieproces continu volgen met behulp van het hulpprogramma watch.

watch -n 2 cat /proc/mdstat

Parameter -n specificeert met welke intervallen in seconden de opdracht moet worden uitgevoerd om de voortgang te controleren.

Herhaal stap 1 - 3 voor de volgende vervangende schijf.

We markeren de partities van de tweede schijf die in elke array worden gebruikt als slecht.

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

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

Blokapparaatpartities verwijderen /dev/sdb uit arrays.

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

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

Nadat we de schijf uit de array hebben verwijderd, ziet de blokapparaatinformatie er als volgt uit.

[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  

Status van arrays na het verwijderen van schijven.

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

De MBR-partitietabel van de schijf kopiëren /dev/sdс naar schijf /dev/sdd.

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

Nadat de opdracht is uitgevoerd, moeten de partities op de schijf verschijnen /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  

Schijfpartities aan arrays toevoegen.

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

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

We controleren of de secties zijn toegevoegd.

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

Hierna wachten we tot de arrays zijn gesynchroniseerd.

[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. GRUB op nieuwe schijven installeren

Voor CentOS:

grub2-install /dev/sdX

Over Debian/Ubuntu:

grub-install /dev/sdX

waar X — letter van het blokapparaat. In dit geval moet je GRUB installeren /dev/sdc и /dev/sdd.

6. Bestandssysteemextensie (ext4) van de rootpartitie

Op nieuwe schijven /dev/sdc и /dev/sdd 931.5 GB beschikbaar. Vanwege het feit dat de partitietabel van kleinere schijven werd gekopieerd, werden de partities /dev/sdc2 и /dev/sdd2 222.5 GB beschikbaar.

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]

Het is noodzakelijk:

  1. Breid partitie 2 uit op elk van de schijven,
  2. Vouw array md127 uit,
  3. Vouw PV uit (fysiek volume),
  4. Vouw LV (logisch volume) vg0-root uit,
  5. Vouw het bestandssysteem uit.

Het hulpprogramma gebruiken gescheiden laten we de sectie uitbreiden /dev/sdc2 naar de maximale waarde. Voer de opdracht uit parted /dev/sdc (1) en bekijk de huidige partitietabel met de opdracht p (2).

Kleinere schijven vervangen door grotere schijven in Linux

Zoals u kunt zien, eindigt het einde van partitie 2 op 240 GB. Laten we de partitie uitbreiden met de opdracht resizepart 2, waarbij 2 het nummer van sectie (3) is. We geven de waarde aan in digitaal formaat, bijvoorbeeld 1000 GB, of gebruiken de indicatie van het schijfaandeel - 100%. We controleren opnieuw of de partitie de nieuwe grootte (4) heeft.

Herhaal de bovenstaande stappen voor de schijf /dev/sdd. Na het uitbreiden van partities /dev/sdc2 и /dev/sdd2 werd gelijk aan 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]

Hierna breiden we de array uit md127 tot het maximum.

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

We controleren of de array is uitgebreid. Nu is de grootte 930.4 GB geworden.

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

Het verlengen van de extensie fysiek volume. Laten we, voordat we gaan uitbreiden, de huidige status van de PV controleren.

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

Zoals u kunt zien, PV /dev/md127 gebruikt 222.4 GB aan ruimte.

We breiden PV uit met het volgende commando.

pvresize /dev/md127

Het resultaat van PV-uitbreiding controleren.

[

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   ]

Uitbreiden logisch volume. Laten we, voordat we uitbreiden, de huidige status van LV (1) controleren.

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

LV /dev/vg0/root gebruikt 206.41 GB.

We breiden LV uit met het volgende commando (2).

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

We controleren de voltooide actie (3).

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

Zoals u kunt zien, werd de hoeveelheid bezette schijfruimte na het uitbreiden van LV 914.39 GB.

Kleinere schijven vervangen door grotere schijven in Linux

Het LV-volume is toegenomen (4), maar het bestandssysteem beslaat nog steeds 204 GB (5).

1. Laten we het bestandssysteem uitbreiden.

resize2fs /dev/mapper/vg0-root

Nadat de opdracht is uitgevoerd, controleren we de grootte van het bestandssysteem.

[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

De grootte van het rootbestandssysteem zal toenemen tot 900 GB. Nadat u de stappen heeft doorlopen, kunt u de oude schijven verwijderen.

Geval 2: Kleinere schijven vervangen door grotere schijven (meer dan 2TB)

Oefening: Vervang de huidige schijven door grotere schijven (2 x 3TB) met behoud van de informatie. In dit geval hebben we 2 x 240 GB SSD (RAID-1) schijven waarop het systeem is geïnstalleerd en 2 x 3 TB SATA-schijven waarnaar het systeem moet worden overgebracht. Huidige schijven gebruiken de MBR-partitietabel. Omdat nieuwe schijven een capaciteit groter dan 2 TB hebben, zullen ze een GPT-tabel moeten gebruiken, aangezien MBR niet kan werken met schijven groter dan 2 TB.

Laten we eens kijken naar de huidige schijfindeling.

[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  

Laten we de partitietabel controleren die op de schijf wordt gebruikt /dev/sda.

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

Op schijf /dev/sdb er wordt een soortgelijke partitietabel gebruikt. Laten we de gebruikte schijfruimte op het systeem controleren.

[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

Zoals u kunt zien, neemt de root van het bestandssysteem 204 GB in beslag. Laten we de huidige status van de software-RAID-array controleren.

1. Een GPT-partitietabel installeren en schijfpartitionering

Laten we de schijfindeling per sector bekijken.

[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

Op de nieuwe 3TB-schijf moeten we 3 partities maken:

  1. Sectie bios_grub 2MiB-formaat voor GPT BIOS-compatibiliteit,
  2. De partitie voor de RAID-array waarin wordt aangekoppeld /boot.
  3. De partitie voor de RAID-array waarop er zich zal bevinden LV-wortel и LV-wissel.

Het hulpprogramma installeren gescheiden team yum install -y parted (voor CentOS), apt install -y parted (voor Debian/Ubuntu).

Gebruik gescheiden Laten we de volgende opdrachten uitvoeren om de schijf te partitioneren.

Voer de opdracht uit parted /dev/sdc en ga naar de bewerkingsmodus voor de schijfindeling.

Maak een GPT-partitietabel.

(parted) mktable gpt

Maak 1 sectie bios_grub sectie en stel er een vlag voor in.

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

Maak partitie 2 en stel er een vlag voor in. De partitie zal worden gebruikt als blok voor een RAID-array en daarin worden gemonteerd /boot.

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

We maken een derde sectie, die ook zal worden gebruikt als een arrayblok waarin LVM zal worden geplaatst.

(parted) mkpart primary 1028MiB 100% 

In dit geval is het niet nodig om de vlag in te stellen, maar indien nodig kan deze worden ingesteld met het volgende commando.

(parted) set 3 raid on

We controleren de gemaakte tabel.

(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

We wijzen een nieuwe willekeurige GUID toe aan de schijf.

sgdisk -G /dev/sdd

2. Partities van de eerste schijf uit arrays verwijderen

De status van de array controleren

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

Het systeem gebruikt 2 arrays: md126 (aankoppelpunt /boot) - bestaat uit /dev/sda1 и /dev/sdb1, md127 (LVM voor swap en de root van het bestandssysteem) - bestaat uit /dev/sda2 и /dev/sdb2.

We markeren de partities van de eerste schijf die in elke array worden gebruikt als slecht.

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

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

Blokapparaatpartities verwijderen /dev/sda uit arrays.

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

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

De status van de array controleren na het verwijderen van de schijf.

[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. Partities van de nieuwe schijf aan de array toevoegen

De volgende stap is het toevoegen van partities van de nieuwe schijf aan de arrays voor synchronisatie. Laten we eens kijken naar de huidige status van de schijfindeling.

[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  

Sectie /dev/sdc1 is bios_grub sectie en is niet betrokken bij het maken van arrays. De arrays zullen alleen gebruiken /dev/sdc2 и /dev/sdc3. We voegen deze secties toe aan de overeenkomstige arrays.

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

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

Vervolgens wachten we tot de array is gesynchroniseerd.

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

Schijfpartitionering na het toevoegen van partities aan de array.

[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. Partities van de tweede schijf uit arrays verwijderen

We markeren de partities van de tweede schijf die in elke array worden gebruikt als slecht.

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

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

Blokapparaatpartities verwijderen /dev/sda uit arrays.

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

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

5. Kopieer de GPT-indelingstabel en synchroniseer de array

Om de GPT-opmaaktabel te kopiëren, gebruiken we het hulpprogramma sgdisk, dat is opgenomen in het pakket voor het werken met schijfpartities en een GPT-tabel - gdisk.

installatie gdisk voor CentOS:

yum install -y gdisk

installatie gdisk voor Debian/Ubuntu:

apt install -y gdisk

ВНИМАНИЕ: Voor GPT de eerste schijf is aangegeven waarop? kopieer de opmaak, de tweede schijf geeft de schijf aan van welke kopieer de opmaak. Als u de schijven door elkaar haalt, wordt de aanvankelijk goede partitie overschreven en vernietigd.

Kopieer de GPT-opmaaktabel.

sgdisk -R /dev/sdd /dev/sdc

Schijfpartitionering na het overbrengen van een tabel naar schijf /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  

Vervolgens voegen we elk van de partities toe die deelnemen aan software-RAID-arrays.

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

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

We wachten tot de array is gesynchroniseerd.

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

Nadat u de GPT-partitie naar de tweede nieuwe schijf hebt gekopieerd, ziet de partitie er als volgt uit.

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

Installeer vervolgens GRUB op de nieuwe schijven.

Installatie voor CentOS:

grub2-install /dev/sdX

Installatie voor Debian/Ubuntu:

grub-install /dev/sdX

waar X — schijfletter, in ons geval schijven /dev/sdc и /dev/sdd.

We werken informatie over de array bij.

Voor CentOS:

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

Over Debian/Ubuntu:

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

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

De afbeelding bijwerken initrd:
Voor CentOS:

dracut -f -v --regenerate-all

Over Debian/Ubuntu:

update-initramfs -u -k all

We updaten de GRUB-configuratie.

Voor CentOS:

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

Over Debian/Ubuntu:

update-grub

Na het voltooien van de stappen kunnen de oude schijven worden verwijderd.

6. Bestandssysteemextensie (ext4) van de rootpartitie

Schijfpartitionering vóór uitbreiding van het bestandssysteem na migratie van het systeem naar 2 x 3TB-schijven (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]

Nu secties /dev/sdc3 и /dev/sdd3 bezetten 2.7 TB. Omdat we een nieuwe schijfindeling met een GPT-tabel hebben gemaakt, werd de grootte van partitie 3 onmiddellijk ingesteld op de maximaal mogelijke schijfruimte; in dit geval is het niet nodig om de partitie uit te breiden.

Het is noodzakelijk:

  1. Vouw array md126 uit,
  2. Vouw PV uit (fysiek volume),
  3. Vouw LV (logisch volume) vg0-root uit,
  4. Vouw het bestandssysteem uit.

1. Vouw de array uit md126 tot het maximum.

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

Na array-uitbreiding md126 de omvang van de bezette ruimte is toegenomen tot 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]

Uitbreiden fysiek volume.

Controleer vóór het uitbreiden de huidige waarde van de bezette ruimte PV /dev/md126.

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

We breiden PV uit met het volgende commando.

pvresize /dev/md126

We controleren de voltooide actie.

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

Uitbreiden logisch volume vg0-root.

Laten we na het uitbreiden van PV de bezette ruimte VG controleren.

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

Laten we eens kijken naar de ruimte die LV inneemt.

[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            

Het vg0-rootvolume beslaat 206.41 GB.

We breiden LV uit naar de maximale schijfruimte.

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

Controle van de LV-ruimte na expansie.

[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

Het bestandssysteem uitbreiden (ext4).

Laten we de huidige grootte van het bestandssysteem controleren.

[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

Het volume /dev/mapper/vg0-root beslaat 204 GB na LV-uitbreiding.

Het bestandssysteem uitbreiden.

resize2fs /dev/mapper/vg0-root 

De grootte van het bestandssysteem controleren nadat het is uitgebreid.

[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

De bestandssysteemgrootte is vergroot om het volledige volume te bestrijken.

Bron: www.habr.com

Voeg een reactie