RSS
 

Posts Tagged ‘freebsd’

ISPManager и FreeBSD 7.3

23 Sep

Продолжаем нашу рубрику “Предупрежден – значит вооружен”. Как известно, по-умолчанию панель управления хостингом ISPManager обновляет себя сама, время от времени скачивая и устанавливая update. В абсолютном большинстве случаев это проходит нормально и подобному поведению этого программного продукта можно доверять. Итак, в один из прекрасных дней ISPManager решил обновиться (точнее – это произошло 17 сентября) и…. все, на панель стало невозможно зайти. К счастью, архитектура ISPManager построена таким образом, что сайты клиентов, СУБД и прочие сервисы работают нормально, но изменение допустимых настроек самими пользователями невозможно.

Пару дней наши инженеры пытались решить проблему самостоятельно, но результата это не принесло. Обратились в ISPSystem – все-таки панель куплена легально, поддержка и все такое. Техподдержка сначала включила стандартный режим для “чайников” (удалите кэш, перезагрузите сервер и т.п.), затем мы таки попали к более вменяемому специалисту.

Оказалось следующее: у нас на проблемном сервере была установлена FreeBSD 7.3 в состоянии RELEASE, с поставленными вручную заплатками по появившимся за последнее время advisory. А недавно в 7.3-STABLE произошло изменение в libthr(3). Вот тут и возникла проблема – несовместимость последнего update от ISPManager и “старой” libthr.

Решение оказалось простым – cvsup + make buildworld installworld. Все работает.

 

FreeBSD и OpenSVC

16 Jun

Команда FreeBSD радует как минимум пару раз в месяц. Совсем недавно было объявлено об активном развитии инфраструктуры jail(8), а теперь очередная новость – в FreeBSD доступен OpenSVC, инструментарий для организации cloud computing. Не стоит думать, что подобные технологии – удел больших цифродробительных датацентров: данные технологии существенно упрощают жизнь инженерам даже в средних проектах, будь то более-менее масштабная почтовая система либо отказоустойчивые вэб-приложения.

Как BSD-шник со стажем (некоторые, однозначно, стаж имеют больше, я же начинал с BSDi ‘s BSD/386, которая BSD4.3-based), я это максимально приветствую – FreeBSD Foundation наконец начала движение в правильную сторону. Жаль только, что приходится догонять не только Linux, но и массу других решений в области виртуализации и отказоустойчивости. Времени упущено много.

 

FreeBSD и виртуализация – неужели будет шаг вперед?

10 Jun

Сегодня пришел анонс от FreeBSD Foundation, в котором говорится о том, что получен грант на развитие инфраструктуры jail(8), в частности, будет уделено значительное влияние виртуальной сетевой подсистеме. Стоит отметить, что использование jail(8) значительно экономит ресурсы по сравнению с “полными” виртуальными средами типа VMWare или Xen, так как эмулируется не “полная” i386-машина, а, скажем так, расширенный userland с “виртуальным” root в выделенном окружении. С одной стороны, это существенно экономит ресурсы, что особенно важно для хостинг-провайдеров. Больше клиентских VPS на “физическом” сервере – ниже цены и больше клиентов. С другой стороны – нет возможности, скажем, загрузить свой модуль в ядро либо поменять какой-либо системный параметр в sysctl(8) – но так ли уж часто это нужно делать в VPS ? Для высокопроизводительных сервисов все равно нет вариантов – использовать выделенный визический сервер и/или cloud.

Но вернемся к FreeBSD. В отличие от мира Leenjux, где вокруг OpenVZ построено большое количество оболочек для хостеров (коммерческих и не очень – на любой карман и бюджет), для FreeBSD появилась только одна мне известная коммерческая попытка от ISP System – их VDS Manager. К сожалению, потестировать его так и не удалось – остановило то, что в нем используется “модифицированное ядро FreeBSD”.

Но вчерашний анонс меня, как старого BSD’шника, обрадовал. Он означает, что правильная серверная ОС будет использоваться не только в качестве guest OS в VPS, но и в качестве хост-машины. Жду-недождусь :)

 

Хозяйке на заметку: FreeBSD и большие массивы

27 мая

Если вам придется поднимать под FreeBSD большой дисковый массив (более 2Тб – созданный, например, с помощью RAID-контроллера), случится несколько неприятный момент. fdisk и disklabel не умеют корректно работать с подобным объемом и вместо, скажем, 3Тб (2 диска по 1.5Тб в STRIPE) вы получите несколько поменьше:

iptvts2# df -g /mnt
Filesystem    1G-blocks Used Avail Capacity  Mounted on
/dev/aacd0s1d       718    0   661     0%    /mnt

Если такое случилось, паниковать не нужно. Во-первых, жестоко уничтожаем информацию о разделах на диске с помощью универсального способа – dd(1):


iptvts2# dd if=/dev/zero of=/dev/aacd0 bs=1k count=500
500+0 records in
500+0 records out
512000 bytes transferred in 0.026223 secs (19524886 bytes/sec)

Затем используем glabel(8) для создания метки:


iptvts2# glabel label timeshift1 /dev/aacd0
iptvts2# glabel list
Geom name: aacd0
Providers:
1. Name: label/timeshift1
Mediasize: 2995729202688 (2.7T)
Sectorsize: 512
Mode: r0w0e0
secoffset: 0
offset: 0
seclength: 5851033599
length: 2995729202688
index: 0
Consumers:
1. Name: aacd0
Mediasize: 2995729203200 (2.7T)
Sectorsize: 512
Mode: r0w0e0

Вот и все. Теперь можно делать newfs(8) на /dev/label/timeshift1 и пользоваться массивом.

 

shflags, FreeBSD и ошибка expr

05 мая

После миграции моего мегаскрипта для подготовки видеоконтента с linux на правильную ОС возникла ошибка expr(1):

expr: illegal option -- s
usage: expr [-e] expression

Ошибка генерируется внутри shflags – в сторону expr(1) передается параметр, начинающийся с ‘-’ (минус), чего штатный expr(1) не принимает. Оставим в сторону его корректность или некорректность в данном конкретном случае.

Выйти из ситуации можно достаточно просто: идем в  /usr/ports/sysutils/coreutils, делаем make install clean и получаем установленные GNU Coreutils. Версии утилит имеют префикс g – gexpr, gkill, gdu и т.п. Полный список можно посмотреть в pkg-descr, расположнном в каталоге /usr/ports/sysutils/coreutils.

Итак, мы имеем установленный более другой expr(1) с именем gexpr. Открываем /usr/local/lib/shflags, меняем все строки expr на gexpr и, вуаля – наш суперскрипт работает без проблем.