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

Mdadm Raid-Implementierung mit GPT-Partitionierung?

Meine aktuelle Idee ist, mit mdadm ein Software-Array der Klasse RAID-6 mit 4 Mitgliedslaufwerken zu erstellen .

Insbesondere wären die Laufwerke 1-TB-HDDs auf SATA in einem kleinen Server Dell T20.

Betriebssystem ist GNU/Linux Debian 8.6 (später aktualisiert:Jessie ⟶ Stretch ⟶ Buster)

Das würde in meinem Fall 2 TB Speicherplatz mit 2 TB Parität ergeben.

Ich hätte es auch gerne mit GPT-Partitionstabelle, damit das funktioniert, bin ich mir nicht sicher, wie ich vorgehen soll, speziell angenommen, ich würde es vorziehen, dies rein über das Terminal zu tun.

Da ich noch nie ein RAID-Array erstellt habe, können Sie mir erklären, wie ich vorgehen soll?

Hinweise:

  • Dieses Array dient nur für die alleinigen Daten. Kein Boot oder Betriebssystem darauf.

  • Ich habe mich aufgrund des Zwecks dieses Arrays für RAID-6 entschieden. Zwei Laufwerksausfälle muss das Array überstehen können. Da ich per Hardware auf 4 Laufwerke beschränkt bin, gibt es meines Wissens keine Alternative zu RAID-6. (So ​​hässlich die RAID-6-Verlangsamung auch erscheinen mag, in diesem Array spielt sie keine Rolle.)

Akzeptierte Antwort:

Machen Sie in dieser Antwort deutlich, dass alle Daten auf allen Array-Mitgliedern (Laufwerken) zerstört werden, also sichern Sie sie zuerst!

Öffnen Sie das Terminal und werden Sie root (su ); wenn Sie sudo haben aktiviert ist, können Sie beispielsweise auch sudo -i ausführen; siehe man sudo für alle Optionen):

sudo -i

Zuerst sollten wir die Laufwerke löschen, falls vorher Daten und Dateisysteme vorhanden waren. Angenommen, wir haben 4 Mitglieder:sdi , sdj , sdk , sdl . Um ein visuelles Feedback zu diesem Vorgang zu erhalten, wird die Datei pv (Pipe-Viewer ) wurde hier verwendet:

pv < /dev/zero > /dev/sdi
pv < /dev/zero > /dev/sdj
pv < /dev/zero > /dev/sdk
pv < /dev/zero > /dev/sdl

Alternativ können Sie, um nur zu überprüfen, ob nichts zurückgeblieben ist, mit GParted auf allen Laufwerken nachsehen, und wenn es eine Partition mit oder ohne Dateisystem gibt, könnte es ausreichen, sie zu löschen, obwohl ich selbst das obige Nullsetzen vorziehe die beteiligten Laufwerke, denken Sie daran, alle Partitionen auszuhängen, bevor Sie dies tun, es könnte ähnlich wie in diesen Einzeilern gemacht werden:

umount /dev/sdi?; wipefs --all --force /dev/sdi?; wipefs --all --force /dev/sdi
umount /dev/sdj?; wipefs --all --force /dev/sdj?; wipefs --all --force /dev/sdj
umount /dev/sdk?; wipefs --all --force /dev/sdk?; wipefs --all --force /dev/sdk
umount /dev/sdl?; wipefs --all --force /dev/sdl?; wipefs --all --force /dev/sdl

Dann initialisieren wir alle Laufwerke mit der GUID-Partitionstabelle (GPT), und wir müssen alle Laufwerke partitionieren, aber tun Sie dies nicht mit GParted, weil es dabei ein Dateisystem erstellen würde, was wir nicht wollen, Verwenden Sie gdisk stattdessen:

gdisk /dev/sdi
gdisk /dev/sdj
gdisk /dev/sdk
gdisk /dev/sdl

Verwenden Sie in allen Fällen Folgendes:

o Eingabe für neue leere GUID-Partitionstabelle (GPT)
y Eingabe um Ihre Entscheidung zu bestätigen
n Eingabe für neue Partition
Eingabe für Vorgabe der ersten Partition
Enter für Vorgabe des ersten Sektors
Enter für Vorgabe des letzten Sektors
fd00 Eingabe für Linux-RAID-Typ
w Eingabe um Änderungen zu schreiben
y Eingabe um Ihre Entscheidung zu bestätigen

Verwandte:Allzweck-CPU als Logikanalysator besser / schlechter als dedizierte FPGA-Implementierung?

Sie können die Laufwerke jetzt untersuchen:

mdadm --examine /dev/sdi /dev/sdj /dev/sdk /dev/sdl

Es sollte heißen:

(type ee)

Wenn ja, untersuchen wir jetzt die Partitionen:

mdadm --examine /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

Es sollte heißen:

No md superblock detected

Wenn dies der Fall ist, können wir das RAID6-Array erstellen:

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

Wir sollten warten, bis das Array vollständig erstellt ist, diesen Vorgang können wir leicht watch :

watch cat /proc/mdstat

Nach der Erstellung des Arrays sollten wir uns dessen Details ansehen:

mdadm --detail /dev/md0

Es sollte heißen:

          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

Jetzt erstellen wir ein Dateisystem auf dem Array, wenn Sie ext4 verwenden , die unten ausgeblendet Befehl ist wegen ext4lazyinit besser zu vermeiden würde bei einem großen Array merklich viel Zeit in Anspruch nehmen, daher der Name „lazyinit “, deshalb empfehle ich Ihnen, diesen zu vermeiden:

mkfs.ext4 /dev/md0

Stattdessen sollten Sie eine vollständige sofortige Initialisierung erzwingen (wobei 0 % für root reserviert sind da es sich um ein Datenarray handelt):

mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0

Durch Angabe dieser Optionen werden die Inodes und das Journal sofort während der Erstellung initialisiert, was für größere Arrays nützlich ist.

Wenn Sie sich für eine Abkürzung entschieden und die Datei ext4 erstellt haben Dateisystem mit dem „besser vermiedenen Befehl“, beachten Sie, dass ext4lazyinit wird merklich viel Zeit in Anspruch nehmen, um alle Inodes zu initialisieren, Sie können es beobachten, bis es fertig ist, z. mit iotop oder nmon .

Wie auch immer Sie sich entscheiden, das Dateisystem zu initialisieren, Sie sollten es mounten, nachdem es seine Initialisierung abgeschlossen hat.

Wir erstellen jetzt ein Verzeichnis für dieses RAID6-Array:

mkdir -p /mnt/raid6

Und einfach mounten:

mount /dev/md0 /mnt/raid6

Da wir im Wesentlichen fertig sind, können wir GParted erneut verwenden, um schnell zu überprüfen, ob es linux-raid anzeigt Dateisystem zusammen mit dem raid Flag auf allen Laufwerken.

Wenn dies der Fall ist, haben wir das RAID6-Array ordnungsgemäß mit GPT-Partitionen erstellt und können nun Dateien darauf kopieren.

Sehen Sie, welche UUID der md hat Dateisystem hat:

blkid /dev/md0

Kopieren Sie die UUID in die Zwischenablage.

Jetzt müssen wir fstab bearbeiten , mit Ihrem bevorzugten Texteditor habe ich nano verwendet , obwohl sudoedit könnte besser verwendet werden:

nano /etc/fstab

Und fügen Sie einen Eintrag hinzu:

UUID=<the UUID you have in the clipboard>    /mnt/raid6    ext4    defaults    0 0

Ich selbst empfehle die Verwendung von defaults nicht Satz von Flags, ich wollte lediglich, dass die Zeile nicht zu komplex wird.

Hier ist, welche Mount-Flags ich auf einem UPS-gesicherten Daten-RAID verwende (anstelle von defaults ):
nofail,nosuid,nodev,noexec,nouser,noatime,auto,async,rw,data=journal,errors=remount-ro

Sie können überprüfen, ob es korrekt ist, nachdem Sie die Änderungen gespeichert haben:

mount -av | grep raid6

Es sollte heißen:

already mounted

Wenn dies der Fall ist, speichern wir die Array-Konfiguration; falls Sie kein md haben Gerät noch nicht erstellt haben, können Sie einfach Folgendes tun:

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

Falls bereits Arrays vorhanden sind, führen Sie einfach den vorherigen Befehl ohne Umleitung zur Konfigurationsdatei aus:

mdadm --detail --scan

und fügen Sie das neue Array manuell zur Konfigurationsdatei hinzu.

Verwandt:Startzeit des Prozesses mit Zeitzone?

Vergessen Sie am Ende nicht, Ihr initramfs zu aktualisieren , da Ihr neues Array sonst nur automatisch schreibgeschützt assembliert wird, wahrscheinlich als /dev/md127 oder ähnlich:

update-initramfs -u -k all

Überprüfen Sie, ob Sie alles nach Plan gemacht haben, und wenn ja, können Sie neu starten:

reboot

Linux
  1. Ersetzen eines fehlerhaften RAID 6-Laufwerks mit mdadm

  2. Mdadm für vorhandenes Intel Rapid Storage Array konfigurieren?

  3. Bash-Arrays mit Beispielen

  4. AWK-Arrays erklärt mit 5 praktischen Beispielen

  5. RedHat / CentOS :Verwalten von Software-RAID mit mdadm

Bash-Scripting – Assoziatives Array mit Beispielen erklärt

Wie kann ich Ubuntu 14.04 mit Raid 1 mithilfe des Desktop-Installationsprogramms installieren?

Das ultimative Bash-Array-Tutorial mit 15 Beispielen

mdadm:Befehl nicht gefunden

Einfaches mdadm RAID 1, das Ersatz nicht aktiviert

Fügen Sie Linux MD Raid Write Journal zu einem vorhandenen Array hinzu