Eine Einführung in die Storage-Terminologie und -Konzepte unter Linux

Einführung

Linux verfügt über robuste Systeme und Tools zum Verwalten von Hardwaregeräten, einschließlich Speicherlaufwerken. In diesem Artikel werden wir uns auf einer hohen Ebene damit befassen, wie Linux diese Geräte darstellt und wie Raw Storage zu nutzbarem Speicherplatz auf dem Server gemacht wird.

Was ist Blockspeicher?

Block Storage ist ein anderer Name für das, was der Linux-Kernel als Block Device bezeichnet. Ablock device ist eine Hardware, die zum Speichern von Daten verwendet werden kann, z. B. ein herkömmliches rotierendes Festplattenlaufwerk (HDD), ein Solid-State-Laufwerk (SSD), ein Flash-Speicherstick usw. Es wird als Blockgerät bezeichnet, da der Kernel mit der Hardware über Verweise auf Blöcke fester Größe oder Speicherbereiche verbunden ist.

Im Grunde ist Blockspeicher das, was Sie als regulären Festplattenspeicher auf einem Computer ansehen. Sobald es eingerichtet ist, fungiert es im Wesentlichen als Erweiterung des aktuellen Dateisystembaums, und Sie können nahtlos Informationen auf das Laufwerk schreiben oder von diesem lesen.

Was sind Festplattenpartitionen?

Festplattenpartitionen sind eine Möglichkeit, ein Speicherlaufwerk in kleinere verwendbare Einheiten aufzuteilen. Eine Partition ist ein Abschnitt eines Speicherlaufwerks, der ähnlich wie ein Laufwerk behandelt werden kann.

Durch Partitionierung können Sie den verfügbaren Speicherplatz segmentieren und jede Partition für einen anderen Zweck verwenden. Dies gibt dem Benutzer eine große Flexibilität, die es ihm ermöglicht, die Installation für ein einfaches Upgrade, mehrere Betriebssysteme, Auslagerungsspeicher oder spezielle Dateisysteme zu segmentieren.

Während Festplatten formatiert und ohne Partitionierung verwendet werden können, erwarten einige Betriebssysteme, dass sie eine Partitionstabelle finden, selbst wenn nur eine einzige Partition auf die Festplatte geschrieben ist. Es wird allgemein empfohlen, neue Laufwerke zu partitionieren, um die Flexibilität in Zukunft zu erhöhen.

MBR gegen GPT

Beim Partitionieren einer Festplatte ist es wichtig zu wissen, welche Partitionierungformat verwendet wird. Dies hängt im Allgemeinen von der Wahl zwischen MBR (Master Boot Record) und GPT (GUID Partition Table) ab.

MBR ist das traditionelle Partitionierungssystem, das seit über 30 Jahren verwendet wird. Aufgrund seines Alters weist es einige schwerwiegende Einschränkungen auf. Beispielsweise kann es nicht für Festplatten mit einer Größe von mehr als 2 TB verwendet werden und darf nur maximal vier primäre Partitionen enthalten. Aus diesem Grund wird die vierte Partition normalerweise als "erweiterte Partition" eingerichtet, in der "logische Partitionen" erstellt werden können. Auf diese Weise können Sie die letzte Partition unterteilen, um zusätzliche Partitionen effektiv zuzulassen.

GPT ist ein moderneres Partitionierungsschema, das versucht, einige der mit MBR verbundenen Probleme zu lösen. Auf Systemen, auf denen GPT ausgeführt wird, können viel mehr Partitionen pro Festplatte vorhanden sein. Dies ist in der Regel nur durch die vom Betriebssystem selbst auferlegten Einschränkungen begrenzt. Darüber hinaus gibt es bei GPT keine Beschränkung der Festplattengröße und die Informationen zur Partitionstabelle sind an mehreren Speicherorten verfügbar, um Beschädigungen vorzubeugen. GPT kann auch einen "Schutz-MBR" schreiben, der MBR-spezifischen Tools mitteilt, dass die Festplatte verwendet wird.

In den meisten Fällen ist GPT die bessere Wahl, es sei denn, Ihr Betriebssystem oder Ihre Tools verhindern, dass Sie es verwenden.

Formatierung und Dateisysteme

Während der Linux-Kernel eine Raw-Festplatte erkennen kann, kann das Laufwerk nicht unverändert verwendet werden. Um es zu benutzen, muss es formatiert sein. Formatting ist der Vorgang, bei dem ein Dateisystem auf die Festplatte geschrieben und für Dateivorgänge vorbereitet wird. Afilesystem ist das System, das Daten strukturiert und steuert, wie Informationen auf die zugrunde liegende Festplatte geschrieben und von dieser abgerufen werden. Ohne ein Dateisystem könnten Sie das Speichergerät nicht für dateibezogene Vorgänge verwenden.

Es gibt viele verschiedene Dateisystemformate, von denen jedes Kompromisse in verschiedenen Dimensionen aufweist, einschließlich der Unterstützung des Betriebssystems. Grundsätzlich präsentieren sie dem Benutzer alle eine ähnliche Darstellung des Datenträgers, aber die jeweils unterstützten Funktionen und die Mechanismen, die zum Aktivieren von Benutzer- und Wartungsvorgängen verwendet werden, können sehr unterschiedlich sein.

Einige der beliebtesten Dateisysteme für Linux sind:

  • Ext4: Das beliebteste Standarddateisystem ist Ext4 oder die vierte Version des erweiterten Dateisystems. Das Ext4-Dateisystem ist journalisiert, abwärtskompatibel mit älteren Systemen, unglaublich stabil und verfügt über ausgereifte Unterstützung und Tools. Es ist eine gute Wahl, wenn Sie keine speziellen Bedürfnisse haben.

  • XFS: XFS ist auf Leistung und große Datendateien spezialisiert. Es formatiert schnell und hat gute Durchsatzmerkmale beim Umgang mit großen Dateien und beim Arbeiten mit großen Datenträgern. Es hat auch Live-Schnappschuss-Funktionen. XFS verwendet das Journaling von Metadaten und nicht das Journaling von Metadaten und Daten. Dies führt zu einer schnellen Leistung, kann jedoch bei einem plötzlichen Stromausfall möglicherweise zu einer Beschädigung der Daten führen.

  • Btrfs: Btrfs ist ein modernes, funktionsreiches Copy-on-Write-Dateisystem. Diese Architektur ermöglicht die Integration einiger Funktionen zur Datenträgerverwaltung in die Dateisystemebene, einschließlich Snapshots, Klonen, Datenträgern usw. Bei Btrfs treten beim Umgang mit Volldatenträgern weiterhin einige Probleme auf. Es gibt einige Debatten über die Bereitschaft für Produktions-Workloads und viele Systemadministratoren warten darauf, dass das Dateisystem eine größere Reife erreicht.

  • ZFS: ZFS ist ein Copy-on-Write-Dateisystem und ein Volume-Manager mit einem robusten und ausgereiften Funktionsumfang. Es verfügt über hervorragende Datenintegritätsfunktionen, kann große Dateisysteme verarbeiten, verfügt über typische Datenträgerfunktionen wie Snapshots und Klonen und kann Datenträger aus Redundanz- und Leistungsgründen in RAID- und RAID-ähnlichen Arrays organisieren. In Bezug auf die Verwendung unter Linux hat ZFS aufgrund von Lizenzproblemen eine kontroverse Geschichte. Ubuntu liefert jetzt jedoch ein binäres Kernel-Modul dafür aus, und Debian nimmt den Quellcode in seine Repositories auf. Die Unterstützung für andere Distributionen muss noch ermittelt werden.

So verwaltet Linux Speichergeräte

Gerätedateien in / dev

In Linux wird fast alles durch eine Datei dargestellt. Dies schließt Hardware wie Speicherlaufwerke ein, die auf dem System als Dateien im Verzeichnis/devdargestellt werden. In der Regel beginnen Dateien, die Speichergeräte darstellen, mitsd oderhd, gefolgt von einem Buchstaben. Zum Beispiel ist das erste Laufwerk auf einem Server normalerweise so etwas wie/dev/sda.

Partitionen auf diesen Laufwerken haben auch Dateien innerhalb von/dev, dargestellt durch Anhängen der Partitionsnummer an das Ende des Laufwerksnamens. Beispielsweise wäre die erste Partition auf dem Laufwerk aus dem vorherigen Beispiel/dev/sda1.

Während die Gerätedateien/dev/sd* und/dev/hd* die herkömmliche Art darstellen, auf Laufwerke und Partitionen zu verweisen, besteht ein erheblicher Nachteil darin, diese Werte selbst zu verwenden. Der Linux-Kernel entscheidet, welches Gerät bei jedem Start welchen Namen erhält. Dies kann zu verwirrenden Szenarien führen, in denen Ihre Geräte die Geräteknoten wechseln.

Um dieses Problem zu umgehen, enthält das Verzeichnis/dev/diskUnterverzeichnisse, die verschiedenen, beständigeren Methoden zum Identifizieren von Festplatten und Partitionen auf dem System entsprechen. Diese enthalten symbolische Links, die beim Booten zu den richtigen/dev/[sh]da*-Dateien erstellt werden. Die Links werden nach dem identifizierenden Merkmal des Verzeichnisses benannt (z. B. nach Partitionsbezeichnung im Verzeichnis/dev/disk/by-partlabel). Diese Links verweisen immer auf die richtigen Geräte, sodass sie als statische Kennungen für Speicherbereiche verwendet werden können.

Einige oder alle der folgenden Unterverzeichnisse sind möglicherweise unter/dev/disk vorhanden:

  • by-label: Die meisten Dateisysteme verfügen über einen Beschriftungsmechanismus, mit dem beliebige benutzerdefinierte Namen für eine Festplatte oder Partition zugewiesen werden können. Dieses Verzeichnis besteht aus Links, die nach diesen benutzerdefinierten Bezeichnungen benannt sind.

  • by-uuid: UUIDs oder universell eindeutige Bezeichner sind lange, eindeutige Zeichenfolgen und Zahlen, die als ID für eine Speicherressource verwendet werden können. Diese sind in der Regel nicht sehr gut lesbar, werden aber selbst systemübergreifend garantiert als einzigartig eingestuft. Daher ist es möglicherweise eine gute Idee, UUIDs zu verwenden, um auf Speicher zu verweisen, der möglicherweise zwischen Systemen migriert wird, da Namenskollisionen weniger wahrscheinlich sind.

  • by-partlabel undby-partuuid: GPT-Tabellen bieten einen eigenen Satz von Beschriftungen und UUIDs, die auch zur Identifizierung verwendet werden können. Dies funktioniert ähnlich wie die beiden vorherigen Verzeichnisse, verwendet jedoch GPT-spezifische Bezeichner.

  • by-id: Dieses Verzeichnis enthält Links, die durch die eigenen Seriennummern der Hardware und die Hardware, an die sie angeschlossen sind, generiert wurden. Dies ist nicht ganz dauerhaft, da die Art und Weise, wie das Gerät mit dem System verbunden ist, den Namen vonby-idändern kann.

  • by-path: Wieby-id hängt dieses Verzeichnis von der Verbindung der Speichergeräte mit dem System selbst ab. Die Links hier basieren auf der Systeminterpretation der Hardware, die für den Zugriff auf das Gerät verwendet wird. Dies hat die gleichen Nachteile wieby-id, da das Anschließen eines Geräts an einen anderen Port diesen Wert ändern kann.

Normalerweise sindby-label oderby-uuid die besten Optionen für die dauerhafte Identifizierung bestimmter Geräte.

Note

[.note] # DigitalOcean-Blockspeichervolumes steuern die dem Betriebssystem gemeldeten Seriennummern des Geräts. Dadurch kann die Kategorisierung vonby-idauf dieser Plattform zuverlässig dauerhaft sein. Dies ist die bevorzugte Methode, um auf DigitalOcean-Volumes zu verweisen, da diese sowohl beständig als auch beim ersten Start vorhersehbar sind.
#

Montageblock-Geräte

Die Gerätedatei innerhalb von/dev wird verwendet, um mit dem Kerneltreiber für das betreffende Gerät zu kommunizieren. Es ist jedoch eine hilfreichere Abstraktion erforderlich, um das Gerät als Segment des verfügbaren Speicherplatzes zu behandeln.

Unter Linux und anderen Unix-ähnlichen Betriebssystemen wird das gesamte System unabhängig von der Anzahl der beteiligten physischen Geräte durch einen einzigen einheitlichen Dateibaum dargestellt. Wenn ein Dateisystem auf einem Laufwerk oder einer Partition verwendet werden soll, muss es in den vorhandenen Baum eingebunden werden. Mounting ist der Vorgang des Anhängens einer formatierten Partition oder eines formatierten Laufwerks an ein Verzeichnis im Linux-Dateisystem. Auf den Inhalt des Laufwerks kann dann von diesem Verzeichnis aus zugegriffen werden.

Die Laufwerke werden fast immer in dedizierten leeren Verzeichnissen bereitgestellt (die Bereitstellung in einem nicht leeren Verzeichnis bedeutet, dass auf den normalen Inhalt des Verzeichnisses nicht zugegriffen werden kann, bis die Bereitstellung des Laufwerks aufgehoben wird). Es gibt viele verschiedene Montageoptionen, die eingestellt werden können, um das Verhalten des montierten Geräts zu ändern. Beispielsweise kann das Laufwerk im schreibgeschützten Modus bereitgestellt werden, um sicherzustellen, dass der Inhalt nicht geändert wird.

Filesystem Hierarchy Standard empfiehlt die Verwendung von/mnt oder eines Unterverzeichnisses darunter für vorübergehend gemountete Dateisysteme. Wenn dies Ihrem Anwendungsfall entspricht, ist dies wahrscheinlich der beste Ort, um es zu montieren. Es werden keine Empfehlungen dazu gegeben, wo mehr permanenter Speicher bereitgestellt werden soll, sodass Sie das gewünschte Schema auswählen können. In vielen Fällen werden die Unterverzeichnisse/mnt oder/mnt auch für eine dauerhaftere Speicherung verwendet.

Mounts dauerhaft machen mit / etc / fstab

Linux-Systeme untersuchen eine Datei mit dem Namen/etc/fstab (Dateisystemtabelle), um festzustellen, welche Dateisysteme während des Startvorgangs bereitgestellt werden sollen. Dateisysteme, die keinen Eintrag in dieser Datei haben, werden nicht automatisch gemountet (mit Ausnahme derjenigen, die durch die Einheitendateien von systemd.mountdefiniert sind, obwohl diese derzeit nicht üblich sind).

Die Datei/etc/fstabist ziemlich einfach. Jede Zeile stellt ein anderes Dateisystem dar, das eingehängt werden soll. Diese Zeile gibt das Block-Gerät, den Mount-Punkt, an den es angehängt werden soll, das Format des Laufwerks und die Mount-Optionen sowie einige andere Informationen an.

Komplexeres Speichermanagement

Während die meisten einfachen Anwendungsfälle keine zusätzlichen Verwaltungsstrukturen erfordern, können komplexere Verwaltungsparadigmen zu mehr Leistung, Redundanz oder Flexibilität führen.

Was ist RAID?

RAID steht fürredundantarray vonindependentdisks. RAID ist eine Speicherverwaltungs- und Virtualisierungstechnologie, mit der Sie Laufwerke gruppieren und als einzelne Einheit mit zusätzlichen Funktionen verwalten können.

Die Eigenschaften eines RAID-Arrays hängen von seiner RAID-Stufe ab, die im Grunde definiert, wie sich die Festplatten im Array zueinander verhalten. Die gewählte Stufe wirkt sich auf die Leistung und Redundanz des Geräts aus. Einige der allgemeineren Niveaus sind:

  • RAID 0: Diese Stufe zeigt das Drive Striping an. Dies bedeutet, dass Daten, die in das Array geschrieben werden, aufgeteilt und auf die Festplatten im Set verteilt werden. Dies bietet eine Leistungssteigerung, da mehrere Festplatten gleichzeitig beschrieben oder gelesen werden können. Der Nachteil ist, dass bei einem Ausfall eines einzelnen Laufwerks alle Daten im gesamten Array verloren gehen können, da auf keiner Festplatte genügend Informationen zum wiederherzustellenden Inhalt vorhanden sind.

  • RAID 1: RAID 1 ist im Grunde eine Laufwerksspiegelung. Alles, was auf ein RAID 1-Array geschrieben wird, wird auf mehrere Festplatten geschrieben. Der Hauptvorteil ist die Datenredundanz, die es den Daten ermöglicht, den Festplattenverlust auf beiden Seiten des Spiegels zu überstehen. Da mehrere Laufwerke die gleichen Daten enthalten, wird die nutzbare Kapazität halbiert.

  • RAID 5: RAID 5 streift Daten über mehrere Laufwerke, ähnlich wie RAID 0. Diese Ebene implementiert jedoch auch eine verteilte Parität über die Laufwerke. Dies bedeutet im Grunde, dass bei einem Laufwerksausfall die verbleibenden Laufwerke das Array mithilfe der zwischen ihnen ausgetauschten Paritätsinformationen neu erstellen können. Die Paritätsinformationen reichen aus, um eine Festplatte neu zu erstellen, sodass das Array den Verlust einer Festplatte überstehen kann. Die Paritätsinformationen reduzieren den verfügbaren Speicherplatz im Array um die Kapazität einer Festplatte.

  • RAID 6: RAID 6 hat dieselben Eigenschaften wie RAID 5, bietet jedoch doppelte Parität. Dies bedeutet, dass RAID 6-Arrays dem Verlust von zwei beliebigen Laufwerken standhalten können. Die Kapazität des Arrays wird wiederum von der Paritätsmenge beeinflusst, was bedeutet, dass die nutzbare Kapazität um zwei Festplatten verringert wird.

  • RAID 10: RAID 10 ist eine Kombination der Stufen 1 und 0. Zunächst werden zwei Sätze gespiegelter Arrays erstellt. Dann werden Daten darüber gestreift. Dadurch wird ein Array erstellt, das einige Redundanzeigenschaften aufweist und gleichzeitig eine gute Leistung bietet. Dies erfordert jedoch einige Laufwerke, und die Gesamtkapazität beträgt die Hälfte des kombinierten Speicherplatzes.

Was ist LVM?

LVM oderLogicalVolumeManagement ist ein System, das die physikalischen Eigenschaften der zugrunde liegenden Speichergeräte abstrahiert, um mehr Flexibilität und Leistung bereitzustellen. Mit LVM können Sie Gruppen physischer Geräte erstellen und verwalten, als wäre es ein einzelner Speicherblock. Anschließend können Sie den Speicherplatz nach Bedarf in logische Volumes unterteilen, die als Partitionen fungieren.

LVM wird auf regulären Partitionen implementiert und umgeht viele der Einschränkungen, die mit klassischen Partitionen verbunden sind. Mithilfe von LVM-Volumes können Sie beispielsweise Partitionen problemlos erweitern, Partitionen erstellen, die sich über mehrere Laufwerke erstrecken, Live-Snapshots von Partitionen erstellen und Volumes auf verschiedene physische Datenträger verschieben. LVM kann in Verbindung mit RAID verwendet werden, um eine flexible Verwaltung mit herkömmlichen RAID-Leistungsmerkmalen bereitzustellen.

Wohin als nächstes?

Wenn Sie ein neues Speichergerät haben, das Sie in Ihrem Linux-System verwenden möchten, führtthis article Sie durch den grundlegenden Prozess der Partitionierung, Formatierung und Bereitstellung Ihres neuen Dateisystems. Dies sollte für die meisten Anwendungsfälle ausreichen, in denen Sie hauptsächlich zusätzliche Kapazität hinzufügen möchten. Inthis article erfahren Sie, wie Sie grundlegende Speicherverwaltungsaufgaben ausführen.