четверг, 28 марта 2013 г.

Особенности FreeNAS

FreeNAS, как известно, управляется через вэб-интерфейс. Однако такой режим может в определенных случаях не работать. Именно с таким случаем мне и пришлось недавно столкнуться. Конкретно, посыпались два жестких диска с данными. По умолчанию, FreeNAS определив наличие проблем с диском запускает его проверку утилитой fsck в закулисном режиме, не отказывая при этом в монтировании с флагом rw. Конечный сетевой пользователь, работая с сервером FreeNAS в этих условиях, ощутит небольшую задержку в обработке своих запросов. Но если проблемы с диском более серьезные, FreeNAS откажется монтировать разделы с этого диска до тех пор пока эти проблемы не будут устранены. Причем дальнейший ход развития событий потребует запуска fsck в ручном режиме, как того предписывает система, выдавая на экран сообщения типа
unexpected inconsistency run fsck manually 
Если такое случилось, и одновременно отсутствует временной буфер для исправления ситуации, получаем классический deadlock работы. Что делать? Главное в этой ситуации не паниковать! В противном случае можно значительно ухудшить текущее положение.

Я принял решение (1) отключить фоновый запуск fsck и (2) смонтировать разделы с проблемного диска в режиме ro. Загружаюсь с Live-CD Frenzy 1.4 и монтирую корневой раздел FreeNAS в режиме rw. Как я указывал выше посыпались диски с данными, но не сама система! Далее лезу в файл настройки /etc/rc.conf... И зря. Несмотря на то, что FreeNAS основывается на FreeBSD, он использует собственный файл настройки, который обычно лежит в /cf/conf и называется config.xml. В этом файле необходимо найти раздел <mounts>. Каждая монтируемая точка описывается подразделом <mount>. Находим нужную, удаляем в ней тег <fsck/> и добавляем <readonly/>. Все. Перегружаемся и видим, что FreeNAS успешно запустился. Теперь у нас есть время для съема данных.