普段は業務用サーバーをゴニョゴニョ触っている輩が初めてラズパイ(Raspberry Pi4)でお家サーバーを構築しようとし、かなり戸惑った訳ですが、良いきっかけなので気がつき改善できた点を簡単にまとめておきます。

とにかく電源を安定させる!

ほんと小学生の科学の実験の付録みたいというか、電池と豆電球そのものというか(汗)回路内には全く電源を安定させるような仕組みは入っていないようです。ちょっと電源を供給しないといけないデバイスをUSBに接続するとあっという間にCPUの電圧低下。最初のうちはそんなことが起こっているなんて全くわからずかなりハマりました。

GPIOをオバーライドするような電源ボードを購入し、GPIOから安定した電源を供給してあげるのが一番良さそうです(2000円ぐらいから、ページ下にリンク貼っときました)

自分は、SSDとかHDDが挿したいだけだったので、それぞれ外付けケース側で電源を供給するタイプで回避をしました。また、電源の無いポータブルタイプのケースでも写真のようにUSB電源タップで電源を取得したら良い感じに電圧低下を回避できました。

IMG_0923

色々工夫の方法はあるかと思いますが、とにかく電源を安定させないとそこから先何をやってもトラブルだらけです(笑)

発熱に注意!

raspbian(buster)にはその設定は見つけられてないのですが、ラズパイは特定のCPU温度に達するとシャットダウンするようです。かと言ってあんまりパワーのあるファンを付けたりすると、電圧問題が発生します。ラズパイは冷蔵庫に入れるなどして発熱に注意しましょ(嘘)

基(汗)

発熱は結構すごいのですが、CPU自体面積は小さいので熱伝導率の大きい面積の大きい物質をCPUに密に触れさせておけばそれなりに放熱するんじゃないか?と自分は、アルミのフィンタイプのケースを装着し、ラズパイ自体を丸ごとCPUと見立て、それをファンで冷却する方法をとり、やっとCPU温度を40℃台に落ち着けることができました(なんと未対応の頃には70℃弱までいってました)

IMG_0920

SDカードに書かせるな!

OSイメージを格納するSDカード。こいつがまた曲者です。SDカードは書込みがとにかく遅く、class10で数MB/s、U1でも10〜20MB/s。これも、ddコマンドとかで単にデータを書込むのにかかった時間なので、複数のプロセスからr/wが発生するとI/Oの待機が物凄くなります。
サーバー用途となると、データベースやらログファイルやら書込み処理が大量に発生するため、これらのデータをSDカード内に配置したらもう涙ものでした。

サーバーが行う処理をよく理解し、書込みが激しいファイルなどは外付けのHDD/SSDに配置するような考慮が必要です。ググってみるとSDカードの寿命に重みを置いて書いたり消したりを行わないようにする記事は結構見かけましたが、そんなことより何よりサーバー用途では処理が重くて話にならないので(汗)

Dockerを使え!

SDカードに書かせないため...「サーバーが行う処理をよく理解し...」。
確かに正論ですが、何気にこれって難しいんですよね。

  • 排他用のpidファイルは誰がどこに書いてるの?
  • ソケット用のファイルは誰がどこに書いてるの?
  • syslogの設定を一々変更するの?
  • プログラムが影響を及ぼすカーネルが扱ってるファイル全て理解できるの?
  • すでにOS動いてる中、/varや/tmpを外付けHDDに配置するの出来る?

...とほほ、考えなきゃいけないことが多すぎます。

で、仮に全部理解できて色々やったとしても、それってOSのアップデートとかに耐えられるの? ってな感じ(笑)

そこで、Dockerの出番です!

Dockerはコンテナの利用するvolume(簡単に表現するとディレクトリとかファイルね)をホスト側のそれと簡単にマッピングすることができます。つまり、頻繁にファイルの書込みが行われそうなディレクトリをホスト側の好きなディレクトリ(狙いは外付けのHDD/SSD)にマッピングしちゃえば良いのです。

Dockerのイメージ容量のコスト、Dockerプロセスのコストなどありますがトレードオフを考えてもやることが簡単になればそれに越したことはないですし、Dockerfileやdocker-compse.ymlとしてその資産を残すこともできるのです。こんなに嬉しいことはない訳です。

Dockerfileやdocker-compse.ymlをgitで管理していれば、いつでもどこでも

$ git clone リポジトリ
$ sudo docker-compose up -d

だけでその環境を作れるのですから...。

今後、追記することもあるかと思いますが、ラズパイと付き合い始めて4日目、これまでの思い出を綴ってみました。

Amazon.co.jp: Raspberry Pi 4電源拡張ボードDockerPi電源ボード20W(5V 4A)電源冷却ファン付きの安全なシャットダウンRaspberry Pi 4および3B +と互換性のある赤外線リモコン: パソコン・周辺機器
Amazon.co.jp: Raspberry Pi 4電源拡張ボードDockerPi電源ボード20W(5V 4A)電源冷却ファン付きの安全なシャットダウンRaspberry Pi 4および3B +と互換性のある赤外線リモコン: パソコン・周辺機器