Привет, я новичок в использовании Proxmox, но у меня большой опыт работы с Btrfs. Поэтому я решил использовать Btrfs для всех томов везде. У меня домашняя лаборатория с кучей старых компьютеров и жестких дисков, и мне нужно простое решение, которое легко работало бы с ними и с Proxmox. Выбрал Btrfs, потому что диски могут быть любого размера, не совпадать по объему и быть разных типов, включая подключенные через USB – Btrfs с ними разберется без проблем. Общий размер массива RAID1 для Btrfs – это просто сумма размеров всех несовпадающих дисков, деленная на 2. Поскольку у меня было 3 диска для резервного копирования объемом 1ТБ, 512ГБ и 512ГБ, общий полезный объем составил 1ТБ. Кроме того, я хотел использовать сжатие, чтобы сэкономить место на диске для резервных копий, помимо дедупликации чанков, которую уже выполняет PBS.
Вот что я выяснил относительно Proxmox:
Некоторые настройки Proxmox по умолчанию не идеальны и должны быть изменены при использовании Btrfs.
**Настройка:** NAS, который хранит мои ВМ, подключен по кабелю RJ45 со скоростью 2.5Гб. Он используется для общего хранилища и работает на массиве Btrfs RAID1 из 3 дисков. Это общее хранилище, к которому узлы Proxmox могут подключаться, чтобы находить и запускать ВМ. Это может быть любой NAS, например OMV, Unraid, Debian с SMB и т.д. Главное, чтобы он был доступен со всех узлов. Поскольку для общего хранилища используется сетевое подключение и оно ограничено 2.5 гигабита, я использовал SMB вместо iSCSI или NFS. Другой смысл не вижу, а SMB прост и работает на основе разрешений, что мне нравится. Настройка NAS – дело несложное, думаю, большинство из вас уже имеет NAS.
**Узлы:** Пока у меня только один узел — старый Mac Pro 2013 года с Xeon и 64 ГБ ECC RAM. Команда `cat /proc/cpuinfo` показывает следующее:
```
model name : Intel® Xeon® CPU E5-1620 v2 @ 3.70GHz
```
Для запуска 3 ВМ в моей сети этого вполне достаточно. При установке Proxmox я выбрал весь встроенный диск (256ГБ NVME) и Btrfs. После завершения установки команда `btrfs filesystem usage -T /` показала неоптимальные настройки. Metadata был установлен в "single", что означает, что в случае ошибки метаданных (что может случиться разными способами), весь диск будет поврежден. Настраивать так не рекомендуется, и для Btrfs минимально необходимо установить метаданные в DUP. Я установил для всего диска DUP, потому что он не нужен локально, кроме как для загрузки Proxmox VE, а место не имеет значения. Для этого использовалась команда:
```
btrfs balance start -dconvert=DUP -mconvert=DUP /
```
После этого команда `btrfs fs usage` снова покажет DUP, что особенно важно для метаданных. Я бы рекомендовал изменить процесс установки Proxmox, чтобы по умолчанию устанавливать DUP для метаданных, если Btrfs будет поддерживаться.
Как только это было сделано, я добавил 3 диска в RAID1 для создания места для резервного копирования Proxmox и установил `apt-get install proxmox-backup proxmox-backup-server`. Мне пришлось добавить несколько репозиториев в sources.list, чтобы завершить установку, но в целом настройка была довольно простой и представляла собой обычную установку Proxmox VE с запущенным PBS на той же машине. Просто нужно было добавить общий SMB-ресурс для ВМ и т.д.
Для места для резервных копий я создал список из 3 диска, используя `lsblk`, а затем очистил и добавил их в пул с помощью:
```
mkfs.btrfs -m raid1 -d raid1 -L My-Storage /dev/sdb /dev/sdc /dev/sdd -f
```
Создал точку монтирования с помощью `mkdir /mnt/my-storage`, перечислил первый диск в RAID1 с помощью `blkid`, и затем смонтировал их, используя `fstab`:
```
UUID=TypeUUIDFromblkidHere /mnt/my-storage btrfs defaults,compress=lzo,discard=async,space_cache=v2 0 2
```
Затем выполнил `mount -a && systemctl daemon-reload`.
Для резервного копирования просто войдите и добавьте хранилище, указав абсолютный путь, например `/mnt/my-storage`, установите параметры отсечения и т.д. Добавьте это в PVE для резервного копирования и затем установите расписание, как обычно.
Успешность сжатия варьируется, но общее выделение места на диске составляет 92ГБ + 166ГБ + 76ГБ + 41ГБ дисков, выделенных для 3 ВМ = 375ГБ. После нескольких тестовых запусков размер резервной копии составил 280ГБ, что соответствует ожидаемым результатам.
Касательно поддержания Btrfs (вышедший из строя диск в наборе резервных копий) замена диска проста, например:
```
btrfs device remove /dev/sdc /mnt/my-storage/
```
(выключите сервер и замените диск)
```
btrfs device add /dev/sdc /mnt/my-storage/ -f
```
Запустите балансировку и очистку. Если диск полностью сломан, используйте `btrfs replace` вместо `remove and add`. Если только 2 диска, вы не можете использовать удаление и добавление.
Для обслуживания томов Btrfs у меня есть еженедельный cron-запуск, который запускает этот скрипт:
```
#!/bin/bash
date > /mnt/my-storage/logs/BalanceScrub.log
btrfs scrub status /mnt/my-storage/ >> /mnt/my-storage/logs/BalanceScrub.log
btrfs fi show /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
btrfs filesystem usage -T /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
echo ----startbalance---- >> /mnt/my-storage/logs/BalanceScrub.log
btrfs balance start -v -dusage=75 -musage=75 /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
echo ----endbalance---- >> /mnt/my-storage/logs/BalanceScrub.log
echo ----startscrub---- >> /mnt/my-storage/logs/BalanceScrub.log
btrfs scrub start /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
echo ----endscrub---- >> /mnt/my-storage/logs/BalanceScrub.log
btrfs fi show /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
btrfs filesystem usage -T /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
date >> /mnt/my-storage/logs/BalanceScrub.log
```
Это гарантирует самовосстановление любых битрот или поврежденных файлов, и вы можете настроить свои скрипты для отправки почты при их запуске, если хотите. Просто подумал, стоит ли поделиться этим в случае, если кто-то еще хочет использовать Btrfs и нуждается в помощи. Если у вас есть какие-либо вопросы, спрашивайте —P
Вот что я выяснил относительно Proxmox:
Некоторые настройки Proxmox по умолчанию не идеальны и должны быть изменены при использовании Btrfs.
**Настройка:** NAS, который хранит мои ВМ, подключен по кабелю RJ45 со скоростью 2.5Гб. Он используется для общего хранилища и работает на массиве Btrfs RAID1 из 3 дисков. Это общее хранилище, к которому узлы Proxmox могут подключаться, чтобы находить и запускать ВМ. Это может быть любой NAS, например OMV, Unraid, Debian с SMB и т.д. Главное, чтобы он был доступен со всех узлов. Поскольку для общего хранилища используется сетевое подключение и оно ограничено 2.5 гигабита, я использовал SMB вместо iSCSI или NFS. Другой смысл не вижу, а SMB прост и работает на основе разрешений, что мне нравится. Настройка NAS – дело несложное, думаю, большинство из вас уже имеет NAS.
**Узлы:** Пока у меня только один узел — старый Mac Pro 2013 года с Xeon и 64 ГБ ECC RAM. Команда `cat /proc/cpuinfo` показывает следующее:
```
model name : Intel® Xeon® CPU E5-1620 v2 @ 3.70GHz
```
Для запуска 3 ВМ в моей сети этого вполне достаточно. При установке Proxmox я выбрал весь встроенный диск (256ГБ NVME) и Btrfs. После завершения установки команда `btrfs filesystem usage -T /` показала неоптимальные настройки. Metadata был установлен в "single", что означает, что в случае ошибки метаданных (что может случиться разными способами), весь диск будет поврежден. Настраивать так не рекомендуется, и для Btrfs минимально необходимо установить метаданные в DUP. Я установил для всего диска DUP, потому что он не нужен локально, кроме как для загрузки Proxmox VE, а место не имеет значения. Для этого использовалась команда:
```
btrfs balance start -dconvert=DUP -mconvert=DUP /
```
После этого команда `btrfs fs usage` снова покажет DUP, что особенно важно для метаданных. Я бы рекомендовал изменить процесс установки Proxmox, чтобы по умолчанию устанавливать DUP для метаданных, если Btrfs будет поддерживаться.
Как только это было сделано, я добавил 3 диска в RAID1 для создания места для резервного копирования Proxmox и установил `apt-get install proxmox-backup proxmox-backup-server`. Мне пришлось добавить несколько репозиториев в sources.list, чтобы завершить установку, но в целом настройка была довольно простой и представляла собой обычную установку Proxmox VE с запущенным PBS на той же машине. Просто нужно было добавить общий SMB-ресурс для ВМ и т.д.
Для места для резервных копий я создал список из 3 диска, используя `lsblk`, а затем очистил и добавил их в пул с помощью:
```
mkfs.btrfs -m raid1 -d raid1 -L My-Storage /dev/sdb /dev/sdc /dev/sdd -f
```
Создал точку монтирования с помощью `mkdir /mnt/my-storage`, перечислил первый диск в RAID1 с помощью `blkid`, и затем смонтировал их, используя `fstab`:
```
UUID=TypeUUIDFromblkidHere /mnt/my-storage btrfs defaults,compress=lzo,discard=async,space_cache=v2 0 2
```
Затем выполнил `mount -a && systemctl daemon-reload`.
Для резервного копирования просто войдите и добавьте хранилище, указав абсолютный путь, например `/mnt/my-storage`, установите параметры отсечения и т.д. Добавьте это в PVE для резервного копирования и затем установите расписание, как обычно.
Успешность сжатия варьируется, но общее выделение места на диске составляет 92ГБ + 166ГБ + 76ГБ + 41ГБ дисков, выделенных для 3 ВМ = 375ГБ. После нескольких тестовых запусков размер резервной копии составил 280ГБ, что соответствует ожидаемым результатам.
Касательно поддержания Btrfs (вышедший из строя диск в наборе резервных копий) замена диска проста, например:
```
btrfs device remove /dev/sdc /mnt/my-storage/
```
(выключите сервер и замените диск)
```
btrfs device add /dev/sdc /mnt/my-storage/ -f
```
Запустите балансировку и очистку. Если диск полностью сломан, используйте `btrfs replace` вместо `remove and add`. Если только 2 диска, вы не можете использовать удаление и добавление.
Для обслуживания томов Btrfs у меня есть еженедельный cron-запуск, который запускает этот скрипт:
```
#!/bin/bash
date > /mnt/my-storage/logs/BalanceScrub.log
btrfs scrub status /mnt/my-storage/ >> /mnt/my-storage/logs/BalanceScrub.log
btrfs fi show /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
btrfs filesystem usage -T /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
echo ----startbalance---- >> /mnt/my-storage/logs/BalanceScrub.log
btrfs balance start -v -dusage=75 -musage=75 /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
echo ----endbalance---- >> /mnt/my-storage/logs/BalanceScrub.log
echo ----startscrub---- >> /mnt/my-storage/logs/BalanceScrub.log
btrfs scrub start /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
echo ----endscrub---- >> /mnt/my-storage/logs/BalanceScrub.log
btrfs fi show /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
btrfs filesystem usage -T /mnt/my-storage >> /mnt/my-storage/logs/BalanceScrub.log
date >> /mnt/my-storage/logs/BalanceScrub.log
```
Это гарантирует самовосстановление любых битрот или поврежденных файлов, и вы можете настроить свои скрипты для отправки почты при их запуске, если хотите. Просто подумал, стоит ли поделиться этим в случае, если кто-то еще хочет использовать Btrfs и нуждается в помощи. Если у вас есть какие-либо вопросы, спрашивайте —P
