Сервер использовал на следующих комплектующих:
Материнская плата на 6 sata разъемов и процессоре N100: https://alli.pub/71bkep?erid=2SDnjbyyGsL
Корпус JONSBO N2 NAS Mini: https://alli.pub/71bkgu?erid=2SDnjd1Gn98
Подпишитесь на мой Телеграм канал: https://t.me/ypavla
Введение:
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 закончена и даже продемонстрировано восстановление после сбоя. Надеюсь Вам эта статья покажется интересной и полезной, но а если нет, то не беда. Мне то она точно полезная будет и я буду как за шпаргалкой в неё смотреть 🙂
Реклама: ООО “АЛИБАБА.КОМ (РУ)” ИНН: 7703380158