В данной статье описывается решение проблемы чрезмерного использования места программными продуктами компании Ubiquiti: UniFi-Video и UniFi. В конфигурации по умолчанию данные продукты используют фактически двойной размер места под журналы базы данных. В заметке описано решение проблемы.
UniFi – торговая марка фирмы Ubiquiti. Изначально под этой торговой продавались wifi точки доступа, сейчас под этой маркой доступны целые серии устройств для обеспечения доступности wi-fi сети, видеонаблюдения, телефонии или умного дома. Программное обеспечение предоставляемое компанией – бесплатно, этим объясняется популярность устройств компании при решении многих задач.
К сожалению, в программном обеспечении и инструкциях по его установке присутствуют ошибки переходящие из версии в версию. Одной из таких ошибок является двойное использование места при журналировании базы данных MongoDB в Ubuntu и Debian. Первую версию журнала ведёт движок базы данных, вторую версию журнала ведёт непосредственный экземпляр обслуживающий БД UniFi. Цель ведения журнала – восстановление после сбоя, однако зачем это делать дважды – не ясно.
Пример использования места с тестовой системы видеозаписи на базе UniFi-Video:
root@SPB-VIDEO1:/var/lib# du -h --max-depth=1 4.0K ./misc 52K ./belocs 4.0K ./landscape 3.1M ./apt-xapian-index 143M ./apt 20K ./sudo 4.0K ./ntpdate 25M ./dpkg 8.0K ./plymouth 3.1G ./mongodb 84K ./ucf 2.5M ./mlocate 4.0K ./insserv 8.0K ./urandom 8.0K ./update-manager 16K ./locales 8.0K ./dbus 24K ./update-notifier 7.1G ./unifi-video 8.0K ./ureadahead 4.0K ./dhcp 8.0K ./ntp 4.0K ./aptitude 4.0K ./libuuid 88K ./update-rc.d 12K ./AccountsService 456K ./usbutils 4.0K ./os-prober 12K ./xml-core 8.0K ./vim 12K ./initramfs-tools 8.0K ./logrotate 28K ./pam 4.0K ./initscripts 4.0K ./sgml-base 11G .
Подсвечены строчки с журналами базы данных и журналом экземпляра UniFi-Video.
Деликатное решение проблемы (на примере Unifi-Video):
Сначала требуется остановить работу MongoDB и UniFi-Video:
sudo -s service unifi-video stop service mongodb stop
Теперь в скрипте запуска MongoDB требуется выключить основной экземпляр БД. Для этого нужно внести иправления в файл: /etc/init/mongodb.conf, нужно исправить строчку ENABLE_MONGODB=»yes» на ENABLE_MONGODB=»no».Сделать это можно либо в режиме редактора, либо запустив команду:
sed -i 's/ENABLE_MONGODB=\"yes\"/ENABLE_MONGODB=\"no\"/g' /etc/init/mongodb.conf
Удаляем файлы журнала по адресу /var/lib/mongodb/journal
rm -Rf /var/lib/mongodb/journal/
Запускаем службу UniFi-Video и проверяем работу:
service unifi-video start
Вот так выглядит использование места после выполнения этой инструкции:
root@SPB-VIDEO1:/var/lib# du -h --max-depth=1 4.0K ./misc 52K ./belocs 4.0K ./landscape 3.1M ./apt-xapian-index 143M ./apt 20K ./sudo 4.0K ./ntpdate 25M ./dpkg 8.0K ./plymouth 4.0K ./mongodb 84K ./ucf 2.5M ./mlocate 4.0K ./insserv 8.0K ./urandom 8.0K ./update-manager 16K ./locales 8.0K ./dbus 24K ./update-notifier 7.1G ./unifi-video 8.0K ./ureadahead 4.0K ./dhcp 8.0K ./ntp 4.0K ./aptitude 4.0K ./libuuid 88K ./update-rc.d 12K ./AccountsService 456K ./usbutils 4.0K ./os-prober 12K ./xml-core 8.0K ./vim 12K ./initramfs-tools 8.0K ./logrotate 28K ./pam 4.0K ./initscripts 4.0K ./sgml-base 7.2G .
Данное решение является деликатным, потому что у нас остаётся второй журнал базы данных, который ведёт экземпляр UniFi-Video. В случае сбоя мы можем использовать этот журнал для восстановления базы данных.
Полное отключение ведение журнала (только для UniFi Wi-Fi):
В определённых случаях требуется максимально сократить использование жёсткого диска, даже в ущерб возможности восстановить базу данных. Для достижения максимальной экономии требуется выполнить первую часть инструкции и дополнительно внести следующие правки:
На время внесения изменений опять остановить службу UniFi:
service unifi stop
Удаляем существующий файл журнала:
rm -Rf /var/lib/unifi/db/journal/
Добавляем в файл/var/lib/unifi/system.propertiesстроку:
unifi.db.nojournal=true
Запускаем сервис и проверяем его работу:
service unifi start