まとめ

  • 検証環境であることから、性能を少しでも稼ぐのとズボラな設定を良しとし 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

QUADstor

オープンソースの SCSI ターゲット。FC でも iSCSI でも使えますが、仮想マシンとしたときは iSCSI ターゲットとして使うのが良いでしょう。シンプロビジョニング、圧縮、重複排除、さらには VAAI-Block に対応しています。Web UI から直感的に設定できます。以前は CentOS 7.x に対応していませんでしたが、着実にバージョンを重ね 現在は CentOS 7.x に対応しています。そのうちコチラを Home Lab の標準のデータストアにしたいところ。

昔の記事は こちら

LIO (Linux-IO Target)

LIO

現時点の Linux カーネル標準の SCSI ターゲット。targetcli コマンドで構成します。VAAI 対応とありますが、未だに VAAI Supported な状態で接続したことがありません。

Nexenta, Napp-IT

Nexenta
Napp-IT

いずれも OpenSolaris の後継の Illumos 由来のストレージになります。NexentaStor は、OS の NexentaCore からストレージスタック および ストレージ管理ソフトウェアまでを一括してリリースしています。Napp-IT はストレージ管理ソフトウェアのみを提供し、OmniOS、OpenIndiana などにインストールして利用します。いずれも COMSTAR を利用しているので VAAI-Block に対応し、Nexenta に至っては beta ながら VAAI-NAS モジュールも 入手できます (商用ならば Release Build があるのかしら ?)。

NetApp ONTAP Simulator

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 などでたら検証がさらに捗るな…と妄想するのです。