Kapitel 4. Wartung des Dateisystems
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Festplatten und Dateisysteme verwenden
|
Zeigt den verfügbaren Speicherplatz auf gemounteten Dateisystemen an. |
|
Listen Sie Festplatten und andere Blockgeräte auf. |
|
Mach eine Festplattenpartition zugänglich. |
|
Hänge eine Festplattenpartition aus (mache sie unzugänglich). |
|
Überprüfe eine Festplattenpartition auf Fehler. |
Linux Systeme können mehrere Festplatten oder Partitionen haben. Im allgemeinen Sprachgebrauch werden diese als Geräte, Dateisysteme, Volumes oder sogar Verzeichnisse bezeichnet. Ich werde versuchen, genauer zu sein.
Eine Festplatte ist ein Massenspeicher, der inPartitionen unterteilt sein kann, die als unabhängige Geräte fungieren. Festplatten und Partitionen werden auf Linux-Systemen als spezielle Dateien im Verzeichnis/dev dargestellt. Zum Beispiel könnte /dev/sda7 eine Partition auf deiner Festplatte sein. Einige gängige Geräte in /dev sind:
sda |
Erstes Blockgerät, wie SCSI-, SATA- oder USB-Festplatten; Partitionen sind sda1, sda2, .... |
sdb |
Zweites Blockgerät; Partitionen sind sdb1, sdb2, .... Das Gleiche gilt für sdc, sdd, etc. |
md0 |
Erstes RAID-Gerät; Partitionen sind md0p1, md0p2, .... Das Gleiche gilt für md1, md2, etc. |
nvme0n1 |
Erstes NVMe-SSD-Gerät; Partitionen sind nvme0n1p1, nvme0n1p2, .... Das Gleiche gilt für nvme1n1, nvme2n1, usw. Die zweite Ganzzahl, wie die 1 in nvme0n1p2, wird als Namensraum-ID bezeichnet und kann von den meisten Benutzern ignoriert werden. |
Bevor eine Partition Dateien aufnehmen kann, wird sie mit einem Programm formatiert, das ein Dateisystem auf ihr erstellt (siehe "Erstellen und Ändern von Dateisystemen"). Ein Dateisystem definiert, wie Dateien dargestellt werden; Beispiele sind ext4 (ein Linux-Journaling-Dateisystem) und NTFS (ein Microsoft Windows-Dateisystem). Die Formatierung wird in der Regel bei der Installation von Linux vorgenommen.
Nachdem du ein Dateisystem erstellt hast, kannst du es unter verfügbar machen, indem du seine Partition in ein leeres Verzeichnis einhängst.1 Wenn du zum Beispiel ein Windows-Dateisystem in ein Verzeichnis /mnt/win einhängst, wird es Teil des Verzeichnisbaums deines Systems und du kannst Dateien wie/mnt/win/myfile.txt erstellen und bearbeiten. Das Einhängen geschieht in der Regel automatisch beim Booten. Du kannst Partitionen auch aushängen, um sie für Wartungsarbeiten über das Dateisystem unzugänglich zu machen.
df |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
df[options][disk devices | files | directories] |
Der Befehl df
(disk free) zeigt dir die Größe, den belegten und den freien Speicherplatz auf einer bestimmten Festplattenpartition an. Wenn du eine Datei oder ein Verzeichnis angibst, beschreibtdf
das Festplattengerät, auf dem sich diese Datei oder dieses Verzeichnis befindet. Wenn du keine Argumente angibst, gibt df
Auskunft über alle gemounteten Dateisysteme:
→ df Filesystem 1k-blocks Used Avail Use% Mounted on /dev/sda 1011928 225464 735060 24% / /dev/sda9 521748 249148 246096 51% /var /dev/sda8 8064272 4088636 3565984 54% /usr /dev/sda10 8064272 4586576 3068044 60% /home
Der Befehl df
kann alle möglichen Geräte außer Festplatten auflisten. Um die Anzeige auf Festplatten zu beschränken, probiere diese Optionen aus (und erstelle einen Alias, wenn hilfreich ist):
→ df -h -x tmpfs -x devtmpfs -x squashfs
Nützliche Optionen
|
Listengröße in KB (Standardeinstellung). |
|
Listengrößen in MB. |
|
Anzeigegrößen in Blöcken von N Bytes. (Standard = 1024) |
|
Drucke eine für Menschen lesbare Ausgabe und wähle die am besten geeignete Einheit für jede Größe. Wenn deine beiden Festplatten zum Beispiel 1 Gigabyte bzw. 25 KB frei haben, gibt |
|
Zeigt nur lokale Dateisysteme an, keine vernetzten Dateisysteme. |
|
Füge den Dateisystemtyp ( |
|
Zeigt nur Dateisysteme des angegebenen Typs an. |
|
Zeigt keine Dateisysteme des angegebenen Typs an. |
|
Inode-Modus. Anzeige der gesamten, verwendeten und freien Inodes für jedes Dateisystem anstelle von Festplattenblöcken. Wenn alle Inodes eines Dateisystems verwendet werden, ist das Dateisystem "voll", auch wenn noch freier Speicherplatz vorhanden ist. |
lsblk |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
lsblk[Optionen][Geräte] |
Der Befehl lsblk
listet die Massenspeicher auf, die als Blockgeräte bezeichnet werden und auf einem Linux-System verfügbar sind, z. B. Festplatten, SSDs und RAM-Disks.
→ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 513M 0 part /boot/efi ├─sda3 8:3 0 19.5G 0 part / sdb 8:80 0 7.6G 0 disk └─sdb1 8:81 1 7.6G 0 part /mnt/usb-key
Die Ausgabe zeigt eine Festplatte unter /dev/sda mit drei Partitionen und einen USB-Stick unter /dev/sdb mit einer einzigen Partition. lsblk
hat eine Vielzahl von Formatierungsoptionen und kann sich auf bestimmte Geräte beschränken.
→ lsblk -o NAME,SIZE /dev/sda NAME SIZE sda 20G ├─sda1 1M ├─sda2 513M └─sda3 19.5G
Nützliche Optionen
|
Zeige eine einfache Liste statt eines Baums an. |
|
Zeigt alle Blockgeräte an, auch die, die normalerweise ausgeblendet sind. |
|
Füge Informationen über die Dateisysteme auf jedem Gerät hinzu. |
|
Drucke nur die angegebenen Spalten, die du als kommagetrennte Liste angibst. Zeige die verfügbaren Spalten mit |
|
Drucke die Liste im JSON-Format aus, damit sie von Programmen leicht verarbeitet werden kann. |
montieren |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
mount[Optionen][Gerät | Verzeichnis] |
Der Befehl mount
macht eine Partition zugänglich. Am häufigsten werden damit Festplatten (z. B. /dev/sda1) und Wechselmedien (z. B. USB-Sticks) über ein bestehendes Verzeichnis (z. B./mnt/mydir) zugänglich gemacht:
→ sudo mkdir /mnt/mydir → ls /mnt/mydir→ sudo mount /dev/sda1 /mnt/mydir → ls /mnt/mydir file1 file2 file3
Notice it’s empty
→ df /mnt/mydir Filesystem 1K-blocks Used Avail Use% Mounted on /dev/sda1 1011928 285744 674780 30% /mnt/mydir
Files on the mounted partition
mount
hat viele Verwendungszwecke; ich beschreibe nur die grundlegendsten. In den meisten Fällen liest mount
die Datei /etc/fstab (Dateisystemtabelle, ausgesprochen "F S tab"), um herauszufinden, wie die gewünschte Festplatte eingehängt werden kann. Wenn du zum Beispiel mount /usr
aufrufst, sucht der Befehlmount
in der Datei /etc/fstab nach "/usr", deren Zeile so aussehen könnte:
/dev/sda8 /usr ext4 defaults 1 2
Hier erfährt mount
, dass das Gerät /dev/sda8 unter/usr als Linux ext4-formatiertes Dateisystem mit Standardoptionen eingehängt werden soll. Hänge es mit einem der beiden Befehle ein:
→ sudo mount /dev/sda8→ sudo mount /usr
By device
By directory
mount
wird normalerweise vom Superuser ausgeführt, aber gängige Wechseldatenträger wie USB-Sticks und DVDs können oft von jedem Benutzer ein- und ausgehängt werden.
Nützliche Optionen
|
Gib den Typ des Dateisystems an, z. B. |
|
Alle gemounteten Dateisysteme auflisten; funktioniert auch mit |
|
Hängt alle in /etc/fstab aufgeführten Dateisysteme ein. Ignoriert Einträge, die die Option |
|
Hänge das Dateisystem schreibgeschützt ein (siehe die Manpage für Haftungsausschlüsse). |
umount |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
umount[Optionen][Gerät | Verzeichnis] |
umount
bewirkt das Gegenteil von : Es macht eine Festplattenpartition über das Dateisystem unerreichbar. mount
2 Wenn du z.B. einen USB-Stick gemountet hast, hänge ihn aus, bevor du ihn aussteckst:
→ umount "/media/smith/My Vacation Photos"
Trenne immer die Verbindung zu einem Wechseldatenträger, bevor du ihn auswirfst, vor allem wenn er beschreibbar ist, sonst riskierst du eine Beschädigung des Dateisystems. So hängst du alle eingehängten Geräte aus:
→ sudo umount -a
Hänge kein Dateisystem aus, das gerade in Gebrauch ist; der Befehl umount
verweigert dies aus Sicherheitsgründen sogar.
fsck |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
fsck[Optionen][Geräte] |
Der Befehl fsck
(Dateisystemprüfung) prüft ein Linux-Dateisystem und repariert auf Wunsch gefundene Fehler. fsck
Der Befehl wird automatisch beim Booten deines Systems oder manuell ausgeführt. Im Allgemeinen solltest du ein Gerät aushängen, bevor du es überprüfst, damit keine anderen Programme zur gleichen Zeit darauf laufen:
→ sudo umount /dev/sda10 → sudo fsck -f /dev/sda10 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /home: 172/1281696 files (11.6% non-contiguous), ...
Du kannst fsck
nicht verwenden, um dein Root-Dateisystem zu reparieren, während dein System normal läuft. Boote zuerst von einem Linux USB-Stick oder einem anderen Rettungsmedium und führe dann fsck
aus.
fsck
ist ein Frontend für eine Reihe von Befehlen zur Überprüfung von Dateisystemen, die in /sbin zu finden sind und deren Namen mit "fsck" beginnen. Es werden nur bestimmte Arten von Dateisystemen unterstützt; diese werden mit dem Befehl aufgelistet:
→ ls /sbin/fsck.* | cut -d. -f2 | column cramfs ext3 fat hfsplus msdos ext2 ext4 hfs minix vfat
Nützliche Optionen
|
Überprüfe alle Festplatten, die in der /etc/fstab aufgeführt sind, in dieser Reihenfolge. |
|
Erzwinge die Ausführung von |
|
Gib eine Beschreibung der Prüfung aus, die durchgeführt werden würde, aber beende die Prüfung, ohne sie durchzuführen. |
|
Behebe Fehler interaktiv mit Eingabeaufforderung vor jeder Korrektur. |
|
Fehler automatisch beheben (nur verwenden, wenn du wirklich weißt, was du tust; andernfalls kannst du ein Dateisystem ernsthaft durcheinander bringen). |
Erstellen und Ändern von Dateisystemen
|
Formatiere eine Festplattenpartition (erstelle ein Dateisystem darauf). |
|
Vergrößere oder verkleinere eine Festplattenpartition. |
|
Ändere das Volume-Label auf einer Festplattenpartition. |
Festplattenbezogene Vorgänge wie Partitionierung und Formatierung können auf der Kommandozeile sehr komplex sein. Für alles, was komplizierter ist als das Formatieren einer einzelnen Partition, empfehle ich eine grafische Anwendung wie gparted
. Ehrlich gesagt, ist es einfacher und weniger fehleranfällig.
Trotzdem führe ich noch ein paar Operationen auf der Kommandozeile aus, die schnell und einfach sind. Eine davon ist die Auflistung der Partitionen einer Speicherung wie /dev/sda mit fdisk
:
→ sudo fdisk -l /dev/sda Disk /dev/sda: 20 GiB, 21474836480 bytes, ... ⋮ Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 1054719 1050624 513M EFI System /dev/sda3 1054720 41940991 40886272 19.5G Linux
→ sudo parted /dev/sda -- print
Eine weitere Möglichkeit ist , die Partitionstabelle einer Speicherung zu exportieren. (Speichere sie auf einem USB-Stick oder einem anderen Gerät, nicht auf der Festplatte, an der du gerade arbeitest!
→ sudo sfdisk -d /dev/sda > /mnt/thumb/sda.txt
Wenn du später einen riskanten Partitionierungsvorgang vermasselst, kannst du die Partitionstabelle wiederherstellen (aber achte darauf, dass du das richtige Festplattengerät angibst, sonst überschreibst du die falsche Partitionstabelle):
→ sudo sfdisk /dev/device < /mnt/thumb/sda.txt
Die folgenden Befehle sind ebenfalls relativ grundlegende Operationen auf Festplatten und Dateisystemen ohne grafische Werkzeuge.
mkfs |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
mke2fs[Optionen] Gerät |
||||||
mkfs.ext3[Optionen] Gerät |
||||||
mkfs.ext4[Optionen] Gerät |
||||||
mkntfs[Optionen] Gerät |
||||||
mkfs.ntfs[options] device ...und viele andere Varianten... |
Die mkfs
Befehlsfamilie formatiert ein Linux Speichergerät für eine Vielzahl von Dateisystemen. Bei der Speicherung handelt es sich normalerweise um eine Partition, z. B. /dev/sdb1.
Warnung
mkfs
löscht ein Speichergerät. Vergewissere dich, dass der Gerätename, den du angibst, der richtige ist!
Beispiele:
→ sudo mkfs.ext4 /dev/device→ sudo mke2fs /dev/device
Standard Linux filesystem
→ sudo mkfs.ntfs /dev/device
Standard Linux filesystem
→ sudo mkntfs /dev/device
Microsoft Windows filesystem
Microsoft Windows filesystem
Wie du siehst, bestehen die meisten Befehlsnamen aus "mkfs", gefolgt von einem Punkt und einem Dateisystemtyp, wie mkfs.ext4
. Sie können auch alternative Namen (Links) haben, bei denen der Dateisystemtyp in der Mitte von "mkfs" eingebettet ist, wie z. B. mke2fs
für ein "ext"-Dateisystem. Um alle auf deinem System installierten Befehle aufzulisten, führe aus:
→ ls /usr/*bin/mkfs.* /usr/sbin/mkfs.ext2 /usr/sbin/mkfs.hfs /usr/sbin/mkfs.ext3 /usr/sbin/mkfs.minix /usr/sbin/mkfs.ext4 /usr/sbin/mkfs.msdos /usr/sbin/mkfs.fat /usr/sbin/mkfs.ntfs
Nützliche Optionen
|
Trockenlaufmodus: Formatiere nichts. Zeige nur an, was gemacht werden würde. |
|
Beschriftet das formatierte Volume mit dem angegebenen Namen, der bis zu 16 Byte lang sein kann. |
|
Setze die Blockgröße auf N Bytes. |
resize2fs |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
resize2fs[options] device[size] |
Der Befehl resize2fs
vergrößert oder verkleinert ein Standard-Linux-Dateisystem vom Typ ext2, ext3 oder ext4. Um ein Dateisystem zu vergrößern:
-
Vergewissere dich, dass das Gerät über genügend freien Speicherplatz direkt nach der aktuellen Partition verfügt.
-
Hänge das Dateisystem wieder aus.
-
Vergrößere seine Festplattenpartition mit
gparted
oder einem ähnlichen Programm. (Dazu brauchst du freien Speicherplatz direkt hinter der aktuellen Partition.) -
Überprüfe das Dateisystem mit
fsck
. -
Führe
resize2fs
mit den entsprechenden Argumenten aus. In modernen Kerneln kann das Dateisystem während der Größenänderung eingehängt werden.
Um ein Dateisystem zu verkleinern:
-
Bestätige mit
df
, dass die Daten im Dateisystem (die Spalte "Verwendet") in die vorgeschlagene neue Größe passen. -
Hänge das Dateisystem wieder aus.
-
Führe
resize2fs
mit den entsprechenden Argumenten aus.
-
Verkleinere seine Festplattenpartition mit
gparted
oder einem ähnlichenProgramm. -
Überprüfe das Dateisystem mit
fsck
.
Um die Größe eines Dateisystems auf /dev/sda1 zu ändern, vorausgesetzt, du hast die Überprüfung und Partitionierung bereits abgeschlossen, führe resize2fs
entweder mit oder ohne Größenangabe aus:
→ sudo resize2fs /dev/sda1 100G→ sudo resize2fs /dev/sda1
Resize to 100 GB
Resize to the partition size
Größen können eine absolute Anzahl von Blöcken sein, wie 12345690, oder eine Größe gefolgt von K
(KB), M
(MB), G
(GB), T
(Terabyte) oder s
(512-Byte-Sektoren). Die Werte sind Zweierpotenzen, d.h. 1K
bedeutet 1024, nicht 1000 und so weiter.
Wenn du die Größe deines Dateisystems häufig änderst, solltest du dir das Leben mit Logical Volume Management (LVM), wie in "Logical Volumes für flexible Speicherung" erklärt , oder mit einem moderneren Dateisystem, wie in "ZFS: Ein modernes Dateisystem, das alles kann", erleichtern .
Nützliche Optionen
|
Erzwinge die Größenänderung, auch wenn |
|
Zeigt den Fortschritt des Vorgangs an, während er ausgeführt wird. |
e2label |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
e2label device[label] |
Ein Label ist ein Spitzname für ein Dateisystem. Der Befehle2label
setzt oder druckt das Label eines Standard-Linux-Dateisystems vom Typ ext2, ext3 oder ext4. Dateisysteme brauchen keine Labels, aber sie sind praktisch, um in der /etc/fstab auf Dateisysteme zu verweisen.
→ sudo e2label /dev/sdb1 backups→ sudo e2label /dev/sdb1
Assign a label
backups
Print a label
RAID-Arrays für Redundanz
|
RAID (Redundant Array of Independent Disks) ist eine Technik, bei der die Daten eines Computers transparent auf mehrere Festplatten verteilt werden, während sie sich wie eine einzige Platte verhalten. Normalerweise dient RAID der Redundanz - wenn eine Festplatte ausfällt, sind deine Dateien noch intakt. Andere Arten von RAID erhöhen die Leistung der Speicherung.
Ein Bündel von Festplatten in einer RAID-Anordnung wirdRAID-Array genannt. Die Art des RAID, der sogenannteRAID-Level, bestimmt, wie viele Festplattenausfälle der Verbund verkraften kann und die Sicherheit der Daten trotzdem gewährleistet ist. Einige Standard-RAID-Level sind RAID-0, RAID-1, RAID-5, RAID-10 und andere, die du im Internet finden kannst.
Erstellen wir ein minimales RAID-1-Array mit der gängigsten RAID-Software für Linux, mdadm
. RAID-1 sorgt für Redundanz, indem es die Daten von einem Laufwerk auf die anderen im Array spiegelt. Solange ein Laufwerk noch funktioniert, sind die Daten sicher. In diesem Beispiel beginne ich mit zwei Festplatten, /dev/sdf und /dev/sdg, von denen jede eine 10 GB große Partition hat, /dev/sdf1 und /dev/sdg1. Die Schritte, die ich zeige, sind für andere RAID-Level und zusätzliche Geräte weitgehend identisch. Alle Details findest du imLinux Raid Wiki.
Warnung
RAID-Operationen können Dateisysteme ohne Bestätigung löschen. Übe die Befehle zur Sicherheit auf Ersatzlaufwerken oder einer virtuellen Maschine.
Ein RAID-Array erstellen
Zunächst zeigt , dass noch kein RAID-Setup existiert:
→ cat /proc/mdstat
Personalities : No RAID types listed
Erstelle das RAID-1-Array /dev/md1 aus den beiden Partitionen:
→ sudo mdadm --create /dev/md1 --level 1 \ --raid-devices 2 /dev/sdf1 /dev/sdg1
Sieh dir /proc/mdstat erneut an. Die Zeile Personalities zeigt jetzt, dass RAID-1 verwendet wird, und die nächste Zeile zeigt das neue Array, md1, das gerade erstellt wird:
→ cat /proc/mdstat Personalities : [raid1] md1 : active raid1 sdg1[1] sdf1[0] 10474496 blocks super 1.2 [2/2] [UU] [=========>...........] resync = 45.8% ... finish=0.4min ...
Optional kannst du warten, bis der Build ("resync") abgeschlossen ist:
→ cat /proc/mdstat Personalities : [raid1] md1 : active raid1 sdg1[1] sdf1[0] 10474496 blocks super 1.2 [2/2] [UU]
Du musst aber nicht warten. Das Array ist sofort einsatzbereit. Formatiere und montiere es wie jedes andere Speichermedium:
→ sudo mke2fs /dev/md1→ sudo mkdir /mnt/raid
Format the array
→ sudo mount /dev/md1 /mnt/raid → df -h /mnt/raid
Mount it
Filesystem Size Used Avail Use% Mounted on /dev/md1 9.9G 24K 9.4G 1% /mnt/raid
View it
Führe lsblk
aus, um die RAID-Konfiguration zu veranschaulichen:
→ lsblk ⋮ sdf 8:80 0 10G 0 disk └─sdf1 8:81 0 10G 0 part └─md1 9:1 0 10G 0 raid1 /mnt/raid sdg 8:96 0 10G 0 disk └─sdg1 8:97 0 10G 0 part └─md1 9:1 0 10G 0 raid1 /mnt/raid
Führe mdadm
aus, um mehr Details über das Array zu erfahren:
→ sudo mdadm --detail /dev/md1 dev/md1: ⋮ Creation Time : Thu Jul 20 13:15:08 2023 Raid Level : raid1 Array Size : 10474496 (9.99 GiB 10.73 GB) Raid Devices : 2 State : clean Working Devices : 2 ⋮ Number Major Minor RaidDevice State 0 8 81 0 active sync /dev/sdf1 1 8 97 1 active sync /dev/sdg1
Wenn du mit dem Array zufrieden bist, speichere seine Konfiguration, damit es Neustarts übersteht und sich selbst einbinden kann. Überspringe keine Schritte.
-
Speichere die RAID-Konfiguration in einer Datei:
→ sudo mdadm --detail --scan --verbose > /tmp/raid → cat /tmp/raid ARRAY /dev/md1 level=raid1 num-devices=2 ...
-
Verwende einen Texteditor, um den Inhalt von /tmp/raid an die Konfigurationsdatei /etc/mdadm/mdadm.conf anzuhängen, und ersetze damit alle vorherigen RAID-Konfigurationen.
-
Führe diesen Befehl aus, um den Linux-Kernel zu aktualisieren:
→ sudo update-initramfs -u
-
Starte neu. Überprüfe, ob dein RAID-Verbund überlebt hat, indem du ihn von Hand einhängst:3
→ sudo mount /dev/md1 /mnt/raid
-
Wenn alles geklappt hat, füge diese Zeile zu /etc/fstab hinzu, damit dein RAID-Verbund beim Booten gemountet wird :
/dev/md1 /mnt/raid ext4 defaults 0 2
Warnung
Aktualisiere die /etc/fstab nicht zu früh. Wenn deine RAID-Konfiguration ein Problem hat und du neu startest, könnte sich der Computer aufhängen. Teste die Konfiguration stattdessen zuerst, indem du neu startest und das Array von Hand einhängst, so wie ich es getan habe.
Ersetzen eines Geräts in einem RAID-Array
So, dein RAID-Verbund läuft und läuft. Was passiert, wenn ein Gerät stirbt und ersetzt werden muss? Zunächst wird der Ausfall in/proc/mdstat angezeigt. Das fehlgeschlagene Gerät, /dev/sdf1, wird mit (F)
markiert und die Betriebszeitanzeige, die [UU]
(zwei Geräte in Betrieb) lauten sollte, lautet [U_]
(erstes Gerät in Betrieb, zweites Gerät ausgefallen).
→ cat /proc/mdstat Personalities : [raid1] md1 : active raid1 sdf1[1](F) sdg1[0] 10474496 blocks super 1.2 [2/1] [U_]
mdadm
zeigt auch das Array als "degradiert" und das Gerät als "fehlerhaft" an:
→ sudo mdadm --detail /dev/md1 /dev/md1: ⋮ Raid Devices : 2 State : clean, degraded Working Devices : 1 Failed Devices : 1 ⋮ Number Major Minor RaidDevice State 1 8 97 - faulty /dev/sdf1
Um das Gerät /dev/sdf1 zu ersetzen, markiere es als fehlgeschlagen (falls es das nicht schon ist) und entferne es aus dem RAID-Verbund:
→ sudo mdadm --manage /dev/md1 --fail /dev/sdf1 → sudo mdadm --manage /dev/md1 --remove /dev/sdf1
Schalte den Computer aus, ziehe das Netzkabel ab und tausche die fehlgeschlagene Speicherung physisch gegen eine neue mit der gleichen oder einer größeren Größe aus. Ich werde es mit dem nicht existierenden Namen /dev/NEW bezeichnen, um es in meiner Anleitung klar zu unterscheiden, weil die folgenden Befehle destruktiv sind und du deine Laufwerke nicht verwechseln willst. Ersetze den richtigen Gerätenamen in deinem System.
Starte den Computer, identifiziere ein gutes Laufwerk im RAID-Verbund (in unserem Fall /dev/sdg) und kopiere dessen Partitionstabelle mit dem Befehl sgdisk
auf das neue Gerät.
→ sudo sgdisk -R /dev/NEW /dev/sdg→ sudo sgdisk -G /dev/NEW
Copy from sdg to NEW
Randomize GUIDs
Das Gerät /dev/NEW hat jetzt eine 10 GB große Partition, /dev/NEW1. Füge sie dem Array hinzu:
→ sudo mdadm --manage /dev/md1 --add /dev/NEW1 mdadm: added /dev/NEW1
Das Array beginnt sofort mit dem Wiederaufbau und spiegelt die Daten auf das neue Gerät:
→ cat /proc/mdstat ⋮ [==========>..........] recovery = 51.5% ... finish=0.4min ...
Wenn die Spiegelung abgeschlossen ist, hat das neue Gerät /dev/NEW1 das fehlerhafte Gerät /dev/sdf1 ersetzt:
→ cat /proc/mdstat Personalities : [raid1] md1 : active raid1 NEW1[1] sdg1[0] 10474496 blocks super 1.2 [2/2] [UU]
Ein RAID-Array zerstören
Solltest du jemals den RAID-Verbund zerstören und die Partitionen für andere Zwecke verwenden wollen, führe diese Befehle aus, vorausgesetzt, deine Gerätenamen sind /dev/sdg1 und /dev/sdh1:
→ sudo umount /mnt/raid → sudo mdadm --stop /dev/md1 mdadm: stopped /dev/md1 → sudo mdadm --zero-superblock /dev/sdg1 /dev/sdh1
Schließlich aktualisierst du /etc/fstab und /etc/mdadm/mdadm.conf, um das RAID-Array /dev/md1 zu entfernen und dem Kernel mitzuteilen, dass das Array verschwunden ist:
→ sudo update-initramfs -u
Logische Volumes für flexible Speicherung
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Logical Volume Management (LVM) löst zwei lästige Probleme bei der Speicherung von Festplatten:
-
Begrenzte Größe. Wenn eine Festplatte voll ist, musst du Dateien löschen oder sie durch eine größere Festplatte ersetzen.
-
Feste Partitionen. Wenn du eine Festplatte partitionierst, schätzt du, wie viel Platz jede Partition benötigen wird, und wenn du dich irrst, ist es zeitaufwändig, das zu ändern.
LVM löst diese Probleme, indem es eine Abstraktionsebene um die physische Speicherung legt. Es fasst eine Reihe von physischen Festplatten beliebiger Größe zusammen, die so genannten physischen Volumes, um eine große Festplatte zu simulieren, die es Volume Group nennt. Die Volume-Gruppe wird zu einer Spielwiese für die Erstellung von simulierten Partitionen, den so genannten logischen Volumes, die bei Bedarf wachsen und schrumpfen können. Abbildung 4-1 zeigt die Beziehung zwischen physischen Volumes (PVs), der Volume-Gruppe (VG), die sie enthält, und logischen Volumes (LVs), die du aus dem gesamten Speicherplatz herausschneidest. Wenn der VG der Platz ausgeht, fügst du einfach ein weiteres physisches Volume hinzu und die VG wächst. Wenn eine Partition (LV) die falsche Größe hat, änderst du sie einfach. Bestehende Dateien bleiben erhalten. Alle Massenspeicher können Teil einer Volume Group sein, sogar RAID-Arrays, die mit mdadm
erstellt wurden (siehe "RAID-Arrays für Redundanz").
Die beliebteste LVM-Software für Linux heißt lvm2. Sie enthält über 50 Befehle, was dir vielleicht viel vorkommt, aber ihre Namen folgen einem einfachen Muster: pv
, vg
oder lv
, gefolgt von einem Verb wie create
, remove
oder display
. vgcreate
erstellt also eine Volume-Gruppe, und pvdisplay
gibt Informationen über ein physisches Volume aus.
Warnung
LVM-Operationen können Dateisysteme ohne Bestätigung löschen. Übe die Befehle zur Sicherheit auf Ersatzlaufwerken oder einer virtuellen Maschine.
Außerdem bietet LVM keine inhärente Redundanz. Wenn ein physisches Volume ausfällt, verliert man die gesamte Volume-Gruppe. Mehr Sicherheit erhältst du, wenn du LVM zusätzlich zu RAID einsetzt; siehe "RAID-Arrays für Redundanz".
Ich zeige jetzt Beispiele für die Verwendung der gängigsten lvm2-Befehle anhand von drei leeren 10-GB-Festplattenpartitionen, /dev/sdb1, /dev/sdc1 und/dev/sdd1.4 lvm2 hat aber noch Dutzende weiterer Befehle. Eine vollständige Liste findest du in der Manpage eines beliebigen lvm2-Befehls, wenn du zum Ende springst, oder aufsourceware.org/lvm2.
Ein erstes logisches Volume erstellen
Diese Abfolge von Schritten richtet zwei physische Volumes ein, gruppiert sie in eine 20 GB große Volume-Gruppe, myvg, und erstellt ein 15 GB großes logisches Volume,stuff:
→ sudo pvcreate /dev/sdb1 /dev/sdc1Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdc1" successfully created. → sudo vgcreate myvg /dev/sdb1 /dev/sdc1
Create two PVs
Volume group "myvg" successfully created → sudo lvcreate -L 15G -n stuff myvg
Create a VG
Logical volume "stuff" created. → sudo pvs
Create the LV
PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a-- <10.00g 0 /dev/sdc1 myvg lvm2 a-- <10.00g 5.34g
View the PVs
Das logische Volume kann wie jedes andere Speichermedium verwendet werden. Formatiere und binde es ein:
→ sudo mke2fs /dev/myvg/stuff→ sudo mkdir /mnt/stuff
Format the LV
→ sudo mount /dev/myvg/stuff /mnt/stuff → df -h /mnt/stuff
Mount it
Filesystem Size Used Avail Use% Mounted on /dev/mapper/myvg-stuff 15G 24K 1.4G 1% /mnt/stuff
View it
Wenn dein LV fertig ist, füge diese Zeile zu /etc/fstab hinzu, um es beim Booten einzuhängen:
/dev/mapper/myvg-stuff /mnt/stuff ext4 defaults 0 2
LVM Details ansehen
Die Befehle pvdisplay
, vgdisplay
, und lvdisplay
geben Details über physische Volumes, Volume-Gruppen und logische Volumes aus. Die Befehle pvs
, vgs
, und lvs
geben hilfreiche Zusammenfassungen dieser Informationen aus.
→ sudo pvdisplay→ sudo pvdisplay /dev/sdb1
Show all PVs
→ sudo pvs
Show selected PVs
→ sudo vgdisplay
Summarize PVs
→ sudo vgdisplay myvg
Show all VGs
→ sudo vgs
Show selected VGs
→ sudo lvdisplay
Summarize VGs
→ sudo lvdisplay myvg/stuff
Show all LVs
→ sudo lvs
Show selected LVs
Summarize LVs
Ein logisches Volume hinzufügen
Führen wir erneut aus lvcreate
, um ein 2 GB großes logisches Volume namens tiny zu unserer Volume-Gruppe hinzuzufügen:
→ sudo lvcreate -L 2G -n tiny myvg Logical volume "tiny" created. → sudo mke2fs /dev/myvg/tiny→ sudo mkdir /mnt/tiny
Format
→ sudo mount /dev/myvg/tiny /mnt/tiny → df -h /mnt/tiny
Mount
Filesystem Size Used Avail Use% Mounted on /dev/mapper/myvg-tiny 2.0G 24K 1.9G 1% /mnt/tiny
View
Festplatten zu einer Volume-Gruppe hinzufügen
Der Befehl vgextend
fügt physische Volumes zu einer Volume-Gruppe hinzu. Angenommen, du möchtest die Größe deiner Daten um 10 GB (auf 25 GB) erhöhen, aber in der Volume-Gruppemyvg sind nur noch 3 GB Platz. Vergrößere deine VG, indem du ein drittes physisches Volume, /dev/sdd1, hinzufügst, wodurch die Gesamtgröße der VG auf 30 GB erhöht wird:
→ sudo pvcreate /dev/sdd1→ sudo vgextend myvg /dev/sdd1
Create another PV
Grow the VG
Zu diesem Zeitpunkt sieht die LVM-Konfiguration wie in Abbildung 4-1 aus. Führe lsblk
aus, um die LVM-Konfiguration zu veranschaulichen:
→ lsblk /dev/sdb /dev/sdc /dev/sdd NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sdb 8:16 0 10G 0 disk └─sdb1 8:17 0 10G 0 part └─myvg-stuff 253:0 0 15G 0 lvm /mnt/stuff sdc 8:32 0 10G 0 disk └─sdc1 8:33 0 10G 0 part ├─myvg-stuff 253:0 0 15G 0 lvm /mnt/stuff └─myvg-tiny 253:1 0 2G 0 lvm /mnt/tiny sdd 8:48 0 10G 0 disk └─sdd1 8:49 0 10G 0 part
Ein logisches Volume vergrößern
Der Befehl lvresize
vergrößert oder verkleinert ein logisches Volume.5 Vergrößern wir den LV-Stoff auf 25 GB:
→ sudo lvresize --resizefs --size 25G /dev/myvg/stuff → df -h /mnt/stuff Filesystem Size Used Avail Use% Mounted on /dev/mapper/myvg-stuff 25G 24K 24G 1% /mnt/stuff
Verkleinern eines logischen Volumens
Es sich heraus, dass der LV-Speicher nicht so groß sein muss. Verkleinere ihn auf 8 GB (stelle vorher sicher, dass er weniger als 8 GB belegt):
→ sudo lvresize --resizefs --size 8G /dev/myvg/stuff Do you want to unmount "/mnt/stuff" ? [Y|n] y ⋮ Logical volume myvg/stuff successfully resized. → df -h /mnt/stuff Filesystem Size Used Avail Use% Mounted on /dev/mapper/myvg-stuff 7.9G 24K 7.5G 1% /mnt/stuff
Ein logisches Volume löschen
Der Befehl lvremove
löscht ein logisches Volume. Lass uns das LV tiny loswerden:
→ sudo umount /mnt/tiny→ sudo lvremove /dev/myvg/tiny
First unmount the LV
Do you really want to remove and DISCARD active logical volume myvg/tiny? [y/n]: y Logical volume "tiny" successfully removed
Remove the LV
Löschen einer Volume-Gruppe
Der Befehl vgremove
entfernt eine Volume-Gruppe und löscht alle logischen Volumes, die sie enthält:
→ sudo vgremove myvg Do you really want to remove volume group "myvg" containing 1 logical volumes? [y/n]: y Do you really want to remove and DISCARD active logical volume myvg/stuff? [y/n]: y Logical volume "stuff" successfully removed Volume group "myvg" successfully removed
ZFS: Ein modernes Dateisystem, das alles kann
|
|
|
Warnung
ZFS-Operationen können Dateisysteme ohne Bestätigung löschen. Übe die Befehle zur Sicherheit auf Ersatzlaufwerken oder einer virtuellen Maschine.
ZFS (Zettabyte File System) vereint fortschrittliche Funktionen wie RAID, logische Datenträgerverwaltung, Verschlüsselung und Komprimierung in einem praktischen Paket. Wenn du an traditionelle Linux-Dateisysteme wie ext4 gewöhnt bist, mag dir ZFS wie eine fremde Welt vorkommen. Es hat seine eigene Terminologie mit "Pools" und "vdevs". Es verwendet weder /etc/fstab noch den Befehl mount
. Du musst deine Festplatten nicht einmal explizit partitionieren oder formatieren.
Ein ZFS vdev, kurz für "virtuelles Gerät", ist eine Gruppe von physischen Festplatten, die zusammenarbeiten. Sie können die Daten untereinander aufteilen, als ob sie eine einzige große Festplatte wären, wie bei einem RAID-0 "Disk-Striping"-System. Sie können sich gegenseitig spiegeln, um Redundanz zu gewährleisten, wie bei einem RAID-1-Verbund. Sie können als Festplatten-Cache fungieren, und es gibt noch weitere Möglichkeiten.
Eine Sammlung von vdevs wird als Pool bezeichnet. Ein Pool verhält sich wie ein großes Speichergerät. Du kannst ihn in Einheiten unterteilen, die ähnlich wie Partitionen sind, die so genannten Datasets, und du kannst ihre Größenbegrenzungen und andere Attribute flexibel ändern. Dataset-Namen sehen aus wie Linux-Pfade ohne einen führenden Schrägstrich. Ein Pool mit dem Namen mypool
und einem Dataset mit dem Namen stuff
würde zum Beispiel mypool/stuff
heißen. (Datasets können auch andere Datasets enthalten, z. B.mypool/stuff/important
.) Wenn du einen führenden Schrägstrich hinzufügst, erhältst du den Standard-Linux-Einhängepunkt des Datasets, z. B. /mypool/stuff.
ZFS ist nicht das einzige Dateisystem mit fortschrittlichen Funktionen - ein weiteres beliebtes ist Btrfs-, aber es ist mit am einfachsten zu konfigurieren.
Hinweis
Ich bespreche nur die minimale ZFS-Funktionalität, um interessante Dinge zu tun. Echte ZFS-Systeme brauchen eine sorgfältige Konfiguration, ein Tuning und viel Arbeitsspeicher; lies die Dokumentation unter https://oreil.ly/-t5Fu.
Um ZFS mit Mirroring und Striping zu demonstrieren, verwende ich zwei Festplattenpaare, wie in Abbildung 4-2. Jedes Paar ist ein vdev mit Spiegelung (RAID-1). ZFS strippt dann über die beiden Vdevs (RAID-0), wodurch ein RAID-10-Setup entsteht. Dieser redundante Pool kann ein fehlgeschlagenes Laufwerk in jedem Vdev tolerieren und die Daten sicher halten.
Einen ZFS-Pool erstellen
Verwende den Befehl zpool
, um einen Pool aus zwei gespiegelten Laufwerkspaaren zu erstellen. Ich erstelle einen Pool namens mypool
aus vier 10-GB-Laufwerken, /dev/sdb, /dev/sdc,/dev/sdd und /dev/sde:
→ sudo zpool create mypool \ mirror /dev/sdb /dev/sdc \ mirror /dev/sdd /dev/sde
Warnung
Die einfachen Gerätenamen in meinen Beispielen, wie /dev/sdb, können sich nach einem Neustart ändern. Für eine robustere Einrichtung solltest du Namen verwenden, die sich garantiert nicht ändern, wie die symbolischen Links in /dev/disk/by-id oder/dev/disk/by-uuid.
Auf realen Systemen solltest du außerdem sicherstellen, dass du bei der Erstellung mit -o ashift
einen angemessenen Wert für die Ausrichtungsverschiebung einstellst; siehe die Dokumentation.
Verwende zpool status
, um die Ergebnisse von anzuzeigen.
→ zpool status pool: mypool state: ONLINE config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0mirror-0 ONLINE 0 0 0
The pool
sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 mirror-1 ONLINE 0 0 0
First vdev
sdd ONLINE 0 0 0 sde ONLINE 0 0 0
Second vdev
Ein ZFS-Dataset erstellen
Traditionelle Dateisysteme haben Partitionen mit fester Größe, die du in der Datei /etc/fstab einhängst. ZFS hat Datasets mit beliebiger Größe, die es automatisch einhängt. Erstelle ein Dataset mit dem Namen data
im Pool mypool
, das in das Verzeichnis /mypool/data eingehängt wird:
→ sudo zfs create -o mypool/data
Verschiebe den Einhängepunkt, wenn du willst, nach /mnt/stuff:
→ sudo zfs set mountpoint=/mnt/stuff mypool/data
Zeige die Ergebnisse mit einem dieser Befehle an:
→ zfs mount mypool /mypoolmypool/data /mnt/stuff
The whole pool
→ zfs get mountpoint mypool/data NAME PROPERTY VALUE SOURCE mypool/data mountpoint /mnt/stuff local
Your dataset
Jetzt kannst du das Dataset wie jede andere gemountete Partition verwenden:
→ sudo cp /etc/hosts /mnt/stuff → cd /mnt/stuff → ls hosts
Ein verschlüsseltes ZFS-Dataset erstellen
Wenn du ein paar Optionen hinzufügst, kannst du einen Datensatz erstellen, der verschlüsselt ist und vor dem Einhängen eine Passphrase erfordert. Erstelle ein verschlüsseltes Dataset mit dem Namen mypool/cryptic
:
→ zfs create \ -o encryption=on \ -o keylocation=prompt \ -o keyformat=passphrase \ mypool/cryptic Enter new passphrase: xxxxxxxx Re-enter new passphrase: xxxxxxxx
Verwende das Dataset normal. Wenn du das Dataset neu startest oder aus anderen Gründen mounten musst, führe aus:
→ sudo zfs mount -l mypool/cryptic
Größenbeschränkungen für ZFS-Datensätze festlegen
Standardmäßig hat ein ZFS-Dataset die gleiche Größe wie der Pool. Begrenze seine Größe, indem du eine Quote festlegst, die du jederzeit ändern kannst:
→ sudo zfs set quota=15g mypool/data
→ zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 312K 18.4G 25K /mypool
mypool/data 24K 15.0G 24K /mnt/stuff 15 GB limit
Aktiviere die Komprimierung von ZFS-Datensätzen
ZFS kann Daten automatisch komprimieren, wenn sie geschrieben werden, und sie dekomprimieren, wenn sie gelesen werden. Es unterstützt verschiedene Komprimierungsalgorithmen; hier verwende ich die gzip-Komprimierung und sehe mir an, wie effektiv die Dateien komprimiert werden (das Kompressionsverhältnis):
→ sudo zfs set compression=gzip mypool/data → cp hugefile /mnt/stuff→ zfs get compressratio
Store a big file
NAME PROPERTY VALUE SOURCE mypool compressratio 122.66x - mypool/data compressratio 126.12x -
See the compression ratio
Wenn du die Komprimierung aktivierst, werden nur neue Daten komprimiert; bestehende Dateien werden nicht komprimiert. Um die Komprimierung zu deaktivieren:
→ sudo zfs set compression=off mypool/data
Snapshot eines ZFS-Datensatzes
ZFS unterstützt Snapshots:speichert den Zustand eines Datensatzes, so dass du später leicht zu diesem Zustand zurückkehren kannst (Rollback). Bevor du z. B. eine riskante Änderung an deinen Dateien vornimmst, kannst du einen Snapshot erstellen und die Änderung mit einem einzigen Befehl rückgängig machen, falls etwas schief geht. Snapshots benötigen nur sehr wenig Speicherplatz und du kannst sie effizient an andere zpools oder Hosts senden (mit zfs send
und zfs recv
). Erstelle einen Snapshot von mypool/data
mit dem Namen safe
:
→ sudo zfs snapshot mypool/data@safe
Liste deine Schnappschüsse auf:
→ zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT mypool/data@safe 0B - 24K -
Wenn du keine Schnappschüsse auflisten kannst, stelle listsnapshots=on
ein und versuche es erneut:
→ sudo zpool set listsnapshots=on mypool
Versuche, einige Dateien in mypool/data
zu ändern. Gehe dann zum Snapshot safe
zurück und sieh nach, ob deine Änderungen verschwunden sind:
→ sudo zfs rollback mypool/data@safe
Backups und Fernspeicherung
|
Kopiere eine Reihe von Dateien effizient, auch über ein Netzwerk. |
|
Synchronisiere Dateien mit verschiedenen Cloud-Providern. |
|
Kopieren von Daten auf niedriger Ebene. |
|
Brenne eine DVD oder Blu-ray Disc. |
Du kannst deine wertvollen Linux-Dateien auf verschiedene Arten sichern:
-
Kopiere sie auf einen anderen Computer.
-
Kopiere sie auf ein Sicherungsmedium wie ein externes Laufwerk.
-
Brenne sie auf eine Disc.
Ich stelle hier ein paar beliebte Linux-Befehle für Backups vor, aber es gibt noch andere. Einige Benutzer bevorzugen cpio
wegen seiner Flexibilität, und einige langjährige Administratoren schwören auf dump
und restore
als einzige zuverlässige Methode, um alle Arten von Dateien zu sichern und wiederherzustellen. Wenn du dich für diese Befehle interessierst, sieh dir die Manpages dazu an.
rsync |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
rsync[Optionen] Quelle Ziel |
Der Befehl rsync
kopiert einen Satz von Dateien. Er kann eine exakte Kopie erstellen, einschließlich der Dateiberechtigungen und anderer Attribute ( Spiegelung genannt), oder er kann nur die Daten kopieren. Er kann über ein Netzwerk oder auf einem einzelnen Computer ausgeführt werden. rsync
hat viele Einsatzmöglichkeiten und über 50 Optionen; ich stelle hier nur ein paar gängige Fälle vor, die sich auf Backups beziehen.
Um das Verzeichnis mydir und seinen Inhalt in ein anderes Verzeichnis mydir2 auf einem einzelnen Rechner zu spiegeln:
→ rsync -a mydir mydir2
rsync
ist pingelig, wenn es darum geht, wie du das erste Verzeichnis angibst. Wenn du wie in diesem Beispiel "mydir" schreibst, wird dieses Verzeichnis nachmydir2 kopiert, wodurch das Unterverzeichnis mydir2/mydir entsteht. Wenn du stattdessen nur den Inhalt von mydir nach mydir2 kopieren möchtest, hängst du einen Schrägstrich an "mydir" an:
→ rsync -a mydir/ mydir2
rsync
kann ein Verzeichnis über ein Netzwerk auf einen anderen Host spiegeln und die Verbindung mit SSH sichern, um Abhören zu verhindern. Hier kopiere ich das Verzeichnis mydir auf das Konto "smith" auf dem entfernten Host server.example.com, in ein VerzeichnisD2:
→ rsync -a mydir smith@server.example.com:D2
Wenn du rsync
magst, aber auch inkrementelle Backups haben und diese effizient verwalten möchtest, probiere rsnapshot
(https://oreil.ly/VNfb-).
Nützliche Optionen
rclone |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
rclone subcommand[options][arguments] |
Der Befehl rclone
verbindet dein Linux-System mit beliebten Cloud-Providern, um Dateien bequem zu kopieren. Er funktioniert mit Dropbox, Google Drive, Microsoft OneDrive, Amazon S3 und etwa 50 weiteren Zielen. Um loszulegen, rufe rclone config
auf und folge den Eingabeaufforderungen, um eine Verbindung mit dem Cloud-Provider deiner Wahl einzurichten, die rclone
als Remote bezeichnet. Unterrclone.org/docs findest du detaillierte Anweisungen zur Konfiguration.
Nachdem du einen Namen für deine Remote gewählt hast, z. B. myremote
, verweist du auf Remote-Dateien mit der Syntax myremote:
path, wobei path ein Dateipfad im Linux-Stil ist. Eine Datei photo.jpg in einem Remote-Verzeichnis Photos wäre zum Beispiel myremote:Photos/photo.jpg
.
Backups werden in der Regel mit dem Befehl rclone sync
durchgeführt. synchronisiert ein lokales und ein entferntes Verzeichnis, damit sie denselben Inhalt haben, und fügt bei Bedarf etwas hinzu oder löscht es. Er funktioniert ähnlich wie der Befehl rsync --delete
. Du kannst in beide Richtungen synchronisieren: von deinem lokalen Rechner zum entfernten oder vom entfernten zu deinem lokalen Rechner. Du kannst sogar eine client-seitige Verschlüsselung einrichten, so dass die Dateien transparent verschlüsselt werden, bevor sie auf den entfernten Rechner kopiert werden, und entschlüsselt werden, wenn sie zurück auf dein lokales System kopiert werden (siehe die Dokumentation).
Einige gängige Vorgänge für Backups sind:
|
Dateien auf der Gegenstelle rekursiv auflisten ( |
|
Nur Verzeichnisse auf der Gegenstelle auflisten. |
|
Zeigt eine lange Liste wie |
|
Kopiere eine lokale Datei auf die Gegenstelle. |
|
Kopiere eine entfernte Datei auf dein lokales System. |
|
Verschiebe eine lokale Datei auf die Gegenstelle. |
|
Verschiebe eine entfernte Datei auf dein lokales System. |
|
Lösche eine entfernte Datei. |
|
Synchronisiere lokale Dateien mit der Gegenstelle. |
|
Synchronisiere entfernte Dateien auf dein lokales System. |
Führe rclone help
aus, um eine vollständige Liste der Unterbefehle zu erhalten. Beachte, dass du auf der Fernbedienung auf ausgefallenere Pfade zugreifen kannst, als meine früheren Beispiele zeigen:
→ rclone copy remote:Photos/Vacation/picture.jpg .
Nützliche Optionen
|
Trockenübungsmodus: Kopiere nicht wirklich. Zeige nur an, was gemacht werden würde. |
|
Interaktiv ausführen, damit du vor Änderungen eine Eingabeaufforderung erhältst. |
dd |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
dd[Optionen] |
dd
ist ein Low-Level-Kopierer von Bits und Bytes. Er kann Daten von einer Datei in eine andere kopieren, zum Beispiel von myfile nach /tmp/mycopy:
→ dd if=myfile of=/tmp/mycopy 2+1 records in 2+1 records out 1168 bytes (1.2 kB) copied, 0.000174074 s, 6.7 MB/s
Es kann sogar Daten während des Kopierens umwandeln, z. B. indem es beim Kopieren von myfile nach /tmp/mycopy die Großschreibung ändert:
→ dd if=myfile of=/tmp/mycopy conv=ucase
dd
kann viel mehr als nur Dateien kopieren. Es kann auch Rohdaten direkt von einem Festplattengerät auf ein anderes kopieren. Hier ist ein Befehl zum Klonen einer Festplatte:
→ sudo dd if=/dev/device1 of=/dev/device2 bs=512 \ conv=noerror,sync OVERWRITES /dev/device2
Oder du kopierst einen ganzen Datenträger, um eine ISO-Datei zu erstellen. Vergewissere dich, dass die Ausgabedatei auf einem anderen Datenträger liegt und über ausreichend freien Speicherplatz verfügt.
→ sudo dd if=/dev/device of=disk_backup.iso
Warnung
dd
kann, wenn es als Superuser ausgeführt wird, deine Festplatte in Sekundenschnelle vernichten, wenn du nicht aufpasst. Vergewissere dich immer, dass die Ausgabedatei (das Argument of=
) die richtige ist. Sichert euren Computer und haltet eine Linux-Live-Distribution für Notfälle bereit (siehe"Was steht in diesem Buch?"), bevor ihr mit dd
als root experimentiert.
Tolle Tipps für die anspruchsvolle Nutzung von dd
findest du unterhttps://oreil.ly/R3krx. Mein Lieblingstipp ist die Sicherung des Master Boot Record (MBR) einer Festplatte, der 512 Byte lang ist, in einer Datei namens mbr.txt:
→ sudo dd if=/dev/device of=mbr.txt bs=512 count=1
Nützliche Optionen
growisofs |
stdin |
stdout |
- Akte |
-- opt |
--help |
--version |
growisofs[Optionen] Spuren |
Der Befehl growisofs
brennt eine beschreibbare CD, DVD oder Blu-ray Disc. So brennst du den Inhalt eines Linux-Verzeichnisses auf einen Datenträger, der auf Linux-, Windows- und macOS-Systemen lesbar ist:
-
Finde deine Brennergeräte, indem du sie auswählst:
→ grep "^drive name:" /proc/sys/dev/cdrom/info drive name: sr1 sr0
Die verfügbaren Geräte sind hier /dev/sr1 und /dev/sr0.
-
Lege die Dateien, die du brennen willst, in einem Verzeichnis ab, zum Beispiel dir. Ordne sie genau so an, wie du sie auf der Disc haben möchtest. Das Verzeichnis dir selbst wird nicht auf die Disc kopiert, nur sein Inhalt.
-
Verwende den Befehl
mkisofs
, um eine ISO-Image-Datei zu erstellen, und brenne sie mitgrowisofs
auf einen Datenträger, vorausgesetzt, dein Gerät ist /dev/sr1:→ mkisofs -R -l -o $HOME/mydisk.iso dir → growisofs -dvd-compat -Z /dev/sr1=$HOME/mydisk.iso → rm $HOME/mydisk.iso
Um Audio-CDs zu brennen, verwende ein benutzerfreundliches grafisches Programm wie k3b
.
1 Du kannst ein Dateisystem in ein nicht leeres Verzeichnis einhängen, aber der Inhalt des Verzeichnisses wird unzugänglich, bis du es wieder aushängst.
2 Beachte, dass die Schreibweise "umount" ist, nicht "unmount".
3 Wenn sich dein RAID-Verbund auf mysteriöse Weise in /dev/md127 umbenennt, hast du im vorherigen Schritt vergessen, update-initramfs
auszuführen.
4 Arbeite auf Partitionen statt auf ganzen Festplatten.
5 Alte Hasen können die Größe eines LVs ändern, indem sie lvextend
, umount
, fsck
, resize2fs
, und mount
nacheinander ausführen. lvresize
ist einfacher.
Get Linux Pocket Guide, 4th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.