Введение:

Snapraid – это софтовый рейд, который позволяет собрать себя из жестких дисков разного размера. Так-же если не специально удалили информацию, то её всегда можно будет восстановить. Диск четности должен быть равен размеру самого большого диска в рейде.

Вот определение написанное на сайте SnapRaid:

  • Вы можете использовать диски, уже заполненные файлами, без необходимости их переформатирования, получая к ним доступ как обычно.
  • Все ваши данные хешируются для обеспечения целостности данных и предотвращения скрытого повреждения.
  • Когда количество неисправных дисков превышает количество четности, потеря данных ограничивается затронутыми дисками; данные на других дисках остаются доступными.
  • Если вы случайно удалили файлы на диске, их можно восстановить.
  • Диски могут иметь разные размеры.
  • Вы можете добавлять диски в любое время.
  • SnapRAID не блокирует ваши данные; вы можете прекратить его использование в любое время без переформатирования или перемещения данных.
  • Для доступа к файлу достаточно вращения только одного диска, что экономит электроэнергию и снижает уровень шума.

Такой рейд отлично подойдёт для дома, так как наверняка у Вас завалялись старые жесткие диски. И вот все эти диски наверняка разных размеров. А тут мы сможем их использовать в сервере, да еще и в отказоустойчивом рейде.

 

С рейдом для домашнего сервера разобрались, а какой использовать сервер умного дома? Конечно-же на Proxmox.

На Proxmox можем кучу виртуалок разных ставить таких как Home Assistant, xpnology, pfsense и прочее прочее. А так как будет у нас еще и рейд, то за безопасность виртуалок можем не беспокоиться.

 

Ну а Snapraid легче всего настраивать в графическом интерфейсе и такая возможность есть у сервиса OpenMediaVault.

Вот какое определение пишут на официальном сайте:

openmediavault — это сетевое хранилище (NAS) следующего поколения на базе Debian Linux. Оно содержит такие службы, как SSH, (S)FTP, SMB/CIFS, RSync и многие другие, готовые к использованию. Благодаря модульной конструкции фреймворка его можно расширить с помощью плагинов. openmediavault в первую очередь предназначен для использования в небольших офисах или домашних офисах, но не ограничивается этими сценариями. Это простое и удобное в использовании готовое решение, которое позволит каждому установить и администрировать сетевое хранилище без глубоких знаний.

И вот плагин дополнительный плагин и будем устанавливать Snapraid. И кстати OpenMediaVault уже можно использовать как домашний NAS. Что тоже не плохим бонусом буде.

 

Собственно по итогу у нас получится Отказоустойчивый домашний сервер с Proxmox и OpenMediaVault на борту.

 

Установка Proxmox:

Устанавливаем proxmox. На момент написания статьи это 8.2

С Proxmox тут все просто, уже везде описано по много раз как его устанавливать. Для начала скачиваем proxmox .iso образ отсюда: https://www.proxmox.com/en/downloads

Далее делаем загрузочную флешку и устанавливаем этот Proxmox с загрузочной флешки на сервер.

Тут выбираем диск на который будем устанавливать ОС Proxmox – диск должен быть отдельный от рейда который мы будем собирать в дальнейшем. У меня отдельный диск это NVME вставлена в M2 разъем в материнке:

На следующем скрине выбираем Страну, часовой пояс и клавиатуру:

Далее создаем пароль для учетной записи root и вписываем почту куда будет слать предупреждения proxmox в случае чего:

Ну и последним шагом придумываем название сервера, он должен состоять из .local на конце. можно брать пример из скрина ниже. Так-же указываем ip адрес, который хотим чтоб получило устройство, маску, шлюз и днс сервер и нажимаем далее:

После этого появится информация со всеми настройками которые вы указали. Если все верно, то нажимаем кнопку Install и Ваш сервер Proxmox готов.

Теперь можно в браузере вбить https://ip адресс вашего сервера:8006 и откроется окно proxmox и далее можете уже управлять вашим сервером.

 

Но мы же хотим всетаки рейд из старых но целых завалявшихся дисков. По этому идём дальше.

 

Установка OpenMediaVault:

Установку Openmediavault взял с их сайта отсюда https://docs.openmediavault.org/en/latest/installation/on_debian.html, но не совершал последние шаги. В общем погнали:

Установка связки ключей для OpenMediaVault:

apt-get install --yes gnupg
wget --quiet --output-document=- https://packages.openmediavault.org/public/archive.key | gpg --dearmor --yes --output "/usr/share/keyrings/openmediavault-archive-keyring.gpg"

 

Далее добавляем репозиторий для установки OpenMediaVault:

nano /etc/apt/sources.list.d/openmediavault.list

И вставляем туда репозиторий:

deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://packages.openmediavault.org/public sandworm main

Экспортируем три параметра по очереди:

Раз:

export LANG=C.UTF-8

Два:

export DEBIAN_FRONTEND=noninteractive

Три:

export APT_LISTCHANGES_FRONTEND=none

Обновляем пакеты:
apt-get update

Следующей командой устанавливаем Openmediavailt (команду вставлять полностью):
apt-get --yes --auto-remove --show-upgraded --allow-downgrades --allow-change-held-packages --no-install-recommends --option DPkg::Options::="--force-confdef" --option DPkg::Options::="--force-confold" install openmediavault

 

На этом установка OpenMediaVault закончена. Теперь введя ip адрес в браузер “без порта” или порт :80 и у нас откроется Web интерфейс OMV.

Логин у него стандартный: admin

Пароль у него стандартный: openmediavault

Поздравляю Вы установили Openmediavault. Но есть одно “Но”. Дело в том, что и Proxmox и OpenMediaVault являются серьезными продуктами которые оба управлять могут сетью сервера и они пытаются забрать управление настройками и из-за этого у Вас ломается DNS после установи Openmediavault.

По этому идём в Proxmox в настройки DNS и там выставляем DNS Server 1 например гугловский 8.8.8.8:

 

DNS починили, теперь он не будет сбиваться и давайте теперь приступим к установке репозиториев для плагинов к OpenMediaVault.

sudo wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

 

Эта команда взята отсюда: https://github.com/OpenMediaVault-Plugin-Developers/installScript/

 

Теперь можем идти и устанавливать SnapRaid и настраивать его:

 

Установка и Настройка SnapRaid:

Для начала нам нужно все диски которые у нас есть (те самые которые мы хотим использовать в рейде) отформатировать и присвоить им нормальные имена. (Обратите внимания у меня 4 диска 2 по 1 терабайту и два по 500 гб.)

Для этого идем в Хранилище -> Диски и тут выделяя каждый диск нажимаем Очистить.

После того как отформатировали все диски идем в Хранилище -> Файловые системы и создаём каждому диску файловую систему.

После нажатия на плюсик Выбираем EXT4 файловую систему. Выбираем диск который будем форматировать и нажимаем сохранить, после чего пойдёт форматирование этого диска:

После форматирования, следующим окном у Вас появятся краткие настройки этой файловой системы. А именно Вам тут предложит выбрать порог предупреждения, я выставил 95% заполнения. И нужно указать тег диску. Я все диски буду называть по очереди вот так: data1, data2, data3 и четвертый диск назову parity так как этот диск будет диском четности и хранить всю информацию рейда в себе.

 

После каждого такого действия будет выскакивать Оранжевое окно с “Отложенными изменениями конфигурации”, тут нужно после каждого шага не пропускать это окно, а ставить галочку.

 

Ну а вот так будет выглядеть диск parity:

 

По итогу в файловой системе у нас будут вот такие диски:

 

 

Теперь давайте установим snapraid из плагинов. Для этого идём в Система-> Плагины -> snapraid и устанавливаем его.

 

 

И давайте установим еще один плагин под названием mergerfs.

Mergerfs – это утилита которая объединяет все диски которые мы выберем в один логический. Ну то есть вот у нас будет 3 диска 1 терабайт, и два по 500 гб. Данная утилита их объединит в один большой диск размером почти 2 терабайта -классно? вот и я думаю классно.  Так как мы всегда можем разъединить их в случае чего…

По этому устанавливаем:

 

 

Идём теперь настраивать Snapraid. Сервисы-> SnapRaid и тут нажимаем Arrays и создаём Array с именем например “snapraid“.

 

 

Далее идём в Snapraid в Диски и создаём каждый диск по отдельности, но тем дискам которые data1, data2, data3 ставим галочки “содержимое” и “данные“.

 

 

А вот четвертому диску parity мы выбираем “Соотношение” и “Split Parity“.

Собственно все диски в snapraid мы собрали, теперь проверяем все и нажимаем галочку в “Отложенные изменения конфигурации“:

 

После этого идём в mergerfs по пути Хранилище-> mergerfs и создаём там pool в который будут собираться диски. Я его назвал pool1.

Как можете увидеть в FileSystems я выбрал 3 диска data1, data2, data3. А диск Parity я не выбирал, он в пуле не будет участвовать.

Ну и нажимаем кнопку сохранить. А далее “Отложенные изменения конфигурации”  галочку.

 

После создания обратите внимание что в Хранилище -> Файловые системы появилась новая файловая система с именем FUSE.MARGERFS и она у нас аш на 1.79 терабайта. И ей уже можно смело пользоваться и туда писать данные.

 

Путь к этому хранилищу видно /srv/mergerfs/pool1

Я там создал папку pve и туда буду сохранять диски виртуальных машин proxmox.

А для того, чтоб эту папку /srv/mergerfs/pool1/pve добавить в proxmox в качестве диска, нужно зайти в Datacenter->Storege->Add->Directory-> и написать путь дериктории в моём случае это /srv/mergerfs/pool1/pve

 

 

 

Далее я установил на этот диск Home Assistant.

 

После установки Home Assistant можем видеть что места на диске занято 5.39 ГБ, а в диске parity, который /dev/sdd1 там пусто и конечно если диск /dev/sda1 сейчас заменить, то данные мы не восстановим, так как в parity должна храниться информация.

Но в parity snapraid не постоянно записывает данные, а только после выполнения команды:

 

snapraid sync

Но её выполнение в консоли у Вас выдаст ошибку:

Чтоб эту ошибку исправить, нужно выполнить следующую команду:

cp /etc/snapraid/snapraid.conf /etc/snapraid.conf

 

В этом файле /etc/snapraid.conf хранятся данные пула дисков:

И ошибка была в том, что программа snapraid не могла найти snapraid.conf по пути /etc/snapraid.conf а мы этой командой перенесли этот файл по нужному пути и теперь команда snapraid sync сработает.

 

Ну и в web интерфейсе openmediavault мы видим что в диск Parity теперь данных имеет на 32гб (и вот тут не знаю по чему, должен был столько же иметь сколько и занимает места рейд, а именно 5.49 гб, но все равно эта информация на 32 гб имеет всю нужную информацию для восстановления рейда).

 

 

Ну а чтоб постоянно не вводить команду snapraid sync, можно сделать планировщик задач в openmediavault который будет вводить эту команду по расписанию.

Для этого идём в Система-> Планировщик заданий-> создать новое задание

 

Я выбрал Ежедневно и указал команду snapraid sync.

Теперь эта команда будет сама запускаться раз в сутки.

На этом настройка Snapraid завершена. Можем пользоваться и радоваться большим появившимся пространством.

Но рейд для чего делают? Совсем не для того, чтоб увеличить пространство верно? Его делают для восстановления данных в случае потери диска.

Вот давайте с эмитируем выход из строя одного жесткого диска.

 

Восстановление данных в Snapraid:

У меня вся информация судя по файловому менеджеру лежит на диске data1 который на 1 терабайт. Давайте вот я его вытащу.

После вытаскивания диска и запуска системы, в proxmox не стартанула операционка с Home Assistant:

Написала ошибку, что диск не найден.

В Openmediavault в “Файловые системы” тоже видим что диск в статусе “Missing“.

 

Ну чтож бывает. Давайте вставим другой диск в замен вышедшему (я поставлю диск 500гб, так как нет такого же по размеру, но вот snapraid и такой “скушает” и восстановит информацию.

Диск вставлен, идём в Хранилище->Диски и видим там новый диск:

Делаем все как и в начале, выбираем этот диск и нажимаем ластик чтоб отформатировать данный диск.

 

Далее идём в Хранилище-> Файловые системы -> Создать и создаём новую файловую систему EXT4 для этого диска:

 

И так-же его назовём data1:

 

И вот диск у нас в строю но не используется.

 

 

Далее идём в Сервисы->SnapRaid и тут тыкаем по диску data1 и нажимаем кнопку изменить и выбираем там новый диск.

 

Далее идём в Хранилище-> margerfs там выбираем наш созданный pool1 и так-же нажимаем кнопку изменить:

 

Здесь нужно в пункте Filesystem выбрать новый диск наш data1, а в Paths удалить данные старого диска.

Имя старого диска можно посмотреть зайдя в консоль и выполним команду:

cat /etc/snapraid.conf

или вбив команду:

lsblk

и в содержимом посмотреть как называются диски и тот которого нет в выводе и нужно удалить.

Но к сожалению это еще не все. По какой-то причине данные диска data1 в файле /etc/snapraid.conf остаются старые. По этому надо перейти в этот файл и заменить данные старого диска на новые:

nano /etc/snapraid.conf

Вот выделенное на скрине нужно заменить:

А информацию диска можно посмотреть все той же командой

lsblk

Мы же помним, что новый диск data1 у нас /dev/sda по этому sda и смотрим диск:

Еще эти данные можно посмотреть в web интерфейсе openmediavault в mergerfs:

 

Вот эти данные берем и вставляем  куда относится data1 в файле /etc/snapraid.conf

nano /etc/snapraid.conf

На скрине ниже уже вставлены новые данные:

 

На этом настройка диска закончена, Вам может показаться что ужас ужас, все сложно и много действий. Но на самом деле тут все просто и понятно, и ничего сложного нет.

Теперь давайте приступим к восстановлению данных:

Для этого нужно выполнить следующую команду:

snapraid -d NAME -l fix.log fix

Где Name – это имя диска. того которые мы называли как data1, data2 и так далее.

Ну в моём случае это диск data1 по этому полная команда будет выглядеть так:

snapraid -d data1 -l fix.log fix

Еще больше команд по snapraid Вы найдёте тут: https://www.snapraid.it/manual

Ураа Ваши мучения закончились, вы восстановили рейд и у Вас восстановились данные:

Заметьте pool1 стал меньше. Был 1.8 терабайта. Сейчас стал 1.4 терабайта – это потому что диск меньше, был 1тб, стал 500гб. Но данные восстановились.

 

И как видите из скрина ниже, виртуалка без проблем поднялась. Мы спасли все наши данные).

 

На этом настройка Snapraid закончена и даже продемонстрировано восстановление после сбоя. Надеюсь Вам эта статья покажется интересной и полезной, но а если нет, то не беда. Мне то она точно полезная будет и я буду как за шпаргалкой в неё смотреть

Добавить комментарий