Startseite » wie man » So richten Sie Software-RAID für einen einfachen Dateiserver unter Ubuntu ein

    So richten Sie Software-RAID für einen einfachen Dateiserver unter Ubuntu ein

    Benötigen Sie einen günstigen Dateiserver, der einfach einzurichten ist und mit Email Alerting zuverlässig funktioniert? zeigt Ihnen, wie Sie Ubuntu, Software-RAID und SaMBa verwenden, um genau dies zu erreichen.

    Überblick

    Trotz des jüngsten Umtriebs, alle Daten in die „allmächtige“ Cloud zu verschieben, möchten Sie möglicherweise manchmal nicht, dass Ihre Informationen auf dem Server einer anderen Person gespeichert werden, oder es ist möglicherweise unmöglich, die erforderlichen Datenmengen jedes Mal aus dem Internet herunterzuladen (z. B. Image-Bereitstellung) ). Bevor Sie einen Platz in Ihrem Budget für eine Speicherlösung freigeben, sollten Sie eine Konfiguration in Betracht ziehen, die unter Linux lizenzierungsfrei ist.

    Günstig / frei zu sein bedeutet jedoch nicht, "Vorsicht in den Wind zu werfen". Zu diesem Zweck werden wir einige Punkte beachten, die zu beachten sind. Konfigurationen, die zusätzlich zur Verwendung von Software-RAID eingerichtet werden sollten, um das zu erreichen Maximales Preis-Leistungsverhältnis.

    Bild von Filomena Scalise

    Über Software-RAID

    Wie der Name schon sagt, handelt es sich hierbei um ein RAID-Setup (Redundant Array of Inexpensive Disks), das vollständig in Software ausgeführt wird, anstatt eine dedizierte Hardwarekarte zu verwenden. Der Hauptvorteil einer solchen Sache sind Kosten, da diese dedizierte Karte eine zusätzliche Prämie für die Basiskonfiguration des Systems ist. Die Hauptnachteile sind im Wesentlichen die Leistung und die Zuverlässigkeit, da eine solche Karte normalerweise mit einem eigenen RAM + CPU ausgestattet ist, um die für die Redundanzmathematik erforderlichen Berechnungen, das Zwischenspeichern von Daten für eine höhere Leistung und die optionale Sicherungsbatterie durchzuführen, die ungeschriebene Vorgänge im Cache speichert Die Stromversorgung wurde im Falle eines Stromausfalls wiederhergestellt.

    Bei einem Software-RAID-Setup müssen Sie die CPU-Leistung eines Systems opfern, um die Gesamtkosten des Systems zu reduzieren. Bei heutigen CPUs ist der Aufwand jedoch relativ gering (insbesondere, wenn Sie diesen Server hauptsächlich als "Dateiserver" verwenden). Was die Festplattenleistung angeht, gibt es eine Strafe… jedoch habe ich noch nie einen Engpass des Datenträgersubsystems vom Server festgestellt, um festzustellen, wie tief er ist. Der Toms-Hardware-Leitfaden „Tom's goes RAID5“ ist ein Oldie-Artikel, aber ein ausführlicher Artikel über das Thema, den ich persönlich als Referenz benutze. Die Benchmarks werden jedoch mit einem Hauch Salz behandelt, da es sich um die Windows-Implementierung von Software-RAID handelt (wie bei alles andere, ich bin sicher, Linux ist viel besser: P).

    Voraussetzungen

    • Geduld junger, das ist eine lange Lektüre.
    • Es wird davon ausgegangen, dass Sie wissen, was RAID ist und wofür es verwendet wird.
    • Dieses Handbuch wurde unter Verwendung des Ubuntu-Servers9.10 x64 erstellt. Daher wird davon ausgegangen, dass Sie über ein Debian-basiertes System verfügen, mit dem Sie ebenfalls arbeiten können.
    • Sie werden sehen, dass ich VIM als Editorprogramm verwende. Dies ist nur deshalb so, weil ich daran gewöhnt bin ... Sie können jeden anderen Editor verwenden, den Sie möchten.
    • Das Ubuntu-System, das ich zum Schreiben dieses Handbuchs verwendet habe, wurde auf einer Diskette installiert. Dies erlaubte mir, sda1 als Teil des RAID-Arrays zu verwenden. Passen Sie es daher an Ihr Setup an.
    • Je nachdem, welchen RAID-Typ Sie erstellen möchten, benötigen Sie mindestens zwei Festplatten in Ihrem System. In diesem Handbuch verwenden wir 6 Festplatten.

    Auswahl der Festplatten, aus denen das Array besteht

    Der erste Schritt zur Vermeidung einer Falle ist das Wissen um ihre Existenz (Thufir Hawat von Dune).

    Die Auswahl der Datenträger ist ein wichtiger Schritt, der nicht leichtfertig getroffen werden sollte, und es wäre klug, wenn Sie die Erfahrung Ihres truly nutzen und diese Warnung beachten:

    Tun NICHT Verwenden Sie Laufwerke für Consumer-Laufwerke, um Ihr Array zu erstellen, verwenden Sie Laufwerke für Server-Grade!!!!!!

    Jetzt weiß ich, was Sie denken. Haben wir nicht gesagt, dass wir billig sein werden? und ja, wir haben es getan, aber dies ist genau einer der Orte, an denen dies leichtsinnig ist und vermieden werden sollte. Trotz ihres attraktiven Preises sind Consumer-Laufwerke nicht für den Einsatz im 24-Stunden-Betrieb konzipiert. Vertrauen Sie mir, Ihr hat es wirklich für Sie versucht. Mindestens vier Laufwerke für Consumer-Laufwerke in den 3 Servern, die ich so eingerichtet habe (aufgrund von Budgetbeschränkungen), sind nach etwa 1,5 bis 1,8 Jahren nach dem ersten Starttag des Servers ausgefallen. Es gab zwar keinen Datenverlust, da das RAID seine Aufgabe erfüllt hat Gut und überlebt… Momente wie diese verkürzen die Lebenserwartung des Sysadmin, ganz zu schweigen von Ausfallzeiten für das Unternehmen für die Serverwartung (etwas, das möglicherweise mehr kostet als die Laufwerke der höheren Klasse)..

    Einige können sagen, dass es keinen Unterschied in der Ausfallrate zwischen den beiden Typen gibt. Dies mag zwar zutreffen, jedoch weisen Server-Laufwerke trotz dieser Behauptungen immer noch ein höheres Maß an SMART-Einschränkungen und QAing auf (dies kann daran gesehen werden, dass sie nicht auf den Markt gebracht werden, sobald sich die Laufwerke für Verbraucher befinden). Daher empfehle ich immer noch, dass Sie das zusätzliche $$$ für das Upgrade herausgreifen.

    Auswahl des RAID-Levels.

    Obwohl ich nicht alle verfügbaren Optionen besprechen werde (dies ist im RAID-Wikipedia-Eintrag sehr gut dokumentiert), halte ich es für bemerkenswert, dass Sie sich immer für mindestens RAID 6 oder höher entscheiden sollten ( wir werden verwenden Linux RAID10). Dies liegt daran, dass beim Ausfall eines Datenträgers die Wahrscheinlichkeit eines Ausfalls eines benachbarten Datenträgers höher ist und Sie einen "Zwei-Datenträger-Fehler" in Ihren Händen haben. Wenn Sie große Laufwerke verwenden, haben größere Platten eine höhere Datendichte auf der Oberfläche des Plattentellers. IMHO-Festplatten von 2T und darüber hinaus werden immer in diese Kategorie fallen.

    Lass uns knacken

    Festplatten partitionieren

    Während wir in Linux / GNU das gesamte Blockgerät für Speicheranforderungen verwenden konnten, werden wir Partitionen verwenden, da es einfacher wird, Festplattenrettungs-Tools zu verwenden, falls das System kaputt geht. Wir verwenden hier das Programm „fdisk“. Wenn Sie jedoch Festplatten verwenden, die größer als 2T sind, müssen Sie ein Partitionierungsprogramm verwenden, das GPT-Partitionierung wie Parted unterstützt.

    sudo fdisk / dev / sdb

    Hinweis: Ich habe beobachtet, dass es möglich ist, das Array zu erstellen, ohne den Partitionstyp zu ändern. Da dies jedoch im gesamten Netz beschrieben wird, werde ich dem Beispiel folgen (wieder, wenn das gesamte Blockgerät verwendet wird, ist dies nicht erforderlich)..

    In fdisk sind die Tastenanschläge:

    n; für eine neue Partition
    eingeben
    p; für eine primäre Partition
    eingeben
    1; Anzahl der Partitionen
    eingeben ; akzeptiere die Standardeinstellung
    eingeben ; akzeptiere die Standardeinstellung
    t; um den Typ zu ändern
    fd; Setzt den Typ auf "Automatische Erkennung eines Linux-Raids" (83h)
    w; Änderungen auf die Festplatte schreiben und beenden

    Spülen Sie und wiederholen Sie den Vorgang für alle Festplatten, die Teil des Arrays sein werden.

    Erstellen eines Linux-RAID10-Arrays

    Der Vorteil der Verwendung von “Linux raid10 “bedeutet, dass es eine ungerade Anzahl von Festplatten nutzen kann, um die Leistung und Ausfallsicherheit noch weiter zu steigern, als das Vanilla RAID10, und zusätzlich dazu, dass das 10-Array in einem einzigen Gerät erstellt werden kann Schritt.

    Erstellen Sie das Array aus den Festplatten, die wir im letzten Schritt vorbereitet haben, indem Sie Folgendes ausgeben:

    sudo mdadm --create / dev / md0 --chunk = 256 --level = 10 -p f2 --raid-devices = 5 / dev / sda1 / dev / sdb1 / dev / sdc1 / dev / sdd1 / dev / sde1 - -verbose

    Hinweis: Dies ist alles nur eine Zeile, obwohl die Darstellung es in zwei Teile teilt.

    Lassen Sie uns die Parameter aufschlüsseln:

    • "-Chunk = 256" - Die Größe der Bytes, in die die RAID-Streifen zerlegt werden. Diese Größe wird für neue / große Festplatten empfohlen (die für diese Anleitung verwendeten 2T-Laufwerke waren ohne Zweifel in dieser Kategorie)..
    • "-Level = 10" - Verwendet die Linux raid10 (falls ein traditioneller Überfall erforderlich ist, müssten Sie aus zwei Gründen zwei Arrays erstellen und sich ihnen anschließen).
    • „-P f2“ - Verwendet den Rotationsplan „Far“ (Weitere Informationen siehe Hinweis unten) und „2“ zeigt an, dass das Array zwei Kopien der Daten aufbewahrt.

    Hinweis: Wir verwenden den "far" -Plan, da das physische Datenlayout auf den Festplatten NICHT das gleiche ist. Dies hilft, die Situation zu überwinden, in der die Hardware eines der Laufwerke aufgrund eines Herstellungsfehlers ausfällt (und denken Sie nicht, dass dies "mir nicht passiert", wie Sie es tatsächlich getan haben). Aufgrund der Tatsache, dass die beiden Festplatten vom gleichen Hersteller und Modell sind, auf dieselbe Weise verwendet wurden und die Daten traditionell am gleichen physischen Ort aufbewahrt werden… besteht das Risiko, dass das Laufwerk, auf dem sich die Kopie der Daten befindet, ausgefallen ist zu oder ist nahe genug und bietet nicht die erforderliche Ausfallsicherheit, bis eine Ersatzfestplatte ankommt. Durch den "Weit" -Plan wird die Datenverteilung an einen völlig anderen physischen Ort auf den Kopierlaufwerken vorgenommen, und es werden Festplatten verwendet, die innerhalb des Computergehäuses nicht nahe beieinander liegen. Weitere Informationen finden Sie hier und unter den Links.

    Sobald das Array erstellt wurde, beginnt der Synchronisierungsprozess. Sie können zwar auf Traditionen warten, da dies eine Weile dauern kann, Sie können das Array jedoch sofort verwenden.

    Der Fortschritt kann beobachtet werden mit:

    watch -d cat / proc / mdstat

    Erstellen Sie die Konfigurationsdatei mdadm.conf

    Ubuntu weiß zwar, dass das Array beim Start automatisch gescannt und aktiviert werden muss. Aus Gründen der Vollständigkeit und der Höflichkeit für den nächsten Sysadmin erstellen wir die Datei. Ihr System erstellt die Datei nicht automatisch und der Versuch, sich alle Komponenten / Partitionen Ihres RAID-Sets zu merken, ist ein Hingucker des Systemadministrators. Diese Informationen können und sollten in der Datei mdadm.conf gespeichert werden. Die Formatierung kann schwierig sein, aber glücklicherweise liefert Ihnen die Ausgabe des Befehls mdadm -detail -scan -verbose die Ausgabe.

    Hinweis: Es wurde folgendes gesagt: „Die meisten Distributionen erwarten die Datei mdadm.conf in / etc /, nicht in / etc / mdadm. Ich glaube, dass dies ein "Ubuntu-Ism" ist, um es als /etc/mdadm/mdadm.conf zu haben. Aufgrund der Tatsache, dass wir sind Wenn Sie Ubuntu hier verwenden, werden wir einfach mitmachen.

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

    WICHTIG! Sie müssen eine "0" aus der neu erstellten Datei entfernen, da die Syntax, die sich aus dem obigen Befehl ergibt, nicht vollständig korrekt ist (GNU / Linux ist noch kein Betriebssystem)..

    Wenn Sie das Problem sehen möchten, das durch diese falsche Konfiguration verursacht wird, können SieScan" Befehl an dieser Stelle, bevor Sie die Einstellung vornehmen:

    mdadm -examine -scan

    Um dies zu umgehen, bearbeiten Sie die Datei /etc/mdadm/mdadm.conf und ändern:

    Metadaten = 00,90

    Lesen:

    Metadaten = 0,90

    Ausführen der Mdadm-Examin-Scan Der Befehl sollte jetzt ohne Fehler zurückkehren.

    Dateisystem-Setup im Array

    Ich habe ext4 für dieses Beispiel verwendet, weil es für mich einfach auf der Vertrautheit des ext3-Dateisystems aufgebaut war, das vor ihm lag, und gleichzeitig bessere Leistung und Funktionen versprach.
    Ich empfehle Ihnen, sich die Zeit zu nehmen, um herauszufinden, welches Dateisystem besser zu Ihren Anforderungen passt, und ein guter Anfang ist unser Artikel „Welches Linux-Dateisystem sollten Sie wählen?“.

    Sudo mkfs.ext4 / dev / md0

    Hinweis: In diesem Fall habe ich das resultierende Array nicht partitioniert, da ich es zu der Zeit einfach nicht benötigte, da der anfordernde Teilnehmer ausdrücklich mindestens 3,5T kontinuierlichen Speicherplatz angefordert hat. Hätte ich Partitionen erstellen wollen, hätte ich ein GPT-fähiges Dienstprogramm wie "parted" verwenden müssen..

    Montage

    Erstellen Sie den Einhängepunkt:

    sudo mkdir / media / raid10

    Hinweis: Dies kann ein beliebiger Ort sein, das oben ist nur ein Beispiel.

    Weil es sich um ein "zusammengebautes Gerät" handelt, werden wir es tun nicht Verwenden Sie die UUID des Dateisystems, die sich auf dem Gerät zum Einhängen befindet (wie für andere Gerätetypen in unserem Handbuch „Was ist die Linux-Fstab und wie funktioniert es“ empfohlen), da das System möglicherweise einen Teil des Dateisystems auf einer einzelnen Festplatte und sieht versuchen zu falsch direkt montieren. Um dies zu vermeiden, möchten wir explizit darauf warten, dass das Gerät „zusammengebaut“ wird, bevor wir versuchen, es zu montieren, und wir werden den Namen des zusammengesetzten Arrays („md“) verwenden fstab um das zu erreichen.
    Bearbeiten Sie die Fstab-Datei:

    sudo vim / etc / fstab

    Und fügen Sie diese Zeile hinzu:

    / dev / md0 / media / raid10 / ext4 - Standardeinstellungen 1 2

    Hinweis: Wenn Sie den Mount-Ort oder das Dateisystem anhand des Beispiels ändern, müssen Sie die obigen Angaben entsprechend anpassen.

    Verwenden Sie mount mit dem automatischen Parameter (-a), um einen Systemstart zu simulieren. So wissen Sie, dass die Konfiguration ordnungsgemäß funktioniert und das RAID-Gerät beim Neustart des Systems automatisch gemountet wird:

    Sudo-Mount -a

    Sie sollten jetzt in der Lage sein, das mit dem Befehl "mount" gemountete Array ohne Parameter zu sehen.

    E-Mail-Benachrichtigungen für das RAID-Array

    Im Gegensatz zu Hardware-RAID-Arrays gibt es bei einem Software-Array keinen Controller, der einen Piepton auslösen würde, um Sie zu informieren, wenn etwas schief gegangen ist. Daher werden E-Mail-Benachrichtigungen unsere einzige Möglichkeit sein, um zu erfahren, ob etwas mit einer oder mehreren Festplatten im Array passiert ist und dies somit zur wichtigster Schritt.

    Befolgen Sie die Anweisungen im Abschnitt "Einrichten von E-Mail-Benachrichtigungen unter Linux mit Google Mail oder SMTP". Wenn Sie fertig sind, kehren Sie hier zurück, um die RAID-spezifischen Schritte auszuführen.

    Vergewissern Sie sich, dass mdadm E-Mails senden kann
    Der folgende Befehl weist mdadm an, nur eine E-Mail abzufeuern und zu schließen.

    sudo mdadm --monitor --scan --test --oneshot

    Bei Erfolg erhalten Sie eine E-Mail, in der der Zustand des Arrays beschrieben wird.

    Legen Sie für die Mdadm-Konfiguration fest, dass beim Start eine E-Mail gesendet wird
    Obwohl dies kein absolutes Muss ist, ist es schön, von Zeit zu Zeit ein Update von der Maschine zu erhalten, um uns mitzuteilen, dass die E-Mail-Fähigkeit noch funktioniert und der Zustand des Arrays. Sie werden wahrscheinlich nicht von E-Mails überfordert sein, da diese Einstellung nur für Starts gilt (auf Servern sollte es nicht viele sein)..
    Bearbeiten Sie die Mdadm-Konfigurationsdatei:

    sudo vim / etc / default / mdadm

    Ergänzen Sie die -Prüfung Parameter an die DAEMON_OPTIONS Abschnitt, so dass es aussehen würde:

    DAEMON_OPTIONS = "- syslog --test"

    Sie können den Computer nur dann neu starten, um sicherzustellen, dass Sie sich in der Schleife befinden, dies ist jedoch kein Muss.

    Samba-Konfiguration

    Durch die Installation von SaMBa auf einem Linux-Server kann dieser wie ein Windows-Dateiserver arbeiten. Um die Daten, die wir auf dem Linux-Server hosten, für Windows-Clients verfügbar zu machen, werden wir SaMBa installieren und konfigurieren.
    Es ist komisch zu erwähnen, dass der Paketname von SaMBa ein Wortspiel im Microsoft-Protokoll ist, das für die Dateifreigabe verwendet wird und als SMB (Service Message Block) bezeichnet wird..

    In diesem Handbuch wird der Server zu Testzwecken verwendet, sodass wir den Zugriff auf seine Freigabe ermöglichen ohne Wenn Sie ein Kennwort benötigen, möchten Sie möglicherweise etwas mehr darüber erfahren, wie Sie Berechtigungen einrichten, sobald das Setup abgeschlossen ist.

    Es wird außerdem empfohlen, dass Sie einen nicht privilegierten Benutzer als Eigentümer der Dateien erstellen. In diesem Beispiel verwenden wir den Benutzer "Geek", den wir für diese Aufgabe erstellt haben. Erläuterungen zum Erstellen eines Benutzers und zum Verwalten des Besitzes und der Berechtigungen finden Sie in den Handbüchern "Erstellen eines neuen Benutzers auf Ubuntu Server 9.10" und "Anfängerhandbuch zum Verwalten von Benutzern und Gruppen in Linux".

    Samba installieren:

    aptitude install samba

    Bearbeiten Sie die Samba-Konfigurationsdatei:

    sudo vim /etc/samba/smb.conf

    Fügen Sie eine Freigabe mit dem Namen „General“ hinzu, die Zugriff auf den Mount-Punkt „/ media / raid10 / general“ gewährt, indem Sie das Folgende an die Datei anhängen.

    [Allgemeines]
    Pfad = / media / raid10 / general
    Benutzer zwingen = Geek
    Kraftgruppe = Aussenseiter
    Nur lesen = Nein
    Erzeuge Maske = 0777
    Verzeichnismaske = 0777
    Nur Gast = Ja
    Gast ok = Ja

    Die obigen Einstellungen machen die Freigabe adressierbar ohne ein Kennwort für alle Benutzer und macht den Standardbesitzer der Dateien zum Benutzer "Geek".

    Diese smb.conf-Datei wurde zu Referenzzwecken von einem funktionierenden Server abgerufen.

    Starten Sie den Samba-Dienst neu, damit die Einstellungen wirksam werden:

    Sudo /etc/init.d/samba neu starten

    Sobald Sie fertig sind, können Sie die Testparm Befehl, um die auf den Samba-Server angewendeten Einstellungen anzuzeigen.
    Das ist es, der Server sollte jetzt von jeder Windows-Box aus über Folgendes erreichbar sein:

    \ server-namegeneral

    Fehlerbehebung

    Wenn ein Problem behoben werden muss oder ein Datenträger in einem Array fehlerhaft ist, schlage ich vor, auf das mdadm-Spickzettel Bezug zu nehmen (das ist was ich mache…).

    Im Allgemeinen sollten Sie daran denken, dass bei einem Ausfall eines Laufwerks das Laufwerk aus dem Array „entfernt“ werden muss, der Computer heruntergefahren, das fehlerhafte Laufwerk durch ein neues ersetzt und das neue Laufwerk dem Array „hinzugefügt“ wird, nachdem Sie das entsprechende Laufwerk erstellt haben ggf. Layout (Partitionen) darauf.

    Sobald dies erledigt ist, möchten Sie möglicherweise sicherstellen, dass das Array neu erstellt wird, und den Fortschritt mit folgendem beobachten:

    watch -d cat / proc / mdstat

    Viel Glück! :)

    Verweise:
    Mdadm Spickzettel
    RAID-Level brechen zusammen
    Linux RAID10 erklärt
    mdadm Befehlshandbuch
    mdadm Konfigurationsdatei Manpage
    Einschränkungen der Partition werden erläutert


    Die Verwendung von Software-RAID kostet nicht viel ... Nur Ihre VOICE ;-)