Представлен отчет о развитии проекта FreeBSD с апреля по июнь 2010 года. Основные события:
  • Системы хранения и файловые системы
    • В рамках проекта ExtFS ведется работа над поддержкой монтирования файловой системы ext4 в режиме только для чтения и реализацией алгоритма предварительного резервирования блоков (pre-allocation). Из возможностей ext4 уже готова поддержка экстентов и гигантских файлов (huge_file), остается доделать dir_index, uninit_bg, dir_nlink, flex_bg и extra_isize.
    • Ведется работа по созданию inotify-совместимой системы нотификации об изменениях в файловой системе (fsnotify) и добавлению поддержки inotify в linuxulator. В настоящее время код уже работоспособен, но еще плохо совместим с inotify в некоторых деталях;
    • Подготовлена основанная на GEOM реализация псевдо-RAID (fakeRAID-контроллеры) - geom_pseudoraid, идущая на смену ataraid. В настоящий момент поддерживается создание массивов RAID-1 на контроллерах VIA Tech V-RAID и Adaptec HostRAID. В geom_pseudoraid пока не реализована поддержка записи мета-данных и пересборки RAID, нет поддержки RAID-0 и SPAN-массивов;
    • Переработан код VFS namecache для обеспечения более корректной организации блокировок и поддержки выборки по полному файловому пути без обращения к связанному с файловой системой коду. В настоящий момент на базе нового кода удалось реализовать кеширование содержимого директорий (dircache) для идеализированного окружения с tmpfs;
    • Добавлена экспериментальная поддержка работы FreeBSD в качестве клиента распределенной сетевой файловой системы OpenAFS;
    • В дерево исходных текстов FreeBSD HEAD интегрирован код 15 версии файловой системы ZFS, соответствующий состоянию Solaris 10 update 8. Новая версия отличается проведением работы по исправлению ошибок, оптимизацией производительности (тесты показывают прирост скорости на 15-20%) и добавлением поддержки пользовательских и групповых квот. Продолжается работа по портированию 26 версии ZFS, в которой реализована поддержка автоматического распознавания и объединения дубликатов данных. Если в нескольких файлах присутствуют аналогичные блоки данных, то они будут сохранены на физический носитель только один раз, что позволит существенно уменьшить потребление дискового пространства и увеличить производительность - вместо копирования блоков будет лишь изменена запись в соответствующей таблице.
  • Система
    • В состав базовой системы FreeBSD HEAD включен компилятор Clang, который может быть использован вместо GCC для архитектур i386, amd64 и powerpc. В настоящее время ведется работа по созданию базирующегося на LLVM кода ELF writer, готовится к интеграции в HEAD новая версия Clang/LLVM, рассматривается возможность использования Clang для архитектур ARM/MIPS/SPARC64 и выявляются ошибки при сборке при помощи Clang программ из дерева портов;
    • Функциональность реализации распределенной системы аудита для FreeBSD готова на 90%, работает синхронизация данных между связанными в режиме master-slave демонами аудита на двух системах. Осталось привести код в соответствие с требованиями разработчиков FreeBSD, добавить возможность шифрования передаваемых данных, провести проверку кода на предмет потенциальных ошибок безопасности и интегрировать код с текущей подсистемой аудита.
    • В рамках проекта FSC (FreeBSD Services Control) ведется работа по подготовке похожих на Solaris SMF и daemontools инструментов для управления и мониторинга работой системных сервисов. Для контроля за работой сервисов используется фоновый процесс fscd, сервисы добавляются при помощи утилиты fscadm. В случае аварийного завершения работы сервиса, fscd распознает падение процесса и запускает сервис вновь;
    • Подготовлена базовая реализация фреймворка с поддержкой шины GPIO (General Purpose Input/Output). Готовы два драйвера: gpioled с простейшей реализацией функциональности led(4) и gpioiic с поддержкой I2C через GPIO;
    • В состав базовой системы FreeBSD HEAD интегрирована альтернативная программа установки pc-sysinstall (консольный бэкенд, напоминающий классический sysinstall), разработанная в недрах проекта PC-BSD. Из возможностей отмечена поддержка ZFS, raidz, gmirror-зеркалирования, GPT/EFI, GELI-шифрования, gjournal, присутствует собственный менеджер для MBR слайсов/разделов, после установки формируется подробный лог, отражающий статус выполнения всех операций.
  • Изолированные окружения и ограничения ресурсов
    • Ведется работа по реализации для FreeBSD системы коллективного ограничения ресурсов (Collective Resource Limits), известной в SGI IRIX как "Jobs". Возможность позволяет назначить определенный лимит (размер памяти, число открытых файлов и т.п.) на ресурсы группы процессов;
    • Проект по подготовке инфраструктуры виртуализации на базе Jail в настоящий момент пытается решить две задачи: 1. Обобщение виртулизационного фреймворка с целью упрощения механизмов управления и исключения дублирующихся функций. 2. Развитие виртуального сетевого стека.
    • Стартовал проект по поддержке контейнеров ресурсов и реализации простого механизма ограничения ресурсов для отдельных Jail-окружений. Цель данного проекта состоит в том, чтобы создать единую унифицированную инфраструктуру для контроля потребления ресурсов и использовать ее для реализации лимитов ресурсов для отдельных Jail. В будущем, эта инфраструктура может быть использована для реализации более сложных видов контроля над ресурсами (например, иерархического ограничения ресурсов) или для реализации механизмов, аналогичных AIX WLM. Также она может быть использована для точного учета потребления ресурсов в целях администрирования или тарификации.
  • Сетевая инфраструктура
    • Ведется работа по усовершенствованию TCP/IP стека FreeBSD. Готов для публичного тестировоания код системы автотюнинга параметров пересборки TCP-пакетов. В базовую систему FreeBSD HEAD интегрирован модуль ядра SIFTR (Statistical Information For TCP Research), разработанный при поддержке компании Cisco. SIFTR-модуль осуществляет ведение журнала в который заносится широкий диапазон параметров, связанных со статистикой активных TCP-соединений. Для обеих возможностей готовится бэкпорт для ветки 8-STABLE.
    • В рамках проекта libnetstat ведется работа по созданию библиотеки с функциями, связанными с выполнением задач мониторинга и управления сетевой подсистемой. Библиотека выступает в роли враппера и позволяет исключить прямое обращение к интерфейсам kvm(3) и sysctl(3).
    • Разрабатывается новый стек для организации перехвата пакетов - ringmap (Packet-Capturing Stack), специально оптимизированный для высокоскоростных сетевых интерфейсов. Реализация ringmap напоминает "zero-copy BPF" тем, что минимизирует операции копирования пакетов, благодаря использованию единых совместных буферов. В отличии от "zero-copy BPF" ringmap исключает любое копирование пакета, так как DMA-буфер сетевого адаптера отображается прямо в user-space. С точки зрения API новая система совместима с libpcap;
  • Поддержка оборудования
    • Близится к завершению портирование во FreeBSD пакета DAHDI (Zaptel), который представляет собой открытый фреймворк для создания драйверов и набор готовых драйверов для E1/T1, цифровых ISDN и аналоговых FXO/FXS карт. Портирование DAHDI позволит использовать FreeBSD в качестве платформы для организации работы PBX-систем (VoIP и офисных АТС) на базе Asterisk. Кроме того в рамках проекта для FreeBSD обеспечена поддержка TDMoE (Time Division Multiplexing over Ethernet), аппаратных и программных механизмов подавления эхо (Octasic, VPMADT032) и возможность использования аппаратных транскодеров (TC400B). В настоящее время работа сосредоточена на тестировании работы драйверов.
    • Во FreeBSD HEAD интегрирована реализация поддержки технологии FDT (Flattened Device Tree), позволяющей описать аппаратные ресурсы компьютерной системы, с учетом всех связей, платформо-независимым и переносимым способом. Технология FDT прежде всего окажется полезной для встраиваемых систем (ARM, AVR32, MIPS, PowerPC), аппаратные ресурсы которых не поддерживают самоидентификацию и не могут быть определены путем проверок. FDT базируется на реализации дерева устройств в стандарте Open Firmware IEEE 1275 и эталонной спецификации ePAPR. Поддерживаются платформы Marvell ARM, SheevaPlug и Freescale PowerPC.
    • Началась работа по портированию FreeBSD/powerpc64 для поддержки базирующихся на процессоре Cell приставок Sony Playstation 3. Подготовлен загрузчик FreeBSD, обеспечена поддержка framebuffer, MMU и device discovery. После того как будет завершена работа над драйверами для сетевого адаптера и контроллера прерываний на Sony Playstation 3 можно будет загрузить FreeBSD в многопользовательском режиме.
    • Продолжается развитие портов FreeBSD для платформ AVR32, Powerpc64 и Sparc64. Поддержка Powerpc64 была недавно добавлена в HEAD, в настоящий момент поддерживаются процессоры Apple Xserve G5, Apple Power Macintosh G5 и Apple iMac G5. В порте для Sparc64 добавлена поддержка серверов Fujitsu (Siemens) PRIMEPOWER 250 (также должны работать модели PRIMEPOWER 450, 650 и 850, но они не тестировались), основанных на SPARC64 V CPU.
  • Приложения и система портов
    • В рамках проекта pkg_patch создается инфраструктура для распространения бинарных патчей, которая позволит пользователям на работающей системе эффективно исправлять проблемы в установленных пакетах. Код программы написан на языке Си и использует стандартную библиотеку libpkg, что позволит без проблем после завершения работы интегрировать утилиту в базовую систему.
    • Утилита grep, распространяемая под лицензией BSD, в общем виде готова для интеграции в базовую систему FreeBSD HEAD (9-CURRENT), осталось исправить несколько незначительных ошибок.
    • Завершена работа над библиотекой iconv, распространяемой под лицензией BSD и основанной на наработках из проекта NetBSD. Библиотека показывает неплохие результаты совместимости с GNU iconv, осталось провести тестирования сборки портов с новой реализацией iconv и исправить возникшие при этом проблемы.
    • Продолжается усовершенствование порта web-браузера Chromium, который теперь основан на базе ветки 5.0.375. Порт уже работает достаточно стабильно, включая такие возможности как HTML 5 тег video, и готов для интеграции в систему портов (ожидает утверждения во FreeBSD Foundation). В будущем планируется обеспечить работу во FreeBSD встроенного менеджера задач Chromium и убедиться в корректности работы дополнений к браузеру. Разработчик порта Chromium использует интересную схему стимулирования финансовой поддержки проекта, свежие сборки распространяются только по платной подписке: патчи сразу доступны только для подписчиков, для остальных они публикуются через определенное время.
    • Ведется работа по портированию для FreeBSD функционального языка программирования Haskell, для FreeBSD/i386 и FreeBSD/amd64 уже подготовлен рабочий пакет с Glasgow Haskell Compiler. Ведется работа по переносу библиотек и программ из коллекции пакетов Haskell Cabal в систему портов FreeBSD, готовится к публикации порт с Haskell Platform;
    • Подготовлена унифицированная библиотека libpkg с реализацией типовых функций по работе с базой данных и содержимым пакетов. В настоящий момент полностью реализованы функции чтения информации о пакетах и удаления пакетов. Операции, связанные с записью и логами, еще в процессе реализации;
    • Ведется работа по добавлению поддержки интерфейса V4L (Video for Linux) в код Linux-эмулятора. В настоящий момент уже поддерживается работа V4L через универсальный драйвер cuse4bsd, поддерживающий множество web-камер. Код пока реализован для 9-CURRENT, но планируется бэкпортировать его в ветку 8-STABLE;
    • Число портов достигло 22000, из них у 1200 имеются незакрытые PR. В порты интегрирован Xorg 7.5, а также свежие версии KDE 4 и GNOME 2. Для сборки портов организация FreeBSD Foundation выделила два новых сервера. Бинарные пакеты в настоящее время собираются для архитектур amd64-6, amd64-7, amd64-8, i386-6, i386-7, i386-8, i386-9, ia64-8, sparc64-7, sparc64-8, ia64-8.
  • Разное
    • Завершены выборы нового состава FreeBSD Core Team, в состав которого вошли 5 новых члена и 4, уже имеющих опыт работы во FreeBSD Core Team.


Источник: http://www.opennet.ru/opennews/art.shtml?num=27408