Linux/centos で NFS サーバーを構成および管理するにはどうすればよいですか?
1 NFS の基本的な理解
NFS(Network File System)
つまり、ファイル オペレーティング システムです。NFS
ネットワーク内の異なるコンピュータが相互にリソースを共有できるようにします。
1.1 NFS の概要
- 1980 年に
SUN
開発されたUNIX&Linux
システム間のファイル共有方法。 - これは、クライアント側のアプリケーションがネットワーク経由でサーバー ディスク上のデータにアクセスすることをサポートするファイル システム プロトコルです。
NFS
ネットワーク ファイル共有のみを提供し、データ送信機能は提供しません。NFS
クライアントとサーバーはRPC(Remote Procedure Calls)
データ送信を実装する必要があります。NFS
サーバディレクトリへのアクセスをエクスポート(export
)、クライアントがエクスポートディレクトリにアクセスする処理をマウント(mount
)またはインポート(import
)と呼びます。
1.2 NFS ワークフロー
ステップ 1: NFS 共有リソースにアクセスするには、NFS クライアントはクエリ要求を送信します。つまり、クライアント RPC サービスは、ネットワーク経由でサーバー RPC サービスのポート 111 にクエリ要求を送信します。
ステップ 2: NFS サーバー RPC は、対応する登録済みの NFSdaemon ポートを見つけて、クライアント RPC に通知します。
ステップ 3: NFS クライアントはポートを取得し、NFSNFS デーモンを使用してデータをオンラインで直接保存します。
ステップ 4: NFS クライアントがデータを正常に保存したら、結果をユーザーに通知します。
2 NFS サービスをインストールして開始します
2.1 NFS サーバーのインストール
- 通常、NFS はシステムにインストールされています。
- まず、NFS がインストールされているかどうかを確認します。次の 2 つは関連する依存関係パッケージです。
rpm -qa | grep nfs-utils
rpm -qa | grep rpcbind
- 確認すると、すでにインストールされています。
- システムに NFS 依存関係パッケージがインストールされていない場合は、それらをインストールする必要があります。
yum clean all
yum -y install nfs-utils rpcbind
2.2 NFSサービスの開始
- NFS ステータスを確認します。
systemctl status rpcbind.service
systemctl status nfs.service
- NFS サービスを開始します。
systemctl start rpcbind.service
systemctl start nfs.service
- ステータスをもう一度確認すると、すべて開始されています。
- NFS サービスを停止します。
systemctl stop nfs.service
- NFS サービスを再起動します。
systemctl restart nfs.service
- 起動時に自動的に開始するように NFS サービスを設定します。
systemctl enable rpcbind.service
systemctl enable nfs.service
3 NFS サーバーとクライアントを構成する
3.1 NFS サーバーの構成
- 設定ファイルは
/etc/exports
;にあります。 - 形式は次のとおりです。
共享目录 [客户端1(参数)] [客户端2(参数)]
共有ディレクトリ: NFS サーバーが共有するために必要な実際のパス (絶対パス)、
クライアント: 共有ディレクトリにアクセスできるコンピュータ。
- クライアントの一般的な形式:
クライアント | 説明する |
---|---|
192.168.1.111 |
指定されたIPアドレスを持つホスト |
192.168.1.0/24 |
指定されたサブネット上のすべてのホスト |
192.168.1.* |
指定されたサブネット上のすべてのホスト |
www.xxx.com |
指定されたドメイン名のホスト |
*.xxx.com |
指定されたドメイン内のすべてのホスト |
* |
すべてのホスト |
アクセス許可パラメーター: アクセス許可の設定。
- 共通のアクセス権:
アクセス許可 | 説明する |
---|---|
ro |
読み取り専用 |
rw |
読み書き |
ユーザーマッピングパラメータ
- ユーザーマッピングパラメータテーブル:
ユーザーマッピング | 説明する |
---|---|
all_squash |
すべてのリモート アクセス ユーザーを匿名ユーザーまたはユーザー グループにマップします ( nfsnobody ) |
no_all_squash |
上記の逆(デフォルト設定) |
root_squash |
root ユーザーを…に設定します (デフォルト設定) |
no_root_squash |
上記とは反対に |
anonuid=xxx |
匿名アカウントをローカル アカウントに変換します ( UID=xxx ) |
anongid=xxx |
匿名ユーザー グループをローカル ユーザー グループとして構成します (GID=xxx) |
その他のパラメータ: 出力ディレクトリを制御します。
- その他の一般的に使用されるパラメータ:
その他のパラメータ | 説明する |
---|---|
secure |
クライアントが 1024 未満の TCP/IP ポートから NFS に接続するように制限する |
insecure |
語順クライアントが 1024 を超える TCP/IP ポートを使用して NFS に接続する |
sync |
メモリ バッファとディスクにデータを同期的に書き込む |
async |
まずデータをバッファに保存し、必要に応じてディスクに書き込みます。 |
wdelay |
関連する書き込み操作があるかどうかを確認します |
no_wdelay |
書き込み操作はすぐに実行され、以下とsync 組み合わせて使用されます。 |
subtree_check |
出力ディレクトリがサブディレクトリの場合、NFS サーバーは親ディレクトリの権限をチェックします。 |
no_subtree_check |
出力ディレクトリがサブディレクトリの場合、NFS サーバーは親ディレクトリのアクセス許可をチェックしません。 |
- たとえば、次の IP アドレスを持つコンピュータに対して、
/mnt/temp
ディレクトリに読み取りと書き込みのアクセス許可のみを与えます。172.16.1.33
/mnt/temp 172.16.1.33 (rw, sync)
- たとえば、
/mnt/temp01
サブネット内のコンピュータにのみディレクトリに172.16.1.0/24
読み取りおよび書き込みアクセス許可を与え、他のコンピュータ メカニズムには読み取りアクセス許可のみを与えます。
/mnt/temp0 172.16.1.0/24 (rw, async) * (ro)
3.2 NFS クライアントの構成
- NFS サーバー情報を表示します。
showmount [选项] (参数)
-d: NFS クライアントによってロードされた共有ディレクトリのみを表示します;
-e: NFS サーバー上のすべての共有ディレクトリを表示します。
showmount -e 192.168.0.190
showmount を使用する場合は、ファイアウォールをオフにし、SELinux を許可するように設定することをお勧めします。
systemctl stop firewalld.service
setenforce 0
getenforce
- 共有ディレクトリを NFS サーバーにマウントします。
NFS 共有ディレクトリをローカルにマウントします。
mount -t NFS サーバー IP: 出力ディレクトリはローカルにマウントされます。
- 例えば:
mkdir /mnt/mytemp
mount -t nfs 192.168.0.190:/mnt/mytemp /mnt/mytemp
- NFS サーバーをアンインストールします。
umount 挂载点
- 起動時に NFS 共有ディレクトリを自動的にマウントします。
192.168.0.190: /mnt/temp /mnt/mytemp nfs defaults 0 0
4 実践例
4.1 基本要件
- NFS サーバー 192.168.0.190;
- 要件 1: 共有ディレクトリ /mnt/temp は、192.168.0.0/24 ネットワーク セグメント内のコンピュータからのアクセスを許可されています。
- 要件 2: 共有ディレクトリ /mnt/share はユーザー zhang によるアクセスを許可されており、IP は 192.168.0.10 です。
- 要件 3: 共有ディレクトリ /mnt/upload では、192.168.0.0/24 ネットワーク セグメントをアップロード ディレクトリとして使用できます。これが属するグループは nfsupload で、UID と GID は両方とも 666 です。
- 要件 4: 共有ディレクトリ /mnt/nfs は、192.168.0.0/24 ネットワーク セグメントのユーザー アクセスを除き、読み取り専用であり、データ コンテンツをインターネットに提供できます。
4.2 事例の実装
- NFS サービスをインストールします。
yum -y install rpcbind
yum -y install nfs-utils
- ディレクトリとテストファイルを作成します。
# 创建目录:
mkdir -p /mnt/temp
mkdir -p /mnt/share
mkdir -p /mnt/upload
mkdir -p /mnt/nfs
# 创建测试文件
touch /mnt/temp/temp1.txt /mnt/temp/temp2.txt
touch /mnt/share/data1.txt /mnt/share/data2.txt
touch /mnt/upload/upload.txt
touch /mnt/nfs/nfs1.txt /mnt/nfs/nfs2.txt
- 共有ディレクトリのアクセス許可属性を設定します。
# 要求1:
chmod 1777 /mnt/temp/
ll -d /mnt/temp/
# 要求2:
useradd zhang
passwd zhang
cat /etc/passwd | grep zhang
chmod 700 /mnt/share/
chown -R zhang:zhang /mnt/share/
ll -d /mnt/share/
# 要求3:
groupadd -g 666 nfsupload
useradd -g 666 -u 666 -M nfsupload
cat /etc/passwd | grep nfs
chown -R nfsupload:nfsupload /mnt/upload
ll -d /mnt/upload/
# 要求4:
ll -d /mnt/nfs/
- 編集
/etc/exports
:
/mnt/temp 192.168.0.0/24 (rw,no_root_squash)
/mnt/share 192.168.0.10 (rw)
/mnt/upload 192.168.0.0/24 (rw,all_squash,anonuid = 666,anongid = 666)
/mnt/nfs 192.168.0.0/24 (ro) * (rw,all_squash)
- ファイアウォールを閉じ、Selinux を許可するように設定し、NFS サービスを再起動します。
systemctl stop firewalld.service
setenforce 0
getenforce
systemctl restart nfs
- NFS クライアントはクライアント ソフトウェアをインストールします。
yum -y install nfs-utils
- NFS サーバー上の共有ディレクトリを表示します。
showmount -e 192.168.0.190
- クライアント マシン上にディレクトリを作成し、NFS ディレクトリをそのディレクトリにマウントします。
mkdir /mnt/ClientNFS
mount -t nfs 192.168.0.190:/mnt/nfs/ /mnt/ClientNFS/
- 同じ方法を使用して他の NFS ディレクトリをマウントするだけです。
- そして、クライアント マシンにグループ 666 を作成します。
groupaddd -g 666 nfsupload
useradd -g 666 -u 666 -M nfsupload
以下の内容は無視してください~
var code = "0f151890-7560-4e5d-85f0-4fde9477c52b"