Найти в Дзене

Как я переводил HA на отдельный диск

Оглавление
Картинок не будет, это текстовый пост.

После того как я развернул НА и подключил сбор истории в базу данных, возникла некоторая проблема. А именно – сам НА ставится в корень (/usr/share/hassio). Диск у меня не большой, я уже писал, что заказал бы ещё меньше размер, только под систему. Соответственно зайдя в настройки системы НА, я увидел, что сейчас для НА выделено порядка 40 гигов памяти. А учитывая, что прирост обещал быть приличным (хранение истории – это сильно), я начал думать, как поступить.

Первая мысль была развернуть на NAS МарияДБ и гнать историю туда, но подумав – отказался от этой мысли. Это очень слабенькая машинка с огромными дисками. То есть в роли файловой помойки и синхронизации фоток с телефона он годится, а вот как полноценный сервер, силенок у него маловато. Вариант отбрасываем.

Вторая идея была развернуть базу в облаке. Вроде плюсы присутствуют – сервер и БД в разных местах, но минусов тоже полно. А если инет отключится? Или с облаком что-то случится, да и платить было лениво. Так что тоже не подходит.

Остаётся только отдельный хард. Благо неттоп позволяет подключить дополнительный диск 2.5 формата.

Ок, заказал SSD на 256 гигов (кингстон). Диск приехал, проблем с установкой в корпус не возникло. Там сдвигается рычажок и крышка снимается. Вставляем в салазки диск, подключаем, закрываем крышку.

Сначала я думал смонтировать диск, перенести туда папку с НА и поменять пути в настройках. Но видимо пути присутствуют не только в конфиге, но и ещё где-то. В общем он не запустилось.

Следующий вариант – создать жесткую ссылку. Но тут засада – жесткие ссылки нельзя вешать на каталоги. Символьные меня не устраивали.

Тогда и родилась идея – а если не получается притянуть гору к Магомеду, то почему бы Магомеду не сходить к горе.

Идея в следующем: мы монтируем в каталог хасио наш новый диск.

Тут как бы есть 2 под варианта:

1. Создать что-то отдаленно напоминающее рэйд. Другими словами, создаем LVM. В двух словах это технология позволяет соединять 2 диска в 1. То есть мы говорим системе, что наш системный диск будет объединён со втором диском, и система будет видеть не 2 разных диска с разными точками монтирования, а один большой диск. В некоторых ситуациях без нее не обойтись, но это не наш случай.

2. Второй вариант – мы монтируем наш новый диск в каталог НА. Это мой вариант. Мне он нравится тем, что система предсказуема. Я четко знаю где у меня что храниться.

Поехали

Первым делом размечаем диск. Можно воспользоваться каноническим fdisk, но мне он не нравится – слишком много писать в ручную. Можно воспользоваться GUI интерфейсом (у нас же полноценная убунта с графической оболочкой), но этот вариант мне не нравится эстетически – я человек старой закалки и привык с никсами работать из консоли. Так что выберем среднее решение и из консоли и управление стрелками

Первым делом запускаем lsblk (я для простоты подставлять sudo не буду, про входе через SSH выполняем sudo su, и мы имеем права рут)

Нас интересует название диска в конце, в котором нет разделов. В моем случае это sdb. Дальше запускаем утилиту разметки cfdisk /dev/sdb (может быть не установлена, но нас это не остановит: apt-get install cfdisk)

Дальше размечаем. Для себя я решил так – мне нужен диск под отдельные проекты, не связанный с умным домом и раздел для умного дома.

В итоге создаем 2 раздела на 100 гигов (sdb1) для НА и остаток пуляем на второй диск (sdb2)

Дальше создаем на дисках файловую систему. У меня везде используется ext4, так что не будем менять коней на переправе. ФС хорошая, проверенная. Будем её использовать.

mkfs.ext4 /dev/sdb1

mkfs.ext4 /dev/sdb2

Теперь нужно смонтировать наши диски.

С диском для проектов вопросов нет. Выполняем nano /etc/fstab

В конец вставляем строку

/dev/sdb2 /mnt/data ext4 defaults 1 2

Числа в конце означают будет ли система создавать дампы диска (число 1) и будет ли система периодически проверять ФС на выявление проблем (число 2 указывает в каком порядке это делать – смотрим по уже подключичным дискам какое число максимальное и добавляем +1). Можно поставить 0 0 – этим мы отключим дампы и проверку диска.

Дальше нам нужно создать каталог для монтирования: mkdir /mnt/data и выдадим права chmod 666 -R /mnt/data (для суеверных chmod -R ugo+rw /mnt/data)

Теперь самое интересное, для чего все это затевалось.

Останавливаем НА:

systemctl stop hassio-supervisor

systemctl stop hassio-apparmor

Переименовываем каталог НА:

mv /usr/share/hassio /usr/share/hassio1

Создаем ещё один:

mkdir /usr/share/hassio

И даем права:

chmod 666 -R /usr/share/hassio

Опять лезем в настройки точек монтирования nano /etc/fstab

Под первым диском пишем второй

/dev/sdb1 /usr/share/hassio ext4 defaults 1 3

Тут в конце уже цифра 3 – проверять ФС будут третьим заходом

Дальше монтируем все наши диски

mount /mnt/data

mount /usr/share/hassio

Если все выполнилось без ошибок, то копируем содержимое /usr/share/hassio1 в наш раздел:

cp -R /usr/share/hassio1/* /usr/share/hassio

Проверяем что все скопировалось:

ls /usr/share/hassio

Должна появится структура папки НА. Если все ок, запускаем сервер HA

systemctl start hassio-supervisor

systemctl start hassio-apparmor

Заходим, через браузер, на наш сервер (порт 8123). Тут надо немного подождать пока все запустится, сразу она может сказать, что такая страница не доступна.

Логинемся и заходим в настройки, система, хранилище.

Должна появится информация, что теперь у нас куча места и мы можем хранить историю до царя гороха.

Так же (раз уж влез) настрою бекап.

Раз уж есть NAS, то почему бы его не использовать?

Как известно, админы делятся на 2 типа: кто делает бекап и, кто ещё не делает. Я в свое время был во второй категории, но после некоторых эксцессов лет 15 назад, перешёл в первую. Так что учитесь на чужих ошибках.

На хранилище создаем папку и расшариваем её через NFS (а вот не хочу я в линуксе использовать микросовтовтовскую самбу, каприз у меня такой или блажь)

А дальше опять редактируем fstab, в конец добавляем

host_ip:/volume1/backup /mnt/bcp nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

хост ip – адрес хранилки

сохраняем и подключаем: mount /mnt/bcp

понятно, что каталог должен быть создан, права лучше выдать 777, но это уже каждый для себя сам решает.

Создаем подпапку НА: mkdir /mnt/bcp/HA

Дальше в каталоге bcp создаем файлик: touch /mnt/bcp/HA/ backupHA.sh

Вызываем его редактирование nano /mnt/bcp/HA/ backupHA.sh

И в него прописываем следующее:

#!/bin/sh
# останавливаем умный дом
sudo systemctl stop hassio-apparmor.service
sudo systemctl stop hassio-supervisor.service
# Запускаем бекап всех папок
timestamp="$(date +'%b-%d-%y')"
tar -cvpzf /mnt/bcp/HA/backup-${timestamp}.tar.gz /usr/share/hassio/
# Запускаем умный дом
sudo systemctl start hassio-apparmor.service
sudo systemctl start hassio-supervisor.service
# очистка старых бекапов
find /mnt/bcp/HA/*.gz -mtime +60 -type f -exec rm -rf {} \;

Сохраняем и выходим. В файле происходит следующее: сначала останавливаются сервисы, затем происходит архивация папки НА в архив на нашу хранилку. Поднимаем сервисы. Последним пунктом у нас происходит удаление файлов старше 60 дней (чтобы не загадить хранилку)

Все. Добавляем вызов файла в /etc/crontab

Параметры запуска выставляем такие – по субботам, в 4 утра запускать наш файлик

Все готово. Для пущей надежности перегружаем сервер и проверяем все ли примонтировалось после перезагрузки. Должно быть все хорошо. А в воскресенье заглядываем в папочку на хранилке и проверяем что бекап готов

Следующая статья будет про расширение умного дома. Приехали новые компоненты, так что будет много нового.