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"

おすすめ

転載: blog.csdn.net/NoamaNelson/article/details/132293548