Linux-btrfs-Befehl

Linux 命令大全Linux-Befehlsreferenz


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

# Ein btrfs-Dateisystem auf einem Gerät erstellen
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

# Grundlegendes Einhängen
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

# Subvolume erstellen
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

# Snapshot erstellen
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

# Detaillierte Speicherplatzinformationen anzeigen
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

# Dateisystem erweitern
sudo btrfs filesystem resize +10G /mnt/btrfs

# Dateisystem verkleinern
sudo btrfs filesystem resize -5G /mnt/btrfs

Datenintegritätsprüfung

Dateisystem überprüfen

Beispiel

# Nur-Lese-Prüfung
sudo btrfs check /dev/sdX

# Reparatur versuchen (mit Vorsicht verwenden)
sudo btrfs check --repair /dev/sdX

Bereinigung und Reparatur

Beispiel

# Freien Speicherplatz bereinigen
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

# Eine Partition erstellen
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

#!/bin/bash
# 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

# Den Speicherplatz prüfen, den nicht gelöschte Snapshots belegen
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

# Balance-Status prüfen
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

# Dateisystem prüfen
sudo btrfs check /dev/sdX

# Reparatur versuchen
sudo btrfs rescue zero-log /dev/sdX
sudo mount /dev/sdX /mnt/btrfs

Best-Practice-Empfehlungen

  1. Komprimierung aktivieren: Besonders für komprimierbare Daten wie Text und Logs

    # 推荐使用 zstd 压缩算法
    mount -o compress=zstd /dev/sdX /mnt/btrfs
  2. Regelmäßig Snapshots erstellen: Vor wichtigen Vorgängen manuell Snapshots erstellen

  3. Speicherplatznutzung überwachen: Die Speicherplatzberichterstattung von btrfs unterscheidet sich von traditionellen Dateisystemen

  4. Vermeiden, zu 100% voll zu sein: Mindestens 5-10% freien Speicherplatz beibehalten

  5. Balance mit Vorsicht verwenden: Nur bei Bedarf ausführen, da es sehr zeitaufwendig sein kann

  6. RAID-Konfiguration in Betracht ziehen: RAID1 oder RAID10 für wichtige Daten verwenden

  7. 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.


Linux 命令大全Linux-Befehlsreferenz

Andere Erweiterungen