25 февраля 2013

Сохранение всех core файлов в одном месте

Чтобы не разыскивать по всему серверу, где лежит очередной core файл сделал отдельный каталог для всех core-файлов в системе.

Создаю отдельный том (чтобы избежать переполнения файловой системы)

$ sudo lvcreate -n cores -L 2G VolGroup00
$ sudo mkfs -t ext3 /dev/VolGroup00/cores
$ sudo mkdir -p /var/local/cores
$ echo '/dev/VolGroup0/cores  /var/local/cores  ext3  defaults,nosuid,nodev   0   2' | sudo tee -a /etc/fstab
$ sudo mount /var/local/cores

Теперь нужно указать ядру сохранять core файлы в новую директорию

$ echo 'kernel.core_pattern=/var/local/cores/core.%e.%p.%t' | sudo tee /etc/sysctl.d/core.conf
$ sudo sysctl -p /etc/sysctl.d/core.conf

Полный список шаблонов есть в man 5 core:
%%  a single % character
%p  PID of dumped process
%u  (numeric) real UID of dumped process
%g  (numeric) real GID of dumped process
%s  number of signal causing dump
%t  time of dump, expressed as seconds since the Epoch,  1970-01-01 00:00:00 +0000 (UTC)
%h  hostname (same as nodename returned by uname(2))
%e  executable filename (without path prefix)
%c  core  file  size soft resource limit of crashing process (since Linux 2.6.24)
Теперь проверяем, будут ли сохраняться файлы в нужном месте. Открываем новый терминал и выполняем команды:

$ ulimit -c unlimited
$ kill -SIGSEGV $$

Терминал должен закрыться, а в /var/local/cores появиться новый файл

$ ls -l /var/local/cores/core.*
-rw------- 1 andrey andrey 1482752 Фев 25 13:47 /var/local/cores/core.zsh.7388.1361789269

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

23 февраля 2013

Восстановление Zalman ZM-VE200 SE после сбоя файловой системы

Дело было вечером, делать было нечего - решил попробовать эмуляцию других типов образов, кроме ISO. На диске у меня два раздела: один сравнительно небольшой, отформатированный в NTFS (для образов и обмена файлами с Windows) и второй раздел, занимающий остальное пространство, отформатированный в Ext3 (для себя любимого).

Вот на NTFS я и решил создать образ жесткого диска image.dsk. Чтобы не дожидаться, пока копируются нули, я создал разреженный файл (sparse file) благо NTFS их поддерживает. Забегая вперед скажу, что это и стало роковым шагом в тот вечер.

22 февраля 2013

Впечатляющие достижения HTML5 и WebGL


В дополнение к портированию Sauerbraten: Cube 2 на HTML5 и WebGL (демо) Mozilla и разработчики 3D движка Unigine выпустили еще одну демку. Смотрится замечательно, хотя немного и притормаживает на моей Nvidia GeForce GT440.

Я не нашел способа включить отображение FPS, поэтому трудно сказать насколько быстро работает эта демка.

При создании этой демки используется Emscripten, позволяющий компилировать C++ код в JavaScript.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

21 февраля 2013

Предоставление доступа по известному ip адресу или через HTTP авторизацию

Если стоит задача разрешить доступ для некоторых клиентов (с известными ip адресами), а у остальных запрашивать HTTP авторизацию, то для Apache это можно сделать так:

Order Allow,Deny
Allow from x.x.x.x
Allow from y.y.y.y

AuthType basic
AuthName "Limited access. Login first!"
AuthUserFile /path/to/valid/.htpasswd
Require valid-user
Satisfy any

В этом случае если посетитель имеет ip адрес x.x.x.x или y.y.y.y, то ему будет предоставлен доступ без запроса пароля, в ином случае будет использована HTTP авторизация.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

mod_fcgid: read data timeout in 40 seconds

Сегодня обнаружилось, что на одном из серверов PHP скрипты падают с различными ошибками. В логах нашлось следующее

[Thu Feb 21 13:43:48 2013] [warn] [client 192.168.1.117] mod_fcgid: read data timeout in 40 seconds
[Thu Feb 21 13:43:48 2013] [error] [client 192.168.1.117] Premature end of script headers: install.php

Поскольку на сервере стоит cPanel, то проблема решается так:
  • увеличить лимит ожидания ответа (я выставил 3600 секунд), для этого нужно добавить в
    /usr/local/apache/conf/includes/pre_virtualhost_global.conf
    <IfModule mod_fcgid.c>
        FcgidIOTimeout 3600
    </IfModule>

  • обновить конфигурацию apache
    /scripts/rebuildhttpdconf

  • перезапустить apache
    service httpd restart

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

17 февраля 2013

Wine 1.5.24 для Debian Squeeze/Wheezy

Вышла новая версия Wine 1.5.24. Пакеты для Debian Squeeze (i386 и amd64) и Debian Wheezy уже заливаются в мой репозитарий, в скором времени будут доступны для установки.

Чтобы установить новую версию Wine в Debian Wheezy (amd64) вы можете воспользоваться инструкцией.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

15 февраля 2013

Перенос системы на диск 3TB

В процессе обновления дисковой подсистемы домашнего сервера я столкнулся с необходимостью немного изменить привычную мне схему переноса данных на новый жесткий диск. Далее я расскажу об отличиях старой и новой схем, почему возникла эта проблема и опишу способ, которым я решил ее.

Прошлый апгрейд сервера прошел по схеме:
  • Подключаю к серверу новый диск;
  • Создаю таблицу разделов - два primary раздела (один для корня или /boot и второй для LVM2 PV);
  • Мигрирую LVM на новый диск: pvcreate, vgextend, pvmove, vgreduce, pvremove;
  • Переношу данные, которые были вне LVM (/ или /boot);
  • Устанавливаю загрузчик на новый диск (grub-install).
Но в этот раз технологии шагнули дальше и этот способ больше не годился...