• Последнее обновление было в 15:45:12 2016-06-29 MSK
  • Предложение включить в libc новую функцию brexit (Binary Remove EXIT)
    в 01:51:34
    Марк Балмер (Marc Balmer), уже много лет принимающий участие в разработке BSD-систем и PostgreSQL (например, Марк автор проекта по добавлению виртуальной машины Lua в ядро NetBSD) обыграл решение по выходу Великобритании из Евросоюза предложением включить в стандартную библиотеку libc новую функцию brexit(3) с реализацией дополнительного метода завершения программы. Ключевым отличием от стандартного вызова exit(3)) является последующее удаление бинарного файла приложения. После начала серьёзного обсуждения целесообразности создания такой функции, Марк уточнил, что имя brexit означает "Binary Remove EXIT" и поинтересовался об интересе к проведению голосования, обыграв выражение "BRitain EXIT" и события в Евросоюзе.
  • При портировании во FreeBSD утилиты doas, аналога sudo от OpenBSD, возникла опасная уязвимость
    в 18:55:49
    В дерево портов FreeBSD добавлена утилита doas, представляющая собой упрощённый аналог программы sudo, позволяющий выполнять команды от имени другого пользователя. Утилита развивается в недрах проекта OpenBSD в ответ на усложнение современных выпусков sudo, которые не отвечают требованиям OpenBSD по безопасности и зависимостям.
  • Запуск программ по расписанию - cron
    в 15:43:17 с метками nas, nas4free
    Для автоматического запуска повторяющихся задач в *nix есть утилита cron. Говорят - от греческого χρόνος, кронос, время. В nas4free настройка cron автоматизирована, см System|Advanced|Cron

    Если нажать на плюсик, откроется такой диалог. Ставим галочку Enable справа-сверху



    Command - какую именно команду выполнять. Здесь для примера я удаляю командой rm некий временный файл. Обратите внимание, что все пути при вызове cron следует писать в полном виде. Не факт, что в момент исполнения командный интерпретатор будет знать пути.

    Who - от какого пользователя будет выполняться команда

    Description - комментарий

    Shedule time - самое главное, когда выполнять. Думаю, табличка достаточно интуитивно понятна. В данном примере - по пятницам, выпадающим на 13-е чисто месяца, ровно в каждый нечётный час суток.

    Кнопка Run now служит для тестового исполнения команды прямо сейчас.
    Кнопка Add добавляет настроенную задачу в список.

    NB таким образом можно запускать задачи не только в хост системе, но и в клетке-jail через команду jexec. Но это IMHO не удобно. В клетке можно настроить собственный cron. Мы такое, кстати, уже делали при настройке torrentmonitor, см пункт 14
  • Проект ubuntuBSD будет поставляться с OpenRC и BusyBox
    в 06:41:29
    Проект ubuntuBSD, в рамках которого развивается комбинированная операционная система, построенная на основе пользовательского окружения Ubuntu и ядра FreeBSD, объявил об использовании в первом выпуске.
  • Проверка целостности данных на ZFS NAS - scrub
    в 01:40:57 с метками nas, nas4free, zfs
    Неспешно прикидывая таблицу функциональности NAS обнаружил в своих инструкциях досадный пробел. Данные надо не просто хранить. Хорошо бы время от времени проверять, что всё в порядке. Ведь холодные данные на дисках имеют свойство незаметно портиться, "протухать". К счастью, у нас на NAS zfs, умеющий адресовать эту проблему.Сегодня обсудим как.

    Немного теории
    Перевод из Вики по ссылке выше

    Проведённое NetApp исследование в реальной жизни на более чем 1,5 млн жестких дисков в течение 41 месяцев выявило более 400 000 примеров протухших данных, из которых более 30 000 не были обнаружены контроллерами аппаратных RAID. Еще одно исследование, проведенное ЦЕРН в течение шести месяцев и с участием около 97 петабайт данных, показало, что около 128 мегабайт данных были необратимо повреждены.

    Но это на RAID контроллерах и дисках корпоративного класса. Ваши и мои данные на десктопном железе протухают несколько быстрее.
    Традиционное решение проблемы проверки целостности данных - хранение вместе с ними контрольной суммы. Считываем данные, сверяем суммы, если OK - считаем данные не повреждёнными.
    А традиционное решение проблемы восстановления повреждённых данных - избыточность. Хранение 2 и более копий (зеркало, как пример RAID1) и расчёт, хранение и сличение кодов чётности ( как пример - RAID5).

    Одно из важнейших положительных свойств ZFS состоит в том, что и проверка целостности и восстановление повреждений (если есть избыточность - mirror или raidz) производится автоматически на уровне файловой системы при любом чтении данных. Но читать все данные не всегда удобно. Есть команда scrub (от англ. чистить, мыть, скрести)

    ВАЖНО. Во время скраба пул доступен, но его производительность уменьшается. Хотя приоритет - за другими задачами. Поэтому, к примеру, качать с-на пул торренты и одновременно делать ему скраб идея так себе. Работать будет, но долго и с избыточной нагрузкой на диски.

    На практике
    Из командной строки вызывается
    zpool scrub Pool
    - для пула по имени Pool
    Если дать ключ -s текущий скраб будет остановлен
    zpool scrub -s Pool

    В nas4free вызов команды zpool scrub выведен и в вебгуй
    Через Disks|ZFS|Pools|Tools скраб можно запустить (и остановить при необходимости)


    После запуска результат можно посмотреть через
    zpool status
    в командной строке
    Или в Disks|ZFS|Pools|Information в вебгуе

    На картинке выше где scan: сказано, что идёт scrub, но так как он только начался, оставшееся время определить нельзя, надо подождать. Со временем скорость растёт, но для больших пулов полная проверка запросто может продлиться порядка суток. Скорость зависит от
    - производительности процессора
    - заполненности пула (в отличие от аппаратных RAID пустое место НЕ читается)
    - скорости дисков. Особенно если диск при смерти, скраб может затянуться очень надолго.

    Я рекомендую после запуска скраба взглянуть на статус сразу и ещё раз минут через пять. В норме все три правых столбца должны быть нулями. Но нередко там появляются небольшие цифры - это как раз сообщение о том, что скраб проверяет и по возможности исправляет данные (и метаданные).

    Если на одном из дисков лезет несколько десятков (и более) ошибок - у вас проблема. Скорее всего (в этом порядке) SATA кабель, сам диск, порт контроллера подыхает и нуждается в замене. Либо диску не хватает питания.
    Советую остановить скраб и взглянуть в логи, на смарт этого диска и поискать корень проблемы.

    Если десятки (и более) ошибок лезут на ВСЕХ дисках - НЕМЕДЛЕННО ВЫКЛЮЧАЙТЕ СКРАБ, а затем и весь NAS. Хорошие шансы, что у вас битая память. Проверяйте, гоняйте мемтест. Хотя по некоторым практическим примерам ZFS удаётся отработать львиную долю, более 99%, ошибок вызванных сбоями в памяти, всё же битая память без контроля чётности - годный способ загубить всю информацию на пуле при скрабе. Именно поэтому в идеальном мире (и в корпоративной практике) ZFS используют на ECC (то есть с аппаратным контролем чётности) памяти. Впрочем, как и остальные файловые системы. Но Intel решила, что домашний пользователь рылом не вышел для ECC. А AMD стала слишком слаба, чтобы спорить хотя было время...

    Кстати, скраб можно запускать по крону. Но именно из-за возможности вляпаться в битую память я этого делать НЕ советую, если память у вас не ECC. Да, это крайне маловероятная ситуация. Битая память должна почти работать. Шалить самую малость, не вешать систему. Но всё же гадить. Поэтому у сотен камрадов, которые общаются в профильной ветке на хоботе, такого не было, чтоб битая память именно и только на zfs повлияла. Но в Сети я выловил пару сообщений. Так что хоть и крайне маловероятно - но бережёного...

    И, наконец, как часто делать скраб? IMHO в домашней практике не чаще раза в месяц и не реже раза в год на каждом из пулов.
  • Видишь somaxconn? И я не вижу. А он есть
    simpleadmin в 11:40:41 с метками Системное администрирование, *nix, FreeBSD, listen, somaxconn, soacceptqueue
    Мне всегда нравилась FreeBSD. Нравилась лаконичностью, простым и понятным расположением и назначением файлов, элементов, структур и какой-то «тёплой», «домашней» консервативностью. Но с выходом 10-ки я замечаю, что она всё больше от меня отдаляется и я всё больше не понимаю что и зачем в ней меняется. И дело даже не в том, что не развиваются те вещи которыми была всегда сильна FreeBSD и которые нужно развивать, как морально и архитектурно устаревший сетевой стек. Дело в мелочах.

    image
    — Видишь суслика?
    — Нет.
    — И я не вижу. А он есть!

    © ДМБ (2000г. реж. Роман Качанов)

    Те кому доводилось тюнить FreeBSD (начиная с 4-ки) без труда вспомнят параметр ядра kern.ipc.somaxconn. С его увеличения обычно начиналось «улучшение» работы с TCP. Он же и сейчас описан в RU-хэндбуке:
    Читать дальше →
  • Странные грабельки в NATе
    You never can tell with bees в 15:49:28 с метками pfsense, пятница, nat
    Ну и раз уж наступила пятница, ещё одна таинственная загадка - на сей раз про pfsense.

    Итак, имеется локальная сетка с приватными адресами. Гейтом в интернеты работает pfsense в режиме NAT, у него на внешнем интерфейсе публичный IP.

    Задача: подключить гостевой wifi, чтобы из него можно было ходить только наружу, а в локальную сетку низзя! Естественный способ - подключить wifiный рутер непосредственно к pfsense'у - не подходит, ибо wifi нужен в физически другом здании. Через VLAN тоже не получается, поскольку здания соединены не напрямую, а через интернет-провайдера, в свитчи которого доступа нету. Настроить файрвол на самом вайфайном AP не вышло, там эти настройки исключительно кривые (Asus, если чё). Что тут поделать.. подключить AP через отдельный файрвол. Для этого решили использовать уже готовый второй pfsense.

    Казалось бы, задача элементарная, но, как всегда, есть нюансы: этот второй pfsense живёт в виртуальной машине под proxmox'ом (если кто не в курсе, это такой хост для виртуалок на базе линукса).
    У физической машины с proxmox'ом два ethernet-адаптера, на обоих подняты бриджи, соединяющие их с интерфейсами этого виртуального pfsense. Один адаптер подключён к основной сетке, у pfsense на соответствующем интерфейсе поднят адрес из этой сетки. Ко второму адаптеру подключён wifi AP, у pfsense на этом интерфейсе поднята другая приватная подсетка, которая на AP используется в качестве WAN, а pfsense её фильтрует и NATит в первую. Ну а wifi AP своим клиентам адреса раздаёт из третьей приватной подсетки, и NATит их во вторую.

    И при этом сам proxmox имеет статический адрес из второй подсетки, и использует в качестве default gw свой виртуальный pfsense. Конструкция, конечно, странная, но так уж исторически сложилось.

    Грабельки: из proxmox'а в интернет пойти не получается, везде таймауты. Первым делом зашёл я на его внутренний pfsense, запустил tcpdump, вижу входящие TCP SYN'ы от proxmox'а, вижу их же уходящие в первую сетку (уже заNATенные pfsense'овским адресом из первой сетки), а в ответ тишина. Ну, думаю, основному pfsense'у что-то не нравится, вот он и фильтрует. Зашёл на него, там входящие пакеты видно, но они убиваются на месте, никуда не уходят. Проверил все файрвольные правила, ничего не нашёл, всё должно NATиться и выпускаться наружу. Ан нет..

    На всякий случай попробовал сходить наружу со второго pfsense. Упс, а оттуда работает.. На первом при этом видно и входящие пакеты, и выходящие, и ответы обратно идут, всё как положено.

    Попробовал ещё раз с proxmox'а - пакеты от proxmox'а на первом pfsense выглядят точно так же, как от второго pfsense - с его IPшником, но их почему-то никуда не выпускают. Задумался, в чём может быть разница. Ну, разве что TTL может отличаться из-за лишнего NATа, и это как-то влияет на фильтрацию. Но тогда и с wifi ничего работать не будет, там же ещё на один NAT больше. Попробовал оттуда, внезапно всё работает..

    То есть, в целом картина такая: из основной локальной сетки наружу всё нормально ходит. Из третьей - через два дополнительных NAT'а - тоже. А из proxmox'а, который во второй подсетке - через один дополнительный NAT - никак..

    Ну, в конце концов, приделал proxmox'у IP из первой подсетки, гейтом назначил основной pfsense вместо внутреннего, и всё заработало. Но что это были за грабли, я так и не понял...
  • FreeBSD 10 CAM CCB kernel memory leak
    dadv в 10:29:29 с метками freebsd

    В FreeBSD 10 обнаружилась утечка памяти в ядре в подсистеме CAM. У меня на рабочей машине за 17 суток утекло почти 8GB памяти в категорию Wired. Исправлено в HEAD шесть недель назад, пока не исправлено в десятке. Извините, был напуган - был MFC в десятку месяц назад.

    Патч: http://svnweb.freebsd.org/base/head/sys/cam/cam_periph.c?view=patch&r1=298977&r2=298976&pathrev=298977

    Обсуждение: http://lists.freebsd.org/pipermail/freebsd-current/2016-May/061004.html

    Возможно, что не все системы затронуты багом. Проверить достаточно просто: если команда vmstat -m | sort -k 3,3 -rn | head -1 в третьем столбце показывает большое/постоянно растущее значение, а в первом CAM CCB, то система затронута. Когда вся память утечет, ядро подвиснет.

    Пример вывода команды: CAM CCB 3069057 6138114K - 14178548 2048

  • Компания Microsoft подготовила модифицированную версию FreeBSD для Azure
    в 06:04:23
    Компания Microsoft сообщила о публикации в официальном хранилище образов виртуальных машин Azure Marketplace собственной сборки FreeBSD 10.3, в которую внесены модификации для улучшения работы под управлением гипервизора, также переданные разработчикам FreeBSD для включения в основные выпуски FreeBSD. Сборку планируется обновлять по мере выхода новых версий FreeBSD.
  • Во FreeBSD устранены уязвимости в libarchive, cpio и прослойках для совместимости с Linux и 4.3BSD
    в 18:58:09
    Во FreeBSD устранено несколько уязвимостей.
  • Выпуск LibreSSL 2.4.0
    в 09:14:47
    Разработчики проекта OpenBSD представили выпуск переносимой редакции пакета LibreSSL 2.4.0, в рамках которого развивается форк OpenSSL, нацеленный на обеспечение более высокого уровня безопасности. Одновременно доступны корректирующие обновления для стабильных веток - 2.3.5 и 2.2.8. Проект LibreSSL ориентирован на качественную поддержку протоколов SSL/TLS с удалением излишней функциональности, добавлением дополнительных средств защиты и проведением значительной чистки и переработки кодовой базы.
  • Релиз операционной системы NetBSD 7.0.1
    в 20:03:58
    Спустя семь месяцев после релиза NetBSD 7.0 подготовлен корректирующий выпуск NetBSD 7.0.1, в котором проведена работа по устранению проблем, влияющих на стабильность и безопасность. Из исправлений можно отметить устранение краха ядра при извлечении примонтированного USB-накопителя, краха в NFS и проблем с устройствами gif.
  • Проект OpenBSD перешёл на обязательное использование механизма защиты W^X
    в 06:35:25
    Проект OpenBSD перешёл на обязательное применение механизма защиты памяти W^X (Write XOR Execute), суть которого в том, что страницы памяти процесса не могут быть одновременно доступны на запись и исполнение. Таким образом, код может быть исполнен только после запрещения записи, а запись в страницу памяти возможна только после запрета исполнения. Механизм W^X помогает защитить приложения в пространстве пользователя от типовых атак, осуществляемых через переполнение буфера, в том числе от переполнений стека (записанный за пределы буфера код не может быть исполнен).
  • Основы использования NFS на примере FreeBSD
    Eax в 10:00:13 с метками Прочее, FreeBSD
    NFS (Network File System) — сетевая файловая система, или, если другими словами, протокол, позволяющий получать доступ к файлам по сети так, словно они находятся у вас локально. NFS можно использовать как альтернативу Samba, например, для хранения ваших фоточек. А системы вроде PVA и Proxmox, к примеру, используют NFS для хранения ISO-образов операционных систем, шаблонов виртуальных машин, [...]
  • Во FreeBSD устранены локальные уязвимости в sendmsg и atkbd
    в 06:49:22
    Разработчики FreeBSD устранили две уязвимости, позволяющие локальному непривилегированному пользователю потенциально выполнить свой код с правами ядра.
  • Во FreeBSD появится прослойка для использования графических драйверов ядра Linux
    в 08:20:26
    Разработчики FreeBSD пересмотрели подход к портированию DRM/KMS-драйверов из ядра Linux. Если ранее новая версия DRM-драйвера Linux адаптировалась для ядра FreeBSD, что приводило к необходимости применения достаточного большого патча (различия составляют почти 17 тысяч строк), то при портировании драйвера Intel i915 из ядра Linux 3.9+ будет применён новый подход - драйвер будет поставляться с минимальным числом изменений, а для его работы будет применена специальная прослойка KPI, транслирующая вызовы окружения Linux в окружение ядра FreeBSD.
  • Пятидесятый выпуск репозитория пакетов pkgsrc
    в 20:41:18
    Разработчики проекта NetBSD представили релиз репозитория пакетов pkgsrc-2016Q1, который стал пятидесятым по счёту выпуском проекта. Система pkgsrc была создана 18 лет назад на основе портов FreeBSD и в настоящее время используется по умолчанию для управления коллекцией дополнительных приложений в NetBSD и Minix, в качестве дополнительного средства распространения пакетов pkgsrc также применяется пользователями DragonFlyBSD, Solaris/illumos и OS X. В общем виде Pkgsrc поддерживает 23 платформы, включая AIX, FreeBSD, HPUX, Haiku, IRIX, Linux, OpenBSD, QNX и UnixWare.
  • Отчёт о развитии FreeBSD за первый квартал 2016 года
    в 09:05:23
    Опубликован отчёт о развитии проекта FreeBSD с января по март 2016 года.
  • Выпуск десктоп-окружения Lumina 0.9, развиваемого для FreeBSD и PC-BSD
    в 05:41:14
    Сформирован релиз легковесного окружения рабочего стола Lumina 0.9.0, развиваемого проектом PC-BSD. Компоненты окружения написаны с использованием библиотеки Qt5 (без применения QML), в качестве оконного менеджера применяется Fluxbox. Lumina изначально нацелен на работу во FreeBSD/PC-BSD и отталкивается от возможностей FreeBSD, отодвигая на второй план портирование для других платформ (что не мешает в его портировании). Код проекта написан на языке C++ и распространяется под лицензией BSD. Новый выпуск Lumina уже доступен через систему портов FreeBSD и добавлен в репозиторий PC-BSD "Edge" (x11/lumina[-i18n]).
  • Запись образа на DVD в FreeBSD 10
    Воронов Глеб в 03:06:05 с метками FreeBSD, cdcontrol, dd, dvd, freebsd, growisofs, iso
    Вот уж не думал, что возникнет необходимость, но потребовалось записать установочный образ семёрки на DVD Привод был только на машине с FreeBSD. Установка необходимого порта: # cd /usr/ports/sysutils/dvd+rw-tools/ # make -DBATCH install clean # rehash Переходим в каталог с образом и даём команду # growisofs -dvd-compat -Z /dev/cd0=win7.iso Вывод получается примерно следующий Executing 'builtin_dd if=win7.iso...
  • В NTP 4.2.8p7 устранено 11 уязвимостей
    в 16:39:22
    Доступен корректирующий выпуск сервера для синхронизации точного времени NTP 4.2.8p7, в котором устранено 11 уязвимостей, большинство из которых выявлено в процессе аудита, проведённого компанией Cisco. Уязвимостям присвоен средний или низкий уровень опасности из-за специфичных условий эксплуатации (например, отсутствие блокировки спуфинга UDP-пакетов).
  • Разработчики OpenBSD подготовили для libc механизм защиты anti-ROP
    в 06:32:59
    В списке рассылки разработчиков OpenBSD опубликован набор патчей с реализацией новой техники защиты anti-ROP, основанной на случайном перестроении порядка расположения экспортируемых символов в системной библиотеке libc.so, выполняемом при каждой загрузке системы. Перестроение приводит к увеличению времени загрузки на несколько секунд.
  • Samba 10G Performance
    lexa в 12:47:39

    Картинка для привлечения внимания. Сервер FreeBSD+Samba, клиент: Windows 8.1 ,

    Есть у меня FreeBSD-шный бокс с ZFS к которому я хожу по Samba по 10G-линку. И до вчерашнего дня производительность не радовала, 200Mb/sec получались только изредка, а вообще типичная скорость была лишь немногим выше гигабита. При этом

    • MTU 9000 на этом линке - глючило (временами отваливалась сеть)
    • А практически такой же бокс (сторадж -
    • ...
  • Краткая шпаргалка по использованию GNU screen
    Eax в 09:00:04 с метками Прочее, FreeBSD, Linux
    Сегодня я хотел бы поделиться небольшой шпаргалкой по screen. Пользуюсь я этой утилитой крайне редко. Поэтому я постоянно забываю, что и как делается. Отсюда и потребность в шпаргалке. Напомню, что screen — это программа, которая позволяет открывать несколько терминалов в одном. Это очень удобно, если вы работаете по SSH или просто без иксов. Также в [...]
  • Памятка по отладке ядра и драйверов во FreeBSD
    Eax в 09:00:10 с метками Прочее, FreeBSD, Отладка
    Недавно мы научились собирать FreeBSD из исходных кодов. Этих знаний достаточно, если вы хотите просто попробовать самые свежие фичи системы или оптимизировать FreeBSD под конкретное железо. Но если вы собираетесь как следует порыться в кишках системы, дабы лучше разобраться в ее работае, или даже что-то изменить в ней, необходимо уметь цепляться к системе отладчиком. Да [...]
  • Собираем ядро и мир FreeBSD из исходников
    Eax в 09:00:44 с метками Прочее, FreeBSD
    Сегодня мы научимся собирать ядро и мир (основные исполняемые файлы, библиотеки и тд) FreeBSD из сходных кодов. Ранее в заметке PostgreSQL: сборка из исходников и настройка под Linux мы выясняли, зачем нужно уметь собирать что-то из исходников. Основными сценариями являются оптимизация под конкретное железо и получение самого свежака прямо из ветки master. Кроме того, вы [...]
  • Профилирование кода на C/C++ в Linux и FreeBSD
    Eax в 09:00:19 с метками Прочее, C/C++, FreeBSD, Linux, Оптимизация
    Рассмотрим типичную ситуацию — приходит пользователь и говорит «я делаю в приложении то-то и то-то и у меня все сильно тормозит». Как понять, в чем проблема, и исправить ее? Вот об этом мы и поговорим в данной заметке. Приведенный список методов не претендует на полноту, однако это то, что в настоящее время я чаще всего использую [...]
  • Nginx не передает Apache реальный IP пользователя
    admin в 23:53:50 с метками FreeBSD, *nix
    Понадобилось на одном проекте сделать определения страницы пользователя по гео-данным и анализу php переменной HTTP_ACCEPT_LANGUAGE для корректного направления домена на язык пользователя. Скрипт был написан и успешно протестирован на работоспособность на локальном сервере. После загрузки на сервер и внедрения – эффекта не было. При анализе выяснилось, что IP-адрес пользователя в переменной $_SERVER['REMOTE_ADDR'] был 127.0.0.1 Apache [...]
  • [ZFS] Замена сбойного диска сбойным
    skeletor в 12:38:02 с метками FreeBSD, Solaris
    Не знаю, проявляется ли это на новых версиях ZFS, но достаточно интересный хак. И так, ситуация следующая: при замене диска в пуле, в процесс перестройки, выпал заменяемый диск. Тогда пул навсегда замирает в состоянии DEGRADED. Как быть? Вот здесь подсмотрел хак. Приведу цитатой: echo zfs_no_scrub_io/W0t1 | mdb -kw После этого надо дать resilver закончиться (он пройдёт […]
  • Управление пакетами во FreeBSD при помощи утилиты pkg
    Eax в 09:00:25 с метками Прочее, FreeBSD
    Как известно, во FreeBSD можно использовать пакеты как бинарные, так и собранные из исходных кодов при помощи портов. Устройство портов за последнее время ничем не изменилось. А вот на смену утилитам для управления бинарными пакетами pkg_add, pkg_info и прочим pkg_* в последних версиях FreeBSD пришел новый пакетный менеджер pkg (также известный как pkgng). Данная небольшая [...]
  • OpenBSD SNMP check
    anaumov в 13:55:38 с метками OpenBSD, python

    It seems like there are no OpenBSD SNMP checks on exchange.nagios.org or exchange.icinga.org. I found few checks for this operating system, but NO scripts which use SNMPv2c. Nobody trusts SNMPv2c? Well, as we know, the most common alternative acronym for SNMP is “Security? Not My Problem!”, right? On the other hand, SNMP is the de facto standard for gathering information from network devices or servers.
    Anyway, I have this free operating system at home and on this weekend I spent a bit time to play with SNMP. It makes fun to learn something new. SNMP servers on different systems support different OIDs/MIBs. OpenBSD includes an SNMP agent, snmpd(8), which supports all of the usual SNMP functions, and also offers visibility into OpenBSD-specific feautures such as packet filtering.

    I concentrated on standard MIBs and wrote a small python script to monitor the memory usage, the CPU load average and the file system space usage. It looks like a common nagios plugin. In addition, it also shows information about network interfaces, file systems in tabular form and the list of running processes. Make it sense for people?:)

    These 3 functions are info functions and was implemented just to show the system’s status overview and to help to configure checks. For example, we can get storage information to see the list of all mounted file systems. Use file-systems option for that:

    > ./check_snmp_openbsd.py 192.168.0.2 public file-systems
    
        SIZE                USED                AVALIABLE           FILE SYSTEM
    ==================================================================================
     1004.7 Mb         46.2 Mb (4.59 %)       958.6 Mb (95.41 %)    /                             
       47.3 Gb         20.0 Kb (0.00 %)        47.3 Gb (100.00 %)   /home                         
        3.9 Gb          8.0 Kb (0.00 %)         3.9 Gb (100.00 %)   /tmp                          
        2.0 Gb        316.4 Mb (15.72 %)        1.7 Gb (84.28 %)    /usr                          
     1004.8 Mb        173.6 Mb (17.27 %)      831.2 Mb (82.73 %)    /usr/X11R6                    
        8.6 Gb         10.0 Mb (0.11 %)         8.6 Gb (99.89 %)    /usr/local                    
        2.0 Gb          2.0 Kb (0.00 %)         2.0 Gb (100.00 %)   /usr/obj                      
        2.0 Gb          2.0 Kb (0.00 %)         2.0 Gb (100.00 %)   /usr/src                      
        4.9 Gb          4.8 Mb (0.10 %)         4.9 Gb (99.90 %)    /var

    OpenBSD supports hrStorageTable, which actually shows the same information with the exception of percentage representation. I coped this function from my HP-UX script anyway.
    Now we know about file systems already mounted on own target system and can to configure checks:

    > ./check_snmp_openbsd.py 192.168.0.2 public fs:/usr/X11R6 80 90
    OK: FS usage 17.27 % [ 173.6 Mb / 1004.8 Mb ]|usage=17.27;80;90;0;0
    > echo $?
    0
    
    > ./check_snmp_openbsd.py 192.168.0.2 public fs:/ 4 9
    WARNING: FS usage 4.59 % [ 46.2 Mb / 1004.7 Mb ]|usage=4.59;4;9;0;0
    > echo $?
    1
    

    To monitor memory usage or swap, use mem or swap options:

    > ./check_snmp_openbsd.py 192.168.0.2 public mem 20 90
    WARNING: Memory usage 24.53 % [ 125.4 Mb / 511.3 Mb ]|usage=24.53;20;90;0;0
    > echo $?
    1
    
    > ./check_snmp_openbsd.py 192.168.0.2 public swap 4 9
    OK: Swap usage 0.00 % [ 0.0 b / 767.4 Mb ]|usage=0.00;4;9;0;0
    > echo $?
    0

    These 3 checks (swap, memory and file systems space usage) use the same function storage(). This function returns the integer value and the output string. main() compares this return value to warning and critical input parameters, i.e. the final decision (check state) is taken by main() function. The same logic has the cpu() function. For all values returned to main(), script spawns output with performance data (for creating graphs) with a percentage representation (0..100).

    To check the CPU load average, script has the cpu option:

    > ./check_snmp_openbsd.py 192.168.0.2 public cpu 4 9
    OK: CPU load average 1 % |'1 min'=1;4;9;0;0

    In case of CPU, what does return value means? I think, the CPU performance is one of the easier metrics to measure. The load average is the average number of processes currently ready to run. That is, it is an estimate of the number of processes that are capable of using the CPU at any given time. What tells us the standard? The RFC2790 tells: The average, over the last minute, of the percentage of time that this processor was not idle. Is this description clear?
    I think, to be able to say something concretely about CPU performance, in additions to CPU load average we need also to know how many CPU cores this machine has… Anyway this value is *ALL* what we can get from OpenBSD (did I miss something?). This value will be used to create a graph:

    CPU_OPENBSD
    It’s also possible to monitor the list of processes running on OpenBSD. To get this list, use proc option. It will show you the PID, STATE and TYPE of processes running at this moment:

    > ./check_snmp_openbsd.py 192.168.0.2 public proc
    
    PID        STATE        TYPE            PROC
    ================================================================
    1          runnable     application     init 
    1433       runnable     application     syslogd 
    1455       runnable     application     getty std.9600 ttyC0
    1624       runnable     application     smtpd 
    1972       runnable     application     pflogd 
    2217       runnable     application     dhclient 
    2289       runnable     application     cron 
    3809       runnable     application     xdm 
    5209       running      application     snmpd 
    5531       runnable     application     ksh 
    5599       runnable     application     sshd 
    5683       runnable     application     smtpd 
    5691       runnable     application     ksh 
    7626       runnable     application     snmpd 
    9492       runnable     application     smtpd 
    11095      runnable     application     getty std.9600 ttyC3
    12554      runnable     application     smtpd 
    14171      runnable     application     ksh 
    14960      runnable     application     dhclient 
    15196      runnable     application     smtpd 
    15432      runnable     application     Xorg 
    16474      runnable     application     syslogd 
    16676      runnable     application     xconsole 
    16707      runnable     application     xconsole 
    16897      runnable     application     xdm 
    16942      runnable     application     fvwm 
    17296      runnable     application     sshd 
    17647      runnable     application     getty std.9600 ttyC1
    18782      runnable     application     getty std.9600 ttyC2
    21983      runnable     application     smtpd 
    24911      runnable     application     sshd 
    25946      runnable     application     pflogd 
    29033      runnable     application     snmpd 
    29488      runnable     application     Xorg :0 vt05 -auth /etc/X11/xdm/authdir/authfiles/A:0-THfdBX
    29720      runnable     application     FvwmPager 7 4 /usr/X11R6/lib/X11/fvwm/.fvwmrc 0 8 0 0
    30087      runnable     application     getty std.9600 ttyC5
    30187      runnable     application     xterm 
    30486      runnable     application     sh /etc/X11/xdm/Xsession
    30525      runnable     application     ksh 
    30564      runnable     application     smtpd 
    30656      runnable     application     sndiod
    
    > ./check_snmp_openbsd.py 192.168.0.2 public proc 40 60
    OK: running 28 processes [max 1310]|processes=28;40;60;0;0
    

    If you type 2 parameters more, script will to interpret this as a warning and critical values for check. This check monitors the number of running processes. …if somebody really need it:)
    PROC_OPENBSD
    To monitor some specific processes (or PIDs) makes no sense, I guess. If you need to know about, for example, Web Server, I will recommend to use HTTP(s) and ask it directly.

    The last information that you can get via this script is the interface configuration. The option interfaces shows you the list of all interfaces found on this system. As you can see, I have 2 configured interfaces on my OpenBSD at home. Do not surprised, the second interface, iwi0, is actually wireless, but SNMP recognizes it as the ethernetCsmacd:

    > ./check_snmp_openbsd.py 192.168.0.2 public interfaces
    
    NAME     STATE   IP              MAC                MTU       TYPE               CONNECTOR  I/O ERROR
    ======================================================================================================
    rl0      up      192.168.0.2     0:3:d:1f:70:73     1500      ethernetCsmacd     true       0/0
    iwi0     up      192.168.3.101   0:e:35:86:8f:a9    1500      ethernetCsmacd     true       0/0
    enc0     down                                       0         other              false      0/0
    lo0      up      127.0.0.1                          32768     softwareLoopback   false      0/0
    pflog0   up                                         33192     other              false      0/0
    

    I’m going to continue to work on this script (for example, using argparse). It has some defects. I also want to support OpenBSD specific MIBs. If you want to test it, you can find it here or here. Feel free to give a feedback or just to send a submit request. It’s free software of course😉


  • bhyve и дебиановский инсталлятор: их можно примирить?
    Alex Povolotsky в 21:55:40
    Насколько я понял, дебиановский инсталлятор по умолчанию запускается в графическом режиме. bhyve таких изысков не поддерживает, и, как следствие, попытка загрузиться останавливается на инициализации дисплея.

    Не удавалось ли кому победить этот конфликт? Указать какой-нибудь хитрый параметр инсталлятору, или на крайний случай собрать все на virtualbox-е, а потом мигрировать?

    Поделитесь положительным опытом

    UPD. Если идти консолью не на /dev/nmdm0A, а на /dev/nmdm0B, то все работает.

    Дальше идут глюки шестерочного инсталлятора, но они уже не относятся к сообществу
  • ZFS: L2ARC кэш перестал использоваться
    Alex Povolotsky в 22:45:55
    Я понимаю, что "подземный стук", но - на одном из серверов, 10.2-RELEASE, без всякой диагностики в логах перестал использоваться L2-кэш.

    L2 ARC Size: (Adaptive)                         9.60    GiB
            Header Size:                    0.06%   5.87    MiB
    
    L2 ARC Breakdown:                               66.85m
            Hit Ratio:                      0.03%   20.10k
            Miss Ratio:                     99.97%  66.83m
            Feeds:                                  1.30m
    


    при том, что кэша порядка 100 гигабайт и обмен с диском активный. Не выключал.

    Куда копать?
  • как указать правильную либу?
    Alexander Titaev в 22:30:03
    процесс сборки валится на
    /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.10 required by /usr/local/src/grpc/third_party/protobuf/src/protoc not found

    нужное содержит другая либа
    # strings /usr/local/lib/gcc48/libstdc++.so.6 | grep GLIBCXX_3
    GLIBCXX_3.4
    GLIBCXX_3.4.1
    GLIBCXX_3.4.2
    GLIBCXX_3.4.3
    GLIBCXX_3.4.4
    GLIBCXX_3.4.5
    GLIBCXX_3.4.6
    GLIBCXX_3.4.7
    GLIBCXX_3.4.8
    GLIBCXX_3.4.9
    GLIBCXX_3.4.10

    запускаю
    CC=gcc48 CXX=g++48 LINK=gcc48 LINKXX=g++48 LD=gcc48 CFLAGS=-Wno-error=sign-conversion LDFLAGS="-L/usr/local/lib/gcc48/ -l/usr/local/lib/gcc48/libstdc++.so.6" gmake

    что делаю не так?
  • Использование FreeBSD на десктопе, версия 2.0
    Eax в 09:00:48 с метками Прочее, FreeBSD
    Прошло три года с тех пор, как я попрощался с FreeBSD, по крайней мере, как с десктопной операционной системой. Сомнений в том, что FreeBSD по большому счету является неплохой серверной ОС, у меня нет. В частности, веб-сервер, отдающий страницы этого блога, работал и продолжает работать на FreeBSD. А вот о том, изменилось ли что-то в мире [...]
  • Как установить права на /dev/zvol/ при загрузке?
    Alex Povolotsky в 19:50:23
    Есть фря, на ней виртуалбокс, в качестве диска - указан раздел на zfs.

    Но виртуалбокс желательно пускать не от рута, а по умолчанию на zvol-разделы права встают root:operator rw-r-----.

    Есть ли какая-то возможность более-менее изящно это сделать, через какой-нибудь devd, например? Тупо chown-chmod в стартовом скрипте отдает грязной кувалдой
  • zfs: пишет и пишет
    Alex Povolotsky в 10:07:18
    Запустил я процесс передачи zfs-снапшота.

    Смотрю и не понимаю


    root@postgres:/home/tarkhil # zfs send -D data/postgres@xfer4 | mbuffer -s 128k -m 1G | ssh -C 192.168.11.3 "mbuffer -s 128k -m 1G | zfs receive -v -F system/postgres"
    receiving full stream of data/postgres@xfer4 into system/postgres@xfer4
    in @ 76.0 MiB/s, out @ 76.0 MiB/s,  473 GiB total, buffer   0% full
    
    root@postgres:/home/tarkhil # zfs list -t snapshot  data/postgres@xfer4
    NAME                  USED  AVAIL  REFER  MOUNTPOINT
    data/postgres@xfer4  1.02G      -  76.7G  -
    
    [20:45] superbook:~ % zfs list system/postgres
    NAME              USED  AVAIL  REFER  MOUNTPOINT
    system/postgres  72,2G   126G  20,5G  /usr/local/pgsql
    



    Вопрос к уважаемому сообществу: ЧТО он столько времени перетаскивает? Я даже не спрашиваю, куда он это девает...
  • Просмотр сетевых соединений с PID’ами процессов
    skeletor в 17:37:21 с метками FreeBSD, Linux, Solaris
    FreeBSD $ sockstat Solaris $ netstat -u Linux $ lsof -i
  • Первые впечатления от Raspberry Pi и как я устанавливал на него FreeBSD
    Eax в 09:00:22 с метками Прочее, FreeBSD, Linux, Девайсы
    По-видимому, в прошлом году я был хорошим котиком, так как Дедушка Мороз положил мне под елку коробочку с Raspberry Pi. В этой заметке я поделюсь своими первыми впечатлениями от использования данного одноплатного компьютера, расскажу, как мне удалось запустить на нем FreeBSD, а также как я отважно рисковал здоровьем в процессе написания поста. Итак, держим в [...]
  • Восстановление GPT - теперь чуть проще.
    bu7cher в 12:41:00 с метками FreeBSD, gpart, gpt, PMBR
    Вчера смержил в stable/10 патч, который учит ядро и загрузчик FreeBSD обнаруживать GPT при повреждённом PMBR. У этого есть два эффекта. Во-первых, теперь если повредить первые несколько секторов, то GPT всёравно будет определяться. Не нужно выполнять странных манипуляций с записью /boot/pmbr в первый сектор при помощи dd(1). Второй эффект следует из первого - теперь GPT не уничтожить простым
  • New linuxolator in STABLE-10
    Dmitry Morozovsky в 20:16:20
    А ещё Дмитрий Чагин (dchagin@) взялся сегодня переносить в stable/10 свои изменения линуксолятора -- в первую очередь, совместимость с x86-64, new glibc, threads.

    Анонса не нашёл, поэтому можно просто смотреть коммиты в https://lists.freebsd.org/pipermail/svn-src-stable/2016-January/date.html

    Upd: 134 коммита, с 17:08 по 21:40 MSK. Финальный: https://svnweb.freebsd.org/changeset/base/293610
  • Completely async sendfile(2) in -CURRENT
    Dmitry Morozovsky в 14:08:46
    Глеб Смирнов (glebius@) таки закоммиттил используемый Netflix'ом асинхронный sendfile. Они раздают до 80 гигабит потокового видео с одной машины.

    Ref: https://svnweb.freebsd.org/changeset/base/293439
  • ZFS вешает систему при активной записи на raidz
    gremlinable в 09:34:32
    Добрый день!
    Прошу помощи в поиске и решении проблемы с файлопомойкой. Есть сервак (amd64, 8GB RAM) на десятке с дисковым массивом, объединённым в Raid-Z (5 x 2TB WD Red). Сама система так же стоит на ZFS, но на отдельном SSD. Сервак используется в том числе для регулярного деланья бекапов с других серверов с помощью rsync (причём, ряд серверов доступен через OpenVPN). В определённый момент начала проявляться проблема - в какой-то момент при определённых положениях звёзд сервер в процессе сливания бекапов виснет. Причём на мышку/клаву он реагирует, но первая же операция, требующая считывание чего-либо с диска намертво уходит в себя и ни на что не реагирует. По сети сервак тоже перестаёт быть доступен. Перезагрузка становится возможна только резетом, после чего система надолго зависает в стадии "mounting local filesystems". Надолго - это на несколько часов, а один раз провисела в этом состоянии трое суток, после чего я ребутнул и оживлял систему из сингл-мод.
    zpool, smart и прочие каких-либо проблем с дисками и рейдом не обнаруживают, мем-тест прогонял, zfs-stat тоже ничего интересного не показывает, размеры ARC вменяемые (разрешено 7Гиг, реально до 5.6 растёт). Куда копать и кто слабое звено не понимаю.
    Подскажите, как мне хотя бы зацепиться за источник проблемы?
    Кстати, на рейде включена дедуплекация и компрессия. Наверное, я не прав, не стоило это включать одновременно?


    Информация о системе
    # zpool status -v
       pool: zdata
      state: ONLINE
       scan: none requested
     config:
    
             NAME        STATE     READ WRITE CKSUM
             zdata       ONLINE       0     0     0
               raidz1-0  ONLINE       0     0     0
                 ada1    ONLINE       0     0     0
                 ada2    ONLINE       0     0     0
                 ada3    ONLINE       0     0     0
                 ada4    ONLINE       0     0     0
                 ada5    ONLINE       0     0     0
    
     errors: No known data errors
    
       pool: zroot
      state: ONLINE
       scan: none requested
     config:
    
             NAME                                          STATE     READ WRITE CKSUM
             zroot                                         ONLINE       0     0     0
               gptid/d7bf94fd-a438-11e3-8231-94de80b1a491  ONLINE       0     0     0
    
     errors: No known data errors
    
    
    
    # zfs-stats -a
    
     ------------------------------------------------------------------------
     ZFS Subsystem Report                            Wed Jan  6 12:21:50 2016
     ------------------------------------------------------------------------
    
     System Information:
    
             Kernel Version:                         1002000 (osreldate)
             Hardware Platform:                      amd64
             Processor Architecture:                 amd64
    
             ZFS Storage pool Version:               5000
             ZFS Filesystem Version:                 5
    
     FreeBSD 10.2-RELEASE-p7 #0: Mon Nov 2 14:19:39 UTC 2015 root
     12:21PM  up 16:18, 2 users, load averages: 0.35, 0.33, 0.32
    
     ------------------------------------------------------------------------
    
     System Memory:
    
             0.11%   8.55    MiB Active,     0.45%   34.96   MiB Inact
             96.45%  7.36    GiB Wired,      0.00%   96.00   KiB Cache
             2.99%   234.14  MiB Free,       0.00%   0 Gap
    
             Real Installed:                         8.00    GiB
             Real Available:                 98.30%  7.86    GiB
             Real Managed:                   97.09%  7.63    GiB
    
             Logical Total:                          8.00    GiB
             Logical Used:                   96.71%  7.74    GiB
             Logical Free:                   3.29%   269.20  MiB
    
     Kernel Memory:                                  162.64  MiB
             Data:                           83.47%  135.76  MiB
             Text:                           16.53%  26.88   MiB
    
     Kernel Memory Map:                              7.63    GiB
             Size:                           52.35%  4.00    GiB
             Free:                           47.65%  3.64    GiB
    
     ------------------------------------------------------------------------
    
     ARC Summary: (HEALTHY)
             Memory Throttle Count:                  0
    
     ARC Misc:
             Deleted:                                9.09m
             Recycle Misses:                         7.26m
             Mutex Misses:                           1.12k
             Evict Skips:                            34.31m
    
     ARC Size:                               82.17%  5.45    GiB
             Target Size: (Adaptive)         82.18%  5.45    GiB
             Min Size (Hard Limit):          12.50%  849.27  MiB
             Max Size (High Water):          8:1     6.63    GiB
    
     ARC Size Breakdown:
             Recently Used Cache Size:       93.46%  5.10    GiB
             Frequently Used Cache Size:     6.54%   364.90  MiB
    
     ARC Hash Breakdown:
             Elements Max:                           1.21m
             Elements Current:               46.53%  564.33k
             Collisions:                             6.58m
             Chain Max:                              14
             Chains:                                 109.96k
    
     ------------------------------------------------------------------------
    
     ARC Efficiency:                                 316.81m
             Cache Hit Ratio:                96.09%  304.42m
             Cache Miss Ratio:               3.91%   12.39m
             Actual Hit Ratio:               59.84%  189.57m
    
             Data Demand Efficiency:         98.50%  892.78k
             Data Prefetch Efficiency:       22.71%  7.30k
    
             CACHE HITS BY CACHE LIST:
               Anonymously Used:             36.91%  112.37m
               Most Recently Used:           19.67%  59.89m
               Most Frequently Used:         42.60%  129.68m
               Most Recently Used Ghost:     0.21%   632.61k
               Most Frequently Used Ghost:   0.61%   1.84m
    
             CACHE HITS BY DATA TYPE:
               Demand Data:                  0.29%   879.42k
               Prefetch Data:                0.00%   1.66k
               Demand Metadata:              61.98%  188.69m
               Prefetch Metadata:            37.73%  114.84m
    
             CACHE MISSES BY DATA TYPE:
               Demand Data:                  0.11%   13.36k
               Prefetch Data:                0.05%   5.64k
               Demand Metadata:              86.66%  10.74m
               Prefetch Metadata:            13.18%  1.63m
    
     ------------------------------------------------------------------------
    
     L2ARC is disabled
    
     ------------------------------------------------------------------------
    
     File-Level Prefetch: (HEALTHY)
    
     DMU Efficiency:                                 196.65m
             Hit Ratio:                      81.03%  159.34m
             Miss Ratio:                     18.97%  37.31m
    
             Colinear:                               37.31m
               Hit Ratio:                    0.02%   6.40k
               Miss Ratio:                   99.98%  37.31m
    
             Stride:                                 156.03m
               Hit Ratio:                    99.99%  156.01m
               Miss Ratio:                   0.01%   20.31k
    
     DMU Misc:
             Reclaim:                                37.31m
               Successes:                    0.09%   32.93k
               Failures:                     99.91%  37.27m
    
             Streams:                                3.32m
               +Resets:                      0.00%   154
               -Resets:                      100.00% 3.32m
               Bogus:                                0
    
     ------------------------------------------------------------------------
    
     VDEV cache is disabled
    
     ------------------------------------------------------------------------
    
     ZFS Tunables (sysctl):
             kern.maxusers                           839
             vm.kmem_size                            8197922816
             vm.kmem_size_scale                      1
             vm.kmem_size_min                        0
             vm.kmem_size_max                        1319413950874
             vfs.zfs.trim.max_interval               1
             vfs.zfs.trim.timeout                    30
             vfs.zfs.trim.txg_delay                  32
             vfs.zfs.trim.enabled                    1
             vfs.zfs.vol.unmap_enabled               1
             vfs.zfs.vol.mode                        1
             vfs.zfs.version.zpl                     5
             vfs.zfs.version.spa                     5000
             vfs.zfs.version.acl                     1
             vfs.zfs.version.ioctl                   4
             vfs.zfs.debug                           0
             vfs.zfs.super_owner                     0
             vfs.zfs.sync_pass_rewrite               2
             vfs.zfs.sync_pass_dont_compress         5
             vfs.zfs.sync_pass_deferred_free         2
             vfs.zfs.zio.exclude_metadata            0
             vfs.zfs.zio.use_uma                     1
             vfs.zfs.cache_flush_disable             0
             vfs.zfs.zil_replay_disable              0
             vfs.zfs.min_auto_ashift                 9
             vfs.zfs.max_auto_ashift                 13
             vfs.zfs.vdev.trim_max_pending           10000
             vfs.zfs.vdev.bio_delete_disable         0
             vfs.zfs.vdev.bio_flush_disable          0
             vfs.zfs.vdev.write_gap_limit            4096
             vfs.zfs.vdev.read_gap_limit             32768
             vfs.zfs.vdev.aggregation_limit          131072
             vfs.zfs.vdev.trim_max_active            64
             vfs.zfs.vdev.trim_min_active            1
             vfs.zfs.vdev.scrub_max_active           2
             vfs.zfs.vdev.scrub_min_active           1
             vfs.zfs.vdev.async_write_max_active     10
             vfs.zfs.vdev.async_write_min_active     1
             vfs.zfs.vdev.async_read_max_active      3
             vfs.zfs.vdev.async_read_min_active      1
             vfs.zfs.vdev.sync_write_max_active      10
             vfs.zfs.vdev.sync_write_min_active      10
             vfs.zfs.vdev.sync_read_max_active       10
             vfs.zfs.vdev.sync_read_min_active       10
             vfs.zfs.vdev.max_active                 1000
             vfs.zfs.vdev.async_write_active_max_dirty_percent60
             vfs.zfs.vdev.async_write_active_min_dirty_percent30
             vfs.zfs.vdev.mirror.non_rotating_seek_inc1
             vfs.zfs.vdev.mirror.non_rotating_inc    0
             vfs.zfs.vdev.mirror.rotating_seek_offset1048576
             vfs.zfs.vdev.mirror.rotating_seek_inc   5
             vfs.zfs.vdev.mirror.rotating_inc        0
             vfs.zfs.vdev.trim_on_init               1
             vfs.zfs.vdev.cache.bshift               16
             vfs.zfs.vdev.cache.size                 0
             vfs.zfs.vdev.cache.max                  16384
             vfs.zfs.vdev.metaslabs_per_vdev         200
             vfs.zfs.txg.timeout                     5
             vfs.zfs.space_map_blksz                 4096
             vfs.zfs.spa_slop_shift                  5
             vfs.zfs.spa_asize_inflation             24
             vfs.zfs.deadman_enabled                 1
             vfs.zfs.deadman_checktime_ms            5000
             vfs.zfs.deadman_synctime_ms             1000000
             vfs.zfs.recover                         0
             vfs.zfs.spa_load_verify_data            1
             vfs.zfs.spa_load_verify_metadata        1
             vfs.zfs.spa_load_verify_maxinflight     10000
             vfs.zfs.check_hostid                    1
             vfs.zfs.mg_fragmentation_threshold      85
             vfs.zfs.mg_noalloc_threshold            0
             vfs.zfs.condense_pct                    200
             vfs.zfs.metaslab.bias_enabled           1
             vfs.zfs.metaslab.lba_weighting_enabled  1
             vfs.zfs.metaslab.fragmentation_factor_enabled1
             vfs.zfs.metaslab.preload_enabled        1
             vfs.zfs.metaslab.preload_limit          3
             vfs.zfs.metaslab.unload_delay           8
             vfs.zfs.metaslab.load_pct               50
             vfs.zfs.metaslab.min_alloc_size         33554432
             vfs.zfs.metaslab.df_free_pct            4
             vfs.zfs.metaslab.df_alloc_threshold     131072
             vfs.zfs.metaslab.debug_unload           0
             vfs.zfs.metaslab.debug_load             0
             vfs.zfs.metaslab.fragmentation_threshold70
             vfs.zfs.metaslab.gang_bang              16777217
             vfs.zfs.free_max_blocks                 -1
             vfs.zfs.no_scrub_prefetch               0
             vfs.zfs.no_scrub_io                     0
             vfs.zfs.resilver_min_time_ms            3000
             vfs.zfs.free_min_time_ms                1000
             vfs.zfs.scan_min_time_ms                1000
             vfs.zfs.scan_idle                       50
             vfs.zfs.scrub_delay                     4
             vfs.zfs.resilver_delay                  2
             vfs.zfs.top_maxinflight                 32
             vfs.zfs.zfetch.array_rd_sz              1048576
             vfs.zfs.zfetch.block_cap                256
             vfs.zfs.zfetch.min_sec_reap             2
             vfs.zfs.zfetch.max_streams              8
             vfs.zfs.prefetch_disable                0
             vfs.zfs.delay_scale                     500000
             vfs.zfs.delay_min_dirty_percent         60
             vfs.zfs.dirty_data_sync                 67108864
             vfs.zfs.dirty_data_max_percent          10
             vfs.zfs.dirty_data_max_max              4294967296
             vfs.zfs.dirty_data_max                  844396953
             vfs.zfs.max_recordsize                  1048576
             vfs.zfs.mdcomp_disable                  0
             vfs.zfs.nopwrite_enabled                1
             vfs.zfs.dedup.prefetch                  1
             vfs.zfs.l2c_only_size                   0
             vfs.zfs.mfu_ghost_data_lsize            4204567552
             vfs.zfs.mfu_ghost_metadata_lsize        699420672
             vfs.zfs.mfu_ghost_size                  4903988224
             vfs.zfs.mfu_data_lsize                  199680
             vfs.zfs.mfu_metadata_lsize              3733504
             vfs.zfs.mfu_size                        9319424
             vfs.zfs.mru_ghost_data_lsize            0
             vfs.zfs.mru_ghost_metadata_lsize        391472128
             vfs.zfs.mru_ghost_size                  391472128
             vfs.zfs.mru_data_lsize                  4080406016
             vfs.zfs.mru_metadata_lsize              1161030144
             vfs.zfs.mru_size                        5462962176
             vfs.zfs.anon_data_lsize                 0
             vfs.zfs.anon_metadata_lsize             0
             vfs.zfs.anon_size                       32768
             vfs.zfs.l2arc_norw                      1
             vfs.zfs.l2arc_feed_again                1
             vfs.zfs.l2arc_noprefetch                1
             vfs.zfs.l2arc_feed_min_ms               200
             vfs.zfs.l2arc_feed_secs                 1
             vfs.zfs.l2arc_headroom                  2
             vfs.zfs.l2arc_write_boost               8388608
             vfs.zfs.l2arc_write_max                 8388608
             vfs.zfs.arc_meta_limit                  1781045248
             vfs.zfs.arc_free_target                 13926
             vfs.zfs.arc_shrink_shift                5
             vfs.zfs.arc_average_blocksize           8192
             vfs.zfs.arc_min                         890522624
             vfs.zfs.arc_max                         7124180992
    
    # zfs get all zdata
     NAME   PROPERTY              VALUE                  SOURCE
     zdata  type                  filesystem             -
     zdata  creation              Wed Feb 19  6:58 2014  -
     zdata  used                  11.5T                  -
     zdata  available             1.57T                  -
     zdata  referenced            268K                   -
     zdata  compressratio         1.20x                  -
     zdata  mounted               yes                    -
     zdata  quota                 none                   default
     zdata  reservation           none                   default
     zdata  recordsize            128K                   default
     zdata  mountpoint            /zdata                 local
     zdata  sharenfs              off                    default
     zdata  checksum              on                     default
     zdata  compression           lz4                    local
     zdata  atime                 on                     default
     zdata  devices               on                     default
     zdata  exec                  on                     default
     zdata  setuid                on                     default
     zdata  readonly              off                    default
     zdata  jailed                off                    default
     zdata  snapdir               hidden                 default
     zdata  aclmode               discard                default
     zdata  aclinherit            restricted             default
     zdata  canmount              on                     default
     zdata  xattr                 off                    temporary
     zdata  copies                1                      default
     zdata  version               5                      -
     zdata  utf8only              off                    -
     zdata  normalization         none                   -
     zdata  casesensitivity       sensitive              -
     zdata  vscan                 off                    default
     zdata  nbmand                off                    default
     zdata  sharesmb              off                    default
     zdata  refquota              none                   default
     zdata  refreservation        none                   default
     zdata  primarycache          all                    default
     zdata  secondarycache        all                    default
     zdata  usedbysnapshots       0                      -
     zdata  usedbydataset         268K                   -
     zdata  usedbychildren        11.5T                  -
     zdata  usedbyrefreservation  0                      -
     zdata  logbias               latency                default
     zdata  dedup                 on                     local
     zdata  mlslabel                                     -
     zdata  sync                  standard               default
     zdata  refcompressratio      1.00x                  -
     zdata  written               268K                   -
     zdata  logicalused           13.6T                  -
     zdata  logicalreferenced     45K                    -
     zdata  volmode               default                default
     zdata  filesystem_limit      none                   default
     zdata  snapshot_limit        none                   default
     zdata  filesystem_count      none                   default
     zdata  snapshot_count        none                   default
     zdata  redundant_metadata    all                    default
    
  • [CFT] инфраструктуры совместимости с Centos 6.7
    Andrey Fesenko в 09:28:00 с метками FreeBSD, ports, software
    2003 www.timemachine.ne.jp
    Готовится к выходу и уже доступно для публичного тестирования, крупное обновление, в инфраструктуре портов. Будут обнавлены все порты, связанные с подсистемой совместимости Centos 6 (до текущей версии 6.7). А так же, похоже, впервые будет реализована возможность задействовать новый режим 64 bit linuxulator, что позволит запускать 64 битные сборки програм.
    Однако тем кто захочет попробовать новый режим, совместимости 64 битного ПО, стоит учесть:
    • режим не до конца оттестирован
    • некоторое програмное обеспечение не имеет 64 битных сборок
    • в настоящее время, НЕЛЬЗЯ использовать 32 битные программы, если установлены 64-битные библиотеки совместимости
    • перед установкой следует удалить все старые пакеты связанные с линуксулятором
    • в make.conf надо внести секцию
      OVERRIDE_LINUX_BASE_PORT=c6_64
      OVERRIDE_LINUX_NONBASE_PORTS=c6_64
    Так же после данного обновления, после долгого перерыва, станет снова доступен Skype (32 bit).
    Достаточно подробную инструкцию как приступить к тестированию, написал в своём блоге miwi@, если коротко:
    • качаем diff D3428 (точную ссылку брать в фабрикаторе)
    • патчим дерево портов
    • собираем
    • инсталим
    • присматриваемся
    • если что пишем в рассылку, багтрекер или фабрикатор
  • ZFS Boot Environments интегрирован в загрузочное меню FreeBSD
    Andrey Fesenko в 14:55:00 с метками FreeBSD, ZFS
    ZFS Boot Environments menu to the loader menu
    ZFS BE меню выбора BE
    ZFS Boot Environments menu to the loader menu
    ZFS BE загрузчик, основное меню
    Новый год начинается с хороших новостей, наконец завершена интеграция, в меню загрузчика, возможностей ZFS по созданию окружений загрузки (Boot Environments, BE).
    Напомню как это работает, благодаря возможности ZFS создавать снапшоты, мгновенно и практически без накладных расходов (место они всё же занимают). Можно создать, в любой момент, снапшот загрузочной файловой системы (чаще всего youpool/ROOT/bename). клонировать его и повысить (promoting) его до обычной файловой системы, а в дальнейшем выбрать новую файловую систему в качестве загрузочной.
    В Opensolaris утилиты для работы данного функционала начали появляться ещё в 2008 году, так же поддержка была интегрирована в grub. В PC-BSD® аналогичный функционал был реализован с версии 10.0 благодаря использованию функционала grub. Весной 2012 года было начато портирование beadm во FreeBSD, после этого она стала доступна в портах и позволяет легко управлять BE из командной строки.
    root@des:~ # beadm list
    BE Active Mountpoint Space Created
    init - - 4.4G 2014-09-05 03:05
    first - - 2.1M 2014-09-05 05:19
    ...
    pre293017 - - 2.7M 2016-01-01 02:54
    r293017 NR / 35.8G 2016-01-01 05:07

    Но до вчерашнего дня, поддержки данного функционала не было в загрузчике и выбрать из какого BE загружаться, можно было только в уже работающей системе. Что немного снижало полезность данного функционала. Процесс интеграции был начат ещё летом, даже двумя независимыми проектами, один в рамках GSoC, другой в рамках reviews.freebsd.org, отчасти этим наверное вызвано, что изменение не было интегрировано ещё летом (так как GSoC заканчивался к осени). Но за прошедшее время разработчики успели улучшить функционал, и теперь он работает очень хорошо, так список BE строится автоматически и не ограничен по количеству BE и длине названий.
    В итоге, мы имеем отличную возможность создавать BE с помощью sysutils/beadm, а так же выбирать любой из существующих BE как заранее, так и в момент загрузки системы (в uefi boot menu вроде до сих пор не доступно). Это позволяет:
    • Откатится, в случае неудачного обновления (создавайте BE в самый последний момент, ибо все изменения после его создания и активации не будут автоматически доступны в новом BE, после перезагрузки)
    • Иметь несколько версий/модификаций системы с общим домашним или другими каталогами (находящимися вне BE.
    • лёгкую интеграцию с sysutils/beadm
    Хороший доклад на тему возможностей BE был сделан как раз в этом году в рамках EuroBSDcon 2015, Snapshots, Replication, and Boot-Environments by Kris Moore.

    UPD:  интеграция меню загрузчика, для UEFI идёт полным ходом, за процессом можно наблюдать и участвовать D4797
  • Проблема с malloc при портировании программы с linux'а
    Alex Povolotsky в 11:34:11
    Пытаюсь портировать pgcenter с линукса. С простыми до смешного патчами собрался, но при запуске вылетает с коредампом при free.

    Собрал valgrind ... так при запуске под valgrind'ом работает прекрасно.

    Нет ли у кого идей, что это может быть и/или куда дальше копать?
  • Перенос баз данных Mysql на другой диск
    admin в 18:24:09 с метками FreeBSD, MYSQL

    Кратко ситуация: начал сыпаться диск на рабочей машине с mysql. В результате бьются таблицы, repair не помогает. Надо остановить машину, запустить fsck, но доступ к машине только по шеллу. Размонтировать var система не дает, исправить ошибки на неразмонтироавнной ФС нельзя. В принципе все работает кроме БД, следовательно принято решение оставить var в покое и перенести базы на другой диск (благо он смонтирован для бэкапа). Копирую себе на заметку мануал по переносу баз mysql.

    Для начала можно посмотреть где базы:

    mysql> show variables like 'datadir';
    +---------------+----------------+
    | Variable_name | Value          |
    +---------------+----------------+
    | datadir       | /var/db/mysql/ |
    +---------------+----------------+
    1 row in set (0.00 sec)

    Останавливаем mysql копируем каталог с базами, меняем права доступа.

    /usr/local/etc/rc.d/mysql-server stop
    cp -R /var/db/mysql /data/mysql
    chown -R mysql:mysql /data/mysql

    Добавим ключ запуска mysql с указанием где лежат базы.

    echo 'mysql_dbdir="/usr/mysql"' >> /etc/rc.conf

    Запускаемся. Проверяем.

    mysql> show variables like 'datadir';
    +---------------+-------------+
    | Variable_name | Value       |
    +---------------+-------------+
    | datadir       | /data/mysql/ |
    +---------------+-------------+
    1 row in set (0.01 sec)

    Чекаем базу.

    mysqlcheck -Aor -p

    Все должно заработать.

  • Asterisk REST Interface (ARI)
    admin в 19:08:15 с метками Asterisk, FreeBSD, VoIP, Программинг
    Как, надеюсь, вам уже известно в Asterisk`е есть: Asterisk Gateway Interface (AGI) — запуск и исполнение любых скриптов на любом языке программирования из dialplan, а так же позволяет выполнять команды dialplan`а в этих скриптах Asterisk Manager Interface (AMI) — позволяет «слушать» событие происходящие в Asterisk`е, а так же позволяет выполнять команды Если вам они неизвестны, то подробнее […]
  • Asterisk и Distributed Device State
    admin в 14:11:51 с метками Asterisk, FreeBSD, VoIP
    Многие у кого в компании больше одного сервера Asterisk зачастую сталкиваются с задачей: экспорт состояния номеров на другом сервере Например когда появляется желание мониторить состояние exten`а на другом сервере (BLF). Чтобы при том что ваш телефон подключен к одному Asterisk серверу, а второй телефон к другому. По научному это называется Distributed Device State. Реализация подобной задачи […]
  • Агрегированный маршрут с BGP атрибутами на Juniper
    admin в 10:59:01 с метками Juniper, Networks, Протоколы маршрутизации
    Вместо вступления: Давненько не писал, все руки как то не доходили. 2015 год заканчивается, надо бы обновить блог Напишу те статьи что помню и давно хотел написать. Итак в данной статье пойдет речь о оч.хор. фишке у Juniper, а именно возможность выполнить анонс сети по BGP от другой AS без поднятия BGP сессии с этой AS. […]
  • www.lissyara.su www.lissyara.su igNix.ru OpenNews.opennet.ru Хабрахабр Russian FreeBSD Users Community Hilik Free Black Blog Oleksandr Tymoshenko's blog adminlog.ru Все о FreeBSD skiangel's replace :) Блог системного администратора Subnets.ru blog Andrey V. Elsukov Блог@DeathStar.Name Всякие заметочки Блог простого админа Rulkov.ru Настоящая система ifreebsd.org Nuclear Lightning's Track записки юного БСДешника BSDniR skeletor.org.ua Dreamcatcher.ru iboxjo Записки *NIX Админа rtfm Media UniX Блог Владислава Врублевского Мастерская интернет-разработчика 22:55 Unixzen Блог о FreeBSD HelpDesk jared.kiev.ua Около сетевой Блог How about a nickel bag? Fifteen bucks, lit-tle man. Put that shit in my hand! Клуб Сисадминов hotbits.RU Заметки о виртуализации и не только... www.unix.ck.ua Статьи - .:unix.uz:. - Заметки BSDельника ;) eax.me my.toilet.server infobsd.ru www.info-x.org - FreeBSD Блогосайт Алисы и Alv'а xaxatyxa.ru Сабынич Вадим. Обо всем понемногу Ufa FreeBSD News nix Блог-склерозник ~ArchimeD~'а Блог системного администратора Linux/FreeBSD rednikov system blog Все о ремонте и настройке компьютера Блог о программах для Windows&Linux some little things сисадминство Заметки creasysee 2gusia alex_tesla Сетевое хранилище для дома Ещё один блог сисадмина tedor.kr.ua - блог Информационный портал Noctifer Собрание полезных заметок Shirrma АйТи Лапша Vladus blog - Odmin.info Блог полезных статей о разработке и раскрутке сайтов ЗАПИСКИ АДМИНИСТРАТОРА FREEBSD likeunix Воронов Глеб | TradeNarK LLCВоронов Глеб | TradeNarK LLC Labor omnia vincit BSD MAG (не)структурированные мысли Алексея Тутубалина (blog.lexa.ru)