自宅ファイルサーバ構築メモ その3 FreeNAS 導入 最強のNAS OS = FreeNAS
ココ数日毎晩OS入れなおしたり、Diskフォーマットし直したりして日々勉強しております。遂に理想のOSが見つかった気がしているWWDCの夜です。
FreeNAS
かなーり有名だけど今までしょぼいだろうと食わず嫌いで使ったこと有りませんでした。
公式ページによると
FreeNAS is an embedded open source NAS (Network-Attached Storage) distribution based on FreeBSD, supporting the following protocols: CIFS (samba), FTP, NFS, TFTP, AFP, RSYNC, Unison, iSCSI (initiator and target) and UPnP. It supports Software RAID (0,1,5), ZFS, disk encryption, S.M.A.R.T/email monitoring with a WEB configuration interface (from m0n0wall). FreeNAS can be installed on Compact Flash/USB key, hard drive or booted from LiveCD.
FreeNASは、FreeBSDをベースとしたOSSなNASエンベッドですよ。
サポートするプロトコルは、CIFS (samba), FTP, NFS, TFTP, AFP, RSYNC, Unison, iSCSI (initiator and target) and UPnPです。WebGUIを備えていて、Software RAID (0,1,5), ZFS, disk encryptionを利用できS.M.A.R.Tによる監視をemailで通知出来ます。
FreeNASはLiveCDからブートして、CFやUSBメモリーにインスコ出来ます。
と書いてある。必要十分な対応プロトコルが利用できる上、今回の目玉ZFSも利用可能さらに低運用コストに直結しそうなWebGUIも備えてる。必要とあればCLIでも操作可能(SSHでのログインもOK)ならば、使わない手はない。さらに、拡張機能でVirtualBoxもインストール出来るのでNASなのに仮想サーバーも動かすことが出来る。重いインスタンスはESXiで動かすとしてもDHCPとかDNSとかは余裕でこなしてくれそう。
インスコ等
今回利用したVersionは、7.2(5226) で、2010/06/06で出たばかりのやつ。なんとReadZillaとLogzillaに対応したらしくBoot用に買ったIntelSSDをリードキャッシュに利用すればさらなる高速化が期待できそう。
今回一連のインスコ祭りで見つけた、新しいOSのカンタンで速いインスコの仕方。LiveCDの.isoファイルをVMwareFusionで起動する。起動後にUSBメモリーをMacに差し込みVMへ割り当てる。
- メリット
- かったるいCD焼きが要らない
- 標準のインストーラでUSBディスクを作成出来る(=LiveCD.isoだけで行ける)
- ddするためには、isoをimgに変換したりUSBをアンマウントしたり色々手間がかかるうえ、はやくくコピれるわけではない
- デメリット
- VMwareFusionが必要 > VirtualBoxはVM起動後のUSBメモリーの扱いが上手くいきにくい
- それなりに高速なPCがないと快適ではない
この1週間でさまざまなOSをインスコしていて結局のところCDから起動してインストールするメリットが全く無いことがわかった。起動もインストールも遅いし、そもそも焼くのが遅いしメディアがごみになる。光学ドライブも必要だ。
今回のイメージは“環境さんぷる”さんの所を参考にさせてもらった、正直このBlogがなかったらFreeNASをインスコしなかったかも知れない。
http://shell.peach.ne.jp/aoyama/ めっちゃありがたやです。
ZFS落とし穴
FreeNASをインスコしたもののzpoolが全然組めない病にかかっていた。仮想デバイスとやらを組んでも、各パラメーターが不明の表示になってしまう。どこぞのBBSに、HDDを一旦NTFSで確保してから、Disk>FormatでZFS Poolにフォーマットしなおすと行けるらしいと言うことだった。もう一台の兄弟サーバはそれでうまくったのだが、自分のサーバが全く不明状態から抜け出せないでいた。
CLIも使えるので、OSOLでやったことと全く同じ手順でzpool createするとさくっと作られるもののマウントポイントやらSMBとの連携がOSOLと違うために微妙に満足行かない。
その後もWebGUIから幾度もフォーマットを試みるも撃沈。その後フォーマットをなんどもしているのにCLIから、zpool listが返ってくることに気づいて、zpool destroyしてみた。すると、それまでの2日間まったく不明状態だったzpool表示が嘘のように、ノートラブルでzpoolを組むことが可能だった。zfsの事を全然理解していないけど、diskをWebGUIからフォーマットしてもDiskのどこかにzpoolの情報が残っていてそいつが邪魔しているようだった。
FreeNASで、zfsの設定でzpoolが正常に組まれないときには
- zpool destory [pool name]
- 各DiskをNTFS Formatで確保し、Disk > Formatで改めてZFSにフォーマットしなおす
と言う手順を追うことで、組み込まれた。
多分、事前にOSOLでzpool組んでいたのが悪さをしていた気がする。>OSOLとFreeNASのZFSって互換性有るのかな?
各プロトコル 各OS 各ユーザ間のIDMAP問題
FreeNASの素晴らしいところが、何の設定もせずにファイルのOWNERに矛盾が発生しないところ。AFPでOSXから作成したファイルをLinuxでNFSで編集し、WindowsでCIFSで読み込んでも読み書きに一切問題が発生せず、Windows上でもオーナーがFreeNAS\a2c といった用に表示される。当たり前の用にやってしまっている。とても素晴らしいことですね。
L2ARC or Log キャッシュ
CLIからしか追加出来ないけど、SSDを使ったキャッシュがFreeNASも利用可能になっている。
HDDのデータの読み書きにメインメモリーをキャッシュとして使うのに加え、HDDよりランダムIOが高速なSSDを利用する事でさらにパフォーマンスアップが出来るらしい。モノは試しで組み込んでみた。
新規に刺したSSD(Intel40GB)のデバイスが/dev/ad14s1して認識されている。プール名:poolにリードキャッシュとして追加
# zpool add pool cache /dev/ad14s1
1行でOK。これでリードが速くなるみたい。メインメモリーが8GBあるのでどこからSSDに行くか分からないので体感出来ない。
っていうか、そもそも1人で使うNASだと有線の1GBの方が全然ボトルネックと言うことにもっと前から気づいているんだけど
もう後戻り出来ない。
ローカルでddしてみた。3GBのファイルをブロックサイズ128kと1Mでそれぞれ作ってみる。
[atusi@freenas /mnt/pool/data/test]$ dd if=/dev/zero of=./logZilla.img bs=128k count=24000 24000+0 records in 24000+0 records out 3145728000 bytes transferred in 4.507115 secs (697947115 bytes/sec) [atusi@freenas /mnt/pool/data/test]$ dd if=/dev/zero of=./logZilla.img bs=1M count=3000 3000+0 records in 3000+0 records out 3145728000 bytes transferred in 4.710834 secs (667764558 bytes/sec)
128Kでも1Mで作っても、660MB/sec出てる。これだけ速ければ何の問題もなさそう。
24GBのmediaデータを有線でMBPからファイルサーバーに送ってみた
実際は5分強でコピーが終わった330秒で24GBなので、72MB/sくらい素敵
FreeNASは、トラフィックとCPUをリアルタイムでグラフ表示してくれる機能がついてるんだけどトラフィックのグラフ
これを見ると、90MB/s位出てるんだけど定期的に0に落ちる時がある。ファイルの切れ目という感じじゃない。コレのせいでアベレージが落ちているぽいので原因を知りたいところ。
NFSなUbuntuの方がAFPでSSDなOSXより速い
Ubuntuでも読み書きテストしみてた。有線で接続しているやつ、5GBのファイルの読み書きddテスト(bsは1M)
localadmin@ubuntuDell:/mnt/data/test$ sudo time dd if=/dev/zero of=./ubuntu.img bs=1M count=5000 5000+0 記録始め 5000+0 記録終わり 5242880000 バイト (5.2 GB) コピー終了, 63.345 s, 82.8 MB/s 0.01user 9.97system 1:03.55elapsed 15%CPU (0avgtext+0avgdata 8112maxresident)k 48inputs+10240000outputs (1major+559minor)pagefaults 0swaps localadmin@ubuntuDell:/mnt/data/test$ sudo time dd of=/dev/null if=./ubuntu.img bs=1M 5000+0 記録始め 5000+0 記録終わり 5242880000 バイト (5.2 GB) コピー終了, 45.388 s, 116 MB/s 0.03user 7.54system 0:45.40elapsed 16%CPU (0avgtext+0avgdata 8112maxresident)k 10240032inputs+0outputs (1major+558minor)pagefaults 0swaps
書き込みは82MB/s
読み込みは116MB/s
ファイルの中身がzeroでどれだけ意味があるのか甚だ疑問だけど、適当にファイルをコピーしても体感で速いのでよしとする。
最後にローカルで5GBファイルの読み書きしテスト
freenas:/mnt/pool/data/test# dd of=./freenas.img if=/dev/zero bs=1M count=5000 5000+0 records in 5000+0 records out 5242880000 bytes transferred in 7.918200 secs (662130281 bytes/sec) freenas:/mnt/pool/data/test# dd if=./ubuntu.img of=/dev/null bs=1M 5000+0 records in 5000+0 records out 5242880000 bytes transferred in 3.510197 secs (1493614208 bytes/sec)
書き込みは660MB/s
読み込みは1493MB/s
ほんとかよ!って言うくらい速い。速く10Gな世界に行きたい