Июн 282013
 

Сегодня ночью внезапно упали apache и mysql на сервере. Конечно, не совсем внезапно, но я не ожидал. Падение произошло из-за переполнения диска, на котором лежат файлы, необходимые для работы этих сервисов. После падения нормально поднялся только Apache.

А вот Mysql стартовать отказывался.
Много гуглил, но ни чего не нашел.
Симптомы были такие: в лог файл ничего не пишет, при попытке запуска через /etc/init.d/mysqld start зависает.

Запустил в режиме отладки /etc/init.d/mysqld start -d и посмотрел, что происходит.
Затык оказался вот тут:

+ ewaitfile 900 /var/run/mysqld/mysqld.sock

Проверка на наличие сокета в течение 900 секунд. Выходит и не подвисал он при запуске, а просто ждал появления файла.
Уменьшил в инициализационном скрипте время до 10 секунд. И увидел, что, не дождавшись появления файла, сервис отказывается стартовать.

Запустил от имени рута. Все ОК.
Внимание. Тут надо быть аккуратным — при запуске от рута создаются файлы в директории /var/lib/mysql вида mysqld-bin.000008
К новому файлу будут права выставлены от имени рута. И если mysql был запущен от рута, то потом надо выставить корректные права на файлы, иначе он не стартанет.

Если от имени root стартует, значит проблема в правах. Сначала я думал, что проблема в доступе к директории /var/run/mysqld,
Потому как он тормозится на проверке наличия сокета mysqld.sock в указной директории. Хотя права доступа были выставлены верно. (более того в инициализационном скрипте прописана правка прав если они не верны)
Даже после создания сокета вручную, сервис стартовал, но сразу крэшился.

/etc/init.d/mysql status
 * status: crashed

Тут появился прогресс — начали писаться логи.

130628 13:03:53 [ERROR] /usr/sbin/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
130628 13:03:53 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)

Отсюда уже стало понятнее.
Оказалось, что файлы системной БД имели права для рута. Видимо раньше прокатывало и какое-то очередное обновление изменило это, но до ребута сервиса все работало.
файлы лежат тут: /var/lib/mysql/mysql
Как только я задал правильные права для всех файлов в директории сервис прекрасно запустился.

find /var/lib/mysql/mysql -type f |xargs chown mysql:mysql
Май 292013
 

Задача: создать случайный буквенно-цифровой пароль.

Казалось бы очень простой способ создания случайного пароля — это «постучать» по клавиатуре, но в действительности руки тянутся к середине клавиатуры, чтоб не попадать по спецклавишам. Криптостойкость такого пароля падает. Сегодня подобрал такой вариант решения, просто и удобно, но, возможно, не быстро.

head -c100 /dev/random | tr -dc 'a-zA-Z0-9' | head -c10 && echo

Теперь подробнее.

head -c100 выводит первые 100 байт из /dev/random
/dev/random имеет высокий уровень энтропии, т.к. его заполнение основывается на шумах системы, в основном от драйверов. Например, драйвер мыши.
Но если работать удаленно по SSH, то наполнение буфера случайных чисел может быть крайне медленным. Работая локально можно ускорить процесс начав двигать мышкой или нажимая клавиши.
Удаленно я запускал emerge —sync, что тоже пополняло буфер случайных чисел.
/dev/random — может работать медленнее, чем /dev/urandom так как первый выводи случайные последовательности, а второй псевдослучайные.

tr -dc ‘a-zA-z0-9’ отбрасывает все символы не попадающие в диапазон цифр или строчных/прописных английских букв.
head -c10 выводит из всех символов в потоке только 10 первых.
&& echo а это только для перевода строки, чтоб было удобнее просматривать результат.

Май 192013
 

Собирался уже пойти спать примерно 3,5-часа назад, но вдруг что-то случилось с электричеством. Сначала заморгала лампа, потом ребутнулось все, что могло ребутнутся, в том числе и сервак.
Но вот после перезагрузки из ребута он не вышел и выкинул такую ошибку:

 * Udev uses a devtmpfs mounted on /dev to manage devices.
 * This means that CONFIG_DEVTMPFS=y is required
 * in the kernel configuration.


 * ERROR: cannot start udev as udev-mount would not start
 * Mounting /dev/shm ...

Тут и началась веселуха.
Скачал с mirror.yandex.ru новый образ install-amd64-minimal-20130516. Залил его на флешку. Перепробовал все что мог, но запуститься так и не удалось.
Решил, что проблема может быть в образе и не ошибся — скачанная версия, которая вышла неделей раньше, загрузилась без проблем.
Пересобрал ядро с параметрами CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y. Не взлетело. Закрешилось на монтировании файловой системы. Значит не подтянулся файл конфигурации от предыдущего ядра.
Подсунул старый конфиг ядра и добавил в него два новых параметра.
После этого ребут прошел удачно, все сервисы поднялись и благополучно работают.
Но вот спать теперь совсем мало осталось.

Янв 212013
 

Недавно научился делать вот так:

status_report()
{
echo -en "\e[33;44m"< -->< ------>< ------># bacground to blue
echo
echo "-----------------------------"
echo "Report"
echo -e "Stack Pointer = \e[1;34m$SP"< -># Colot set to blue
tput sgr0< ----->< ------>< ------>< ------># terminal restored
echo -en "\e[33;44m"
echo -e "last element = \e[1;31m$data" ># Color set to red
tput sgr0< ----->< ------>< ------>< ------># terminal restored
echo -en "\e[33;44m"
echo -n "-----------------------------"
tput sgr0< ----->< ------>< ------>< ------># terminal restored
}

Что это дает?
А вот что…
Continue reading »

Дек 172012
 

Год подходит к концу и пора строить планы на следующий. Один из пунктов это литература. Многое из того что есть в списке литературы мне уже знакомо и я с этим сталкивался неоднократно, но в любом случае я вижу необходимость создания или укрепления твердого терминологического базиса. Среди друзей IT-шников я очень часто замечаю отсутствие общей терминологии и одни и те же вещи, многие называют по-разному. Поэтому первые три книги для конкретизации терминологии и расширения знаний.

Список в порядке планируемого чтения.
Блок O’relly. Очень хорошая серия книг, уже несколько читал — понравились.
1) TCP/IP. Сетевое администрирование, 3-е издание. Крейг Хант.
Куда же без TCP/IP в современном мире? На нем держится практически вся сетевая инфраструктура. Моих нынешних знаний хватит лишь на реферат в лучшем случае, а тут аж 816 стр.

2) DNS и BIND, 5-е издание. Крикет Ли, Пол Альбитц.
Думаю, эту книгу я прочитаю быстро, но для меня она тоже очень интересна.

3) Asterisk: будущее телефонии, 2-е издание. Джим Ван Меггелен, Лейф Мадсен, Джаред Смит.
Настроить астериск так чтоб он заработал и составить план звонков я могу, но это малая часть того что мне нужно. Поэтому буду править конфиг Асериска и максимально подробно его комментировать, потом выложу его.

Пара книг Microsoft Press
4)Windows Server 2008. Справочник администратора. Уильям Станек.
Начинал ее читать еще летом. Прочел первые страниц 100. очень много воды и подробностей о базовом вправлении в ОС. Такое ощущение, что книга рассчитана на тех, кто WinServer2008 вообще ни разу не видел. Да что уж там Server, с виндой мало знаком в принципе. Хотелось бы больший упор на PowerShell и службы AD, DHCP, DNS. В общем, возьмусь за чтение, дам еще один шанс по оглавлению там все это есть вроде. Но примерно 17% он начала книги в виде воды насторожили.

5) Exchange Server 2007. Справочник администратора. Уильям Станек.
Уже поздновато, наверное, читать эту книгу. Возможно, позже заменю ее на 2013 если такая будет.

6) FreeBSD. От новичка к профессионалу. Денис Колисниченко.
Хочу попробовать Фряху. Много приходится сейчас работать с OpenBSD, так почему бы не попробовать FreeBSD в качестве маршрутизатора, например. Но только если останется время.

7) Безопасность беспроводных сетей стандарт IEEE 802.11
Когда смотрел книги на books.ru или kniga.ru, не помню точно где, увидел эту книги и заинтересовался названием. Да и стоила она не дорого. Не жду много от нее, но возможно будет интересной.

Начну читать как раз со следующего года. Сейчас хочу закончить с вот этой вещью: Advanced Bash Scripting Guide. В распечатанном виде лежит у меня на работе. Отличная вещь, как для написания скриптов, так и для понимания работы командной строки в целом.

Техническая литература

Дек 152012
 

Задача: поменять для всех директорий и файлов владельца и группу.

Раньше я это делал более сложной командой. Сегодня научился так.

find . | xargs chown apache:apache

просто и удобно. )

xargs передает полученные значения по конвейеру указанной команде. (в данном случае)
До этого выполнял вот так.

find . -exec chown apache:apache {} \;

В новом варианте проще запомнить.
Но самое главное вот в этом.

server wordpress $ time find . -exec chown apache:apache {} \;
real    0m1.682s
user    0m0.029s
sys     0m0.148s

server wordpress $ time find . | xargs chown apache:apache
real    0m0.016s
user    0m0.002s
sys     0m0.014s

100x прирост производительности!

Дек 112012
 

В прошлую пятницу сдавал экзамен по RedHat6. Самое интересное — экзамен полностью практический. Не надо ни каких ответов на вопросы или выбора чекбоксами и радибатонами. Приходишь, садишься и делаешь реальные задания с которыми можешь столкнуться в работе. Сдавал в Инвенте. Все бы хорошо, но очередь большая, записываться на экзамен приходится за месяц.

А готовился по нагугленной книжке на английском.

В выходные пришло письмо от RedHat теперь я сертифицированный специалист.

Red Hat Certified System Administrator Vladimir Lukyanov