録画鯖を作り直そう

前回の記事で、二週間稼働しています。と書いた翌日に障害発生。結局解消せずでした。
故に作り直しを強行することに。理由は簡単で、部材の目処が立ったから。

先頃Proxmox VE用に買っておいた省スペースジャンクPCの内、一台に電源障害が発生していて、使い物になっていなかったのですが、故障切り分けの結果、どうにもM/Bの故障であることが判ったので、M/Bさえあれば、新規に組み上げられると算段。
CPUがi5-7400なので、Z270チップセットあたりのM/Bが安めに手に入れば万々歳。
という事で、自宅近くのハードオフに行ったら、目的にぴったしビンゴな品があったので即購入。

仮組、動作確認して、問題がない事を確認したら早速Ubuntu Server 22.04を最小構成でインストールして、まずは一番の山になりそうであったPT2を、PCIe – PCIブリッジボード経由で接続。あっさりと認識。

この時点で旧環境と同じ様に、dockerでMirakurun+Epgstationを構築。(いや、ほんと楽)
取り急ぎ現在手元にあるチューナーボードの2枚(PT2とPT3)が壊れていないかを確認してみたところ、現行鯖に残しておいたPT3も新設鯖のPT2も故障がないことを確認。
現行鯖のPT3は認識するのに使えなくなっていたので、これで一安心。

そこでPT3を新設鯖に移設。これもさっくり認識して、そのままBS/地上波を各4ch同時録画を仕掛けて動作を確認。
現行鯖ではPT2/PT3の二枚挿した時は、どちらかしか録画できなかったのに…
ドライバ周りいぢりすぎていたからそのせいだろうなぁ…

動作確認ができたので、ケースイン。問題はPT2の載せ方。
PT2はPCIなので、PCIe – PCIブリッジボードを経由しているのですが、買ってきたM/BがATXの高さがフルサイズのものだったので、ケース最下段のスロットに空きがない。
このためだけにケースを新たに買うのも馬鹿らしい。
ということで、どこかのサイトにブラケットを反転させて実装する例があったよなぁ、と探して実例を確認。
ケースに載せるだけならそれで良いのですが、若干M/B上のコネクタと干渉しそうで怖い…
カプトンテープがあれば貼るのですが、手元にないのとそこまでの高温にもならないだろうと、マスキングテープで代用。

とりあえず、ここにBS/地上波各4ch同時録画鯖のベースが完成。
ffmpegによるエンコードオプションも、今回は変更せず。

ここまではさほど詰まることがなかったのですが、もっと別のところ、追加HDDのマウント設定で四苦八苦。
理由は、fstabの書き方。
今まで/etc/fstabにUUIDでデバイスを指定したことなかったので、その書き方にチャレンジしたらOS再起動時にマウントしない事象が起きて、結局はUUIDの指定自体が間違えていたというオチでした。

$ blkid
/dev/sdb1: UUID="fa420c36-9b87-4e4f-92fb-21df936ea78e" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="3121103b-62fe-445a-9dbe-7f37cad82da9"



$ su -
# vi /ete/fstab




/dev/disk/by-uuid/fa420c36-9b87-4e4f-92fb-21df936ea78e /recorded ext4 defaults 0 1
# reboot

HDDはNASの予備材として積んでいた6TByteを載せて、旧環境に落ちた現行鯖から録画データとそのサムネイルデータ、EpgstationのDBをバックアップして、新設鯖にリストア。
こちらも情報があったのでさほど苦も無く対応。
赤字部分は環境依存のオプションと作業ログから引っ張ってきて適当に加工していますので、あくまで参考までに。

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
854c6064977c docker-mirakurun-epgstation_epgstation "npm start" 3 weeks ago Up 7 hours 0.0.0.0:8888-8889->8888-8889/tcp, :::8888-8889->8888-8889/tcp docker-mirakurun-epgstation_epgstation_1
e56c2624d7cb mariadb:10.5 "docker-entrypoint.s" 3 weeks ago Up 7 hours 3306/tcp docker-mirakurun-epgstation_mysql_1
6efdf07a65c2 chinachu/mirakurun "docker-entrypoint.s" 3 weeks ago Up 7 hours 0.0.0.0:9229->9229/tcp, :::9229->9229/tcp, 0.0.0.0:40772->40772/tcp, :::40772->40772/tcp docker-mirakurun-epgstation_mirakurun_1
dockerhome@inprec01:/docker/docker-mirakurun-epgstation$ docker psexec -i -t 854c6064977c854c6064977c npm run backup backup-data

$ docker exec -i -t 854c6064977c npm run backup backup-data

> epgstation@2.10.0 backup
> node dist/DBTools.js -m backup -o backup-data

[2025-07-20T02:01:36.037] [INFO] system - config.yml read success
[2025-07-20T02:01:36.047] [INFO] system - --- run ---
[2025-07-20T02:01:36.048] [INFO] system - check db
[2025-07-20T02:01:36.159] [INFO] system - --- start backup ---
[2025-07-20T02:01:36.160] [INFO] system - rule
[2025-07-20T02:01:36.202] [INFO] system - reserve
[2025-07-20T02:01:36.227] [INFO] system - drop log file
[2025-07-20T02:01:36.229] [INFO] system - recorded
[2025-07-20T02:01:36.502] [INFO] system - thumbnail file
[2025-07-20T02:01:36.520] [INFO] system - video file
[2025-07-20T02:01:36.543] [INFO] system - recorded history
[2025-07-20T02:01:36.556] [INFO] system - recorded tag
[2025-07-20T02:01:36.559] [INFO] system - --- writing ---
[2025-07-20T02:01:36.674] [INFO] system - --- finish ---

$ docker cp 854c6064977c:/app/backup-data ~/
Successfully copied 19.6MB to /home/users/
$ tar cvf epgstation_backup.tar ~/backup-data /epgstation/thumbnail
$ scp epgstation_backup.tar users@record02:~/


--- ここまで旧環境 ---

$ tar xvf epgstation_backup.tar
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb7d4932667c docker-mirakurun-epgstation-epgstation "npm start" 28 minutes ago Up About a minute 0.0.0.0:8888-8889->8888-8889/tcp, [::]:8888-8889->8888-8889/tcp docker-mirakurun-epgstation-epgstation-1
14087bc8889e chinachu/mirakurun "docker-entrypoint.s" 28 minutes ago Up About a minute 0.0.0.0:9229->9229/tcp, [::]:9229->9229/tcp, 0.0.0.0:40772->40772/tcp, [::]:40772->40772/tcp docker-mirakurun-epgstation-mirakurun-1
4d00f323b671 mariadb:10.5 "docker-entrypoint.s" 28 minutes ago Up About a minute 3306/tcp docker-mirakurun-epgstation-mysql-1

$ dockerr cp ~/backup-data eb7d4932667c:/app/
Successfully copied 16.3MB to eb7d4932667c:/app/
$ docker exec -i -t eb7d4932667c npm run restore npm run restore backup-data

> epgstation@2.10.0 restore
> node dist/DBTools.js -m restore -o backup-data

[2025-07-20T03:42:33.345] [INFO] system - config.yml read success
[2025-07-20T03:42:33.351] [INFO] system - --- run ---
[2025-07-20T03:42:33.351] [INFO] system - check db
[2025-07-20T03:42:33.428] [INFO] system - --- start restore ---
[2025-07-20T03:42:33.428] [INFO] system - --- read backup file ---
[2025-07-20T03:42:33.578] [INFO] system - --- restore ---
[2025-07-20T03:42:33.584] [INFO] system - rule
[2025-07-20T03:42:33.954] [INFO] system - reserve
[2025-07-20T03:42:34.162] [INFO] system - drop log file
[2025-07-20T03:42:34.165] [INFO] system - recorded
[2025-07-20T03:42:36.176] [INFO] system - thumbnail file
[2025-07-20T03:42:36.465] [INFO] system - video file
[2025-07-20T03:42:37.239] [INFO] system - recorded history
[2025-07-20T03:42:37.403] [INFO] system - recorded tag
[2025-07-20T03:42:37.406] [INFO] system - --- finish ---

$ rm -rf ~/backup-data
$ docker exec -i -t eb7d4932667c rm /app/backup-data

新設鯖のEPGStationに接続して、過去の録画も見られるのを確認できたので、コレにて新設鯖への移行が完了。

今のとこブレーカー断による停止以外では問題なく使えています。度々起きていた障害がなんだったのか…。
やはりドライバ周りを色々試して作った時は、手順整理しておいて、一度まっさらな状態から作らんと、最終的にはいけないなぁと思ってみたり。

参考

Earthsoft PTシリーズまとめ Wiki*
https://wikiwiki.jp/earthsoftpt/PT2%E9%80%86%E6%8C%BF%E3%81%97

Linux のディスクの fstab に書くときに UUID 指定するとディスク認識の順番が変わらなくていいって話
https://qiita.com/wnoguchi/items/b31e268b6b7236cdf8db

EPGStationのデータをバックアップ・リストアする
https://www.digital-den.jp/simplelife/archives/7161/epgstation%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%83%BB%E3%83%AA%E3%82%B9%E3%83%88%E3%82%A2%E3%81%99%E3%82%8B/