So installieren und konfigurieren Sie ZFS unter Ubuntu

0
488
Daniel Krason/Shutterstock

Das ZFS-Dateisystem bietet enorme Kapazitäten, RAID-Spiegelung und Anti-Korruptionsmechanismen direkt nach dem Auspacken. Erfahren Sie, wie Sie Ubuntu mit ZFS installieren und einen gespiegelten Pool erstellen.

Was ist ZFS?

ZFS ist ein erweitertes Dateisystem, das wurde von Sun Microsystems zur Verwendung mit ihrem Betriebssystem Solaris entwickelt. Nach der Übernahme von Sun durch Oracle im Jahr 2009 befindet sich ZFS nun im Besitz der Oracle Corporation.

In einem typischen Akt des Altruismus veröffentlichte Sun jedoch ab 2005 eine Open-Source-Version von ZFS. Unweigerlich wurde dies auf Linux portiert, wo es breiter bekannt wurde. Die Open-Source-Version von ZFS—openZFS—wird vom OpenZFS-Projekt verwaltet und gewartet.

ZFS ist ein fehlertolerantes Dateisystem mit hoher Kapazität. ZFS stand ursprünglich für Zettabyte File System. Die ZFS-Architektur basiert auf 128 Bit anstelle der üblicheren 64 Bit anderer Dateisysteme. Die Möglichkeit, mit größeren numerischen Werten zu arbeiten, ist einer der Faktoren, die ZFS in die Lage versetzt haben, Zettabytes an Speicher zu verarbeiten. Um Ihnen eine Vorstellung davon zu geben, was das bedeutet: Ein Zettabyte ist eine Milliarde Terabyte.

Heutzutage unterstützt ZFS eine Dateispeicherung von bis zu 256 Zebibyte. Ein Zebibyte (270 Byte) ist größer als ein Zettabyte (1021 Byte), aber nicht um eine Größenordnung. ZFS hat viel mehr zu bieten als bloße Kapazität – so umwerfend das auch ist. ZFS fungiert als eigener Volume-Manager und RAID-Controller. Es verfügt über integrierte Funktionen wie echtes Kopieren beim Schreiben, die Ihre Daten vor Beschädigung schützen. Es kombiniert nativ Funktionen zum Pooling, Klonen und Kopieren von Dateisystemen und seine RAID-ähnliche Funktionalität.

Werbung

Ubuntu bietet seit einigen Jahren ZFS an, jedoch immer mit Warnungen und Vorbehalten. In Ubuntu 20.10 wurden die Warnungen entfernt. Canonical unterstützt offiziell ZFS, aber nur in Full-Disk-Setups. Um diese Unterstützung zu erhalten, müssen Sie ZFS während der Installation von Ubuntu installieren. Die ZFS-Optionen sind immer noch versteckt, aber sie sind da und nicht mehr nur für die Unerschrockenen oder Tollkühnen.

Mit Ubuntu 21.10, das im Oktober 2021 erscheint, ist es eine gute Zeit, um zu sehen, wie es geht das ZFS-Angebot in Ubuntu reift.

VERWANDT: So installieren und verwenden Sie ZFS unter Ubuntu (und warum Sie das möchten)

Auffinden der ZFS-Optionen während der Installation

Während des Ubuntu installieren Sie den “Installationstyp” Bildschirm können Sie wählen, ob Sie die Festplatte löschen möchten, auf der Sie Ubuntu installieren, oder etwas anderes tun. Klicken Sie auf die Schaltfläche “Erweiterte Funktionen” Schaltfläche.

Die “Erweiterte Funktionen” Dialog erscheint.

Wählen Sie “Disk löschen und ZFS verwenden” Optionsfeld, und klicken Sie auf die Schaltfläche “OK” Schaltfläche.

Der “Installationstyp” Bildschirm zeigt die Anzeige “ZFS Selected” um zu zeigen, dass Sie sich für ZFS entschieden haben.

< p>Klicken Sie auf “Weiter” klicken und die Installation wie gewohnt abschließen.

Werbung

Wenn Sie mehrere Festplatten in Ihrem Computer installiert haben, können Sie auswählen, wie diese von ZFS verwendet werden sollen. Ubuntu bietet eine vorgeschlagene Konfiguration, aber Sie können die Dinge nach Ihren Wünschen anpassen.

Aber was ist, wenn Sie nach der Installation von Ubuntu einige Festplatten hinzufügen? Wie konfigurieren Sie ZFS für die Verwendung des neuen Speichers? Das sehen wir uns als nächstes an.

Hinzufügen zusätzlicher Festplatten

Wir haben Ubuntu mit ZFS auf der einzelnen Festplatte des Testcomputers installiert, mit dem wir diesen Artikel recherchiert haben. Wir haben zwei weitere Festplatten hinzugefügt, sodass der Computer insgesamt drei Festplatten hat. Auf einer Festplatte war Ubuntu installiert, und die beiden neuen Laufwerke waren leer, unformatiert und nicht gemountet.

Das erste, was wir tun müssen, ist herauszufinden, wie sich Ubuntu auf die neuen Festplatten bezieht. Der Befehl lsblk listet alle auf Ihrem Computer installierten Blockgeräte auf. Wir können genau festlegen, welche Ausgabespalten wir in den Ergebnissen sehen möchten.

lsblk -o name,size,fstype,type,mountpoint

Auf die Option -o (Ausgabe) folgen die Spalten, die wir sehen möchten. Wir wählten:

  • Name: Der Name, den Ubuntu verwendet, um auf die Festplatte zu verweisen.
  • Größe: Die Größe der Festplatte. Wenn die Festplatte mehr als eine Partition hat, werden sie alle aufgelistet und die Größe jeder Partition wird angezeigt.
  • fstype: Das Dateisystem der Festplatte oder Partition .
  • type: Ob sich die Zeile auf eine Festplatte, eine Partition, ein CD-ROM-Laufwerk oder ein Loopback-Pseudogerät bezieht.
  • Mountpoint< /strong>: Der Einhängepunkt des Dateisystems auf der Festplatte oder Partition.

Es gibt eine Reihe von Squashfs-Loopback-Geräten, die von loop0 bis loop6 nummeriert sind. Jedes Mal, wenn Sie eine Snap-Anwendung installieren, wird eines dieser Pseudo-Geräte erstellt. Es ist Teil der Kapselung und des Sandboxing, das jede Snap-Anwendung von Snap umschließt.

Werbung

Die erste Festplatte wird als /dev/sda aufgeführt. Es ist ein 32-GB-Laufwerk mit fünf Partitionen darauf, aufgelistet als /dev/sda1 bis /dev/sda5. Sie sind auf unterschiedliche Weise formatiert. Dies ist das Laufwerk, das sich im Computer befand, als wir Ubuntu installierten.

Unsere beiden neuen Festplatten sind als /dev/sdb und /dev/sdc aufgeführt. Es sind auch 32-GB-Laufwerke, aber sie sind nicht formatiert und nicht gemountet.

Pools, RAID 0, RAID 1

Um die neuen Hard-Rives nutzen zu können, fügen wir sie einem Pool hinzu. Sie können einem Pool beliebig viele Laufwerke hinzufügen. Dazu gibt es zwei Möglichkeiten. Sie können den Pool so konfigurieren, dass Sie den gesamten Speicherplatz jeder Festplatte in einer RAID 0-Konfiguration nutzen können, oder Sie können sie so konfigurieren, dass der Pool nur den Speicherplatz der kleinsten Festplatte im Pool bietet. in einer RAID 1-Konfiguration.

Der Vorteil von RAID 0 ist der Platz. Die bevorzugte und sehr empfehlenswerte Konfiguration ist jedoch RAID 1. RAID 1 spiegelt die Daten auf allen Laufwerken im Pool. Das bedeutet, dass Sie einen Festplattenausfall haben können und das Dateisystem und Ihre Daten immer noch sicher sind und Ihr Computer noch funktionsfähig ist. Sie können das beschädigte Laufwerk ersetzen und das neue Laufwerk zu Ihrem Pool hinzufügen.

Im Gegensatz dazu macht bei RAID 0 ein einzelner Festplattenausfall Ihr System funktionsunfähig, bis Sie das beschädigte Laufwerk ersetzen und eine Wiederherstellung aus Ihren Backups durchführen.

Je mehr Laufwerke Sie in einem RAID 1-Pool haben, desto robuster ist es ist. Für RAID 1 benötigen Sie mindestens zwei Laufwerke. Ein Ausfall in einem der Laufwerke wäre eine Unannehmlichkeit, aber keine Katastrophe. Aber ein Ausfall beider Festplatten gleichzeitig wäre natürlich ein größeres Problem. Die Antwort scheint also darin zu bestehen, so viele Festplatten wie möglich zu bündeln.

Werbung

In der Praxis gibt es jedoch natürlich eine Grenze für die Anzahl der Laufwerke, die Sie einem einzelnen Pool zuordnen möchten oder können. Wenn Sie über acht Ersatzfestplatten verfügen, ist die Einrichtung von zwei RAID 1-Pools mit vier Laufwerken wahrscheinlich eine bessere Ausnutzung der Hardware als ein einzelner Pool mit acht Laufwerken. Und denken Sie daran, dass ein RAID 1-Pool nur den Speicherplatz der kleinsten Festplatte im Pool bieten kann. Versuchen Sie also immer, Laufwerke der gleichen Größe in einem einzigen Pool zu verwenden.

Erstellen eines RAID 1-Pools

Wir haben unsere neuen Festplatten als /dev/sdb und /dev/sdc identifiziert. Um einen ZFS-RAID-1-Pool zu erstellen, verwenden wir diesen Befehl:

sudo zpool create cloudavvyit mirror /dev/sdb /dev/sdc

Die Komponenten des Befehls sind:

  • sudo: Wir ändern die Systemkonfiguration, sodass wir sudo verwenden müssen, um Root-Rechte zu erhalten.
  • zpool: Dies ist der ZFS-Pool Verwaltungsbefehl.
  • Erstellen: Dies ist die Aktion, die wir von Zpool für uns ausführen sollen.
  • Cloudsavvyit: Dies ist der Name für den Pool, den wir erstellen möchten.
  • Mirror: Wir möchten unsere Daten auf alle Laufwerke spiegeln, was uns ein RAID 1 gibt Schwimmbad. Das Weglassen des “Spiegel” Option erstellt einen RAID 0-Pool.
  • /dev/sdb: Die erste unserer neuen Festplatten.
  • /dev/sdc: Die zweite unserer neuen Festplatten.

Ersetzen Sie “cloudsavvyit” mit dem Namen, den Sie Ihren Pool nennen möchten, und ersetzen Sie /dev/sdb und /dev/sdc durch die Kennungen Ihrer neuen Festplatten.

Das Erstellen eines Pools ist ein wenig antiklimaktisch. Wenn alles gut geht, kehren Sie kurzerhand zur Eingabeaufforderung zurück. Wir können die Statusaktion mit dem Befehl zpool verwenden, um den Status unseres neuen Pools anzuzeigen.

sudo zpool status Cloudsavvyit

Unser neuer Pool wurde erstellt, er ist online, unsere beiden neuen Laufwerke sind im Pool und es liegen keine Fehler vor. Das sieht alles super aus. Aber wo ist das Becken? Mal sehen, ob lsblk uns zeigt, wo es gemountet wurde.

lsblk -o name,size,fstype,type,mountpoint

Wir sehen, dass unsere neuen Festplatten /dev/sdb und /dev/sdc mit jeweils zwei Partitionen partitioniert wurden, aber für sie ist kein Einhängepunkt aufgeführt. Pools werden nicht wie normale Festplatten gemountet. Beispielsweise gibt es keinen Eintrag in der Datei /etc/fstab für ZFS-Pools. Standardmäßig wird ein Einhängepunkt im Stammverzeichnis erstellt. Er hat denselben Namen wie der Pool.

ls/

Werbung

Wenn Sie den Mount-Punkt an einer anderen Stelle erstellen lassen möchten, verwenden Sie beim Erstellen des Pools die Option -m (Mount-Punkt) und geben Sie den Pfad an, an dem der Mount-Punkt erstellt werden soll. Sie können dem Mountpunkt auch einen anderen Namen geben.

sudo zpool create -m /path/to/mount-point-name cloudavvyit mirror /dev/sdb /dev/sdc

Benutzern Zugriff auf den Pool gewähren

Der Pool existiert, aber nur der Root-Benutzer kann Daten darin speichern. Das brauchen wir natürlich nicht. Wir möchten, dass andere Benutzer auf den Pool zugreifen können.

Um dies zu erreichen, werden wir:

  • Ein Verzeichnis im Pool erstellen.
  • Erstellen eine neue Gruppe.
  • Legen Sie die neue Gruppe als Gruppenbesitzer des Verzeichnisses fest.
  • Fügen Sie der neuen Gruppe Benutzer hinzu, die auf den Datenspeicher zugreifen müssen.

Dieses Schema bietet große Flexibilität . Wir können so viele Datenspeicherverzeichnisse erstellen, wie wir benötigen, wobei verschiedene Gruppen diese besitzen. Den Benutzern Zugriff auf die verschiedenen Speicherbereiche zu gewähren, ist so einfach wie das Hinzufügen zu den entsprechenden Gruppen.

Wir verwenden groupadd, um eine Benutzergruppe zu erstellen. Unsere Gruppe heißt “csavvy1”. Anschließend verwenden wir den Befehl usermod, um einen Benutzer namens “dave” zur neuen Gruppe. Die Option -a (append) fügt die neue Gruppe der Liste der bestehenden Gruppen hinzu, in denen sich der Benutzer befindet. Ohne diese Option wird der Benutzer aus allen bestehenden Gruppen entfernt und der neuen hinzugefügt. Das wird Probleme verursachen, also stellen Sie sicher, dass Sie die Option -a verwenden.

sudo groupadd csavvy1 sudo usermod -a -G csavvy1 dave

Damit die neue Gruppenmitgliedschaft wirksam wird, muss sich der Benutzer ab- und wieder anmelden.

Jetzt erstellen wir im Pool ein Verzeichnis mit dem Namen “data1”

sudo mkdir /cloudsavvyit/data1 Werbung

Mit dem Befehl chgrp können wir den Gruppenbesitzer des Verzeichnisses festlegen.

sudo chgrp csavvy1 /cloudsavvyit/data1

Schließlich legen wir die Gruppenberechtigungen mit chmod fest. Die “s” ist das SGID-Sonderbit. Dies bedeutet, dass Dateien und Verzeichnisse, die innerhalb der “data1” Verzeichnis erbt den Gruppenbesitzer dieses Verzeichnisses.

sudo chmod g+rwsx /cloudsavvyit/data1/

Unser Benutzer hat sich abgemeldet und wieder angemeldet. Versuchen wir, eine Datei im neuen Datenspeicherverzeichnis in unserem neuen RAID 1 ZFS-Pool zu erstellen.

Berühren Sie /cloudsavvyit/data1/new-file.txt

Und mal sehen, wie es erstellt wurde.

ls /cloudsavvyit/data1 -lh

Erfolg. Was passiert, wenn wir versuchen, eine andere Datei außerhalb unseres data1-Speicherbereichs zu erstellen?

Berühren Sie /cloudsavvyit/new-file2.txt

Dies schlägt wie erwartet fehl. Unsere Berechtigungen funktionieren. Unser Benutzer kann nur Dateien in dem Datenspeicherverzeichnis manipulieren, auf das er zugreifen darf.

VERWANDTE: So verwenden Sie SUID, SGID und Sticky Bits unter Linux

Zerstöre einen Pool

Seien Sie vorsichtig mit diesem Befehl. Stellen Sie sicher, dass Sie über Backups verfügen, bevor Sie fortfahren. Wenn Sie sicher sind, dass Sie es wirklich wollen und überprüft haben, dass Sie weitere Kopien der Daten im Pool haben, können Sie einen Pool mit diesem Befehl zerstören:

sudo zpool zerstören Cloudsavvyit Werbung

Ersetzen Sie “cloudsavvyit” mit dem Namen des Pools, den Sie zerstören werden.

Sie haben nur eine Festplatte?

Wenn Sie nur eine haben Festplatte oder wenn Ihr Computer über mehrere Festplatten verfügt, deren Größe jedoch zu stark variiert, um einen nützlichen Pool zu bilden, können Sie trotzdem ZFS verwenden. Sie erhalten zwar keine RAID-Spiegelung, aber die integrierten Anti-Korruptions- und Datenschutzmechanismen sind dennoch lohnende und überzeugende Funktionen.

Aber denken Sie daran, kein Dateisystem—mit oder ohne RAID-Spiegelung& #8212;bedeutet, dass Sie Backups ignorieren können.

VERWANDTE: Backups vs. Redundanz: Was ist der Unterschied?