Systemd, cgroup e LXC

1

Depois de muita tentativa e erro, finalmente pude colocar o Spice trabalhando em um container Fedora LXC no Ubuntu 14.04. No entanto, o mesmo não pode ser dito de um contêiner do Ubuntu 14.04. Parece que o problema está na implementação fracionária do systemd do Ubuntu, enquanto a implementação completa do Fedora (mesmo com restrições LXC) não parece ter um problema neste caso.

Meu caso de teste depende das fontes Spice vdagent git. Uma vez que o spice-vdagent se conecta ao spice-vdagentd, o vdagentd tenta obter informações de sessão para o PID vdagent via chamada libsystemd-login0 sd_pid_get_session . Essa chamada retorna com "Nenhum arquivo ou diretório", impedindo que o formulário Spice funcione corretamente. Depois de vasculhar a fonte do libsystemd-login0, parece que esta chamada é dependente do cgroup systemd.

Infelizmente, este cgroup não existe dentro de um contêiner devido ao arquivo /etc/init/systemd-logind.conf explicitamente não montar o cgroup quando executado em um contêiner. Depois de remover a verificação do LXC e reinicializar o contêiner LXC, ficamos com um cgroup montado em / sys / fs / cgroup / systemd. Tudo parece estar bem até examinar o /sys/fs/cgroup/systemd/cgroup.procs - está vazio, assim como todos os outros arquivos cgroup.procs abaixo. O comentário no systemd-logind.conf acima dos estados de verificação do LXC "montar o cgroup não funciona no LXC, lá ele usa o cgmanager", mas isso não me dá nenhuma idéia de como deve ser feito, ou como pode ser contornado.

Não tenho certeza se esse é um problema específico do LXC (talvez o LXC esteja impedindo que ele funcione corretamente?) ou se é um problema de log do systemd. Devo esclarecer que, por enquanto, atribuí meu contêiner Ubuntu 14.40 LXC ao perfil 'irrestrito' para garantir que não haja algum tipo de problema de permissões.

Alguém tem algum insight sobre o que pode ser feito para obter o cgroup systemd dentro do contêiner LXC funcionando corretamente para que eu possa usar Spice alegremente?

EDIT: Depois de verificar o meu sistema host, o cgroup systemd parece estar funcionando muito bem, hm ...

Apesar da falta de systemd-cgls, ainda posso fornecer algumas informações semelhantes:

Aqui está uma árvore do diretório / sys / fs / cgroup / systemd:

ubuntu@ubuntu2:/sys/fs/cgroup/systemd$ tree
.
├── cgroup.clone_children
├── cgroup.event_control
├── cgroup.procs
├── cgroup.sane_behavior
├── lxc
│   ├── cgroup.clone_children
│   ├── cgroup.event_control
│   ├── cgroup.procs
│   ├── notify_on_release
│   ├── tasks
│   └── ubuntu2
│       ├── cgroup.clone_children
│       ├── cgroup.event_control
│       ├── cgroup.procs
│       ├── notify_on_release
│       ├── tasks
│       └── user
│           ├── 1000.user
│           │   ├── c1.session
│           │   │   ├── cgroup.clone_children
│           │   │   ├── cgroup.event_control
│           │   │   ├── cgroup.procs
│           │   │   ├── notify_on_release
│           │   │   └── tasks
│           │   ├── cgroup.clone_children
│           │   ├── cgroup.event_control
│           │   ├── cgroup.procs
│           │   ├── notify_on_release
│           │   └── tasks
│           ├── cgroup.clone_children
│           ├── cgroup.event_control
│           ├── cgroup.procs
│           ├── notify_on_release
│           └── tasks
├── notify_on_release
├── release_agent
├── tasks
└── user
    ├── 1000.user
    │   ├── c2.session
    │   │   ├── cgroup.clone_children
    │   │   ├── cgroup.event_control
    │   │   ├── cgroup.procs
    │   │   ├── notify_on_release
    │   │   └── tasks
    │   ├── cgroup.clone_children
    │   ├── cgroup.event_control
    │   ├── cgroup.procs
    │   ├── notify_on_release
    │   └── tasks
    ├── cgroup.clone_children
    ├── cgroup.event_control
    ├── cgroup.procs
    ├── notify_on_release
    └── tasks

E um mapeamento de PIDs por cgroup:

./lxc/ubuntu2/user/1000.user/c1.session/cgroup.procs: 
    860 /bin/login -- 2596 grep --color=auto 860 /bin/login -- 2596 grep --color=auto 860
    1281 -bash 2605 grep --color=auto 1281 -bash 2605 grep --color=auto 1281
    2614 grep --color=auto 2593 grep --color=auto 2593
./lxc/ubuntu2/user/1000.user/cgroup.procs: 
./lxc/ubuntu2/user/cgroup.procs: 
./lxc/ubuntu2/cgroup.procs: 
    1 /sbin/init 194 upstart-udev-bridge --daemon 431 avahi-daemon: running [ubuntu2.local] 487 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0 513 upstart-file-bridge --daemon 767 /usr/lib/policykit-1/polkitd --no-debug 811 /usr/sbin/spice-vdagentd -f -s /tmp/xspice-virtio -u /tmp/xspice-uinput -d 862 /sbin/getty -8 38400 tty1 871 /usr/lib/accountsservice/accounts-daemon 903 lightdm --session-child 16 20 915 /bin/sh /usr/lib/lightdm/lightdm-greeter-session /usr/sbin/unity-greeter 921 //bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session 941 /usr/lib/gvfs/gvfsd 958 lightdm --session-child 12 20 961 init --user --startup-event indicator-services-start 971 /usr/lib/x86_64-linux-gnu/indicator-datetime/indicator-datetime-service 1042 /usr/bin/pulseaudio --start --log-target=syslog 1045 /usr/lib/rtkit/rtkit-daemon 1065 /usr/lib/x86_64-linux-gnu/gconf/gconfd-2 1069 /usr/lib/x86_64-linux-gnu/notify-osd 1222 /usr/lib/colord/colord 1281 -bash 2626 grep --color=auto 1 /sbin/init 194 upstart-udev-bridge --daemon 431 avahi-daemon: running [ubuntu2.local] 487 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0 513 upstart-file-bridge --daemon 767 /usr/lib/policykit-1/polkitd --no-debug 811 /usr/sbin/spice-vdagentd -f -s /tmp/xspice-virtio -u /tmp/xspice-uinput -d 862 /sbin/getty -8 38400 tty1 871 /usr/lib/accountsservice/accounts-daemon 903 lightdm --session-child 16 20 915 /bin/sh /usr/lib/lightdm/lightdm-greeter-session /usr/sbin/unity-greeter 921 //bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session 941 /usr/lib/gvfs/gvfsd 958 lightdm --session-child 12 20 961 init --user --startup-event indicator-services-start 971 /usr/lib/x86_64-linux-gnu/indicator-datetime/indicator-datetime-service 1042 /usr/bin/pulseaudio --start --log-target=syslog 1045 /usr/lib/rtkit/rtkit-daemon 1065 /usr/lib/x86_64-linux-gnu/gconf/gconfd-2 1069 /usr/lib/x86_64-linux-gnu/notify-osd 1222 /usr/lib/colord/colord 1281 -bash 2626 grep --color=auto 1
    194 upstart-udev-bridge --daemon 2635 grep --color=auto 194 upstart-udev-bridge --daemon 2635 grep --color=auto 194
    202 dbus-daemon --system --fork 2644 grep --color=auto 202 dbus-daemon --system --fork 2644 grep --color=auto 202
    252 /lib/systemd/systemd-udevd --daemon 2653 grep --color=auto 252 /lib/systemd/systemd-udevd --daemon 2653 grep --color=auto 252
    320 /lib/systemd/systemd-logind 2662 grep --color=auto 320 /lib/systemd/systemd-logind 2662 grep --color=auto 320
    402 /usr/sbin/cupsd -f 2671 grep --color=auto 402 /usr/sbin/cupsd -f 2671 grep --color=auto 402
    420 rsyslogd 2680 grep --color=auto 420 rsyslogd 2680 grep --color=auto 420
    431 avahi-daemon: running [ubuntu2.local] 2689 grep --color=auto 431 avahi-daemon: running [ubuntu2.local] 2689 grep --color=auto 431
    440 avahi-daemon: chroot helper 2698 grep --color=auto 440 avahi-daemon: chroot helper 2698 grep --color=auto 440
    459 /usr/lib/cups/notifier/dbus dbus:// 2707 grep --color=auto 459 /usr/lib/cups/notifier/dbus dbus:// 2707 grep --color=auto 459
    460 /usr/lib/cups/notifier/dbus dbus:// 2716 grep --color=auto 460 /usr/lib/cups/notifier/dbus dbus:// 2716 grep --color=auto 460
    487 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0 2725 grep --color=auto 487 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0 2725 grep --color=auto 487
    505 upstart-socket-bridge --daemon 2734 grep --color=auto 505 upstart-socket-bridge --daemon 2734 grep --color=auto 505
    513 upstart-file-bridge --daemon 2743 grep --color=auto 513 upstart-file-bridge --daemon 2743 grep --color=auto 513
    643 /usr/sbin/ModemManager 2752 grep --color=auto 643 /usr/sbin/ModemManager 2752 grep --color=auto 643
    690 NetworkManager NetworkManager
    692 /sbin/getty -8 38400 tty4 2770 grep --color=auto 692 /sbin/getty -8 38400 tty4 2770 grep --color=auto 692
    702 /sbin/getty -8 38400 tty2 2779 grep --color=auto 702 /sbin/getty -8 38400 tty2 2779 grep --color=auto 702
    703 /sbin/getty -8 38400 tty3 /sbin/getty -8 38400 tty3
    739 /usr/sbin/sshd -D 2797 grep --color=auto 739 /usr/sbin/sshd -D 2797 grep --color=auto 739
    754 acpid -c /etc/acpi/events -s /var/run/acpid.socket 2806 grep --color=auto 754 acpid -c /etc/acpi/events -s /var/run/acpid.socket 2806 grep --color=auto 754
    755 cron 2815 grep --color=auto 755 cron 2815 grep --color=auto 755
    756 whoopsie 2824 grep --color=auto 756 whoopsie 2824 grep --color=auto 756
    757 atd 2833 grep --color=auto 757 atd 2833 grep --color=auto 757
    767 /usr/lib/policykit-1/polkitd --no-debug /usr/lib/policykit-1/polkitd --no-debug
    772 /usr/sbin/kerneloops 2851 grep --color=auto 772 /usr/sbin/kerneloops 2851 grep --color=auto 772
    811 /usr/sbin/spice-vdagentd -f -s /tmp/xspice-virtio -u /tmp/xspice-uinput -d 2860 grep --color=auto 811 /usr/sbin/spice-vdagentd -f -s /tmp/xspice-virtio -u /tmp/xspice-uinput -d 2860 grep --color=auto 811
    847 lightdm 2869 grep --color=auto 847 lightdm 2869 grep --color=auto 847
    862 /sbin/getty -8 38400 tty1 2878 grep --color=auto 862 /sbin/getty -8 38400 tty1 2878 grep --color=auto 862
    868 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch 2887 grep --color=auto 868 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch 2887 grep --color=auto 868
    871 /usr/lib/accountsservice/accounts-daemon 2896 grep --color=auto 871 /usr/lib/accountsservice/accounts-daemon 2896 grep --color=auto 871
    897 /usr/sbin/cups-browsed 2905 grep --color=auto 897 /usr/sbin/cups-browsed 2905 grep --color=auto 897
    903 lightdm --session-child 16 20 2914 grep --color=auto 903 lightdm --session-child 16 20 2914 grep --color=auto 903
    915 /bin/sh /usr/lib/lightdm/lightdm-greeter-session /usr/sbin/unity-greeter 2923 grep --color=auto 915 /bin/sh /usr/lib/lightdm/lightdm-greeter-session /usr/sbin/unity-greeter 2923 grep --color=auto 915
    921 //bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session 2932 grep --color=auto 921 //bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session 2932 grep --color=auto 921
    922 /usr/sbin/unity-greeter 2941 grep --color=auto 922 /usr/sbin/unity-greeter 2941 grep --color=auto 922
    924 /usr/lib/at-spi2-core/at-spi-bus-launcher --launch-immediately 2950 grep --color=auto 924 /usr/lib/at-spi2-core/at-spi-bus-launcher --launch-immediately 2950 grep --color=auto 924
    930 /bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3 2959 grep --color=auto 930 /bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3 2959 grep --color=auto 930
    936 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session 2968 grep --color=auto 936 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session 2968 grep --color=auto 936
    941 /usr/lib/gvfs/gvfsd 2977 grep --color=auto 941 /usr/lib/gvfs/gvfsd 2977 grep --color=auto 941
    949 /usr/lib/dconf/dconf-service 2986 grep --color=auto 949 /usr/lib/dconf/dconf-service 2986 grep --color=auto 949
    958 lightdm --session-child 12 20 2995 grep --color=auto 958 lightdm --session-child 12 20 2995 grep --color=auto 958
    961 init --user --startup-event indicator-services-start 3004 grep --color=auto 961 init --user --startup-event indicator-services-start 3004 grep --color=auto 961
    963 nm-applet 3013 grep --color=auto 963 nm-applet 3013 grep --color=auto 963
    966 /usr/lib/x86_64-linux-gnu/indicator-messages/indicator-messages-service 3022 grep --color=auto 966 /usr/lib/x86_64-linux-gnu/indicator-messages/indicator-messages-service 3022 grep --color=auto 966
    967 /usr/lib/x86_64-linux-gnu/indicator-bluetooth/indicator-bluetooth-service 3031 grep --color=auto 967 /usr/lib/x86_64-linux-gnu/indicator-bluetooth/indicator-bluetooth-service 3031 grep --color=auto 967
    968 /usr/lib/x86_64-linux-gnu/indicator-power/indicator-power-service /usr/lib/x86_64-linux-gnu/indicator-power/indicator-power-service
    971 /usr/lib/x86_64-linux-gnu/indicator-datetime/indicator-datetime-service 3049 grep --color=auto 971 /usr/lib/x86_64-linux-gnu/indicator-datetime/indicator-datetime-service 3049 grep --color=auto 971
    978 /usr/lib/x86_64-linux-gnu/indicator-keyboard-service --use-gtk 3058 grep --color=auto 978 /usr/lib/x86_64-linux-gnu/indicator-keyboard-service --use-gtk 3058 grep --color=auto 978
    979 /usr/lib/unity-settings-daemon/unity-settings-daemon 3067 grep --color=auto 979 /usr/lib/unity-settings-daemon/unity-settings-daemon 3067 grep --color=auto 979
    985 /usr/lib/upower/upowerd 3076 grep --color=auto 985 /usr/lib/upower/upowerd 3076 grep --color=auto 985
    986 /usr/lib/x86_64-linux-gnu/indicator-sound/indicator-sound-service 3085 grep --color=auto 986 /usr/lib/x86_64-linux-gnu/indicator-sound/indicator-sound-service 3085 grep --color=auto 986
    987 /usr/lib/x86_64-linux-gnu/indicator-session/indicator-session-service 3094 grep --color=auto 987 /usr/lib/x86_64-linux-gnu/indicator-session/indicator-session-service 3094 grep --color=auto 987
    993 /usr/lib/x86_64-linux-gnu/indicator-application/indicator-application-service 3103 grep --color=auto 993 /usr/lib/x86_64-linux-gnu/indicator-application/indicator-application-service 3103 grep --color=auto 993
    1042 /usr/bin/pulseaudio --start --log-target=syslog 3112 grep --color=auto 1042 /usr/bin/pulseaudio --start --log-target=syslog 3112 grep --color=auto 1042
    1045 /usr/lib/rtkit/rtkit-daemon 3121 grep --color=auto 1045 /usr/lib/rtkit/rtkit-daemon 3121 grep --color=auto 1045
    1065 /usr/lib/x86_64-linux-gnu/gconf/gconfd-2 3130 grep --color=auto 1065 /usr/lib/x86_64-linux-gnu/gconf/gconfd-2 3130 grep --color=auto 1065
    1069 /usr/lib/x86_64-linux-gnu/notify-osd 3139 grep --color=auto 1069 /usr/lib/x86_64-linux-gnu/notify-osd 3139 grep --color=auto 1069
    1222 /usr/lib/colord/colord 3148 grep --color=auto 1222 /usr/lib/colord/colord 3148 grep --color=auto 1222
./lxc/cgroup.procs: 
./user/1000.user/c2.session/cgroup.procs: 
./user/1000.user/cgroup.procs: 
./user/cgroup.procs: 
./cgroup.procs: 
    
por Chuck R 29.11.2014 / 09:12

2 respostas

0

dê uma olhada aqui:

link

Esse é o blog de um dos desenvolvedores do LXC.

Ele também pode estar interessado em sua abordagem / progresso.

    
por bmullan 05.11.2015 / 01:08
0

Eu fiz spice-vdagentd funcionar, executando-a com a opção "-X" para desativar systemd-login integration.

link

    
por Grzegorz Żur 05.02.2017 / 13:44