2015年3月24日火曜日

自宅サーバーをRaspberry Pi 2 にした

古いタワー型PCで動いていた自宅サーバーを Raspberry Pi 2 に置き換えました。
GPIOを使ってどうこうとかそういう面白そうなことはやってません。
Raspberry Pi 2 を単なる省電力小型Linuxマシンとして使っているだけです。
このエントリは通常のタワー型PCサーバーではやることが無かった類の作業の記録です。

自宅サーバーなんてイマドキ外部のサービスに頼れば殆ど不要なのですが、データ量がTB単位になるような深い業を背負った人間のファイルサーバーはちょっと困ります。そこに一ヶ月の電気代が50円未満なんて言われる小型PCがあれば惹かれていくのは人の性というものです。

用途

NASが主な用途です。sambaです。
HDDは2台接続して、それぞれメインとバックアップにします。
RAIDではありません。個人用途では常時クローンされることよりも誤操作時の復元容易性の方を重視していいと思っています。
ついでにRSSリーダーにも使っています。Tiny Tiny RSS です。

ハードウェアの準備

Raspberry Pi 2 本体の他に幾つか準備するものがあります。

  • 電源 ― ACアダプタなどは付属していません。本体側はマイクロUSB端子なので、スマートフォン用の充電ACアダプタがお手軽にそれなりのパワーを供給できてよいです。ケチな電源を使うと外部機器を繋いだときにシステムがダウンします。
  • HDMIケーブル ― 画面がないと始まりません。
  • キーボード ― USB接続の標準的なやつでいいです。セットアップが終わったら取り外してもOK。
  • マウス ― なくてもいいけど、あればNOOBSの始めにちょっとだけストレスが減ります。
  • 本体ケース ― サーバー用途なので放置することになります。基盤剥き出しではホコリとか被ってあまりよろしくなさそうです。カメラのフラッシュでも死ぬし。
  • microSD ― OSをインストールするストレージです。4GB程度だと apt-get update が失敗したりと残念な気持ちになれます。16GBぐらいあればとりあえず安心じゃないでしょうか。
準備は計画的に。

OSインストール

Raspbianにします。
Debianをベースにした Raspberry Pi 用のOSで、DebianUbuntu をよく使っている人ならあまり悩まず使えそうです。
インストールにはNOOBSを使って手を抜きます。
ダウンロードしたファイルをmicroSDに書き込んで電源ケーブルを差し込むだけなので超楽ちん。
NOOBSでのRaspbianインストール方法については既に多くの方が記事にしているので省略。

途中でマウスじゃないと選択しづらいボタンがあった気がします。マウスを使ったのはここだけ。

インストール中に日本語が化けて幾つかの項目を選ぶのが大変でした。
インストール後も sudo raspi-config で同じ設定画面を開けるので後回しにしてもいいです。

インストールが終わったらとりあえずOSのバージョン確認。

$ uname -a
Linux raspinas 3.18.7-v7+

$ cat /etc/debian_version
7.8

HDD接続

HDDは駆動部がある精密機械で、貴重なデータが詰まっています。裸で放置するのはちょっと躊躇われます。
はじめは段ボールで適当にHDDケースを作ったのですが、それなりに発熱する機械なので恐くなってやめました。
USB接続できるHDDケースに入れ、それを設置場所にしっかり固定。地震が来ても安心。
また電源のACアダプタが増え、ACアダプタが隣のコンセントを塞ぐ問題が予想されます。そのための短い延長コードがあると安心。

HDDを接続できたら、
マウントして、
パーミッションを設定して、
fstabで再起動時も自動でマウントされるようにして、
sambaを適当に設定してWindows機からの読み書きを確認し、
cron に rsync を仕込んで定期的にバックアップを取るようにして、
NAS完成。

SDカードの寿命を延ばしたい

このままだとログやスワップに使うストレージはSDカードなので、きっと1年ぐらいサーバーとして運用したら死ぬんじゃないかと思います。
予備のSDカードを用意して壊れたら入れ替えればいいじゃないという発想もありますが、出来ることなら寿命は延ばしたいですよね。
とりあえず2つの対策を実施します。

  • swapを無効に ― メモリが1GBもあるので無茶しなければswapなしでも暮らしていけます。
  • logをHDDに ― HDDは常時接続の前提なので。/var/log にHDDをマウントするだけです。一部書かれないログがありそうだけどまぁいいでしょ。
私はやってないですがRAMディスクを使うのもありだと思います。

swapを無効にする

まずは現状確認。

$ free -h
             total       used       free     shared    buffers     cached
Mem:          927M       916M        10M         0B        67M       758M
-/+ buffers/cache:        90M       837M
Swap:          99M         0B        99M
使われていないけど100MBぐらい予約されてる。
無効にしよう。
$ sudo swapoff --all
$ free -h
             total       used       free     shared    buffers     cached
Mem:          927M       914M        12M         0B        68M       755M
-/+ buffers/cache:        90M       836M
Swap:           0B         0B         0B
swapはいなくなったけど再起動したらきっと復活してくるので...
$ sudo apt-get remove dphys-swapfile
$ sudo reboot
再起動後
$ free -h
             total       used       free     shared    buffers     cached
Mem:          927M       652M       274M         0B        18M       574M
-/+ buffers/cache:        59M       867M
Swap:           0B         0B         0B
OK. swapいなくなってる。

他にも

/tmp をRAMディスクに逃がす とか
LAMPやLAPP環境を組むならデータベースファイルをHDDに置く とか
そんな風に書き込み頻度の高い部分を待避させていくのがよさそうです。
でもパフォーマンスは犠牲になります。
ご利用は計画的に。

0 件のコメント:

コメントを投稿