Зависающие lvm-снапшоты

Периодически при бэкапах у меня подвисали lvm-снапшоты, при попытке их удаления после окончания копирования вылезало что-то вроде:

  Unable to deactivate open srv01-backup-cow (253:4)
  Failed to resume hb.
  libdevmapper exiting with 1 device(s) still suspended.

После этого нельзя было ни удалить снапшот, ни сделать что-либо, затрагивающее lvm, все процессы просто повисали в состоянии D. Приходилось перегружать сервер через ресет или /proc/sysrq-trigger, увы.

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

dmsetup resume /dev/mapper/srv01-root
dmsetup remove /dev/mapper/srv01-root-real

первый день yandex-root-2015

0. проблемы вылезли с запуском виртуалки у двоих из трех членов нашей команды: в hyper-v почему-то диск виделся как fd0. работали с одной, запущеной в kvm, причем с virtio драйвером диска она так же стартовать не хотела. вход на виртуалку получить было несложно через init=/bin/sh

1. ssl

первая сложность — понять тот момент, что нужен ссл-сервер со своим сертификатом, а не тем, что приложен к заданию.
при подписывании своего сертификата могла возникнуть ошибка с тем, что не совпадают subj у ca и подписываемого сертификата, лечилось заменой string_mask в конфиге с utf8only на pkix.
так же в системе была установлена поломанная версия openssl, в связи с этим ни апач, ни нжинкс не стартовали, лечится установкой пакета из репозитория.
конфиг ссл-вхоста написать, думаю, может каждый.

2. MariaDB repair

сложностей не вызывает, поставить пакет из репозитория, добавить в skip-grant-tables режиме нужного пользователя, создать от него временную таблицу, подсунуть frm от этой таблицы в нужную.
во время проверки создается правило ната на ип 192.168…, достаточно добавить его, например, на lo интерфейс.

3. Binary

поставить mono и strace, запускать бинарник через strace и ставить нужные либы до победного.

4. Mongo

поставить mongodb и mongodb-tools, запустить монго с данными из задачи, сдампить его, после этого можно этот монго отключить (не знаю, возможно, можно было преобразовать его).
затем запустить 2 шарда в своих каталогах и на своих портах (мы использовали 10001 и 10002), запустить конфигдб и монгос, собрать кластер, сделать в нем бд, загрузить в нее дамп и создать шарденую коллекцию по ключу _id, далее достаточно дождаться отработки балансировщика.

5. Strange protocol

самая стремная задача 🙁
реально ничего особенного, работает по ПРОТОКОЛУ enet, который живет по адресу http://enet.bespin.org/, именно в этом протоколе надо было делать эхо-сервер, а не просто в udp.

6. File

файл цепляется через лупбек, это будет lvm-раздел с 2 btrfs subvolume, на втором искомый файл.

7. MariaDB tuning

достаточно создать ключи на колонки hits и size, проблема только в том, что /tmp подмонтирован в tmpfs, на которой по умолчанию места всего 256М, решается либо отмонтированием tmpfs, либо правкой переменной tmpdir.

8. HG

операция называется delete large file from history, делается через convert старого репа в новый с исключением 2.scm.gz, *.gz исключать нельзя, далее просто hg serve -d в каталоге нового репа.

9. Strange file

тут два слова: immutable file. sapienti sat.

 

в итоге заняли 22 место 🙁 надо было внимательнее читать дамп в strange protocol.

smartctl и HP SmartArray P410

Впервые столкнулся с контроллером, который обслуживается драйвером hpsa. Пришлось помучиться с доступом к информации о состоянии дисков. В итоге оказалось, что к дискам нужно обращаться следующим образом:

smartctl -a /dev/sda -d sat+cciss,Х

HW RAID в Debian

Обнаружил полезный для владельцев железных рейд-контроллеров репозиторий Debian/Ubuntu, который так и называется HWraid.

Подключается оч. просто, например, для Squeeze нужно добавить в /etc/apt/sources.list:

deb http://hwraid.le-vert.net/debian squeeze main

Ключ для подписи, увы, авторы не прилагают, т.ч. просто используем -y —force-yes при установке пакета.

Установка redmine на Debian Squeeze

Попросили сделать хост с редмайном для нескольких проектов, ставлю на Debian 6. В репах squeeze редмайн какой-то совсем старый, аж версии 1.0.1, а в бекпортах 1.1.2, хочется же последний, поэтому ставить буду из testing (или можно из unstable).

В файле /etc/apt/sources.list добавить строчку для testing:

deb http://ftp.us.debian.org/debian/ testing main contrib non-free

Сделать привязку к squeeze в /etc/apt/preferences или preferences.d, например, так

Package: *
Pin: release n=squeeze
Pin-Priority: 700

Package: *
Pin: release n=wheezy
Pin-Priority: -1

Далее установить редмайн командами

apt-get update
apt-get install mysql-server
apt-get install -t wheezy redmine redmine-mysql

Обновить придется половину системы, так что это будет уже не squeeze в чистом виде, но уж если хочется…

Теперь надо выдать через веб только что установленную систему. Есть множество способов это сделать, я использую apache+mod_fcgid

apt-get install apache2 libapache2-mod-fcgid libfcgi-ruby1.8

Создаем сайт для редмайна в /etc/apache2/sites-available/redmine с таким содержимым

SocketPath "/var/run/redmine/sockets/default"
<VirtualHost *:80>
  ServerName redmine.example.com
  DefaultInitEnv RAILS_RELATIVE_URL_ROOT ""
  DefaultInitEnv X_DEBIAN_SITEID "default"

  Alias "/plugin_assets/" /var/cache/redmine/default/plugin_assets/
  DocumentRoot /usr/share/redmine/public

  <Directory "/usr/share/redmine/public">
    Options +FollowSymLinks +ExecCGI
    Order allow,deny
    Allow from all
    RewriteEngine On
    RewriteRule ^$ index.html [QSA]
    RewriteRule ^([^.]+)$ $1.html [QSA]
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
  </Directory>
</VirtualHost>

Включаем сайт

a2ensite redmine

и рерайты

a2enmod rewrite

правим права на некоторые каталоги

chown -R www-data /var/run/redmine

перезапустим апач

service apache2 restart

и можно заходить на свежеустановленный редмайн как admin / admin. Не забудьте поставить скин BaseCamp.

debian squeeze 6.0.3 openvz template

Странно, что в сети нет явных ссылок на шаблон Debian Squeeze для OpenVZ с нормально обновленными пакетами. Решил выложить у себя, мало ли кому пригодятся.

Версия amd64

Версия i386

Клонирование линукс-систем

Обычно у меня каждый сервер выходит уникальным, т.к. проекты и цели везде разные, а вот тут столкнулся с тем, что надо развернуть идентичный набор на 20 физических серверов (помочь попросили).

Взял по привычке Clonezilla, которая неплохо себя зарекомендовала при копировании систем на Windows. Странным образом она не только отказалась работать с софтовым рейдом в линуксе (ну это было ожидаемо), но и вообще предложила копировать диски посекторно, что при объеме в 1 ТБ обещало вылиться в 20 часов копирования только одной системы.

Почему так? Непонятно, может я что упустил в Clonezilla? В итоге так и пришлось руками копировать разделы, создавать новый софт-рейд на клоне и копировать все с мастера через ssh+rsync, восстанавливать загрузчик — путь в общем знакомый. Странно, почему такой фигни нет из коробки?

PS: зато узнал, как убить заголовок ненужного md-рейда:

mdadm --zero-superblock /dev/sda (ну или что-то еще)