Метка «linux» - 12

Распараллеливаем процессы для ускорения вычислений и выполнения заданий в Linux

Почти все персональные компьютеры, выпущенные за последние несколько лет, обладают как минимум двухъядерным процессором. Если у тебя, читатель, не очень старый комп или не какой-нибудь бюджетный ноутбук, то, вероятнее всего, ты обладатель многопроцессорной системы. А если еще любишь играть в игры, то тебе доступно около сотни GPU-ядер. Однако львиную долю времени вся эта мощь пылится без дела. Попробуем это исправить.
Читать полностью »

Многим пользователям Linux, особенно тем, кто по тем или иным причинам перешёл на эту ОС с Windows, не хватает возможности удаления файлов «в корзину». Кроме того, наверняка, каждый, кто пользовался Linux'ом испытывал и по ошибке удалял какой-либо файл, испытывал смешаные чувства от отсутствия простой возможности восстановить утраченные данные.

В продолжение предшествующего материала, посвящённого перехвату функций ядра Linux, представляю способ использования разработанного ранее фреймворка для создания модуля ядра Linux, реализующего возможность удаления файлов «в корзину» (just for fun).

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

Некоторое время назад я начал рассказывать на Хабре про Elliptics — наше отказоустойчивое распределенное key-value хранилище (к слову, свободное и распространяемое под GPL-лицензией). Тогда я в общем описал устройство Elliptics: про архитектуру и основные принципы работы, за счет чего достигается надежность системы, как систему можно расширять, и как она ведет себя при сбоях.

Начиная с этой статьи попробуем погрузиться в Elliptics глубже: я хочу рассказать вам про внутреннюю архитектуру и различные поддерживаемые фичи.

image

Сегодня — про сетевую и программную архитектуру Elliptics и некоторые из его особенностей. Также я подробно расскажу про кэш и нашу низкоуровневую библиотеку для локального хранения данных — Eblob.
Читать полностью »

Продолжаем

Продолжаем создание кластера, начатое первой части.
На этот раз я расскажу про настройку кластера.

В прошлый раз мы закончили на том, что началась синхронизация DRBD.
Если мы в качестве Primary сервера для обоих ресурсов выбрали один и тот же сервер, то после завершения синхронизации должны в /proc/drbd увидеть примерно такую картину:

# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@debian-service, 2013-04-30 07:43:49
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate B r-----
    ns:0 nr:190397036 dw:190397036 dr:1400144904 al:0 bm:4942 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0
 1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate B r-----
    ns:0 nr:720487828 dw:720485956 dr:34275816 al:0 bm:3749 lo:468 pe:0 ua:0 ap:0 ep:1 wo:d oos:0

Самое интересное поле тут ds:UpToDate/UpToDate, означающее что и локальная и удаленная копия актуальны.

После этого переведем ресурсы в secondary режим — дальше ими будет управлять кластер:

# drbdadm secondary VM_STORAGE_1
# drbdadm secondary VM_STORAGE_2

Pacemaker

Итак, менеджер кластера.

Если коротко, то это мозг всей системы, который управляет абстракциями, называемыми ресурсами.
Ресурсом кластера может быть, в принципе, что угодно: IP-адреса, файловые системы, DRBD-устройства, программы-службы и так далее. Довольно просто создать свой ресурс, что мне и пришлось сделать для управления iSCSI таргетами и LUN-ами, об этом далее.

Установим:

# apt-get install pacemaker

Corosync

Pacemaker использует инфраструктуру Corosync для взаимодействия между узлами кластера, поэтому для начала нужно будет настроить её.

Corosync имеет достаточно широкий функционал и несколько режимов для поддержки связи между нодами (unicast, multicast, broadcast), имеет поддержку RRP (Redundant Ring Protocol), которая позволяет использовать несколько разных путей для общения между нодами кластера для минимизации риска получить Split-brain, то есть ситуации, когда связь между нодами полностью пропадает, и они обе считают что сосед умер. В результате обе ноды переходят в рабочий режим и начинается хаос :)

Поэтому мы будем использовать как репликационный, так и внешний интерфейсы для обеспечения связности кластера.Читать полностью »

Данная статья является продолжением серии, начатой в публикациях Контейнеры — это будущее облаков и Контейнеризация на Linux в деталях — LXC и OpenVZ. Часть 1.

Если публикацию про будущее можно пропустить, то статья «часть 1» будет обязательна к прочтению, чтобы понять, про что мы тут говорим :)

Контейнеризация на Linux в деталях — LXC и OpenVZ Часть 2

Техническая реализация подсистемы лимитирования аппаратных ресурсов контейнеров

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

Какие ресурсы нам нужно делить между пользователями:

  • Процессор
  • Жесткий диск (нагрузка на него)
  • Память (объем)

Для всех подобных ограничений используется подсистема cgroups. Нагрузку на ввод/вывод можно фиксировать с помощью подсистемы cgroups blkio, причем, важно отметить, что есть как возможность задания жестких лимитов в байтах/секунду и операциях в секунду (IOPS), так и возможность задания весовых коэффициентов (то есть, например, 10% от всего сервера). Память лимитируется посредством memory cgroup, тут все довольно просто — указываем объем ОЗУ, если контейнер его превышает — процесс испытывает сообщение OOM. Для процессора допустима только возможность указания нагрузки в процентах, что объясняется особенностями реализации планировщика на Linux.

Итого, для реализации разграничения использования ресурсов мы воспользовались следующими cgroups:

  • cpu
  • memory
  • blkio

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

Прелюдия

Сегодня я расскажу вам как я создавал бюджетное отказоустойчивое iSCSI хранилище из двух серверов на базе Linux для обслуживания нужд кластера VMWare vSphere. Были похожие статьи (например), но мой подход несколько отличается, да и решения (тот же heartbeat и iscsitarget), используемые там, уже устарели.

Статья предназначена для достаточно опытных администраторов, не боящихся фразы «патчить и компилировать ядро», хотя какие-то части можно было упростить и обойтись вовсе без компиляции, но я напишу как делал сам. Некоторые простые вещи я буду пропускать, чтобы не раздувать материал. Цель этой статьи скорее показать общие принципы, а не расписать всё по шагам.

Вводные

Требования у меня были простые: создать кластер для работы виртуальных машин, не имеющий единой точки отказа. А в качестве бонуса — хранилище должно было уметь шифровать данные, чтобы враги, утащив сервер, до них не добрались.

В качестве гипервизора был выбран vSphere, как наиболее устоявшийся и законченый продукт, а в качестве протокола — iSCSI, как не требующий дополнительных финансовых вливаний в виде коммутаторов FC или FCoE. С опенсурсными SAS таргетами довольно туго, если не сказать хуже, так что этот вариант тоже был отвергнут.

Осталось хранилище. Разные брендовые решения от ведущих вендоров были отброшены по причине большой стоимости как их самих по себе, так и лицензий на синхронную репликацию. Значит будем делать сами, заодно и поучимся.

В качестве софта было выбрано:

  • Debian Wheezy + LTS ядро 3.10
  • iSCSI-таргет SCST
  • DRBD для репликации
  • Pacemaker для управления ресурсами кластера и мониторинга
  • Подсистема ядра DM-Crypt для шифрования (инструкции AES-NI в процессоре нам очень помогут)

В итоге, в недолгих муках была рождена такая несложная схема:
imageЧитать полностью »

Netavis Observer — программный продукт для организации видеонаблюдения с помощью IP-камер на базе Linux-сервера.

Netavis Observer написан на Java, так же используются такие продукты как Apache Tomcat, Webmin, Munin, Mysql.

Существует два варианта Netavis Observer — Bundled(поставляется в виде установочного iso-образа на базе Centos5 или Centos6) и Unbundled — набора rpm-пакетов для самостоятельной установки на сервер под управлением Centos или RedHat.

основные функциональные возможности и особенности:

— Поддержка популярных IP-камер и видеосерверов, таких как AXIS, ArecontVision, D-link, ACTi, Sanyo, Samsung и других (полный список можно посмотреть на сайте Netavis).
— Поддержка разделения прав доступа к камерам, просмотру архива, экспорту видео, управлению PTZ (управление поворотными камерами) с возможностью создания групп и пользователей под конкретную ситуацию(только просмотр онлайн-видео, просмотр онлайн-видео и архива, но без права экспорта видеоматериала из архива и т.д.)
— Наличие клиента под Windows, IPhone/IPad.
— Возможность работать через браузер (требуется установка JAVA).
— Возможность создания кластера для работы с большим количеством камер.
— Поддержка Active Directory (в редакции Enterprise).
— Поддержка Анализа видео ( iCAT — обнаружение движения с вариациями, обнаружение саботажа, обнаружение удаленного объекта, маска конфиденциальности).
— Настройка качества отображения видео онлайн и при записи в архив.
— Настройка расположения камер и формирование пользовательских наборов с возможностью копирования этих наборов другим пользователям.
— Возможность ограничения полосы пропускания для камер и клиентов при просмотре живого видео и архива.
— Экспорт архива в AVI или SAFE (создается исполняемый файл .EXE c примитивным плеером и собственно видео, можно экспортировать сразу нужное количество камер за один промежуток времени, будет создан один EXE-шник).
— Возможность запуска графической оболочки непосредственно на сервере — запускается сессия LXDE, после чего запускается клиент Netavis.

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

  • Под рукой есть лишняя флешка?
  • Есть желание заиметь удобный инструмент для борьбы с компьютерно-системными болезнями?
  • Не хочется таскать стопку дисков?
  • Пользуетесь Debian или его внучкой Ubuntu, или, может, они есть на виртуалке, заботливо созданой заранее?
  • Любите GUI там, где они действительно уместны?

Расскажу-ка я о LiveUSB Multiboot. Это опен-сорс программа (под GPLv3), которая даёт возможность легко и просто создать загрузочную флешку и кинуть пару образов со всем самым нужным, чтобы при случае запуститься с неё и не мучаться с ношением и записью дисков.
Читать полностью »

Недавно на хабрахабре вышла статья о java на raspberry pi, увидев название которой было много ожиданий, а под катом оказался банальный Hello World!

Дело в том, что ко мне как раз ехала моя малинка и хотелось получить ответы на следующие вопросы:

1. Сравнима ли скорость работы java на малинке и настольном компьютере?
2. Насколько удобно работать с java на raspberry?
3. Есть ли адекватные библиотеки для работы с GPIO?

Вот на эти вопросы я и попробую дать ответы в этой статье.

Кому интересно: добро пожаловать под кат (графики и фотографий обнаженной малинки там не будет)

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

image

Эта заметка является косвенным продолжением моей первой публикации Сборка Android под Mac OS X и имеет аналогичную цель — решение проблем сборки относительно старых версий Android 4.0.x.

Коротко вводная. В одном из проектов я занимаюсь доработками оригинального кода Android для создания прошивки под специфичную железку. Версия для сборки была выбрана уже относительно старая — AOSP 4.0.4, но на ней базируется стабильная ветка кода от производителя железки. Первоначально я работал на MacOS, но для этого проекта решил переключиться на Linux для удобства разработки. Итак волею судеб я перешел с MacOS на более менее свежий Ubuntu Linux 12.04.3, рекомендованную на данный момент версию Linux для сборки Android.
Читать полностью »


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