Картинок не будет, это текстовый пост.
После того как я развернул НА и подключил сбор истории в базу данных, возникла некоторая проблема. А именно – сам НА ставится в корень (/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 утра запускать наш файлик
Все готово. Для пущей надежности перегружаем сервер и проверяем все ли примонтировалось после перезагрузки. Должно быть все хорошо. А в воскресенье заглядываем в папочку на хранилке и проверяем что бекап готов
Следующая статья будет про расширение умного дома. Приехали новые компоненты, так что будет много нового.