Ersetzen kleinerer Festplatten durch größere Festplatten unter Linux

Hallo zusammen. Am Vorabend des Beginns einer neuen Kursgruppe „Linux-Administrator“ Wir veröffentlichen nützliches Material, das von unserem Studenten, Kursmentor und technischen Support-Spezialisten für REG.RU-Unternehmensprodukte – Roman Travin – verfasst wurde.

In diesem Artikel werden zwei Fälle betrachtet, in denen Festplatten ausgetauscht und Informationen auf neue Festplatten mit größerer Kapazität übertragen werden, wobei das Array und das Dateisystem weiter erweitert werden. Im ersten Fall geht es um den Austausch von Festplatten mit der gleichen MBR/MBR- oder GPT/GPT-Partitionierung, im zweiten Fall geht es um den Austausch von Festplatten mit MBR-Partitionierung durch Festplatten mit einer Kapazität von mehr als 2 TB, auf denen Sie installieren müssen eine GPT-Partition mit einer BIOSboot-Partition. In beiden Fällen sind die Festplatten, auf die wir die Daten übertragen, bereits auf dem Server installiert. Das für die Root-Partition verwendete Dateisystem ist ext2.

Fall 1: Ersetzen kleinerer Festplatten durch größere Festplatten (bis zu 2 TB)

Problem: Ersetzen Sie aktuelle Festplatten durch größere Festplatten (bis zu 2 TB) mit Informationsübertragung. In diesem Fall haben wir 2 x 240 GB SSD-Festplatten (RAID-1) mit installiertem System und 2 x 1 TB SATA-Festplatten, auf die das System übertragen werden muss.

Schauen wir uns das aktuelle Festplattenlayout an.

[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  

Lassen Sie uns den aktuell verwendeten Dateisystemspeicherplatz überprüfen.

[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

Die Größe des Dateisystems vor dem Austausch der Festplatten beträgt 204 GB, es werden 2 MD126-Software-Arrays verwendet, die eingehängt werden /boot и md127, das als verwendet wird physisches Volumen für die VG-Gruppe vg0.

1. Entfernen von Festplattenpartitionen aus Arrays

Überprüfen des Status des Arrays

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

Das System verwendet 2 Arrays: md126 (Einhängepunkt /boot) – besteht aus einem Abschnitt /dev/sda1 и /dev/sdb1, md127 (LVM für tauschen und das Stammverzeichnis des Dateisystems) - besteht aus /dev/sda2 и /dev/sdb2.

Wir markieren die Partitionen der ersten Festplatte, die in jedem Array verwendet werden, als fehlerhaft.

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

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

Wir entfernen die Blockgerätepartitionen /dev/sda aus den Arrays.

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

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

Nachdem wir die Festplatte aus dem Array entfernt haben, sehen die Blockgeräteinformationen wie folgt aus.

[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  

Zustand der Arrays nach dem Entfernen von Festplatten.

[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. Kopieren Sie die Partitionstabelle auf eine neue Festplatte

Mit dem folgenden Befehl können Sie die verwendete Partitionstabelle auf der Festplatte überprüfen.

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

Die Ausgabe für MBR wäre:

Disk label type: dos

für GPT:

Disk label type: gpt

Kopieren der Partitionstabelle für MBR:

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

In diesem Befehl zuerst Festplatte wird angezeigt с davon das Markup wird kopiert, zweitens - wo Kopieren.

ACHTUNG: Für GPT zuerst Festplatte wird angezeigt auf welche Markup kopieren, Sekunde disk gibt die Festplatte an aus denen Markup kopieren. Wenn Sie die Festplatten vertauschen, wird die ursprünglich funktionierende Partition überschrieben und zerstört.

Kopieren der Layouttabelle für GPT:

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

Als nächstes weisen Sie der Festplatte eine zufällige UUID zu (für GPT).


sgdisk -G /dev/sdc

Nachdem der Befehl ausgeführt wurde, sollten die Partitionen auf der Festplatte erscheinen /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  

Wenn nach Ausführung der Aktion die Partitionen im System auf der Festplatte vorhanden sind /dev/sdc unentschlossen, dann führen wir den Befehl aus, um die Partitionstabelle erneut zu lesen.

sfdisk -R /dev/sdc

Wenn die aktuellen Festplatten die MBR-Tabelle verwenden und die Informationen auf Festplatten mit mehr als 2 TB übertragen werden müssen, müssen Sie auf neuen Festplatten manuell eine GPT-Partition mithilfe der BIOSBoot-Partition erstellen. Dieser Fall wird in Teil 2 dieses Artikels besprochen.

3. Hinzufügen von Partitionen der neuen Festplatte zum Array

Fügen wir den entsprechenden Arrays Festplattenpartitionen hinzu.

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

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

Wir prüfen, ob die Abschnitte hinzugefügt wurden.

[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  

Danach warten wir, bis die Arrays synchronisiert sind.

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

Mit dem Dienstprogramm können Sie den Synchronisierungsprozess kontinuierlich überwachen watch.

watch -n 2 cat /proc/mdstat

Parameter -n Gibt an, in welchen Sekundenabständen der Befehl ausgeführt werden muss, um den Fortschritt zu überprüfen.

Wiederholen Sie die Schritte 1 bis 3 für die nächste Ersatzfestplatte.

Wir markieren die Partitionen der zweiten Festplatte, die in jedem Array verwendet werden, als fehlerhaft.

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

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

Blockgerätepartitionen entfernen /dev/sdb aus Arrays.

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

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

Nachdem wir die Festplatte aus dem Array entfernt haben, sehen die Blockgeräteinformationen wie folgt aus.

[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  

Zustand der Arrays nach dem Entfernen von Festplatten.

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

Kopieren der MBR-Partitionstabelle von der Festplatte /dev/sdс auf die Festplatte /dev/sdd.

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

Nachdem der Befehl ausgeführt wurde, sollten die Partitionen auf der Festplatte erscheinen /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  

Hinzufügen von Festplattenpartitionen zu Arrays.

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

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

Wir prüfen, ob die Abschnitte hinzugefügt wurden.

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

Danach warten wir, bis die Arrays synchronisiert sind.

[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 auf neuen Laufwerken installieren

Für CentOS:

grub2-install /dev/sdX

Von Debian/Ubuntu:

grub-install /dev/sdX

wo X — Buchstabe des Blockgeräts. In diesem Fall müssen Sie GRUB installieren /dev/sdc и /dev/sdd.

6. Dateisystemerweiterung (ext4) der Root-Partition

Auf neuen Festplatten /dev/sdc и /dev/sdd 931.5 GB verfügbar. Aufgrund der Tatsache, dass die Partitionstabelle von kleineren Festplatten kopiert wurde, sind die Partitionen /dev/sdc2 и /dev/sdd2 222.5 GB verfügbar.

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]

Es ist notwendig:

  1. Erweitern Sie Partition 2 auf jeder der Festplatten.
  2. Array md127 erweitern,
  3. Erweitern Sie PV (physisches Volumen),
  4. Erweitern Sie LV (logisches Volume) vg0-root,
  5. Erweitern Sie das Dateisystem.

Verwenden des Dienstprogramms geteilt Erweitern wir den Abschnitt /dev/sdc2 auf den Maximalwert. Führen Sie den Befehl aus parted /dev/sdc (1) und zeigen Sie die aktuelle Partitionstabelle mit dem Befehl an p (2).

Ersetzen kleinerer Festplatten durch größere Festplatten unter Linux

Wie Sie sehen, endet das Ende von Partition 2 bei 240 GB. Erweitern wir die Partition mit dem Befehl resizepart 2, wobei 2 die Nummer des Abschnitts (3) ist. Wir geben den Wert im digitalen Format an, zum Beispiel 1000 GB, oder verwenden die Angabe des Festplattenanteils – 100 %. Wir prüfen noch einmal, ob die Partition die neue Größe hat (4).

Wiederholen Sie die obigen Schritte für die Festplatte /dev/sdd. Nach dem Erweitern von Partitionen /dev/sdc2 и /dev/sdd2 wurde gleich 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]

Danach erweitern wir das Array md127 bis zum Maximum.

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

Wir überprüfen, ob das Array erweitert wurde. Jetzt beträgt seine Größe 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]

Erweiterung der Erweiterung physisches Volumen. Bevor wir erweitern, prüfen wir den aktuellen Zustand der 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   ]

Wie zu sehen ist, PV /dev/md127 verbraucht 222.4 GB Speicherplatz.

Wir erweitern PV mit dem folgenden Befehl.

pvresize /dev/md127

Überprüfung des Ergebnisses des PV-Ausbaus.

[

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   ]

Erweitern logisches Volumen. Bevor wir erweitern, überprüfen wir den aktuellen Status von 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 verbraucht 206.41 GB.

Wir erweitern LV mit dem folgenden Befehl (2).

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

Wir überprüfen die abgeschlossene Aktion (3).

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

Wie Sie sehen können, beträgt der belegte Speicherplatz nach der Erweiterung von LV 914.39 GB.

Ersetzen kleinerer Festplatten durch größere Festplatten unter Linux

Das LV-Volume hat zugenommen (4), aber das Dateisystem belegt immer noch 204 GB (5).

1. Erweitern wir das Dateisystem.

resize2fs /dev/mapper/vg0-root

Nachdem der Befehl ausgeführt wurde, überprüfen wir die Größe des Dateisystems.

[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

Die Größe des Root-Dateisystems erhöht sich auf 900 GB. Nachdem Sie die Schritte abgeschlossen haben, können Sie die alten Datenträger entfernen.

Fall 2: Ersetzen kleinerer Festplatten durch größere Festplatten (mehr als 2 TB)

Zuordnung: Ersetzen Sie die aktuellen Festplatten durch größere Festplatten (2 x 3 TB) und behalten Sie dabei die Informationen bei. In diesem Fall haben wir 2 x 240 GB SSD-Festplatten (RAID-1) mit installiertem System und 2 x 3 TB SATA-Festplatten, auf die das System übertragen werden muss. Aktuelle Festplatten verwenden die MBR-Partitionstabelle. Da neue Festplatten eine Kapazität von mehr als 2 TB haben, müssen sie eine GPT-Tabelle verwenden, da MBR nicht mit Festplatten mit mehr als 2 TB funktionieren kann.

Schauen wir uns das aktuelle Festplattenlayout an.

[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  

Lassen Sie uns die auf der Festplatte verwendete Partitionstabelle überprüfen /dev/sda.

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

Auf Diskette /dev/sdb Es wird eine ähnliche Partitionstabelle verwendet. Lassen Sie uns den belegten Speicherplatz auf dem System überprüfen.

[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

Wie Sie sehen, nimmt das Stammverzeichnis des Dateisystems 204 GB ein. Lassen Sie uns den aktuellen Status des Software-RAID-Arrays überprüfen.

1. Installieren einer GPT-Partitionstabelle und Festplattenpartitionierung

Lassen Sie uns das Festplattenlayout nach Sektor überprüfen.

[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

Auf der neuen 3-TB-Festplatte müssen wir drei Partitionen erstellen:

  1. Abschnitt bios_grub 2 MB Größe für GPT-BIOS-Kompatibilität,
  2. Die Partition für das RAID-Array, in das eingebunden wird /boot.
  3. Die Partition für das RAID-Array, auf der es sein wird LV-Wurzel и LV-Tausch.

Installieren des Dienstprogramms geteilt Team yum install -y parted (für CentOS), apt install -y parted (für Debian/Ubuntu).

Mit geteilt Führen wir die folgenden Befehle aus, um die Festplatte zu partitionieren.

Führen Sie den Befehl aus parted /dev/sdc und wechseln Sie in den Bearbeitungsmodus für das Festplattenlayout.

Erstellen Sie eine GPT-Partitionstabelle.

(parted) mktable gpt

Erstellen Sie 1 Abschnitt bios_grub Abschnitt und setzen Sie ein Flag dafür.

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

Erstellen Sie Partition 2 und setzen Sie ein Flag dafür. Die Partition wird als Block für ein RAID-Array verwendet und eingebunden /boot.

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

Wir erstellen einen dritten Abschnitt, der auch als Array-Block verwendet wird, in dem sich LVM befindet.

(parted) mkpart primary 1028MiB 100% 

In diesem Fall ist es nicht notwendig, das Flag zu setzen, kann aber bei Bedarf mit dem folgenden Befehl gesetzt werden.

(parted) set 3 raid on

Wir überprüfen die erstellte Tabelle.

(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

Wir weisen der Festplatte eine neue zufällige GUID zu.

sgdisk -G /dev/sdd

2. Partitionen der ersten Festplatte aus Arrays entfernen

Überprüfen des Status des Arrays

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

Das System verwendet 2 Arrays: md126 (Einhängepunkt /boot) – besteht aus /dev/sda1 и /dev/sdb1, md127 (LVM für swap und das Stammverzeichnis des Dateisystems) - besteht aus /dev/sda2 и /dev/sdb2.

Wir markieren die Partitionen der ersten Festplatte, die in jedem Array verwendet werden, als fehlerhaft.

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

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

Blockgerätepartitionen entfernen /dev/sda aus Arrays.

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

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

Überprüfen des Zustands des Arrays nach dem Entfernen der Festplatte.

[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. Hinzufügen von Partitionen der neuen Festplatte zum Array

Der nächste Schritt besteht darin, Partitionen der neuen Festplatte zur Synchronisierung zu den Arrays hinzuzufügen. Schauen wir uns den aktuellen Stand des Festplattenlayouts an.

[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  

Abschnitt /dev/sdc1 ist bios_grub Abschnitt und ist nicht an der Erstellung von Arrays beteiligt. Die Arrays werden nur verwendet /dev/sdc2 и /dev/sdc3. Wir fügen diese Abschnitte zu den entsprechenden Arrays hinzu.

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

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

Dann warten wir, bis das Array synchronisiert ist.

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

Festplattenpartitionierung nach dem Hinzufügen von Partitionen zum 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. Entfernen von Partitionen der zweiten Festplatte aus Arrays

Wir markieren die Partitionen der zweiten Festplatte, die in jedem Array verwendet werden, als fehlerhaft.

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

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

Blockgerätepartitionen entfernen /dev/sda aus Arrays.

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

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

5. Kopieren Sie die GPT-Layouttabelle und synchronisieren Sie das Array

Um die GPT-Markup-Tabelle zu kopieren, verwenden wir das Dienstprogramm sgdisk, das im Paket für die Arbeit mit Festplattenpartitionen und einer GPT-Tabelle enthalten ist - gdisk.

Einstellung gdisk für CentOS:

yum install -y gdisk

Einstellung gdisk für Debian/Ubuntu:

apt install -y gdisk

ACHTUNG: Für GPT zuerst Festplatte wird angezeigt auf welche Kopieren Sie das Markup, Sekunde disk gibt die Festplatte an aus denen Kopieren Sie das Markup. Wenn Sie die Festplatten vertauschen, wird die ursprünglich funktionierende Partition überschrieben und zerstört.

Kopieren Sie die GPT-Markup-Tabelle.

sgdisk -R /dev/sdd /dev/sdc

Festplattenpartitionierung nach der Übertragung einer Tabelle auf die Festplatte /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  

Als nächstes fügen wir alle Partitionen hinzu, die an Software-RAID-Arrays teilnehmen.

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

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

Wir warten darauf, dass das Array synchronisiert wird.

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

Nach dem Kopieren der GPT-Partition auf die zweite neue Festplatte sieht die Partition folgendermaßen aus.

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

Als nächstes installieren Sie GRUB auf den neuen Festplatten.

Installation für CentOS:

grub2-install /dev/sdX

Installation für Debian/Ubuntu:

grub-install /dev/sdX

wo X — Laufwerksbuchstabe, in unserem Fall Laufwerke /dev/sdc и /dev/sdd.

Wir aktualisieren Informationen über das Array.

Für CentOS:

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

Von Debian/Ubuntu:

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

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

Das Bild wird aktualisiert initrd:
Für CentOS:

dracut -f -v --regenerate-all

Von Debian/Ubuntu:

update-initramfs -u -k all

Wir aktualisieren die GRUB-Konfiguration.

Für CentOS:

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

Von Debian/Ubuntu:

update-grub

Nach Abschluss der Schritte können die alten Datenträger entfernt werden.

6. Dateisystemerweiterung (ext4) der Root-Partition

Festplattenpartitionierung vor Dateisystemerweiterung nach der Migration des Systems auf 2 x 3 TB Festplatten (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]

Jetzt Abschnitte /dev/sdc3 и /dev/sdd3 belegen 2.7 TB. Da wir ein neues Festplattenlayout mit einer GPT-Tabelle erstellt haben, wurde die Größe der Partition 3 sofort auf den maximal möglichen Speicherplatz eingestellt; in diesem Fall ist keine Erweiterung der Partition erforderlich.

Es ist notwendig:

  1. Array md126 erweitern,
  2. Erweitern Sie PV (physisches Volumen),
  3. Erweitern Sie LV (logisches Volume) vg0-root,
  4. Erweitern Sie das Dateisystem.

1. Erweitern Sie das Array md126 bis zum Maximum.

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

Nach der Array-Erweiterung md126 Die Größe des belegten Speicherplatzes hat sich auf 2.7 TB erhöht.

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

Erweitern physisches Volumen.

Überprüfen Sie vor der Erweiterung den aktuellen Wert der belegten Fläche PV /dev/md126.

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

Wir erweitern PV mit dem folgenden Befehl.

pvresize /dev/md126

Wir prüfen die abgeschlossene Aktion.

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

Erweitern logisches Volume vg0-root.

Nachdem wir PV erweitert haben, überprüfen wir den belegten Platz VG.

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

Lassen Sie uns den von LV belegten Platz überprüfen.

[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            

Das vg0-Root-Volume belegt 206.41 GB.

Wir erweitern LV auf den maximalen Speicherplatz.

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

Überprüfung des LV-Raums nach der Erweiterung.

[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

Erweitern des Dateisystems (ext4).

Lassen Sie uns die aktuelle Größe des Dateisystems überprüfen.

[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

Das Volume /dev/mapper/vg0-root belegt nach der LV-Erweiterung 204 GB.

Erweitern des Dateisystems.

resize2fs /dev/mapper/vg0-root 

Überprüfen der Größe des Dateisystems nach der Erweiterung.

[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

Die Dateisystemgröße wurde erhöht, um das gesamte Volume abzudecken.

Source: habr.com

Kommentar hinzufügen