Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Чертенок из табакерки. Детальный обзор FreeBSD 8.0

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> FreeBSD
 
Автор Сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13868
Откуда: Кировоград, Украина

СообщениеДобавлено: Ср Окт 13, 2010 12:25 pm    Заголовок сообщения: Чертенок из табакерки. Детальный обзор FreeBSD 8.0
Ответить с цитатой

Евгений Зобнин, zobnin@gmail.com

Не успели мы нарадоваться выпуску семерки, как разработчики FreeBSD уже готовы обрадовать нас восьмой версией своей ОС, которая хоть и не несет в себе глобальных изменений, но вполне способна порадовать поклонников множеством исправлений и доработок, которых ждали в течение многих лет.

Релиз 8.0 не так богат на нововведения, как его предшественники, что совсем не уменьшает его значимость. Именно в восьмерке исправлены те проблемы, за которые FreeBSD причисляли к анахроничным, отстающим ОС. Теперь FreeBSD не уходит в панику во время извлечения USB-флешки, обладает существенно переработанной и улучшенной системой «песочниц» (Jails v2), работает в качестве гостя в Xen-окружениях последних версий, обладает переработанным высокопроизводительным SMP-планировщиком задач, поддерживает NFSv4, может загружаться с GPT-разделов, поддерживает технологию защиты от срыва стека ProPolice, позволяет использовать локаль UTF-8 в консоли, может выступать хост-системой для VitrualBox 3.x и многое, многое другое. Но обо всем по порядку.

Ядро
Одна из целей выпуска 8.0 состояла в том, чтобы позволить FreeBSD работать внутри инфраструктуры облачных вычислений Amazon EC2. Для этого в дерево исходных текстов была добавлена поддержка ВМ Xen последних версий, которая позволяет 32-битной редакции FreeBSD работать внутри Xen-окружения (domU). Поддержка dom0, позволяющая ОС быть хостом для других ОС, к сожалению, пока не реализована.

USB-стек был полностью переработан и избавлен от многих проблем. Теперь это полностью масштабируемый на все ядра процессора код, лишенный глобальных блокировок (хотя некоторые драйвера еще не переписаны). Добавлен уровень совместимости с USB-подсистемой Linux. Реализована полная поддержка разделенных (Split) и HS ISOC транзакций, благодаря чему появилась возможность использования скоростных аудиоустройств с интерфейсом USB на современных USB-хабах и возможность создания драйверов для высокоскоростных web-камер. Теперь полностью поддерживается USB на встраиваемых устройствах, реализована поддержка режима USB gadget, улучшен алгоритм сброса содержимого кэшей и буферов, появился механизм автоопределения загрузочных USB-дисков. Добавлена утилита usbconfig.

Решена одна из самых серьезных проблем FreeBSD на настольных машинах: некорректная обработка факта извлечения USB-накопителя без размонтирования файловой системы (что зачастую приводило к панике ядра). Тысячи пользователей отправили баг-репорты об этой проблеме, тысячи троллей сочинили сотни анекдотов, десятки хакеров предлагали свои багфиксы, но дело не сдвигалось с мертвой точки. Корни бага скрывались глубоко внутри подсистемы VFS, которая требовала глобальной переработки и глубокого переосмысления. В конце концов, FreeBSD Foundation просто купила разработчика по имени Edward Tomasz Napierala, который сделал всю грязную работу и заставил ядро реагировать правильно.

Подсистема «тюрем» (Jails), позволяющая запирать процессы в изолированные песочницы, была существенно переработана. Теперь тюрьма может иметь сразу несколько IP-адресов (или не иметь их вообще), поддерживает протоколы IPv6 и SCTP, может быть «вложенной» в другую тюрьму (можно создавать иерархическую систему безопасности), а также привязанной к конкретному процессору/ядру. Добавлена новая команда ядерного отладчика DDB «show jails».

Во FreeBSD 8.0 включена новая версия оптимизированного для SMP-систем планировщика процессов ULE 3.0. Улучшен алгоритм распределения процессов и потоков по процессорам, повышена производительность, появилась возможность привязки Jail-окружений к конкретным ядрам процессора.

Теперь FreeBSD поддерживает так называемые супер-страницы памяти (superpages), благодаря чему производительность многих приложений может быть существенно повышена (до 30%). Супер-страницы поддерживаются почти всеми современными процессорами семейства x86 и позволяют буферу ассоциативной трансляции (Translation lookaside buffer, TLB) ссылаться на очень большие страницы физической памяти (4 Мб). Как следствие, зона охвата TLB существенно увеличивается, а риск промахов уменьшается.

Лимит памяти ядра, составляющий 2 Гб, был увеличен до 512 Гб для архитектуры AMD64. Благодаря этому файловая ZFS теперь не засыпает пользователей сообщениями о нехватке памяти и показывает более высокие характеристики производительности.

«Вес» нитей ядра был значительно снижен. Нити, используемые, например, для обработки исключений или обслуживания устройств, обладают гораздо меньшим количеством выделенных ресурсов, благодаря чему ядро потребляет меньше памяти.

С выходом 8.0 файловая система procfs(4) (обычно монтируемая к каталогу /proc) объявляется устаревшей. Вместо нее рекомендуется использовать новую утилиту procstat(1) и библиотеку libprocstat(3), которые позволяют получить о процессах такие сведения, как: аргументы командной строки, информацию о файловых дескрипторах, нитях, стеке, занимаемой виртуальной памяти и многом другом.
Новая версия ОС получила механизм исследования последствий сбоя ядра под названием TextDumps. После «ухода ядра в панику» происходит не только запись полного дампа памяти ядра на диск, но и автоматическое извлечение из него наиболее важной информации, ее упаковка в tar-архив и удаление оригинального дампа. Механизм позволяет существенно снизить расходы дисковой памяти, используемой для хранения дампов, и повышает скорость разработки и отладки ядра.

Система отладки и трассировки DTrace наконец окончательно интегрирована во FreeBSD. Dtrace была разработана Sun Microsystems для ОС Solaris и предоставляет в распоряжение разработчиков мощнейший инструмент трассировки ядра и процессов, включающий в себя специальный язык. Пока для FreeBSD реализована только возможность отладки ядра, в то время как реализация функции отладки процессов отложена на некоторое время.

Слой эмуляции текстовых терминалов (TTY layer), используемый для прямой коммуникации пользователя с ОС (эмуляция терминала, в котором запускается командный интерпретатор), был переработан: код избавлен от глобальных блокировок, увеличена производительность, произведена оптимизация, переработан механизм буферизации. Это один из самых древних компонентов ядра FreeBSD (20-25 лет!), к которому не притрагивались в течение многих лет.

Драйвер консоли syscons(4), отвечающий за работу с видеоадаптером и клавиатурой и предоставляющий пользователю виртуальный терминал, был улучшен и теперь полностью поддерживает UTF-8. Это значит, что FreeBSD 8.0 «говорит на юникоде» не только в иксах, но и в «голой» консоли. Код основан на библиотеке libteken, реализующей эмуляцию vt100/xterm/UTF-8 для виртуальных терминалов, работающих через драйвер консоли syscons.

Сетевой стек
В сетевой стек был добавлен код виртуализации. Теперь ядро способно поддерживать сразу несколько состояний сетевого стека одновременно, благодаря чему «тюрьмы» (jail) могут быть абсолютно независимы друг от друга в сетевом плане, включая обособленные брандмауэры, виртуальные сетевые интерфейсы, лимиты пропускной способности, таблицы маршрутизации и конфигурации IPsec. Пока это экспериментальные и не рекомендованные к применению возможности, которые получат статус стабильных в следующих релизах.
В дополнение к виртуализации сетевого стека восьмерка получила поддержку множественных таблиц маршрутизации (Forwarding Information Bases, FIBs), которые позволяют организовать так называемый «policy based routing», когда путем определения правил к пакету может быть применена альтернативная таблица маршрутизации. Это может быть использовано, например, в Jail-окружениях.
Во FreeBSD 8.0 добавлена поддержка беспроводных mesh-сетей, описанных в стандарте 802.11s. В отличие от обычной сетевой топологии, предполагающей наличие центральной точки доступа (Access Point, AP), mesh-сети выглядят как ad-hoc сети (децентрализованные беспроводные сети, не имеющие постоянной структуры) без центрального узла, который может упасть и нарушить связь всех узлов.

Код механизма BPF (Berkeley Packet Filter), используемого для захвата и вставки пакетов из/в сетевого стека, был изменен и теперь производит меньшее количество операций копирования памяти между ядром и приложением, что в некоторых случаях повышает производительность.

Код реализации протокола NFS наконец-то обрел поддержку четвертой версии, которая имеет повышенную производительность и гораздо более высокий уровень безопасности (ACL, механизм аутентификации, использующий Kerberos). Также были обновлены клиенты и серверы протоколов NFSv2/3.

Подсистема хранения данных
FreeBSD 8.0 получила новый AHCI-драйвер, реализованный как часть подсистемы CAM (Common Access Method). Драйвер поддерживает несколько новых возможностей (таких, как NCQ), и может быть сконфигурирован с помощью утилиты camcontrol. В будущем CAM планируется превратить в стандартный фреймворк для всевозможных протоколов и транспортов, используемых для доступа к устройствам хранения данных.

Менеджер логических томов gvinum, созданный как замена vinum в новых версиях FreeBSD, был обновлен до версии 2 и обрел статус стабильного и полностью готового к использованию решения. Исправлены многие проблемы, добавлена новая функциональность, сохранена совместимость с gvinum 1 и vinum. Gvinum менее гибок, чем решения на базе набора стандартных GEOM-классов (gmirror и gstripe), но придется по вкусу ветеранам и любителям решений все-в-одном (поддерживается JBOD, RAID 0, RAID 1 and RAID 5).
GEOM-класс GEOM_PART (gpart) теперь используется по умолчанию для работы с различными схемами разметки диска (MBR, GPT, BSD и т.д.) Это решает некоторые проблемы загрузки FreeBSD и делает дисковую подсистему более гибкой (например, поддерживается до 26 BSD-разделов в рамках одного слайса). Кроме того, восьмерка без проблем загружается с GPT-разделов (новая схема разметки диска, которая должна прийти на смену теперешней).

Пестрая лента
Мир, ядро и ПО из портов теперь собираются с помощью GCC с активированной системой защиты от срыва стека (Stack-Smashing Protector, в прошлом ProPolice). Система способна обнаружить большинство ошибок переполнения буфера с помощью проверки стека вызовов на изменение. Если изменение имело место быть, приложение убивает само себя.

Система управления деревом портов была модифицирована и теперь поддерживает параллельную сборку приложений, что позволяет задействовать все имеющиеся ядра процессора.

FreeBSD теперь полностью поддерживает все модели субноутбуков ASUS EeePC. Работают беспроводные карты, High Definition Audio (snd_hda), тачпад, полностью реализован режим засыпания, контроль за температурой.

Восьмерка включает код переработанного звукового драйвера HDA (High Definition Audio), который более полно соответствует спецификациям UAA (Universal Audio Architecture), включает более широкий спектр кодеков, работает в многоканальном режиме, обладает расширенными возможностями конфигурирования и полностью поддерживает временное засыпание системы (suspend/resume).

Среди более мелких изменений можно отметить:

ПО виртуализации VirtualBox 3.X было полностью портировано на FreeBSD.
Реализована поддержка RDMA (Remote DMA).
Возможность привязки обработчиков IRQ и потоков к указанным процессорам/ядрам.
Количество групп, к которым может принадлежать пользователь (NGROUPS), увеличено до 1024.
OpenBSM был обновлен до версии 1.1.
Утилита makefs была портирована из NetBSD.
Реализована поддержка сегментов SYSVSHM больше, чем 2 Гб на AMD64.
Новая, более «чистая», реализация протокола ARP.
Обновление кода маршрутизации для лучшей поддержки SMP-систем.
Поддержка режима виртуальных точек доступа (VAP, «virtual WiFi») в беспроводных сетях.
Многочисленные улучшения производительности на SMP-системах.
Поддержка платформы Intel Nehalem / Core i7.
Обновление кода поддержки ACPI.
Утилита tcpdump обновлена до версии 4.0.
ZFS 13
Код ZFS был доработан, избавлен от многих проблем и обновлен до версии 13. Этот шаг позволил снять с ZFS статус экспериментальной разработки и внес множество изменений, среди которых:

Поддержка загрузки с ZFS.
Частичная поддержка chflags(2).
Начальная поддержка ACL формата NFSv4.
Поддержка расширенных атрибутов.
Поддержка Sparse volumes, то есть массивов ZVOL, которые не резервируют место в пуле.
Рядовые пользователи теперь могут получить права на создание ФС, снапшотов и т.д.
С помощью переменной vfs.zfs.super_owner можно регулировать, сможет ли рядовой пользователь выполнять привилегированные операции над файлами ФС, которой он владеет.
Возможность использования дополнительных дисков для кэширования. Поднимает производительность на операциях чтения.
Возможность использования дополнительных дисков для Intent Log ZFS, чтобы ускорить операции типа fsync(2).
Может быть выбран один из режимов отказа, действующий при выходе дисков из строя: panic - паника ядра при ошибке записи, wait - ожидание появления диска, continue - обработка запросов чтения и отказ в запросах записи.
Новые свойства: refquota, refreservation. Аналоги quota и reservation без учета места, занимаемого дочерними ФС, клонами и снапшотами.
Планы на будущее
Не все планируемые нововведения попали в релиз FreeBSD 8.0, за бортом остались два интереснейших проекта, которые почти готовы, но не могут быть интегрированы в код из-за некоторых проблем.

Первый из них нацелен на получение возможности сборки ядра с поддержкой стека протоколов IPv6, но без поддержки IPv4. Это позволит заранее подготовить FreeBSD к полному переходу на новый стек протоколов, сделать сетевой код ОС более чистым и модульным, а также получить производительное и компактное IPv6-ядро. К сожалению, огромный объем работ не позволил завершить проект к выходу восьмерки.

Второй, гораздо более приоритетный, проект ставит своей целью отказаться от использования компилятора GCC для сборки компонентов FreeBSD и портов. Эта идея уже многие годы занимала умы разработчиков всех веток BSD, а после перехода GCC на использование GPLv3 проблема стала еще более острой (многие компании, применяющие FreeBSD, не могут использовать ПО, опубликованное под лицензией GPLv3). Как результат, родился проект по переводу FreeBSD на связку LLVM + CLANG, распространяемых под лицензией BSD. В качестве побочного эффекта этот шаг дает прирост производительности (LLVM существенно лучше оптимизирует код). К моменту выхода 8.0 ядро и большинство компонентов базовой системы уже могли быть собраны с помощью нового компилятора, однако множество незакрытых проблем не позволили проекту попасть в новый релиз.

Постскриптум
В каком-то смысле FreeBSD 8.0 подводит итог всему, что было сделано после выхода пятерки. Ядро стало по-настоящему масштабируемым, ZFS обрела статус стабильной, NFS-клиент и сервер теперь поддерживают четвертую версию протокола; были исправлены наболевшие ошибки и многие проблемы прошлых версий; поддержка оборудования расширилась до более чем приемлемого уровня. Если ты никогда не пробовал FreeBSD, сейчас лучшее время, чтобы сделать это.

Не только на CD
В дополнение к установочным CD и DVD FreeBSD 8.0 распространяется и в виде установочного образа для USB-флешек, для копирования которого достаточно выполнить такую команду:

# dd if=8.0-amd64-memstick.img of=/dev/da0 bs=10240 conv=sync

Управление таблицами маршрутизации
Число таблиц маршрутизации можно задать во время сборки ядра через опцию «options ROUTETABLES=N». Для выбора таблицы можно использовать брандмауэр:

setfib N ip from any to any

count ip from any to any fib N

Или утилиту setfib:

$ setfib -2 ping host.com

Как обновиться до FreeBSD 8.0
# freebsd-update upgrade -r 8.0-RELEASE

// обновление ядра

# freebsd-update install

# shutdown -r now

// обновление "мира"

# freebsd-update install

// удаление оставшихся компонентов

# freebsd-update install

# shutdown -r now

Прополис для предотвращения атак срыва стека

ProPolice - патч для GCC, с помощью которого переопределяются объявления локальных переменных и добавляются дополнительные проверки во время выполнения программ. При обнаружении переполнения проблемный процесс ликвидируется и в системный журнал производится запись типа «stack overflow in function XXX». Веб-страничка проекта: www.research.ibm.com/trl/projects/security/ssp.

INFO
Некоторые из описанных нововведений уже были портированы в FreeBSD 7, поэтому необходимости в переходе на восьмерку может и не возникнуть.

WARNING
GEOM_PART интерпретирует таблицы разделов не так, как его предшественники, поэтому будь осторожен при обновлении: имена разделов могут измениться.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
олег алексеевич

Тысячник


Зарегистрирован: 18.01.2009
Сообщения: 1365
Откуда: ua Кропивницкий

СообщениеДобавлено: Ср Окт 13, 2010 4:30 pm    Заголовок сообщения:
Ответить с цитатой

ну как всегда,старым проверенным ОС все внимание уделяют,разрабатывают.а новым ОС как внедряться на компы пользователей.
качаю новую pcbsd,попробую с флешки,и еще пишут что уже можно даже live.cd.
_________________
помощь в личку платно.Удалю вирус,шелл с сайта Джумла, Битрикс .
Создам плагин , модуль под заказ для VirtueMart , JoomShopping
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> FreeBSD Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис