Рубрика «linux» - 267

Настраиваем RAID1+LVM (для снапшотов файловой системы) в Hetzner и ServerLoft
Завалялась у меня тут инструкция, как включить LVM для корневой файловой системы на двух популярных dedicated-хостингах: Hetzner и ServerLoft. Публикую ее здесь.

LVM в Linux используется, в частности, чтобы единомоментно создавать «замороженные» снапшоты файловой системы, которые можно потом спокойно бэкапить, в то время как сервер продолжает работать. Это очень удобная функция, особенно для серверов баз данных: можно делать инкрементный бэкап базы данных, например, при помощи файлового rdiff-backup или duplicity (в том числе на удаленный FTP-сервер, бесплатное и быстрое место на котором предоставляют многие хостеры). Что касается RAID-1 (зеркалирование на 2 дисках), то оно абсолютно необходимо на сервере, чтобы при выходе из строя одного из дисков его можно было заменить, не останавливая машину. Конечно же, нужно ставить LVM поверх RAID-1.

Но беда в том, что ни Hetzner, ни ServerLoft не позволяют включить LVM при первичном создании машины «при помощи одной лишь мышки». Вместо этого они дают возможность установить один из фиксированных образов ОС, максимум что — с включенным RAID-1. Ниже — две инструкции, как переключить такую «налитую» машину на использование LVM для корневой файловой системы, а потом — короткий пример того, как работать со снапшотами. Работать будем с Ubuntu Server 12.04 minimal (для других ОС конфигурация может отличаться).Читать полностью »

Прочитав опубликованную статью Однажды фанера, atmega, да малина, я решил поделиться своей поделкой, которая доступна (не сложна) для повторения.

При создании бота ставились следующие задачи:

  • Управление ботом по беспроводной сети
  • Наличие онлайн камеры
  • Удобство программирования
Бортовой компьютер

Для бортового компьютера был выбрал двухъядерный андроидный миникомпьютер UG-802, который имелся под рукой. В качестве операционной системы — Linaro, полноценный линукс дистрибутив, основанный на Ubuntu.

Читать полностью »

Наконец, случилось то, чего многие уже давно ждали — Nvidia взялись за ум и начали реализовывать поддержку своей технологии гибридной графики Optimus в *nix системах. На данный момент реализован только рендер на карте Nvidia с последующим пробросом изображения к карте Intel. Динамическая смена видеокарты в зависимости от нагрузки пока не поддерживается.
Читать полностью »

Недавно заинтересовался реализацией std::string в libstdc++. Не в связи с принятием нового стандарта, а чтобы разобраться. Благо требования к строковму типу почти не изменились.

Основным средством для анализа кода несомненно является метод пристального вглядывания, но чтобы сузить область вглядывывания и сделать процедуру более захватывающей можно реализовать для строки идиому «трассер» подсмотренную в «C++ Templates: The Complete Guide». Трассировка позволяет выявлять подозрительные интересные операции над строками.

Как известно, std::string это псевдоним для std::basic_string<char> и нам ничего не мешает определить std::basic_string<X>. В X можно определить несколько статических счетчиков и итерировать их в конструкторе, деструкторе и остальных методах. Выполняя разные операции над такой строкой можно будет проследить эффективность применяемых алгоритмов в терминах количества операций.
Кроме того, в g++ для std::string a(«entrails»); выражение
std::cout << reinterpret_cast<char*>(*((void**)(&a)));
выведет содержимое строки. Т.е. std::string — является, по сути, указателем на char.
Вобщем, эти и другие шокирующие поднобности под катом. Читать полностью »

Доброго времени суток уважаемые Хабропользователи!

Столкнулся в недавнем времени с необходимостью использования собственного почтового сервера. Задачи были предельно просты получить собственный сервер с более менее комфортным веб-интерфейсом как для чтения почты, так и для администрирования. Перечитав добрую часть статей на эту темы я решил остановиться на ROSA Enterprise Linux Server (RELS), о котором было написано несколько статей и на хабре. Снаружи все выглядит вполне комфортно так как решение готово к употреблению из коробки, а на самом деле пришлось встретиться с несколькими ошибками о которых было написано письмо в support, в текущем релизе это не исправлено. Так что кому интересно прошу под кат.

Читать полностью »

В какой-то момент мне потребовалось демонизировать некоторое действие на python. В сети валялась куча примеров подобной деятельности разной степени собранности. Так как в дальнейшем предполагалось использовать код демонизации в дальнейшей деятельности я решил разнести на разные части настройки и собственно демона.
В итоге файлов получилось три:

  • Родительские классы — с небольшим изменением классы взятые из интернет статей
  • Классы настройки — реакция на сигналы, реакция на команды и набор статических настроек для запуска
  • Скрипт запуска — собирает первые два в собственно демона

Дальше я попробую описать логику работы всех трех.
Читать полностью »

Я фрилансер, и основная моя специализация — решения IP телефонии на основе Asterisk.

На днях ко мне обратился один из моих довольно давних клиентов, у которого в прошлом году я внедрял телефонию для call-центра интернет-магазина. Там я ставил и настраивал только и исключительно Asterisk с сопутствующими пакетами, установкой же собственно сервера и ОС (Ubuntu), как и поддержкой системы после внедрения, занимался местный сисадмин, а ко мне изредка обращались с разовыми нетривиальными задачами, требующими квалификации большей, чем простая правка контекстов в диалплане. В этот раз им потребовалось изменить логику работы CDR в части статистики принятых вызовов по очередям.

Договорившись о стоимости и сроках, я приступил к работе. Каково же было мое удивление, когда после включения логирования незавершенных звонков в CDR пошел поток записей а-ля «UNKNOWN UNKNOWN» со статусом «FAILED»! Причем попытки дозвона были направлены на несколько литовских номеров в коде +370.

Поскольку мысль о подключении извне к самому asterisk была после проверки отброшена сразу (все рекомендации по безопасности были выполнены еще на этапе внедрения, стоял fail2ban, а sip-аккаунты имели жесткое ограничение по ip), и при этом AMI был отключен, то оставался один вариант — call-файлы. Так и оказалось. Уточнил у клиента: они не использовали эту технологию и тем более не звонили в Литву. Мораль? Правильно, банальный взлом.
Читать полностью »

Приветствую, уважаемые хабрачитатели.

Предлагаю Вашему вниманию свою небольшую наработку, которая, по моему мнению, может облегчить жизнь администраторам операционных систем «породы» UNIX. Мне, как администратору Unix серверов, часто приходится предоставлять некую информацию по множеству серверов архитектурному комитету, по этому пришла идея написания «всего этого безобразия».

Смысл работы скрипта — выдача всей (ну почти всей) информации о сервере, работающем на Linux или AIX (других ОС семейства UNIX под рукой нет, но я над этим работаю).
Читать полностью »

Здравствуйте, уважаемые читатели!

Продолжая серию постов по многопоточному программированию, хочется коснуться одной фундаментальной проблемы использования сигнальных переменных в Linux, к сожалению, не имеющей пока красивого универсального решения (а может оно просто неизвестно мне). Многие, к сожалению, даже не догадываются о том, что такая проблема имеет место быть.

Рассмотрим простой пример использования сигнальной переменной:

struct timeval now;
struct timespec timeout;
gettimeofday(&now, 0);
timeout.tv_sec = now.tv_sec + 2;      // 2 sec
timeout.tv_nsec = now.tv_usec * 1000; // nsec

retval=0;
pthread_mutex_lock(&mutex);
while(!somethingHappens() && retval==0)
{
    retval=pthread_cond_timedwait(&condition, &mutex, &timeout);
}
pthread_mutex_unlock(&mutex);

Читать полностью »

Владельцы дисков WD серии Green сталкиваются с слишком частой парковкой головок. В этой статье было описано как решить проблему с помощью DOS-утилиты wdidle3 от поддержки WD. Со времен этой статьи прошло много времени, но проблема осталась. Да и сам метод решения с помощью DOS-утилиты не является гуманным.
В процессе решения этой проблемы наткнулся на программу idle3-tools, с помощью котором можно указать время парковки головок из Linux.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js