Linux-btrfs-Befehl
Btrfs (B-tree-Dateisystem) ist ein fortschrittliches Linux-Dateisystem, das von Oracle entwickelt und erstmals 2007 veröffentlicht wurde. Sein Designziel ist es, die Einschränkungen traditioneller Dateisysteme zu überwinden und bessere Skalierbarkeit, Zuverlässigkeit und Verwaltungsfunktionen zu bieten.
Kernfunktionen
- Copy-on-Write (CoW): Alle Schreibvorgänge überschreiben vorhandene Daten nicht, sondern erzeugen stattdessen neue Kopien
- Snapshot-Funktionalität: Kann schnell sofortige Snapshots des Dateisystems erstellen, die fast keinen zusätzlichen Speicherplatz beanspruchen
- Subvolume-Verwaltung: Unterstützt die Aufteilung des Dateisystems in mehrere unabhängige Subvolumes
- Datenprüfsummen: Erkennt Datenbeschädigungen automatisch
- Transparente Komprimierung: Unterstützt die Komprimierung und Dekomprimierung von Dateidaten in Echtzeit
- RAID-Unterstützung: Integrierte Unterstützung für mehrere RAID-Level
Grundlegende btrfs-Befehlssyntax
btrfs [选项] [子命令选项] [参数]
Häufige Optionen
| Option | Beschreibung |
|---|---|
-v |
Ausführlicher Ausgabemodus |
--help |
Hilfeinformationen anzeigen |
--version |
Versionsinformationen anzeigen |
Wichtigste Unterbefehle erklärt
Erstellung und Verwaltung von Dateisystemen
Ein btrfs-Dateisystem erstellen
Beispiel
sudo mkfs.btrfs /dev/sdX
# Ein Dateisystem mit einem Label erstellen
sudo mkfs.btrfs -L mylabel /dev/sdX
# RAID1 mit mehreren Geräten erstellen
sudo mkfs.btrfs -m raid1 -d raid1 /dev/sdX /dev/sdY
Ein btrfs-Dateisystem einhängen
Beispiel
sudo mount /dev/sdX /mnt/btrfs
# Komprimierung aktivieren (lzo oder zstd empfohlen)
sudo mount -o compress=lzo /dev/sdX /mnt/btrfs
# Einhängeoptionen anzeigen
mount | grep btrfs
Subvolume-Operationen
Subvolume erstellen
Beispiel
sudo btrfs subvolume create /mnt/btrfs/subvol1
# Subvolumes auflisten
sudo btrfs subvolume list /mnt/btrfs
# Subvolume löschen
sudo btrfs subvolume delete /mnt/btrfs/subvol1
Snapshot-Verwaltung
Beispiel
sudo btrfs subvolume snapshot /mnt/btrfs /mnt/btrfs/snapshot_$(date +%Y%m%d)
# Schreibgeschützter Snapshot
sudo btrfs subvolume snapshot -r /mnt/btrfs /mnt/btrfs/readonly_snap
# Snapshot löschen
sudo btrfs subvolume delete /mnt/btrfs/snapshot_20230101
Speicherplatzverwaltung
Dateisystemnutzung anzeigen
Beispiel
sudo btrfs filesystem usage /mnt/btrfs
# Festplattennutzung anzeigen
sudo btrfs filesystem df /mnt/btrfs
# Datenverteilung ausgleichen (mit Vorsicht verwenden, kann zeitaufwändig sein)
sudo btrfs balance start /mnt/btrfs
Größe des Dateisystems ändern
Beispiel
sudo btrfs filesystem resize +10G /mnt/btrfs
# Dateisystem verkleinern
sudo btrfs filesystem resize -5G /mnt/btrfs
Datenintegritätsprüfung
Dateisystem überprüfen
Beispiel
sudo btrfs check /dev/sdX
# Reparatur versuchen (mit Vorsicht verwenden)
sudo btrfs check --repair /dev/sdX
Bereinigung und Reparatur
Beispiel
sudo btrfs filesystem defrag /mnt/btrfs
# Dateisystem überprüfen und reparieren
sudo btrfs scrub start /mnt/btrfs
# Reparaturstatus anzeigen
sudo btrfs scrub status /mnt/btrfs
Praktische Anwendungsbeispiele
Beispiel 1: Einrichten eines btrfs-Home-Verzeichnisses mit Komprimierung
Beispiel
sudo mkfs.btrfs -L home /dev/sdX
# Mounten und Komprimierung aktivieren
sudo mount -o compress=zstd /dev/sdX /mnt/newhome
# Bestehende Daten kopieren
sudo rsync -avx /home/ /mnt/newhome/
# fstab aktualisieren, um automatisches Einhängen zu ermöglichen
echo "UUID=$(blkid -s UUID -o value /dev/sdX) /home btrfs defaults,compress=zstd 0 2" | sudo tee -a /etc/fstab
# Neu einhängen
sudo umount /mnt/newhome
sudo mount -a
Beispiel 2: Regelmäßige Snapshots und Bereinigung
Beispiel
# Tägliche Snapshots erstellen
SNAP_DIR="/mnt/btrfs/.snapshots"
mkdir -p "$SNAP_DIR"
sudo btrfs subvolume snapshot -r /mnt/btrfs "$SNAP_DIR/$(date +%Y%m%d)"
# Die Snapshots der letzten 7 Tage behalten
find "$SNAP_DIR" -mindepth 1 -maxdepth 1 -type d -name "2*" | sort -r | tail -n +8 | xargs -r sudo btrfs subvolume delete
Lösung häufiger Probleme
Problem 1: Unzureichender Speicherplatz, aber df zeigt verfügbaren Speicherplatz an
Beispiel
sudo btrfs subvolume list -s /mnt/btrfs
# Unnötige Snapshots aufräumen
sudo btrfs subvolume delete /mnt/btrfs/old_snapshot
Problem 2: Balance-Vorgang hängt fest
Beispiel
sudo btrfs balance status /mnt/btrfs
# Balance-Vorgang pausieren
sudo btrfs balance pause /mnt/btrfs
# Balance-Vorgang fortsetzen
sudo btrfs balance resume /mnt/btrfs
Problem 3: Mount-Fehler
Beispiel
sudo btrfs check /dev/sdX
# Reparatur versuchen
sudo btrfs rescue zero-log /dev/sdX
sudo mount /dev/sdX /mnt/btrfs
Best-Practice-Empfehlungen
-
Komprimierung aktivieren: Besonders für komprimierbare Daten wie Text und Logs
# 推荐使用 zstd 压缩算法 mount -o compress=zstd /dev/sdX /mnt/btrfs
-
Regelmäßig Snapshots erstellen: Vor wichtigen Vorgängen manuell Snapshots erstellen
-
Speicherplatznutzung überwachen: Die Speicherplatzberichterstattung von btrfs unterscheidet sich von traditionellen Dateisystemen
-
Vermeiden, zu 100% voll zu sein: Mindestens 5-10% freien Speicherplatz beibehalten
-
Balance mit Vorsicht verwenden: Nur bei Bedarf ausführen, da es sehr zeitaufwendig sein kann
-
RAID-Konfiguration in Betracht ziehen: RAID1 oder RAID10 für wichtige Daten verwenden
-
Regelmäßig Scrub ausführen: Datenintegrität prüfen
# 每月执行一次数据检查 sudo btrfs scrub start /mnt/btrfs
Durch diesen Artikel sollten Sie die grundlegenden Operationen und Verwaltungsmethoden des btrfs-Dateisystems beherrschen. Die leistungsstarken Funktionen von btrfs machen es zur idealen Wahl für moderne Linux-Systeme, insbesondere geeignet für Szenarien, die erweiterte Speicherfunktionen erfordern.
Andere Erweiterungen
Linux-Befehlsreferenz