目標
NFSサーバを構築し、Liunxホスト間でのファイル共有を実現する(AWS環境利用)。
NFSの基礎知識
ネットワークを通じてファイルシステムを共有する際に使われる通信プロトコル。
主にUnix系OS同士のファイルシステム共有にはNFSが古くから使われており、
NFSサーバが公開したディレクトリをNFSクライアントがマウントすることで、
リモートファイルシステムをローカルファイルシステムと同様に扱うことが可能となる。
(Linux教科書 LPICレベル2 Version4.5対応より)
前提
・AWS EC2インスタンス2台(本記事ではAmazon Linux 2 AMI (HVM), SSD Volume Type利用)(※1)が構築済みであること。
※1
NFSサーバとして利用するインスタンスに関しては、2049番ポート(NFS)を開けておくこと。
作業の流れ
項番 | タイトル |
---|---|
1 | NFSサーバの構築 |
2 | NFSクライアントの構築 |
手順
1.NFSサーバの構築
①必要パッケージのインストール確認
事前作成したEC2のNFSサーバ用インスタンスにOSログインし、ルートスイッチ後、NFS用パッケージのインストール確認
Amazon Linuxではデフォルトでインストールされていました(※)
[root@ip-172-31-43-189 ~]# rpm -qa | grep nfs
libnfsidmap-0.25-19.amzn2.x86_64
nfs-utils-1.3.0-0.54.amzn2.0.2.x86_64
※未インストールの場合、以下コマンドを実行してインストール
yum install nfs-utils
②NFS公開ディレクトリのセットアップ
NFSを利用して公開するディレクトリ、及び共有確認用のテストファイルをその配下に作成します。
mkdir -p /export/nfs
touch /export/nfs/share.txt
NFSの公開ディレクトリは/etc/exports
内に記述します。
vi /etc/exports
/etc/exports
には、公開するディレクトリ名、公開するクライアント(ホスト名orIPアドレス)、オプションを、
エクスポートするディレクトリ1つにつき1行で記述します。
本記事では、先ほど作成した/export/nfsを、全ホスト(*)に公開、オプションとして読み書き可能(rw)かつrootアクセス可能(no_root_squash)(※)という公開設定とします。
/export/nfs *(rw,no_root_squash)
※no_root_squashオプションについて
通常NFSクライアントからNFSサーバへrootアクセスを試みた場合(rootユーザでNFSマウントを行った場合)、セキュリティ確保のため匿名アカウントへマッピングされます。
しかしno_root_squashオプションを指定することでNFSクライアントからroot権限でのNFSサーバアクセスが可能となります(セキュリティ的には好ましくないため、本来は適用するクライアントの範囲を絞るべきのようです)
exportfsコマンド
を利用して、/etc/exportsの記述内容を反映します。
exportfs -ar
エクスポート状況を表示し、以下のように公開ディレクトリ/export/nfsが出力されればOKです。
# exportfs -v
/export/nfs <world>(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,no_root_squash,no_all_squash)
③NFSサーバ起動
NFSサーバ起動→自動起動→状態確認
systemctl start nfs-server
systemctl enable nfs-server
systemctl status nfs-server
NFSサーバでエクスポートされているディレクトリを調べるにはshowmountコマンド
を利用します。
以下のような出力となれば、適切に公開ディレクトリ/export/nfsがNFSサーバに反映されています。
# showmount -e
Export list for ip-172-31-43-189.ap-northeast-1.compute.internal:
/export/nfs *
2.NFSクライアントの構築
①NFS公開ディレクトリのマウント
NFSクライアントとして利用するEC2インスタンスにOSログイン後、ルートスイッチ。
その後、以下のファイルシステムタイプをnfsとしたマウントを実行し、先ほど作成したNFSサーバの公開ディレクトリ/export/nfsを/mntへマウントします。
NFSサーバのプライベートIPアドレス部分は詰め替えを行ってください。
mount -t nfs NFSサーバのプライベートIPアドレス:/export/nfs/ /mnt
dfコマンドで/mntに公開ディレクトリ/export/nfs が正常にマウントされたか確認を行います。
# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
13.114.211.230:/export/nfs 8.0G 1.4G 6.7G 17% /mnt
また、/mnt配下に事前作成した共有確認用テストファイルshare.txtが存在することも一応確認します。
# ls -l /mnt
total 0
-rw-r--r-- 1 root root 0 Nov 20 05:52 share.txt
②NFS公開ディレクトリの起動時自動マウント
ついでに/etc/fstabを利用して起動時の自動マウントを有効化します。
echo 'NFSサーバのプライベートIPアドレス:/export/nfs /mnt nfs rw 0 0' >> /etc/fstab
再起動実行
reboot
再起動後、自動でNFSの公開ディレクトリがマウントされていればOKです。
参考にさせて頂いた書籍及びサイト
・参考書籍
Linux教科書 LPICレベル2 Version4.5対応
・参考サイト
【CentOS 7】NFSサーバ構築の備忘録