Содержание статьи
Введение
Red Hat выпускает мажорные версии своих дистрибутивов раз в три‑четыре года — вечность в современном мире ИТ. И 10 июня вышла седьмая версия флагманского продукта компании — RHEL. Прежде всего следует дать краткий обзор, что новое появилось в данном дистрибутиве:
- Ядро 3.10, в котором, в частности, появился уровень кеширования Bcache, позволяющий использовать SSD-диски в качестве кеша для HDD, а также поддержка технологии zSwap для сжатия неиспользуемых страниц прямо в памяти, не сбрасывая на диск.
- В качестве файловой системы используется XFS. Btrfs, видимо, посчитали слишком сырой для корпоративного сектора, хотя она и доступна в списке доступных ФС.
- Systemd заменил‑таки старую добрую инициализацию SysV.
- В качестве графической оболочки используется GNOME 3, правда, в отличие от некоторых других, Red Hat включил интерфейс Classic Shell для безболезненного перехода со старых версий.
- Samba 4, позволяющая создать контроллер домена Active Directory.
- Платформа x86 более не поддерживается, только x64.
Можно перечислить еще много всего, но данная статья все же не является перепечатанными Release Notes, посему на этом и остановимся и перейдем к самому обзору.
Установка
Red Hat верен себе — Live-версии дистрибутивов не поставляются, поэтому знакомство с ним придется начать по старинке — с установки. Установить можно как с DVD, так и с флешки (для последнего на не-UEFI-системах достаточно скопировать образ DVD на флешку с помощью dd).
Red Hat предоставляет три образа дистрибутива на этапе установки отличающихся лишь набором пакетов: Server, Workstation и Client. На практике же набор пакетов в Workstation такой же, как и в Client, даже больше, и, таким образом, последний рассматривать не имеет смысла.
После загрузки с носителя и необязательной проверки целостности запустится стандартный установщик RHEL — Anaconda, который тут же попросит задать язык. Следом за выбором языка появится экран обзора установки, где можно настроить сеть, часовой пояс и разбиение и выбрать пакеты. Этим установщик отличается от предыдущих версий, где данные параметры выбирались на нескольких последовательных экранах.
В списке часовых поясов присутствует в том числе и мой город, который во многих других продуктах (даже проприетарных) отсутствует.
Сетевой адаптер по умолчанию выключен, даже если он присутствует в единственном экземпляре. Решение достаточно спорное — например, в том же диалоге выбора часового пояса, который на обзорном экране идет первым, присутствует переключатель для NTP, без сети попросту не работающий.
Выбор пакетов сводится к выбору категорий, что, в общем‑то, логично. Немного смутило то, что при переключении основных опций дополнительные не сохраняются — по‑видимому, предполагается, что пользователь четко знает, чего хочет. Также был замечен немного неправильный перевод: «Резервный клиент» стоит переводить как «Клиент для резервного копирования». Кроме того, из названий дополнений в большинстве случаев не совсем очевидно, какое ПО им соответствует. Так, можно лишь предполагать, что под «Офисным комплектом» подразумевается LibreOffice. А что подразумевается под «Стандартной средой разработки», вообще неясно.
Автоматическое разбиение диска одинаково для всех трех вариантов поставки. Раздел /boot (и /boot/efi в случае использования UEFI) и том LVM, в котором только два раздела — корневой и своп. С этой схемой разметки я склонен не согласиться — хотелось бы иметь еще раздел /home. Впрочем, ничто не мешает разметить диск так, как удобно тебе. Кроме метода разбивки LVM, есть еще обычные разделы, динамический LVM и btrfs. Само разбиение применяется только после нажатия кнопки «Начать установку».
После нажатия на данную кнопку начнется создание файловых систем и установка пакетов — весь процесс в моем случае занял 21 минуту. Одновременно с этим процессом можно установить пароль root и создать нового пользователя. И если в первом нет ничего примечательного, то при создании пользователя стоит дать одно пояснение. «Сделать пользователя администратором» означает всего лишь, что пользователь будет включен в группу wheel. Помимо этого, в локализации данного диалогового окна была замечена глупейшая ошибка — «что бы» вместо «чтобы».
Установка наконец завершена. Жмем соответствующую кнопку и уходим на перезагрузку.
Первый запуск и первые впечатления
Первый запуск длится примерно секунд 20 — не столь уж и быстро, возможно, из‑за использования VirtualBox. После него нужно будет установить некоторые параметры kdump и подписки. Параметры по умолчанию для kdump вполне подходят, так что если тебе не нужно отправлять файлы дампов на удаленный компьютер, оставь все как есть.
После входа в систему понадобится сконфигурировать GNOME. Фактически, ничего менять здесь не нужно, так что описывать это смысла не имеет. Следом же будет предложено обновить пакеты и вновь перезагрузиться. Отмечу, к слову, что в этой версии для подтверждения привилегий наконец‑то используется пароль обычного пользователя. Впрочем, в отдельных случаях по‑прежнему требуется пароль root. И уже после этого можно начинать работу.
Видно, что разработчики постарались сделать миграцию с предыдущих версий GNOME как можно более безболезненной. Тем не менее некоторые вещи они убирать не стали — потому ли, что они являются фундаментальной частью третьего Гнома, или еще по какой причине — сие мне неведомо. К их числу относятся всплывающие при проведении мышью в определенной области экрана панели. Создание значков на рабочем столе, как и во всех остальных дистрибутивах, основанных на GNOME 3, не является интуитивно понятным.
Перейдем к основным приложениям. В качестве браузера используется Firefox 24 ESR — Red Hat, в отличие от Canonical, не обновляет его на самую свежую версию просто из‑за того, что она уже доступна. Проигрывание видео поддерживается из коробки, как и Java-апплеты (последние, впрочем, поддерживаются почти везде).
Email-клиент, как и в старых версиях, Evolution — стабильный, как и всегда. Как и многие другие почтовые клиенты, поддерживает автоматическое определение почтовых серверов при создании/добавлении учетной записи.
При попытке проиграть большинство локальных видеофайлов возникала проблема — отсутствуют кодеки. Впрочем, у Red Hat всегда была определенная позиция насчет них. Да и проигрывание музыки/видео на рабочей станции вещь совершенно не необходимая.
LibreOffice 4.1 без особых проблем открыл все мои docx-файлы, что и неудивительно. Файлы Visio тоже открылись без каких‑либо затруднений.
А вот Nautilus меня огорчил — в первую очередь тем, что обзор сети Windows в нем сбоил. Ладно бы нельзя было подключиться к NAS по протоколу SMB вообще, так нет — пункт ниже, «Подключиться...», был вполне работоспособен. Более того, Nautilus так подвесил GNOME, что я счел необходимым перезагрузиться и не возиться с прибиванием зависших процессов. Однако все перечисленное может быть связано с тем, что тип подключения к сети, используемый в VirtualBox, в данном случае был NAT.
Хотелось бы также вспомнить об ACL, списках прав доступа, поддержка которых в Linux есть давным‑давно, а вот стандартного графического интерфейса для их создания/редактирования не существует. В домашних условиях ACL, понятное дело, не нужен, но для корпоративных пользователей графический инструмент может быть весьма полезен.
В этой версии RHEL наконец появилось то, что во многих других дистрибутивах сделано уже давно, — автодополнение аргументов команд по нажатию клавиши табуляции. Забыл ты, допустим, ту или иную подкоманду systemctl — нажал Tab дважды, и появился их список.
Расскажу в двух словах и о KDE. При первом запуске его рабочий стол девственно чист — отсутствует даже корзина и ссылка на домашний каталог. Все нужно запускать из меню. Оно стандартно для четвертой версии KDE. Чересчур стандартно: при первом его вызове появляется «Избранное», в котором есть «Веб‑браузер». Так вот, при нажатии на него запускается вовсе не Firefox, что было бы логичным, а Konqueror. Нет, поймите меня правильно, против него я ничего не имею. Но сама политика корпоративного дистрибутива подразумевает некое единообразие, которого здесь не наблюдается. В остальном... KDE можно смело советовать тем, кого раздражает GNOME 3, пускай его и попытались привести к привычному виду.
Однако стоит перейти к внутренностям RHEL 7.
Под капотом
Ядро и ФС
Начнем с загрузчика. В качестве него используется Grub 2 с поддержкой UEFI и Secure Boot. Если раньше ты не имел дела с ним (маловероятно, но вдруг), нужно помнить, что ручками он уже не конфигурируется — для этого используются скрипты, на основе которых команда grub2-mkconfig генерирует файл конфигурации.
Ядро 3.10 в числе прочего поддерживает подписывание модулей, и в RHEL можно настроить параметры загрузки так, что неподписанные модули попросту невозможно будет загрузить. Для этого нужно добавить в параметр GRUB_CMDLINE_LINUX в файле /etc/default/grub строчку "enforcemodulesig=1".
Как я уже писал выше, в качестве ФС по умолчанию в седьмой версии корпоративного дистрибутива используется XFS. Стоит рассказать о ней подробнее. XFS была разработана в 1993 году компанией SGI для своего варианта UNIX — IRIX, и на тот момент это была действительно прогрессивная файловая система, поддерживающая работу с большими файлами (не забываем, что SGI специализировалась на графических рабочих станциях для создания видео с соответствующими требованиями). Годы спустя ее портировали и на Linux. Тем не менее еще в 2008 году были некоторые проблемы с производительностью (к настоящему времени они уже исправлены, в частности путем введения отложенной записи метаданных), и из‑за них ФС уступала в быстродействии ext4. На текущий момент в восьмиядерной конфигурации XFS быстрее ext4 в два с лишним раза. Отмечу также, что ext4 имеет унаследованные проблемы на архитектурном уровне. Если же сравнивать с Btrfs, XFS выглядит гораздо более зрелой. Взять те же сервисные утилиты — они могут никогда и не понадобиться, но быть обязаны. Однако в Btrfs отсутствует аналог debugfs, а в XFS он имеет место (xfs_db). Недостаток же у XFS тоже имеется — уменьшать размер ФС невозможно.
Сеть
Перейдем к сетевой подсистеме. Уже во время установки можно заметить, что сетевые интерфейсы именуются по‑новому. Связано это с тем, что в старой модели именования было неочевидно, какому физическому интерфейсу соответствует то или иное имя. Сейчас же имеется пять схем именования, которые выбираются systemd согласно определенным правилам. Схемы эти таковы:
- Имена назначаются на основе номера встроенной сетевой карты, предоставляемого прошивкой или BIOS. Эта схема наиболее приоритетна, если не подходит — переходим ко второй схеме. Пример — eno1, где eno расшифровывается как ethernet on-board.
- Имена назначаются на основе слота PCI-E, предоставляемого прошивкой, если эта схема не подходит — вступает в силу третья схема. Пример именования — ens1. Расшифровка буквы s — слот.
- Устройства именуются согласно физическому расположению устройства. Пример — enp0s3, где p0s3 — расположение на шине PCI.
- Если ни один из этих вариантов не подходит, применяется традиционная схема.
- Есть еще альтернативная схема наименования на основе MAC-адреса, например enx0800277b76b5.
В качестве средства конфигурирования сети (в том числе и всевозможной маршрутизации) используется Network Manager, что дает унификацию управления сетевыми устройствами. Старый способ, через скрипты ifcfg, по‑прежнему поддерживается.
Брандмауэром теперь служит firewalld, фактически являющийся оберткой вокруг iptables. Он обеспечивает динамическое добавление правил (без перечитывания всего конфигурационного файла) и имеет интерфейс D-Bus, что позволяет запрашивать некоторым службам открытие тех или иных портов или выводить уведомления в трее. Команда firewall-cmd позволяет также выполнять команды, аналогичные таковым в iptables. На мой взгляд, однако, единственным преимуществом является только поддержка D-Bus, язык же описания правил достаточно скуден. Так что, если нужен именно хороший брандмауэр, не премину порекомендовать нормальную обертку вокруг iptables под названием shorewall.
Инструментарий управления и мониторинга
Linux-системам давно не хватало некоего аналога WMI для абстрагирования от конфигурационных файлов. И такие инструменты начали появляться. Одно из них было введено в новую версию RHEL — OpenLMI (Linux Management Infrastructure). Если коротко, он состоит из двух частей — CIMOM, CIM Object Manager, которым является OpenPegasus, запускаемый на стороне управляемой системы и соответствующий спецификации WBEM, и клиентов, запускаемых на машине администратора и запрашивающих ту или иную операцию у данного брокера. Именно брокера — сам по себе, без провайдеров, предоставляющих ту или иную функциональность, OpenPegasus бесполезен. Перечислю некоторые из пакетов, содержащих провайдеры CIM:
- openlmi-account — управление пользователями;
- openlmi-logicalfile — чтение файлов и каталогов;
- openlmi-networking — управление сетью;
- openlmi-service — управление службами;
- openlmi-hardware — предоставление информации об оборудовании.
Основной язык написания провайдеров (иначе называемых агентами) — Python, хотя, разумеется, поддерживается и C/C++.
На стороне администратора запускается LMIShell, который представляет собой удобную CLI-оболочку, позволяющую, ко всему прочему, еще и писать скрипты. Поддержка WBEM и стандарта CIM автоматически подразумевает поддержку еще и CQL/WQL — подмножества SQL, разработанного специально для этого стандарта. Операторы, доступные в этом подмножестве: SELECT, WHERE, FROM, LIKE, логические (NOT, AND, OR). То есть в WQL доступно большинство базовых операторов SQL, кроме JOIN.
Однако с OpenLMI не все так радужно, как может показаться на первый взгляд. Технология это новая, провайдеры еще толком не разработаны, а безопасность оставляет желать лучшего — чего стоит только тот факт, что любой (любой!) пользователь, который имеет доступ к OpenLMI, может при наличии соответствующего провайдера без проблем посмотреть хеш пароля любого другого пользователя. Да, в том числе и root. И пока не прикроют хотя бы эту дырку — пользоваться им я бы крайне не рекомендовал.
Для мониторинга производительности в составе OProfile, который использует аппаратные возможности современных процессоров, появилась новая утилита — operf. Она позволяет замерять производительность отдельных приложений без root-привилегий и фактически служит заменой утилите opcontrol, которая ныне считается устаревшей, хотя и по‑прежнему присутствует в системе.
Не стоит забывать и о SystemTap, в котором появилась, к примеру, поддержка uprobes, что позволяет при использовании тапсетов обходиться меньшим числом переключений контекста. Кроме того, версия SystemTap, включенная в седьмой RHEL, поддерживает также мониторинг гостевых систем, запущенных в виртуальных машинах с использованием libvirt.
info
Замечу, что включение загрузки только подписанных модулей ядра может повлиять на SystemTap, который в результате работы генерирует свои.
Безопасность и логирование
В RHEL 7 появились и новые возможности, касающиеся безопасности. Помимо усовершенствований SELinux (в частности, добавление поддержки меток SELinux в NFS и новых доменов), Red Hat перешла на systemd, что позволяет использовать некоторые предоставляемые им преимуществ. Так, ранее каталог /tmp был публичным и в него мог писать любой процесс. Это, вкупе с некоторыми ошибками разработчиков, могло привести к атаке на те или иные демоны, в которых данные ошибки закрались. Появление systemd ввело поддержку PrivateTmp — у службы может быть отдельное пространство имен, подключенное к /tmp и не пересекающееся с другими такими же. Кроме того, сам по себе запуск служб через systemd более безопасен, чем запуск их вручную. И даже с помощью скриптов, поскольку, к примеру, переменные окружения во время загрузки отнюдь не те же самые, что во время работы.
Среди прочего, в RHEL появился графический инструмент SCAP Workbench — фронтенд для инструмента OpenSCAP, позволяющего сканировать локальную или удаленную систему на предмет соответствия требованиям, описанным в одном из стандартных форматов (OVAL или SCDDF).
Логирование в RHEL велется связкой journald + rsyslogd, формат лог‑файлов остался прежним, но можно включить и новые поля, введенные в journald. Одна из примечательных особенностей journald — FSS, Forward Secure Sealing, позволяющая с помощью криптографических методов удостовериться, что файлы журналов не были изменены. Работает это таким образом: генерируется пара открытый/закрытый ключ, первое сообщение в логах подписывается именно закрытым ключом, затем этот ключ передается админу и уничтожается, а логи, последующие с определенным интервалом, хешируются, для каждого последующего хеша используется текущий хеш и открытый ключ. Таким образом, атакующий не сможет изменить записи в лог‑файлах, свидетельствующие о проникновении, — он сможет лишь удалить файл журнала целиком, что, несомненно, будет замечено бдительным админом.
Заключение
RHEL 7 можно рассматривать как с точки зрения пользователя, так и с точки зрения бизнеса и удобства администрирования. Для домашнего пользователя, избалованного мультимедийными возможностями других продуктов, дистрибутив компании из Северной Каролины будет казаться слишком старомодным и в чем‑то даже неудобным — в частности, невозможно проигрывать видео и MP3, но данный дистрибутив и не предназначен для использования дома.
А вот с точки зрения бизнеса он идеален. Почти. В нем существуют и недостатки, самым существенным из которых я бы назвал упомянутую дыру в OpenLMI, — впрочем, пока этот инструментарий не устанавливается и не запускается по умолчанию, с данной брешью мириться можно. Также лично мне с новым Гномом было некомфортно работать даже в классическом стиле, хотя замечу опять же, что разработчики Red Hat, не в пример некоторым другим компаниям, постарались сделать переход на него как можно более безболезненным. KDE4 на фоне третьего Гнома выглядит более классическим, однако с точки зрения унифицированности в нем имеются некоторые шероховатости.
В общем и целом, седьмую версию данного дистрибутива можно смело рекомендовать тем компаниям, которые могут себе позволить подписку на него. Тем же, кто этого позволить себе не может, остается лишь ждать его клонов, благо к моменту выхода статьи в свет они уже должны появиться — Red Hat удивительно к ним лоялен.
redhat
kpatch
В RHEL 7 в качестве Technology Preview доступен kpatch, позволяющий на лету накладывать исправления на ядро. Он представляет собой модуль ядра (kpatch core) и набор утилит. Работает данная технология следующим образом: первым делом собирается ядро как с наложенным патчем, так и без него, затем эти две версии сравниваются, и на основе сравнения генерируется модуль ядра. В основе работы синхрофазотрона, тьфу, kpatch лежит технология ftrace, позволяющая в числе прочего ставить хуки на ядерные функции и перенаправлять их на другие функции.
Технология эта, конечно, крайне сырая и требует доработки. Но похоже, что у полупроприетарного ksplice от Oracle появился‑таки конкурент.