vSphere Home Lab 向けの CentOS 7.x NFS Server
まとめ
- 検証環境であることから、性能を少しでも稼ぐのとズボラな設定を良しとし Firewalld や iptables は Off にする
- CentOS の NFS Server は、/etc/sysconfig/nfs の RPCNFSDARGS を “-N4 -N4.1 -V3” とすることで NFS バージョン を 3 とする
はじめに
検証用の Nested vSphere 向けのストレージとして、最近 CentOS 7.x の NFS をセットアップしたのでその備忘録になります。
エラー
ESXi のコマンドラインでも、vSphere Client でも、Web Client からでも良いのですが、CentOS 7.x の素の NFS サーバーをマウントしようとすると、以下のようなエラーがでます。
[root@esxi-01a:~] esxcli storage nfs add -H 192.168.120.201 -s /exports/nfs-01a -v nfs-01a
Sysinfo error on operation returned status : The NFS server does not support MOUNT version 3 over TCP. Please see the VMkernel log for detailed error information
vSphere 6.0 から NFS バージョン 4.1 がサポートされましたが、CentOS 7.x のサーバー側が NFS バージョン 4.0 を返してしまうのか上記エラーとなります。
対応
これを修正するためには CentOS の NFS サーバーの設定を変更します。具体的には /etc/sysconfig/nfs の RPCNFSDARGS パラメーターに “-N4 -N4.1 -V3” を追加します。ここでは NFS バージョン 3 のみ有効としています。
サポート製品 > マニュアル > Red Hat Enterprise Linux > 7 >移行計画ガイド > 3.7. ネットワーク設定
# Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
RPCNFSDARGS="-N4 -N4.1 -V3"
(一部抜粋)
設定を変更した後は
[root@stg-l-01a etc]# systemctl stop nfs.service
[root@stg-l-01a etc]# systemctl start nfs.service
[root@stg-l-01a etc]# systemctl status nfs.service
nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled)
Active: active (exited) since Mon 2015-08-31 22:14:04 JST; 5s ago
Process: 2694 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 2693 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 2694 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
Aug 31 22:14:03 stg-l-01a.corp.local systemd[1]: Starting NFS server and ser....
Aug 31 22:14:04 stg-l-01a.corp.local systemd[1]: Started NFS server and serv....
Hint: Some lines were ellipsized, use -l to show in full.
[root@stg-l-01a etc]#
などとして NFS サーバーを再起動させます。この後は esxcli でも Web Client でも、お好みのクライアントで NFS データストアを追加します。
ちなみに vSphere 6.0 の NFS 4.1 は、いくつかサポートされていない機能があります。VAAI-NAS、Virtual Volumes は NFS 4.1 と組み合わせて使うことが出来ません。また、pNFS (パラレル NFS) も利用することが出来ません。
参照: vSphere ストレージ > データストアでの作業 > ネットワーク ファイル システム データストアについて > NFS プロトコルと ESXi
その他のストレージ
Home Lab 向けのストレージとしては様々なモノが、ここでは私が触ったことがあるものをご紹介します。すみません、BSD 系は使うことがなかったので紹介していないです…。
QUADstor
オープンソースの SCSI ターゲット。FC でも iSCSI でも使えますが、仮想マシンとしたときは iSCSI ターゲットとして使うのが良いでしょう。シンプロビジョニング、圧縮、重複排除、さらには VAAI-Block に対応しています。Web UI から直感的に設定できます。以前は CentOS 7.x に対応していませんでしたが、着実にバージョンを重ね 現在は CentOS 7.x に対応しています。そのうちコチラを Home Lab の標準のデータストアにしたいところ。
昔の記事は こちら
LIO (Linux-IO Target)
現時点の Linux カーネル標準の SCSI ターゲット。targetcli コマンドで構成します。VAAI 対応とありますが、未だに VAAI Supported な状態で接続したことがありません。
Nexenta, Napp-IT
いずれも OpenSolaris の後継の Illumos 由来のストレージになります。NexentaStor は、OS の NexentaCore からストレージスタック および ストレージ管理ソフトウェアまでを一括してリリースしています。Napp-IT はストレージ管理ソフトウェアのみを提供し、OmniOS、OpenIndiana などにインストールして利用します。いずれも COMSTAR を利用しているので VAAI-Block に対応し、Nexenta に至っては beta ながら VAAI-NAS モジュールも 入手できます (商用ならば Release Build があるのかしら ?)。
NetApp ONTAP Simulator
NetApp のパートナー企業であれば、おそらくダウンロードできます。が、Nested vSphere 上の仮想マシンの I/O 性能は、その作り上かなり遅くなるので Lab 向けではないと思います。ディスクをファイルとして実装しているので、RAID の構成次第では、1 I/O が実際には 10 I/O にも 20 I/O にもふくれあがるのでかなり速度は遅くなります。SRM で SRA との挙動を調べるたり、クローンだけを行うのであればありかと。
昔の記事は こちら
もしかなうのならば…
NetApp WAFL や Solaris の ZFS を初め、最近のストレージ ベンダーのファイルシステムは基本的に COW (Copy On Write) です。COW は VM のクローンと非常に相性が良く、NetApp、Pure Storage、XtremeIO などでは、VAAI を経由するとデータの実体ではなくメタデータのみをコピーし、非常に高速にクローンを行います。Linux の Btrfs も COW であり、さらに cp コマンドに “-reflink” を付けるとファイルコピーでも COW を適用してくれます。Btrfs のガイドでは、仮想マシンにこれを適用するのは推奨していませんが、Btrfs でフォーマットされた NFS データストア向けの VAAI-NAS Plugin などでたら検証がさらに捗るな…と妄想するのです。