概要
定番録画サーバキット Foltia の最新版は6.1.10. このリリースのベースは CentOS 6.10. すでにサポート終了を迎えており、開発元も CentOS 8ベースへの移行を宣言している. でも、CentOS 8 も2021/12/31 でサポート終了.
- おそらく次期 Foltiaへのバージョンアップは再インストールが必要になる
- 出たとしても、更なる移行が必要になる
Migration が最初から見えているのだから、移行前後のOSを一台のサーバで同時に構築させられるよう、Foltia を仮想化させることした。基本方針は下記の通り。
- Foltia の自体はKVM上に作る。
- 録画イメージは基盤側にSambaサーバを構築し、そこに保存させる。Foltiaからはcifsで取りにこさせる。
前提
物理構成
主な構成部品。
パーツ | 型番 | 備考 |
---|---|---|
CPU | Intel Core i3-9100 | VT-d対応必須 |
マザーボード | B365M-ITX/ac | VT-d対応にできるオプションが必須 |
キャプチャカード | PX-W3PE4 | Foltia 5.0.4移行で対応. PCI接続は電源供給のみ、データ転送は内部USB. 一世を風靡したPT3は販売終了し、後継品もない様子. |
ICカードリーダ | SCR3310/v2.0 | 定番品 |
ターゲットディストリビューション
ディストリビューション | バージョン | 備考 |
---|---|---|
Ubuntu | 20.04 | 基盤側. 素直に最新のLTSを選択 |
Foltia | 6.1.10 | ベースは CentOS 6.10 |
利用する主なソフトウェア
Software | 概要 | 備考 |
---|---|---|
KVM/QEMU/Virt | ハイパーバイザ | |
bridge-utils | LinuxをL2化 | KVM上のノードをBridge接続させるために必要 |
Samba | ファイルサーバ | 録画ファイルはFoltiaに持たせず、基盤側に置く |
Cockpit | サーバ管理ツール | Web GUIでKVMをコントロール |
構築
BIOS設定
vt-dを有効にする。これがないとKVMが使えない。
KVMの構築
Ubuntu 20.04をインストール。特段のこだわりはなし。
KVMのインストール
$ sudo apt update
$ sudo apt install -y qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
$ sudo reboot
権限付与
- KVMを動かしたいユーザに権限を付与する
- KVMを保存する場所へのアクセス権を制御するため、shared グループを作り、KVM管理者とqemuでのアクセスを許可する。
$ sudo adduser `id -un` libvirt
Adding user '<username>' to group 'libvirt' ...
$ sudo adduser `id -un` kvm
Adding user '<username>' to group 'kvm' ...
$ sudo groupadd shared
$ sudo usermod --append --groups shared $(id -un)
$ sudo usermod --append --groups shared qemu
Storage Poolの設定
OSイメージと仮想マシンをどこに置くかを定義。/home/shared
配下に配備するとした。
FHS的にどこに置くべきなのかは規定をまだ見つけられていない。
Foltiaのイメージファイルを/home/shared/images/
配下に配備する。isoイメージはqemu
ユーザに
よるアクセスできる必要があることに注意。
sudo mkdir -p /home/shared/images/
sudo mkdir -p /home/shared/kvm_volumes/
sudo chown -R root:shared /home/shared/
sudo chmod -R o-rwx /home/shared/
virsh --connect qemu:///system pool-define-as default dir --target /home/shared/kvm_volumes/
virsh --connect qemu:///system pool-define-as images dir --target /home/shared/images/
Storage Poolの起動
Storage poolは設定しただけでは使えない。明示的に起動する必要がある。サーバとしての起動権限なのに、rootじゃあないのが少し不思議。
# pool の起動
virsh --connect qemu:///system pool-start default
virsh --connect qemu:///system pool-start images
# pool の自動起動
virsh --connect qemu:///system pool-auto-start default
virsh --connect qemu:///system pool-auto-start images
Networkの設定
KVM ではデフォルトではホスト側の持つアドレスにNAPTされて外部と通信する。今回の Foltiaは外部に対してサーバとして動作させるため、Bridge 接続でNAPTなしに外部と出す必要がある。1:1 NATすればよいんだろうけど、そこは調べてない。
$ cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: networkd
ethernets:
eno1: #ここは実機に合わせる
bridges:
br0:
interfaces:
- eno1
dhcp4: false
dhcp6: false
addresses:
- 192.168.1.66/24 # ← ホストのアドレス
gateway4: 192.168.1.1 # ← デフォルトゲートウェイのアドレス
nameservers:
addresses:
- 192.168.1.1
parameters:
forward-delay: 0
stp: false
optional: true
再起動するか、sudo netplan apply
で反映できる。
Cockpitの準備
Foltia は基本Web UIのみだが、サーバインストール時だけはGUIが必要になる。サーバに xrdpを入れてvirt-manager でオペレーションをすることも考えたが、メンテナンス性を考えてサーバ管理ツール Cockpit の仮想マシンプラグインを利用することにした。 KVM のWeb GUI で良いものがないのかと色々と探ったが、数年前に開発が止まったものばかりだった。しかしCockpitについては Git hubを見る限り、現時点で活発に開発が続けられているようだった。
sudo apt update
sudo apt install cockpit cockpit-machines cockpit-system cockpit-bridge
でインストールすれば、http://サーバアドレス:9090
でログインできる。認証はKVMサーバへのログインアカウントで良い。
KVM構築の参考
Sambaサーバの構築
Foltiaで録画したファイルの保存先はデフォルトだと/dev/tank/tv
となる。これはlvmで構築されたボリューム。ただ、下記の理由から今回は基盤サーバ上にSambaを動かすことにした。
- データ量が死ぬほど多く、仮想側に持たせるとマイグレーションに膨大な時間がかかる
- 仮想イメージに問題があった時、データ回収困難である
- ディスク部分を仮想にすることによるオーバーヘッドを抑制したい
この辺りは色々と議論ありそう。
録画イメージの保存場所
ディスクの容量管理を考え、KVMと同じshared ディレクトリ配下に入れることとした。/home/shared
を別ディスクに切り出したかったので。
sudo mkdir -p /home/shared/tv
Sambaのインストール
Ubuntuの標準パッケージをそのままインストール。
sudo apt install samba
Sambaの設定
GUIツール「SWAT」は、すでにメンテナンスが止まって久しい。Ubuntu ではsystem-config-samba
による Config作成支援もあったが、これも18.04までに廃止された。結局、smb.conf
を直接編集するしかない。
SMBプロトコル
Ubuntu 20.04と Foltia 6.1.10 (CentOS 6.10)が対応するSMBプロトコルが異なり、明示的に合わせる必要がある。
OS | Sambaバージョン | 最低限のデフォルトProtocol | 最上位のデフォルトProtocol |
---|---|---|---|
Ubuntu | 4.11.6 | SMB3 | SMB3 |
Foltia | 3.6.23 | CORE | SMB2 |
で、Samba 4.xではSBM2に対応していない。というわけで、両者でANDの取れるNT1
とする必要があった。
smb.conf
追加したポイントだけ。自宅内で利用するため、アクセス制限はsmb.conf内でのACLのみとし、ユーザ認証は省略してguestアクセスとした。
[global]
unix charset = UTF-8 # エンコーディング指定。
dos charset = CP932 # Windowsでのエンコーディング指定。
server min protocol = NT1 # Foltia側に合わせて設定
(snip)
#### Networking ####
interfaces = 192.168.1.66/24 br0 #SMBを受け入れるサーバのアドレスとInterfaceを明示
hosts allow =192.168.1. localhost #Sambaへのアクセスを認めるアドレスを192.168.1.0/24に限定
(snip)
[share]
path = /home/shared/tv
comment = Allow All users to read/write
writable = yes
guest ok = yes
guest only = yes
コマンドを反映させる前にvalidationを実施する。
testparm -v
問題なければプロセスを再起動してアクセス確認。
sudo service smbd restart
参考
Foltiaのインストール
OSイメージ名
virt-install
でインストールするとき、インストールしたいOSが既知のどんなOSに近いかをKVMに知らせる必要がある。その「既知のOS名」はlibosinfo-bin
パッケージに含まれるosinfo-query
で調べられる。
$ sudo apt install libosinfo-bin
$ osinfo-query os family=linux|grep CentOS
(snip)
centos6.10 | CentOS 6.10 | 6.10 | http://centos.org/centos/6.10
(snip)
USB パススルー
KVM上のFoltiaから、物理サーバ上に取り付けたキャプチャカードとカードリーダへアクセスできるようにする。lsusb
で特定できるので、BusとデバイスのIDを控える。キャプチャカードにPT3とかのPCIカードを使った場合、これはPCIパススルーとなる。
$ lsmod
(snip)
Bus 001 Device 007: ID XXXX:XXXX N'Able (DataBook) Technologies, Inc.
(snip)
Bus 001 Device 003: ID XXXX:XXXX SCM Microsystems, Inc. SCR331-LC1 / SCR3310 SmartCard Reader
(snip)
Plex社のキャプチャカードだが、内部チップ的にはN'Ableのものになるらしい。dmesgで見ると、Plex社の名前が見えた。
virt-install
これでようやくインストール準備が整った。virt-install
コマンドでインストール。Cockpitからもインストール自体はできるが、検証したタイミングでは--host-device
指定ができない。インストール後にUSBデバイスをリダイレクトさせることもできない。virt-managerではオプションあってインストール後に接続できそうだったが、エラーになった。回避策が見つけられず、素直にコマンドラインで実施。
$ virt-install \
--hvm \
--name=Foltia_Test \
--vcpus=2 \
--memory=4096 \
--disk=/home/shared/kvm_volumes/Foltia_Test.qcow2,size=64 \
--network=bridge:br0 \ #最初に作ったbridgeの名称を指定
--arch=x86_64 \
--os-type linux \
--os-variant centos6.10 \
--host-device 001.003 \ #先ほど控えたBUS/デバイスIDを入力
--host-device 001.007 \ #先ほど控えたBUS/デバイスIDを入力
--cdrom=/home/shared/images/foltia_ANIME_LOCKER-install-RXX-DVD-XXX.iso \
--graphics vnc,keymap=ja
インストール開始のメッセージが出たら Cockpitにアクセスし、VNCの画面でFoltia がDHCPで掴んだアドレスとインストール続行に必要なキーを確認する。これ以降はFoltiaのインストールマニュアルに従う。