LoginSignup
10
13

More than 3 years have passed since last update.

【NFS】Linuxホスト間のファイル共有

Last updated at Posted at 2020-11-20

目標

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)(※)という公開設定とします。

/etc/exports
/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サーバ構築の備忘録

10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13