Появилась небольшая задача:
- организовать файло-помойку НЕ на сервере - дабы не занимать ценное место на сервере
говном,ценной информацией. (samba + quotas) - организовать резервное копирование пользовательских данных: огромного количество
дерьмищабаз 1c, документов пользователей с локальных машин, конфигурационных файлов с серверов и Кисок. (smb, rsynced, rsh) - добавить в существующий мониторинг основные параметры (munin)
- крипто-контейнер (crypto-loop)
- новостной портал компании (lightttp/php/mysql/perl)
- торрент-клиент !!
- ftp/sftp
Дополнительное условия:
- невысокая цена (железка валялась после закрытия одного из филиалов )
- низкое энергопотребление/тепловыделение
- небольшие размеры (в стойке место закончилось)
- надёжное хранение (RAID-1)
Результат - после 3 минутного колебания между VM, VPS, vmware-guest остановился на первоначальном варианте (пришел в голову до всего вышеперечисленного :) ) - сделать так, как обычно делаю для себя - небольшое embeded устройство с запуском Linux - магия :)
И вот как в известном анекдоте
Prerequisites (Необходимо-дано):И теперь с этим придуманным дерьмом попытаемся взлететь ...
- Dlink DNS-323 Firmware 1.08
- 2 x Samsung 500 GB
- raid-1
- устройство настроено и работает в штатном режиме ( настроен LAN, созданы шары/ пользователи)
Начнем (samba):
Устанавливаем fonz fun_plug активируем telnet и ssh.
В настройке по умолчанию SAMBA есть проблема, для возможности гостевого просмотра шар, в случае использования security = USER, добавляем в /etc/samba/smb.conf раздел [ global ] опцию map to guest = Bad User более детально я уже писал чуть ранее в моем блоге.
Читаем http://wiki.dns323.info/howto:ffp для понимания основ.
Далее полезно прочитать: http://wiki.dns323.info/howto:1st_steps в основном шаги "Step 6. Install repository for local use" и "Step 7. Install MidnightCommander"
В результате получим файловую помойку с поддержкой пользователей, квот на raid-1 и хороший задел в виде консольного доступа и готовый пакетных менеджеров ipkg / dpkg.
Резервное копирование (backuppc):
- Опираемся целиком на http://wiki.dns323.info/howto:backuppc, но есть некоторые но: "CPAN" shell у меня съедает всю память и не может нормально выполнять свои задачи - ставим все библиотеки из span в ручную
- При установки backuppc - получаем ошибку <Bareword "compareLOGName" not allowed> - решается заменой в lib/BackupPC/Lib.pm в районе 1466 строки return sort(compareLOGName @files); на return sort compareLOGName @files;
Мониторинг (munin-node):
Для установки я использовал достаточно старую версию munin-1.2.5. (у меня достаточно старый munin-master). Установка сводится к установки зависимостей (большинство поставлено во время backuppc, но Net::Server::Fork поставить нужно отдельно) и редактированию Makefile.config:
...# В самое начало добавляем destdir - решит проблему с размещением файлов.DESTDIR = /ffp...
После make install-node проверяем скрипты и так же правим пути добавляя /ffp перед указанными каталогами и в munin-node правим в коде расположение pid ( pid_file => "/ffp/var/run/munin/munin-node.pid" ) , так же поправить /ffp/etc/opt/munin/munin-node.conf на предмет путей к pid и разрешений для доступа например allow ^192\.168\.0\.200$, где 192.168.0.200 – ваш адрес munin-master
После этого можно делать
#munin-node-configure –shell | sh
И запускать при старте munin-node – я сделал таким скриптом:
#!/bin/sh
# PROVIDE: munin-node
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
. /ffp/etc/ffp.subr
name="munin-node"
start_cmd="munin_node_start"
restart_cmd="munin_node_restart"
stop_cmd="munin_node_stop"
status_cmd="munin_node_status"
munin_node_start()
{
/ffp/opt/munin/sbin/munin-node
echo "${name} started"
}
munin_node_restart()
{
munin-node_stop
sleep 1
munin-node_start
}
munin_node_stop()
{
/ffp/bin/pkill -f "munin-node"
echo "${name} stopped"
}
munin_node_status()
{
if [ "`ps ax | grep "munin-node" | grep -v "grep"`" = "" ] ; then
echo "${name} not running"
else
echo "${name} running"
fi
}
extra_commands="status"
run_rc_command "$1"
Проверяем с master-node
eugen@indigo:~$ telnet 192.168.95.20 4949
Trying 192.168.95.20...
Connected to 192.168.95.20.
Escape character is '^]'.
# munin node at dlink-17080D
list
open_inodes irqstats entropy df_inode cpu df_abs processes acpi open_files forks iostat memory df interrupts swap dns323_fan load
Всё в порядке.
Про доработку плугинов в следующей части.
... ещё пишу ...