NFSネットワークファイル共有サービス(乾物)の構築

7875 ワード

まず乾物を出します:
以下は、NFSパッケージを表示するための全プロセス(クライアントとサービス側の比較)の構成です[root@server~]#rpm-aq nfs-utils portmap rpcbind#このコマンドは(yum grouplist)よりも効率的です
インストール方法1:[root@server~]#yum groupinstall"NFS file server"も使い方2:[root@server~]#yum install nfs-utils rpcbind-yインストール
クライアントとサービス・エンド・ソフトウェアの比較クライアント
 [root@client ~]# rpm -aq nfs-utils portmap rpcbind 
 rpcbind-0.2.0-13.el6_9.1.x86_64      
 nfs-utils-1.2.3-75.el6.x86_64  

サービス側
[root@server ~]# rpm -aq nfs-utils portmap rpcbind
rpcbind-0.2.0-13.el6_9.1.x86_64
nfs-utils-1.2.3-75.el6.x86_64

クライアント
[root@client ~]# /etc/init.d/rpcbind start
Starting rpcbind:                                          [  OK  ]   
[root@client ~]# chkconfig  rpcbind on
[root@client ~]# chkconfig --list rpcbind
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off

サービス側
[root@server ~]# /etc/init.d/rpcbind start
Starting rpcbind:                                          [  OK  ]
[root@server ~]# ps -ef |grep rpc
rpc       2959     1  0 12:24 ?        00:00:00 rpcbind
root      2966  1375  0 12:25 pts/1    00:00:00 grep --color=auto rpc
[root@server ~]# /etc/init.d/rpcbind status
rpcbind (pid  2959) is running...

[root@server ~]# rpcinfo -p localhost
     program vers proto   port  service
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
[root@server ~]# /etc/init.d/nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[root@server ~]# rpcinfo -p localhost     
 program vers proto   port  service
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100011    1   udp    875  rquotad
100011    2   udp    875  rquotad
100011    1   tcp    875  rquotad
100011    2   tcp    875  rquotad
100005    1   udp  62211  mountd
100005    1   tcp  16172  mountd
100005    2   udp  37947  mountd
100005    2   tcp  13732  mountd
100005    3   udp  46640  mountd
100005    3   tcp  38829  mountd
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100227    2   tcp   2049  nfs_acl
100227    3   tcp   2049  nfs_acl
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100227    2   udp   2049  nfs_acl
100227    3   udp   2049  nfs_acl
100021    1   udp  39990  nlockmgr
100021    3   udp  39990  nlockmgr
100021    4   udp  39990  nlockmgr
100021    1   tcp   4795  nlockmgr
100021    3   tcp   4795  nlockmgr
100021    4   tcp   4795  nlockmgr

(rpcサービスが開いていない場合)
[root@server ~]# /etc/init.d/rpcbind stop #    
Stopping rpcbind:                                          [  OK  ]
[root@server ~]# rpcinfo -p localhost    #     
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused 

サービス側が開いた後、電源を入れてから設定を開始します.
[root@server ~]# chkconfig nfs on
[root@server ~]# chkconfig rpcbind on
[root@server ~]# chkconfig --list nfs #  
nfs             0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@server ~]# chkconfig --list rpcbind #  
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off

これで、基本サービスの構築が完了しました.
サービス側NFSプロファイル
[root@server ~]# mkdir /data
[root@server ~]# ll /etc/exports
-rw-r--r--. 1 root root 0 Jan 12  2010 /etc/exports
[root@server /]# cat /etc/exports 
####nfs data by nopsmile ####
/data 172.16.30.0/24(rw,sync)
[root@server /]# /etc/init.d/nfs reload
[root@server /]# showmount -e localhost
Export list for localhost:
/data 172.16.30.0/24

クライアント
[root@client ~]# showmount -e 172.16.30.190
Export list for 172.16.30.190:
/data 172.16.30.0/24
[root@client ~]# mount -t nfs 172.16.30.190:/data /mnt
[root@client ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             8.7G  1.5G  6.8G  18% /
tmpfs                 497M     0  497M   0% /dev/shm
/dev/sda1             194M   28M  157M  15% /boot
172.16.30.190:/data   8.7G  1.5G  6.8G  18% /mnt

rcが永続的に有効である場合.local fstabの中
[root@server /]# cat /var/lib/nfs/etab 
/data   172.16.30.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)

以上の構成が完了しました.
コンセプト補完
NFSネットワークファイルシステムの使用はwindowsシステムのネットワーク共有、セキュリティ機能、ネットワークドライバマッピングに似ており、linuxのsambaサービスと似ています.RPCプロトコル/サービスに基づいています.NFSのRPCサービスの最も主要な機能は、各NFS機能に対応するポート番号を記録し、NFSクライアントの要求時にそのポートと機能に対応する情報を要求データのNFSクライアントに伝達することであり、クライアントが正しいNFSポートに接続できることを確保し、データ伝送のインタラクティブなデータ目的を実現することができる.
NFSサービスを導入するには、次のパッケージをインストールする必要があります.
  • nfs-utils:このNFSサービスメインプログラム.(rpc.nfsa、rpc.mountdの2つのdaemonsと関連ドキュメントの説明、コマンドファイルの実行などが含まれます.)
  • portmap:Centos5.Xの下のRPCのメインプログラム(Centos 6.Xの下の名前はrpcbind)NFSは、いずれかのRPCプログラムを起動する前に、ポートと機能の対応するマッピング作業を行う必要があるRPCプログラムと見なすことができ、このマッピング作業はportmap(またはrpcbind)サービスによって行われる.したがって、NFSサービスを提供する前に、portmap(Centos 6.4でrpcbind)サービスを開始する必要があります.

  • exports構成
    /etc/exportsファイルの構成形式は次のとおりです.
    NFS     NFS     1( 1, 2……) NFS     2( 1, 2……)
    NFS     NFS     1( 1, 2……)
    EXAMPLE
       # sample /etc/exports file
       /               master(rw) trusty(rw,no_root_squash)
       /projects       proj*.local.domain(rw)
       /usr            *.local.domain(ro) @trusted(rw)
       /home/joe       pc001(rw,all_squash,anonuid=150,anongid=100)
       /pub            *(ro,insecure,all_squash)

    ここで、上記の各列パラメータの意味は以下の通りである:1、NFS共有ディレクトリ:NFSサービス側が共有する実際のディレクトリであり、絶対パスを使用する.(/data/bbs)プロジェクトのローカル権限に注意し、読み書き共有が必要な場合は、ローカルディレクトリがNFSクライアントのユーザー(nfsnobody)に読み書き可能2、NFSクライアントアドレス:NFSサービス側に許可された共有ディレクトリへのアクセス可能なNFSクライアントアドレス、個別のIPアドレスやホスト名、ドメイン名などであってもよいし、セグメント全体のアドレスであってもよい.また、すべてのクライアント・サーバに対して「*」を使用してアクセスすることもできます.ここで、クライアントとは一般的にフロントエンドのビジネス・サーバ、例えばウェブ・サービスです.次のようになります.
  • 例1:単一クライアントのNFS->10.0.0.30へのアクセスを許可する(一般的には、本番環境ではこの構成は多くない)
  • 例2:ネットワークセグメント全体にNFS->10.0.0/24へのアクセスを許可(そのうち24は255.255.255.255.0と同等)ネットワークセグメントを生産交換のために最も一般的な構成として制定し、構成が簡単で、メンテナンスが便利である)
  • 例3:NFS->10.0.0.*へのネットワークセグメント全体のアクセスを許可(セグメントの書き方を定める(検証が必要))
  • 例4:ドメイン名クライアントにNFS->Nfsへのアクセスを許可する.test.cc(この方法の生産環境は一般的によく用いられない)
  • 例5:ドメイン名クライアントにNFS-->*へのアクセスを許可する.test.cc(この方法の生産環境は一般的によく用いられない)
  • 3、rw(読み書き可能な権限を示す)、ro(読み取り専用権限を示す)、sync(データの要求または書き込み時にNFSserverのハードディスクにデータが同期して書き込まれてから戻る)、async、all_squash(複数のNFSクライアントが同時にNFSserverデータを読み書きする場合、このパラメータは便利です)、anonuid
    NFS生産の重要な技術を配合する:
  • すべてのサーバがNFS共有ディレクトリに対して同じ権限を持っていることを確認する
  • all_squashはすべてのクライアントを匿名ユーザーに圧縮します.
  • はanonuid、anongidが指定したuigおよびgidユーザーです.

  • すべてのクライアントおよびサービス側には、同じuidおよびgidユーザ、すなわちnfsnobody(uidは同じでなければならない)
  • が必要である.
    NFSのメリット:
    1、簡単で使いやすく、把握しやすく、データはファイルシステムの上にある.2、配置が迅速で、メンテナンスが簡単3、信頼性ソフトウェアの面から見ると、データの信頼性が高く、耐久性が高く、データはファイルシステムの上にある.4、安定
    NFSの限界
    1、限界は単一の故障が存在し、nfsがダウンタイムした場合、すべてのクライアントが使用できない、2、高同時の場合、NFS効率性能が限られている(一般的に数千万以下のpVのウェブサイトはボトルネックではなく、ウェブサイトのアーキテクチャがあまりにも悪い場合を除き、2千万pv/r日)3、クライアント認証時にipとホスト名に基づいている場合、安全性は一般的に(イントラネットでは問題ない)4、NFSデータは明文で、データの完全性を検証しない.5、複数台の機器がNFSサーバーをマウントする場合、接続管理とメンテナンスが面倒で、特にNFSサービス側に問題が発生し、すべてのNFSクライアントがマウント状態である(テスト環境はautofs自動マウントで解決できる)
    (不足があれば、よろしくお願いします)
    転載先:https://blog.51cto.com/4534309/2087202