Весь последний год я использовал на сервере Gentoo Linux. Так как на многих серверах сейчас используется FreeBSD, мне стало интересно, какую скорость я могу получить на старом железе, используя Gentoo. Gentoo это дистрибутив, который позволяет легко скомпилировать программы с огромным количеством флагов компилятора, которые отвечают за любую часть железа. Теоретически такая оптимизация должна сильно ускорить систему.
Однако опыт показал, что не все так хорошо. Есть вещи которые мне очень нравятся в Gentoo: менеджмент пакетов, использование USE флагов и проработанная система зависимостей. Но к сожалению возникли большие трудности при настройке сервера.
Хорошие стороны.
Эта система лучше, чем большинство Linux систем в области менеджмента пакетов и установки. Команда emerge правосходна. С её помощью очень просто установить или обновить программу со всеми необходимыми зависимостями. ПРодуманная система USE флагов дополняет эту систему. Вместо того, чтобы указывать флаги каждой компилируемой программы, можно установить глобальный флаг USE. Большинство пакетов использует его и система установится правильно.
Наиболее простой способ способ описать эти преимущества - это сравнить с процессом установки FreeBSD на сервер. Примем, что у нас нет X11 и он нам не нужен. Теперь нам надо установить PHP и включить поддержку графических операций (преобразование изображений, генерация CAPTHA и т.д.). Для этого вы ищите make флаги и добавляете их в make.conf. Затем вы набираете "make install". Во время процесса компиляции система портов увидит зависимость от графических библиотек. Графические библоитеки требуют шрифты. Шрифты требуют менеджера шрифтов. Менеджер шрифтов по умолчанию сконфигурирован для X11. Таким образом мы обнаруживаем, что X11 необходим для выполнения зависимостей и приходится нажимать Ctrl-C для отмены установки.
С другой стороны, в Gentoo просто необходимо добавить "-X" в USE флаги и всё будет замечательно. Это отличная система.
Gentoo также имеет активную поддержку сообщества. Как написано в этом блоге, есть отличный форум для пользователей Gentoo.
Неудобство, выраженное во времени.
Все эти вещи показывают, что Gentoo приятно использовать. И я с удовольствием буду использовать её на своем десктопе, когда Apple OS X разочарует меня. Но я не буду устанавилвать Gentoo на сервер. Вот почему:
-
Gentoo требует много времени для установки
По крайней мере когда я устанавливал Gentoo, не было нормального инсталлятора. Документация превосходная и в ней точно описано всё, что нужно сделать, но это занимает много времени. Фактически, чтобы поднять систему я потратил несколько часов. И это было только начало.
-
Gentoo требует очень много времени для установки
Достоинство Gentoo заключается в "умной" компиляции всего - по крайней мере так принято считать. Но к сожалению на моем низкопроизводительном тестовом сервере, компиляция даже базовой системы с Apache, MySQL, Python и некоторыми другими важными программами заняла около трех дней. Причем всё это время машина непрерывно компилировала систему.
Я понимаю, что последние рекомендации на советуют делать делать установку из первой стадии ("stage-1"). И я бы последовал этим рекомендациям. Но что тогда будет с преимуществом компиляции всего?
-
Стратегия стабильности Gentoo: обновление всего
После того как вы потратили много времени на компиляцию программ, вам скорее всего не захочется делать это часто. К сожалению, Gentoo вынуждает обновлять программы просто ради обновления программ.
Не существует "стабильной" версии Gentoo. Gentoo постоянно обновляется, таким образом у вас всегда будут самые свежие версии программ. Как написано в руководстве Gentoo (Gentoo handbook):
Изначально Gentoo проектировалась исходя из концепции быстрого, дополняющегося обновления.
Если ваша основная забота - поодерживать сервер в рабочем состоянии, то вам необходимо поставить стабильную систему, настроить её и забыть о ней. Иногда надо будет лишь устанавливать необходимые обновления безопасности. С Gentoo у вас такого не получится, так как не существует "стабильного" релиза Gentoo.
Что гораздо хуже, есть нечто вроде "системного обновления". Это называется новый "профиль". В документации Gentoo рекомендуется обновлять профиль. Это обновление заменит базовую систему. Если вы системный администратор - вам придется настраивать всё заново.
Обновление профиля коснется огромного количества конфигурационных файлов и может даже затронуть процесс загрузки. Это явно не то, что вы хотите делать на сервере. Так как будет тяжело убедиться, что все работает как должно, и не перестанет работать после перезагрузки. Фактически это то, что произошло со мной, несмотря на большое количество времени, потраченное на обновление файлов в /etc. Конечный результат: сервер пришлось оживлять вручную, что привело к вынужденному простою.
Для более важных серверов, чем моя тестовая система, вы захотите просто вернуть систему со старым профилем. Для этого просто установите Gentoo на другой машине. Затем убедитесь, что она хорошо работает после перезагрузки. После того, как вы убедились, что всё работает, вы можете переключаться на новую систему.
-
Стратегия безопасности Gentoo: обновление всего
Как вы возможно знаете, FreeBSD имеет маленькую приятную программу, которая называется portaudit. Эта утилита предупредит вас, если вы установите программу с известными "дырами" в безопасности. После этого вы можете просто обновить эту программу с помощью команды "portupgrade". С этим процессом редко случаются проблемы.
Теперь Gentoo. Здесь тоже есть что-то вроде portupgrade. Но здесь нет portaudit.
По правде говоря, в Gentoo есть экспериментальная команда "glsa-check". Эта команда автоматически проверит известные уязвимости вашей системы. Она также скажет, что надо сделать, чтобы исправить проблемы безопасности. Мне нравится эта разработка, но я понимаю, что эта команда еще не до конца готова. Справочник Gentoo содержит множество предупреждений о том, что эта утилита находится в стадии разработки.
А между тем, Gentoo вынуждает обновлять всю систему. И конечно обновления могут вызвать разрушение системы.
Gentoo занимает слишком много времени и слишком рискована для серверов.
Я считаю, что обновлять программы сервера нужно только тогда, когда это необходимо. Если вам не нужны новые возможности и всё прекрасно работает, то зачем что-либо менять? Если вы что-то обновляете, вам несомненно придется обновлять конфигурационные файлы. Вам также придется исправлять не работающие вещи в процессе обновления. Это то, что я делал с Gentoo во время тестового года. Я абсолютно не представляю что я обновлял выполняя команду "emerge world". И я до сих пор не понимаю что произошло однажды. Я потратил сного времени обновляя файлы в /etc, используя встроенную команду "tc-update". Я пытался читать лог-файл и предпринимать соответствующие действия. Но все равно ничего не работало.
Самый лучший способ сохранить систему стабильной - это настроить её и ничего не менять. Это тяжело сделать с Gentoo. Gentoo хочет изменить множество вещей. Хочет постояно быть на острие развития.
И отсюда мое заключение. С Gentoo весело играть, но она занимает очень много времени. Я думаю это плата за то, чтобы всегда быть на переднем крае. Для домашних систем Gentoo отлично подходит. С ней приятно работать, у нее есть отличная система портов, используются удобные USE флаги.
Но для серверов, особенно для производительных серверов, Gentoo не эффективна. Необходимо большое количество времени для обновления безопасности и возможной переустановки системы. В 2006 году для Gentoo было 3 обновления профиля. Я не хочу переустанавливать сервер 3 раза в год!
В заключение я хочу процитировать то, что в последнее время сообщала мне Gentoo:
Доступно обновление дерева портов. Настоятельно рекомендуется обновить дерево портов сейчас, до обновления других пакетов. Пожалуйста выполните "emerge portage" и затем обновите все конфигурационные файлы.
Killy 2007-01-22 22:43:56 (#)
Кто же напишет статью "Почему нельзя подпускать к серверу идиотов?"
Ну кто мешает поднять сервер на тестовой тачанке и наделать там бинарных пакетов? Ну кто заставляет перевобирать систему, если она и так работает?
И не "дерево портов" а пакет "portage".
И вообще, чел походу не понимает о чем он пишет.
Генту идеально подходит для сервера и рабочей станции ибо обновить ее очень легко. И конфиги править не надо - etc-update + dispatch-conf решат все проблемы. Ну еще надо хендбук прочитать конечно же.