VMware vSphere環境にUbuntu Server 20.04のVMを構築している最中、syslogを見たくなって開いてみたらmultipathdのログで埋まっていました。数秒ごとに以下のようなログが出力され続けています。
Jul 2 23:59:45 hoge multipathd[757]: sda: failed to get udev uid: Invalid argument Jul 2 23:59:45 hoge multipathd[757]: sda: failed to get sysfs uid: Invalid argument Jul 2 23:59:45 hoge multipathd[757]: sda: failed to get sgio uid: No such file or directory Jul 2 23:59:46 hoge multipathd[757]: sdb: add missing path Jul 2 23:59:46 hoge multipathd[757]: sdb: failed to get udev uid: Invalid argument Jul 2 23:59:46 hoge multipathd[757]: sdb: failed to get sysfs uid: Invalid argument Jul 2 23:59:46 hoge multipathd[757]: sdb: failed to get sgio uid: No such file or directory
検索すると、すでにask ubuntuで同様の質問記事が上がっていました。回答いわく、udevが/dev/disk/by-id以下にデバイスのリンクを作るためのUUID情報をVMwareが渡していないことが原因のようです。
実際に/dev/disk/by-idを見ると、ディスクデバイスのリンクはLVMや仮想CDドライブ以外見当たりませんでした。
解決するには、VMの電源を落として、VMware側で以下のオプションを追加します。
disk.EnableUUID = "TRUE"
vSphere Web Clientの場合は、[仮想マシンの編集]画面を開いて、[仮想マシンオプション]タブから[詳細]内の設定パラメータで[設定の編集]を開いてオプションの[名前]と[値]を書き込みます。
設定後、VMを起動すると/dev/disk/by-id以下にディスクデバイスへのリンクが生成されるようになりました。
$ ls /dev/disk/by-id ata-VMware_Virtual_IDE_CDROM_Drive_00000000000000000001 scsi-36000c2959935220f8bdd188073638082 scsi-36000c2959935220f8bdd188073638082-part1 scsi-36000c2959935220f8bdd188073638082-part2 scsi-36000c29b234f6842965889fd939c8210 scsi-36000c29b234f6842965889fd939c8210-part1 scsi-36000c29b234f6842965889fd939c8210-part9
記事を読んだ当初は、multipathdの設定にブラックリストを書いて対処してしまいましたが、これはすぐにVMを停止できない場合の一時対処としたほうが良いかもしれません。
# vi /etc/multipath.conf blacklist { devnode "sd([a-z])" } # systemctl restart multipathd.service