Victor3D

Как выполнить дедупликацию Btrfs с помощью Arch Linux Boot CD

Подготовка

Загрузка с Arch Linux ISO

# После загрузки, подключите интернет (если нужен)
iwctl  # для Wi-Fi

Подключение Btrfs разделов

# Просмотр разделов
fdisk -l
lsblk -f

# Монтирование раздела
mount /dev/sdXY /mnt  # замените sdXY на ваш раздел

# Для нескольких субволюмов (если используется)
mount -o subvol=@ /dev/sdXY /mnt
mount -o subvol=@home /dev/sdXY /mnt/home

Установка инструментов дедупликации

# Синхронизация репозиториев
pacman -Sy

# Установка необходимых пакетов
pacman -S btrfs-progs duperemove

Варианты дедупликации

Вариант A: Использование duperemove (рекомендуется)

# Анализ дубликатов без изменений
duperemove -rdh /mnt/path/to/directory

# Запуск дедупликации
duperemove -drh /mnt/path/to/directory

Вариант B: Использование bees (фоновая дедупликация)

# Установка bees
pacman -S bees

# Запуск для смонтированной файловой системы
bees --no-timestamps /mnt

Вариант C: Использование compsize для анализа

# Установка и анализ
pacman -S compsize
compsize -x /mnt/path/to/directory

Полная проверка и дедупликация

# Проверка файловой системы перед операциями
btrfs scrub start /mnt
btrfs scrub status /mnt

# Поиск дубликатов по хэшам (только чтение)
btrfs filesystem du -s /mnt/*

# Дефрагментация (перед дедупликацией может быть полезно)
btrfs filesystem defragment -r /mnt/path

Сценарии использования

Для домашнего каталога:

duperemove -drh /mnt/home/

Для всей системы:

duperemove -drh /mnt/

С ограничением использования памяти:

duperemove --hashfile=/tmp/hashes.dat --io-threads=2 /mnt/

Монтирование с опцией дедупликации

После дедупликации можно монтировать с опцией для предотвращения повторной дупликации:

mount -o compress=zstd,autodefrag,space_cache=v2 /dev/sdXY /mnt

Проверка результатов

# Проверка свободного места
btrfs filesystem usage /mnt

# Детальная статистика
btrfs filesystem df /mnt

Важные предупреждения:

  1. Бэкап данных - всегда делайте бэкап важных данных
  2. Свободное место - для дедупликации нужно свободное место (10-20%)
  3. Время операции - процесс может занять много времени
  4. Не прерывать - не прерывайте процесс дедупликации

Автоматизация (для будущего использования):

Создайте скрипт /usr/local/bin/btrfs-dedup:

#!/bin/bash
mountpoint=$1
echo "Starting deduplication on $mountpoint"
duperemove -drh "$mountpoint"
btrfs balance start -dusage=5 "$mountpoint"
echo "Deduplication complete"

После выполнения не забудьте перезагрузиться в свою систему:

umount -R /mnt
reboot