Спустя 14 месяцев с момента выхода FreeBSD 8.3 увидел свет релиз FreeBSD 8.4, продолжающий развитие прошлой стабильной ветки. Выпуск позиционируется для обновления систем уже использующих FreeBSD 8.x, а также для пользователей желающих сохранить максимальный уровень совместимости с текущей конфигурацией. Кроме исправления ошибок, новая версия включает в себя поддержку нового оборудования и бэкпортирование некоторых возможностей из ветки FreeBSD 9, без нарушения совместимости и без кардинальных изменений. Установочные образы доступны для платформ amd64 и i386 (сборки для sparc64 и pc98 будут выпущены позднее) в виде образов bootonly, DVD, CD, LiveFS и Memstick (для USB Flash).
Особенности нового выпуска:
- Дисковая подсистема, ввод/вывод, системы хранения и файловые системы
- Обновление компонентов подсистемы ZFS до последней версии ZFS pools (SPA 5000) с поддержкой сжатия LZ4, уничтожением наборов данных в асинхронном режиме, оптимизациями ZIO NOP-write. Для управления работой ZFS добавлены новые переменные fs.zfs.sync_pass_deferred_free, vfs.zfs.sync_pass_dont_compress, vfs.zfs.sync_pass_rewrite и vfs.zfs.nopwrite_enabled. Так как версия ZFS во FreeBSD 8.4 новее, чем во FreeBSD 9.1 (SPA 28), для избежания проблем с миграцией на FreeBSD 9.1 в FreeBSD 8.4 по умолчанию создаются ZFS pool версии 28, при необходимости использования версии 5000 следует применить команду zpool upgrade;
- В netgraph-узел ng_netflow добавлена поддержка 9 версии NetFlow. Для экспорта NetFlow v9 потока подготовлен хук export9. Экспорт данных может быть организован одновременно в NetFlow-потоки 5 и 9 версии;
- Добавлена новая реализация GEOM-класса Multipath, позволяющего организовать доступ к хранилищу, подключенному через несколько каналов ввода/вывода. В новой реализации устранены многие проблемы и добавлены дополнительные возможности. В дополнение к ранее доступному режиму Active/Passive добавлен режим Active/Active, который распределяет нагрузку по всем рабочим каналам, а также гибридный режим Active/Read позволяющий организовать только балансировку на чтение. Улучшена реализация автоматического режима конфигурации Multipath. Добавлен ручной режим настройки, при котором каналы можно удалять и добавлять через команды remove и add. Изменён подход к работе с каналами после сбоя, теперь они не удаляются из GEOM, а лишь помечаются сбойными (для управления сбойными каналами добавлены команды "fail" и "restore"). Для настройки работы Multipath представлена утилита gmultipath;
- Добавлен geom-класс PART_LDM с поддержкой Logical Disk Manager, способного работать динамическими дисковыми разделами Microsoft Windows NT;
- В geom-класс RAID добавлена поддержка операции BIO_DELETE, что позволяет использовать команду TRIM в процессе удаления данных с SSD-накопителей для повышения срока их службы. В geom-классе RAID реализована поддержка метаданных в формате DDF, определённом в спецификации SNIA Common RAID Disk Data Format v2.0, а также чтения RAID4/5/5E/5EE/5R/6/MDF разделов в данном формате. Частично реализована поддержка Intel Rapid Recover Technology (Intel RRT, как RAID1, но с разделением основного и запасного дисков, и с возможностями по ручному управлению синхронизацией), в частности возможно получить доступ к диску восстановления как к снапшоту на момент прошлой синхронизации с основным рабочим накопителем;
- С файловой системы tmpfs снят признак экспериментальной разработки и объявлено о её готовности к промышленному использованию;
- В реализацию псевдо-ФС linprocfs добавлена поддержка /proc/filesystems;
- Внесена серия улучшений и исправлений в реализацию сетевой файловой системы NFS. На стороне клиента добавлена поддержка установки таймаута для элементов кэша запрошенных имён (таймаут устанавливается через опцию монтирования nametimeo и по умолчанию равен 60 сек.). Устранена утечка памяти при экспорте ZFS разделов по NFS;
- Загрузчик gptboot теперь пытается прочитать запасной заголовок GPT только если нарушена целостность основного GPT-заголовка и таблицы разделов;
- В загрузчик zfsloader, который позволяет загружать систему с ZFS-разделов, добавлена поддержка выбора файловых систем внутри ZFS storage pool, используя формат zfs:pool/fs для определения устройтсв и zfs:pool/fs:/path/to/file для пути к файлам;
- Сетевая подсистема
- В пакетном фильтре ipfw расширен синтаксис правил работы с таблицами (аргумент "table"), в которых теперь допускается указание IP-адресов, названий интерфейсов, номеров портов и идентификаторов jail-окружений. В таблицах теперь допускается указание IPv6-адресов и привязки элементов к сетевым интерфейсам, в том числе можно использовать маски сетевых интерфейсов. Например, для привязки таблицы к интерфейсу можно указать "ipfw table 10 add vlan20 12000" после чего использовать привязанную к интерфейсу таблицу "ipfw add 100 ipfw skipto tablearg ip from any to any recv 'table(10)' in".
- В реализацию множественных таблиц маршрутизации (Multi-FIB) добавлена поддержка IPv6. Используя Multi-FIB возможно определение правил, по которым к пакету будет применена одна из альтернативных таблиц маршрутизации, например, можно организовать "policy based" маршрутизацию с несколькими исходящими интерфейсами или привязать отдельную таблицу маршрутизации к Jail-окружению;
- Система
- Проведена оптимизация работы планировщика задач sched_ule для более эффективной балансировки на процессорах, поддерживающих технологию одновременной многопоточности (SMT, Simultaneous MultiThreading), например, Intel Core i7. В ситуации, когда число нитей меньше числа логических CPU внесённые изменения позволили добиться повышения производительности на 10-15%. Позитивный эффект от изменений в планировщике также наблюдается и для систем на базе процессоров без поддержки SMT;
- Добавлена поддержка псевдо-устройства filemon, позволяющего процессу получать сведения о файловых операциях дочерних процессов;
- Добавлены функции shm_map и shm_unmap для маппинга кодом, работающим на уровне ядра, областей объектов разделяемой памяти, созданных при помощи shm_open;
- Добавлена sysctl-переменная kern.stop_scheduler_on_panic для оставления только одной рабочей нити в случае паники системы и остановке всех остальных CPU;
- В скрипт rc.d/jail добавлена поддержка переменной jail_parameters для задания дополнительных параметров для каждого jail-окружения;
- Оборудование и аппаратные архитектуры
- Обеспечение поддержки всех выпускаемых контроллеров систем хранения компании LSI, в том числе карт семейства "Drake Skinny" и "ThunderBolt" и RAID- контроллеров Dell PERC H810/H800/H710/H700 и Intel RS25DB080/RS25NB008. Обновлены и другие драйверы для систем хранения, например добавлена поддержка Marvell 88SE9220/9230/9235 PCIe 2.0 x2 6Gbps SATA, ARC-1214, ARC-1224, Intel 8 Series, HighPoint RocketRAID 4500/4311/4310/4211/4210/3560/3530, Intel C600 Serial Attached SCSI, ;
- В драйвер umass добавлена поддержка цифровых камер Olympus FE-210, MP3-плееров LG UP3S, Laser MP3-2GA13 и GPS-навигаторов Garmin;
- Существенно обновлён звуковой драйвер HDA (snd_hda). Обеспечена поддержка вывода звука через порты HDMI и DisplayPort, добавлены новые средства управления громкостью, обеспечен автоматический выбор источника записи звука, реализована возможность переконфигурации на лету. Добавлена поддержка контроллеров с более чем четырьмя PCM-устройствами, обеспечена поддержка многоканальной записи. Увеличена информативность наименования имён устройств. Добавлено получение EDID-подобных данных от кодеков и видеодрайверов c информацией о звуковых возможностях устройства отображения. Реализована возможность установки специфичных для HDMI и DisplayPort опций кодеков, таких как число каналов, конфигурация громкоговорителей и маппинг каналов. Добавлена поддержка дополнительных многоканальных форматов: для HDMI и DisplayPort поддерживаются каналы 2.0, 2.1, 3.0, 3.1, 4.0, 4.1, 5.0, 5.1, 6.0, 6.1, 7.0 и 7.1. Добавлена поддержка проброса сжатых звуковых потоков с интенсивностью в диапазоне 6.144 - 24Mbps, таких как DTS-HD Master Audio или Dolby TrueHD;
- В драйвер snd_uaudio добавлена поддержка USB Audio v2.0, чипсета Intel 8 Series, мультимедийных клавиатур Yamaha;
- Улучшена поддержка USB: добавлена поддержка новых адаптеров USB-Serial, хост-контроллеров Etron EJ168 USB 3.0, XHCI-контроллеров для чипсетов Intel 7 (Panther Point) и Intel 8 (Lynx Point);
- Обновлены практически все сетевые драйверы. Добавлена поддержка контроллерорв Broadcom BCM5717/5718/5719/5720/5761/57766, чипов Intel Centrino 6150 wireless N и WiMAX, Intel Centrino Wireless-N 100/130, чипов Ralink RT2800 и RT3000, Logitec LAN-W300NU2. Обеспечена поддержка различных моделей 3G-модемов Qualcomm Vertex, SIMCom, Huawei и ETS. Решены проблемы совместности ppp-демона с некоторыми 3G-модемами;
- Приложения
- Добавлена команда pkg, используемая как заглушка для установки порта ports-mgmt/pkg с реализацией нового пакетного менеджера pkgng;
- В утилиту du добавлена опция "-g" для вывода результата в гигабайтах;
- sockstat добавлена опция "-j" для вывода списка сокетов только для указанного jail;
- В syslogd добавлена поддержка отправки логов по IPv6-адресу;
- В top добавлено отображение потребления памяти ZFS ARC;
- Обновлены версии поставляемых в базовой системе сторонних проектов:
- ISC BIND 9.8.4-P2;
- AWK 20121220;
- BZIP2 1.0.6;
- tcsh 6.18.01;
- LESS 451;
- libexpat 2.1.0;
- netcat из состава OpenBSD 5.2;
- OpenSSH 6.1;
- OpenSSL 0.9.8y;
- sendmail 8.14.7;
- XZ 5.0.4;
- Порт с KDE (x11/kde4) обновлён с 4.7.4 до версии 4.10.1. Для установки также доступен GNOME 2.32.1;