2024年11月18日 | EOS R7ファームウエアアップデート |
2024年11月17日 | PX-M730Fのシアンインク交換 |
2024年11月4日 | 360度モニタ不調 |
2024年11月2日 | ノート給油 |
2024年10月19日 | 腕時計のファームウエア |
2024年10月5日 | RF-S 10-18mm F4.5-6.3 IS STM購入 |
2024年10月3日 | 三菱UFJニコスカード到着 |
2024年9月28日 | 三菱UFJニコスカード申込 |
2024年9月23日 | 第10世代iPad購入 |
2024年9月17日 | iPadOS 18 |
http://h50146.www5.hp.com/products/servers/proliant/micro/
http://h50146.www5.hp.com/products/old/servers/proliant/micro/athlon250gb/
正月休みにWebをウロウロしていたら、 アマゾンでHP Microserverが2万2800円というのを見つけてしまった。 最後の1台らしい。 最新モデルは3万4650円だから、 かなりのお買い得だ。
バックアップサーバーがPentium D 920という、 一番電気を消費する頃のシロモノなので、 そろそろ代替機を考えていたところだった。 でもって下手な組み立てキットよりも安いので、つい注文してしまった。 4GB×2のDDR3 1333MHzなメモリもまとめて注文。
あっという間に到着。 相変わらず、アマゾンは仕事が速い。 とはいえ、メインサーバーのOSをアップデートしているので、 こちらをいじっている暇がない。
ようやくセットアップ開始。 まずはBIOSのチェック。 ハードディスクのライトキャッシュを有効にしておく。 BIOSのバージョンを見ると、ちょっと古い。 メーカーのWebから最新のBIOSをダウンロードしてインストール。 ただ、そのままではうまくいかなかった。 アップデート用USBメモリを作成するプログラムで、 DOSの起動するUSBメモリができあがる。 で、ブートは可能なのだが肝心の書き込みプログラムがない。 なので展開先のFlat Filesディレクトリから
をコピーして、ブート後にflash.batを実行する。 あっという間に書き換わり、2011.04.02版から2011.07.29版になった。
で、CPUを見るとTurion II NEO N40L 1.5GHzらしい。 旧型はAthlon II NEO N36L 1.3GHz。 てっきりこちらの売れ残り在庫処分だと思っていたのだが、 ひょっとして当たりを引いたのかもしれない。
動作テストがてら、FreeBSDをインストールしてみる。 今時はUSBフラッシュメモリ用のインストールイメージがあるので、 2GBのフラッシュメモリをインストールメディアにした。 すでに動いているFreeBSDマシンがあるので、 本家のWebにあるとおりにddコマンドで書き込んだ。
# dd if=FreeBSD-8.2-RELEASE-amd64-memstick.img of=/dev/da0 bs=10240 conv=sync
できあがったインストールメディアをフロントパネルのUSBコネクタに差して起動。 あとは最初から内蔵されている250GBのハードディスクにインストール。
さすがにサーバーなので、 起動時にキーボードがなくてもいちいちエラーを報告したりはしない。 さらに、FreeBSD起動後にUSBキーボードを挿すとちゃんと使える。
特に問題なさそうなので、 メモリを4GB×2に増やし、 PCIeに1000BASE-Tのインターフェイスを付けた。 その後、 備忘録 - HP ProLiant MicroServer + FreeBSD + ZFSにならってUSBフラッシュメモリにFreeBSD 8.2をインストールしてみる。 使ったのはバッファローのRUF3-K16Gという、 USB 3.0にも対応した高速な16GBメモリ。 特に読み出し速度は70MB/sをうたっている。 でもこれ、バッファローのWebに載っていないんだよなあ。
このメモリ、BIOSの書き換えにも使ったのでDOSがブートするようになっている。 で、内蔵USBのほうがブート時に優先されるので、 そのままだとDOSが立ち上がってFreeBSDのインストーラーが起動しない。 しかたないので、 ddコマンドで先頭10セクタくらいにゼロを書きこんでおく。 あとはインストール先をad4ではなくda0にするくらいでインストールできた。 ただ、さすがにハードディスクに比べると遅い。 まあSSDならともかく、USBを経由しているのだからしかたないが。
インストールが終わって内蔵USBフラッシュメモリからブートすると、 やはりファイルシステムをマウントするタイミングでコケる。 なので小飼 弾さんのページを参照して、/boot/loader.confに
kern.cam.boot_delay=10000 vfs.zfs.txg.timeout="5" zfs_load="YES" # Reserve Some memory for non-zfs tasks # http://d.akinori.org/2010/04/15/ # + Some Tweak kern.maxusers=512 vfs.zfs.arc_min="512M" vfs.zfs.arc_max="4G" vm.kmem_size="4G" vm.kmem_size_max="6G"
としてみた。 今度はブートする。 なお、
ahci_load="YES"
でahciが有効になるはずだが、 なぜかハードディスクが見えなくなってしまう。 チップセットは変わっていないはずなんだけど。 そこで手持ちの
を入れて試してみたら、これらはAHCIでも認識される。 どうも最初から入っているVB0250EAVER HPG0だけがダメらしい。
そこで、 メインサーバーのバックアップ用に使っていたHDP725025GLA380の中身をまるごと、 ddコマンドでVB0250EAVERにコピーする。 コピーした方を保存用として、 コピー元をMicroserverで使うことにする。
ついでに/etc/rc.confに
powerd_enable="YES" powerd_flags="-a adp -n adp"
を追加する。 ちなみに、これもすでに動いているFreeBSDマシンに挿し直して修正した。
# mount /dev/da0s1a /mnt
でマウントして、
# vi /mnt/boot/loader.conf # vi /mnt/etc/rc.conf
である。
簡単なファイルサーバーとして使うために、ZFSを使ってみる。 前述の160GB、250GB、 640GBのハードディスクを使ってraidzを作ってみると、
# zpool create pool raidz ada0 ada1 ada2 invalid vdev specification use '-f' to override the following errors: raidz contains devices of different sizes
デバイスのサイズが違うと怒られた。 まあ当然といえば当然である。 そこで言われたとおり、-fを指定して無理やり作ってみる。
# zpool create -f pool raidz ada0 ada1 ada2 # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT pool 456G 144K 456G 0% ONLINE -
160GB×3なら480GBだが、456GBである。 管理領域分目減りしているのか、例の1000≒1024問題か。
# zpool get all pool NAME PROPERTY VALUE SOURCE pool size 456G - pool used 144K - pool available 456G - pool capacity 0% - pool altroot - default pool health ONLINE - pool guid 14571947573095805517 default pool version 15 default pool bootfs - default pool delegation on default pool autoreplace off default pool cachefile - default pool failmode wait default pool listsnapshots off default
だったので、
# zpool set autoreplace=on pool
を実行しておく。
ファイルシステムとしては、バックアップ用と共有用を作成する。 gzipで圧縮するようにしてみたが、 このマシンには荷が重いだろうか。
# zfs create pool/backup # zfs set compression=gzip pool/backup # zfs create pool/public # zfs set compression=gzip pool/public
CIFSなサーバーにするためには、
# zfs set sharesmb=on pool/public Unsupported share protocol: 1.
ではダメ。 やはりsambaの出番である。
まずはシステムのアップデート。 最近はコマンド一発である。
# freebsd-update fetch # freebsd-update install
あとはportversionで確認して延々とportupgrade。 フラッシュメモリの書き換え回数は大丈夫かなあ。
フラッシュメモリ上でportsをコンパイルするとかなり遅い。 書き換え回数も気になるので、
$ zfs list NAME USED AVAIL REFER MOUNTPOINT pool 1.75G 297G 34.6K /pool pool/backup 1020M 297G 1020M /pool/backup pool/db 90.3M 297G 90.3M /pool/db pool/ports 680M 297G 680M /usr/ports pool/public 28.0K 297G 28.0K /pool/public pool/tmp 37.3K 297G 37.3K /tmp
に加えて/etc/portsnap.conf にWORKDIR=/pool/db/portsnap を追記し、 誰でも読み書きできる/pool/db/portsnap を作っておいた。 これで大体の読み書きはzfs上で行うはず。
かつては一から自分でrc.firewallを書いたものだが、 どうも穴がありそうで怖い。 最近ではシステムにいくつかサンプルが用意されているので、 それをベースにしてみた。 まずは/etc/rc.confに
firewall_enable="YES" # Set to YES to enable firewall functionality firewall_logging="YES" # Set to YES to enable events logging firewall_type="simple" firewall_simple_iif="bge0" # Inside IPv4 network interface. firewall_simple_inet="192.168.x.0/24" #Inside IPv4 network address. firewall_simple_oif="re0" #Outside IPv4 network interface. firewall_simple_onet="221.116.88.184/29" #Outside IPv4 network address. firewall_simple_iif_ipv6="bge0" #Inside IPv6 network interface. firewall_simple_inet_ipv6="2002:dd74:xxxx:1::/64" #Inside IPv6 network prefix. firewall_simple_oif_ipv6="stf0": Outside IPv6 network interface. firewall_simple_onet_ipv6="2002:dd74:58bb::/16" #Outside IPv6 network prefix.
とした。
これだとコメントにあるようにDNSとNTPしか通らないので、 /etc/rc.firewallに
# Allow TCP through iif ${fwcmd} add pass all from any to me via ${iif} ${fwcmd} add pass all from me to any via ${iif} # Allow access to our ssh ${fwcmd} add pass all from any to me 22 setup # Allow ssh to the world ${fwcmd} add pass all from me to any 22 keep-state
を追加してみた。
部品寄せ集め6号と入れ替え。 DNSに関しては、 ProLiant ML115 と同じようにunboundとnsdを使った。
OSを8.3-RELEASEにして、ZFSをアップデート。 dedupを使ってみる。 ついでに/boot/loader.confに書いたZFS関係のパラメーターはコメントアウト。
今日現在で
tom-a@mercury$ zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT pool 696G 6.45G 690G 0% 1.00x ONLINE - tom-a@mercury$ zfs get all pool/backup NAME PROPERTY VALUE SOURCE pool/backup compressratio 2.09x - pool/backup compression gzip local
と、dedupはともかくbackupには結構圧縮が効いている。
気がつくと1TBのハードディスクが三つ余っていたので、 ZFSなハードディスクと入れ替えた。 いろいろとディレクトリを作って、最終的には
tom-a@mercury$ zfs list NAME USED AVAIL REFER MOUNTPOINT move 1.94G 585G 1.94G /move pool 38.5G 1.75T 42.6K /pool pool/backup 1.69G 1.75T 1.69G /backup pool/db 92.1M 1.75T 92.1M /pool/db pool/home 559M 1.75T 559M /home pool/ports 448M 1.75T 448M /usr/ports pool/public 35.0G 1.75T 35.0G /pool/public pool/tmp 45.3K 1.75T 45.3K /tmp pool/var 569M 1.75T 569M /var tom-a@mercury$
といった感じである。
なぜか10:30ごろにリブートがかかり、 起動途中でフリーズ。 帰宅後に一旦電源を落とし、 ついでに掃除機で埃を吸ってから再起動。 今度は問題なく起動。 ログには何も記録されておらず、 リブートの原因は不明。
なんだかんだと1.5TBに2TBのハードディスクが余ったので、 3台で構成していたraidzを4台構成に変更。 ここで一端destroyして、 createしなおさないといけないのが、zfsの泣き所。
tom-a@mercury$ zpool status pool: pool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ada0 ONLINE 0 0 0 ada1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 errors: No known data errors tom-a@mercury$ zfs list NAME USED AVAIL REFER MOUNTPOINT pool 157G 2.52T 93.4M /pool pool/backup 15.2G 2.52T 15.2G /backup pool/home 1.40G 2.52T 1.40G /home pool/ports 663M 2.52T 663M /usr/ports pool/public 43.4K 2.52T 43.4K /pool/public pool/timemachine 139G 2.52T 139G /pool/timemachine pool/tmp 118K 2.52T 118K /tmp pool/var 625M 2.52T 625M /var
で、こんな感じに。
MacOSがLionになったあたりから、 CIFSなファイルサーバーではTime Machineが使えなくなった。 で、調べてみると最新のnetatalkでafpをしゃべらせるとOKらしい。 ということで、netatalkの2.2.4をportsからインストール。 ほぼデフォルトのまま、/usr/local/etc/AppleVolumes.default に
/pool/timemachine "Time Machine" options:tm
を追加した。 もちろん、/pool/timemachine はzpoolから切り出してある。
drobo FSだと実用的な時間では終わらないが、 Microserverならまあなんとかなりそうである。
CrystalDiskMark 3.0.2で簡単なベンチマークをとってみた。
条件 | compression on | compression off | ||
---|---|---|---|---|
dedup on | dedup off | dedup on | dedup off | |
連続読み出し | 51.58MB/s | MB/s | 52.29MB/s | 51.49MB/s |
連続書き込み | 35.11MB/s | MB/s | 49.71MB/s | 89.71MB/s |
ランダム読み出し (512KB) |
50.74MB/s | MB/s | 50.89MB/s | 50.92MB/s |
ランダム書き込み (512KB) |
44.74MB/s | MB/s | 52.85MB/s | 12.23MB/s |
ランダム読み出し (4KB) |
6.827MB/s | MB/s | 6.864MB/s | 6.812MB/s |
ランダム書き込み (4KB) |
0.453MB/s | MB/s | 0.514MB/s | 0.624MB/s |
ランダム読み出し (4KB QD32) |
11.06MB/s | MB/s | 0.514MB/s | 1.423MB/s |
ランダム書き込み (4KB QD32) |
0.179MB/s | MB/s | 0.365MB/s | 0.904MB/s |
なんとcompression on, dedup offでは、 load averagesが20を超えてネットワーク書き込みエラーを起こしてしまう。 それを除いても、 CPUが非力なせいかcompression off, dedup offが一番良さそうである。
玉突き衝突的にST31000333ASをST2000DM001に入れ替えて、
$ zpool replace pool ada1
を実行。 当初はresilverに27時間、そのうち68時間必要などと表示されたが、 最終的には5時間ほどで終了。
もう一つのST31000333ASをWD15EARSに入れ替えて、
$ zpool replace pool ada1
を実行。 今回は14時間ほどでresilver終了。 Windowsマシンでは読み出しエラーが出たハードディスクだが、 resilver中もエラーは無し。
仕事が一段落したので、FreeBSD 9.1をクリーンインストールしてみた。 ブートはUSBフラッシュメモリから。 いやー、便利な世の中になったなあ。
# /usr/sbin/pkg
で、パッケージマネージャーをpkgngに切り替える。
CPUTYPE=athlon64 WITHOUT_X11=yes WITH_PKGNG=yes
として/etc/make.conf を作成。
ports collectionをfetchして、まずはnsdとunboundをインストール。 これは対外的なサービスなので、復旧させないとまずい。 ついでruby 2.0をインストールしてから、portupgradeをインストール。 と思ったらportupgradeはruby 1.8.7依存だった。
# pkg remove ruby
で削除してから、あらためてruby 1.8.7をインストール。 portinstallでbash をインストールした後pkg autoremove を実行したら、 なんとperlまで削除されてしまった。 いいのかねえ。 あ、munin-node をインストールしたら、 やっぱりperl も再インストールだ。
さて、問題のemacs である。 ここ最近、make.conf でnox11を指定しても、 インストール対象としてemacs-nox11 を指定しても、 どうもX Window System関係のファイルがばかすかインストールされている。 FreeBSD 9.1ではどうだろうか。
# portinstall emacs-nox11
としてみた。 なんか、実にあっさりとインストールできた。 X Window Systemをいれた形跡はない。 うーん、これはML115も9.1にアップデートすべきだなあ。
zfsは、
zpool create pool mirror ada0 ada2 zpool add pool mirror ada1 ada3 zfs create pool/backup zfs create pool/public zfs create pool/timemachine zfs set quota=500GB pool/timemachine
と、1.5TB×2なミラーと、2TB×2なミラーをまとめる形にしてみた。 RAIDで言えば、1+0といったところだろうか。
# zpool status pool: pool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ada0 ONLINE 0 0 0 ada2 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 ada1 ONLINE 0 0 0 ada3 ONLINE 0 0 0 errors: No known data errors
こんな感じである。 ベンチマークは
種別 | raidz | mirror | 性能比 |
連続読み出し | 51.49MB/s | 59.45MB/s | +15% |
連続書き込み | 89.71MB/s | 102.5MB/s | +14% |
ランダム読み出し{{br}}(512KB) | 50.92MB/s | 60.02MB/s | +18% |
ランダム書き込み{{br}}(512KB) | 12.23MB/s | 99.32MB/s | +712% |
ランダム読み出し{{br}}(4KB) | 6.812MB/s | 9.32MB/s | +37% |
ランダム書き込み{{br}}(4KB) | 0.624MB/s | 8.627MB/s | +1283% |
ランダム読み出し{{br}}(4KB QD32) | 1.423MB/s | 13.91MB/s | +878% |
ランダム書き込み{{br}}(4KB QD32) | 0.904MB/s | 3.940MB/s | +336% |
と、特にランダム書き込みに関して顕著な性能アップである。 OSのバージョン違いも多少は影響しているかもしれないが、 やはりRAID5のデータを計算するのは結構重い処理のようだ。
samba 3.6でCIFSなサーバーにして、 400個26GBくらいのデータをコピーしたら、 なんかつっかえつっかえという感じで20MB/sくらい。 でも、topコマンドで見ているとraidzでは頻発していたzioといったstatusが出てこない。 で、statusがtx->txの時にはデータを転送していない。 同時並行処理は難しいのか、同期書き込みでもやっているのか。 2.5GBくらいのデータならメモリにキャッシュできるのか、 100MB/sくらいで書き込めるんだけど。
netatalkは2.2.4をインストール。 とりあえずMacBook Proから読み書きできるのは確認した。 しかし、netatalkをインストールしたら cairo-1.10.2_5,2 Vector graphics library with cross-device output support なん代物までインストールされたような気がする。 いったい何に使うんだか。 速度的にはraidzからmirrorに変更したのが効いているようで、 TimeMachineのバックアップ時にピークでもせいぜい数MB/sだった書き込み速度が40MB/sくらいになっている。 とはいえ、FreeBSD側でtopコマンドを使ってみるとzioの嵐である。 zfsにzilを追加するべきなのかも。
こんなこともあろうかと、 インストール時に5GBほどfreebsd-zfsな領域をシステムディスクに確保しておいた。 SSDほどの効果は見込めないが、 同じディスクに書くよりはマシだろう。
# zpool add pool log ada4p2
で追加した。 ピークで60MB/sと、気持ち書き込みは早くなったような気がする。
3月26日にnetatalk 3.0.3が出たらしいので2.2.4から切り替えようと思ったら、 portsに入っていたのは3.0.2だった。 まあそれでもいいかと、アップグレード。 pkg removeで古いnetatalkを削除して、 他にも削除できそうなパッケージを削除。 その後は普通にportsでインストール。
さっそくTime Machineのバックアップ先にしてみる。 netatalk 2.2.4の時は8時間かかると表示されたが、今回は4時間。 うそかほんとか知らないが、だいぶ早くなったようだ。
muninでモニタしたグラフを見ても、 だいぶ早くなっている。 topコマンドで見ていると、 afpdはだいぶ忙しそうで時々zioが出るが、 cnid_dbdはほとんど負荷がかかっていないようす。 この辺が高速化の秘密かもしれない。