格安サーバで作る ESXi+NFS(ZFS) の仮想マシン環境(2)
暑い日が続きますが皆様いかがお過ごしでしょうか。
最近、週に2回ほど熱いお風呂につかるようにしたのですが、寝付きがとても良くなりました。
肩こりも取れますので、オフィスの冷房で肩こりが酷い方にもお勧めです!
・NFS外部ストレージサーバ
OS: OpenIndiana 151a (for servers)
※今回はZFSを使うのでOpenSolaris系OSの正統後継である「OpenIndiana」をインストールしたいと思います。最近ではFreeBSDやLinuxでもZFSを使えますが、やはり安定性を考えると実装元であるSolaris系OSで使うべきだと思います。
・構成図
今回は右側の「fsrv01」をセットアップします。
※余談ですが、2.5インチのSSDをこのスロットにきれいに収めるには2.5→3.5変換ケースのSilverStone「SST-SDP09」が大変おすすめです。余計なチップは搭載されておらず、延長コネクタのような構造のため相性問題など出ません。
起動時に、F9でBIOS設定画面へ。
[Advanced Options]→[SATA Controller Options]→[Embedded SATA Configuration]
"Enable SATA AHCI Support"へ変更
[Advanced Options]→[SATA Controller Options]→[Drive Write Cache]
"Enable"へ変更 (信頼性優先ならDisableで)
OpenIndiana 151a (for servers) をインストールしていきます。
以降注意が必要なところのみ抜粋します。
TO select the Keyboard layout, enter a number [default 47]: 23
※23番日本語キーボードを選択。
TO select the language you wish to use, enter a number [default is 7]: 7※ここはそのまま7で。テキスト版なので日本語は出ません。
Disks※内部に挿したUSBを選択。
Fdisk Partitions: ~
※「Use the whole disk」を選択。
Network※[Computer Name:]に「fsrv01」を入力。※カーソルを下段の「None」にあわせる。
あとは画面の指示に従ってインストールしてください。
インストール終了後、再起動後にやるべきことは、
- rpool(システム領域)のatimeをoffにする
- ipとネットワークの設定
- ストレージプールの作成とNFS設定
- swap領域をrpoolからdatapoolに移す
どんどんいきましょう。
1. rpool(システム領域)のatimeをoffにする
まずシステム領域のatime(access time)を無効化しましょう。
root@fsrv01:~# zfs set atime=off rpool
今回は必要最低限の設定しかしませんので、詳しく勉強したい方はORACLE社のドキュメント「ネットワークスタックの概要」をご覧ください。
root@fsrv01:~# echo '192.168.0.254' > /etc/defaultrouter
root@fsrv01:~# ipadm create-addr -T static -a 192.168.0.100/24 e1000g0/v4
root@fsrv01:~# ipadm create-addr -T static -a 10.255.255.100/24 e1000g1/v4
上から、デフォルトゲートウェイの設定、表ネットワークのip設定、 NFSネットワークのip設定、になります。
ここで設定反映のため一度再起動してください。
zpoolコマンドを使ってzfsストレージプールを作成していきます。
まず、formatコマンドを使ってHDDの認識状況を確認しましょう。
root@fsrv01:~# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c4t0d0
/pci@0,0/pci103c,330d@1f,2/disk@0,0
1. c4t1d0
/pci@0,0/pci103c,330d@1f,2/disk@1,0
2. c4t2d0
/pci@0,0/pci103c,330d@1f,2/disk@2,0
3. c4t3d0
/pci@0,0/pci103c,330d@1f,2/disk@3,0
Specify disk (enter its number): ^D
しっかり認識されていますね。CTRL+Dで抜けて、続けて以下のコマンドを実行します。
root@fsrv01:~# zpool create datapool mirror c4t0d0 c4t1d0 mirror c4t2d0 c4t3d0
これで、「datapool」という名前のストレージプールが、raid10で作成されます。なんとお手軽なのでしょう。
zpool statusコマンドで確認してみましょう。
root@fsrv01:~# zpool status datapoolpool: datapoolstate: ONLINEscan: none requestedconfig:NAME STATE READ WRITE CKSUMdatapool ONLINE 0 0 0mirror-0 ONLINE 0 0 0c4t0d0 ONLINE 0 0 0c4t1d0 ONLINE 0 0 0mirror-1 ONLINE 0 0 0c4t2d0 ONLINE 0 0 0c4t3d0 ONLINE 0 0 0
mirror-0とmirror-1がそれぞれRAID1、それをストライプしてdatapoolが構成されているのがわかります。
また作成時に自動的に/datapoolとしてマウントされていますので、今回はこのまま使います。
続けてNFS用のデータセットの作成と、NFSエクスポートを一気にやってしまいます。
root@fsrv01:~# zfs create datapool/nfs01
root@fsrv01:~# zfs set sharenfs=rw,root=@10.255.255.0/24 datapool/nfs01
たった2行です。上がデータセットの作成、下がNFSのエクスポートの設定になります。
エクスポート設定について補足すると、"root="はLinuxでいうところの"no_root_squash"、"@10.255.255.0/24"はこのネットワークに対して許可を出すという意味合いです。
USBメモリにインストールしたので、swap領域もUSBメモリ上の「rpool/swap」にできてしまっています。
立派なストレージプール「datapool」ができましたのでこちらに移してしまいましょう。
root@fsrv01:~# zfs create -V 8G -b 4k datapool/swap
root@fsrv01:~# swap -a /dev/zvol/dsk/datapool/swap
root@fsrv01:~# swap -lh
swapfile dev swaplo blocks free
/dev/zvol/dsk/rpool/swap 179,2 8 2.0G 2.0G
/dev/zvol/dsk/datapool/swap 179,3 8 8.0G 8.0G ←追加された方
rpoolのswap領域をswapから外して消します。
root@fsrv01:~# swap -d /dev/zvol/dsk/rpool/swap
root@fsrv01:~# zfs destroy rpool/swap
root@fsrv01:~# swap -lh
swapfile dev swaplo blocks free
/dev/zvol/dsk/datapool/swap 179,3 8 8.0G 8.0G
おまけ
せっかくなのでbonnie++でベンチ取ってみました。
root@fsrv01:~# bonnie++ -d /datapool/ -n 128 -u 0
~中略~
Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
fsrv01 8G 92723 98 197266 21 115933 20 100931 99 327860 20 1439 3
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
128 20072 93 182108 99 26543 96 22806 98 206876 84 24443 97
シーケンシャルでwrite 200MB/s, read 300MB/s程度出ているので、NFSで利用することを考えると十分な性能ですね。
どうでしょうか、非常に簡単にNFSサーバが構築できたかと思います。
NFS以外にもSMB共有の設定なども簡単にできますので、興味のある方はORACLE社のドキュメント「ZFSファイルシステム」を御覧ください。
さて、次回はESXiのストレージとしてNFSを登録、その上に仮想マシンをつくってみます。
「格安サーバで作る ESXi+NFS(ZFS) の仮想マシン環境(3)」へ続きます。