Vervangen van kleinere schijven door grotere schijven in Linux

Hallo allemaal. Ter voorbereiding op de start van een nieuwe cursusgroep ‘Linux Beheerder’ publiceren we nuttig materiaal, geschreven door onze student en begeleider in de cursussen, specialist in technische ondersteuning van de zakelijke producten van REG.RU – Roman Travyin.

In dit artikel zullen we twee gevallen van het vervangen van schijven en het overbrengen van informatie naar nieuwe grotere schijven met verdere uitbreiding van de array en het bestandssysteem bespreken. Het eerste geval betreft het vervangen van schijven met een identieke indeling MBR/MBR of GPT/GPT, het tweede geval betreft het vervangen van schijven met een indeling MBR door schijven van meer dan 2 TB, waarvoor de GPT-indeling met een biosboot-partitie moet worden ingesteld. In beide gevallen zijn de schijven waarop we de gegevens overbrengen al geïnstalleerd in server. Het bestandssysteem dat voor de hoofddirectory wordt gebruikt, is ext4.

Geval 1: Vervangen van kleinere schijven door grotere schijven (tot 2TB)

Taak: Vervang de huidige schijven door grotere schijven (tot 2 TB) met het overbrengen van de informatie. In dit geval hebben we schijven 2 x 240 GB SSD (RAID-1) met een geïnstalleerd systeem en schijven 2 x 1 TB SATA, waarop het systeem moet worden overgebracht.

Laten we de huidige schijfindeling bekijken.

[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 gebruikte schijfruimte op dit moment controleren.

[root@localhost ~]# df -h
Bestandssysteem     Grootte In gebruik  Beschikbaar Gebruik% Aangemount op
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 voordat de schijven worden vervangen bedraagt 204 GB, er worden 2 software-RAID's md126 gebruikt, die zijn gemonteerd in /boot en md127, dat wordt gebruikt als fysiek volume voor de VG-groep vg0.

1. Verwijderen van schijfpartities uit arrays

Controleer de status van de array

[root@localhost ~]# cat /proc/mdstat 
Personen: [raid1] 
md126 : actieve raid1 sda1[0] sdb1[1]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pagina's [0KB], 65536KB chunk

md127 : actieve raid1 sda2[0] sdb2[1]
      233206784 blocks super 1.2 [2/2] [UU]
      bitmap: 0/2 pagina's [0KB], 65536KB chunk

ongebruikte apparaten:

Er worden 2 arrays in het systeem gebruikt: md126 (mountpoint /boot) - bestaat uit partition /dev/sda1 en /dev/sdb1, md127 (LVM voor swap en de root van het bestandssysteem) - bestaat uit /dev/sda2 en /dev/sdb2.

Markeer de partities van de eerste schijf die in elk array worden gebruikt als kapot.

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

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

Verwijder de partities van het blokapparaat /dev/sda uit de arrays.

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

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

Nadat we de schijf uit de array hebben verwijderd, zal de informatie over de blokapparaten er als volgt uitzien.

[root@localhost ~]# lsblk
NAAM           MAJ:MIN RM   GROTE RO TYPE  AANSLUITPUNT
sda              8:0    0 223,6G  0 schijf  
├─sda1           8:1    0     1G  0 deel  
└─sda2           8:2    0 222,5G  0 deel  
sdb              8:16   0 223,6G  0 schijf  
├─sdb1           8:17   0     1G  0 deel  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 deel  
  └─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 schijf  
sdd              8:48   0 931,5G  0 schijf  

De status van de arrays na het verwijderen van schijven.

[root@localhost ~]# cat /proc/mdstat 
Personen: [raid1] 
md126 : actieve raid1 sdb1[1]
      1047552 blocks super 1.2 [2/1] [_U]
      bitmap: 0/1 pagina's [0KB], 65536KB chunk

md127 : actieve raid1 sdb2[1]
      233206784 blocks super 1.2 [2/1] [_U]
      bitmap: 1/2 pagina's [4KB], 65536KB chunk

ongebruikte apparaten:

2. Kopiëren van de partitie-tabel naar een nieuwe schijf

De gebruikte partitie-tabel op de schijf kan worden gecontroleerd met het volgende commando.

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

De output voor MBR zal zijn:

Disk label type: dos

voor GPT:

Disk label type: gpt

Kopiëren van de partitie-indeling voor MBR:

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

In dit commando de eerste specificeert de schijf met waarvan de indeling wordt gekopieerd, de tweede - waar deze moet worden gekopieerd.

LET OP: Voor GPT de eerste specificeert de schijf waarop de indeling moet worden gekopieerd, de tweede schijf specificeert de schijf waarvan de indeling moet worden gekopieerd. Als de schijven verwisseld worden, zal de oorspronkelijk correcte indeling worden overschreven en vernietigd. Kopiëren van de partitie-indeling voor GPT:

sgdisk -R /dev/sdc /dev/sdb

Vervolgens wijzen we de schijf een willekeurige UUID toe (voor GPT).

sgdisk -G /dev/sdc


Na het uitvoeren van het commando moeten de partities op de schijf verschijnen.

Na de uitgevoerde opdracht zouden de secties op de schijf zichtbaar moeten zijn /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 partities na de uitgevoerde actie niet zijn herkend, /dev/sdc voeren we de opdracht uit om de partitietabel opnieuw te lezen.

sfdisk -R /dev/sdc

Als de huidige schijven een MBR-partitietabel gebruiken en de informatie naar schijven van meer dan 2 TB moet worden overgezet, moeten op de nieuwe schijven handmatig GPT-partities worden gemaakt met behulp van de biosboot-partitie. Dit geval zal in het tweede deel van dit artikel worden besproken.

3. Partities van de nieuwe schijf aan de array toevoegen

Laten we de partities van de schijf aan de bijbehorende arrays toevoegen.

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

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

We controleren of de partities 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  

Daarna wachten we op de synchronisatie van de arrays.

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : actieve raid1 sdc1[2] sdb1[1]
      1047552 blokken super 1.2 [2/2] [UU]
      bitmap: 0/1 pagina's [0KB], 65536KB chunk

md127 : actieve raid1 sdc2[2] sdb2[1]
      233206784 blokken super 1.2 [2/1] [_U]
      [==>..................]  recuperatie = 10.6% (24859136/233206784) finish=29.3min snelheid=118119K/sec
      bitmap: 2/2 pagina's [8KB], 65536KB chunk

ongebruikte apparaten:

Je kunt continu het synchronisatieproces volgen met de tool watch.

watch -n 2 cat /proc/mdstat

Parameter -n geeft aan met welk interval in seconden de opdracht moet worden uitgevoerd om de voortgang te controleren.

Herhaal stappen 1 — 3 voor de volgende te vervangen schijf.

Markeer de partities van de tweede schijf die in elke array worden gebruikt als defect.

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

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

Verwijder de partities van het blokapparaat /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, zal de informatie over de blokapparaten er als volgt uitzien.

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

De status van de arrays na het verwijderen van schijven.

[root@localhost ~]# cat /proc/mdstat 
Persoonlijkheden : [raid1] 
md126 : actieve raid1 sdc1[2]
      1047552 blokken super 1.2 [2/1] [U_]
      bitmap: 0/1 pagina's [0KB], 65536KB chunk

md127 : actieve raid1 sdc2[2]
      233206784 blokken super 1.2 [2/1] [U_]
      bitmap: 1/2 pagina's [4KB], 65536KB chunk

ongebruikte apparaten:

Kopieer de MBR-partitietabel van de schijf /dev/sdс naar de schijf /dev/sdd.

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

Na de uitgevoerde opdracht zouden de secties op de schijf zichtbaar moeten zijn /dev/sdd.

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

Voeg de partities van de schijf toe aan de arrays.

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

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

We controleren of de partities zijn toegevoegd.

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

Daarna wachten we op de synchronisatie van de arrays.

[root@localhost ~]# cat /proc/mdstat 
Persoonlijkheden : [raid1] 
md126 : actieve raid1 sdd1[3] sdc1[2]
      1047552 blokken super 1.2 [2/2] [UU]
      bitmap: 0/1 pagina's [0KB], 65536KB chunk

md127 : actieve raid1 sdd2[3] sdc2[2]
      233206784 blokken super 1.2 [2/1] [U_]
      [>....................]  herstel =  0.5% (1200000/233206784) voltooiing=35.4min snelheid=109090K/sec
      bitmap: 2/2 pagina's [8KB], 65536KB chunk

ongebruikte apparaten:

5. Installatie van GRUB op de nieuwe schijven

Voor CentOS:

grub2-install /dev/sdX

Voor Debian/Ubuntu:

grub-install /dev/sdX

waar X — de letter van het blokapparaat. In dit geval moet GRUB op geïnstalleerd worden. /dev/sdc en /dev/sdd.

6. Het uitbreiden van het bestandssysteem (ext4) van de root partitie

Op nieuwe schijven /dev/sdc en /dev/sdd zijn 931.5 GB beschikbaar. Omdat de partitietabel is gekopieerd van kleinere schijven, zijn op de partities /dev/sdc2 en /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]

Vereist:

  1. De tweede partitie op elke schijf uitbreiden,
  2. de array md127 uitbreiden,
  3. PV (physical volume) uitbreiden,
  4. LV (logical volume) vg0-root uitbreiden,
  5. het bestandssysteem uitbreiden.

Met behulp van de tool parted vergroten we de partitie /dev/sdc2 tot de maximale waarde. Voer de opdracht uit parted \/dev\/sdc (1) en bekijk de huidige partitietabel met de opdracht Het commando geeft een lijst van onze huidige partities weer. In mijn geval één partitie van 30 GB en nog 20 GB in vrije ruimte, als ik dat zo mag zeggen. (2).

Vervangen van kleinere schijven door grotere schijven in Linux

Het is te zien dat het einde van partitie 2 eindigt op 240 GB. Laten we de partitie uitbreiden met de opdracht resizepart 2, waarbij 2 het partitie nummer is (3). Geef een waarde op in numeriek formaat, bijvoorbeeld 1000 GB, of gebruik een schijfpercentage - 100%. Controleer opnieuw of de partitie de nieuwe grootte heeft (4).

Herhaal de bovenstaande stappen voor de schijf /dev/sdd. Na het uitbreiden zijn de partities /dev/sdc2 en /dev/sdd2 nu 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]

Daarna breiden we de array uit md127 tot het maximum.

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

Controleer of de array is uitgebreid. Nu is de grootte 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]

We voeren de uitbreiding uit fysiek volume. Voor de uitbreiding controleren we de huidige status van de PV.

[root@localhost ~]# pvscan
  PV /dev/md127   VG vg0             lvm2 [222,40 GiB / 0    free]
  Totaal: 1 [222,40 GiB] / in gebruik: 1 [222,40 GiB] / in geen VG: 0 [0   ]

Zoals te zien is, /dev/md127 gebruikt de PV 222.4 GB ruimte.

We vergroten de PV met het volgende commando.

pvresize /dev/md127

We controleren het resultaat van de uitbreiding van de PV.

[

root@localhost ~]# pvscan
  PV /dev/md127   VG vg0             lvm2 [930,38 GiB / 707,98 GiB free]
  Totaal: 1 [930,38 GiB] / in gebruik: 1 [930,38 GiB] / in geen VG: 0 [0   ]

We vergroten logisch volume. Voor de uitbreiding controleren we de huidige status van LV (1).

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

LV /dev/vg0/root gebruikt 206.41 GB.

We vergroten het LV met het volgende commando (2).

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

We controleren de uitgevoerde actie (3).

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

Zoals we zien, is na de uitbreiding het volume van de gebruikte schijfruimte gestegen naar 914.39 GB.

Vervangen van kleinere schijven door grotere schijven in Linux

Het volume van de LV is vergroot (4), maar het bestandssysteem neemt nog steeds 204 GB in (5).

1. Laten we de uitbreiding van het bestandssysteem uitvoeren.

resize2fs /dev/mapper/vg0-root

We controleren de grootte van het bestandssysteem na het uitgevoerde commando.

[root@localhost ~]# df -h
Bestandssysteem     Grootte Gebruikt  Beschikbaar Gebruik% Gemonteerd op
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 root-bestandssysteem zal toenemen tot 900 GB. Na de uitgevoerde acties kunnen de oude schijven worden verwijderd.

Geval 2: Vervangen van schijven met een kleinere capaciteit door schijven met een grotere capaciteit (meer dan 2TB)

Taak: Vervang de huidige schijven door schijven van een groter volume (2 x 3TB) met behoud van de informatie. In dit geval hebben we schijven van 2 x 240 GB SSD (RAID-1) met een geïnstalleerd systeem en schijven van 2 x 3 TB SATA waarop het systeem moet worden overgezet. Op de huidige schijven wordt een MBR-partitietabel gebruikt. Aangezien de nieuwe schijven een volume groter dan 2 TB hebben, moet voor deze schijven een GPT-tabel worden gebruikt, omdat MBR niet kan werken met schijven van meer dan 2 TB.

Laten we de huidige schijfindeling bekijken.

[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 gebruikte partitietabel op de schijf controleren /dev/sda.

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

Op de schijf /dev/sdb wordt een vergelijkbare partitietabel gebruikt. Laten we het gebruikte schijfruimte in het systeem controleren.

[root@localhost ~]# df -h
Bestandssysteem    Grootte Gebruikt  Beschikbaar Gebruik% Gemonteerd op
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 te zien is, neemt de root van het bestandssysteem 204 GB in beslag. Laten we de huidige status van de software RAID-array controleren.

1. Installatie van de GPT-partitietabel en schijfindeling

Laten we de schijfindeling per sector controleren.

[root@localhost ~]# parted /dev/sda print
Model: ATA KINGSTON SVP200S (scsi)
Schijf /dev/sda: 240GB
Sector grootte (logisch/fysiek): 512B/512B
Partitietabel: msdos
Disk Flags: 

Nummer  Begin  Einde   Grootte  Type      Bestandsysteem  Vlaggen
 1     1049kB  1076MB  1075MB  primary                    opstartbaar, raid
 2     1076MB  240GB   239GB   primary                    raid

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

  1. Sectie bios_grub met een grootte van 2MiB voor compatibiliteit met GPT en BIOS,
  2. Partitie voor de RAID-array, die gemonteerd zal worden in /boot.
  3. Partitie voor de RAID-array waarop LV root en LV swap.

We installeren de utility parted met het commando yum install -y parted (voor CentOS), apt install -y parted (voor Debian/Ubuntu).

Door gebruik te maken van parted we zullen de volgende opdrachten uitvoeren voor de partitie-indeling van de schijf.

We voeren de opdracht uit parted \/dev\/sdc en gaan naar de bewerkingsmodus van de partitie-indeling.

We maken een GPT-partitietabel aan.

(parted) mktable gpt

We maken 1 partitie aan bios_grub partitie en stellen de vlag voor deze in.

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

We maken 2 partitie aan en stellen de vlag voor deze in. Deze partitie zal gebruikt worden als een blok voor een RAID-array en gemonteerd worden in /boot.

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

We maken 3 partitie aan, die ook gebruikt zal worden als een blok voor de array, waarin LVM zal worden gebruikt.

(parted) mkpart primary 1028MiB 100% 

In dit geval is het niet noodzakelijk om de vlag in te stellen, maar als dat nodig is, kan dit met de volgende opdracht.

(parted) set 3 raid on

We controleren de gemaakte tabel.

(parted) p
Model: ATA TOSHIBA DT01ACA3 (scsi)
Schijf /dev/sdc: 3001GB
Sector grootte (logisch/fysiek): 512B/4096B
Partitietabel: gpt
Schijfvlaggen:

Nummer  Begin  Eind   Grootte  Bestandssysteem  Naam      Vlaggen
 1     1049kB  3146kB  2097kB                    primary  bios_grub
 2     3146kB  1077MB  1074MB                    primary  opstartbaar
 3     1077MB  3001GB  3000GB                    primary

We wijzen de schijf een nieuwe willekeurige GUID toe.

sgdisk -G /dev/sdd

2. Verwijderen van partities van de eerste schijf uit de arrays

Controleer de status van de array

[root@localhost ~]# cat /proc/mdstat 
Personen: [raid1] 
md126 : actieve raid1 sda1[0] sdb1[1]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pagina's [0KB], 65536KB chunk

md127 : actieve raid1 sda2[0] sdb2[1]
      233206784 blocks super 1.2 [2/2] [UU]
      bitmap: 0/2 pagina's [0KB], 65536KB chunk

ongebruikte apparaten:

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

Markeer de partities van de eerste schijf die in elk array worden gebruikt als kapot.

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

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

Verwijder de partities van het blokapparaat /dev/sda uit arrays.

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

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

We controleren de staat van de array na het verwijderen van de schijf.

[root@localhost ~]# cat /proc/mdstat
Personaliteiten: [raid1]
md126: actieve raid1 sdb1[1]
      1047552 blocks super 1.2 [2/1] [_U]
      bitmap: 0/1 pagina's [0KB], 65536KB chunk

md127: actieve raid1 sdb2[1]
      233206784 blocks super 1.2 [2/1] [_U]
      bitmap: 2/2 pagina's [8KB], 65536KB chunk

onbenutte apparaten:

3. Partities van de nieuwe schijf aan de array toevoegen

De volgende stap is om de partities van de nieuwe schijf aan de arrays toe te voegen voor synchronisatie. We bekijken de huidige status van de schijfindeling.

[root@localhost ~]# lsblk
NAAM           MAJ:MIN RM   GROOTTE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 schijf  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 schijf  
├─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 schijf  
├─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 schijf  

Sectie /dev/sdc1 is bios_grub partitie en neemt niet deel aan de creatie van arrays. In de arrays zullen alleen /dev/sdc2 en /dev/sdc3deze partities worden toegevoegd aan de bijbehorende arrays.

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

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

Daarna wachten we op de synchronisatie van de array.

[root@localhost ~]# cat /proc/mdstat 
Personen : [raid1] 
md126 : actieve raid1 sdc2[2] sdb1[1]
      1047552 blokken super 1.2 [2/2] [UU]
      bitmap: 0/1 pagina's [0KB], 65536KB chunk

md127 : actieve raid1 sdc3[2] sdb2[1]
      233206784 blokken super 1.2 [2/1] [_U]
      [>....................]  herstel =  0.2% (619904/233206784) finish=31.2min snelheid=123980K/sec
      bitmap: 2/2 pagina's [8KB], 65536KB chunk
ongebruikte apparaten:

De indeling van de schijven na het toevoegen van partities aan de array.

[root@localhost ~]# lsblk
NAAM           MAJ:MIN RM   GROTE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 schijf  
├─sda1           8:1    0     1G  0 deel  
└─sda2           8:2    0 222,5G  0 deel  
sdb              8:16   0 223,6G  0 schijf  
├─sdb1           8:17   0     1G  0 deel  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 deel  
  └─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 schijf  
├─sdc1           8:33   0     2M  0 deel  
├─sdc2           8:34   0     1G  0 deel  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 deel  
  └─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 schijf  

4. Verwijderen van partities van de tweede schijf uit arrays

Markeer de partities van de tweede schijf die in elke array worden gebruikt als defect.

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

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

Verwijder de partities van het blokapparaat /dev/sda uit arrays.

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

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

5. We kopiëren de GPT-indelingstabel en synchroniseren de array

Voor het kopiëren van de GPT-indelingstabel gebruiken we de tool sgdisk, die deel uitmaakt van het pakket voor het werken met schijfpartities en de GPT-tabel — gdisk.

Installatie gdisk voor CentOS:

yum install -y gdisk

Installatie gdisk voor Debian/Ubuntu:

apt install -y gdisk

LET OP: Voor GPT de eerste specificeert de schijf waarop We kopiëren de indeling, de tweede schijf specificeert de schijf waarvan de indeling moet worden gekopieerd. Als de schijven verwisseld worden, zal de oorspronkelijk correcte indeling worden overschreven en vernietigd. kopen de indeling. Als je de schijven verwisselt, zal de aanvankelijk correcte indeling worden overschreven en vernietigd.

We kopiëren de GPT-indelingstabel.

sgdisk -R /dev/sdd /dev/sdc

Indeling van de schijven na het verplaatsen van de tabel naar de schijf /dev/sdd.

[root@localhost ~]# lsblk
NAAM           MAJ:MIN RM   GROTE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 schijf  
├─sda1           8:1    0     1G  0 deel  
└─sda2           8:2    0 222,5G  0 deel  
sdb              8:16   0 223,6G  0 schijf  
├─sdb1           8:17   0     1G  0 deel  
└─sdb2           8:18   0 222,5G  0 deel  
sdc              8:32   0   2,7T  0 schijf  
├─sdc1           8:33   0     2M  0 deel  
├─sdc2           8:34   0     1G  0 deel  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 deel  
  └─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 schijf  
├─sdd1           8:49   0     2M  0 deel  
├─sdd2           8:50   0     1G  0 deel  
└─sdd3           8:51   0   2,7T  0 deel  

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

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

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

We wachten op de synchronisatie van de array.

[root@localhost ~]# cat /proc/mdstat 
Persoonlijkheden: [raid1] 
md126: actieve raid1 sdd2[3] sdc2[2]
      1047552 blokken super 1.2 [2/2] [UU]
      bitmap: 1/1 pagina's [4KB], 65536KB chunk

md127: actieve raid1 sdd3[3] sdc3[2]
      233206784 blokken super 1.2 [2/1] [U_]
      [>....................]  herstel =  0.0% (148224/233206784) voltooid=26.2min snelheid=148224K/sec
      bitmap: 2/2 pagina's [8KB], 65536KB chunk
onnodige apparaten:

Na het kopiëren van de GPT-partitie naar de tweede nieuwe schijf, ziet de partitie er als volgt uit.

[root@localhost ~]# lsblk
NAAM           MAJ:MIN RM   GROOTTE RO TYPE  MOUNTPOINT
sda              8:0    0 223.6G  0 schijf  
├─sda1           8:1    0     1G  0 deel  
└─sda2           8:2    0 222.5G  0 deel  
sdb              8:16   0 223.6G  0 schijf  
├─sdb1           8:17   0     1G  0 deel  
└─sdb2           8:18   0 222.5G  0 deel  
sdc              8:32   0   2.7T  0 schijf  
├─sdc1           8:33   0     2M  0 deel  
├─sdc2           8:34   0     1G  0 deel  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2.7T  0 deel  
  └─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 schijf  
├─sdd1           8:49   0     2M  0 deel  
├─sdd2           8:50   0     1G  0 deel  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd3           8:51   0   2.7T  0 deel  
  └─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 — de schijfletter, in ons geval de schijven /dev/sdc en /dev/sdd.

Werk de informatie over de array bij.

Voor CentOS:

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

Voor Debian/Ubuntu:

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

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

Werk het beeld bij initrd:
Voor CentOS:

dracut -f -v --regenerate-all

Voor Debian/Ubuntu:

update-initramfs -u -k all

Werk de GRUB-configuratie bij.

Voor CentOS:

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

Voor Debian/Ubuntu:

update-grub

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

6. Het uitbreiden van het bestandssysteem (ext4) van de root partitie

De schijfindeling vóór het uitbreiden van het bestandssysteem na het verplaatsen van het systeem naar schijven van 2 x 3TB (RAID-1).

[root@localhost ~]# lsblk
NAAM           MAJ:MIN RM   GROOTTE RO TYPE  MOUNTPOINT
sda              8:0    0 223.6G  0 schijf  
sdb              8:16   0 223.6G  0 schijf  
sdc              8:32   0   2.7T  0 schijf  
├─sdc1           8:33   0     2M  0 deel  
├─sdc2           8:34   0     1G  0 deel  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2.7T  0 deel  
  └─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 schijf  
├─sdd1           8:49   0     2M  0 deel  
├─sdd2           8:50   0     1G  0 deel  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdd3           8:51   0   2.7T  0 deel  
  └─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]

De partities zijn nu /dev/sdc3 en /dev/sdd3 bezetten 2.7 TB. Aangezien we een nieuwe schijfindeling met de GPT-tabel hebben gemaakt, is de grootte van 3 partities onmiddellijk ingesteld op de maximaal beschikbare schijfruimte, het uitbreiden van de partitie is in dit geval niet nodig.

Vereist:

  1. Vergroot het md126-array,
  2. PV (physical volume) uitbreiden,
  3. LV (logical volume) vg0-root uitbreiden,
  4. het bestandssysteem uitbreiden.

1. We vergroten de array md126 tot het maximum.

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

Na het vergroten van de array md126 is de grootte van de gebruikte ruimte vergroot 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]

We vergroten fysiek volume.

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

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

We vergroten de PV met het volgende commando.

pvresize /dev/md126

Controleer de uitgevoerde actie.

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

We vergroten logisch volume vg0-root.

Na het vergroten van de PV controleren we de gebruikte ruimte van de VG.

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

Controleer de gebruikte LV-ruimte.

[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            

Volumes vg0-root bezet 206,41 GB.

We vergroten de LV naar de maximaal beschikbare schijfruimte.

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

Controleer de LV-ruimte na het vergroten.

[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

We vergroten het bestandssysteem (ext4).

Laten we de huidige grootte van het bestandssysteem controleren.

[root@localhost ~]# df -h
Bestandssysteem     Grootte In gebruik  Beschikbaar Gebruik% Aangekoppeld
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

Volume /dev/mapper/vg0-root bezet 204 GB na het vergroten van de LV.

We vergroten het bestandssysteem.

resize2fs /dev/mapper/vg0-root 

We check the size of the file system after its expansion.

[root@localhost ~]# df -h
Bestandssysteem     Grootte Gebruikt  Beschikbaar Gebruik% Gemount op
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 grootte van het bestandssysteem is verhoogd tot de volledige capaciteit van het volume.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster