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

30 января 2012 года

Представлен отчёт о развитии проекта FreeBSD с сентября по декабрь 2011 года. Основные усилия разработчиков в четвёртом квартале 2011 года были связаны с подготовкой релиза FreeBSD 9.0, который вышел в начале января.

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

  • Системы хранения и файловые системы
  • Во FreeBSD-HEAD принят код подсистемы CAM Target Layer (CTL), обеспечивающей эмуляцию дисковых и процессорных устройств. Например, CTL позволит реализовать возможность использования системы на базе FreeBSD и карты Fibre Channel в качестве внешнего RAID-массива, target-интерфейс которого будет реализован через CTL. Кроме того, CTL можно использовать как тестовый фреймворк для CAM (Common Access Method): реализовав в CAM новую возможность, можно сразу протестировать её в CTL. При этом легко сэмулировать нетипичное поведение устройств и различные аппаратные ошибки, которые в штатном режиме невозможно повторить на реальном устройстве.

Например, для тестирования драйвера новой карты Fibre Channel можно создать LUN и использовать CTL без реального оборудования, привязав драйвер "da" к CTL LUN и выполняя с ним любые операции ввода/вывода. Изначально CTL был создан для Linux в 2003 году компанией Copan Systems, ныне входящей в состав SGI. В 2008 году код был портирован во FreeBSD, а в 2010 году по договорённости с SGI предоставлен под лицензией BSD. Во FreeBSD-STABLE CTL планируется интегрировать в середине февраля, т.е. данная подсистема войдёт в состав FreeBSD 9.1;

  • Инициатива по переработке GEOM-класса Multipath, позволяющего организовать доступ к хранилищу, подключенному через несколько каналов ввода/вывода. В новой реализации устранены многие проблемы и добавлены дополнительные возможности, такие как поддержка режима Active/Active, который распределяет нагрузку по всем рабочим каналам, в дополнение к ранее доступному Active/Passive. Улучшена реализация автоматического режима конфигурации Multipath. Добавлен ручной режим настройки, при котором каналы можно удалять и добавлять через команды remove и add. Изменён подход к работе с каналами после сбоя, теперь они не удаляются из GEOM, а лишь помечаются сбойными (для управления сбойными каналами добавлены команды "fail" и "restore"). Новая реализация GEOM-класса Multipath уже добавлена во FreeBSD HEAD и скоро будет перенесена в ветки 9-STABLE и 8-STABLE;
  • Компания LSI представила свой вариант драйвера "mps", в котором реализована поддержка 6Gb SAS-контроллеров, SSD-накопителей WarpDrive и интегрированных RAID. В драйвере также улучшен код восстановления ошибок, добавлена поддержка EEDP (SCSI protection information) и TLR (Transport Level Retries). Ioctl-интерфейс драйвера совместим с утилитами LSI. Код драйвера интегрирован во FreeBSD HEAD и в феврале будет портирован для веток stable-9 и stable-8;
  • В драйвер "da" (SCSI Direct Access Driver) добавлена поддержка операции BIO_DELETE (TRIM). В зависимости от возможностей устройств используются разные методы работы TRIM (для управления подготовлен sysctl kern.cam.da.X.delete_method): NONE, DISABLE, ZERO, WS10, WS16 и UNMAP. Дополнительно в драйвере "da" обеспечена возможность вывода информации о физическом размере сектора для устройств. Код уже интегрирован в ветку HEAD и скоро будет портирован в ветки 8/9-STABLE;
  • Снят гриф экспериментальной разработки с кода новой реализации клиента и сервера NFS, которые начиная с версии FreeBSD 9.0 используются по умолчанию. Обеспечена достаточно полная поддержка NFSv4.0, NFSv3 и NFSv2. Продолжается работа по реализации поддержки NFSv4.1. Доступны начальные патчи с реализацией pNFS и режима агрессивного дискового кэширования на стороне клиента NFSv4 (packrats);
  • Сетевая инфраструктура
  • Обеспечена возможность активации во FreeBSD 9.0 только IPv6-стека без поддержки IPv4. Возможность использования IPv6 без IPv4 полезна для тестирования самодостаточности реализации IPv6 и выявления ошибок в приложениях, трудноуловимых при использовании двойного IP-стека (часто в случае сбоя программа без лишних предупреждений начинает использовать IPv4);
  • Во FreeBSD HEAD добавлены наработки проекта CARP2, в рамках которого предпринята попытка полностью переписать реализацию протокола CARP (Common Address Redundancy Protocol) для FreeBSD. Протокол CARP, выступая в роли открытой альтернативы протоколам HSRP (Hot Standby Router Protocol) и VRRP (Virtual Router Redundancy Protocol), позволяет организовать совместное использование IP-адреса между несколькими серверами в локальной сети, что может применяться для балансировки нагрузки (IP одновременно используют все сервера) или для создания отказоустойчивых систем (IP использует первичный сервер, при нарушении его работы, IP подхватывает другой).

Причиной создания новой реализации CARP для FreeBSD является то, что текущая реализация не вносит нового сетевого интерфейса, а привязана к адресу на существующем интерфейсе, из-за чего в коде обработки входящих пакетов присутствует несколько "хаков", от которых хотелось бы избавиться. Среди других целей - упрощение кода, решение многих связанных с CARP проблем для которых остаются незакрытые PR в GNATS, нормализация адресов CARP с точки зрения демонов маршрутизации, таких как quagga/zebra. Новая реализация также позволит обеспечить поддержку одного избыточного IP на подсеть и реализовать режим carpdev для интерфейсов без IP. Из планов отмечается реализация функций arpbalance и ipbalance, добавление поддержки наглядного вывода CARP-пакетов в tcpdump, работа с IANA по получению официального номера для нового протокола;

  • Система
  • Отмечается большой прогресс в создании для FreeBSD полноценного С++ стека, целиком распространяемого под лицензией BSD и независящего от кода проекта GNU. Добавлены две новые библиотеки: libc++ с реализацией элементов, определённых в стандарте C++11, и libcxxrt с реализацией спецификации C++ ABI. Для задействования данных библиотек в src.conf следует указать "WITH_LIBCPLUSPLUS=yes" и использовать при сборке "-stdlib=libc++" (для задействования GNU libstdc++ нужно указать "-stdlib=libstdc++"). По умолчанию библиотеки не используются, так как библиотека libc++ не совместима с поставляемым в базовой системе gcc и может работать только с clang.

Среди планов на будущее: тестирование сборки портов с libc++ (большинство портов без проблем собираются, но остаются такие, которые жестко привязаны к libstdc++ или требуют патчей); обеспечение возможности выбора GNU или BSD библиотек через libmap.conf; переход на сборку и использование libc++ и libcxxrt по умолчанию (когда clang станет компилятором по умолчанию в базовой системе); удаление libstdc++ из базовой системы и помещение в порты для обеспечения обратной совместимости;

  • Продолжена работа по замене устаревшей реализации регулярных выражений в libc. Наиболее подходящим кандидатом для замены является библиотека

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Отчёт о состоянии развития FreeBSD за четвёртый квартал 2011 года», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.