CentOS 7
Sponsored Link

Gluster 4.0 : GlusterFS + NFS-Ganesha
2018/03/31
 
NFS-Ganesha をインストールして、GlusterFS ボリュームを NFS マウントできるようにします。
NFS-Ganesha でサポートされる NFS プロトコルは v3, v4.0, v4.1, pNFS です。
[1] 対象のボリュームで Gluster 内蔵 NFS 機能を無効にしておきます。
Gluster 内蔵 NFS 機能は、公式に非推奨となっており、NFS-Ganesha の利用が推奨されています。
また、NFS サーバーが稼働中の場合も停止しておきます。
# [nfs.disable: on] となっていれば OK (デフォルト)

[root@node01 ~]#
gluster volume get vol_distributed nfs.disable

Option                                  Value
------                                  -----
nfs.disable                             on

# もし [nfs.disable: off] であれば無効に変更

[root@node01 ~]#
gluster volume set vol_distributed nfs.disable on

volume set: success
# NFS サーバー稼働中の場合は停止

[root@node01 ~]#
systemctl stop nfs-server

[root@node01 ~]#
systemctl disable nfs-server

[2] 任意の GlusterFS ボリューム構成ノードで NFS-Ganesha をインストールして設定します。
[root@node01 ~]#
yum --enablerepo=centos-gluster40 -y install nfs-ganesha-gluster
[root@node01 ~]#
mv /etc/ganesha/ganesha.conf /etc/ganesha/ganesha.conf.org

[root@node01 ~]#
vi /etc/ganesha/ganesha.conf
# 新規作成

NFS_CORE_PARAM {
    # NFSv4 Pseudo パスを NFSv3 でもマウント可能にする
    mount_path_pseudo = true;
    # NFSプロトコル
    Protocols = 3,4;
}
EXPORT_DEFAULTS {
    # デフォルトのアクセスモード
    Access_Type = RW;
}
EXPORT {
    # 任意の一意なID
    Export_Id = 101;
    # Gluster ボリュームのマウントパス
    Path = "/vol_distributed";
    FSAL {
    	# 任意の名前
        name = GLUSTER;
        # このノードのホスト名 または IPアドレス
        hostname="10.0.0.51";
        # Gluster ボリューム名
        volume="vol_distributed";
    }
    # root Squash 設定
    Squash="No_root_squash";
    # NFSv4 Pseudo 用の疑似ファイルシステムのパス
    Pseudo="/vfs_distributed";
    # 許可するセキュリティオプション
    SecType = "sys";
}
LOG {
    # デフォルトのログレベル
    Default_Log_Level = WARN;
}

[root@node01 ~]#
systemctl start nfs-ganesha

[root@node01 ~]#
systemctl enable nfs-ganesha
# マウント確認

[root@node01 ~]#
showmount -e localhost

Export list for localhost:
/vfs_distributed (everyone)
[3] SELinux を有効にしている場合は、ポリシーの変更が必要です。
[root@node01 ~]#
vi ganeshanfsd.te
# 以下の内容で新規作成

module ganeshanfsd 1.0;

require {
        type random_device_t;
        type portmap_port_t;
        type reserved_port_t;
        type ganesha_t;
        class capability dac_override;
        class tcp_socket name_connect;
        class chr_file getattr;
}

#============= ganesha_t ==============
allow ganesha_t portmap_port_t:tcp_socket name_connect;
allow ganesha_t random_device_t:chr_file getattr;
allow ganesha_t reserved_port_t:tcp_socket name_connect;
allow ganesha_t self:capability dac_override;

[root@node01 ~]#
checkmodule -m -M -o ganeshanfsd.mod ganeshanfsd.te

checkmodule: loading policy configuration from ganeshanfsd.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 17) to ganeshanfsd.mod
# 中間ファイルからモジュール生成

[root@node01 ~]#
semodule_package --outfile ganeshanfsd.pp --module ganeshanfsd.mod

# モジュールインストール

[root@node01 ~]#
semodule -i ganeshanfsd.pp

[4] Firewalld を有効にしている場合は、NFS サービスの許可が必要です。
[root@node01 ~]#
firewall-cmd --add-service=nfs --permanent

success
[root@node01 ~]#
firewall-cmd --reload

success
[5] 任意のクライアントコンピューターで NFS マウントして確認します。
[root@client ~]#
yum -y install nfs-utils
サーバー側の ganesha.conf で [Pseudo=***] に設定したパスを指定

[root@client ~]#
mount -t nfs4 node01.srv.world:/vfs_distributed /mnt

[root@client ~]#
df -hT

Filesystem                        Type      Size  Used Avail Use% Mounted on
/dev/mapper/cl-root               xfs        26G  1.4G   25G   6% /
devtmpfs                          devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs                             tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                             tmpfs     2.0G  8.4M  2.0G   1% /run
tmpfs                             tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda1                         xfs      1014M  234M  781M  24% /boot
tmpfs                             tmpfs     396M     0  396M   0% /run/user/0
node01.srv.world:/vfs_distributed nfs4       52G  3.3G   49G   7% /mnt
 
Tweet