🖥️
VMware ESXiからProxmox VEへの移行理由
移行理由
- USBデバイスがESXiだと認識されない場合が多い
- ESXiで高負荷状態になると、ゲストOSが一旦ログアウトされることがある
どちらを選んだほうが良いか (主観)
- メーカーからのサポートを受けたい
- HWは互換があり性能も良いものが揃っている
- USBデバイスを使うことはほぼない
- 日本語の技術記事が多くほしい
→ESXi
- HW互換をとにかく最優先したい
- メーカーからのサポートはなくて良い
- ゲスト側のターミナルでLinux標準コマンドを使いたい
- 低スぺマシンで高負荷でも安定稼働させたい
- TPM 2.0を簡単に使いたい
- WebUIへDDNSで簡単にSSL接続したい
→Proxmox
決め手:USBカメラ・USBシリアルデバイスが認識されない
USBカメラの映像をOpenCVで取得するしようとすると、以下警告が出て取得できず。
[ WARN:0@10.316] global cap_v4l.cpp:1119 tryIoctl VIDEOIO(V4L2:/dev/video0): select() timeout.
※別マシンでは問題なく認識できる
このエラーで調べたが全然異なる状況での解決手順しか見つからずいずれでも解消できなかったので、まずデバイスが正しく認識できているかを確認
ls /dev -al | grep video
crw-rw---- 1 root video 29, 0 **月 ** **:** fb0
crw-rw----+ 1 root video 239, 0 **月 ** **:** media0
crw-rw----+ 1 root video 81, 0 **月 ** **:** video0
crw-rw----+ 1 root video 81, 1 **月 ** **:** video1
lsusb -v
・・・
Bus 003 Device 005: ID 0c45:6340 Microdia Camera
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x0c45 Microdia
idProduct 0x6340 Camera
bcdDevice 0.00
iManufacturer 2 SD webcam 5160
iProduct 1 SD webcam 5160
iSerial 0
・・・
デバイス情報は取得できているがオープンできていない?
v4l2-ctl --list-devices
SD webcam 5160: SD webcam 5160 (usb-0000:0b:00.0-2):
/dev/video0
/dev/video1
/dev/media0
v4l2-ctl -d /dev/video0 --all
Driver Info:
Driver name : uvcvideo
Card type : SD webcam 5160: SD webcam 5160
Bus info : usb-0000:0b:00.0-2
Driver version : 6.2.16
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Media Driver Info:
Driver name : uvcvideo
Model : SD webcam 5160: SD webcam 5160
Serial :
Bus info : usb-0000:0b:00.0-2
Media version : 6.2.16
Hardware revision: 0x00000000 (0)
Driver version : 6.2.16
Interface Info:
ID : 0x03000002
Type : V4L Video
Entity Info:
ID : 0x00000001 (1)
Name : SD webcam 5160: SD webcam 5160
Function : V4L2 I/O
Flags : default
Pad 0x01000007 : 0: Sink
Link 0x02000010: from remote pad 0x100000a of entity 'Extension 4' (Video Pixel Formatter): Data, Enabled, Immutable
Priority: 2
Video input : 0 (Input 1: ok)
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line : 1280
Size Image : 614400
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Limited Range)
・・・
映像デバイスとしては認識できているように見える。
ffmpeg -loglevel debug -f video4linux2 -s 640x480 -i /dev/video0 out.mpg
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'video4linux2'.
Reading option '-s' ... matched as option 's' (set frame size (WxH or abbreviation)) with argument '640x480'.
Reading option '-i' ... matched as input url with argument '/dev/video0'.
Reading option 'out.mpg' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input url /dev/video0.
Applying option f (force format) with argument video4linux2.
Applying option s (set frame size (WxH or abbreviation)) with argument 640x480.
Successfully parsed a group of options.
Opening an input file: /dev/video0.
[video4linux2,v4l2 @ 0x561a421ce6c0] fd:3 capabilities:84a00001
[video4linux2,v4l2 @ 0x561a421ce6c0] Current input_channel: 0, input_name: Input 1, input_std: 0
[video4linux2,v4l2 @ 0x561a421ce6c0] The V4L2 driver changed the pixel format from 0x32315559 to 0x56595559
[video4linux2,v4l2 @ 0x561a421ce6c0] Trying to set codec:rawvideo pix_fmt:yuv420p
[video4linux2,v4l2 @ 0x561a421ce6c0] The V4L2 driver changed the pixel format from 0x32315559 to 0x56595559
[video4linux2,v4l2 @ 0x561a421ce6c0] Trying to set codec:rawvideo pix_fmt:yuv420p
[video4linux2,v4l2 @ 0x561a421ce6c0] The V4L2 driver changed the pixel format from 0x32315659 to 0x56595559
[video4linux2,v4l2 @ 0x561a421ce6c0] Trying to set codec:rawvideo pix_fmt:yuv422p
[video4linux2,v4l2 @ 0x561a421ce6c0] The V4L2 driver changed the pixel format from 0x50323234 to 0x56595559
[video4linux2,v4l2 @ 0x561a421ce6c0] Trying to set codec:rawvideo pix_fmt:yuyv422
ここから先一切進まなかったため中断
保存されたファイルも何も映像データなし
ちなみに別のUSBカメラ2種についても全く同じで接続ポートを変えても変わらなかったので、USBカメラ側に問題があるとは考えにくい。
USBシリアルについても、ゲスト側にマウントさせても一切認識されなかったため断念。
Proxmoxに移行してからはどちらも問題なく認識されるようになったので、やはりESXi側に問題があったと思われる。
ただUSBカメラについてはOpenCVのfourccでMJPG指定しないと読み込めなかったので、もしかしたらESXiでも指定すれば行けていたかもしれないが、既に移行済みのため確認しない。
USBデバイスで悩みたくなかったらProxmox一択。
Discussion