1、サーバー側ソフトウェア: nfs-utils とポートマップ (rpcbind) をインストールします
nfs-utils: rpc.nfsd および rpc.mountd、2 つの nfs デーモン パッケージを提供します
portmap : nfs は実際には rpc サーバー プログラムとみなすことができ、rpc サーバー プログラムを開始するには、対応するポートの作業を行う必要があり、そのようなタスクはポートマップによって完了されます。平たく言うと、ポートマップはポートマッピングに使用されます。
nfs が起動する必要があるデーモン
pc.nfsd: 主に複雑なログイン権限の検出など。must
portmap : handle rpc プログラムのクライアントとサーバーのポートは対応している必要があります
rpc.mountd: nfs のファイル システムを担当します。クライアントが rpc.nfsd を通じてサーバーにログインすると、サーバーのファイルへのクリネット アクセスを実行します。一連の管理は、
lockd: rpc パッケージを通じてロック リクエストを処理します。
statd: クラッシュを提供します。 nfs ロック サービスの回復機能
rquotad: ユーザーが nfsmount 経由でリモート サーバーにマウントするときにクォータを処理します。
デーモン起動シーケンス: rpc.portmap、 rpc.mountd、rpc.nfsd、rpc.statd、rpc.lockd (新しいバージョンは自動的に nfsd で起動します)、rpc.rquotad
nf サーバー側コマンド:
•yum install nfs-utils portmap
•chkconfig rpcbind on #chkconfig: 各実行レベルでのシステム サービスの更新とクエリ
•chkconfig nfs on
•service rpcbind start
•service nfs start
2, サーバー側設定ファイル/etc/exports: 共有するディレクトリと権限を指定 man exports
コードをコピー コードは次のとおりです。 :
#: 192.168.0.* 範囲の IP アドレスを持つコンピューターが、読み取りおよび書き込み権限で /home/work ディレクトリにアクセスできるようにします。
/home/work 192.168.0.* (rw,sync,root_squash)
/home 192.168.1.105 (rw,sync)
/public * (rw,sync)
構成ファイルの各行は 2 つのセクションに分かれています。最初のセクションは絶対パスを使用した共有ディレクトリで、2 番目のセクションはクライアント アドレスとアクセス許可です。
アドレスには、10.0.0.8 または 10.0.0.0/24、10.0.0.0/255.255.255.0 など、完全な IP またはネットワーク セグメントを使用できます。もちろん、アドレスにはホスト名、DNS 解決、ローカル アドレスも使用できます。 /etc/hosts の解決。すべて問題ありません。ワイルドカードもサポートされています。例: *.chengyongxu.com
権限は次のとおりです:
rw: 読み取り-書き込み、読み取り-書き込み; 注意: 次のように設定するだけです。読み取り/書き込みクライアントは依然として正常に書き込むことができず、共有ディレクトリのアクセス許可を正しく設定することもできません。質問 7 を参照してください。
ro: 読み取り専用、読み取り専用;
sync: ファイルはハードウェアに書き込まれます。ディスクとメモリを同時に;
async: ファイルはメモリに直接書き込むのではなく、一時的にメモリに保存されます;
no_root_squash: nfs クライアントがサーバーへの接続時に root を使用する場合、サーバーによって共有されるディレクトリに対する root 権限。これをオンにするのは明らかに危険です。
root_squash: サーバーに接続するときに nfs クライアントが root を使用する場合、サーバーによって共有されるディレクトリに対する匿名ユーザーのアクセス許可が与えられます。通常、クライアントは、nobody または nfsnobody の ID を使用します;
all_squash: nfs に関係なくクライアントがサーバーに接続するときに使用されるユーザーは何ですか? サーバーによって共有されるすべてのディレクトリには匿名ユーザー権限があります;
anonuid: 匿名ユーザーの uid 値 (通常は none または nfsnobody)、ここで設定できます;
anongid: 匿名ユーザーの GID 値。
nfs クライアント ユーザー マッピング: クライアント ログイン ユーザーは root またはその他のユーザーであり、サーバー側の nfs サーバー設定に従って、対応するクライアント接続がnfs サーバー側ユーザー、root または指定されたユーザー (anonuid または anongid で設定)、nfsnobody など。最後に、マッピング ユーザーと共有ディレクトリのアクセス許可は、クライアント接続に読み取りおよび書き込みアクセス許可があるかどうかに共同で影響します。
クライアントとサーバーのユーザー マッピング、パラメータを手動で設定します。map_static=/etc/nfs.map
/etc/nfs.map ファイル マッピングの内容は次のとおりです。
# リモート ローカル
gid 500 1000
uid 500 2003
参考: nfs クライアント接続のユーザー ID の記述に関して、次の記述は検証されていません:
•クライアントが接続するとき、一般ユーザー チェックを入れると、その 1 は一般ユーザーの圧縮 ID が明確に設定されている場合、クライアント ユーザーの ID はこの時点で指定されたユーザーに変換されます。その 2 は、同じ名前のユーザーが存在する場合です。 nfs サーバーの場合、この時点でのクライアントのログイン アカウントの ID nfs サーバー上の同名のユーザーに変換します。no.3 明示的な指定がなく、同じ名前のユーザーが存在しない場合、ユーザーはID は nfsnobody
に圧縮されます • クライアントが接続するとき、ルートを確認します (no.1 の場合) no_root_squash が設定されている場合、root ユーザーの ID は nfs サーバー上のルートに圧縮されます。 no.3 を明示的に指定しない場合、no_root_squash と all_squash を同時に指定すると、root ユーザーが nfsnobody に圧縮されます。 no_root_squash と all_squash を同時に指定すると、ユーザーは nfsnobody に圧縮され、anonuid と anongid が設定された場合は、指定されたユーザーとグループに圧縮されます
3 、ファイアウォール設定変更
デフォルトでは、centos6 サーバー バージョンのインストール後、ファイアウォールの iptables 構成でポート 22 のみが開きます。
nfs 構成ファイル /etc/sysconfig/nfs で nfs サービス関連のポートを指定し、ファイアウォールを変更して対応するポートを解放します
コードをコピー コードは次のとおりです:
#rpc.mountd がリッスンするポート
#mountd_port=892
#rpc.statd がリッスンするポート.
#statd_port=662
#/usr/sbin/rpc.rquotad ポート rquotad がリッスンする必要があります。
#rquotad_port=875
#tcp ポート rpc.lockd がリッスンする必要があります
#lockd_tcpport=32803
#udp ポート rpc.lockd がリッスンする必要があります。
#lockd_udpport=32769
iptables 設定ファイル /etc/sysconfig を変更します/iptables を入力し、Open 111 (ポートマップ サービス ポート)、2049 (nfs サービス ポート)
4、/etc/hosts.allow 構成変更
/etc/hosts.allow、 /etc/hosts .deny は、どのホストがローカル inet サービスの使用を許可されるかを記述します。
ここでのデフォルトは変更する必要がないようですが、必要なクライアント マシンのみの接続を許可し、他のマシンからの接続を拒否するように設定することをお勧めします
#サービス プロセス名: ホスト リスト: オプションルールが一致する場合 コマンド操作
server_name:hosts-list[:command]
クライアント アクセスを許可するルールを /etc/hosts.allow
all:127.0.0.1 に追加します #このマシンに許可を与えるこのマシン上のすべてのサービス プロセスにアクセスする
all:192.168.0.135 #192.168.0.135 クライアント マシンがこのマシンのすべてのサービス プロセスにアクセスできるようにする
smbd:192.168.0.0/255.255.255.0 #ネットワーク セグメント内の IP にアクセスを許可するsmbd サービスにアクセスします
sshd:192.168. 100.0/255.255.255.0#許可 192.168.100. ネットワーク セグメント上の IP アクセス サーバー上の SSHD プロセス
SSHD: 60.28.160.244#このサーバー上の SSHD プロセス
on/ETC /hosts.deny で禁止されたログイン試行の接続情報を記録してユーザーのメールボックス
sshd:all #Forbid all
5 に送信するように設定することもできます。共有ディレクトリのアクセス許可を 760 に変更し、ディレクトリ内のすべてのグループを nfsnobody
に変更します。 参考: 質問 7
6、クライアント マウント : 次の手順を実行してインストールします。 nfs サーバー (IP アドレスは 192.168.1.45) 共有 /home はローカルの /mnt/nfs/home ディレクトリにマウントされます。
showmount -e nfs-serverip: nfs サーバーによって共有されているリソースを表示します
mount -t nfs 192.168.1.45:/home /mnt/nfs/home
7, nfs パフォーマンスtest :
•コマンド time dd if=/dev/zero of=/mnt/home bs=16k count=16384 に従って、適切な wsize および rsize 値を設定します。
• nfs クライアントの数、/etc/sysconfig/nfs 構成ファイルで適切な nfs サーバー側プロセス番号 rpcnfsdcount を設定します。デフォルトは 8
exportfs コマンド: nfs の開始後に /etc/exports を変更すると、まだですか? nfs を再起動してみてはどうでしょうか?この時点で、exportfs コマンドを使用すると、変更をすぐに有効にすることができます。コマンドの形式は次のとおりです:
exportfs [-aruv] -a: /etc/exports -r の内容をすべてマウントするか、アンマウントします。 remount /etc/exports -uで共有するディレクトリ -uマウントディレクトリ -v: エクスポート時に詳細情報を画面に出力します。
showmount コマンド: nfs サーバーのマウント情報を表示します。
showmount -e [nfs-server]: 指定した nfs サーバー上のエクスポートされたディレクトリを表示します。以下の IP が指定されていない場合は、ローカル マシンが nfs サーバーとして機能するときに外部に共有されるディレクトリが表示されます。 。
rpcinfo -p コマンド: rpc 情報を表示します。 -p パラメーター: rpc プロトコルを使用して、ホストで使用されている rpcbind を検出し、登録されているすべての rpc プログラムを表示します。
nfsstat コマンド: nfs の実行ステータスを確認します。これは、nfs の動作を調整するのに非常に役立ちます。
プロセス中に発生する問題の解決策:
1、yum 経由 または、rpm 経由でポートマップをインストールした後、service portmap start コマンドを実行すると、次のエラーが発生します: portmap: unrecognized service.
centos6 (linux kernel 2.6.32) では、portmap が rpcbind に置き換わりましたが、インストール情報をよく確認すると、yum install portmap コマンドを実行すると rpcbind がインストールされていることがわかります。インストールが完了したら、コマンド yum whatprovides portmap を使用して詳細情報を表示することもできます。
2. クライアントがマウントされると、エラー「mount clntudp_create: rpc: port mapper failed - rpc: unavailable to accept」が報告されます。
•1. コマンド rpcinfo -p を使用して、ポートマップ サービスと対応するポート (デフォルトは 111) が正常に起動していることを確認します。
•2. /etc/sysconfig/iptables ファイアウォール設定を確認して、 tcp と udp。ポート 111 にアクセスし、サービス iptables を再起動します。
•3、/etc/hosts.deny、/etc/hosts.allow を確認して、クライアント接続がブロックされているかどうかを確認します。
3、クライアントコマンド showmount - e nfs-server を実行すると、エラーが報告されます: mount clntudp_create: rpc: プログラムが登録されていません。
nfs および rpcbind サービスが開始されていません。chkconfig を使用して nfs および rpcbind をシステム サービスに追加し、service を使用してそれらを開始します。
または、ルール all:192.168.0.135# を /etc/hosts.allow に追加しますクライアントのアクセスを許可します。##
4. クライアントがコマンド showmount -e nfs-server を実行すると、次のエラーが報告されます: rpc mount export: rpc: unavailable to accept; errno = no Route to host
Configuration file: /etc/sysconfig/ nfs
nfs サービスに関連するポート設定が設定されている場所を見つけ、コメントを削除した後、iptables のファイアウォール設定で、該当するポートの udp および tcp フローが通過できるように指定します。
#mountd_port=892
#statd_port=662
#lockd_tcpport=32803
#lockd_udpport=32769
iptables -a input -p tcp --dport 662 -m state --state new - j accept
iptables -a input -p udp --dport 661 -m state --state new -j accept
5, showmount -e nfs-server は成功し、エラーが報告されます。公式マウントは: マウント: nfs サーバー '192.168.1.5' へのマウントに失敗しました: システム エラー: ホストへのルートがありません。これは、nfs サービスのデフォルト ポート 2049 がファイアウォールによってブロックされているためです。上記と同様に、iptables を次のように変更します。ポート 2049 の通過を許可します
6、showmount -e nfs-server は成功しましたが、正式にマウントされるとエラーが発生します: mount: nfs サーバー '192.168.1.5' へのマウントに失敗しました: タイムアウト (再試行) .
/etc/sysconfig/iptables を編集する場合、関連するポートの tcp ポートの通過は許可されますが、udp の通過は許可されません。その他の考えられる理由については、「マウント コマンドが nfs サーバー失敗エラーで失敗する。
nfs サーバーから DNS サーバーへの名前検索要求を無効にする。
または、nfs クライアントで使用されている nfs バージョンがバージョン 3 以外である。#」を参照してください。
•サーバー側の共有ディレクトリの権限を変更します chown 760 /home (ファイル所有者の root はフル権限、およびファイルのすべてのグループ ユーザーが読み取りおよび書き込み権限を持っている) 権限、他のユーザーには権限がない場合、ディレクトリのグループを nfsnobody に設定します)
•サーバー側の共有ディレクトリ権限グループ所有者を次のように変更します。 nfsnobody(cat /etc/passwd | grep nob)
•chgrp nfsnobody /home
•クライアント上に新しいファイルが正常に作成されました。
以上がLinux での NFS のインストールと構成の方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。