Команда Linux btrfs

Linux 命令大全Справочник команд Linux


Btrfs (B-tree File System) — это продвинутая файловая система Linux, разработанная Oracle и впервые выпущенная в 2007 году. Её цель — решить ограничения традиционных файловых систем, обеспечивая лучшую масштабируемость, надёжность и возможности управления.

Основные возможности

  • Копирование при записи (CoW): Все операции записи не перезаписывают существующие данные, а вместо этого создают новые копии
  • Функциональность снимков: Позволяет быстро создавать мгновенные снимки файловой системы, почти не занимая дополнительного пространства
  • Управление подтомами: Поддерживает разделение файловой системы на несколько независимых подтомов
  • Контрольные суммы данных: Автоматически обнаруживает повреждение данных
  • Прозрачное сжатие: Поддерживает сжатие и распаковку данных файлов в реальном времени
  • Поддержка RAID: Встроенная поддержка нескольких уровней RAID

Базовый синтаксис команд btrfs

btrfs [选项]  [子命令选项] [参数]

Общие параметры

Опция Описание
-v Подробный режим вывода
--help Показать справочную информацию
--version Показать информацию о версии

Объяснение основных подкоманд

Создание файловой системы и управление ею

Создание файловой системы btrfs

Пример

# Создать файловую систему btrfs на устройстве
sudo mkfs.btrfs /dev/sdX

# Создать файловую систему с меткой
sudo mkfs.btrfs -L mylabel /dev/sdX

# Создание RAID1 с использованием нескольких устройств
sudo mkfs.btrfs -m raid1 -d raid1 /dev/sdX /dev/sdY

Монтирование файловой системы btrfs

Пример

# Базовое монтирование
sudo mount /dev/sdX /mnt/btrfs

# Включение сжатия (рекомендуется lzo или zstd)
sudo mount -o compress=lzo /dev/sdX /mnt/btrfs

# Показать параметры монтирования
mount | grep btrfs

Операции с подтомами

Создание подтома

Пример

# Создать подтом
sudo btrfs subvolume create /mnt/btrfs/subvol1

# Список подтомов
sudo btrfs subvolume list /mnt/btrfs

# Удалить подтом
sudo btrfs subvolume delete /mnt/btrfs/subvol1

Управление снимками

Пример

# Создать снимок
sudo btrfs subvolume snapshot /mnt/btrfs /mnt/btrfs/snapshot_$(date +%Y%m%d)

# Снимок только для чтения
sudo btrfs subvolume snapshot -r /mnt/btrfs /mnt/btrfs/readonly_snap

# Удалить снимок
sudo btrfs subvolume delete /mnt/btrfs/snapshot_20230101

Управление пространством

Просмотр использования файловой системы

Пример

# Показать подробную информацию о пространстве
sudo btrfs filesystem usage /mnt/btrfs

# Показать использование диска
sudo btrfs filesystem df /mnt/btrfs

# Балансировка распределения данных (используйте с осторожностью, может занять много времени)
sudo btrfs balance start /mnt/btrfs

Изменение размера файловой системы

Пример

# Расширение файловой системы
sudo btrfs filesystem resize +10G /mnt/btrfs

# Уменьшение файловой системы
sudo btrfs filesystem resize -5G /mnt/btrfs

Проверка целостности данных

Проверка файловой системы

Пример

# Проверка только для чтения
sudo btrfs check /dev/sdX

# Попытка восстановления (используйте с осторожностью)
sudo btrfs check --repair /dev/sdX

Очистка и восстановление

Пример

# Очистка свободного места
sudo btrfs filesystem defrag /mnt/btrfs

# Проверка и восстановление файловой системы
sudo btrfs scrub start /mnt/btrfs

# Просмотр состояния восстановления
sudo btrfs scrub status /mnt/btrfs

Примеры практического применения

Пример 1: Настройка домашнего каталога btrfs со сжатием

Пример

# Создание раздела
sudo mkfs.btrfs -L home /dev/sdX

# Монтирование и включение сжатия
sudo mount -o compress=zstd /dev/sdX /mnt/newhome

# Копировать существующие данные
sudo rsync -avx /home/ /mnt/newhome/

# Обновить fstab для включения автоматического монтирования
echo "UUID=$(blkid -s UUID -o value /dev/sdX) /home btrfs defaults,compress=zstd 0 2" | sudo tee -a /etc/fstab

# Перемонтировать
sudo umount /mnt/newhome
sudo mount -a

Пример 2: Регулярные снимки и очистка

Пример

#!/bin/bash
# Создать ежедневные снимки
SNAP_DIR="/mnt/btrfs/.snapshots"
mkdir -p "$SNAP_DIR"
sudo btrfs subvolume snapshot -r /mnt/btrfs "$SNAP_DIR/$(date +%Y%m%d)"

# Хранить снимки за последние 7 дней
find "$SNAP_DIR" -mindepth 1 -maxdepth 1 -type d -name "2*" | sort -r | tail -n +8 | xargs -r sudo btrfs subvolume delete

Решение распространённых проблем

Проблема 1: Недостаточно места, но df показывает доступное пространство

Пример

# Проверка пространства, занимаемого неудалёнными снимками
sudo btrfs subvolume list -s /mnt/btrfs

# Очистка ненужных снимков
sudo btrfs subvolume delete /mnt/btrfs/old_snapshot

Проблема 2: Операция балансировки зависла

Пример

# Проверить состояние балансировки
sudo btrfs balance status /mnt/btrfs

# Приостановить операцию балансировки
sudo btrfs balance pause /mnt/btrfs

# Возобновить операцию балансировки
sudo btrfs balance resume /mnt/btrfs

Проблема 3: Сбой монтирования

Пример

# Проверить файловую систему
sudo btrfs check /dev/sdX

# Попытаться восстановить
sudo btrfs rescue zero-log /dev/sdX
sudo mount /dev/sdX /mnt/btrfs

Рекомендации по лучшим практикам

  1. Включите сжатие: особенно для сжимаемых данных, таких как текст и журналы

    # 推荐使用 zstd 压缩算法
    mount -o compress=zstd /dev/sdX /mnt/btrfs
  2. Регулярно создавайте снимки: Вручную создавайте снимки перед важными операциями

  3. Следите за использованием пространства: отображение информации о пространстве btrfs отличается от традиционных файловых систем

  4. Избегайте 100% заполнения: Оставляйте не менее 5-10% свободного пространства

  5. Используйте balance с осторожностью: Запускайте только при необходимости, так как это может занять очень много времени

  6. Рассмотрите конфигурацию RAID: Используйте RAID1 или RAID10 для важных данных

  7. Регулярно выполняйте scrub: Проверяйте целостность данных

    # 每月执行一次数据检查
    sudo btrfs scrub start /mnt/btrfs

Прочитав эту статью, вы должны были освоить основные операции и методы управления файловой системой btrfs. Мощные возможности btrfs делают её идеальным выбором для современных систем Linux, особенно подходящим для сценариев, требующих расширенных функций хранения.


Linux 命令大全Справочник команд Linux

Другие расширения