LoginSignup
0
0

More than 5 years have passed since last update.

[oVirt] Ubuntuでゲストエージェント ovirt-guest-agent が動かないときの解決策

Posted at

前フリ

oVirtの管理画面から仮想マシンを見ると
「ゲストエージェントが古い!」
と警告が表示されていることがあります。

どれどれと仮想マシンにログインして見てみると

# systemctl status ovirt-guest-agent
* ovirt-guest-agent.service - oVirt Guest Agent
   Loaded: loaded (/lib/systemd/system/ovirt-guest-agent.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2018-12-26 09:16:35 JST; 42min ago
  Process: 16439 ExecStart=/usr/bin/python /usr/share/ovirt-guest-agent/ovirt-guest-agent.py (code=exited, status=1/FAILURE)

ゲストエージェントが動いてない!

環境

  • oVirt 4.2.6
  • Ubuntu 16.04
  • oVirt Guest Agent 1.0.11.3-1.1

原因

ログを見てみます。

/var/log/ovirt-guest-agent/ovirt-guest-agent.log
OSError: [Errno 13] Permission denied: '/dev/virtio-ports/ovirt-guest-agent.0'

デバイスファイルのパーミッションが悪いみたいです。

# ls -l /dev/virtio-ports/
lrwxrwxrwx 1 root root 11 Dec 26 09:55 com.redhat.spice.0 -> ../vport2p3
lrwxrwxrwx 1 root root 11 Dec 26 09:55 org.qemu.guest_agent.0 -> ../vport2p2
lrwxrwxrwx 1 root root 11 Dec 26 09:55 ovirt-guest-agent.0 -> ../vport2p1

シンボリックリンクになっていました。実体は

# ls -l /dev/vport2p*
crw------- 1 root root 248, 1 Dec 26 09:55 /dev/vport2p1
crw------- 1 root root 248, 2 Dec 26 09:55 /dev/vport2p2
crw------- 1 root root 248, 3 Dec 26 09:55 /dev/vport2p3

rootユーザしか読み書きできないです。

解決策

udevへ指示するファイルを作成します。
ファイル名は、拡張子が.rulesであればなんでもよいです。

/etc/udev/rules.d/80-virtio-ports.rules
SUBSYSTEM=="virtio-ports",GROUP="ovirtagent",MODE="0660"

ルールを適用するには、udevadmコマンドを使います。

udevadm trigger --subsystem-match=virtio-ports

「デバイスが変わったよー」ということを通知しています。

無事パーミッションが設定されました。

# ls -l /dev/vport2p*
crw-rw---- 1 root ovirtagent 248, 1 Dec 26 09:55 /dev/vport2p1
crw-rw---- 1 root ovirtagent 248, 2 Dec 26 09:55 /dev/vport2p2
crw-rw---- 1 root ovirtagent 248, 3 Dec 26 09:55 /dev/vport2p3

落穂ひろい

udevルールの読み方

==で結ばれているところは検索条件です。上では、SUBSYSTEMがvirtio-portsにマッチするデバイスを意味します。

=で結ばれているところはアクションです。上では、オーナーグループとモードを設定しています。

詳しくは udev(7) マニュアルを見てください。

udevルールの作り方

検索条件として何を指定すればよいかは、udevadmコマンドで調べられます。

# udevadm info --query=all --attribute-walk --name=vport2p1
(...省略...)
  looking at device '/devices/pci0000:00/0000:00:05.0/virtio2/virtio-ports/vport2p1':
    KERNEL=="vport2p1"
    SUBSYSTEM=="virtio-ports"
    DRIVER==""
    ATTR{name}=="ovirt-guest-agent.0"
(...省略...)

udevadmコマンドに調べたいデバイス名を渡してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0