LoginSignup
1
1

More than 1 year has passed since last update.

Foltia を KVM上に構築する

Last updated at Posted at 2021-05-22

概要

定番録画サーバキット 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のインストールマニュアルに従う。

1
1
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
1
1