четверг, 28 июня 2012 г.

Как стереть файл с непечатным именем

Обнаружили в одном месте файл с именем из 1 непечатного символа, при этом через ls -la его показывало как "?", а через ls -1 просто пустая строка. rm такое не возьмёт. Тут на помощь приходит find, только сначала надо получить inode файла и потом его указать find-у.

# ls -1i | head -2
473779
457021 README

# find . -inum 473779 -delete

Всё, удалили.

вторник, 26 июня 2012 г.

selectel: лимиты облака

"Вы достигли ограничения по-умолчанию на количество виртуальных машин в облаке."

Оказалось, лимиты в облаке selectel - 11 вирт машин. Но можно написать запрос, и лимит увеличат.

"Лимиты введены по соображениям безопасности и рационального использования ресурсов. Эта мера помогает быстро отсеивать недобросовестных пользователей генерирующих мусорный трафик или распространяющих зловреды."

К каждой машине может быть подключено не более 15 дисков. Лимит диска 1.7Тб.
Уменьшению не подлежит. Изменение размеров только на отключенном диске/выключенной системе.
http://habrahabr.ru/company/selectel/blog/117969/

четверг, 21 июня 2012 г.

apache и nginx: сайт по умолчанию

nginx:
server {
    listen       80 default_server;
    server_name  _;
}


Если у директивы есть параметр default_server, то сервер, в котором описана эта директива, будет сервером по умолчанию для указанной пары адрес:порт. Если же директив с параметром default_server нет, то сервером по умолчанию будет первый сервер, в котором описана пара адрес:порт.

До версии 0.8.21 этот параметр назывался просто default.

дока

apache:
<VirtualHost _default_:*>
    DocumentRoot /var/www/default
    ErrorLog /var/www/default/error_log
</VirtualHost>

среда, 20 июня 2012 г.

dd со статистикой

Можно для получения статистики посылать сигнал SIGUSR1, но во фре например у меня этот сигнал просто прибивал dd.

Рабочий вариант:
dd if=/dev/sda bs=8M conv=sync,noerror | pv -c > /dev/sdb
или в файл
dd if=/dev/sda bs=8M conv=sync,noerror | pv -c | gzip -c > /mnt/backup/sda.img

apache: client denied by server configuration

В лине можно словить эту ошибку.
Причины: в конфиге прописано
<Directory "/">
    ...

    AllowOverride none
    Options none
</Directory>

Фикс: написать в конфиг

<Directory "/var/www/site">
    ...
    Allow from all
    AllowOverride All
    Options +FollowSymLinks
</Directory>

Для битрикса по сути нужно только AllowOverride FileInfo

Можно просто убрать "лишние" строки из главного конфига, но по ряду причин лучше попытаться переопределить нужные. Это и безопаснее, и автообновление конфига не отвалится.

четверг, 14 июня 2012 г.

Эпическое тестирование 15 SSD объемом 120-128 Гбайт

Эпическое тестирование 15 SSD объемом 120-128 Гбайт

И оттуда же основные типы контроллеров:
Для начала разберемся с основными платформами, на которых строятся SSD. Подавляющее большинство дисков сейчас делают на контроллерах SandForce SF-2281 и Marvell 88SS9174. Свой собственный контроллер использует Samsung в приводах серии SSD 830. OCZ не так давно тоже начала выпускать накопители с контроллерами «домашнего» производства Indilinx Everest и Everest 2. Ну и не будем забывать о платформе Intel, которая играла значительную роль в эпоху накопителей для шины SATA 2 Гбит/с и пиком развития которой стала линейка Intel SSD 320. До современных стандартов Intel ее не дотянула и теперь вместе со всеми для производства топовых накопителей прибегает к услугам SandForce и Marvell.

вторник, 12 июня 2012 г.

Чуть более 20 хороших советов по MySQL

Объединение из 2 частей, с подправленной грамматикой (переводил китаец -- в оригинале полно фразочек типа "Значения в нем храниться так же, как...").

Оригинал: http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/

Перевод:
часть 1
часть 2

вторник, 5 июня 2012 г.

LVM: основные операции

небольшое отступление: после zfs - lvm кажется дико кривым и неудобным, поэтому и возникла необходимость в памятке об основных операциях.

Плюс, поскольку оно не умеет и уровни рейда кроме jbod (объединение пачки дисков в единое пространство), необходимо сначала создать нужные рейды средствами системы/контроллера, и работать уже с этими дисками.

шаг 0: в дебиане надо поставить пакет lvm2 (apt-get install lvm2), а то ничего не получится.

На 2 уровне из реальных дисков (PV, physical volume) собираем "диски" VG (volume group), с которыми уже работает lvm. Можно собрать 1 диск из нескольких реальных, но это опасно: отказ любого из реальных дисков приведет к недоступности всей группы, поэтому лучше собрать рейд нужного уровня, создать на нём pv, и чисто из него сделать vg.

"Загрузка с LVM возможна, но не рекомендуется. Так что у Вас есть отдельный раздел для этого." (линк)

Также есть заблуждение, что расширить том lvm легко, но это не совсем так: если у нас есть куда расширять, делается lvextend, для ext2 расширяемый раздел перемонтируется в режим чтения и потом (xfs_grow|resize2fs).
Другое дело, если мы в облаке (selectel, parking...) и увеличили жесткий диск. Тут нужен будет бубен, потому что скорее всего придется поплясать. Пример запущенного случая: 3 раздела (boot, своп, и extended, на котором еще 1 раздел уже с lvm). Описание ниже.

Устройство по слоям
> pv > vg > lv
PV, Physical volume, физический том. Обычно это раздел на диске или весь диск. В том числе, устройства программного и аппаратного RAID (которые уже могут включать в себя несколько физических дисков). Физические тома входят в состав группы томов.
VG, Volume group, группа томов. Это самый верхний уровень абстрактной модели, используемой системой LVM. С одной стороны группа томов состоит из физических томов, с другой -- из логических и представляет собой единую административную единицу.
LV, Logical volume, логический том. Раздел группы томов, эквивалентен разделу диска в не-LVM системе. Представляет собой блочное устройство и, как следствие, может содержать файловую систему.
PE, Physical extent, физический экстент. Каждый физический том делится на порции данных, называющиеся физическими экстентами. Их размеры те же, что и у логических экстентов.
LE, Logical extent, логический экстент. Каждый логический том делится на порции данных, называющиеся логическими экстентами. Размер логических экстентов не меняется в пределах группы томов.
http://xgu.ru/wiki/LVM

Создание раздела
Последовательность pvcreate /dev/sda -> vgcreate vg0 /dev/sda -> lvcreate -l +10%FREE -n lv-name

Сначала надо разметить раздел или весь диск как lvm. Лучше отдать под лвм весь диск, но это накладывает некоторые ограничения, в частности не получится поставить потом в зеркало диск такого же размера "на бумаге", но меньший по секторам, зато обслуживать такой диск куда проще. Если же создать хоть 1 раздел и уже его добавлять, то не будут зеркалироваться такие вещи как загрузочные сектора.
pvcreate /dev/sda

Потом из этих pv собираем "диски" VG (volume group), с которыми уже работает lvm. Можно собрать 1 диск из нескольких реальных, но это опасно: отказ любого из реальных дисков приведет к недоступности всей группы, поэтому лучше собрать рейд нужного уровня, создать на нём pv, и чисто из него сделать vg.
Получили vg-диск, который уже можно нарезать на разделы, это уровень lv (logical volumes). так что lvcreate в помощь.
Можно изменять размеры в байтах (-L +10G), в блоках по 4М (-l +100), в процентах (-l +10%FREE)

Изменение размеров
Если просто использовать свободное место из резерва, то это делается в 2 команды - lvresize и resize2fs.
Если же изменился жесткий диск (облако или dd на новый бОльшего размера) и надо расширять vg - придётся повозиться.
Тут 2 пути:
1) увеличиваем размер базового тома (возможно не всегда, например если следом уже есть раздел)
2) создаём ещё том и подключаем его в текущую структуру

1 сводит на нет и без того скудные возможности lvm, поэтому правильнее использовать 2.

Итак, 3 раздела (boot, своп, и extended, на котором еще 1 раздел уже с lvm). Чтобы изменить размер в таком случае, действия:
1) расширить физический диск. К слову, на паркинге изменение с 20 до 40 гиг - даунтайм 1.5 часа.
2) растянуть extended, в помощь parted, cfdisk, sfdisk. Есть ещё fdisk, но в дебиане он неюзабелен абсолютно, в других операционках работает как надо. Впрочем, в дебиане вообще с разметкой диска очень грустно, но это система для гуру и извращенцев. parted тоже отличается особым "умом" в любом линуксе (хинт: есть опция print free, цифры оттуда используем для mkpart). А cfdisk хорош, но любит ругаться на выравнивание разделов, причём считает любое отклонение критической ошибкой.
3) Создать на пустом месте в extended новый раздел
4) сделать на этот раздел pvcreate
5) добавить его в группу vgextend
6) увеличиваем lv: lvextend -l +100%FREE /dev/vg0/root
7) А теперь увеличим фс.. для ext* в помощь resize2fs(e2fsprogs), только для ext2 сначала перемонтировать систему в RO, иначе можно всё сломать.. если вообще даст что-то сделать. Или вообще отмонтировать. Про ext2 подробнее

Всего 7 шагов, на которые без опыта спокойно уходит неделя и есть реальные шансы всё убить.

Отдельно стоит уменьшение, но это нужно редко..

пятница, 1 июня 2012 г.

debian, apache и конфиги сайтов с _

Для удобства у меня каждый домен в отдельном конфиге, грузятся через include sites-enabled/*.conf
Такая схема работала в центоси и фре.. а в дебиане баг: если файл начинается с _, он игнорируется (так сделаны поддомены, чтобы они грузились раньше основных доменов).

Оказывается, это очередная "фича" дебиляна.

"Это патч Debian: debian/patches/008_make_include_safe.
Первый символ -- обязательно должен быть alphanumeric, остальные -- alphanumeric + подчёркивание, дефис или точка.
Варианты как лечить:
- переименовать файлы(более нормальная и распространённая практика, чтобы задавать приоритеты -- называть файлы 00-example.com и т.п.);
- пересобрать apache самостоятельно без этого патча, ну и пересобирать по мере выхода новых версий;
- почти на bugs.debian.org и объяснить, что файлы, начинающиеся на _ -- это хорошо.

Варианты расставлены в порядке их правильности/реальности осуществления(от более реальных к менее реальным)."
(линк)

Причины исключения точки мне в принципе понятны - через простой ls их не видно и можно сделать чего-нибудь не очень легко обнаружимое. Но причины запрета _ мне кажутся бредом.