четверг, 25 февраля 2016 г.

Отлючение IPv6 в Linux

Чтобы отключить IPv6 в Linux добавьте в /etc/sysctl.conf (в /etc/sysctl.d/50-disable-ipv6.conf для Debian) следующие настройки:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

Дополнительно добавьте настройки для всех интерфейсов, отличающихся от lo и eth0. Для применения настроек выполните команду:

$ sudo sysctl -p /etc/sysctl.conf
$ sudo service procps start # Debian

Это поможет решить проблемы с таймаутами того же apt-get update, который стучится на зеркала, имеющие адрес IPv6, но их сервисы отвечают только по IPv4.

пятница, 19 февраля 2016 г.

Получение списка master browsers и logon servers для домена

Имеется NT4-style домен SAMDOM под управлением Samba 3.6.x. Чтобы посмотреть список master browsers и logon servers для этого домена подойдет команда:

$ nmblookup 'SAMDOM#1B' 'SAMDOM#1C'
192.168.0.23 SAMDOM<1b>
192.168.0.23 SAMDOM<1c>
192.168.0.111 SAMDOM<1c>

Это помогло мне найти причину внезапно отвалившегося входа в домен под Windows 7 (грузился сохраненный профиль).

Вражеским девайсом (192.168.0.111) оказался QNAP NAS который будучи подключенным к LDAP авторизации внезапно решил, что он заодно и logon server для домена SAMDOM. Найти способа оторвать этот интеллект, оставив авторизацию пользователей через LDAP, в настройках мне не удалось.

В качестве костыля пришлось подредактировать скрипт /etc/init.d/smb.sh и запретить настраивать "domain logons = yes" при старте сервиса. Но это поможет только до первой перезагрузки NAS.

вторник, 16 февраля 2016 г.

Редактирование метаданных в PDF файле

Если нужно отредактировать метаданные в PDF файлах (например задать автора), то для этого подойдет exiftool из пакета libimage-exiftool-perl.

$ exiftool -Author='Author Name' file.pdf
    1 image files updated

Посмотреть метаданные PDF можно так:

$ exiftool -a CommunityDiskBackupDesign.pdf
ExifTool Version Number         : 9.74
File Name                       : CommunityDiskBackupDesign.pdf
Directory                       : .
File Size                       : 477 kB
File Modification Date/Time     : 2015:10:28 12:10:59+03:00
File Access Date/Time           : 2016:02:07 14:20:48+03:00
File Inode Change Date/Time     : 2015:10:28 14:54:36+03:00
File Permissions                : r--------
File Type                       : PDF
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : No
Page Count                      : 24
Page Mode                       : UseNone
Author                          : Bacula Systems SA
Title                           : 
Subject                         : 
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.14
Create Date                     : 2014:11:25 18:38:13+01:00
Modify Date                     : 2014:11:25 18:38:13+01:00
Trapped                         : False
PTEX Fullbanner                 : This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian) kpathsea version 6.1.1

Чтобы удалить содержимое тега нужно задать ему пустое значение:

$ exiftool -Producer= -Creator= file.pdf
    1 image files updated

пятница, 12 февраля 2016 г.

Буфер обмена в X11

Когда все работает хорошо, то редко задумываешься как оно устроено. А когда оно работает плохо, то ты не знаешь как его чинить, потому что не знаешь как оно устроено.

Коллега как-то рассказал мне, что если в Linux скопировать текст в приложении а потом закрыть его, то содержимое буфера обмена пропадет. Я попробовал воспроизвести у себя, но ничего не пропадало. Тогда я понятия не имел как работает буфер обмена, но прочитав это и это я понял почему проблема есть у коллеги и ее нет у меня.

Разница в том, что у меня запущен менеджер буфера обмена (parcellite) и он сохраняет содержимое PRIMARY и CLIPBOARD в момент, когда я закрываю приложение. Вот вам и причина установить менеджер буфера обмена.

среда, 10 февраля 2016 г.

Обновление базы drivedb в smartmontools

Если в выводе smartctl есть неизвестные атрибуты (Unknown_Attribute), то можно попробовать обновить базу drivedb. В Debian для этого есть скрипт update-smart-drivedb

$ sudo update-smart-drivedb

Если при выполнении выдаст ошибку /usr/share/smartmontools/drivedb.h.error: rejected by /usr/sbin/smartctl, probably no longer compatible, то нужно изменить URL по которому скрипт скачивает базу.

Откройте файл /usr/sbin/update-smart-drivedb в текстовом редакторе и найдите переменную SRCEXPR (смотрите в районе 43 строки). Замените его значение на 'http://sourceforge.net/p/smartmontools/code/HEAD/tree/$location/smartmontools/drivedb.h?format=raw'.

Теперь обновление базы пройдет нормально.

понедельник, 8 февраля 2016 г.

Собрал пакет pidgin-skypeweb 1.1 под Debian/Ubuntu

Появилась новая версия плагина skypeweb 1.1 для pidgin (а заодно и всего на libpurple). В новой версии реализовали передачу файлов и логин через Live.

Я проверял передачу файлов - работает частично. Между разными клиентами web.skype.com передаются крупные файлы (насколько крупные я не разбирался), а мелкие файлики на 100-300 kB не передает (хотя и пишет что файл отправлен). Из нативного скайпа в webskype файл не пришел.

Групповые чаты из нативного скайпа подтянуло частично. Возможно работают только чаты, созданные через web.skype.com.

Новая версия уже доступна в моем репозитарии.

вторник, 19 января 2016 г.

Оптимизация хранения данных

Предыстория

Есть сервер используемый для веб разработки. На сервере различные конфигурации сайтов (версии PHP, MySQL, Apache и т.д.) настроены в виде контейнеров OpenVZ. Для комфортной работы его наиболее востребованные ресурсы (исходники и базы данных) хранятся на SSD (Intel DC S3500 480G в RAID1), а прочие данные на HDD (обычные SATA диски в RAID1). Посредством LVM хранилище на SSD разбито примерно пополам между исходниками и OpenVZ (основной объем - базы данных).

С некоторых пор в исходниках стало недоставать свободного места. Приходится просить разработчиков убирать ненужные исходники или архивировать давно неиспользуемые. Поскольку atime отключен, то трудно сказать наверняка когда пользовались этими данными, можно ли их архивировать и нужны ли они вообще. Кое-как это работало в самом начале, но позже народ "устал" и делать отказывается под разными предлогами. Я их не виню :)

Поиск решения

Несмотря на внушительный общий объем исходников (около 180G) объем "горячих" данных невелик - 10-30G. С этими данными разработчики работают в данный момент и именно к ним нужно обеспечить быстрый доступ на чтение/запись. Остальной объем данных считается "холодным" и он может потребоваться спустя пару дней, недель или не потребоваться вовсе. Тут предсказать трудно.

Поскольку экстенсивный рост (докупить еще SSD дисков) довольно дорог (сейчас два дополнительных SSD класса Intel DC S3500 на 480G стоят примерно 900$), то я пробую пойти интенсивным путем и оптимизировать использование уже установленных.

Мне нужно ускорить массив обычных SATA дисков через использование SSD. По предварительной прикидке под эту задачу подойдут:
Года два назад у меня уже был опыт использования FlashCache в режиме writeback. Понравилось, что он может быть использован поверх устройства с данными (cache backend) без предварительной подготовки этого устройства. В режиме writeback (на ssd кешируется и запись и чтение) позволяет сохранять состояние кеша между перезагрузками.

EnhanceIO является "улучшенной" версией Flashcache и использует его наработки. Что конкретно там улучшили я пока не разбирался.

Про dm-cache я слышал, но использовать не доводилось. Знаю только, что он требует форматирования cache backend перед использованием.

Аналогично bcache - только слышал, но пользоваться не доводилось.

Btier к кешированию не имеет никакого отношения. Это tiered storage который самостоятельно балансирует данные между разными бэкендами (ssd, sata, iscsi, etc) в зависимости от их использования.

Flashcache, EnhanceIO, dm-cache, bcache - это все варианты реализации кеширования записи на hdd через ssd. Они отличаются деталями реализации, но суть работы у них одна. А вот btier это интересный вариант. Он позволяет создать многоуровневую схему хранения данных значительного объема и автоматически мигрировать данные между уровнями в зависимости от их использования. Попробую для начала его, а дальше будет видно.