Как выполнить дедупликацию 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
Важные предупреждения:
- Бэкап данных - всегда делайте бэкап важных данных
- Свободное место - для дедупликации нужно свободное место (10-20%)
- Время операции - процесс может занять много времени
- Не прерывать - не прерывайте процесс дедупликации
Автоматизация (для будущего использования):
Создайте скрипт /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