09.07.2014
Семейство операционных систем BSD всегда имело репутацию консервативного, стабильного и надежного. FreeBSD обычно хорошо отвечает этим характеристикам, демонстрируя надежность работы, и предлагая несколько сюрпризов.
Выход последнего релиза FreeBSD 10.0 ознаменовался несколькими важными изменениями, которые я счел необходимым осветить. Среди них поддержка ZFS в качестве корневой файловой системы, поддержка сжатия TRIM и LZ4 для ZFS, улучшения виртуализации, а также новый пакетный менеджер. Кроме того, в последней версии почтенный компилятор GNU был заменен на Clang. Релиз 10.0 доступен для нескольких архитектур, включая x86, Power PC и Sparc. Меня интересовала версия x86, для которой имеются 32 64-битные сборки. Далее мы можем сузить наш выбор, скачав ISO размера CD, или полный образ размером 2,2 Гб. Для своего обзора я выбрал больший образ.
Установка и первая загрузка Загрузившись с установочного носителя, мы увидим тестовое меню, из которого можно перейти в командную оболочку, запустить live-окружение (текстовую консоль), или начать процесс установки. Инсталлятор FreeBSD в основном представляет собой серию текстовых меню с редкими переходами в интерфейс командной строки. Большинство этапов маршрута имеют значения по умолчанию, и пользователи могут просто перейти к следующему этапу, если сомневаются в правильности своего выбора. Сначала вам предлагают выбрать раскладку клавиатуры, затем задать имя хоста. Далее предлагается выбрать группы пакетов для установки (документация, игры, порты и/или исходные коды). Следующий этап - разметка диска. На выбор предлагается несколько вариантов: автоматическая разметка ZFS, разметка вручную с помощью инсталлятора и разметка вручную с помощью утилит командной строки. Я выбрал автоматическую разметку. С ZFS мы можем выбрать диск, на который устанавливается система, опционально задать имя для нашего пула, задать размер пространства для подкачки, изменить тип разметки диска (GPT или MBR), а также при желании включить шифрование данных.
В большинстве случаев я старался следовать настройкам по умолчанию. Некоторым пользователям может заинтересовать известие о том, что инсталлятор FreeBSD поддерживает RAID и зеркалирование. Далее мы задаем пароль для аккаунта администратора, выбираем из списка свой часовой пояс и настраиваем сеть. Мы также можем выбрать запускаемые системные службы, включая безопасную оболочку, синхронизацию времени по сети, дампы падения ядра и демон динамического изменения частоты процессора. В конце процесса установки мы можем добавить пользовательский аккаунт и получаем последний шанс вернуться назад и изменить какие-либо настройки. Я остался очень доволен последней версией системного установщика FreeBSD. Он работал безупречно, настройки по умолчанию были хорошо подобраны, а установка прошла так быстро, что я сначала даже усомнился в том, что все необходимые файлы были скопированы на жесткий диск.
После установки я перезагрузил компьютер. FreeBSD перезагрузилась в течение минуты и предложила мне авторизоваться в текстовой консоли. После авторизации FreeBSD встречает нас приветственным сообщением, сообщая, где мы можем найти документацию проекта и бюллетени безопасности. При старте система расходует очень мало системных ресурсов - около 10 Мб RAM и (в зависимости от выбранных вами пакетов) примерно 1 Гб дискового пространства. Оглядевшись в системе, я увидел обычные утилиты UNIX и их man-страницы. Доступен компилятор Clang, а в фоновом режиме работает безопасная оболочка OpenSSH. Во время установки я был уведомлен о том, что FreeBSD выделила мне 1 Гб пространства подкачки, но после первого запуска оно вообще не было задействовано. Дальнейшая проверка показала, что в процессе загрузки операционная система пыталась активировать раздел подкачки - раздел, которой не существует. Кажется, это ошибка менеджера разделов.
Я решил установить FreeBSD, используя пул данных ZFS. За время моей работы с FreeBSD я нашел, что ZFS показала себя хорошо, копирование и удаление файлов выполнялось быстро. По умолчанию ZFS настроена таким образом, что ключевые разделы файловой системы монтируются в виде отдельных подразделов. Это означает, что домашние каталоги пользователей, системные программы, файлы журналов и программные порты расположены в отдельных областях и могут обрабатываться раздельно. Например, мы можем создавать отдельно снимки системных файлов и домашних директорий. Поэтому, если нам нужно откатиться к предыдущей версии файловой системы, мы можем восстановить одну группу файлов, не затрагивая другую.
Программы и управление пакетами Одна привлекательная возможность, доступная теперь во FreeBSD 10.0 - это новый менеджер пакетов, называемый "pkg", который предлагает унифицированный подход к управлению пакетами и упрощенный по сравнению с ранее использовавшимися во FreeBSD пакетами синтаксис. При первом его запуске система сообщает, что pkg установлен не полностью и предлагает скачать и установить менеджер пакетов. После начальной загрузки pkg мы видим, что его синтаксис похож на zypper или YUM. Мы можем устанавливать и обновлять программное обеспечение, или удалять ненужные пакеты. Мы также можем получать списки установленных программ и производить поиск в репозиториях FreeBSD. Кроме того, если вам нужна определенная версия программы, pkg позволяет заблокировать заданные пакеты, чтобы предотвратить их случайное обновление. Я нашел, что pkg работает быстро и предоставляет большое количество информации о своей работе, включая полезные подсказки.
Операционная система FreeBSD включает огромное количество утилит командной строки, но не включает многих полезных сервисов и графического интерфейса пользователя. Вооруженный новым менеджером пакетов pkg, я решил изменить положение вещей. Первой задачей для меня была установка графического окружения Xfce из репозитория проекта с бинарными пакетами. Для Xfce имеется метапакет, включающий различные панели, меню и иконки, требуемые для окружения рабочего стола. Установка прошла гладко, однако я заметил важное упущение. Установка графического окружения не повлекла за собой установку базового графического сервера дисплея X. По каким-то причинам X не является зависимостью Xfce. Следующий час я провел, скачивая X, пытаясь запустить рабочий стол, понять, почему он не работает и исправить это, читая раздел руководства FreeBSD по решению проблем с графическим сервером, вручную перенастраивая Х и снова пытаясь его запустить. В конечном итоге мне так и не удалось заставить его нормально заработать. Иногда я видел рабочий стол, но оказывалось, что ввод с клавиатуры не работает. В следующий раз ввод работал, но при этом не запускался рабочий стол. В конце концов я решил отложить X и Xfce, чтобы сосредоточиться на изучении возможностей FreeBSD в качестве серверов, что является основным предназначением этой операционной системы.
В прошлом месяце, когда я оценивал серверные дистрибутивы Linux, я пытался настроить несколько сервисов, включая безопасную оболочку и Wordpress, в четырех дистрибутивах GNU/Linux. Так как во FreeBSD OpenSSH активируется при установке, я решил сосредоточиться на настройке Wordpress. На первый взгляд это выглядело очень просто, так как репозитории FreeBSD включают пакет Wordpress. Я установил его, и после окончания процесса меня попросили запустить скрипт для настройки базы данных Wordpress. Все казалось очень удобным, пока я не попытался запустить этот скрипт и обнаружил, что его не существует. Оказалось, что при установке скачиваются только файлы Wordpress, а зависимости, такие как веб-сервер, база данных, файл скрипта для автоматической настройки баз данных, по умолчанию не устанавливаются. Этот призрачный скрипт, на который ссылался пакет Wordpress, оказался в составе пакетов базы данных, которую я установил позже.
Я также загрузил веб-сервер Apache (версия 2.2), используя pkg, и обнаружил, что он не запускается, утверждая, что не может сопоставить имя моего хоста IP-адресу. К счастью, я уже видел это раньше, поэтому изменил имя хоста на что-то такое, что Apache мог распознать в качестве полного доменного имени. Решив, что на этом настройка Wordpress закончена, я решил просмотреть свой новый сайт, и обнаружил, что поддержка скриптового языка PHP в Apache по умолчанию не активирована, поэтому потребуется переустановить PHP из исходного кода, изменив в процессе конфигурацию портов. После того, как все это было сделано, я должен был настроить Apache и MySQL, чтобы они запускались при загрузке системы. В целом это оказался неожиданно долгий и насыщенный ошибками процесс по сравнению с другими серверными дистрибутивами.
Наиболее часто встречающейся проблемой стала ошибка, связанная с тем, что при установке программ с помощью pkg не устанавливались все требуемые зависимости. Помимо приведенных выше случаев, когда при установке Xfce не был установлен графический сервер, а при установке Wordpress - база данных и веб-сервер, могу привести еще один пример. На следующий день я установил коллекцию цитат "fortune", которые должны выводиться при авторизации в системе. После установки дополнения, которая прошла нормально, я хотел прочитать его текстовый файл, но оказалось, что сама программа fortune установлена не была, и мне пришлось устанавливать ее отдельно.
Подозреваю, что теперь я получу кучу писем от поклонников FreeBSD, указывающих, что программа fortune является опциональной частью операционной системы FreeBSD, а не портом, и поэтому находится за пределами компетенции менеджера пакетов. Может быть это и правда, но в таком случае проблема только усугубляется. Это значит, что менеджер пакетов не только устанавливает программы, не проверив зависимости, но что он также устанавливает программы, для которых он не может проверить зависимости. Если компонент опциональный, он на самом деле должен быть помещен в коллекцию портов, где он может быть найден менеджером пакетов, иначе мы рискуем столкнуться с ситуациями, когда программы не будут работать. Это является скорее проблемой самих портов, а не менеджера пакетов pkg. Проверка списков зависимостей на сайте FreeBSD показала, что недостающие зависимости не заданы в портах.
Я пробовал FreeBSD в двух окружениях. Первое - виртуальная машина VirtualBox, второе - мой десктоп (двухъядерный процессор 2,8 ГГц, 6 Гб RAM, видеокарта Radeon и сетевая карта Realtek). В обоих случаях FreeBSD загружалась быстро, работала гладко и стабильно. Звук заработал из коробки, и, после некоторых усилий, мне удалось заставить X работать с моей видеокартой. Операционная система занимала достаточно мало оперативной памяти, особенно учитывая многие функции ZFS.
Выводы По большей части в связи с проблемами установки программ от сторонних производителей, с которыми я столкнулся, мои впечатления от FreeBSD нужно разделить на две части. Во-первых, FreeBSD, то есть утилиты командной строки, ядро, файловая система ZFS и инсталлятор - это прекрасная операционная система. В двух различных окружениях она была быстрой, стабильной и отзывчивой. Меня действительно впечатлила большая работа по совершенствованию системного инсталлятора для этого релиза, и мне нравится простота использования ZFS. FreeBSD включает детальную и полезную документацию. Новый менеджер пакетов более быстрый и дружелюбный по сравнению со своими предшественниками. Все это означает, что FreeBSD довольно легко установить и изучить, понять как все работает, и администратор вряд ли столкнется с рухнувшей системой.
С другой стороны, у меня сложилось впечатление, что коллекция портов FreeBSD не обеспечивает такого же уровня безопасности, как базовая операционная система. Некоторые из доступных портов очевидно не были проверены на установку всех требуемых зависимостей. Состояние порта X, мягко говоря, неудовлетворительное. Этот разрыв между качеством базовой операционной системы FreeBSD теперь, с появлением отличного менеджера пакетов pkg, стал еще более очевиден. Сейчас проще, чем когда-либо, найти и установить новую программу, но дальнейшая охота на потерянные зависимости и настройка ключевых портов требуют слишком больших усилий. В результате отличная операционная система страдает, как только мы пытаемся расширить ее функциональность сторонними приложениями.
Еще одна вещь, на которую я обратил внимание, была возможность, которой мне очень не хватало. В FreeBSD имеется удивительно полезная функция, под названием Jails, предназначенная для изоляции процессов, которая по существу представляет собой среду виртуализации с очень низким потреблением системных ресурсов. Есть несколько полезных утилит, работающих с jails, которые позволяют повысить уровень безопасности работающих сервисов, таких как веб-сервер. Jails позволяет также запускать программы, не затрагивая остальную часть операционной системы. Чего не хватает, так это предварительно настроенных jails в официальном репозитории. В экосистеме Linux есть проект под названием Turnkey Linux, который предлагает готовые образы Linux, настроенные для различных задач, таких как обслуживание веб-сайта, форума, системы отслеживания ошибок в программном обеспечении и хостинга программы для мгновенного обмена сообщениями.
Необходимо предусмотреть возможность создания и распространения шаблонов jails во FreeBSD. Два проекта - FreeNAS и PC-BSD, оба основанные на FreeBSD, поддерживают несколько шаблонов jail для людей, которые хотят поэкспериментировать с портами, или создать контейнер для сервиса. Однако ни один из этих проектов, ни FreeBSD, не предлагают коллекции jails в стиле Turnkey, предназначенных для специфичных задач, таких как хостинг сайта на Wordpress, запуск медиасервера или хоста TorrentFlux. Эта мощная технология, включенная в FreeBSD, вместе со стабильностью и низким потреблением ресурсов операционной системы, идеально подходит для создания таких предварительно настроенных контейнеров. Надеюсь, что эта идея будет воплощена в жизнь. Было бы прекрасно набрать в командной строке что-то типа "pkg install-jail amp_server" и получить соответствующий контейнер.
|