Remplacement de disques plus petits par des disques plus gros sous Linux

Salut tout le monde. A la veille du début d'un nouveau groupe de cours "Administrateur Linux" Nous publions du matériel utile rédigé par notre étudiant, ainsi que par le mentor du cours, spécialiste du support technique pour les produits d'entreprise REG.RU - Roman Travin.

Cet article examinera 2 cas de remplacement de disques et de transfert d'informations vers de nouveaux disques de plus grande capacité avec une extension supplémentaire de la baie et du système de fichiers. Le premier cas concernera le remplacement des disques avec le même partitionnement MBR/MBR ou GPT/GPT, le deuxième cas concerne le remplacement des disques avec le même partitionnement MBR par des disques d'une capacité supérieure à 2 To, sur lesquels il faudra installer une partition GPT avec une partition biosboot. Dans les deux cas, les disques sur lesquels nous transférons les données sont déjà installés sur le serveur. Le système de fichiers utilisé pour la partition racine est ext4.

Cas 1 : remplacement de disques plus petits par des disques plus grands (jusqu'à 2 To)

Tâche Remplacez les disques actuels par des disques plus grands (jusqu'à 2 To) avec transfert d'informations. Dans ce cas, nous avons 2 disques SSD (RAID-240) de 1 Go avec le système installé et 2 disques SATA de 1 To sur lesquels le système doit être transféré.

Regardons la disposition actuelle du disque.

[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  

Vérifions l'espace du système de fichiers actuellement utilisé.

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                32G            0   32G            0% /dev
tmpfs                   32G            0   32G            0% /dev/shm
tmpfs                   32G         9,6M   32G            1% /run
tmpfs                   32G            0   32G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   204G         1,3G  192G            1% /
/dev/md126            1007M         120M  837M           13% /boot
tmpfs                  6,3G            0  6,3G            0% /run/user/0

La taille du système de fichiers avant remplacement des disques est de 204 Go, 2 baies logicielles md126 sont utilisées, qui sont montées dans /boot и md127, qui est utilisé comme volume physique pour le groupe VG vg0.

1. Suppression des partitions de disque des baies

Vérification de l'état du tableau

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

Le système utilise 2 tableaux : md126 (point de montage /boot) - se compose d'une section /dev/sda1 и /dev/sdb1, md127 (LVM pour échange et la racine du système de fichiers) - se compose de /dev/sda2 и /dev/sdb2.

Nous marquons les partitions du premier disque utilisées dans chaque baie comme étant défectueuses.

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

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

Nous supprimons les partitions de périphériques de bloc /dev/sda des tableaux.

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

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

Après avoir supprimé le disque de la baie, les informations sur le périphérique bloc ressembleront à ceci.

[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  

État des baies après retrait des disques.

[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. Copiez la table de partition sur un nouveau disque

Vous pouvez vérifier la table de partition utilisée sur le disque avec la commande suivante.

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

Le résultat pour MBR serait :

Disk label type: dos

pour les tags Google Tag :

Disk label type: gpt

Copie de la table de partition pour MBR :

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

Dans cette commande première le disque est indiqué с qui le balisage est copié, deuxième - où copie.

ATTENTION: Pour les tags GPT première le disque est indiqué sur lequel copier le balisage seconde disque indique le disque à partir duquel copier le balisage. Si vous mélangez les disques, la partition initialement bonne sera écrasée et détruite.

Copie de la table de disposition pour GPT :

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

Ensuite, attribuez un UUID aléatoire au disque (pour GPT).


sgdisk -G /dev/sdc

Une fois la commande exécutée, les partitions devraient apparaître sur le disque /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  

Si, après l'exécution de l'action, les partitions du système sur le disque /dev/sdc indécis, puis on exécute la commande pour relire la table de partition.

sfdisk -R /dev/sdc

Si les disques actuels utilisent la table MBR et que les informations doivent être transférées vers des disques de plus de 2 To, alors sur les nouveaux disques, vous devrez créer manuellement une partition GPT à l'aide de la partition biosboot. Ce cas sera abordé dans la deuxième partie de cet article.

3. Ajout de partitions du nouveau disque à la matrice

Ajoutons des partitions de disque aux tableaux correspondants.

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

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

Nous vérifions que les sections ont été ajoutées.

[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  

Après cela, nous attendons que les tableaux se synchronisent.

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

Vous pouvez surveiller en permanence le processus de synchronisation à l'aide de l'utilitaire watch.

watch -n 2 cat /proc/mdstat

Paramètre -n spécifie à quels intervalles en secondes la commande doit être exécutée pour vérifier la progression.

Répétez les étapes 1 à 3 pour le prochain disque de remplacement.

Nous marquons comme défectueuses les partitions du deuxième disque utilisées dans chaque baie.

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

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

Suppression des partitions de périphérique bloc /dev/sdb à partir de tableaux.

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

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

Après avoir supprimé le disque de la baie, les informations sur le périphérique bloc ressembleront à ceci.

[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  

État des baies après retrait des disques.

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

Copie de la table de partition MBR depuis le disque /dev/sdс sur le disque /dev/sdd.

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

Une fois la commande exécutée, les partitions devraient apparaître sur le disque /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  

Ajout de partitions de disque aux baies.

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

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

Nous vérifions que les sections ont été ajoutées.

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

Après cela, nous attendons que les tableaux se synchronisent.

[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. Installation de GRUB sur de nouveaux disques

Pour CentOS :

grub2-install /dev/sdX

Pour Debian/Ubuntu :

grub-install /dev/sdX

X — lettre du dispositif de blocage. Dans ce cas, vous devez installer GRUB sur /dev/sdc и /dev/sdd.

6. Extension du système de fichiers (ext4) de la partition racine

Sur les nouveaux disques /dev/sdc и /dev/sdd 931.5 Go disponibles. Étant donné que la table de partition a été copiée à partir de disques plus petits, les partitions /dev/sdc2 и /dev/sdd2 222.5 Go disponibles.

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]

Il est nécessaire:

  1. Étendre la partition 2 sur chacun des disques,
  2. Développez le tableau md127,
  3. Développer PV (volume physique),
  4. Développez la racine vg0 du LV (volume logique),
  5. Développez le système de fichiers.

Utilisation de l'utilitaire séparé élargissons la section /dev/sdc2 à la valeur maximale. Exécutez la commande parted /dev/sdc (1) et affichez la table de partition actuelle avec la commande p (2).

Remplacement de disques plus petits par des disques plus gros sous Linux

Comme vous pouvez le constater, la fin de la partition 2 se termine à 240 Go. Agrandissons la partition avec la commande resizepart 2, où 2 est le numéro de section (3). Nous indiquons la valeur au format numérique, par exemple 1000 Go, ou utilisons l'indication du partage de disque - 100 %. On vérifie à nouveau que la partition a la nouvelle taille (4).

Répétez les étapes ci-dessus pour le disque /dev/sdd. Après avoir étendu les partitions /dev/sdc2 и /dev/sdd2 est devenu égal à 930.5 Go.

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

Après cela, nous élargissons le tableau md127 jusqu'au maximum.

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

On vérifie que le tableau s'est élargi. Sa taille est désormais de 930.4 Go.

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

Extension de l'extension volume physique. Avant de développer, vérifions l'état actuel du PV.

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

Comme on peut le constater, PV /dev/md127 utilise 222.4 Go d'espace.

Nous développons PV avec la commande suivante.

pvresize /dev/md127

Vérification du résultat de l'expansion PV.

[

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   ]

Expansion volume logique. Avant de développer, vérifions l'état actuel de LV (1).

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

LV /dev/vg0/root utilise 206.41 Go.

Nous développons LV avec la commande suivante (2).

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

Nous vérifions l'action terminée (3).

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

Comme vous pouvez le constater, après l'extension de LV, la quantité d'espace disque occupé est devenue 914.39 Go.

Remplacement de disques plus petits par des disques plus gros sous Linux

Le volume LV a augmenté (4), mais le système de fichiers occupe toujours 204 Go (5).

1. Développons le système de fichiers.

resize2fs /dev/mapper/vg0-root

Une fois la commande exécutée, nous vérifions la taille du système de fichiers.

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                32G            0   32G            0% /dev
tmpfs                   32G            0   32G            0% /dev/shm
tmpfs                   32G         9,5M   32G            1% /run
tmpfs                   32G            0   32G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   900G         1,3G  860G            1% /
/dev/md126            1007M         120M  837M           13% /boot
tmpfs                  6,3G            0  6,3G            0% /run/user/0

La taille du système de fichiers racine passera à 900 Go. Après avoir terminé les étapes, vous pouvez supprimer les anciens disques.

Cas 2 : remplacement de disques plus petits par des disques plus grands (plus de 2 To)

Tâche: Remplacez les disques actuels par des disques plus gros (2 x 3 To) tout en préservant les informations. Dans ce cas, nous avons 2 disques SSD (RAID-240) de 1 Go avec le système installé et 2 disques SATA de 3 To sur lesquels le système doit être transféré. Les disques actuels utilisent la table de partition MBR. Étant donné que les nouveaux disques ont une capacité supérieure à 2 To, ils devront utiliser une table GPT, car le MBR ne peut pas fonctionner avec des disques de plus de 2 To.

Regardons la disposition actuelle du disque.

[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  

Vérifions la table de partition utilisée sur le disque /dev/sda.

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

Sur disque /dev/sdb une table de partition similaire est utilisée. Vérifions l'espace disque utilisé sur le système.

[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

Comme vous pouvez le constater, la racine du système de fichiers occupe 204 Go. Vérifions l'état actuel de la matrice RAID logicielle.

1. Installation d'une table de partition GPT et d'un partitionnement de disque

Vérifions la disposition du disque par secteur.

[root@localhost ~]# parted /dev/sda print
Модель: ATA KINGSTON SVP200S (scsi)
Диск /dev/sda: 240GB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Disk Flags: 

Номер  Начало  Конец   Размер  Тип      Файловая система  Флаги
 1     1049kB  1076MB  1075MB  primary                    загрузочный, raid
 2     1076MB  240GB   239GB   primary                    raid

Sur le nouveau disque de 3 To, nous devrons créer 3 partitions :

  1. Section bios_grub Taille de 2 Mo pour la compatibilité du BIOS GPT,
  2. La partition de la matrice RAID qui sera montée dans /boot.
  3. La partition de la matrice RAID sur laquelle il y aura Racine BT и échange BT.

Installation de l'utilitaire séparé l'équipe yum install -y parted (pour CentOS), apt install -y parted (pour Debian/Ubuntu).

Utilisation séparé Exécutons les commandes suivantes pour partitionner le disque.

Exécutez la commande parted /dev/sdc et accédez au mode d'édition de la disposition du disque.

Créez une table de partition GPT.

(parted) mktable gpt

Créer 1 rubrique bios_grub section et définissez un indicateur pour celle-ci.

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

Créez la partition 2 et définissez un indicateur pour celle-ci. La partition sera utilisée comme bloc pour une matrice RAID et montée dans /boot.

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

Nous créons la partition 3, qui servira également de bloc de tableau dans lequel se trouvera LVM.

(parted) mkpart primary 1028MiB 100% 

Dans ce cas, il n'est pas nécessaire de définir le drapeau, mais si nécessaire, il peut être défini avec la commande suivante.

(parted) set 3 raid on

Nous vérifions la table créée.

(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

Nous attribuons un nouveau GUID aléatoire au disque.

sgdisk -G /dev/sdd

2. Suppression des partitions du premier disque des baies

Vérification de l'état du tableau

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

Le système utilise 2 tableaux : md126 (point de montage /boot) - se compose de /dev/sda1 и /dev/sdb1, md127 (LVM pour swap et la racine du système de fichiers) - se compose de /dev/sda2 и /dev/sdb2.

Nous marquons les partitions du premier disque utilisées dans chaque baie comme étant défectueuses.

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

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

Suppression des partitions de périphérique bloc /dev/sda à partir de tableaux.

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

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

Vérification de l'état de la baie après avoir retiré le disque.

[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. Ajout de partitions du nouveau disque à la matrice

L'étape suivante consiste à ajouter des partitions du nouveau disque aux baies pour la synchronisation. Examinons l'état actuel de la disposition du disque.

[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  

Section /dev/sdc1 il est bios_grub section et n’est pas impliqué dans la création de tableaux. Les tableaux n'utiliseront que /dev/sdc2 и /dev/sdc3. Nous ajoutons ces sections aux tableaux correspondants.

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

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

Ensuite, nous attendons que le tableau se synchronise.

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

Partitionnement du disque après l'ajout de partitions à la baie.

[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. Suppression des partitions du deuxième disque des baies

Nous marquons comme défectueuses les partitions du deuxième disque utilisées dans chaque baie.

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

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

Suppression des partitions de périphérique bloc /dev/sda à partir de tableaux.

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

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

5. Copiez la table de disposition GPT et synchronisez la baie

Pour copier la table de balisage GPT, nous utiliserons l'utilitaire sgdisk, qui est inclus dans le package pour travailler avec des partitions de disque et une table GPT - gdisk.

Installation gdisk pour CentOS :

yum install -y gdisk

Installation gdisk pour Debian/Ubuntu :

apt install -y gdisk

ATTENTION: Pour les tags GPT première le disque est indiqué sur lequel copiez le balisage, seconde disque indique le disque à partir duquel copiez le balisage. Si vous mélangez les disques, la partition initialement bonne sera écrasée et détruite.

Copiez la table de balisage GPT.

sgdisk -R /dev/sdd /dev/sdc

Partitionnement du disque après transfert d'une table sur le disque /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  

Ensuite, nous ajoutons chacune des partitions participant aux matrices RAID logicielles.

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

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

Nous attendons que le tableau se synchronise.

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

Après avoir copié la partition GPT sur le deuxième nouveau disque, la partition ressemblera à ceci.

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

Ensuite, installez GRUB sur les nouveaux disques.

Installation pour CentOS :

grub2-install /dev/sdX

Installation pour Debian/Ubuntu :

grub-install /dev/sdX

X — lettre de lecteur, dans notre cas, lecteurs /dev/sdc и /dev/sdd.

Nous mettons à jour les informations sur le tableau.

Pour CentOS :

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

Pour Debian/Ubuntu :

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

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

Mise à jour de l'image initrd:
Pour CentOS :

dracut -f -v --regenerate-all

Pour Debian/Ubuntu :

update-initramfs -u -k all

Nous mettons à jour la configuration GRUB.

Pour CentOS :

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

Pour Debian/Ubuntu :

update-grub

Une fois les étapes terminées, les anciens disques peuvent être supprimés.

6. Extension du système de fichiers (ext4) de la partition racine

Partitionnement du disque avant l'expansion du système de fichiers après la migration du système vers 2 disques de 3 To (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]

Maintenant les sections /dev/sdc3 и /dev/sdd3 occupent 2.7 To. Puisque nous avons créé une nouvelle disposition de disque avec une table GPT, la taille de la partition 3 a été immédiatement définie sur l'espace disque maximum possible ; dans ce cas, il n'est pas nécessaire d'étendre la partition.

Il est nécessaire:

  1. Développez le tableau md126,
  2. Développer PV (volume physique),
  3. Développez la racine vg0 du LV (volume logique),
  4. Développez le système de fichiers.

1. Développez le tableau md126 jusqu'au maximum.

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

Après l'expansion du tableau md126 la taille de l'espace occupé est passée à 2.7 To.

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

Expansion volume physique.

Avant d'agrandir, vérifiez la valeur actuelle de l'espace occupé PV /dev/md126.

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

Nous développons PV avec la commande suivante.

pvresize /dev/md126

Nous vérifions l'action terminée.

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

Expansion volume logique racine-vg0.

Après avoir développé PV, vérifions l'espace occupé VG.

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

Vérifions l'espace occupé par 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            

Le volume racine vg0 occupe 206.41 Go.

Nous étendons LV au maximum de l'espace disque.

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

Vérification de l'espace BT après expansion.

[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

Extension du système de fichiers (ext4).

Vérifions la taille actuelle du système de fichiers.

[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

Le volume /dev/mapper/vg0-root occupe 204 Go après extension LV.

Extension du système de fichiers.

resize2fs /dev/mapper/vg0-root 

Vérification de la taille du système de fichiers après l'avoir étendu.

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                16G            0   16G            0% /dev
tmpfs                   16G            0   16G            0% /dev/shm
tmpfs                   16G         9,6M   16G            1% /run
tmpfs                   16G            0   16G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   2,7T         1,4G  2,6T            1% /
/dev/md127            1007M         141M  816M           15% /boot
tmpfs                  3,2G            0  3,2G            0% /run/user/0

La taille du système de fichiers a été augmentée pour couvrir la totalité du volume.

Source: habr.com

Ajouter un commentaire