RAID bietet Vorteile in Bezug auf Datenredundanz und Leistungsverbesserung und wird für die Einrichtung unternehmenskritischer Server empfohlen. Beispielsweise erzeugt RAID 1 einen gespiegelten Satz, der den Ausfall einer einzelnen Festplatte tolerieren kann, während die Leistung möglicherweise beschleunigt wird, da Leseanforderungen von jeder Festplatte im Array bedient werden können. RAID 10 (RAID 1+0) ist ein Stripe von gespiegelten Sets oder RAID 0 von gespiegelten RAID 1-Sets, das einen besseren Durchsatz und eine bessere Latenz bietet und gleichzeitig den Ausfall mehrerer Festplatten toleriert, solange kein Mirror alle seine Laufwerke verliert.
Dieses Tutorial bietet eine Schritt-für-Schritt-Anleitung zum manuellen Erstellen von RAID 1 auf einem System mit zwei Festplatten oder RAID 10 auf einem System mit vier Festplatten auf einem derzeit laufenden System, auf dem CentOS / RedHat bereits installiert ist. Auch der GRUB-Bootloader ist so konfiguriert, dass das System beim Ausfall einer Festplatte noch booten kann. Dies ist besonders nützlich, wenn Sie nicht auf die Konsole auf einem dedizierten Server zugreifen können, der von einem Webhosting-Unternehmen abonniert ist, was Sie versehentlich daran hindert, RAID-Geräte während der Installation zu erstellen.
Die erste Phase der Migration eines derzeit laufenden Systems zu RAID ohne Datenverlust besteht darin, sicherzustellen, dass alle aktuellen Daten auf ein heruntergestuftes RAID repliziert werden. In diesem Tutorial arbeiten wir an einem System, das mit 477 MB /boot-Partition als /dev/sda1, mehr als 900 GB /root-Partition als /dev/sda2, 4 GB Auslagerungsspeicher in /dev/sda3 und einem weiteren ausgestattet ist 4 GB /tmp logische Partition /dev/sda5 gehostet auf /dev/sda4 erweiterter Partition.
- Überprüfen und vergewissern Sie sich, dass derzeit keine vorhandenen RAID-Geräte ausgeführt werden. Der Inhalt der Datei /etc/mdadm.conf und das Ergebnis von cat /proc/mdstat sollte leer sein, und es sollten keine Arrays in der Konfigurationsdatei oder automatisch gefunden werden.
mdadm --examine --scan > /etc/mdadm.conf mdadm --assemble --scan cat /proc/mdstat
- Fahren Sie als Vorsichtsmaßnahme alle Arrays herunter, die heruntergefahren werden können (d. h. derzeit nicht verwendet werden):
mdadm --stop --scan
- Ändern Sie die Partitionstabelle der Festplatten mit den folgenden Befehlen in MBR. Überspringen Sie diesen Schritt, wenn Ihre Festplatten keine GTP-Partitionstabelle haben.
parted /dev/sdb (parted) mktable msdos (parted) quit
Antworten Sie mit Ja wenn Sie mit „Warnung:Das vorhandene Plattenlabel auf /dev/sdb wird zerstört und alle Daten auf dieser Platte gehen verloren. Möchten Sie fortfahren?“
Update an Kernel senden:
partprobe /dev/sdb
Wiederholen Sie den Befehl für andere Laufwerke, d. h. /dev/sdc und /dev/sdd, falls zutreffend.
- Partitionieren Sie die Festplatte nach Ihren Wünschen.
In diesem Tutorial verwenden wir den folgenden Befehl, um Partitionen zu erstellen, die mit dem vorhandenen Laufwerk /dev/sda:
identisch sindsfdisk -d /dev/sda | sfdisk --force /dev/sdb
Wiederholen Sie den Befehl für andere Laufwerke, d. h. /dev/sdc und /dev/sdd, falls zutreffend.
TippWenn Sie „fdisk“ zum manuellen Erstellen von Partitionen verwenden, können Sie den obigen Befehl „sfdisk“ verwenden, um die Partitionsstrukturen auf andere Festplatten zu replizieren, wenn Sie mehr als 1 zusätzliche Festplatte haben. Beispiel:„sfdisk -d /dev/sdb | sfdisk –force /dev/sdc“ repliziert Partitionen von /dev/sdb nach /dev/sdc. - Ändert den Partitionstyp in Linux RAID Autodetect. Dazu „fdisk“ die jeweilige Festplatte. Beispiel:
fdisk /dev/sdb
Geben Sie dann t aus Befehl:
Command (m for help): t Partition number (1-5): 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect)
Wiederholen Sie den Vorgang für die restlichen Partitionen auf der Festplatte. Machen Sie die Änderung dann dauerhaft:
Command (m for help): w
- Entfernen Sie RAID für die neuen Laufwerke, falls das RAID zuvor auf den „neuen“ Laufwerken eingerichtet wurde:
mdadm --stop --scan mdadm --zero-superblock /dev/sdb{1..9}
Und dann Update an Kernel senden:
partprobe /dev/sdb
Wiederholen Sie den Befehl für andere Laufwerke, d. h. /dev/sdc und /dev/sdd, falls zutreffend.
- Laden Sie die erforderlichen Module in den Kernel:
modprobe raid0 modprobe raid1 modprobe raid10
Wenn Sie jetzt „cat /proc/mdstat“ ausführen, sollten Sie etwas Ähnliches sehen wie:
Persönlichkeiten:[Überfall0] [Überfall1] [Überfall10]
nicht verwendete Geräte:RAID-bezogene Module wurden in den Kernel geladen, aber es sind keine RAID-Sets konfiguriert.
- Erstellen Sie RAID-Geräte im heruntergestuften Zustand, da das eine Laufwerk fehlt, d. h. /dev/sda, das derzeit mit dem Betriebssystem installiert ist und zum Booten verwendet wird. Da CentOS und RedHat Version 5.0 und 6.0 standardmäßig Grub 0.97 verwenden, wird „–metadata=0.9“ angegeben, damit eine ältere Version von Superblock verwendet wird. Andernfalls antwortet Grub möglicherweise mit dem Fehler „Dateisystemtyp unbekannt, Partitionstyp 0xfd“ und verweigert die Installation. Darüber hinaus gibt mdadm auch eine Warnung für das Boot-Array aus:Dieses Array hat am Anfang Metadaten und ist möglicherweise nicht als Boot-Gerät geeignet. Wenn Sie „/boot“ auf diesem Gerät speichern möchten, stellen Sie bitte sicher, dass Ihr Bootloader md/v1.x-Metadaten versteht, oder verwenden Sie –metadata=0.90. Bei Grub2 ist der Parameter nicht notwendig. Die folgende Syntax geht davon aus, dass wir RAID10-Arrays mit 4 Festplatten erstellen. Wechseln Sie zu RAID1, wenn Sie nur 2 Festplatten haben, indem Sie die Optionen auf „–level=1“ ändern und die nicht vorhandenen Festplattenpartitionen entfernen.
Für /boot verwenden wir RAID1:
mdadm --create --verbose /dev/md1 --metadata=0.9 --level=1 --raid-devices=4 missing /dev/sdb1 /dev/sdc1 /dev/sdd1
Verwenden Sie für /root wie vorgesehen RAID10:
mdadm --create --verbose /dev/md2 --metadata=0.9 --level=10 --raid-devices=4 missing /dev/sdb2 /dev/sdc2 /dev/sdd2
Wenn Sie gefragt werden, ob Sie mit der Erstellung des Arrays fortfahren möchten, antworten Sie mit Ja . Wiederholen Sie den Vorgang, um RAID-Arrays für Auslagerungsspeicher und andere Partitionen zu erstellen, falls verfügbar.
HinweisRAID-Array kann nicht auf erweiterter Partition erstellt werden, mdadm antwortet mit /dev/sdbX ist für dieses Array nicht geeignet. - Überprüfen Sie das Ergebnis mit:
cat /proc/mdstat
Die Ausgabe sollte sein:
[Überfall0] [Überfall1] [Überfall10]
md5 :aktiv raid10 sdd5[3] sdc5[2] sdb5[1]
4189184 Blöcke 512K Chunks 2 Beinahe-Kopien [4/3] [_UUU]md2 :aktives raid10 sdd2[3] sdc2[2] sdb2[1]
1939915776 Blöcke 512.000 Blöcke 2 Beinahe-Kopien [4/3] [_UUU]
Bitmap:15/15 Seiten [60 KB], 65536 KB Stückmd1 :aktiver raid1 sdd1[3] sdc1[2] sdb1[1]
511936 Blöcke [4/3] [_UUU]md3 :aktives raid10 sdd3[3] sdb3[1] sdc3[2]
8387584 Blöcke 512K Chunks 2 Beinahe-Kopien [4/3] [_UUU]nicht verwendete Geräte:
- Erstellen Sie eine mdadm.conf aus der aktuellen RAID-Konfiguration:
mdadm --examine --scan >> /etc/mdadm.conf
- Erstellen Sie die Dateisysteme auf den neuen RAID-Geräten:
mkfs.ext4 /dev/md1 # You may want to use mkfs.ext2 for ext2 filesystem for /boot mkfs.ext4 /dev/md2 # ext4 filesystem for / root mkswap /dev/md3 # Swap space
Erstellen Sie das ext4-Dateisystem für alle anderen neu erstellten RAID-Arrays.
- Ersetzen Sie die Geräteeinträge in /etc/fstab mit den neuen RAID-Geräten. Führen Sie dazu zunächst aus:
blkid | grep /dev/md
Die Ausgabe mit der UUID neuer Software-RAID-Geräte sieht folgendermaßen aus:
/dev/md1:UUID=“1234abcd-12ab-12ab-12ab-123456abcdef“ TYPE=“ext4“
/dev/md2:UUID=“2234abcd-12ab-12ab-12ab-123456abcdef“ TYPE=“ext4“
/dev/md3:UUID=“3234abcd-12ab-12ab-12ab-123456abcdef“ TYPE=“swap“
/dev/md5:UUID=”4234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″In /etc/fstab , ändern Sie die Zeilen, die verschiedene Einhängepunkte enthalten, in die UUID der entsprechenden neuen /dev/mdX neuen RAID-Dateisysteme, dh den Wert nach „UUID=“. Zum Beispiel
UUID=2234abcd-12ab-12ab-12ab-123456abcdef / ext4 defaults 1 1 UUID=1234abcd-12ab-12ab-12ab-123456abcdef /boot ext4 defaults 1 2 UUID=4234abcd-12ab-12ab-12ab-123456abcdef /tmp ext4 noexec,nosuid,nodev 1 2 UUID=3234abcd-12ab-12ab-12ab-123456abcdef swap swap defaults 0 0
Lassen Sie tmpfs, devpts, sysfs, proc und andere unberührt. Wenn Sie wissen, was Sie tun, oder radikal andere Dateisysteme haben, können Sie fstab natürlich nach Belieben ändern.
- Aktualisieren Sie die initrd und erstellen Sie die initramfs mit der neuen mdadm.conf:
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.old dracut --mdadmconf --add-drivers "raid1 raid10" --filesystems "ext4 ext3 swap tmpfs devpts sysfs proc" --force /boot/initramfs-$(uname -r).img $(uname -r)
neuHinweis:Ersetzen Sie $(uname -r) durch die aktuelle Kernel-Version, wenn die Befehle für Sie nicht funktionieren, insbesondere auf einer LiveCD.
- In /boot/grub/menu.lst , ändern Sie den Wert der UUID oder des Bezeichnungseintrags für den Kernel in die UUID von / (Stammverzeichnis) auf dem RAID-Array oder /dev/md2 (ändern Sie dies entsprechend, wenn Ihr /boot auf einer anderen Partition gemountet ist). Zum Beispiel:
title CentOS (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=UUID=2234abcd-12ab-12ab-12ab-123456abcdef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
Oder,
title CentOS (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=/dev/md2 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
Stellen Sie sicher, dass KEIN rn_NO_DM und rn_NO_MD Boot-Parameter werden nicht als Optionen für den Kernel aufgeführt. Wenn Sie mit der Bearbeitung fertig sind, speichern Sie die aktualisierte menu.lst.
- Replizieren Sie die vorhandenen Daten auf vorhandenen Partitionen manuell auf neue Software-RAID-Partitionen.
Für /root (/dev/md2, ändern Sie es entsprechend, wenn es nicht so ist):
mkdir /mnt/raid mount /dev/md2 /mnt/raid cd /mnt/raid cp -ax / . sync
Für /boot:
rm -rf /mnt/raid/boot mkdir /mnt/raid/boot mount /dev/md1 /mnt/raid/boot cd /mnt/raid/boot cp -ax /boot/* . sync
Führen Sie unter SELinux außerdem Folgendes aus:touch /mnt/raid/.autorelabel für /boot.
Wenn Sie weitere Partitionen wie /var, /home usw. zur Verfügung haben, wiederholen Sie den Vorgang für diese Dateisysteme. Zum Beispiel:
rm -rf /mnt/raid/home mkdir /mnt/raid/home mount /dev/md1 /mnt/raid/home cd /mnt/raid/home cp -ax /home/* . sync
TippEs gibt viele Möglichkeiten, die Dateien auf neue RAID-Arrays zu kopieren und zu duplizieren. Zum Beispiel:rsync -avxHAXS --delete --progress / /mnt/raid tar -C / -clspf - . | tar -xlspvf - find / -depth -xdev | cpio -pmd /mnt/raid
- Installieren Sie Grub 0.97 auf dem MBR aller Festplatten, damit das System booten kann, wenn eine der Festplatten ausfällt. Dazu muss folgender Schritt durchgeführt werden::
grub grub> root (hd0,0) grub> setup (hd0) grub> root (hd1,0) grub> setup (hd1) grub> root (hd2,0) grub> setup (hd2) grub> root (hd3,0) grub> setup (hd3) grub> quit
Überspringen Sie hd2 und hd3, wenn Sie nur 2 Festplatten haben.
- Wir werden den Server neu starten. Sichern Sie alles, falls der Server nicht zurückkommt, und geben Sie dann Folgendes aus:
reboot
Der erste Teil der Konfiguration der Linux-Software-RAID-Unterstützung auf dem aktuell ausgeführten System ist abgeschlossen. Wenn der Server zurückgekehrt ist, fahren Sie mit den folgenden Verfahren fort, um die fehlende Festplatte (z. B. /dev/sda, auf der das System ursprünglich ausgeführt wird) erneut zu den RAID-Arrays hinzuzufügen. Die folgende Anleitung geht davon aus, dass die verbleibende Festplatte, die nicht zu RAID-Arrays hinzugefügt wurde, /dev/sda ist. Ändern Sie, falls Ihr Gerätename anders ist.
- Bestätigen Sie nach dem Hochfahren des Servers, dass die Dateisysteme auf den RAID-Arrays gemountet sind, d. h. /dev/md0, /dev/md1…./dev/md3.
df -h
Erwartetes Ergebnis:
Filesystem Size Used Avail Use% Mounted on /dev/md2 1.8T 1.2G 1.7T 1% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/md1 477M 76M 377M 17% /boot /dev/md5 3.9G 8.1M 3.7G 1% /tmp
- Ändern Sie die Partitionstabelle der Festplatte mit den folgenden Befehlen in MBR. Überspringen Sie diesen Schritt, wenn die Festplatte keine GTP-Partitionstabelle hat.
parted /dev/sda (parted) mktable msdos (parted) quit
Antworten Sie mit Ja wenn Sie mit „Warnung:Das vorhandene Plattenlabel auf /dev/sdb wird zerstört und alle Daten auf dieser Platte gehen verloren. Möchten Sie fortfahren?“
- Löschen Sie alle vorhandenen Partitionen auf /dev/sda:
fdisk /dev/sda
Command (m for help): d Partition number (1-5): 1 Command (m for help): d Partition number (1-5): 2 Command (m for help): d Partition number (1-5): 3 Command (m for help): d Partition number (1-5): 4 Command (m for help): d Partition number (1-5): 5 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
- Entfernen Sie jegliches RAID auf der Festplatte:
mdadm --zero-superblock /dev/sda{1..9}
Update an Kernel senden:
partprobe /dev/sda
- Kopieren Sie die Partitionsstruktur von /dev/sdb:
sfdisk -d /dev/sdb | sfdisk --force /dev/sda
- Ausführen:
fdisk -l
Stellen Sie sicher, dass alle Partitionen, die die RAID-Arrays bilden, von fd sind Automatische Erkennung von Linux-RAID-Partitionstypen (Wert in der Spalte „ID“). Wenn es Linux vom Typ 83 ist, verwenden Sie fdisk, cfdisk oder parted, um es in „fd“ zu ändern. Zum Beispiel:
Aktualisierung an den Kernel senden, wenn es Änderungen gibt.
partprobe /dev/sda
- Fügen Sie die Partitionen in /dev/sda zu den jeweiligen RAID-Arrays hinzu, um die Arrays zu vervollständigen (4 Festplatten auf RAID10 oder 2 Festplatten auf RAID1):
mdadm --add /dev/md1 /dev/sda1 mdadm --add /dev/md2 /dev/sda2 mdadm --add /dev/md3 /dev/sda3
Wiederholen Sie dies gegebenenfalls für andere Partitionen.
- Überprüfen Sie den Fortschritt des RAID-Wiederherstellungsprozesses mit:
cat /proc/mdstat
Die Ausgabe sollte sein:
[Überfall0] [Überfall1] [Überfall10]
md5 :aktiv raid10 sdd5[3] sdc5[2] sdb5[1]
4189184 Blöcke 512K Chunks 2 Beinahe-Kopien [4/3] [_UUU]md2 :aktives raid10 sdd2[3] sdc2[2] sdb2[1]
1939915776 Blöcke 512.000 Blöcke 2 Beinahe-Kopien [4/3] [_UUU]
[====>…………………………….] Erholung =37,8 % (177777777/388888888) Ende =60,5 min Geschwindigkeit =100000 K/s
Bitmap:15/15 Seiten [60 KB], 65536 KB Stückmd1 :aktiver raid1 sdd1[3] sdc1[2] sdb1[1]
511936 Blöcke [4/3] [_UUU]md3 :aktives raid10 sdd3[3] sdb3[1] sdc3[2]
8387584 Blöcke 512K Chunks 2 Beinahe-Kopien [4/3] [_UUU]nicht verwendete Geräte:
watch -n 5 cat /proc/mdstat
- Erstellen Sie den Boot-Record auf dem /dev/sda MBR mit grub neu, um sicherzustellen, dass das System auf jeder Festplatte booten kann:
grub grub> root (hd0,0) grub> setup (hd0) grub> quit
- Führen Sie nach der Wiederherstellung aller RAID-Arrays einen Systemneustart durch.
reboot
- Als das System wieder hochgefahren und online war, herzlichen Glückwunsch, Sie arbeiten jetzt mit Software-RAID.
Nachdem RAID mit mdadm aktiviert wurde, ist es am wichtigsten, sicherzustellen, dass das E-Mail-Warnbenachrichtigungssystem funktioniert. Linux-Software-RAID kann sich selbst auf mögliche Probleme auf den RAID-Arrays wie Festplattenfehler überwachen und E-Mail-Benachrichtigungen senden, wenn es mögliche Fehler findet.
Um zu überprüfen, ob die E-Mail-Benachrichtigung funktioniert, geben Sie den folgenden Befehl ein:
mdadm --monitor --test --oneshot /dev/md1
Sie sollten eine E-Mail mit dem Inhalt von /proc/mdstat erhalten. Wenn Sie die E-Mail nicht erhalten, vergewissern Sie sich, dass Ihr System E-Mails senden kann, und überprüfen Sie die MAILADDR Wert in mdadm.conf . Es sollte ungefähr so lauten:
MAILADDR [email protected]