пятница, 22 июня 2012 г.

systemd для администраторов, часть 1

Перед вами мой вариант перевода первой статьи из серии "systemd for Administrators". Перевод машинный, но с некоторыми исправлениями.
Автор оригинала: Леннарт Поттеринг (Lennart Poettering).
Ссылка: http://0pointer.de/blog/projects/systemd-for-admins-1.
Дата: 23.08.2010.

Возможно вам известно, что systemd - это новая система инициализации Fedora (с версии 14 (прим. пер. - на самом деле с 15)), также сейчас она адаптируется для нескольких других дистрибутивов (например, OpenSUSE). systemd предлагает ряд изменений и новых возможностей, выводящих процесс администрирования на новый уровень. Это первая часть из серии статей, которые я планирую публиковать раз в неделю, начиная со следующего месяца. Каждая запись будет посвящена одной из новых функций systemd. Многие из них просты, а значит эти статьи будут интересны широкой аудитории. Однако, время от времени мы будем рассматривать новые возможности systemd более подробно. 

Проверка загрузки системы

Традиционно, при загрузке Linux системы на экране пробегает множество различных сообщений. В результате нашей работы по ускорению и распараллеливанию загрузки эти сообщения видны на экране в течение гораздо меньшего промежутка времени и читать их становится значительно сложнее, если они конечно они не скрываются графической заставкой splash. Тем не менее, информация о загрузке была и остается очень актуальной, т.к. показывает удалось ли запустить каждую службу (отмечаются зеленым [OK] или красным [FAILED]). Для улучшения ситуации с быстро загружающимися машинами и для того чтобы сделать эту информацию доступной во время работы, мы добавили в systemd возможность отслеживания и запоминания для каждой службы следующей информации: успешно ли он запустился, завершился ли он с ненулевым кодом возврата, истек ли таймаут, или он завершился ненормально (segfaulting и т.п.), как при запуске, так и во время выполнения. Просто набрав systemctl в терминале, вы можете запросить состояние всех служб, как родных для systemd, так и SysV/LSB:
[root@lambda] ~# systemctl
UNIT                                          LOAD   ACTIVE       SUB     JOB  DESCRIPTION
dev-hugepages.automount                       loaded active       running      Huge Pages File System Automount Point
dev-mqueue.automount                          loaded active       running      POSIX Message Queue File System Automount Point
proc-sys-fs-binfmt_misc.automount             loaded active       waiting      Arbitrary Executable File Formats File System Automount Point
sys-kernel-debug.automount                    loaded active       waiting      Debug File System Automount Point
sys-kernel-security.automount                 loaded active       waiting      Security File System Automount Point
sys-devices-pc...0000:02:00.0-net-eth0.device loaded active       plugged      82573L Gigabit Ethernet Controller
[...]
sys-devices-virtual-tty-tty9.device           loaded active       plugged      /sys/devices/virtual/tty/tty9
-.mount                                       loaded active       mounted      /
boot.mount                                    loaded active       mounted      /boot
dev-hugepages.mount                           loaded active       mounted      Huge Pages File System
dev-mqueue.mount                              loaded active       mounted      POSIX Message Queue File System
home.mount                                    loaded active       mounted      /home
proc-sys-fs-binfmt_misc.mount                 loaded active       mounted      Arbitrary Executable File Formats File System
abrtd.service                                 loaded active       running      ABRT Automated Bug Reporting Tool
accounts-daemon.service                       loaded active       running      Accounts Service
acpid.service                                 loaded active       running      ACPI Event Daemon
atd.service                                   loaded active       running      Execution Queue Daemon
auditd.service                                loaded active       running      Security Auditing Service
avahi-daemon.service                          loaded active       running      Avahi mDNS/DNS-SD Stack
bluetooth.service                             loaded active       running      Bluetooth Manager
console-kit-daemon.service                    loaded active       running      Console Manager
cpuspeed.service                              loaded active       exited       LSB: processor frequency scaling support
crond.service                                 loaded active       running      Command Scheduler
cups.service                                  loaded active       running      CUPS Printing Service
dbus.service                                  loaded active       running      D-Bus System Message Bus
getty@tty2.service                            loaded active       running      Getty on tty2
getty@tty3.service                            loaded active       running      Getty on tty3
getty@tty4.service                            loaded active       running      Getty on tty4
getty@tty5.service                            loaded active       running      Getty on tty5
getty@tty6.service                            loaded active       running      Getty on tty6
haldaemon.service                             loaded active       running      Hardware Manager
hdapsd@sda.service                            loaded active       running      sda shock protection daemon
irqbalance.service                            loaded active       running      LSB: start and stop irqbalance daemon
iscsi.service                                 loaded active       exited       LSB: Starts and stops login and scanning of iSCSI devices.
iscsid.service                                loaded active       exited       LSB: Starts and stops login iSCSI daemon.
livesys-late.service                          loaded active       exited       LSB: Late init script for live image.
livesys.service                               loaded active       exited       LSB: Init script for live image.
lvm2-monitor.service                          loaded active       exited       LSB: Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
mdmonitor.service                             loaded active       running      LSB: Start and stop the MD software RAID monitor
modem-manager.service                         loaded active       running      Modem Manager
netfs.service                                 loaded active       exited       LSB: Mount and unmount network filesystems.
NetworkManager.service                        loaded active       running      Network Manager
ntpd.service                                  loaded maintenance  maintenance  Network Time Service
polkitd.service                               loaded active       running      Policy Manager
prefdm.service                                loaded active       running      Display Manager
rc-local.service                              loaded active       exited       /etc/rc.local Compatibility
rpcbind.service                               loaded active       running      RPC Portmapper Service
rsyslog.service                               loaded active       running      System Logging Service
rtkit-daemon.service                          loaded active       running      RealtimeKit Scheduling Policy Service
sendmail.service                              loaded active       running      LSB: start and stop sendmail
sshd@172.31.0.53:22-172.31.0.4:36368.service  loaded active       running      SSH Per-Connection Server
sysinit.service                               loaded active       running      System Initialization
systemd-logger.service                        loaded active       running      systemd Logging Daemon
udev-post.service                             loaded active       exited       LSB: Moves the generated persistent udev rules to /etc/udev/rules.d
udisks.service                                loaded active       running      Disk Manager
upowerd.service                               loaded active       running      Power Manager
wpa_supplicant.service                        loaded active       running      Wi-Fi Security Service
avahi-daemon.socket                           loaded active       listening    Avahi mDNS/DNS-SD Stack Activation Socket
cups.socket                                   loaded active       listening    CUPS Printing Service Sockets
dbus.socket                                   loaded active       running      dbus.socket
rpcbind.socket                                loaded active       listening    RPC Portmapper Socket
sshd.socket                                   loaded active       listening    sshd.socket
systemd-initctl.socket                        loaded active       listening    systemd /dev/initctl Compatibility Socket
systemd-logger.socket                         loaded active       running      systemd Logging Socket
systemd-shutdownd.socket                      loaded active       listening    systemd Delayed Shutdown Socket
dev-disk-by\x1...x1db22a\x1d870f1adf2732.swap loaded active       active       /dev/disk/by-uuid/fd626ef7-34a4-4958-b22a-870f1adf2732
basic.target                                  loaded active       active       Basic System
bluetooth.target                              loaded active       active       Bluetooth
dbus.target                                   loaded active       active       D-Bus
getty.target                                  loaded active       active       Login Prompts
graphical.target                              loaded active       active       Graphical Interface
local-fs.target                               loaded active       active       Local File Systems
multi-user.target                             loaded active       active       Multi-User
network.target                                loaded active       active       Network
remote-fs.target                              loaded active       active       Remote File Systems
sockets.target                                loaded active       active       Sockets
swap.target                                   loaded active       active       Swap
sysinit.target                                loaded active       active       System Initialization

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.
JOB    = Pending job for the unit.

221 units listed. Pass --all to see inactive units, too.
[root@lambda] ~#
(или на gist.github.com)
Вывод выше сокращен и удалены несколько строк, не относящиеся к теме статьи.

Посмотрите на колонку ACTIVE, там отображается статус службы (на самом деле любого юнита systemd, которые могут быть больше, чем просто службами, но мы рассмотрим их в будущих статьях) которая может быть активна (active), т.е. работает, неактивна (inactive), т.е. не запущена, или же в любом другим состоянии. Если вы внимательно посмотрите, то увидите строку, помеченную как "maintenance" и выделенную красным. Это значит, что службу не удалось запустить или же произошла какая-то ошибка. В нашем примере это ntpd. Теперь, давайте узнаем, что на самом деле случилось с ntpd, воспользовавшись командой systemctl status:
[root@lambda] ~# systemctl status ntpd.service
ntpd.service - Network Time Service
      Loaded: loaded (/etc/systemd/system/ntpd.service)
      Active: maintenance
        Main: 953 (code=exited, status=255)
      CGroup: name=systemd:/systemd-1/ntpd.service
[root@lambda] ~#
Отсюда видно, что NTP остановлен во время выполнения (у процесса был PID 953), а также то, что процесс завершился с кодом возврата 255.

В будущих версиях systemd мы планируем добавить возможность вызова ABRT. Как только это улучшение будет реализовано, systemctl status будет отображать для аварийно завершившегося процесса соответствующий аварийный дамп в ABRT.

Резюме: использование systemctl и systemctl status это современная, более полная замена для традиционных загрузочных сообщений SysV служб. systemctl status не только собирает больше информации об ошибках, но также показывает ошибки во время выполнения служб в дополнение к ошибкам при загрузке.

На этой неделе это все. Обязательно вернемся на следующей неделе с новой статьей о systemd для администраторов!

Полезные ссылки

  1. Леннарт Поттеринг в Google+.
  2. Оригинал статьи.
  3. Перевод на OpenNET.ru.