Подробные статьи о технологиях, определяющих будущее.

FreeBSD: недооценённая серверная ОС

FreeBSD работает в Netflix, WhatsApp и PlayStation. Разбираемся, почему этой BSD-системе стоит уделить внимание, а не выбирать Linux по умолчанию.

Маленький красный мультяшный демон с трезубцем, незамеченный среди высоких серверных стоек

Когда Netflix показывает вам фильм, видеоданные, скорее всего, приходят с сервера под FreeBSD. Когда вы отправляете сообщение в WhatsApp, оно проходит через инфраструктуру, которая годами работала на FreeBSD. Операционная система PlayStation 4 и 5 основана на FreeBSD. Маршрутизаторы Juniper Networks, составляющие магистральную инфраструктуру крупных провайдеров, работают на модифицированной FreeBSD. Для системы, которой большинство разработчиков никогда не пользовалось, FreeBSD на удивление широко представлена в критической инфраструктуре.

Linux так прочно занимает серверный рынок, что многие разработчики считают «Linux» и «серверную ОС» синонимами. Но FreeBSD занимает нишу, которую Linux закрывает хуже: там, где важнее производительность сети, надёжность хранилищ и простота лицензирования, а не широта экосистемы. Понимание того, почему FreeBSD до сих пор жива и где она сильнее всего, полезно, даже если вы сами её никогда не запускали.

Разница в философии дизайна

Linux — это ядро. «Операционная система Linux» на самом деле представляет собой ядро плюс пользовательское окружение, собранное из десятков независимых проектов (GNU coreutils, systemd, glibc и других), которые упаковывает конкретный дистрибутив. Разные дистрибутивы по-разному решают, какие компоненты включить и как их настроить. Ubuntu и Alpine оба относятся к «Linux», но ощущаются как разные операционные системы.

FreeBSD — это именно операционная система. Ядро, системные утилиты, компилятор, документация и базовые библиотеки разрабатываются как единый целостный проект. Вся базовая система версионируется, тестируется и выпускается вместе. Есть один FreeBSD, а не сотни дистрибутивов FreeBSD. Выбора меньше, зато больше согласованности: базовая система гарантированно совместима внутри себя, а документация применима к любой установке FreeBSD.

На практике это имеет значение. В Linux вопрос «как настроить сеть?» зависит от того, используете вы NetworkManager, systemd-networkd, netplan, ifupdown или что-то ещё. В FreeBSD ответ всегда один: /etc/rc.conf. Для любой установки FreeBSD. Документация здесь авторитетна, потому что способ только один.

Где FreeBSD сильнее

Сеть. Сетевой стек FreeBSD легендарен. Netflix выбрала FreeBSD именно потому, что она позволяла отдавать 100 Гбит/с видео, зашифрованного через TLS, с одного сервера. Стек зрелый, хорошо оптимизированный и отлично поддерживает высокопроизводительное сетевое оборудование. Такие функции, как netmap (пакетный ввод-вывод без копирования) и алгоритмы управления перегрузкой TCP RACK/BBR, хорошо интегрированы.

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

# ZFS on FreeBSD — built-in, first-class support
# Create a mirrored pool
zpool create tank mirror /dev/da0 /dev/da1
# Create a dataset with compression
zfs create -o compression=lz4 tank/data
# Take a snapshot (instant, copy-on-write)
zfs snapshot tank/data@before-migration
# Send a snapshot to another machine (incremental replication)
zfs send -i tank/data@yesterday tank/data@today | \
ssh backup-server zfs recv backup/data
# Roll back if something goes wrong
zfs rollback tank/data@before-migration
# Check data integrity (detects and repairs bit rot)
zpool scrub tank

Jails. Система jail в FreeBSD появилась больше чем на десять лет раньше контейнеров Linux (jail: 2000 год, Docker: 2013 год). Jails обеспечивают виртуализацию на уровне ОС с сильной изоляцией: собственная файловая система, сетевой стек и пространство процессов. Они легче виртуальных машин, но изолированнее контейнеров Linux, и их просто настроить без отдельной среды выполнения контейнеров.

Лицензия. FreeBSD распространяется под лицензией BSD, которая допускает проприетарное использование без обязательного раскрытия исходного кода. Поэтому Sony смогла построить ОС PlayStation на FreeBSD, не открывая её исходники, а Netflix может поставлять модифицированную FreeBSD, не публикуя свои оптимизации сетевого стека. Компании, которым по юридическим или бизнес-причинам нельзя использовать код под GPL, часто выбирают FreeBSD именно ради этой гибкости.

Где сильнее Linux

Преимущества FreeBSD не перекрывают сильных сторон Linux, и честно стоит сказать, где FreeBSD уступает.

Поддержка оборудования. Linux заметно лучше поддерживает оборудование, особенно потребительское: видеокарты, Wi-Fi-адаптеры, Bluetooth, новые ноутбуки. Экосистема драйверов Linux намного больше, чем у FreeBSD. Если вы работаете на современном серверном железе крупных вендоров, поддержка FreeBSD обычно в порядке. Если же речь о бюджетном или настольном железе, вы наткнётесь на пробелы в драйверах.

Экосистема контейнеров. Docker, Kubernetes и весь облачно-нативный стек рассчитаны на Linux. У FreeBSD есть jails, которые, пожалуй, изолируют лучше, но экосистема вокруг них, включая инструменты оркестрации, реестры контейнеров и CI/CD-конвейеры, ожидает контейнеры Linux. Запустить кластер Kubernetes на FreeBSD технически возможно, но на практике это мучительно.

Поддержка в облаке. AWS, GCP и Azure поддерживают FreeBSD как образ виртуальной машины, но стандартные инструменты, документация и управляемые сервисы рассчитаны на Linux. Путь наименьшего сопротивления в любом облаке ведёт к Linux.

Экспертиза и найм. Найти разработчиков с опытом работы с FreeBSD сложнее, чем разработчиков Linux. Большинство программ по информатике учат Linux, большинство инструментов DevOps рассчитаны на Linux. Выбрав FreeBSD, вам придётся обучать команду незнакомой платформе.

Кейс Netflix

CDN Netflix Open Connect — каноническая история успеха FreeBSD. В часы пик Netflix обслуживает примерно треть интернет-трафика в США, и делает это с помощью устройств на базе FreeBSD, установленных прямо в сетях провайдеров.

Netflix выбрала FreeBSD по конкретным техническим причинам: сетевой стек в то время лучше Linux справлялся с высокопроизводительным TLS, ZFS обеспечивала надёжное локальное хранение с гарантиями целостности данных, а лицензия BSD позволяла менять ОС без обязательств перед открытым кодом. Многие свои улучшения они всё равно вернули в FreeBSD, но лицензия дала им выбор.

Их серверы достигают впечатляющей эффективности: одно устройство Open Connect на базе FreeBSD может отдавать 400 Гбит/с видео на обычном железе. Ключевые оптимизации, включая sendfile() с разгрузкой TLS, обработку событий на основе kqueue и агрессивную настройку TCP, — это возможности FreeBSD, которые либо появились в FreeBSD, либо были впервые отточены именно там.

Стоит ли использовать FreeBSD?

Для большинства разработчиков и большинства проектов — нет. Преимущества экосистемы Linux слишком весомы, чтобы их игнорировать. Docker, Kubernetes, большинство CI/CD-систем, большинство облачных сервисов и инструментов мониторинга лучше всего работают на Linux. Прагматичный выбор — тот, за которым стоит больше всего инструментов.

Но есть конкретные сценарии, где FreeBSD действительно лучше.

  • Сетевые нагрузки. Если вы строите CDN, прокси, балансировщик нагрузки или любую систему, которая прокачивает большие объёмы сетевого трафика, сетевой стек FreeBSD стоит оценить.
  • Хранилища. Если важны возможности ZFS (контрольные суммы, снапшоты, репликация, сжатие), FreeBSD даёт лучший опыт работы с ZFS.
  • Встраиваемые и appliance-продукты. Если вы выпускаете продукт на основе ОС и не хотите обязательств по GPL, лицензия BSD проще для коммерческого использования.
  • Изучение основ Unix. Документация FreeBSD (FreeBSD Handbook) — одна из лучших документаций по операционным системам, когда-либо написанных. Если хотите понять, как работает Unix-система с нуля, FreeBSD — отличная среда для обучения.

FreeBSD не собирается вытеснять Linux с десктопов, из контейнеров или из облака. Но ей это и не нужно. Она занимает ценную нишу: цельная, хорошо спроектированная Unix-система с техническими сильными сторонами, которые важны для конкретных нагрузок. В мире, где большинство разработчиков не думает дальше Linux, знание о существовании FreeBSD и понимание её сильных сторон — тот взгляд, который помогает принимать более взвешенные решения об инфраструктуре.