Linux на сервере

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

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

Рождение мифа[править]

Зарождение культа линупса на серверах уходит корнями в те дремучие времена, когда интернет был на диал-апе, админы — бородаты и суровы, а единственной альтернативой был злой и страшный Windows NT, который требовал денег, графической карты для своей богомерзкой ГУИ и периодических перезагрузок по поводу и без. На этом фоне юный, но дерзкий пингвин, которого можно было собрать из исходников под себя, казался глотком свежего воздуха. Свобода! Открытость! Контроль! — неслось из каждого прокуренного серверного помещения.

Энтузиасты ночами напролет компиляли ядро, любовно вписывая в конфиги строки, понятные лишь им и самому Торвальдсу. Они создали вокруг себя ореол элитарных техножрецов, повелевающих магией консоли. Это они породили легенду о мифическом аптайме в несколько лет (умолчав, что сервер все это время просто пинговался из локалки и раздавал статичный index.html), и о неуязвимости перед вирусами (коих под него тогда попросту никто не писал). Именно тогда фраза «у меня сервер на линуксе» стала аналогом «я не такой, как все, я познал дзен в ассемблере». Время шло, но легенда, как и положено хорошей легенде, продолжала жить своей жизнью, обрастая новыми мифами и отрываясь от суровой реальности, где все уже давно не так радужно.

Святая Троица[править]

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

Kernel Panic. О, это сладкое слово для любого, кто хоть раз видел его в консоли KVM в четыре часа утра. Это истерика центрального процессора, когда ядро сталкивается с ошибкой, от которой не может оправиться. Ядро Linux, вопреки легендам, способно впасть в панику от самых безобидных вещей. Неудачно вставленная флешка, сбойный сектор на диске, космический луч, попавший в модуль памяти, или просто баг в драйвере — всё это может привести к тому, что система издаст предсмертный вопль Kernel panic — not syncing: Attempted to kill init! и уйдет в астрал. После чего админ, попивая уже пятую чашку остывшего кофе, будет с умным видом гуглить дампы памяти, чтобы в итоге прийти к выводу, что надо было просто перезагрузить.

Я не знаю, почему оно упало. Я не знаю, как это исправить. Но я точно знаю, что виноват не Linux, а тот криворукий программист, который писал драйвер для этой сетевой карты. А еще Microsoft, они наверняка что-то подмешали в обновления BIOS.

Не менее доставляет и хваленый Completely Fair Scheduler (CFS). На бумаге эта штука должна быть верхом справедливости, раздавая процессорное время всем страждущим процессам поровну. На практике же этот цифровой комиссар может с легкостью решить, что какой-нибудь процесс ротации логов (logrotate) внезапно стал важнее вашей высоконагруженной базы данных PostgreSQL, отчего последняя с обиженным видом уходит в глубокий I/O wait, роняя на пол весь ваш продакшен. Попытки же объяснить планировщику, что он не прав, с помощью nice и ionice напоминают попытки убедить вахтера в общежитии, что ты тут живешь: может, и сработает, но скорее всего тебя просто пошлют.

Безопасность для галочки[править]

Про безопасность Linux ходят легенды. Говорят, она настолько сурова, что ни один вирус не проползет. На самом деле, эта безопасность напоминает средневековый замок: стены толстые, но внутри сидит сто человек охраны, из которых девяносто девять спят, а один — предатель.

Накопленный за десятилетия легаси-код превратил ядро и системные утилиты в швейцарский сыр. Каждую неделю находят очередную эпичную уязвимость, позволяющую локальному пользователю стать рутом, выполнив одну магическую команду. Вспомним хотя бы Heartbleed, Shellshock или Dirty COW. Каждый такой факап заставляет миллионы админов по всему миру судорожно обновлять пакеты, молясь, чтобы их серверы не превратились в часть очередного ботнета.

А что же хваленые системы защиты? О, это отдельная песня. SELinux. Разработка АНБ, призванная сделать систему неприступной крепостью с помощью обязательного контроля доступа. На практике — это цифровой ошейник с шипами, надетый вовнутрь. Он запрещает всё. Вообще всё. Хочешь запустить веб-сервер на нестандартном порту? Access Denied. Хочешь, чтобы скрипт из домашней папки отправил почту? Permission Denied. В результате, первая же команда, которую вводит 95 % админов после установки системы, это: setenforce 0 и следом: sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

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

Грязные блобы Пророка[править]

Адепты секты Святого Пингвина любят вещать о полной открытости и контролируемости их системы. Мол, каждый может прочитать исходный код. Но есть один маленький, грязный нюанс, о котором принято стыдливо умалчивать. Называется он binary blobs. Дело в том, что то ядро Linux, которое 99.9% админов ставят на свои серверы, не является полностью свободным. Оно под завязку набито бинарными «блобами» — черными ящиками, нечитаемыми кусками проприетарного кода, которые производители железа (Intel, Broadcom, AMD и прочие) пихают в драйверы и прошивки. Без этих блобов ваше серверное железо, особенно Wi-Fi адаптеры и RAID-контроллеры, превратится в бесполезный кусок металла.

И вот тут вся хваленая безопасность через открытость летит коту под хвост. Никто, кроме самих вендоров, не знает, что творится внутри этих блобов. Об этом уже много лет кричит бородатый пророк свободы Ричард Столлман, продвигая свой кастрированный Linux-libre — ядро, героически вычищенное от всей этой проприетарной скверны. Только вот есть проблема: попробуйте запустить какой-нибудь современный серверный HP или Dell на этом вашем «свободном» ядре. В лучшем случае у вас не заведется сетевая карта. Поэтому любой админ, которому нужно, чтобы сервер просто работал, плюет на идеологию и ставит обычное ядро с блобами.

Администрирование как садомазохизм[править]

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

Хочешь поднять веб-сервер? Изволь-ка отредактировать полдюжины текстовых конфигов, синтаксис которых придумывали явно под веществами. Запятая не там, лишний пробел, и твой хваленый nginx откажется стартовать, выплюнув в лог нечто невразумительное вроде unexpected «}» in /etc/nginx/sites-available/default:23. Хочешь добавить пользователя в базу данных? Забудь про удобный Wizard. Вот тебе консоль, вот тебе команда с двадцатью ключами, ошибешься — создашь пользователя, который сможет отформатировать корневой раздел.

Этот архаичный подход подается под соусом гибкости и полного контроля. На самом деле, это просто нежелание или неумение создавать человеческие интерфейсы. Админ Linux — это не инженер, это археолог, который копается в культурных слоях конфигов, оставленных его предшественниками из 1993 года. Апофеозом этого безумия стала система инициализации systemd, которая попыталась заменить анархию скриптов на упорядоченную тиранию бинарных логов и юнитов. Стало ли лучше? Нет, просто теперь админы страдают по-новому, ненавидя уже не кривые init.d скрипты, а таинственную магию systemctl.

Ересь от Microsoft[править]

Самый сочный лулз современности заключается в том, что Microsoft, вечный враг и антагонист, умудрилась сделать Linux… лучше, чем сам Linux. Речь, конечно, о WSL2. Эта штуковина запускает полноценное ядро Linux внутри Windows через облегченную виртуальную машину. И, по иронии судьбы, работает оно зачастую стабильнее, быстрее и предсказуемее, чем его нативный собрат, установленный на голое железо, особенно в части совместимости с драйверами.

Разработчик под виндой сегодня получает все плюшки линуксового окружения — bash, grep, awk, docker — без необходимости пердолиться с драйверами для Wi-Fi, звуковой карты или засыпающего ноутбука. В то время как линуксоид на десктопе до сих пор воюет с тирингом в иксах и отваливающимся после обновления ядром, его коллега под Windows 11 просто пишет wsl --install и через минуту получает рабочее окружение. Тесты производительности показывают, что WSL2 по скорости почти не уступает нативным инсталляциям Ubuntu в большинстве задач. А сервер… а что сервер? На сервере админ продолжает делать вид, что бесконечная пересборка мира и парсинг конфигов — это не баг, а фича.

Так почему же оно везде?[править]

После всего вышесказанного возникает резонный вопрос: если этот ваш Linux — такое УГ, почему он стоит на 96,3 % из топ-миллиона серверов мира? Ответ прост и циничен до безобразия.

  • Он бесплатен — самый сладкий миф. Наивный менеджер, услышав это, представляет себе мешки сэкономленных денег. Но бесплатный сыр бывает только в мышеловке, а главным выгодоприобретателем от этого мифа стали хитрые ребята в красных шляпах из Red Hat. Они первыми поняли, что на бесплатном можно зарабатывать больше, чем на платном. Как? Очень просто. Сам Linux ты получаешь даром. А вот чтобы эта шайтан-коробка реально работала в проде, не падала каждый час и чтобы было кому позвонить в три часа ночи, когда все горит синим пламенем — изволь купить поддержку. И вот тут-то стоимость бесплатного Linux внезапно взлетает до небес. Корпорации, дрожа за свои SLA, выстраиваются в очередь, чтобы заплатить Красношляпе ежегодную дань за Enterprise-дистрибутив, которая легко может превысить стоимость лицензии на Windows Server. По сути, Red Hat продает индульгенцию — право не страдать так, как страдают обычные пользователи Debian или CentOS. В итоге бизнес платит либо зарплату целой ораве красноглазиков, которые пытаются собрать из опенсорса что-то вменяемое, либо платит десятину Red Hat. Бесплатно не бывает.
  • Стокгольмский синдром. Поколения админов выросли на этом. Они не знают, как может быть иначе. Они привыкли страдать, и даже находят в этом своеобразное удовольствие. Рассказать такому админу, что можно настроить почтовый сервер за 5 кликов в GUI — значит нанести ему кровное оскорбление. Настоящий админ должен страдать в консоли!
  • Карго-культ. У Google это работает! У Amazon это работает! Значит, и у нас заработает! То, что у Google и Amazon есть целые армии гениев, которые переписали половину этого Linux под свои нужды и держат его в ежовых рукавицах, владельцы малого бизнеса с 3 серверами в кладовке предпочитают не думать. Они просто ставят Ubuntu Server и надеются на чудо.

Linux на серверах — это не только про технологии и стабильность. Это про идеологию, привычку и, в первую очередь, про деньги. Это величайший IT-феномен, который смог убедить весь мир, что конструктор для энтузиастов-мазохистов является лучшей платформой для критически важной инфраструктуры. И пока админы готовы приносить в жертву свой сон и нервы на алтарь вечного аптайма, священная корова будет продолжать жевать свою жвачку из легаси-кода, изредка впадая в панику от чиха системного таймера.

03ef4f7db0cccdf39bf013566aed31bd.jpg Системы, без которых машина просто откажется работать
СистемыAndroidDOSFreeBSDHaikuЛинуксMenuetOSMacOS (OS X) / Хакинтош / iOSOS/2ReactOSWindows / ВиндаРусОСФантом ОСUnixHarmony OSWindows vs. LinuxАстра ЛинуксMATEKaiOSChimbalixIOS 18WinGetThe Amnesic Incognito Live SystemTemple OSGrapheneOS
СредыGNOMEGNU EmacsKDEЛинус Торвальдс vs x86 64SELinuxWindows UpdateИгры из репозиториевТерминалОптимизация WindowsПасьянс КосынкаEnd of 10Windows AeroАптайм
ЛюдиБалмерГенерал ФейлорПоттерингСтоллманТорвальдсФолькердингРуслан КармановRealme (компания)AnduinOSОболочка операционной системы
Дистрибутивы LinuxArchDebianFedoraFinnixGentooLFSUbuntu (BolgenOS) • СлакаUncom OSTiny10Tiny11Дешёвые ключи для Windows
Версии виндыWindows 95Windows 98Windows 2000Windows XPWindows VistaWindows 7Windows 8Windows 10Windows 11Windows Phone 7Windows Phone 8ГовносборкиWindows MEWindows ШкольникГрафики в Windows CalculatorKasperskyOSQuick machine recoveryBypassNROCtrl+Shift+Win+B
ПользователиАдминБздун • Виндузятник • КрасноглазикЛинуксоидЯблочникФайл подкачкиСпермопроблемыDistro hoppingLinux на сервере
Площадки/s/LORru macru.os.cmpstoplinux.org.ru
Мемы/dev/null • BSD, not LSD • GIFGNOME vs. KDEMac vs. PCOS-tanrm -rfSystem32TRUE-DEATH-PRIMITIVE-LINUX-MITOLLWindows vs LinuxБубенВендекапецГномикиДаунгрейдЕсли бы…Ждём ебилдовКЛБМаздайПатчить KDE2 под FreeBSDПереустановка WindowsПриборчикРаспечатать лицензию на ЛинуксTuxТупые свитчерыФениксНе работай под рутомБлокировка Windows в РоссииОСВзлом Windows через MetasploitЭффект Пьюдипая
Достойные упоминанияAmigaСтарая копипаста:ШindowsЛинуксоидное ХанжествоСкотный Двор имени Линуса Торвальдса