目次
- NFSファイル共有
- メリットとデメリット
- NFSの仕組み図
- テストマシンの準備
- NFSサーバーの構築
- NFSクライアントの構築
NFSファイル共有
1. 概要
NFS(Network File System)は、Linuxシステム上でネットワークを介してファイルシステムを共有するためのプロトコルです。これを使用することで、サーバー上のファイルシステムをクライアントにマウントし、リモートからアクセスしたり利用したりすることができます。NFSは、Linuxサーバークラスタ(例:Webクラスタでの静的リソース共有)、跨マシン間のデータ同期、Windows環境でもサードパーティツールを通じてNFSをサポートします。
NFSが使用するプロトコルは、NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)です。
2. メリットとデメリット
メリット:
- 跨プラットフォームの互換性が高く、Linux、Unix(例:CentOS、Ubuntu、Solaris)、Windowsでも利用可能です。
- 同一NFSディレクトリを共有する複数クライアントの場合、ファイルはサーバーに1つのみ保存されるため、ストレージリソースを節約します。
- シンプルで学習しやすく、迅速にデプロイ可能です。
- 中小規模のLinux/Unixクラスタ(クライアント数:≤10台)での静的リソース共有や、パフォーマンス要求の低い環境に適しています。
デメリット:
- 単一故障点リスクがあります。NFSサーバーがダウンすると、全てのクライアントがNFS共有ディレクトリにアクセスできなくなります。
- 高負荷な書き込み環境には適しません。
- IPアドレスベースの認証機構に依存し、データ通信に暗号化がありませんため、セキュリティリスクがあります。
テストマシンの準備
| OS | Red Hat Enterprise Linux (RHEL) 7 | |
| IPアドレス | ホスト名 | 役割 |
| 192.168.1.100 | server | サーバー |
| 192.168.1.101 | client1 | クライアント(手動マウント) |
| 192.168.1.102 | client2 | クライアント(自動マウント) |
NFSサーバーの構築
1. SELinuxの無効化
# 一時的な無効化
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive
# 永久的な無効化
[root@server ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
2. ファイアウォールの停止
[root@server ~]# systemctl stop firewalld.service
3. 必要なパッケージのインストール
[root@server ~]# yum -y install rpcbind nfs-utils
# nfs-utils:NFSサーバーとクライアントのためのツールを提供します。
# rpcbind:RPCサービスをNFSにバインドします。
4. 共有ディレクトリの作成
[root@server ~]# mkdir /share/
[root@server ~]# touch /share/file_{1,2,3}.txt
[root@server ~]# ls /share/
file_1.txt file_2.txt file_3.txt
5. 設定ファイルの編集
# /shareディレクトリを共有します。
[root@server ~]# vim /etc/exports
# 次のような行を追加します。
/share *(ro) # 格式:共有ディレクトリのパス 客先IP(*で全て許可) 权限(ro=読み取り専用)
6. サービスの起動
[root@server ~]# systemctl start rpcbind
[root@server ~]# systemctl enable rpcbind
[root@server ~]# systemctl start nfs-server
[root@server ~]# systemctl enable nfs-server
NFSクライアントの構築
1. マウント方法の違い
NFSクライアントでのマウント方法は大きく两类があります。
方法1:手動マウント
- mountコマンドを手動で実行します。
- /etc/fstabファイルに設定することで、再起動時自動マウント可能です。
方法2:自動マウント
- autofsサービスを利用します。
- アクセスが必要な時にのみマウントします。
2. 手動マウント
(1)必要なパッケージのインストール
[root@client1 ~]# yum -y install nfs-utils
(2)ディレクトリの作成とマウント
# マウント用ディレクトリの作成
[root@client1 ~]# mkdir /mnt/nfs
# NFSサーバーのマウント
[root@client1 ~]# mount 192.168.1.100:/share /mnt/nfs
# 再起動時の自動マウント設定
[root@client1 ~]# vim /etc/fstab
192.168.1.100:/share /mnt/nfs nfs defaults,_netdev 0 0
(3)確認
[root@client1 ~]# df -h | tail -1
192.168.1.100:/share 17G 1.2G 16G 7% /mnt/nfs
3. 自動マウント
(1)必要なパッケージのインストール
[root@client2 ~]# yum -y install nfs-utils autofs
(2)自動マウントの設定
# 監視ディレクトリの作成
[root@client2 ~]# mkdir /auto_nfs
# autofsの設定ファイルの編集
[root@client2 ~]# vim /etc/auto.master
/auto_nfs /etc/auto_nfs_mount
# マウント用の設定ファイル作成
[root@client2 ~]# vim /etc/auto_nfs_mount
share -fstype=nfs 192.168.1.100:/share
(3)自動マウントサービスの起動
[root@client2 ~]# systemctl start autofs
(4)確認
[root@client2 ~]# ls /auto_nfs/
[root@client2 ~]# ls /auto_nfs/share/
file_1.txt file_2.txt file_3.txt