Какой дистрибутив выбрать?

Многие кто только познакомился с Unix-like системами сталкиваются с большим количеством дистрибутивов и часто спрашивают «какой дистрибутив выбрать?» или «какую операционную систему выбрать?». В этой статье постараемся восполнить этот пробел.

Linux или BSD?

Расскажу небольшой IRL опыт по настройке Highload серверов, которые админил 4 года. Была казуальная игра и решено было сделать версию для социальных сетей Vkontakte, Odnoklassniki, Мой мир и Facebook. Серверные программисты написали Backend на PHP + MariaDB + MongoDB. После настройки монструозных серверов начался этап тестирования. Серверные программисты тестировали приложение на JMeter, а мониторингом занимался я на Munin + самопальные скрипты на Perl и Python. Никак не получалось утилизировать всю мощь серверов в связи с чем было решено ввести HVM виртуализацию на Kernel-based Virtual Machine. Сперва погоняли тесты на CentOS Linux и все работало очень медленно, но работало т.е. Linux предпочитал обслужить все запросы при этом ставя в очередь все, что не успевал обработать. Далее перешли на FreeBSD. Все было с точностью до наоборот. Все работало очень шустро, но при этом BSD предпочитал отбрасывать все запросы, которые не успел обработать в итоге было очень много ошибок HTTP 502. Было решено отказаться от системы виртуализации и оставить Linux, чей TCP стек нормально потюнил и немного поработав над ядром добился полной утилизации системных ресурсов серверов и все отлично завелось.

Если вам нужен типичный сервер вроде веб-сервера, базы данных и т.д., то лучше отдать предпочтение быстроразвивающемуся Linux. Если вам нужен сервер, который должен быстро обрабатывать поступающую информацию (например маршрутизатор, балансировка нагрузки и т.д. т.е. околосетевые вещи), то тут уже лучше использовать более консервативный BSD. Если экстраполировать это на ядра видеокарт, то Linux это CUDA, а BSD это тензорные ядра.

Дистрибутивы

Сперва следует определиться для чего вам нужен дистрибутив. Как десктоп или как сервер? Если как десктоп, то ответ довольно банален – это Ubuntu, но кроме него есть и другие дистрибутивы. Например, я сделал свой выбор в пользу Project Solus созданный одним из сотрудников Intel и максимально оптимизированный под процессоры данной компании, однако все же если вы новичок, то рекомендую начать именно с Ubuntu как дистрибутив с низким порогом вхождения и богатым репозиторием программного обеспечения. На самом деле какой дистрибутив выберете для десктопа не имеет особого значения. В основном все касается репозитория программ и внешнего вида. Когда освоитесь с Ubuntu можете смело переходить на Fedora, а затем на ArchLinux для повышения скилла.

Если вам нужен дистрибутив для сервера, то настоятельно рекомендую использовать CentOS или Debian. Конечно, Debian быстрее и имеет более богатый репозиторий, но не удобен с точки зрения управления пакетами и не каноничен. Например, если вы захотите в Debian удалить какой-либо пакет, то aptitude скорее всего предложит вам снести пол системы, когда как в yum можно легко как удалять отдельные пакеты без зависимостей, так и апгрейдить или даунгрейдить отдельно взятые. Также довольно легче на CentOS компилировать различные программы из исходных кодов в силу большого количества необходимых development пакетов. Также немаловажную роль играет и то, что Debian сильно быстро обновляется и потому допускает больше багов, когда как CentOS обновляется довольно медленно и в основном использует только стабильные версии программ. Каноничность касается конфигурации программного обеспечения. В CentOS можете смело настраивать программы по официальной документации или даже по FreeBSD Handbook, когда как в Debian конфигурация тех же программ будет сильно отклонятся от той же официальной документации и куча мануалов в блогах, где один криво настроил софт, а остальные бездумно копипастят кривую статью.

Если же вам нужен маршрутизатор, то тут однозначно мой выбор падает на дистрибутив pfSense на базе FreeBSD. Поддерживает VLAN Layer-3, Multi-WAN, Gateway Groups, Certbot и много всего включая мониторинг на Zabbix и ELK стек, а также имеет драйвера для работы с множеством UPS. В силу природы BSD работает очень шустро и гораздо безопаснее, чем железные маршрутизаторы в плане того, что меньше багов. Немаловажным фактором является и то, что поддерживается протокол CARP для обеспечения высокой доступности маршрутизатора путем установки двух маршрутизаторов взаимозаменяющих друг друга, что позволяет обновлять программное обеспечение без перебоев в работе интернета и спать спокойно, если, например сгорит ночью блок питания у одного из маршрутизаторов.

Заключение

Подведем краткий итог. Если нужна десктопная система, то ставьте Ubuntu. Если нужен сервер, то ставьте CentOS. Нужен маршрутизатор, то ставьте pfSense. Сэкономите время и нервы, а также хорошо заработаете.

Ранее был пост о том «что такое Unix like«.

А как же macOS и Windows?

К сожалению, опыта работы на серверах под управлением macOS нет так, что сорян. Ничего не могу сказать по этому поводу, а что до Windows Server, так он является неотъемлемой частью любой сетевой инфраструктуры, где есть компьютеры под управлением десктопной Windows. А что вы хотели? Active Directory, Distributed Filesystem, Network Policy System – все это проприетарные технологии Microsoft и довольно хорошие и востребованные. Надо же как-то управлять компьютерным парком да и сам Windows Server в последнее время очень даже стабильно работает.