- PVSM.RU - https://www.pvsm.ru -
Я всегда рассматривал Хабр как кладезь ценной информации в решении многих проблем. Поэтому, столкнувшись с проблемой и найдя адекватное решение, решил поделиться своим опытом. Я не пытался написать мануал, а скорее руководство к действию, но со своей точки зрения и исходя из своих потребностей. Надеюсь, кому-то пригодится.
Для самосборного NAS существует много решений, я же остановился на FreeNAS по нескольким причинам:
Пока о своем решении не жалею, так как использую не только дома, но и на работе.
Crashplan'ом пользуюсь давно и имею платную подписку. Пользуюсь как перекрестным архивированием, так и архивацией в облако. Пользовался до описанных событий только под Linux и Windows.
Поэтому, когда развернул FreeNAS (9.3), вторым, что попытался сделать после установки VirtualBox — это развернуть Crashplan. И здесь меня ждало несколько сюрпризов. Когда впервые столкнулся с проблемой установки Crashplan, вспомнил о старой Fido'шной шутке о граблях:
А граблей оказалось несколько (как и шишек от них).
Глянув в
видим, что в наличии есть плагин Crashplan'а. Значит пробуем его поставить.
Берем за основу «How-to: Crashplan & Freenas» [5], шаманим и танцуем с бубном — Update Crashplan [6], то есть не забываем о необходимости наличия в файле /usr/pbi/crashplan-amd64/share/crashplan/bin/run.conf в обоих строках
Подключаемся и видим что кириллица некорректно отображается:
Вот и наша «шишка».
Поиск решения в лоб (с помощью Google) привел к тому, что я не одинок в своей проблеме: «FreeBSD + CrashPlan + /compat/linux = кракозябры» [7].
Вариантов решения назревало несколько:
Честно признаюсь, перепробовал все варианты (и в том порядке как указал). Победил п.4, о чем и расскажу.
Поиск решения привел меня к статье [How-To] CrashPlan in FreeNAS 9.1 Jail (tested on 32bit) [8], которая была взята за основу.
И так поехали (или полетели, кому как нравиться).
Все моменты первичной настройки FreeNAS, после первого запуска, я опущу, об этом написано много.
kldstat | grep linux
Если увидим что-то подобное:
22 2 0xffffffff81d09000 46855 linux.ko
значит мы уже его загрузили, если нет то:
kldload linux


Процесс занимает 10-45 мин.
Действия выполняем в ssh FreeNAS (если не оговорено иначе).
jls
Откуда видно что ID jail'а = 2.
jexec 2 /bin/tcsh
pkg update
pkg upgrade
portsnap fetch extract
Ждем завершения.
cd /usr/ports/editors/nano
make install clean
cd /usr/ports/emulators/linux_base-f10/
make install clean
cd /usr/ports/sysutils/linux-f10-procps/
make install clean
cd /usr/ports/java/linux-sun-jre17
make install clean
и получаем
Это связано с тем, что Оракл запретил качать этот файл напрямую. Поэтому идем по этой ссылке [9] и скачиваем файл jre-7u75-linux-i586.tar.gz (не забудьте согласиться с их лицензией). Скачанный файл надо положить в директорию /usr/ports/distfiles (путь в jail'е) или в FreeNAS в директорию /<путь к jail'ам>/<название jail'a>/usr/ports/distfiles (например у меня путь /mnt/poolz/jail/crashplan/usr/ports/distfiles)
И повторяем
cd /usr/ports/java/linux-sun-jre17
make install clean
И дожидаемся окончания установки.
exit
Попадаем в командную строку FreeNAS. Перемонтируем корневую ФС в режим записи:
mount -uw /
Создаем скрипт монтирования procfs:
nano /conf/base/etc/rc.d/mountproc
#!/bin/sh
# PROVIDE mountproc
# REQUIRE LOGIN
# BEFORE: ix-jail
. /etc/rc.subr
name=mountproc
rcvar=mountproc_enable
start_cmd="${name}_start"
stop_cmd="${name}_stop}"
mountproc_start () {
/sbin/mount -t linprocfs linproc /mnt/poolz/jail/crashplan/compat/linux/proc/
}
mountproc_stop() {
echo "--- mountproc stopped ---"
}
load_rc_config $name
run_rc_command "$1"
Важно! Проверьте что бы команда mountproc_start начиналась с первой позиции в строке!
Путь /mnt/poolz/jail/crashplan/compat/linux/proc/ меняете на свой (аналогично как в предыдущем пункте).
Делаем скрипт исполняемым:
chmod +x /conf/base/etc/rc.d/mountproc
И включаем автозапуск скрипта
kldstat | grep linux
mount | grep linprocfs
Если после второй команды мы не видим строчку подобную этой:
linprocfs on /mnt/poolz/jail/crashplan/compat/linux/proc (linprocfs, local)
тогда возвращаемся к пункту создания скрипта и ищем ошибку.
Если все хорошо, то продолжаем.
jls
jexec <jail_id> /bin/tcsh
Переходим в директорию /compat/linux, качаем Crashplan, распаковываем и инсталлируем:
cd /compat/linux
fetch http://download1.us.code42.com/installs/linux/install/CrashPlan/CrashPlan_3.7.0_Linux.tgz
tar -xzf CrashPlan_3.7.0_Linux.tgz
cd CrashPlan-install
/compat/linux/bin/bash /compat/linux/CrashPlan-install/install.sh
Читаем лицензионное соглашение и соглашаемся с ним.
В принципе можно все оставить по умолчанию. Если есть желание что-то поменять — меняйте, только внимательно!
После инсталляции файл CrashPlan_3.7.0_Linux.tgz и директорию CrashPlan-install из директории /compat/linux можно удалить, они уже не нужны.
nano /compat/linux/usr/local/crashplan/bin/run.conf
В начале каждой строки, после символов SRV_JAVA_OPTS=" и GUI_JAVA_OPTS=" вставляем
-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider.
В итоге должны получить:
SRV_JAVA_OPTS="-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPlan -Xms20m -Xmx1024m -Djava.net.preferIPv4Stack=true -Dsun.net.inetaddr.ttl=300 -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.negative.ttl=0 -Dnetworkaddress.cache.negative.ttl=0 -Dc42.native.md5.enabled=false"
GUI_JAVA_OPTS="-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider -Dfile.encoding=UTF-8 -Dapp=CrashPlanDesktop -DappBaseName=CrashPlan -Xms20m -Xmx512m -Djava.net.preferIPv4Stack=true -Dsun.net.inetaddr.ttl=300 -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.negative.ttl=0 -Dnetworkaddress.cache.negative.ttl=0 -Dc42.native.md5.enabled=false"
nano /compat/linux/usr/local/crashplan/install.vars
В переменной JAVACOMMON меняем путь на /usr/local/linux-sun-jre1.7.0/bin/java
TARGETDIR=/usr/local/crashplan
BINSDIR=/usr/local/bin
MANIFESTDIR=/usr/local/var/crashplan
INITDIR=/etc/init.d
RUNLVLDIR=/etc/rc.d
INSTALLDATE=20150314
APP_BASENAME=CrashPlan
DIR_BASENAME=crashplan
JRE_X64_DOWNLOAD_URL=http://download.code42.com/installs/proserver/jre/jre-7u45-linux-x64.tgz
JRE_I586_DOWNLOAD_URL=http://download.code42.com/installs/proserver/jre/jre-7u45-linux-i586.tgz
JAVACOMMON=/usr/local/linux-sun-jre1.7.0/bin/java
/compat/linux/bin/bash /compat/linux/usr/local/crashplan/bin/CrashPlanEngine start
/compat/linux/bin/bash /compat/linux/usr/local/crashplan/bin/CrashPlanEngine status
Из FreeNAS
jexec <jail_id> /compat/linux/bin/bash /compat/linux/usr/local/crashplan/bin/CrashPlanEngine start
jexec <jail_id> /compat/linux/bin/bash /compat/linux/usr/local/crashplan/bin/CrashPlanEngine status
Если при запуске получили «ок» и при проверке статуса видим много PID'ов, то все работает.
jexec <jail_id> /bin/tcsh
Создаем скрипт автозапуска:
nano /etc/rc.d/crashplan
#!/bin/sh
# PROVIDE crashplan
# REQUIRE LOGIN
. /etc/rc.subr
name=crashplan
rcvar=crashplan_enable
start_cmd="${name}_start"
stop_cmd="${name}_stop}"
#!/bin/sh
# PROVIDE crashplan
# REQUIRE LOGIN
. /etc/rc.subr
name=crashplan
rcvar=crashplan_enable
start_cmd="${name}_start"
stop_cmd="${name}_stop}"
crashplan_start () {
/compat/linux/bin/bash /compat/linux/usr/local/crashplan/bin/CrashPlanEngine start
}
crashplan_stop() {
/compat/linux/bin/bash /compat/linux/usr/local/crashplan/bin/CrashPlanEngine stop
}
load_rc_config $name
run_rc_command "$1"
Проверяем чтобы команды crashplan_start и crashplan_stop были в первой позиции строки!
Делаем скрипт исполняемым:
chmod +x /etc/rc.d/crashplan
Редактируем скрипт rc.conf.
nano /etc/rc.conf
Добавляем строку
crashplan_enable="YES"
Попутно правим
sshd_enable="YES"
hostname="crashplan"
чтобы включить SSH и задать нужно для нас имя хоста.
passwd
Важно! В FreeBSD (и FreeNAS jail) вход root через ssh запрещен. Для входа через ssh нужно или добавлять пользователя (включив его в группу wheel разрешим ему su) или править файл /etc/ssh/sshd_config. С точки зрения первый вариант более грамотный.
Как пользоваться командой adduser я рассказывать не буду, а расскажу о втором варианте.
Редактируем файл sshd_config:
nano /etc/ssh/sshd_config
Ищем строки
#PermitRootLogin no
#PasswordAuthentication no
и меняем на
PermitRootLogin yes
PasswordAuthentication yes
Сохраняем и запускаем SSH:
service sshd start
или перезапускаем:
service sshd restart
Проверяем запущен ли Crashplan, если нет, то запускаем.
Само подключение и настройка хорошо описана в USING CRASHPLAN ON A HEADLESS COMPUTER [11].
Если будет кому-то нужно, то могу расписать.
И после подключения, смотрим результат.
После перезагрузки все работает!
P.S. Хотелось бы услышать конструктивную критику.
Автор: imiha
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/rezervnoe-kopirovanie/85951
Ссылки в тексте:
[1] Crashplan Backup 2 года использования: http://habrahabr.ru/sandbox/40774/
[2] CrashPlan: заоблачный бэкап: http://it-world.ru/reviews/soft/43611.html
[3] CrashPlan Backup — если надо быстро сделать бэкап (много картинок): https://ru.intel.com/business/community/?automodule=blog&blogid=10662&showentry=4060
[4] Из Википедии: https://ru.wikipedia.org/wiki/CrashPlan
[5] «How-to: Crashplan & Freenas»: https://github.com/sirkkalap/freenas-crashplan-howto
[6] Update Crashplan: http://forums.freenas.org/index.php?threads/crashplan-3-6-3.18416/
[7] «FreeBSD + CrashPlan + /compat/linux = кракозябры»: http://forum.lissyara.su/viewtopic.php?t=39291
[8] [How-To] CrashPlan in FreeNAS 9.1 Jail (tested on 32bit): https://forums.freenas.org/index.php?threads/how-to-crashplan-in-freenas-9-1-jail-tested-on-32bit.14099/
[9] ссылке: http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
[10] документации: http://doc.freenas.org/9.3/freenas_jails.html#add-storage
[11] USING CRASHPLAN ON A HEADLESS COMPUTER: http://support.code42.com/CrashPlan/Latest/Configuring/Using_CrashPlan_On_A_Headless_Computer
[12] Источник: http://habrahabr.ru/post/253235/
Нажмите здесь для печати.