ラブライブ駆動開発

画像いじったり動画変換してる

いい機会だし自宅サーバの現状を整理してみる

vector.hateblo.jp

友人が上の記事で録画サーバについて色々書いていたので、自分も自鯖の現状を把握するために書き出してみる。 上記記事と似たようなアジェンダで行く。

前提

あ、私的利用の範囲ですよ。

  • ほぼ毎日放送されているアニメを録画している
  • また以下のタレントが出演している番組もほぼ録画されている
  • TSの増加ペースとしては、1本3〜6GBで1週間で60〜80本ほど(溜まるときは300GB/weekぐらいのペース)
  • 流石に容量増加に耐え切れないので、録画が完了したTSから順次ffmpegにてh.264+aacな720pのmp4に変換される
  • エンコード済のTSは1ヶ月ほど保持してから削除

サーバについて

自鯖その1(NAS)

  • HP ProLiant Microserver N40L
    • AMD Turion II NEO 1.5GHz 2Core
    • Unbuffered ECC Memory 2GBからNon ECC Memory 8GBに換装
    • (system) CFD SSD 120GB
    • (storage) WD Red 2.5TB * 3, WD Red 4TB * 1
    • アースソフト PT-3(いざという時の予備)

かれこれ5年くらい稼働しているサーバ。今までに故障したHDDはsystem1本とstorage1本。 なのでstorageに4TBが1本入ってる。結構貧弱なCPUなのだけどホントに電力を食わないので家計が助かっている。

ただ流石に録画もエンコードもさせるとなると無理すぎたので別鯖に分けて妥協した。

自鯖その2(録画, エンコ)

まだ2年くらいしか稼働してない録画・エンコサーバ。CPUだけはかっちりいいものを積み込んでいて、念のためにQSV搭載のモデルにした。(そろそろlinux/ffmpegでも遊べそうなので遊びたいが手が出ない)

QSV使ってないのでCPUで全力エンコしているが、大してプリセットを詰めてないffmpegh.264+aac mp4(720p)エンコだと実時間の1/3くらいで完了する。(アニメだと大体10分程度で終わる) エンコし始めた当初はハンパねぇなと感動したのをよく覚えている。

なんで自鯖運用なの

ひたすら自分の手元にデータを溜め込むのが好きな人種だから

というのは冗談で個人にとってはクラウドがまだまだ高いからというのが1番の理由。金があったらS3やらNearlineやら使います。

かのBitcasaも無制限時代にアーリーアダプターとして初年度$69で使っていたのだけど、やはり日本の溜め込むおじさん達には叶わなかったようで、1年ほどで脆くも崩れ去って*1しまった...

NASは今5年ほど運用していて、故障による費用はSSD1本, WG RED 4TB1本でおよそ3万円程度。まぁ運が悪いともっと壊れるだろうし、比較的運が良いかなと思っている。

OS, FileSystem, Software

OS

  • Ubuntu 12.04 LTS(NAS), 14.04 LTS(録画, エンコ)

以前はNASの方は純なZFSを使うためにFreeBSD 8.2を使っていたのだけど、どうも情弱でFreeBSD使うのがしんどかったというのがあり、ZFS on Linuxが安定してきたタイミングで強引にubuntuをインストールした。 昔はCentOSとかFedoraとか使ってたはずなんだけど、会社の宗教上Debianぽいものしか扱えない体になってしまった。apt最高!!

FileSystem

完全にdankogaiの影響をうけて当初はメモリースティックにFreeBSD8.2をインストールしてZFSを運用していた。OSで話した内容とダダ被りなのだが、ホントにFreeBSDよくわからなかったし、system diskだったメモリースティックが壊れたタイミングでZFS on Linuxが安定してきたっぽい知らせを受け、意を決してubuntuをインストールし、ZFS on Linuxに切り替えた。正直FreeBSDからのデータ移行については、実装が違うし今まで溜めてきたデータを諦めることになるかな...と覚悟を決めていたのだが、sudo zpool import -f hogepoolしてみたところなぜか成功。特に問題も起きていないためそのまま運用を続けている。

運用前からZFSはメモリ食いだと聞いていたし、CPUはしょぼくてもメモリだけはしっかり積んでおいたためか、今現在まで特に問題も起きていない(Disk故障でのResilveringとかも特に問題なかった)

ただOSアップグレードが来る度に覚悟はしている。(しばらくサボっててやってないけど)

Software

  • chinachu
  • ffmpeg
  • (自作)エンコ終わったTSファイルをキューに突っ込む奴
  • (自作)キューに入ってきたTSファイルをmp4にエンコする奴
  • (自作)しょぼいカレンダーを見て詳細をDBに突っ込む奴
  • (自作)どこからでも見れるWeb frontend
  • (自作)視聴プレーヤー for Android TV

chinachuは割と最近出てきた録画システムなのだけど、node.jsによるモダンなWebUIを持ち、非常に使いやすく愛用している。何が良いってlinuxだけで録画が完結できるのが素晴らしい。(foltiaはOSもコミコミだったりするし、BonDriver+TVRock+TVTestとかでやってる時はWindowsないと話にならない感じだった)

ただ微妙にメモリリークしている気がするので、たまに再起動している(ちゃんと調べていないし、chinachu以外の可能性があるのであまり突っ込まないで欲しい)

ffmpegについてはまぁ言わずもがな。そんなに古くないビルドを使ってる。(調べたら2014/08くらいのビルドだった)

よくエンコードの話になるとエンコードのパラメータ論争になるが、私は全然こだわりがなく-preset veryfastがほぼ全てだ。そのうち詰めたいと思ってはいたけど手間でやってない。

あとは自作系のよくあるスクリプト達が色々動いている。流れとしては

  1. chinachuがスケジューラに基づき録画を行う
  2. 録画が終わったらファイルパスをキューに突っ込む
  3. キューに突っ込まれたファイルパスからffmpegで適当にエンコードする
  4. エンコードが終わったらchinachuのスケジューラログを見てしょぼいカレンダーで該当時間のアニメを調べて詳細をDBに突っ込む
  5. Web frontendで見えるようになる

まぁよくあるような感じだ。Web frontendはRails+Bootstrapでちゃっちゃと作った感じの雑なUIだが、検索があるので特に不便を感じていない。少し前に話題になったWoSignのマルチドメインSSL証明書などを取得して無駄にhttps化していたりする。

またAndroid TVの視聴プレーヤーについてはJavaの知見が全然なかったので知り合いにだいぶ手助けしてもらった。見た目もなかなかモダンで自分だけにとどめておくのがもったいないくらいである。

f:id:pi9min:20150924233132j:plain

Backupについて

yayuguと同様、Google Photosが救世主として現れたので全力で置いていくスタイル。TSをアップロードするとエンコードされるらしいので全部TSのまま投げてしまえばいいのでは...とも思ったがそこは横着していない。 Google Photosが現れるまでは、Bitcasaが無限ストレージとして稼働していたのだが案の定(?)倒されてしまったので、Google Photos降臨までの空白期間はしばらく自鯖にしか置いていない怖い運用だった。RAID-Z1と言っても2本同時に壊れたら終わりだしね。

唯一困るのがLinuxで完結できない点だが、そのうちなんとかなるでしょう。(適当)

(yayuguが試していたVirtual Box + Windows(正規) + Synced Folderをその内やろうかなとは思っている)

監視・アラート

mackerelさん、お世話になってます。録画鯖の方がメモリリークによる食いつぶしがあるのでその部分のアラートと、あとはdisk容量のアラート程度を入れている。あと毎日S.M.A.R.Tは叩いてErrorがないかは見ている(あんまり叩き過ぎない方がいいとは思うけど)

課題とかやりたいこと

ある程度便利になってしまったのであんまりやる気は無いのだが、そのうち以下を消化しようと思う。

なんだかんだでちゃんとブログを書いたのは初めてな気がするが、たまに知見が貯まったら吐き出していこうと思うのでよろしくお願いします。

追記(コメ返しなど)

いい機会だし自宅サーバの現状を整理してみる - ラブライブ駆動開発

自分はUbuntu14.04+ZFS(3TB*5 RAIDZ2)+KVMでPT3パススルーFolitiaで、BackupにFreeNASに3TB*3 RAIDZ1、物理的に電源が壊れた以外は安定運用してる。Ubuntu鯖にはWinとか他の仮想マシンも同居中。って言うかこれはブログにまとめる流れ?

2015/09/25 09:14
b.hatena.ne.jp

いい機会だし自宅サーバの現状を整理してみる - ラブライブ駆動開発

ストレージってクラウドだとまだまだ高いよねぇ…基本増える一方だし。うちは6TBx10台+(省電力サーバ+SSD)を2セットで計120TB分のHDDを10x2replな感じでglusterfsで運用してるわ。glusterの下はxfsなBrickが20台みたいな。

2015/09/25 05:01
b.hatena.ne.jp

皆さんの知見も共有していただけると世界が平和になります。よろしくお願いします。

いい機会だし自宅サーバの現状を整理してみる - ラブライブ駆動開発

もうこんなの子供いるし無理

2015/09/25 08:00
b.hatena.ne.jp

私も今年頭に結婚して、今では1児の父親ですが全然さわれない状況になった。むしろこのブログを良く書けたなと思っている。

いい機会だし自宅サーバの現状を整理してみる - ラブライブ駆動開発

AndroidTVのくだりが気になりすぎて眠気が飛んだ。

2015/09/25 01:51
b.hatena.ne.jp

音声検索で動画絞り込めるの非常に便利で楽しい! ✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌

ストアに公開しなくてもデバッグビルドでガンガン使えるのでいいと思います。

いい機会だし自宅サーバの現状を整理してみる - ラブライブ駆動開発

8Gのメモリでarcの設定をどうしているのかが非常に気になる。バージョンアップが怖いのは、みんな同じだから、そろそろhitobashierにならないと

2015/09/25 07:39
b.hatena.ne.jp

そーいやZFS on Linuxにしてからどうだったかちゃんと見てない...あとで調べて書きます。