Linux NFS服務器的安裝與配置詳解

一、NFS服務簡介

       NFS是Network  File System(網絡文件系統)。主要功能是通過網絡讓不同的服務器之間可以共享文件或者目錄。NFS客戶端一般是應用服務器(比如web,負載均衡等),可以通過掛載的方式將NFS服務器端共享的目錄掛載到NFS客戶端本地的目錄下。

      NFS在文件傳送過程中依賴與RPC(遠程過程調用)協議。NFS本身是沒有提供信息傳送的協議和功能的,但是能夠用過網絡進行圖片,視頻,附件等分享功能。只要用到NFS的地方都需要啓動RPC服務,不論是NFS的服務端還是客戶端。

      NFS和RPC的關係:可以理解爲NFS是一個網絡文件系統(比喻爲租房的房主),而RPC是負責信息的傳輸(中介),客戶端(相當於租房的租客)

wKiom1hbRaqy_zpQAACh3q1gzLk124.png-wh_50

系統環境:

[root@oldboy ~]# cat /etc/redhat-release   ##查看系統版本信息
CentOS release 6.7 (Final)
[root@oldboy ~]# uname -r                  ##查看內核信息
2.6.32-573.el6.x86_64
[root@oldboy ~]# uname -m                  ##查看系統是32位還是64位的
x86_64

、服務端配置

       在啓動NFS服務之前,首先要啓動RPC服務(CentOS5是portmap服務,CentOS6.6以後的版本是rpcbind服務),否則NFS服務器無法向RPC服務註冊。另外,RPC服務如果重啓,原來以及有的NFS端口就會丟失,因此,只要RPC服務重啓,NFS服務就要重啓向RPC重新註冊新的隨機端口號。一般修改NFS配置文件後,不需要重啓服務,直接平滑重啓即可,命令:/etc/init.d/nfs reload或者exportfs -rv就可以修改/etc/exports生效。

      /etc/init.d/nfs reload的作用是:讓已經到達服務器的請求給他處理完畢,但是沒有到達服務器的請求,就把它斷掉。就相當於我們去車站坐車,車子即將出發時,已經上車的就可以正常出發,沒有趕上車的就沒有辦法跟車出發。


要部署NFS服務,需要安裝下面的軟件包:

1)nfs-utils:NFS服務的主程序
2)rpcbing:NFS可以視爲一個RPC的主程序,在啓動任何一個RPC程序之前,需要做好端口和功能的對應映射工作

1)查看NFS的軟件包

[root@oldboy ~]# rpm -qa nfs-utils rpcbind

nfs和rpc默認是沒有安裝的,需要yum安裝


2)CentOS6.7默認沒有安裝軟件包,可以使用yum   install  nfs-utils rpcbind -y命令來安裝NFS軟件

[root@oldboy ~]# yum install nfs-utils rpcbind  -y
[root@oldboy ~]# rpm -qa nfs-utils rpcbind
nfs-utils-1.2.3-70.el6_8.2.x86_64
rpcbind-0.2.0-12.el6.x86_64

3)啓動NFS服務

第一步:先啓動rpc服務

[root@oldboy ~]# /etc/init.d/rpcbind start   #啓動rpc服務
[root@oldboy ~]# /etc/init.d/rpcbind status   #查看rpc服務狀態
rpcbind (pid  4269) 正在運行...

第二步:啓動NFS服務

[root@oldboy ~]# /etc/init.d/nfs start    #啓動nfs服務
[root@oldboy ~]# /etc/init.d/nfs status    #查看nfs服務狀態
rpc.svcgssd 已停
rpc.mountd (pid 3282) 正在運行...
nfsd (pid 3298 3297 3296 3295 3294 3293 3292 3291) 正在運行...
rpc.rquotad (pid 3277) 正在運行...

  必須要先啓動rpc服務,然後再啓動NFS服務,如果先啓動NFS服務,啓動服務時會失敗,提示如下

[root@oldboy ~]# /etc/init.d/nfs start
啓動 NFS 服務:                                            [確定]
關掉 NFS 配額:無法註冊服務: RPC:無法接收; errno = 拒絕連接
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [失敗]
啓動 NFS mountd:                                          [失敗]
啓動 NFS 守護進程:
[root@oldboy ~]# rpcinfo -p 172.16.1.31  #查看NFS服務向rpc註冊的端口信息,主端口號是:111
   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   tc
p    875  rquotad
    100011    2   tcp    875  rquotad

第三步:檢查開機是否自啓動

[root@oldboy ~]# chkconfig nfs on
[root@oldboy ~]# chkconfig rpcbind on
[root@oldboy ~]# chkconfig --list nfs
nfs             0:關閉  1:關閉  2:啓用  3:啓用  4:啓用  5:啓用  6:關閉
[root@oldboy ~]# chkconfig --list rpcbind
rpcbind         0:關閉  1:關閉  2:啓用  3:啓用  4:啓用  5:啓用  6:關閉
[root@oldboy ~]# tail -2 /etc/rc.local 
/etc/init.d/rpcbind start
/etc/init.d/nfs  start

在工作中,大都是統一按照運維規範將服務的啓動命令放到/etc/rc.local裏面,而不是用chkconfig來管理的,所有的服務一旦開機自啓動就必須放到/etc/rc.local中。這樣的好處是,一旦管理此服務器的人員離職忙活着業務遷移都可以通過/etc/rc.local很容易的查看到服務器對應的相關服務,可以方便的運維管理。


4)NFS服務端配置文件的配置

NFS默認配置文件路徑是:/etc/exports,文件默認是空的。

/etc/exports配置文件的格式是:

NFS共享的目錄    NFS客戶端地址(參數1,參數2)

[root@oldboy ~]# cat /etc/exports 
#share /data by oldboy for bingbing at 20160425 
/data 172.16.1.0/24(rw,sync)  ##一條配置搞定NFS配置文件
其中:/data是服務器端共享的目錄
      172.16.1.0/24共享目錄的客戶端ip地址
      (rw,sync) ,其中rw代表擁有讀寫的權限,sync代表數據同步寫入NFS服務器端的硬盤中。也可以用async,async是大數據時使用,是先寫到緩存區,再寫到磁盤裏。

NFS共享的目錄:爲NFS服務器端要共享的實際目錄,要用決定路徑,如(/data)。注意共享目錄的本地權限,需要讀寫權限,一定要讓本地目錄可以被NFS客戶端的用戶讀寫

NFS客戶端地址:爲NFS服務器端授權的可訪問的共享目錄的NFS客戶端地址,可以爲單獨的ip地址或者主機名,域名等,也可以是整個網段的地址。

  創建/data目錄,並且屬主和屬組都爲:nfsnobody,其中nfsnobody是安裝nfs服務時默認的用戶

[root@oldboy ~]# mkdir /data -p
[root@oldboy ~]# chown -R nfsnobody:nfsnobody /data
[root@oldboy ~]# ls -ld /data
drwxr-xr-x 6 nfsnobody nfsnobody 4096 12月  8 20:17 /data
[root@oldboy ~]# /etc/init.d/nfs reload
 [root@oldboy ~]# showmount -e 172.16.1.31  ##本地測試,說明服務端測試成功
Export list for 172.16.1.31:
/data 172.16.1.0/24


四、客戶端配置

1.客戶端和服務端一樣,也要安裝nfs和rpm的安裝包。(配置見服務器端)

2.客戶端需要啓動rpc服務,加入開機自啓動,不需要啓動nfs服務。(配置見服務器端)

3.測試:

第一步:ping,能不能ping通服務器端ip地址

[root@oldboy ~]# ping 172.16.1.31
PING 172.16.1.31 (172.16.1.31) 56(84) bytes of data.
64 bytes from 172.16.1.31: icmp_seq=1 ttl=64 time=0.383 ms
64 bytes from 172.16.1.31: icmp_seq=2 ttl=64 time=0.434 ms
64 bytes from 172.16.1.31: icmp_seq=3 ttl=64 time=0.420 ms
64 bytes from 172.16.1.31: icmp_seq=4 ttl=64 time=0.437 ms
64 bytes from 172.16.1.31: icmp_seq=5 ttl=64 time=0.439 ms
^C
--- 172.16.1.31 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4997ms
rtt min/avg/max/mdev = 0.383/0.422/0.439/0.030 ms

第二步:telnet服務端的111端口

[root@oldboy ~]# telnet 172.16.1.31 111
Trying 172.16.1.31...
Connected to 172.16.1.31.
Escape character is '^]'.

第三步:showmount服務端

[root@oldboy ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

第四步:掛載,文件共享

[root@oldboy ~]# mount -t  nfs 172.16.1.31:/data/ /mnt

第五步:查看是否掛載成功了

[root@oldboy ~]# df -h
Filesystem          Size  Used Avail Use% Mounted on
/dev/sda3           8.8G  1.5G  6.9G  18% /
tmpfs               491M     0  491M   0% /dev/shm
/dev/sda1           190M   36M  145M  20% /boot
172.16.1.31:/data/  8.8G  1.5G  7.0G  18% /mnt

說明客戶端測試成功,配置完成。
















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章