/*
 * sleeping FreeBSD server (3rd Generation)
 *  FreeBSD でエコなホームサーバーをたてる (三代目)
 *   by uratan! 2016.6.16
 *   revised: 2020.10.11
 */

というわけで我が省エネ家庭内サーバー、5年ぶりに フルリプレースし ついでにOS を FreeBSD 10.2-RELEASE(i386) に バージョンアップしてみました。 先代のサーバー構築の記録はこちらで。

●マザーボード <新規>
ファンレス一択ということで、 ASRock製の N3050B-ITXを新調しました。
CPU は Braswell の 省電力 Celeron (dual-core) 1.6GHz で、 旧サーバーの CPU と比較するとシーケンサとしてはもちろん 計算をさせても遅くないです。
メモリは 4GB を一枚使用ですが、32bit の FreeBSD(i386) を選択したので 2GB までしか使えません。 メモリスロットは二つあるのですが、「1枚の場合は こちらに挿せと」マニュアルにありまして、 ヒートシンクから電源ファンの吸い込みエアーフローを邪魔する感じが 少々残念です。
bios(?) は UEFI ですが、gpart + MBR な FreeBSD(i386) も ちゃんとブートできてます。
サーバーとしてディスプレイなしで boot すると amd64-kernel が ハングアップしてしまう問題もありましたが、VGA に ダミーアダプタ を挿すことで回避できました。
CPU 温度もモニターできるようになって ちょっといい気分。

●電源 <新規>
なるべく省電力なものをと ENERMAXPlatimax/EPM500AWT を選びましたが当たりでした。
とにかく効率がいい。 同じ構成で先代の電源・音無しぃSP と比較してみましたが 単純に 10W 以上 電力消費が少ないです。わぉ なんてこったい!
装置全体のファンはこの電源ファンのみになります。そもそも 発熱も少ないせいで回転数自動調律のファンも非常に静かです。
唯一残念なのは電源オフ後にリレー音がすることです。まあ 基本 連続運転なので気にしない。
●HDD <4TB を 2台新調>
高速回転モデルを避けたところ落ち着くところに落ち着きまして、 WDC WD40EFRX、いわゆる WD RED になりました。
2台目の HDD はバックアップ用で、 1週間に一度ミラーリングする運用です。
ATA の stand-by timer 機能 (ATA_IDLE_CMD) により 自動的にスタンバイモードに入るように設定して使用し、 メインは 60分毎に 最大 45分 idle 状態 (spindle 停止)になります。 またサブ HDD は 1週間に一度10〜30分のバックアップジョブ以外は完全(?)に idle 状態です。
動作音も非常に静かです。 スピンドル停止状態からの復帰は 9秒ほどで二代目と同等です。
なお本 HDD は AdvancedFormat と呼ばれる 4096B/sector の物理セクタを エミュレーションで 512B/sector に見せるドライブです。 バウンダリがずれるとパフォーマンスに影響するようですので この辺を参考に→ HOWTO - FreeBSD and 4k sector drives
●サービスとシステムチューニング <基本変更なし>
サーバーで実行している主なバックグラウンドサービスは以下の通りです。
ntp server (ntpd) (*1)
samba (smbd) (*2)
nfs server (nfsd) (*3)
apache (httpd)
unix マシンとしての周期ジョブは毎時 00分近傍に集中して実行させ、 それ以外できうる限り HDD へのアクセスが発生しないように設定を 変更しました。 関連する変更点や設定ファイルはこちらに まとめました。

運用上の注意点としては以下のものがあります。
(*1) ntpd は起動・最初の同期から 1時間おきに /var/log/ntp.drift を書き出すようです。「本サーバーの起動は XX時59分に限る!」 として逃げてました、が ようやく /etc/rc.d/ntpd の使いかたも覚えました。
(*2) samba に関して、nmbd は使いません。名前解決は 各 windows client に %WINDIR%\system32\drivers\etc\hosts ファイルを用意して行います。
    (ディスクアクセスを止められなかった経験から)
printcap cache time の方は設定で解除できました。
(*3) mountd に -S オプションを付けておかないと nfs があっさり切れます。

実は今回、FreeBSD 10.2R の disk I/O の問題と思われる辺りで 一悶着ありまして、queuing 系をすべて殺して使っています。
    まとめはこちら→ Bad response while reading long long files
●結果
以下は、1時間おきに HDD 関連のデータを採取させプロットしたもの です。



緑が、SMART により取得したメイン HDD の温度です。 そして黄色のバーが、温度測定前の 1時間でメイン HDD が active であった時間(単位:分)を表します。(青点は CPU 温度)

各周期ジョブを毎時 00分近傍に実行させてますので、 1時間毎に 約15分(ジョブ5分+タイムアウト10分)間は必ず HDD が active になります。
ちなみに HDD 温度から 5℃引いたぐらいが室温です。 サービスを要求しない場合はあたかも室温を記録するかのようです。

ミラーコピー先のバックアップ HDD は 1週間に一度10〜30分だけ仕事します。 赤はコピー開始前に採取したバックアップ HDD の温度です。
●消費電力

 off:         0W  ... 待機電力
 boot:       39W  ... ブート時の最大表示 (peak とは限らない)
 idle 2HDD:  21W  ... HDD 2台が回っていて CPU は仕事していない状態
 calc 2HDD:  23W  ... HDD 2台が回っていて CPU が仕事している状態
 idle 1HDD:  17W  ... HDD 1台が回っていて CPU は仕事していない状態
 calc 1HDD:  18W  ... HDD 1台が回っていて CPU が仕事している状態
 seek 1HDD:  18W  ... HDD 1台が回っていて disk アクセスしている状態
 sleep:      13W  ... HDD が 2台とも stand-by している状態

部品構成が変わったことと電源の効率化で先代より驚くほど省電力化しました。 素晴らしいですね。
今のところフツー使用で、平均で 15.4W ぐらいの消費電力です。 (月当たり 11kWh)
●最後に
合わせて家庭内ネットワークも Gigabit Ether に変更しまして、 旧構成から見ると10年分ほどモノが進歩したことになり、 もろもろ非常に快適です。
あえて 32bit版 の i386 を選んだ理由は、まぁそのうちに…。

堅牢さにあこがれたあの FreeBSD がちょっとヘロヘロじゃね? っていう後味が気になりますが それはさておき、

キミも頼むぜ!三代目


- * - * -

本日も稼動中(かな)        


[2017.11.28]

メイン HDD の WD40EFRX なんですが、時折エラーを起こすようになったので 手持ちの SEAGATE のもの (3TB) と交換しました。   (エラー時 リカバーする時も そのままフリーズする時も あり)
サブ側は今のところ問題なしです。

【経緯と状況】
・2016年の冬
  (およそ一年経過時)
ahcich0 の Timeout Error が散発するように。 低温時の spin-up と関連があるように見えたので、 stand-by モード使用を止めてみたところ エラーは出なくなった。
・2017年の春 stand-by モード使用を再開   特に問題なし   (やはり温度か?)
・2017年の冬 stand-by モード使用なし に再度設定するもエラーが発生 低温に弱めな状況が徐々に悪化しているように思えたので HDD 交換へ

なんかビミョー……


[2018.7.18]

サブ HDD の WD40EFRX も、エラーが目立つようになってきた…。
今のところデータロストには至っていない模様だけど、とってもビミョー……
 Jul 18 03:04:30 silver kernel: (ada1:ahcich1:0:0:0): WRITE_FPDMA_QUEUED. ACB: 61 00 68 6c 3a 40 0e 00 00 01 00 00
 Jul 18 03:04:30 silver kernel: (ada1:ahcich1:0:0:0): CAM status: ATA Status Error
 Jul 18 03:04:30 silver kernel: (ada1:ahcich1:0:0:0): ATA status: 41 (DRDY ERR), error: 10 (IDNF )
 Jul 18 03:04:30 silver kernel: (ada1:ahcich1:0:0:0): RES: 41 10 68 6c 3a 40 0e 00 00 00 00
 Jul 18 03:04:30 silver kernel: (ada1:ahcich1:0:0:0): Retrying command


[2019.10.9]

2018年10月を最後に この一年順調だったのですが久しぶりにサブ HDD でエラーが…。
diff で問題ないからリトライで成功してるってことでいいのかなぁ…


[2020.10.10]

サブ HDD でのエラーがリカバリーできなかったようなので交換しました。
WD40EFRX (RED) から (あんまり印象がよくないんだけど) 同じ WDC の WD40EZRZ (BLUE、CMR だと信じたい) へ。 容量がずばり同じだったのでパーテーションサイズもそのままでデータを移行。
移行時、読み出しは まったく問題がなかったので (特定領域で)書き込みが 出来なくなった感じかな。
(実動週一だけど) 稼動 5年弱なんで まぁ寿命といえば寿命ですかね。

ついでに電源も予備のものと交換したので これで実質 3.5世代やな。

さらにここで FreeBSD 10.2-RELEASE の /usr/bin/tar が "._" で始まる ファイル名のファイルを t(list)/x(extract) できないバグも発覚! c(create) ではちゃんと格納されているのでギリギリセーフか!? (詳細)


[2023.06.05]

ふと気がつけば uptime がえらいことに…
uratan@silver% uptime
4:33AM  up 902 days, 16:28, 1 user, load averages: 0.37, 0.30, 0.22
システムを更新したいのはやまやまなのだが…


[2023.10.27]

停電で落ちましたがなんとか再起できました。
uptime は 1045 days ぐらいまで行ってたはず、もったいない。


    uratan@miomio.jp
upward