четверг, 30 июня 2011 г.

Сборка FreeBSD-9 с помощью Clang

Сборка FreeBSD-9 с помощью Clang
Clang является фронэндом к LVM и призван заменить gcc в базовой системе. Сейчас же по умолчанию сборка как системы, так и портов ведется с помощью далеко не самой свежей версии gcc.

Согласно http://wiki.freebsd.org/BuildingFreeBSDWithClang для переключения на clang нужно прописать в /etc/make.conf
.if !defined(CC) || ${CC} == "cc"
CC=clang
.endif
.if !defined(CXX) || ${CXX} == "c++"
CXX=clang++
.endif
# Don't die on warnings
NO_WERROR=
WERROR=
# Don't forget this when using Jails!
NO_FSCHG=
Однако, это имеет побочный эффект в виде использования clang в том числе и для сборки портов. Если это не то, что нам нужно, немного подправим конфиг, добавив дополнительное условие:

.if empty(.CURDIR:M/usr/ports/*)
.if !defined(CC) || ${CC} == "cc"
CC=clang
.endif
.if !defined(CXX) || ${CXX} == "c++"
CXX=clang++
.endif
.endif
Таким образом clang будет использоваться только если текущая директория не начинается с /usr/ports

http://blog.bsd-root.com/2011/05/freebsd-9-clang.html

php display errors

Пример файла для отладки индекса
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
ini_set('display_startup_errors','On');
require("index.php");
?>

Можно их вставить сразу в файл, убрав require

Вариант для .htaccess
php_flag display_errors on
php_value error_reporting E_ALL

portmaster

Используем portmaster

В целом, portupgrade удобнее, но его огромные зависимости ужасают... Плюс у него есть pkgdb, поэтому для установки того же мускуля достаточно набрать portinstall mysql50, тогда как с портмастером будет portmaster databases/mysql50. Если категория неизвестна -- придётся использовать locate или cd /usr/ports && make search name="mysql", что порядком напрягает на большом количестве пакетов.

portmanager security/sudo
установка пакета

portmaster -L
Список пакетов, для которых есть обновленные версии

portmaster -ah
обновить все пакеты

portmaster -d -R -r 'png-*'
Обновление порта и всех зависящих от него портов на примере png

полезный ключик -o
Позволяет заменить уже установленный порт на другой. Полезно, когда установленный порт, например, вынесен из дерева портов за устареванием, как, например, было с libtool15, на замену которой пришла libtool22. Таким образом, замена одного на другое на примере того же libtool происходит вот так:
portmaster -o devel/libtool22 devel/libtool15

если в директорию порта в базе данных портов (в моем случае это была /var/db/pkg/teTex-base-3.0.20) поместить файл с именем +IGNOREME, то portmaster его проигнорирует и ставить не будет.

http://www.daemony.ru/?p=820

среда, 29 июня 2011 г.

FreeBSD 9-current - обновление ядра

Актуально, пока оно current.

Возьмём за основу файл /usr/share/examples/cvsup/standart-supfile
Скопируем в другое место, затем проверим, что там default tag=. и поправим default host например на cvsup.ru.freebsd.org

Теперь обновляемся как обычно
#csup -g -L 2 our-supfile
итд.

SSD: Что о них нужно знать

http://pc-help.tomsk.ru/forum/viewtopic.php?f=1&t=2826

...
Код E1 – Host Writes
This attribute reports the total number of sectors written by the host system. The raw value is increased by 1 for every 65,536 sectors written by the host. Use the Raw value for this attribute.
«Этот атрибут показывает, сколько всего записано данных на диск»


Код E9 – Media Wearout Indicator
This attribute reports the number of cycles the NAND media has experienced.
The normalized value declines linearly from 100 to 1 as the average erase cycle count increases from 0 to the maximum rated cycles.
Once the normalized value reaches 1, the number will not decrease, although it is likely that significant additional wear can be put on the device. Use the Normalized value for this attribute.
«Этот атрибут показывает, сколько здоровья осталось у диска»
...

Для SLC интеля (Х25-Е на 32 гига) при Е1=22Тб Е9=99
то есть записать он сможет что-то около 2 петабайт.
Надо понять, как мониторить эти поля в линухе..

пятница, 24 июня 2011 г.

Немного ненависти про hetzner

В принципе, за достаточно смешные деньги можно получить мощную железку. Проблема в том, что железки эти - обычные бытовые компы.
Ограничения:
1) корпуса максимум на 4 диска, даже если каналов больше. Просто повесить ssd на проводах нельзя, политика компании.
2) если диски были sata, а надо sas - требуется подключить все диски через какой-то adaptec типа 5405. Возможно, переносить систему. Перенос через спецов - платный.
3) там нельзя хостить важные проекты. Причина -- ниже.
4) КВМ есть, но установка от 20 до 60 минут и более. Причём штатные КВМ весьма своенравны и глючны.
5) если хочется ssd - есть только MLC.
6) на каждый чих с конфигурацией надо заказывать flexi pack, 15$/мес.
7) если понадобится перезагрузка -- вы крупно попали. Особенно если пациент "пока теплый" и например на пинги отвечает.

В общем, берем мы там сервера через fastvps, и это накладывает ряд багов и нюансов. Например, один раз был отправлен запрос на ребут, который просто потерялся. Также, саппорт работает не 24х7, а в рабочие часы (Ежедневно, с 10:00 до 23:00), хотя шанс кого-нибудь поймать ночью и есть, но лучше на это не надеяться. А самая засада будет, если упадёт в 23:05, с субботы на воскресенье, и требуется помощь в ДЦ - часов 12 простоя поймать очень даже реально.

Теперь снова про хецнер. Есть у них панелька для ребута, которая похоже считает себя умнее пользователя. Например, хард-резет бесполезно нажимать, если сервер пингуется, но внутри кернел паник или что-то такое. Особым "умом" отличается их саппорт (напоминаю, я уже про сам хецнер). Например, они не будут делать ручной резет, если сервер пингуется.
"Ручной резет еще не производился. Сотрудники ДЦ уверены, что раз сервер пингуется, то с ним ничего делать не нужно. Сейчас наш администратор отправляет уточнение о том, что резет необходим." Из тикета.
Так что писать хецнеру нужно в стиле "нужно сделать резет. Сервер отвечает на пинги, но не работает и нужен резет. И не надо строить из себя умных, JUST DO IT!!"
Если через фаст - сразу написать в тикете: "нужен ручной резет, хоть сервер и отвечает. Напишите об этом хецнеру, иначе эти тупые уродыих инженегры ничего делать не будут".

Итог... в 8.30 обнаружили "maxproc exceeded by uid 0", и только в 13.50 получили ребут. Поэтому недопустимо в таких местах держать важные проекты. Зато дёшево, пока работает.

понедельник, 20 июня 2011 г.

Настройка nginx-passenger для CentOS

http://olemskoi.ru/node/6776

Для начала, нужна сама репа
http://olemskoi.ru/repository
Для установки загрузите файл http://rpms.southbridge.ru/southbridge-stable.repo в папку /etc/yum.repos.d/

1
yum install ruby-enterprise-rubygems
2
gem install passenger
3
yum install nginx-passenger

OCZ HSDL: новый скоростной интерфейс для твёрдотельных накопителей

http://www.thg.ru/storage/ocz_hsdl_ibis/print.html


OCZ High-Speed Data Link

OCZ не прибегла к каким-либо секретным хитростям при разработке интерфейса HSDL. Он построен на доступных стандартах - и OCZ подробно описала, на чём основывается HSDL. Новый интерфейс использует ту же самую схему кодирования 8b/10b, что и PCI Express, SATA, HyperTransport и USB 3.0. А когда на рынок выйдет новая шина PCI Express 3.0, то HSDL сможет перейти даже на схему кодирования 128b/130b, которая у неё используется.

То есть, по большей части, основой интерфейса HSDL является шина PCI Express.

Один канал HSDL состоит из четырёх линий PCIe, объединённых вместе, что даёт предсказуемую масштабируемость. На данный момент компания предлагает SSD IBIS с одноканальными картами-адаптерами, которые (как и можно было ожидать) устанавливаются в слот PCIe x4 материнской платы. В будущем у компании есть планы по выпуску двухканальных карт, которые будут устанавливаться в слот PCIe x8.

...

Итак, мы знаем, что представляет собой интерфейс HSDL в своей нынешней форме, а также знакомы с потенциалом роста. Но что можно сказать про IBIS, накопители первого поколения, которые разработаны с учётом скоростного интерфейса HSDL? Что ж, на данный момент многие накопители IBIS просто слишком дорогие. Как указывает компания, в данном случае OCZ не ставит на оптимальное соотношение производительности за свои деньги - для этого есть линейка RevoDrive. В случае IBIS вы платите за продукт, который обеспечивает больше 100 000 операций ввода/вывода в секунду, а также пропускную способность потокового чтения/записи намного выше, чем может дать порт SAS.

среда, 15 июня 2011 г.

Отладка долго выполняющихся транзакций в MySQL

http://www.opennet.ru/tips/2557_mysql_innodb_transaction_debug.shtml

ssh-keys на пальцах

[черновик]

Представим, что есть 2 жилых дома, у каждого есть хозяин (root), жильцы (users) и обслуживающий персонал (daemons), а также бывают гости. У этих домов есть адреса, чтобы жители других домов могли найти нужный дом. При "сдаче в эксплуатацию" (первый запуск sshd) выдаётся уникальный набор документов (генерация ключей, которые лежат в /etc/ssh/)

Захотел житель из дома А зайти в гости в дом Б. Узнал он адрес, по адресу узнал, куда идти (занёс этот адрес в known_hosts), попутно запомнил, как этот дом выглядит - вдруг кто-то ночью этот дом подменит?.. :) Но обстановка на улице напряжённая, нельзя доверять всем подряд. Получаем от этого дома информацию (рупор - плохо, домофон?)

Заходит.. Стучится в нужную квартиру и знакомится с жильцом

Хозяин имеет право ходить по квартирам и проверять, всё ли в порядке (root имеет полный доступ), поэтому по умолчанию хозяин не может придти "с улицы" (вход под root запрещён), им может стать только жилец дома. Все жильцы имеют право получать права хозяина (su), а есть те, кто могут стать исполняющими обязанности (группа wheel)

вторник, 14 июня 2011 г.

Облака, белогривые лошадки..

Что они дают, и где грань между облаком и vps

"Слова «облако», «облачные вычисления», «облачный» используются для чего попало. Новое модное слово, buzzword. Мы видим «облачные антивирусы», «облачные блейд-сервера». Даже именитые вендоры сетевого оборудования, не стесняются выставлять коммутаторы с ярлыком «for cloud computing». Это вызывает инстинктивную неприязнь, примерно, как «органические» продукты питания.

Любой технарь, который попытается разобраться с технологиями, лежащими в основе «облака», после нескольких часов борьбы с потоком рекламных восторгов, обнаружит, что это облака — это те же VDSы, вид сбоку. Он будет прав. Облака, в том виде, как их делают сейчас — обычные виртуальные машины.

Однако, облака, это не только маркетинг и переименованные VDS. У слова «облако» (или, точнее у фразы «облачные вычисления») есть есть своя техническая правда. Она не такая патетичная и восхитительно-инновационная, как рассказывают маркетологи, но она всё-таки есть. Придумана она была много десятилетий назад, но только сейчас инфраструктура (в первую очередь, Интернет и технологии виртуализации x86) доросла до уровня, который позволяет реализовать её в массовом порядке."
Учёт ресурсов в облаках

Но автор то ли забывает, то ли умалчивает и про необходимость всё-таки ограничить эти ресурсы. Если у нас вычислительный кластер -- за сутки или месяц, но мы на той же задаче пережуём одинаковое количество данных. Другое дело - web-сфера, где наша мегасистема может и выдержит мега DDoS на десятки гигабит, но во сколько это встанет владельцам? Лучше получить 504, чем попасть на миллионы, которые гарантированно не принесут прибыли. Ловить начало атаки и срочно выключаться?
На данный момент мы в любом случае будем ограничены ресурсами ноды, но если "облачность" станет "истинной"? Когда любая задача будет автоматом раскидываться на десятки, сотни серверов?

Другой момент - отказоустойчивость. Настоящая облачность это не просто отвязанность от конкретной железки, это отвязанность от площадки. И если у нас вышла из строя площадка -- её тут же должна заменить другая, причём незаметно для всех. Это называется "high avaliability" и стоит денег. Больших денег. И этого пока облака дать не могут.

Ещё проблема:
Управление памятью гостевой машины в облаке
"Одна из первых проблем, с которой сталкиваешься, когда решаешь сделать в облаке «неограниченную память» — это то, что современные операционные системы не готовы к «неограниченной памяти». Связано это с дисковым кешем.

Ядро забирает себе всю свободную память для кеша. Если есть дисковые операции и есть свободная память — кеш будет расти. В случае сервера с единолично пользуемой памятью это благо, однако, если мы говорим о том, что все мегабайты платные, платить за дисковый кеш в 10-20Гб откровенно не хочется."

MapReduce

http://ru.wikipedia.org/wiki/MapReduce

Используется для обработки данных, объем которых может быть терабайты и петабайты.

смена айпи у машины в ezjail

Как оказалось, можно назначить 1 айпи нескольким машинам. Налажал, присвоил разным джайлам 1 айпи. Надо поправить - поставить 1 машине новый айпи.
Похоже, штатных методов нет.
Руками так:
# ee /usr/local/etc/ezjail/myjail
находим строку

export jail_myjail_ip="192.168.1.37"
и меняем на нужное. Потом надо зайти в машину и сменить айпи там. Увы, тут не так просто все.

# /etc/netstart
Starting devd.
devd: Can't open devctl device /dev/devctl: No such file or directory
/etc/rc.d/devd: WARNING: failed to start devd
Setting hostuuid: 2848412f-cc08-da11-9b12-26074710a313.
Setting hostid: 0xae73ae76.
/etc/rc.d/hostname: WARNING: $hostname is not set -- see rc.conf(5).
ifconfig: ioctl (SIOCDIFADDR): permission denied
ifconfig: up: permission denied
Starting Network: lo0.

lo0: flags=8049<up,loopback,running,multicast> metric 0 mtu 16384
options=3<rxcsum,txcsum>
/etc/netstart: /etc/rc.d/ip6fw: not found

Разные варианты перезапуска тоже не проходят, reboot нету, init 0 просто не срабатывает... Дергать хост можно далеко не всегда.

воскресенье, 12 июня 2011 г.

немного про сети

Стоит в комнате несколько человек. Кто-то может сказать: "Миша, иди сюда."
Это UDP-пакет. Миши может и не быть в комнате, или он может не услышать.
Можно крикнуть "Всем внимание" - это броадкаст.
"Петя, Вася - выключите свет". Это мультикаст.
"Миша, ты тут?" - это ICMP пакет. В ответ можно получить "да, я тут" или не получить ничего. Хотя иногда бывает, что привратник отвечает вместо него "этот человек недоступен".
Может быть диалог.
-Миша!
-Да?
Установлено TCP соединение. Или не установлено, если Миша по каким-то причинам не ответил.

Но что делать, если нам нужен Миша, а в комнате его нет? У двери стоит привратник с телефоном - гейт или роутер. Если мы знаем, где сидит Миша - мы говорим "соедини меня с адресом: дом 1, квартира 2, абонент 3" и говорим по телефону. Если адреса не знаем, но есть официальное имя - запрашиваем адрес по имени у привратника, тот связывается с местным отделом адресов, если там информации нет - они передают в районный отдел итд. Потом по всей этой цепочке адрес возвращается и сообщается нам. Это днс. Если привратник записывает себе в записную книгу, чтобы в следующий раз найти этот адрес быстрее, это кэширующий днс.