Help us understand the problem. What is going on with this article?

EC2上にNFSサーバ/クライアント構築する

More than 1 year has passed since last update.

ゴール

EC2(Amazon Linux 2015.09)2台でNFSv4サーバ/クライアントを構成する。

環境

[root@ ec2-user]# cat /etc/issue
Amazon Linux AMI release 2015.09
Kernel \r on an \m

[root@ ec2-user]# yum list | grep nfs
libnfsidmap.i686                      0.25-11.10.amzn1              amzn-updates
libnfsidmap-devel.x86_64              0.25-11.10.amzn1              amzn-updates
nfs4-acl-tools.x86_64                 0.3.3-6.6.amzn1               amzn-main   ★NFSv4
texlive-mfnfss.noarch                 2:svn19410.0-27.21.amzn1      amzn-main   
texlive-mfnfss-doc.noarch             2:svn19410.0-27.21.amzn1      amzn-main   
texlive-psnfss.noarch                 2:svn23394.9.2a-27.21.amzn1   amzn-main   
texlive-psnfss-doc.noarch             2:svn23394.9.2a-27.21.amzn1   amzn-main

バージョンの確認は以下でも確認可能

■サーバ側
[root@ ec2-user]# nfsstat
Server rpc stats:
calls      badcalls   badclnt    badauth    xdrcall
333668     0          0          0          0       

Server nfs v4:
null         compound     
5         0% 333663   99% 

Server nfs v4 operations:
op0-unused   op1-unused   op2-future   access       close        commit       
0         0% 0         0% 0         0% 14487     1% 55895     5% 8182      0% 
create       delegpurge   delegreturn  getattr      getfh        link         
4815      0% 0         0% 0         0% 316697   31% 60736     6% 0         0% 
lock         lockt        locku        lookup       lookup_root  nverify      
0         0% 0         0% 0         0% 26        0% 0         0% 0         0% 
open         openattr     open_conf    open_dgrd    putfh        putpubfh     
55899     5% 0         0% 8         0% 0         0% 333377   33% 0         0% 
putrootfh    read         readdir      readlink     remove       rename       
5         0% 1         0% 8463      0% 0         0% 11        0% 0         0% 
renew        restorefh    savefh       secinfo      setattr      setcltid     
253       0% 0         0% 0         0% 8         0% 60703     6% 14        0% 
setcltidconf verify       write        rellockowner bc_ctl       bind_conn    
14        0% 0         0% 83786     8% 0         0% 0         0% 0         0% 
exchange_id  create_ses   destroy_ses  free_stateid getdirdeleg  getdevinfo   
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
getdevlist   layoutcommit layoutget    layoutreturn secinfononam sequence     
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
set_ssv      test_stateid want_deleg   destroy_clid reclaim_comp 
0         0% 0         0% 0         0% 0         0% 0         0% 

■クライアント側
[root@ ec2-user]# nfsstat
Client rpc stats:
calls      retrans    authrefrsh
333492     0          333492  

Client nfs v4:
null         read         write        commit       open         open_conf    
0         0% 0         0% 83785    25% 8182      2% 55893    16% 5         0% 
open_noat    open_dgrd    close        setattr      fsinfo       renew        
0         0% 0         0% 55890    16% 60701    18% 16        0% 173       0% 
setclntid    confirm      lock         lockt        locku        access       
9         0% 9         0% 0         0% 0         0% 0         0% 14469     4% 
getattr      lookup       lookup_root  remove       rename       link         
40993    12% 21        0% 4         0% 9         0% 0         0% 0         0% 
symlink      create       pathconf     statfs       readlink     readdir      
0         0% 4815      1% 12        0% 10        0% 0         0% 8456      2% 
server_caps  delegreturn  getacl       setacl       fs_locations rel_lkowner  
28        0% 0         0% 0         0% 0         0% 0         0% 0         0% 
secinfo      exchange_id  create_ses   destroy_ses  sequence     get_lease_t  
8         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
reclaim_comp layoutget    getdevinfo   layoutcommit layoutreturn getdevlist   
0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
(null)       
0         0% 

サーバ構築

■EC2のセキュリティグループ設定
インバウンドの設定でNFSサーバのポートをローカルセグメントからのみ許可する。
※デフォルトでは「2049/tcp」

■rootユーザにスイッチ

[ec2-user@NFS_SERVER ~]$ sudo -s
[root@ ec2-user]# 

■共有する為のボリューム作成
NFSサーバが提供するボリュームは、ルートボリューム(/)を利用する事もできるが、スナップショットの取得などを考慮し、EBSでボリュームを作成しアタッチ及びマウントする。

[root@ ec2-user]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0    8G  0 disk 
└─xvda1 202:1    0    8G  0 part /
xvdf    202:80   0  100G  0 disk ★アタッチされている事を確認

[root@ ec2-user]# mkfs -t ext4 /dev/xvdf

[root@ ec2-user]# vi /etc/fstab 
#
LABEL=/     /           ext4    defaults,noatime  1   1
tmpfs       /dev/shm    tmpfs   defaults        0   0
devpts      /dev/pts    devpts  gid=5,mode=620  0   0
sysfs       /sys        sysfs   defaults        0   0
proc        /proc       proc    defaults        0   0
/dev/xvdf   /export/nfs ext4    defaults,nofail  1   2 ★追加

[root@ ec2-user]# mkdir -p /export/nfs

[root@ ec2-user]# mount /export/nfs

[root@ ec2-user]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0    8G  0 disk 
└─xvda1 202:1    0    8G  0 part /
xvdf    202:80   0  100G  0 disk /export/nfs ★マウント済み

[root@ ec2-user]# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       7.8G  1.1G  6.6G   15% /
devtmpfs         489M   60K  489M    1% /dev
tmpfs            498M     0  498M    0% /dev/shm
/dev/xvdf         99G  6.8G   87G    8% /export/nfs ★マウント済み

■exportポイント設定(クライアントに共有するボリュームの設定)

[root@ ec2-user]# vi /etc/exports
/export/nfs 10.0.0.0/255.255.0.0(rw,no_root_squash)

※②③をセットとして複数の対象に異なるオプションで共有可能
①/export/nfs : 共有するディレクトリパス
②10.0.0.0/255.255.255.0.0 : 共有可能なネットワーク範囲(ホスト指定可)
③(rw,no_root_squash) : オプション(rw:読み書き可、no_root_squash:クライアントのroot権をサーバ側でも適用)

※exportfsコマンドでも設定可能

■サービス開始

[root@ ec2-user]# service --status-all | grep nfs
/export/nfs
nfsd is stopped

[root@ ec2-user]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]

[root@ ec2-user]# service --status-all | grep nfs
/export/nfs
nfsd (pid 3533 3532 3531 3530 3529 3528 3527 3526) is running...

※デーモン起動済みの場合は以下のコマンドで設定を有効化
[root@ ec2-user]# exportfs -ar

■exportポイント設定有効化確認

[root@ ec2-user]# exportfs -v
/export/nfs
        10.0.0.0/255.255.0.0(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
※デフォルト値を含む設定していないオプションも確認可

[root@ ec2-user]# showmount -e
Export list for ip-10-0-0-xxx:
/export/nfs 10.0.0.0/255.255.0.0

■自動起動/停止設定(ランレベル3〜5で有効化)

[root@ ec2-user]# chkconfig --list | grep nfs
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
…

[root@ ec2-user]# chkconfig --level 345 nfs on

[root@ ec2-user]# chkconfig --list | grep nfs
nfs             0:off   1:off   2:off   3:on    4:on    5:on    6:off
…

NFSv4以降はportmap、rpcbind、nfslockは不要

クライアント

■rootユーザにスイッチ

[ec2-user@NFS_CLIENT ~]$ sudo -s
[root@ ec2-user]# 

■nfsマウントに必要なライブラリ(mountコマンドのhelperなど)をインストール

[root@ ec2-user]# yum install nfs-utils nfs-utils-lib

■アクセス用ユーザ設定(例としてec2-userにグループ設定を追加)

[root@ ec2-user]# groupmod -g 1001 nfs
[root@ ec2-user]# usermod -G wheel,nfs ec2-user
※既に別のサブグループに所属している場合は、所属済みのグループの最後に指定する。
[root@ ec2-user]# id ec2-user
uid=500(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel),1001(nfs)

■マウントポイント作成

[root@ ec2-user]# mkdir -p -m 775 /mnt/nfs

■アクセス用の所有権設定(ここではnfsグループに対して許可)

[root@ ec2-user]# chown root:nfs /mnt/nfs

■マウントポイントの設定

[root@ data_nfs]# cat /etc/fstab
#
LABEL=/     /           ext4    defaults,noatime  1   1
tmpfs       /dev/shm    tmpfs   defaults        0   0
devpts      /dev/pts    devpts  gid=5,mode=620  0   0
sysfs       /sys        sysfs   defaults        0   0
proc        /proc       proc    defaults        0   0
10.0.0.X:/export/nfs /mnt/nfs nfs4 defaults 0 0

※IPは環境に合わせて設定

■マウント

[root@ ec2-user]# mount /mnt/nfs

■確認

[root@ ec2-user]# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/xvda1                   50G   29G   21G  59% /
devtmpfs                    3.9G   76K  3.9G   1% /dev
tmpfs                       4.0G     0  4.0G   0% /dev/shm
s3fs                        256T     0  256T   0% /data_s3fs
10.0.0.X:/export/nfs   99G  6.8G   87G   8% /mnt/nfs

参考URL

https://docs.oracle.com/cd/E39368_01/e48214/ol_about_nfs.html
http://linux.kororo.jp/cont/server/nfs.php
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-ja-4/s1-nfs-start.html
http://kaede.blog.abk.nu/nfs-ports-lock

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした