С небольшим отставанием от графика Кен Смит (Ken Smith) в списках рассылки freebsd-stable и freebsd-current объявил о доступности для тестирования FreeBSD 9.0-BETA1.
ISO образы дистрибутива доступны для платформ: amd64, i386, ia64, powerpc, powerpc64 и sparc64. Первая бета версия выпущена на основе исходного кода FreeBSD CURRENT, поэтому для обновления из CVS/CVSup/SVN необходимо использовать соответствующую ветку ("." для CVS, head для SVN).
Перед выходом 9.0-BETA2 будет изменена версия разделяемых библиотек, поэтому после обновления до BETA2 понадобится выполнить пересборку всех пакетов, которые будут установлены при тестировании BETA1. Как обычно в новой значительной версии было проведено большое количество изменений, в том числе, теперь используется новый инсталлятор, тестированию которого нужно уделить особое внимание.
Одновременно началось тестирование десктоп-ориентированной операционной системы PC-BSD 9, основанной на кодовой базе FreeBSD 9. Новая версия отличается возможностью работы с несколькими графическими окружениями (KDE 4, GNOME 2, XFCE 4, LXDE, раньше предлагалось использовать только KDE); обновлен инсталлятор в котором упрощена настройка ZFS и GELI-шифрования; представлен новый центр управления; доработан конфигуратор сети; улучшена работа системы резервного копирования Life-Preserver. Множество изменений внесено в систему управления пакетами: задействован обновленный формат пакетов PBI (обзор изменений, наиболее важное новшество - это поддержка совместного использования библиотек между разными пакетами); обеспечена поддержка мета-пакетов для быстрой установки тематических групп приложений; добавлен апплет AppCafe для просмотра, установки и управления приложениями; добавлена новая утилита для обновления системы, поддерживающая работу с "freebsd-update"” и позволяющая обновить базовую систему до более нового промежуточного релиза (например, перейти от 9.0 к 9.1).
Из улучшений можно отметить:
В состав базовой системы FreeBSD интегрирован код инфраструктуры LLVM и компилятора Clang, который может быть использован вместо GCC для сборки ядра, стандартного окружения и большинства портов.
Увеличена масштабируемость ядра и TCP-стека на SMP-системах, обеспечена корректная работа на системах с более чем 32 CPU.
В TCP-стек интегрированы такие новшества, как поддержка группировки TCP-соединений в привязке к CPU, задействование некоторых аппаратных механизмов снижения нагрузки и возможность привязки отдельных соединений к заданному CPU;
В ядро интегрировано пять новых модулей с реализацией различных алгоритмов для контроля перегрузки (Congestion Control) в TCP: HTCP, CUBIC, Vegas, HD и CHD. Подготовлен фреймворк Khelp, представляющий интерфейс для создания модулей ядра, на лету обеспечивающих выполнение определенных сервисных функций. Также доступен Khelp-модуль ERTT (Enhanced Round Trip Time), позволяющий более точно измерять параметры TCP потока для использования в алгоритмах управления контроля перегрузки TCP.
Добавлен новый универсальный USB-драйвер, обеспечивающий поддержку устройств с интерфейсом USB 3.0, соответствующих спецификации XHCI (eXtensible Host Controller Interface). Представленный драйвер совместим с более старыми контроллерами USB 2.0 и USB 1.0, и способен в будущем заменить ранее присутствующие драйверы OHCI, UHCI и EHCI;
Начальная поддержка архитектуры NUMA в подсистемах управления памятью;
Новая инфраструктура обслуживания событий таймеров. Рефакторингу подверглось API для работы с таймерами, написан машинонезависимый код для управления таймерами, который может обслуживать как устаревшие периодические, так и новые единичные режимы работы таймера. Единичный режим позволяет значительно сократить число генерируемых таймером прерываний и понизить нагрузку на CPU - прерывание таймера, в случае нахождения CPU в состоянии простоя (idle), генерируется только при необходимости обработки зарегистрированного события. Нагруженные CPU по прежнему получают полный поток прерываний таймера с целью координирования планирования задач, хронометрирования и учета ресурсов. Для примера специальный тюнинг позволяет добиться на 8-ядерных CPU генерации всего 100 прерываний в секунду, что позволяет понизить энергопотребление и повысить эффективность технологии Intel TurboBoost;
Интеграция Infiniband-стека OFED (OpenFabrics Enterprise Distribution), разработанного организацией OpenFabrics Alliance. В состав OFED входит набор драйверов и сопутствующие утилиты для обеспечения работы во FreeBSD Infiniband-контроллеров, используемых для организации высокоскоростных соединений серверов (от 2.5 до 120 гигабит/с) и организации поддержки технологии RDMA (Remote Direct Memory Access), предназначенной для обеспечения прямого доступа к памяти другой машины (как и в DMA обращение производится напрямую без участия ядра ОС и CPU).
Новая реализация программного 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.
Система репликации устройств хранения данных (HAST), которая позволяет использовать FreeBSD для создания высоконадежных конфигураций, в которых данные синхронизированы по всем узлам кластера. HAST реализован в виде GEOM-класса, обеспечивающего синхронную репликацию блочных устройств поверх TCP/IP сетей, независимо от типа накопителя и файловой системы. HAST предусматривает возможность быстрого восстановления после сбоя, причем, при выходе из строя первичного master-узла, его функции могут быть делегированы slave-узлу. После проверки и монтирования UFS раздела или импорта ZFS пула на поврежденном узле, система автоматически синхронизирует внесенные за время восстановления изменения и продолжит работу без потери данных.
По умолчанию активирован механизм журналирования Soft Updates для файловой системы UFS. Данное нововведение позволяет отказаться от необходимости запуска fsck после "грязного" размонтирования файловой системы и достичь очень высокой скорости восстановления состояния файловой системы при очень малом объеме журнала, при этом система полностью обратно совместима с нежурналируемым вариантом softupdates.
Поддержка ZFSv28;
Интегрирована поддержка операций TRIM для файловой системы UFS, что позволит увеличить производительность при работе с SSD-накопителями и повысить их срок службы;
Capsicum - фреймворк для организации изолированного выполнения приложений и ограничения использования приложениями определенных функций. Capsicum расширяет POSIX API и предоставляет несколько новых системных примитивов, нацеленных на поддержку модели безопасности через управление возможностями объектов ("object-capability") для Unix-систем. Capsicum нацелен на дополнение традиционного централизованного мандатного контроля доступа средствами для защиты отдельных приложений. Используя Capsicum приложение можно запустить в режиме повышенной изоляции (sandbox), при котором программа сможет выполнять только ранее специфицированные штатные действия. В настоящее время уже достаточно много программ, от tcpdump до chromium, модифицированы для поддержки режима изоляции, который может быть использован для уменьшения рисков при обработке сомнительных данных.
RCTL (Hierarchical Resource Limits) - реализация контейнеров ресурсов, позволяющая организовать установку индивидуальных ограничений ресурсов в привязке к конкретным Jail-окружениям. Разработан общий фреймворк для управления ресурсами, обеспечена поддержка лимитирования различных типов ресурсов, таких как память и загрузка CPU.
Осуществлен переход на bsdinstall в качестве инсталлятора по умолчанию. BSDInstall отличается модульностью, простотой подключения расширений, поддержкой управляющих установкой скриптов и ускорением выполнения процесса инсталляции. По своей сути BSDInstall представляет собой shell-скрипт, в определенной последовательности вызывающий дополнительные скрипты или приложения. Любое звено установки может быть легко модифицировано или заменено на альтернативную реализацию (например, вместо вызова редактора дисковых разделов можно указать скрипт, который вернет определенную последовательность gpart-команд). В процессе установки, работа инсталлятора сводится к распаковке трех архивов: образа с базовой системы (world.tgz), ядра (kernel.tgz) и коллекции портов (ports.tgz), после чего могут быть запущены постустановочные конфигураторы или скопированы типовые файлы конфигурации (fstab, rc.conf, resolv.conf).
Базовые возможности:
Возможность установки на GPT-диски;
Поддержка установки, охватывающей несколько дисков;
Поддержка установки внутрь jail-окружений;
Поддержка упрощенного PXE-режима установки;
Дружественность к системам виртуализации, например, можно произвести установку в дисковый образ из работающей системы;
Значительное ускорение процесса установки системы;
Гибкое управление установкой через написание скриптов;
Возможность простой реализации мелких настроек;
Установочный CD выступает в роли LiveCD.
Режим настройки параметров беспроводной сети;
Поддержка установки на ZFS-разделы (реализация функции не завершена).