CentOS6.5下搭建NFS文件服務器

一、NFS服務簡介:

  NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公佈。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。

  NFS 的基本原則是“容許不同的客戶端及服務端通過一組RPC分享相同的文件系統”,它是獨立於操作系統,容許不同硬件及操作系統的系統共同進行文件的分享。

  NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procedure Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因爲NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啓動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這麼理解RPC和NFS的關係:NFS是一個文件系統,而RPC是負責負責信息的傳輸。

二、環境介紹:

系統平臺:CentOS release 6.5 (Final)

nfs服務器ip:192.168.56.131

linux客戶端ip:192.168.56.130

windows客戶端ip:192.168.56.129

SELINUX=disabled

三、安裝NFS服務

1、查看系統是否已安裝NFS:

[root@localhost ~]# rpm -qa |grep nfs

[root@localhost ~]# rpm -qa |grep rpcbind

2、如果當前系統中沒有安裝NFS所需的軟件包,安裝nfs 和 rpcbind 軟件包:

[root@localhost ~]# yum -y install nfs-utils  rpcbind

四、NFS服務器的配置

1、創建NFS共享目錄,設置讀寫權限:

[root@localhost ~]# mkdir /home/share

[root@localhost ~]# chmod -R 777 /home/share/

2、 編輯export文件,這個文件是NFS的主要配置文件:

[root@localhost ~]# vi /etc/exports

/home/share/ 192.168.56.130(insecure,rw,no_root_squash) 192.168.56.129(insecure,rw,sync)

注意地址和參數表之間沒有空格。如果下面設置的mountd端口大於1024,需要在參數表裏加入參數:insecure

3、 配置生效:

[root@localhost ~]# exportfs -r


內容格式: <輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其他)] [客戶端2 選項(訪問權限,用戶映射,其他)]

客戶端地址的指定方式

  • 指定ip地址的主機:192.168.0.200

  • 指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0

  • 指定域名的主機:david.bsmart.cn

  • 指定域中的所有主機:*.bsmart.cn

  • 所有主機:*

訪問權限選項
  • 設置輸出目錄只讀:ro

  • 設置輸出目錄讀寫:rw

用戶映射選項

  • all_squash:屏蔽所有遠程用戶的權限,將遠程訪問的所有普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody);

  • no_all_squash:與all_squash取反(默認設置);

  • root_squash:屏蔽遠程root權限,將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置);

  • no_root_squash:NFS客戶端連接服務端時如果使用的是root的話,那麼對服務端分享的目錄來說,也擁有root權限。顯然開啓這項是不安全的;

  • anonuid=xxx:將遠程訪問的所有用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx);

  • anongid=xxx:將遠程訪問的所有用戶組都映射爲匿名用戶組賬戶,並指定該匿名用戶組賬戶爲本地用戶組賬戶(GID=xxx);

其它選項

  • secure:限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);

  • insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;

  • sync:同步寫操作,,將數據同步寫入內存緩衝區與磁盤中,效率低,但可以保證數據的一致性;

  • async:異步寫操作,將數據先保存在內存緩衝區中,必要時才寫入磁盤;

  • wdelay:延遲寫操作,檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);

  • no_wdelay:若有寫操作則立即執行,應與sync配合使用;

  • subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);

  • no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;

五、防火牆設置

1、編輯nfs配置文件,把 4個動態端口設置成靜態的:

[root@localhost ~]# vi /etc/sysconfig/nfs 

LOCKD_TCPPORT=30001    #TCP鎖使用端口

LOCKD_UDPPORT=30002    #UDP鎖使用端口

MOUNTD_PORT=30003      #掛載使用端口

STATD_PORT=30004       #狀態使用端口

2、在防火牆配置開放上面配置的端口,以及nfs協議端口2049、rquotad的875端口、rpc的111端口

[root@localhost ~]# vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 30001 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 30001 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 30002 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 30002 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 30003 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 30003 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 30004 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 30004 -j ACCEPT

[root@localhost ~]# service iptables restart

六、啓動NFS服務rpcbind、nfs服務

[root@localhost ~]# service rpcbind  restart

[root@localhost ~]# service nfs  restart

[root@localhost ~]# chkconfig --level 235 rpcbind on

[root@localhost ~]# chkconfig --level 235 nfs on

、Linux客戶端掛載NFS

1、安裝NFS:

[root@localhost ~]# yum -y install nfs-utils

2、查看服務器的共享目錄信息:

[root@localhost ~]# showmount -e 192.168.56.131

Export list for 192.168.56.131:

/home/share 192.168.56.129,192.168.56.130

3、爲了提高NFS的穩定性,使用TCP協議掛載,NFS默認用UDP協議:

[root@localhost ~]# mkdir /mnt/share

[root@localhost ~]# mount -t nfs 192.168.56.131:/home/share /mnt/share -o proto=tcp -o nolock

4、卸載已掛在的NFS:

[root@localhost /]# umount /mnt/share/

5、開機自動掛載:

[root@localhost /]# echo "192.168.56.131:/home/share /mnt/share nfs defaults 0 0" >>/etc/fstab

八、Windows客戶端掛載NFS

1、打開控制面板->程序->打開或關閉windows功能->NFS客戶端

    勾選NFS客戶端,即開啓windows NFS客戶端服務.

2、win+R打開cmd終端:

C:\Windows\system32>showmount -e 192.168.56.131

C:\Windows\system32>mount 192.168.56.131:/home/share X:

成功掛載,打開我的點腦,你即可在你網絡位置看到 X:盤了

3.取消掛載:

umount -a(卸載全部掛接點)

直接在 我的電腦 裏面鼠標點擊取消映射網絡驅動器 X:

九、相關命令

1、exportfs

啓動了NFS之後又修改了/etc/exports,可以用exportfs 命令來使改動立刻生效:

  # exportfs [-aruv]

  -a 全部掛載或卸載 /etc/exports中的內容 
  -r 重新讀取/etc/exports 中的信息 ,並同步更新/etc/exports、/var/lib/nfs/xtab
  -u 卸載單一目錄(和-a一起使用爲卸載所有/etc/exports文件中的目錄)
  -v 在export的時候,將詳細的信息輸出到屏幕上。

具體例子: 
  # exportfs -au 卸載所有共享目錄
  # exportfs -rv 重新共享所有目錄並輸出詳細信息

2、nfsstat

查看NFS的運行狀態,對於調整NFS的運行有很大幫助。

3、rpcinfo

查看rpc執行信息,可以用於檢測rpc運行情況的工具,利用rpcinfo -p 可以查看出RPC開啓的端口所提供的程序有哪些。

4、showmount

  -a 顯示已經於客戶端連接上的目錄信息
  -e IP或者hostname 顯示此IP地址分享出來的目錄







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