Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Podziel się wiedzą: systemd

Tomasz
October 14, 2010

Podziel się wiedzą: systemd

Wewnętrzna prezentacja dla pracowników UTC Fire&Security.

Tomasz

October 14, 2010
Tweet

More Decks by Tomasz

Other Decks in Technology

Transcript

  1. systemd
    wymyślmy jeszcze jedno koło
    Podziel Się Wiedzą
    Podziel Się Wiedzą
    Tomasz Torcz
    Tomasz Torcz


    View full-size slide

  2. Rozdzielnik
    co to jest init?
    jaką ma rolę?
    dlaczego systemd?

    View full-size slide

  3. SystemV init
    PID 1
    /etc/inittab
    sysinit:
    initdefault:
    http://en.wikipedia.org/wiki/Init#Other_styles

    View full-size slide

  4. Mamo, skąd się biorą procesy?
    - boot
    - cron, at
    - inetd
    - D-Bus activation

    View full-size slide

  5. Autorzy
    systemd% git log --format=%an | sort -u | wc -l
    37
    Kay Sievers, Lennart Poettering >10 commitów
    Pomysły: reszta świata

    View full-size slide

  6. Usługi to nie wszystko
    usługi
    gniazda
    punkty mountowania
    pliki, katalogi
    upływ czasu
    urządzenia, cele

    View full-size slide

  7. Ale mu już mamy koło!
    /etc/init.d/*
    /etc/fstab
    /etc/init/*
    kernel command line
    (emergency, single itp.)

    View full-size slide

  8. Usługi
    zależności
    restartowanie
    demonizacja
    limity (CPU, I/O, mem)

    View full-size slide

  9. Usługi - kontrola
    WorkingDirectory= RootDirectory= User= Group=
    SupplementaryGroups= Nice= OOMScoreAdjust=
    IOSchedulingClass= IOSchedulingPriority= CPUSchedulingPolicy=
    CPUSchedulingPriority= CPUSchedulingResetOnFork=
    CPUAffinity= UMask= Environment= EnvironmentFile=
    StandardInput= StandardOutput= StandardError= TTYPath=
    SyslogIdentifer= SyslogFacility= SyslogLevel= SyslogLevelPrefix=
    TimerSlackNSec= LimitCPU= LimitFSIZE= LimitDATA=
    LimitSTACK= LimitCORE= LimitRSS= LimitNOFILE= LimitAS=
    LimitNPROC= LimitMEMLOCK= LimitLOCKS=
    LimitSIGPENDING= LimitMSGQUEUE= LimitNICE=
    LimitRTPRIO= LimitRTTIME= PAMName= TCPWrapName=
    Capabilities= SecureBits= CapabilityBoundingSetDrop=
    ControlGroup= ReadWriteDirectories= ReadOnlyDirectories=
    InaccessibleDirectories= PrivateTmp= MountFlags=

    View full-size slide

  10. Gniazda
    kompatybilność (x)inetd
    niezrywalne połączenia
    przykład: syslog
    pełna kontrola

    View full-size slide

  11. Gniazda - kontrola
    BindIPv6Only= Backlog=
    BindToDevice= SocketMode=
    MaxConnections= KeepAlive=
    Priority= ReceiveBuffer=
    SendBuffer= IPTOS= IPTTL= Mark=
    PipeSize= FreeBind= TCPCongestion=

    View full-size slide

  12. Urządzenia
    współpraca z udev
    start aplikacji zależny od sprzętu

    View full-size slide

  13. Timery
    cykliczne czynności:
    czyszczenie
    raportowanie
    w przyszłości cron

    View full-size slide

  14. Wymagania
    jądro 2.6.32
    devtmpfs
    D-Bus 1.4.0
    udev 151

    View full-size slide

  15. Podsumowując
    lepsza kontrola – restarty, limity
    OnFailure
    pilnowanie zależności
    mniej kodu: demonizowanie, sockety

    View full-size slide

  16. Podsumowując 2
    zintegrowanie usług dystrybucyjnych
    (random seed, clock)
    ujednolicenie skryptów startowych
    szybki start, zintegrowany readahead

    View full-size slide

  17. avahi-daemon.socket
    [Unit]
    Description=Avahi mDNS/DNS-SD Stack Activation Socket
    [Socket]
    ListenStream=/var/run/avahi-daemon/socket
    [Install]
    WantedBy=sockets.target

    View full-size slide

  18. avahi-daemon.service
    [Unit]
    Description=Avahi mDNS/DNS-SD Stack
    Requires=avahi-daemon.socket
    After=syslog.target
    [Service]
    Type=dbus
    BusName=org.freedesktop.Avahi
    ExecStart=/usr/sbin/avahi-daemon -s
    ExecReload=/usr/sbin/avahi-daemon -r
    NotifyAccess=main
    [Install]
    WantedBy=multi-user.target
    Also=avahi-daemon.socket

    View full-size slide

  19. systemctl status
    # systemctl status avahi-daemon.service
    avahi-daemon.service - Avahi mDNS/DNS-SD Stack
    Loaded: loaded (/lib/systemd/system/avahi-daemon.service)
    Active: active (running) since [Sat, 18 Sep 2010 23:32:54 +0200; 16h ago]
    Main PID: 3300 (avahi-daemon)
    Status: "Server startup complete. Host name is dhartha.local. Local service
    cookie is 966442585."
    CGroup: name=systemd:/systemd-1/avahi-daemon.service
    ├ 3300 avahi-daemon: running [dhartha.local]
    └ 3305 avahi-daemon: chroot helper

    View full-size slide

  20. status mount
    # systemctl status boot.mount
    boot.mount - /boot
    Loaded: loaded
    Active: active (mounted) since [Sat, 18 Sep 2010 23:32:54 +0200; 16h ago]
    Where: /boot
    CGroup: name=systemd:/systemd-1/boot.mount

    View full-size slide

  21. systemd:
    wymyślmy jeszcze jedno koło
    Podziel Się Wiedzą
    Podziel Się Wiedzą
    Tomasz Torcz
    Tomasz Torcz


    View full-size slide

  22. na koniec co nam daje
    lepsza kontrola – restarty, limity
    pilnowanie zależnosci
    nie trzeba pisac kodu do demonizowania,
    otwierania socketow itp.
    typowo dystrybucyje (random seed, clock)
    zintegrowane
    ujednolicenie skryptow startowych miedzy
    dystrybucjami
    syslog lekarstwo na raka
    OnFailure
    szybki start, zintegrowany readahead

    View full-size slide