我が家にはRaspberry Pi 4があり、常時稼働させたいお仕事はこれにやらせていた。けれど、思うところあってこれを中古PCにやらせてみている。
なぜ更新したいか
既存サーバには以下のような問題があった。
- なんだかんだ今でもArmで走らせるには一手間二手間掛かるケースが散見され、しょっちゅう困っていた
- GPIOなどサーバとして使うなら別に要らない機能が沢山ある。別の用途を考えてあげたい気持ちが増してきた
- ビルドなどの重いタスクをやらせると重い(それはそう)
結果として稼働はしてるがほぼ使ってないという問題があった。これらの問題からサーバを新たに用意したいという気持ちが増していたとき、アキバでいい感じの中古PCを見かけたので確保した。
何に更新したのか
Z2 mini G3
選定の軸は以下のあたり。
- 小型であること(HP Prodesk miniなどのサイズ感)
- USB端子などが十分あって一定の拡張性を有すること
- 消費電力は大きくない方がよい
- ゲーム開発や画像自動生成、リアルタイム動画編集などの例外を除き、個人がごく少人数向けのサービスを複数稼働させる程度であれば不自由しない程度の計算リソースを持つこと
- 安い方がよい(1~2万円程度)
2017年ごろのモデルなのでXeonやQuadroとはいえ型落ち甚だしいけれど、上記の評価軸からすると十分だろう。一応CUDAにも対応しているので機械学習ごっこくらいならやれそうである。お値段は3万くらいでやや予算オーバーだけど、中途半端なやつを買って二台体制にするよりは結果として安く上がるであろう。
環境構築の様子(記憶が曖昧なのであっさり目)
OS選定
Windows 10 Pro for Workstationsという面白OSが入っていた。調べてみたら、Windows Server用のリッチなファイルシステムが使えたりするらしい。興味はあったけど、別にWindows鯖を作りたいわけではなかったので他を考えた。あまり深い考えなくUbuntuにすることにした。ディストリビューションに凝るのはサーバ用途としては微妙かなと思ったのと、ラズパイと同じDebian系にしたい、くらいの気持ち。
インストールはほぼ問題なく進んだ。ファームウェアをアップデートしたらSecure Bootが怒り始めたので無効化(あんまりよくない。なんとかしたいけど……)
CUDAを使えるようにする
これもドキュメント読んでたらほぼすんなり終わった。 Failed to start nvidia-powerd service.
というエラーが出てるのが気になるけど、とりあえず爆発したりはしてないから後で様子を見ましょう。
それから
Rustコードのビルドなども爆速であり大満足です。
その後microk8sを入れたりして遊んでいる。kubernetesははじめて触るので、ああ、業務で触るECSは思想的にはこういうものを更に抽象化したものなのかな、みたいな感想を抱きつつある。 やや脱線した。このサーバでどう遊ぶか、みたいな話はまた今度。