Отчет о состоянии развития FreeBSD за первый квартал 2011 года

Опубликован отчет о развитии проекта FreeBSD с января по март 2011 года. В первые два месяца 2011 года основные усилия разработчиков были направлены на подготовку релизов FreeBSD 8.2 и 7.4, которые были выпущены в конце февраля. В настоящее время участники проекта начал интенсивную работу по формированию следующей значительной ветки - FreeBSD 9.0.

Основные достижения:

  • Сетевая инфраструктура
    • Продолжается развитие проекта DIFFUSE (DIstributed Firewall and Flow-shaper Using Statistical Evidence), добавляющего в пакетный фильтр IPFW функции классификации IP-трафика на основании статистических данных. Система позволяет для отдельных потоков трафика накапливать и учитывать в IPFW такую статистику, как размер пакетов или время между поступлением пакетов, организуя привязку потоков к определенным классам трафика при помощи техник машинного обучения.

      Патчи с реализацией DIFFUSE доступны для FreeBSD-CURRENT. В феврале была выпущена версия DIFFUSE v0.2.2 из новшеств которой отмечено добавление утилиты для построения классификаторов моделей. Создан модуль и модель для классификации трафика Skype. В ближайшее время разработчики планируют выпустить релиз DIFFUSE v0.3.

    • Полностью доведена до конца работа по интеграции в ядро FreeBSD пяти новых модулей с реализацией различных алгоритмов для контроля перегрузки (Congestion Control) в TCP: HTCP, CUBIC, Vegas, HD и CHD. Готов для интеграции в ядро FreeBSD фреймворк Khelp, представляющий интерфейс для создания модулей ядра, на лету обеспечивающих выполнение определенных сервисных функций. Также включения в ядро ожидает Khelp-модуль ERTT (Enhanced Round Trip Time), позволяющий более точно измерять параметры TCP потока для использования в алгоритмах управления контроля перегрузки TCP. Уже подготовлен тестовый вариант патча, в котором осуществлено портировние проделанной для FreeBSD-CURRENT работы в 8-STABLE (планируется интегрировать данный патч во FreeBSD 8.3);
  • Системы хранения и файловые системы
    • В коде поддержки файловой системы ext2fs реализована поддержка перераспределения блоков (reallocblks), примерно так как это уже реализовано в штатной FFS. В дальнейшем в ext2fs планируется добавить поддержку htree-индекса директорий;
    • Во FreeBSD 9-CURRENT интегрирована новая реализация программного RAID - graid, призванная заменить устаревшую систему управления программными RAID-массивами ataraid. Новая реализация основана на использовании инфраструктуры GEOM и построена в соответствии с принципами модульной архитектуры, что позволило разделить систему на базовый модуль, модули для обработки преобразования данных (RAID-уровни) и модули для определения формата хранения мета-данных на диске.

      В отличии от ataraid, graid не зависит от устаревшей подсистемы ata и может быть использован с любыми драйверами дисковой подсистемы, включая новые, основанные на CAM (ahci, siis, mvs, ata с использованием "options ATA_CAM"). Поддерживаются популярные форматы метаданных Intel, JMicron, NVIDIA, Promise (используется AMD/ATI) и SiliconImage. Реализованы следующие RAID-уровни: RAID0, RAID1, RAID1E, RAID10, SINGLE, CONCAT. Среди приоритетных планов по улучшению graid названо добавление поддержки дополнительных форматов метаданных и реализация уровня RAID5;

    • Отмечен прогресс в развитии системы репликации устройств хранения данных (HAST), которая позволяет использовать FreeBSD для создания высоконадежных конфигураций, в которых данные синхронизированы по всем узлам кластера. HAST реализован в виде GEOM-класса, обеспечивающего синхронную репликацию блочных устройств поверх TCP/IP сетей, независимо от типа накопителя и файловой системы. HAST предусматривает возможность быстрого восстановления после сбоя, причем, при выходе из строя первичного master-узла, его функции могут быть делегированы slave-узлу. После проверки и монтирования UFS раздела или импорта ZFS пула на поврежденном узле, система автоматически синхронизирует внесенные за время восстановления изменения и продолжит работу без потери данных.

      С момента прошлого отчета в HAST добавлена поддержка сжатия передаваемых по сети данных, опциональная возможность вычисления и проверки контрольных сумм для передаваемых данных, поддержка изоляции (sandboxing) вторичных узлов и hastctl, поддержка дополнительной защиты (Chroot+setuid+setgid) для первичного узла, возможность выбора IP для инициирования соединений. В HandBook добавлена секция, посвященная настройке HAST;

    • Во FreeBSD-HEAD решены все известные проблемы (в том числе проблемы с производительностью) с работой механизма журналирования Soft Updates для файловой системы UFS. Данное нововведение позволяет отказаться от необходимости запуска fsck после "грязного" размонтирования файловой системы и достичь очень высокой скорости восстановления состояния файловой системы при очень малом объеме журнала, при этом система полностью обратно совместима с нежурналируемым вариантом softupdates. Во FreeBSD 9 новая система будет использована по умолчанию, также её можно будет использовать и для корневой ФС;
    • Продолжена работа по доведению до рабочего состояния поддержки работы FreeBSD в качестве клиента распределенной сетевой файловой системы OpenAFS. Ожидается, что порт версии OpenAFS 1.6 будет достаточно стабилен для повседневного использования;
    • В дерево исходных текстов FreeBSD-CURRENT интегрирована поддержка ZFSv28. Обзор отличий ZFSv28 от ранее доступных версий ZFS v13-v15 можно посмотреть здесь;
  • Изолированные окружения, безопасность и ограничения ресурсов
    • Продолжается работа по адаптации FreeBSD для функционирования в качестве гостевой ОС для cloud-окружений Amazon EC2. В дополнение к ранее реализованному запуску в окружениях "t1.micro", добавлена поддержка окружений "cc1.4xlarge". При работе FreeBSD 8.2-RELEASE пока наблюдаются проблемы, связанные с ограничением micro-окружения размера ОЗУ (600 Мб), но FreeBSD 9.0 ведет себя уже достаточно стабильно. Среди планов на будущее, расширение поддерживаемых EC2-окружений, переработка системы блокировок в head/sys/i386/xen/pmap.c для устранения эффектов гонки, повышение стабильности 9.0-CURRENT при работе в режиме паравиртуализации, решение некоторых проблем с планировкой задач и выделения квантов времени.
    • Во FreeBSD-CURRENT интегрирована большая часть кода проекта RCTL по реализации контейнеров ресурсов и возможности установки индивидуальных ограничений ресурсов в привязке к конкретным Jail-окружениям. Разработан общий фреймворк для управления ресурсами, обеспечена поддержка лимитирования различных типов ресурсов, таких как память и загрузка CPU. Для активации системы ядро нужно пересобрать с опциями "options RACCT" и "options RCTL", управление производится утилитой rctl(8). До релиза 9.0-RELEASE остается решить две проблемы: переработать систему аккаунтинга и органичения ресурсов CPU и обеспечить возможность задания правил независимо от наличия Jail (сейчас правила могут быть применены только к уже созданным Jail);
  • Поддержка оборудования
    • Улучшена работа демона Webcamd, предназначенного для организации работы с web-камерами, работающего на пользовательском уровне и созданого на основе портирования Video4Linux-драйверов. В настоящий момент поддерживается около 1500 различных web-камер, DVB и пультов удаленного управления с интерфейсом USB. За отчетный период добавлена трансляции специфичных для Linux ioctl DVB и V4L2, что позволило обеспечить в таких программах, как SageTV, Skype и Flash поддержку работы с тюнерами DVB/ATSC и web-камерами.

      В будущем, связанный с поддержкой DVB код планируется вынести в отдельный порт, так как в базовую систему интегрировать все наработки мешает поставка некоторых компонентов под лицензией LGPL (в системе будет поставляться враппер linux_dvbwrapper.ko). Также будет продолжена работа по реализации новых ioctl, что позволит задействовать такие функции как акселерация декодирования MPEG2-потоков для аналоговых или DVB-тюнеров;

    • Сформирован список совместимых с FreeBSD web-камер, DVB-устройств и пультов удаленного управления;
    • Продолжается работа по обеспечению поддержки ARM-платформы OMAP3. Эмулятор qemu-omap3 пока не портирован для FreeBSD, поэтому приходится запускать эмулятор в Linux. Из незавершенных задач отмечается создание драйверов для процессоров OMAP3;
    • В FreeBSD/arm обеспечена поддержка интегрированного RAID-контроллера (RAID-on-Chip) Marvell 88RC8180, основанного на процессорном ядре Feroceon 88FR331 (ARMv5TE), а также более нового контроллера Marvel 88RC9580, основанного на процессорном ядре Sheeva 88SV581 CPU(ARMv6). Поддержка включает возможность загрузки с использованием U-Boot, использование L1 и L2 кэша, контроллера прерываний, таймеров, шины PCI Express, Ethernet-контроллера. Остается довести код до финального вида, почистить и интегрировать во FreeBSD-HEAD;
    • Добавление в FreeBSD/powerpc поддержки процессоров Freescale QorIQ, идущих на смену семейству PowerQUICC (MPC85xx). В настоящий момент обеспечена поддержка чипов QorIQ P2020, возможность загрузки с использованием U-Boot, поддержка L1 и L2 кэшей, последовательного порта (UART), контроллера прерываний, Ethernet (в режимах TSEC, SGMII), I2C, EHCI-контроллера, Security Engine (SEC) 3.1, Enhanced SDHC и Dual-core (SMP) систем.
    • Ведется работа по улучшению поддержки MIPS-процессоров Octeon интеграции наработок с кодом поддержки других процессоров MIPS;
  • Система
    • Во FreeBSD-CURRENT завершён переход на bsdinstall в качестве инсталлятора по умолчанию. BSDInstall отличается модульностью, простотой подключения расширений, поддержкой управляющих установкой скриптов и ускорением выполнения процесса инсталляции. По своей сути BSDInstall представляет собой shell-скрипт, в определенной последовательности вызывающий дополнительные скрипты или приложения.

      Любое звено установки может быть легко модифицировано или заменено на альтернативную реализацию (например, вместо вызова редактора дисковых разделов можно указать скрипт, который вернет определенную последовательность gpart-команд). В процессе установки, работа инсталлятора сводится к распаковке трех архивов: образа с базовой системы (world.tgz), ядра (kernel.tgz) и коллекции портов (ports.tgz), после чего могут быть запущены постустановочные конфигураторы или скопированы типовые файлы конфигурации (fstab, rc.conf, resolv.conf).

      Базовые возможности:

      • Возможность установки на GPT-диски;
      • Поддержка установки, охватывающей несколько дисков;
      • Поддержка установки внутрь jail-окружений;
      • Поддержка упрощенного PXE-режима установки;
      • Дружественность к системам виртуализации, например, можно произвести установку в дисковый образ из работающей системы;
      • Значительное ускорение процесса установки системы;
      • Гибкое управление установкой через написание скриптов;
      • Возможность простой реализации мелких настроек;
      • Установочный CD выступает в роли LiveCD.
      • Режим настройки параметров беспроводной сети;
      • Поддержка установки на ZFS-разделы (реализация функции не завершена).
    • Старый порт (linux_base) с набором компонентов для работы Linux-эмуляции признан устаревшим, так как многие программы в нем устарели и уже не поддерживаются. Обновлен порт linux-f10-pango, выполненный на базе Fedora 10. Тем не менее в базовой системе по умолчанию продолжает использоваться linux_base, в связи с чем рассматривается вопрос на базе какого RPM-совместимого дистрибутива создать новый современный порт, подготовить его и протестировать на предмет совместимости с кодом поддержки ядра;
  • Приложения и система портов
    • Продолжается работа по адаптации FreeBSD для использования в качестве платформы для создания домашнего кинотеатра. Работа сосредоточена на улучшении поддержки во FreeBSD существующих медиа-центров, таких как MythTV, VDR, XBMC, Enna и me-tv. За последние месяцы отмечено расширение возможностей по дистанционному управлению мультимедиа приложениями и web-камерами (webcamd), благодаря улучшению поддержки проекта lirc.

      Завершено портирование и интегрировано в дерево портов (multimedia/vdr) приложение VDR (Video Disk Recorder), а также 17 сопутствующих плагинов. Из остающихся открытых задач отмечено доведение до конца поддержки lirc и удаленного управления webcamd, портирование дополнительные приложений, таких как Enna и me-tv, создание руководства по созданию домашнего кинотеатра на базе FreeBSD;

    • Обновление порта web-браузера Chromium максимально приближено к выходу официальных релизов. Обеспечение поддержки платформы FreeBSD производится при тесном взаимодействии с upstream и непосредственно с Google. Проекту требуются добровольцы для работы с командой разработчиков Chromium по продвижению в основную кодовую базу патчей, разработанных при прортировании;
    • В порты интегрирована версия 7.0.3 функционального языка программирования Haskell. Другие связанные с Haskell потры, общее число которых уже превышает 200, также обновлены до последних версий. Многие из портов пока доступны только через специальный репозиторий. Из задач на будущее отмечено создание метапорта для установки платформы Haskell, создание портов для систем Happstack и gitit;
    • Группа, занимающаяся портированием десктоп-оболочки KDE и Qt для FreeBSD, сообщила об улучшении поддержки совместных ресуросов (например, битовых карт), реализации мониторинга изменения файлов через kevent, обеспечении поддержки новых сенсоров в KSysGuard. Из последних портированных систем отмечены: Qt 4.7.2, KDE 4.5.5, 4.6.1 и 4.6.2, KOffice 2.3.3, KDevelop 4.2.0 и 4.2.2;
    • В утилиту для управления портами portmaster добавлена поддержка опции "--update-if-newer", улучшена реализация опций "--index-only", "--check-depends" и "--packages-only", файл portmaster.rc отныне может быть размещен в текущей директории скрипт;
    • Число портов приблизилось к отметке 23000. Проведена работа по закрытию накопившихся PR, число незакрытых PR сохраняется на уровне тысячи. Бинарные пакеты в настоящее время собираются для архитектур amd64-6, amd64-7, amd64-8, i386-6, i386-7, i386-8, i386-9, ia64-8, sparc64-7, sparc64-8.
    • На 95% доведена до конца работа по использованию по умолчанию порта www/apache22 при установке Apache. К релизам 8.3 и 9.0 все оставшиеся недоработки будут доделаны;
  • Разное
    • Продолжается работа по разбору накопившихся сообщений об ошибках (PR). Группа "Bugbusting Team" пытается разобрать накопившиеся сообщения, классифицировать их через привязку тегов и передать требующие внимания PR-ы коммиттерам и мантейнерам портов;
    • Близится к концу подготовка релиза pfSense 2.0.

Полный текст статьи читайте на OpenNet