GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So ersetzen Sie eine ausgefallene Festplatte in einem Linux-Software-RAID

Diese Anleitung zeigt, wie Sie eine ausgefallene Festplatte aus einem Linux-RAID1-Verbund (Software-RAID) entfernen und dem RAID1-Verbund eine neue Festplatte hinzufügen, ohne Daten zu verlieren. Ich werde gdisk verwenden, um das Partitionsschema zu kopieren, damit es auch mit großen Festplatten mit GPT (GUID-Partitionstabelle) funktioniert.

1 Vorbemerkung

In diesem Beispiel habe ich zwei Festplatten, /dev/sda und /dev/sdb, mit den Partitionen /dev/sda1 und /dev/sda2 sowie /dev/sdb1 und /dev/sdb2.

/dev/sda1 und /dev/sdb1 bilden das RAID1-Array /dev/md0.

/dev/sda2 und /dev/sdb2 bilden das RAID1-Array /dev/md1.

/dev/sda1 + /dev/sdb1 = /dev/md0
/dev/sda2 + /dev/sdb2 = /dev/md1

/dev/sdb ist ausgefallen und wir wollen es ersetzen.

2 Wie erkenne ich, ob eine Festplatte ausgefallen ist?

Wenn eine Festplatte ausgefallen ist, finden Sie wahrscheinlich viele Fehlermeldungen in den Protokolldateien, z. /var/log/messages oder /var/log/syslog.

Sie können auch laufen

cat /proc/mdstat

und anstelle der Zeichenfolge [UU] sehen Sie [U_], wenn Sie ein degradiertes RAID1-Array haben.

3 Entfernen der ausgefallenen Festplatte

Um /dev/sdb zu entfernen, markieren wir /dev/sdb1 und /dev/sdb2 als ausgefallen und entfernen sie aus ihren jeweiligen RAID-Arrays (/dev/md0 und /dev/md1).

Zuerst markieren wir /dev/sdb1 als fehlgeschlagen:

mdadm --manage /dev/md0 --fail /dev/sdb1

Die Ausgabe von

cat /proc/mdstat

sollte so aussehen:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[2](F)
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

Dann entfernen wir /dev/sdb1 aus /dev/md0:

mdadm --manage /dev/md0 --remove /dev/sdb1

Die Ausgabe sollte so aussehen:

server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1

Und

cat /proc/mdstat

sollte dies zeigen:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

Jetzt machen wir die gleichen Schritte noch einmal für /dev/sdb2 (das Teil von /dev/md1 ist):

mdadm --manage /dev/md1 --fail /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[2](F)
      24418688 blocks [2/1] [U_]

unused devices: <none>
mdadm --manage /dev/md1 --remove /dev/sdb2
server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
      24418688 blocks [2/1] [U_]

unused devices: <none>

Fahren Sie dann das System herunter:

shutdown -h now

und ersetzen Sie die alte /dev/sdb-Festplatte durch eine neue (sie muss mindestens die gleiche Größe wie die alte haben - wenn sie nur ein paar MB kleiner ist als die alte, dann schlägt der Neuaufbau der Arrays fehl).

4 Hinzufügen der neuen Festplatte

Nachdem Sie die Festplatte /dev/sdb geändert haben, booten Sie das System.

Das erste, was wir jetzt tun müssen, ist, genau die gleiche Partitionierung wie auf /dev/sda zu erstellen. Wir können dies mit dem Befehl sgdisk aus dem gdisk-Paket tun. Wenn Sie gdisk noch nicht installiert haben, führen Sie diesen Befehl aus, um es unter Debian und Ubuntu zu installieren:

apt-get install gdisk

Verwenden Sie für RedHat-basierte Linux-Distributionen wie CentOS:

yum install gdisk

und für OpenSuSE:

yast install gdisk

Der nächste Schritt ist optional, wird aber empfohlen. Um sicherzustellen, dass Sie ein Backup des Partitionsschemas haben, können Sie mit sgdisk die Partitionsschemata beider Platten in eine Datei schreiben. Ich werde die Sicherung im /root-Ordner speichern.

sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb

Im Falle eines Fehlers können Sie die Partitionstabellen mit der --load-backup-Option des sgdisk-Befehls wiederherstellen.

Kopieren Sie nun das Partitionsschema von /dev/sda nach /dev/sdb run:

sgdisk -R /dev/sdb /dev/sda

danach müssen Sie die GUID auf der neuen Festplatte randomisieren, um sicherzustellen, dass sie eindeutig sind

sgdisk -G /dev/sdb

Sie können rennen

sgdisk -p /dev/sda
sgdisk -p /dev/sdb

um zu prüfen, ob beide Festplatten jetzt die gleiche Partitionierung haben.

Als nächstes fügen wir /dev/sdb1 zu /dev/md0 und /dev/sdb2 zu /dev/md1 hinzu:

mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
server1:~# mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: re-added /dev/sdb2

Jetzt werden beide Arrays (/dev/md0 und /dev/md1) synchronisiert. Ausführen

cat /proc/mdstat

um zu sehen, wann es fertig ist.

Während der Synchronisation sieht die Ausgabe so aus:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  9.9% (2423168/24418688) finish=2.8min speed=127535K/sec

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  6.4% (1572096/24418688) finish=1.9min speed=196512K/sec

unused devices: <none>

Wenn die Synchronisierung abgeschlossen ist, sieht die Ausgabe so aus:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

Das war's, Sie haben /dev/sdb erfolgreich ersetzt!


Linux
  1. So generieren Sie ein zufälliges Passwort unter Linux mit /dev/random

  2. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  3. Wann sollte /dev/random vs. /dev/urandom verwendet werden?

  4. Wie kann /dev/random oder /dev/urandom mit base64 codiert werden?

  5. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

tty (/dev/tty ) vs. pts (/dev/pts) unter Linux

Wie tauscht man /dev/sda mit /dev/sdb aus?

Wie Linux /dev/tty und /dev/tty0 verwendet

Ist es falsch, /dev/random unter Linux mit /dev/urandom zu verknüpfen?

echo oder print /dev/stdin /dev/stdout /dev/stderr

Warum sind < oder > erforderlich, um /dev/tcp