libvirt и qemu-kvm

Короче, я тут на днях беглым взглядом просматривал документацию на libvirt, на предмет того, как можно автоматизировать процесс извлечения ядра и initrd из файловой системы гостя. И оказалось, что libvirt несколько раз запускает файл с хуком, в строку запуска его отдавая параметры и xml’ку виртуальной машины. Для меня это стало, прямо скажем, открытием. Во времена появления libvirt’а, модой на системы виртуализации правила VMware, фактически предлагавшая десктопную виртуализацию, отмасштабированную до размеров сервера. Основной целевой аудиторией были виндоводы, которым было лень иметь под не прожорливые сервисы отдельные физические машины. Да, в первую очередь речь шла именно о ссаживании на одной железке того, что нельзя мешать в рамках одной ОС, а не об обеспечении быстрой миграции и не о прочих «киллер-фичах виртуализации». Конечно[…]

Orange Pi Plus 2E

Копаюсь тут с Orange Pi Plus 2E… Так вот, не знаю, читает ли мой блог наш ОТК’шник… Не знаю. Но, если вдруг Саня ты это читаешь, то просто знай, что они смогли: две заказанные одинаковые платы мало того, что скручены винтом (по-разному, кстати), содержат не повторяющиеся дефекты пайки и промывки, так ещё одна содержит в NAND’е образ u-boot от начала 2017 года, а вторая — android. Хотя обе должны быть пустыми. Такой вот контроль качества и обеспечение повторяемости изделий у Xunlong’а. U-boot из Debian testing не умеет эту плату всё ещё. Просто собрали без неё. Бывает. Пока ещё представлено ядро 4.12, там хоть и есть некоторые новшества, типа OTG и сети, но нет биндингов в devicetree. Собираю 4.13, там появились[…]

Много серверов в стойках

Отказоустойчивая система — это очень легко, на самом деле. Залог успеха — вменяемая архитектура. Но может так случится, что заказчик не умеет в архитектуру. От слова «совсем». А его программисты не умеют в хороший код и лаконичные решения. Но уж очень они хотят получить защищённый от отказа оборудования вычислительный комплекс, не содержащий «специфических» решений (типа внешних дисковых контроллеров с двумя target-каналами). Понятно, что речь идёт о кластере из двух машинок с DRBD. И надо это так сделать, чтобы не влипнуть в настройку кособокого ПО заказчика… Короче, нужно разместить «корень» (корневой раздел) на DRBD! Попробуем собрать подобное решение? Для этого нам нужны две машины схожей конфигурации. Требуется заранее определится с сетевыми именами машин и их адресацией. В примере будут фигурировать хосты[…]

Новый двигатель в разборе

Пока DRBD судорожно синхронизирует данные между двумя виртуальными машинами, у меня есть пара минут, чтобы написать о дне ушедшем. С самого утра меня не покидало ощущение чего-то пропавшего давным-давно. Этакое дежавю через несколько лет. Конечно не 2007ой, но вполне 2010й. Ведь день начался с экстренного забега в соседний район, с целью улаживания вопросов с недвижимостью, потом я оказался на Улице Подбельского, где, как в старые добрые времена, беднел деньгами и обогащался запчастями, а закончил день на Площади Ильича… Покупая редкий двухсекционный масляный насос оригинальной конструкции, возможно последний в своём роде. Давно так не было… Нахрена я разбираю жутко поджатый мотор? Потому что захотелось дефорса. И облегчённого маховика. Чтобы просто был мягкий мотор на мой одиночный мотоцикл, не отягощённый боковым прицепом.[…]

Урал приехал, Драгстар уехал

Беды, они от чего, собственно? От отрицания очевидных вещей, в основном… Так вот, я тоже этим иногда занимаюсь. Ярким примером может стать история покупки моего Урала. Ведь перед этим событием я избавился от всех мотоциклов: один Урал отдал, редкий заводской 825й соляк продал, а Магну продал по цене чермета. Ибо нафиг не нужна. Лишь для того, чтобы возить свою жопу и жопу… девушки (я думал, что это уже семейная жизнь), был куплен Даргстар Кастом 1100. Думал, что это позволит мне проще относится к двум колёсам — обслуживаться в сервисе и ездить, когда захочется. Но… Но машина марки ВАЗ аккуратно тюкнула Драгстар в бочину, наглядно показав и как ведёт себя девушка в кризисной ситуации (в итоге, через некоторое время была отправлена[…]

Наш форум про оппозиты

Давно не писал. Был занят. То переезд в Новогиреево съедал всё моё время, потом подключилась работа… и маленький побочный проект, а именно — очередной сайт про отечественные оппозиты. Ну да, ещё одним сайтом об Уралах и Днепрах стало больше. И всё так же, с упором на форум. Кстати, форумов не лепил с 2007го года. И я решил сделать всё в лучших традициях даже более ранней эпохи! Итак, что это сейчас: форум на базе punbb; вместо движка сайта — публикатор, черпающий данные из форума; управление публикацией доступно администраторам и модераторам из форума, соответствующий код интегрирован в fluxbb. Ну да, бложик на WP, где всё настроено из админки, а сайт и форум нового проекта — на fluxbb, с тоннами внесённого самописного кода.[…]

xfce4-terminal и rm -Rf

Когда-то весьма давно я топил за использование vde_switch для организации сети виртуальных машин в домашних условиях. Использовал я его вместо мост-устройства, как этакий сетевой хаб. Ну и на каждую сеть по такому хабу. Потом захотелось окошек, virt-manager’а и прочих извращённых утех от Red Hat’а. Но я вернулся… Короче, отринем же этот велосипед на базе linux-bridge/netfilter/dnsmasq в пользу настоящего виртуального сетевого L2-свитча! С возможностью раскидать L2-сегменты внутри этого свитча как вам заблагорассудится! Итак, конфиг vde_switch’а: port/setnumports 24 port/createauto port/createauto port/createauto port/createauto port/createauto port/createauto port/createauto port/createauto port/createauto port/createauto port/createauto port/createauto vlan/create 1 vlan/create 2 vlan/create 3 port/setvlan 2 1 port/setvlan 3 1 port/setvlan 4 1 port/setvlan 5 1 port/setvlan 6 2 port/setvlan 7 2 port/setvlan 8 2 port/setvlan 9 2 port/setvlan 10[…]

Много серверов в стойках

Я думаю, что никто не будет спорить с наличием в IT-сообществе трендов на понижение стоимости решений и повышение их эффективности. Под стоимостью при этом понимается как стоимость инфраструктуры и оборудования, так и стоимость обслуживания решения. Мощности — в аренду! Админ — на аутсорс! Решения — только типовые! Вершиной этого «развития» стало «приватное виртуальное облако», — масштабный кластер виртуализации с централизованным управлением, где клиенты могут сами управлять своими виртуальными машинами, их количеством, выделением вычислительных ресурсов под них. А тарифицируется только то, что клиент распределил под свои машины. Почти что фактическое использование ресурсов. И это ещё не все: клиенту нет дела до фактической архитектуры среды виртуализации. Так если выйдет из строя тот сервер, где исполняется его виртуальная машина, то средства управления облаком[…]

Vim-gtk с perl-документом

Итак, мы знаем, как определяется спам и как его положить в отдельную папку на сервере. Как вы понимаете, всегда будет некоторое количество спама, которое таки прилетит во «Входящие», и некоторое количество нормальных писем, которые улетят в «Спам» (Junk). И нам надо дать пользователю шанс оперативно известить нас… Нет, не так. Нас оповещать не надо — мы ленивые. Пусть он это сообщить нашей проверочной программе, то есть SpamAssassin’у, в нашем случае. В вики dovecot’а есть статья, но она не очень полезна, если у нас разные uid’ы на ящиках, так как там предполагается, что sa-learn вызывается из скрипта (без перенаправления ввода нельзя отдать sa-learn’у письмо, так что без «обёртки» не обойтись) от имени пользователя. То есть с тем же uid’ом, что и[…]

xfce4-terminal и rm -Rf

Я писал об SpamAssassin не так давно. Ну вот отметили мы письмо как спам? И чего? Удалять его сразу? Нет, это сильно не вариант. Ибо всегда есть шанс того, что спамом оно не было, а пользователь его очень-очень ждал… И чего делать? Правильно — не удалять до определённого порога. Например мы отмечаем от пяти балов письма как спам, но удаляем сразу от двенадцати. Но и отдавать его во входящие пользователю тоже не красиво. Но мы же можем его отсортировать в отдельную папку, прямо на сервере. В этом нам поможет sieve-скрипт следующего содержания: require [«fileinto»,»imap4flags»]; if header :contains «X-Spam-Flag» [«YES»] { setflag «\\seen»; fileinto «Junk»; stop; } else { # The rest goes into INBOX # default is «implicit keep», we[…]