Убей в себе государство (slonik_v_domene) wrote,
Убей в себе государство
slonik_v_domene

Category:

FreeBSD vs Linux, разбор полетов

FreeBSD - хорошая система

Предваряя флейм и крики про "BSD RIP" и "пора закопать", я, со всей ответственностью заявляю: ядро, базовая система и стартовые скрипты у FreeBSD написаны отлично и никаких претензий к ним нет. Ну, разве что SMF из SunOS перетащить или его клон написать было бы неплохо. Но и без этого вполне можно жить. Еще раз: FreeBSD - отличная система. Тем не менее, у нее есть серьезные проблемы, и о них речь пойдет ниже.

О производительности операционных систем

Тесты показывают, что существенной разницы в производительности Linux vs FreeBSD нет. На объемах десятков серверов разница в 5-7 процентов не дает выигрыша: для 10 серверов выигрыш составит 0, для 20 серверов - 1, для 100 - всего 7 серверов. Это не те цифры, из-за которых имеет смсл менять операционную систему. Возможно, у коллег из Яндекса с их десятками тысяч машин ситуация иная, но у нас это именно так.
Кстати, отмечу, что такая же картина и с Линуксами. Собственно, все заявки про крутизну супертюнинга собранных на коленке пакетов против пакетов из стандартной поставки - не более чем красноглазый бред. Если вам не хватает даже 15% производительности на сервере с учетом дневных пиков и спадов посещаемости, у меня для вас очень, очень плохие новости. Причем, новости эти вовсе не из области администрирования.

О небольших инсталляциях

Я совершенно уверен в том, что небольшие инсталляции, уровня 1 - 10 серверов, вполне могут работать на FreeBSD. Проблем с ручным администрированием такого парка машин практически нет, поэтому все нижеописанное можно смело пропустить и продолжить пользоваться FreeBSD дальше.

О портах и пакетах

Идея портов, точнее - системы каталогов, откуда можно собрать двоичный пакет, просто замечательная. К сожалению, на этом все восторги заканчиваются. Далее начинаются проблемы.

Проблемы с пакетами:
1. нет деления на пакет и пакет-devel. Для тех, кто не в курсе, в -devel обычно сгружается все то, что требуется для разработки: файлы заголовков, статические библиотеки, примеры для программистов, тесты и т.п. В продакшене все это НЕ НУЖНО. Не потому, что места жалко, а потому, что все это лишнее. Это вдвойне лишнее там, где могут присутствовать посторонние люди.

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

3. идиотские конфликты с предыдущими версиями. Нельзя одновременно штатно поставить, например, Apache13 и Apache22.

4. отсутствие провязки изменений в base system и packages. Это вообще за гранью добра и зла. Можно пересобрать и поставить мир, убив какую-то подсистему, затем раскатать на такой сервер свои пакеты и только потом обнаружить, что ничего не работает.

5. Зависимости. Зависимости кривые. Нельзя указать в зависимости диапазон версий пакета, нельзя сделать ссылку на альтернативный пакет, нельзя указать приоритет поиска пакетов.

6. Проблемы с апдейтом. Тут можно долго расписывать все "прелести", но гораздо проще попробовать самому переставить пакет, который сам зависит от множества пакетов, и от которого также зависит множество других пакетов. Секс будет первоклассный, обещаю.

7. В базовой системе нет средств, позволяющих произвести обновление двоичного пакета. Это - наименьшая проблема, поскольку всегда можно поставить portupgrade. Тем не менее, нельзя не отметить что концепция базовой системы не подразумевает полноценной работы с пакетами.

О базовой системе

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

Base system не удовлетворяет потребностям большинства пользователей. Наивно было бы ожидать иного. И именно поэтому есть система пакетов, позволяющая доустановить то, что требуется. С этим бы не было никаких проблем, будь base system тоже построена на основе пакетов. Но она монолитная, поэтому просто так заменить какую-либо систему альтернативным пакетом не получится. Как не получится выяснить, какие версии программ установлены, какие патчи наложены и наложены ли вообще. Так же, в базовой системе, например, можно обнаружить компилятор, а можно и не обнаружить. В зависимости от того какая часть базовой системы была выбрана при установке может произойти что угодно.

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

О деплойменте

Собственно, все пертензии к деплойменту - невозможность в автомате с учетом всех требуемых зависимостей поднять версию системы и/или переустановить те пакеты, которые требуются. Это - прямое следствие использования pkg_*.

О средствах разработки

Сейчас схема такова, что каждому программисту выдается свой jail и root на него, где, с некоторыми ограничениями, он может делать что угодно. К сожалению, пряников сладких всегда не хватает на всех, как пел Окуджава, и джейлы приходится не только останавливать, но и мигрировать с ноды на ноду. С этим беда.

О лицензионной чистоте

Что бы кто ни говорил, но BSD License - преимущество. Вы можете отдать свой код, можете не отдать, вас никто почти ни к чему не принуждает. Но дело в том, что большинство проектов, все же, не завязаны на ядро и важные библиотеки системы. Например, у нас в Рампочте нет и никогда не было своих патчей ядра и базовой системы. Поэтому нас не слишком волнует переход с лицензии BSD на GPL. Все наши продукты, по возможности, останутся под лицензией BSD, а патчи (L)GPL-программ, могущие быть полезными сообществу, вы всегда ему возвращаем.

Выводы

1. Если у вас 1 - 10 серверов, вы не используете Линукс-специфического софта, можете работать с любой нравящейся операционной системой.

2. Если у вас много серверов И они выполняют разные роли И вам требуется регулярно их обновлять, то здесь у FreeBSD есть серьезные проблемы, и лучше поискать что-то иное.

3. Если вы после этого поста продолжаете считать что я ненавижу FreeBSD, вы - тупой осел, идите в жопу.


Постскриптум про коммерческие операционные системы

Менеджер пакетов Solaris ужасен, пользоваться им нельзя. С деплойментом и инструментами разработчика там все еще хуже чем во FreeBSD. Опыт использования Solaris у меня - c версии 7. Там все как было плохо, так плохо и осталось.

Касаемо коммерческих Линуксов и поддержки. По моему глубокому убеждению эта поддержка такому проекту как Рампочта нужна как собаке пятая нога. Практически весь софт, используемый нами, имеет либо наши модификации, либо написан нами.

У того же RedHat поддержка не распространяется на, цитирую: модифицированные пакеты и пакеты полученные не от Red Hat; планирование инфраструктуры; разработку политик безопасности; каналы Extras/Supplementary; компоненты, имеющие статус Technology Preview.

Все, что готов поддерживать Red Hat, это: установка; настройка; использование; диагностика.

Иными словами, платить надо за то, что должен уметь самостоятельно решать любой грамотный системный администратор. Поддержка не сможет решить ни один наш вопрос, касающийся именно нашей системы.

Лично мое мнение: коммерческая поддержка Линукса на таких условиях вообще непонятно кому нужна, и вообще существует в природе скорее для маркетиноговых целей.
Tags: рабочее
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 198 comments