---
title: "О технологических преимуществах FreeBSD"
sidenav: about
---

= О технологических преимуществах FreeBSD

== FreeBSD предоставляет множество уникальных возможностей.

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

=== Полноценная операционная система, основанная на 4.4BSD.

link:https://freebsdfoundation.org/freebsd/timeline/[История FreeBSD] берет начало из дистрибутивов *BSD*, выпущенных Группой Исследования Вычислительных Систем (Computer Systems Research Group) Калифорнийского Университета (Беркли).
Десятки лет работы было вложено в улучшение масштабируемости, сетевой производительности, а также в новые инструменты управления, файловые системы, безопасность и другие функуии.
В итоге FreeBSD можно обнаружить по всему Интернету, в операционных системах опорных маршрутизаторов, на корневых серверах имен, в работе хостинга крупных веб-сайтов и как основу для широко используемых десктопных операционных систем.

[[features]]
== Возможности

[[openzfs]]
=== OpenZFS

ZFS — это не просто файловая система, она принципиально отличается от традиционных файловых систем.
Объединение традиционно раздельных ролей программного RAID, менеджера томов и файловой системы предоставляет ZFS уникальные преимущества.

Три основные цели ZFS:

* Целостность данных

* Объединенное хранилище

* Производительность.

[[zfs-boot-environments]]
=== Загрузочные окружения ZFS
Загрузочное окружение ZFS — это загружаемый клон/снимок специально выбранных частей системы.

Области применения включают:

* Надежные обновления/изменения системы
* Создание безопасного резервного загрузочного окружения ZFS перед обновлением или изменениями системы
* Обновление нового (неактивного) окружения без изменения активного
* Выполнение обновления и тестирование результатов внутри клетки (jail)
* Копирование/перемещение загрузочного окружения ZFS на другую машину
* Значительная переконфигурация (Bareos/Postfix/...)
* Массовое развертывание большого количества серверов с одним настроенным загрузочным окружением
* Резервное копирование на уровне оборудования.

[[jails]]
=== Клетки (jail)

Клетки появились в FreeBSD 4.X.

Они построены на основе man:chroot[8], который изменяет корневой каталог.
Это создает безопасную среду, отделенную от остальной системы.
Процессы, созданные в окружении клетки, не могут получить доступ к файлам или ресурсам за его пределами.

Клетки улучшают chroot несколькими способами.
В традиционной chroot-среде процессы ограничены частью файловой системы.
Остальные системные ресурсы, системные пользователи, запущенные процессы и сетевая подсистема являются общими для chroot-процессов и процессов хост-системы.
Клетки дополнительно ограничивают доступ к файловой системе, набору пользователей и сетевой подсистеме.
Доступны более детализированные средства контроля доступа.

[[ports-collection]]
=== Коллекция портов

Более 35 000 приложений и библиотек link:https://ports.freebsd.org[портировано] в FreeBSD.
Эта архитектура позволяет легко настраивать параметры компиляции для многих портов.

[[virtualization]]
=== Виртуализация

link:https://bhyve.org/[bhyve]: гипервизор с лицензией BSD, не требующий поддержки устаревших технологий, который запускает все поддерживаемые версии FreeBSD, а также другие операционные системы с поддержкой UEFI, включая, но не ограничиваясь link:https://www.openbsd.org/[OpenBSD], link:https://www.microsoft.com/en-us/windows/[Windows(R)] и link:https://kernel.org/[Linux(R)], с использованием bhyve-firmware.

[[linuxulator]]
=== Совместимость с исполняемыми файлами Linux (Linuxulator)

Совместимость с исполняемыми файлами Linux, часто называемая link:https://wiki.freebsd.org/Linuxulator[Linuxulator], позволяет FreeBSD запускать многие неизмененные исполняемыми файлами Linux.
Это не связано с виртуальными машинами или эмуляцией;
вместо этого она предоставляет исполняемым файлам интерфейсы ядра, идентичные тем, которые предоставляет настоящее ядро Linux.
Linuxulator сравним с запуском 32-битных FreeBSD-бинарников на 64-битном ядре FreeBSD.

[[dtrace]]
=== DTrace

DTrace, также известный как Dynamic Tracing, был разработан Sun Microsystems(TM) для поиска узких мест производительности в рабочих и предпроизводственных системах.
Кроме того, DTrace может помочь в исследовании и отладке неожиданного поведения в ядре и в пользовательском пространстве.

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

Реализация FreeBSD предоставляет полную поддержку DTrace для ядра и экспериментальную поддержку для пользовательского пространства.
DTrace для пользовательского пространства позволяет пользователям выполнять трассировку границ функций для пользовательских программ с использованием поставщика трассировки по идентификатору процесса (pid) и вставлять статические пробы в пользовательские программы для последующей трассировки.

[[capsicum]]
=== Capsicum
Capsicum позволяет запускать в песочнице несколько программ, которые работают в «режиме возможностей» (capabilities mode), таких как:

* tcpdump
* dhclient
* hast
* rwhod
* kdump.

[[vnet]]
=== Сетевая виртуализация (VNET)

VNET виртуализирует сетевой стек.
Основная идея заключается в преобразовании глобальных ресурсов (в первую очередь переменных) в ресурсы для каждого сетевого стека и обеспечении доступа к ним и управления ими функциями, sysctl, обработчиками событий и т.д. в контексте правильного экземпляра.
Каждый (виртуальный) сетевой стек прикреплен к prison (тюрьме), при этом vnet0 является неограниченным сетевым стеком по умолчанию базовой системы.
Возможности `VIMAGE` могут использоваться независимо для создания полностью виртуализированных сетевых топологий, а man:jail[8] может напрямую использовать преимущества полностью виртуализированного сетевого стека.

//
// The FreeBSD Russian Documentation Project
//
// Original EN revision (30.12.2024): a63b1f71e2d14a43f8c8885db65dd52e078d68cd
//
