Домашний NAS часто собирают из дисков разного размера, купленных в разное время. Классический RAID в такой ситуации неудобен: он требует одинаковых дисков, перестраивается часами и не спасает от тихой порчи данных. SnapRAID предлагает другой компромисс — защиту на основе снимков и чётности, без RAID-контроллера и без переформатирования уже заполненных дисков.

Чем SnapRAID отличается от RAID

RAID работает в реальном времени: каждый блок данных сразу дублируется или защищается чётностью. SnapRAID считает чётность по расписанию, по снимку состояния файлов. Это значит, что новые файлы защищены только после snapraid sync, а не в момент записи. Зато массив не «сыпется» целиком, диски могут быть разного размера, а данные остаются обычными файлами на обычных файловых системах.

SnapRAID — не замена резервному копированию. Он защищает от отказа диска и частично от битых секторов, но не от пожара, кражи, шифровальщика или ошибочного rm -rf, если изменение уже попало в чётность. Правильная схема: SnapRAID на основном массиве плюс отдельная копия важных данных на другом носителе или в другом месте.

Что понадобится

  • Один или несколько дисков чётности не меньше самого большого диска данных.
  • Диски данных с обычной ФС (ext4, XFS, Btrfs) и постоянными точками монтирования.
  • Контроль питания: при отключении электричества синхронизация может прерваться.
  • Мониторинг SMART и свободного места.

Чётность можно хранить на нескольких дисках: один защищает от одного отказа, два — от двух. Больше трёх уровней в домашней системе нужно редко, но SnapRAID поддерживает до шести. Главное правило: диск чётности не должен быть меньше самого большого диска с данными.

Разметка и монтирование

Сначала наведите порядок в именах: /dev/sdb может поменяться после перезагрузки. Используйте UUID в /etc/fstab и отдельные каталоги вида /srv/disk1, /srv/disk2, /srv/parity. Проверьте, что каждый диск действительно смонтирован, а не просто существует пустая точка монтирования.

lsblk -f
sudo blkid
sudo mkdir -p /srv/disk1 /srv/disk2 /srv/parity
for d in /srv/disk1 /srv/disk2 /srv/parity; do findmnt --target "$d"; done

Пример строки fstab для ext4: UUID=... /srv/disk1 ext4 defaults,noatime 0 2. После правки выполните sudo systemctl daemon-reload и sudo mount -a, затем ещё раз проверьте findmnt. Ошибка в fstab, из-за которой диск не поднялся, — самая частая причина «внезапной потери» данных при синхронизации.

Установка и конфигурация

В Debian и Ubuntu SnapRAID есть в репозитории. Дополнительно поставьте smartmontools, чтобы видеть здоровье дисков.

sudo apt update
sudo apt install -y snapraid smartmontools
snapraid --version
sudo systemctl enable --now smartd

Конфигурация хранится в /etc/snapraid.conf. Минимальный пример с двумя дисками данных и одним диском чётности:

parity /srv/parity/snapraid.parity
content /var/snapraid/snapraid.content
content /srv/disk1/snapraid.content
content /srv/disk2/snapraid.content
data d1 /srv/disk1
data d2 /srv/disk2
exclude *.tmp
exclude *.unrecoverable
exclude /lost+found/
autosave 500

Файлы content — это индекс. Держите несколько копий: на диске чётности и на каждом диске данных. Если один индекс повреждён, SnapRAID возьмёт другой. Строка autosave управляет сохранением состояния во время длинных операций; значение можно оставить по умолчанию.

Первый снимок и синхронизация

Сначала посмотрите, что изменилось. diff показывает добавленные, изменённые и удалённые файлы и ничего не пишет на диск. Это безопасная операция, с которой стоит начинать каждую проверку.

sudo snapraid diff
sudo snapraid sync
sudo snapraid status
sudo snapraid smart

Первый sync читает все данные и создаёт чётность — на массиве в несколько терабайт это может занять ночь. Не прерывайте процесс без необходимости. После завершения status покажет покрытие, количество файлов и последнюю синхронизацию, а smart — температуру и переназначенные сектора.

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

Чётность бесполезна, если она сама повреждена. scrub читает блоки, сверяет хэши и при необходимости исправляет данные по чётности. Запускайте его небольшими порциями, чтобы не изнашивать диски и не мешать работе.

sudo snapraid scrub -p 10 -o 30
sudo snapraid check
sudo snapraid status -v

-p 10 означает проверить около 10% массива, -o 30 — брать блоки, не проверявшиеся 30 дней. Полный check полезен перед важным обновлением, но он читает весь массив и занимает много времени. Результаты сохраняйте в журнал.

Восстановление после отказа

Если диск данных вышел из строя, не меняйте конфигурацию сразу. Установите новый диск, создайте на нём файловую систему, смонтируйте в ту же точку и убедитесь, что запись ведётся именно туда. Затем выполните восстановление отсутствующих файлов.

sudo snapraid fix -m
sudo snapraid fix -f /srv/disk1/photo/2025/album.raw
sudo snapraid status

-m восстанавливает все отсутствующие файлы, -f — один конкретный. Если диск не отказал полностью, а лишь имеет плохие сектора, сначала снимите с него всё читаемое, и только потом запускайте восстановление. После восстановления обязательно сделайте sync, иначе чётность останется в старом состоянии.

Автоматизация и защита от ошибок

Ручной запуск легко забыть. Сделайте скрипт с блокировкой, чтобы два процесса не работали одновременно, и запускайте его по таймеру systemd. Перед синхронизацией проверяйте, что диски смонтированы: если точка монтирования пуста, sync может решить, что файлы удалены.

#!/bin/sh
set -eu
mountpoint -q /srv/disk1 && mountpoint -q /srv/disk2 && mountpoint -q /srv/parity
snapraid diff
snapraid sync
snapraid scrub -p 5 -o 30

В таймере задайте ночное время и Persistent=true, чтобы пропущенный запуск выполнился после включения. Логи складывайте в /var/log/snapraid/ и настройте ротацию. Если diff показывает слишком много удалений, остановитесь и разберитесь: возможно, диск не смонтировался или приложение пишет не туда.

Типичные ошибки

  • Хранить чётность на том же физическом диске, что и данные.
  • Запускать sync при несмонтированном диске данных.
  • Считать SnapRAID резервной копией и не иметь второй копии.
  • Игнорировать SMART и перегрев дисков.
  • Менять размер или порядок дисков в конфигурации без пересоздания чётности.

Итог

SnapRAID даёт домашнему массиву защиту от отказа диска без RAID-контроллера, без переформатирования и без жёсткой привязки к одинаковым накопителям. Он требует дисциплины: аккуратного fstab, регулярного sync, периодического scrub и отдельной резервной копии. Если относиться к нему как к инструменту защиты от сбоя железа, а не как к волшебной замене backup, он годами работает предсказуемо и без сюрпризов.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте