天天看點

NFS伺服器

                                     NFS伺服器

環境:

       VMware workstation 10

       centos6.4作業系統

       兩台或兩台以上虛拟系統

RPC(Remote Procedure Call Protocol)——遠端過程調用協定,它是一種通過網絡從遠端計算機程式上請求服務,而不需要了解底層網絡技術的協定。RPC協定假定某些傳輸協定的存在,如TCP或UDP,為通信程式之間攜帶資訊資料。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程式在内的應用程式更加容易

運作時,一次客戶機對伺服器的RPC調用,其内部操作大緻有如下十步:

1.調用用戶端句柄;執行傳送參數

2.調用本地系統核心發送網絡消息

3.消息傳送到遠端主機

4.伺服器句柄得到消息并取得參數

5.執行遠端過程

6.執行的過程将結果傳回伺服器句柄

7.伺服器句柄傳回結果,調用遠端系統核心

8.消息傳回本地主機

9.客戶句柄由核心接收消息

10.客戶接收句柄傳回的資料

在Linux與windows之間用rpc也是一種選擇,但不是最佳

主要用于實作網絡存儲

在nfs用戶端,會用rpc.mountd來連接配接對方的portmapper(發出連接配接請求.portmapper接收到請求之後會同rpc.mountd來協商通信端口,之後rpc.mountd會利用端口進行挂載到本地)

nfs工作時是将遠方的磁盤挂載到本地

rpciod 是連接配接到對方的nfs上進行io操作的服務程序

nlockmgr是保證在衆多的客戶連接配接在進行io操作時資料的一緻性,即對正在寫操作的檔案進行加鎖保護

status主要是靠發送封包的形式維持客戶與伺服器的連接配接狀态

[root@localhost ~]# rpcinfo

-bash: rpcinfo: command not found

[root@localhost etc]# mount /dev/cdrom /media/cdrom

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@localhost etc]# cd /media/cdrom/Packages/

[root@localhost Packages]# ll rpc*

-r--r--r--. 3 root root 52096 Feb 23  2013 rpcbind-0.2.0-11.el6.i686.rpm

[root@localhost Packages]# rpm -qa |grep rpc

xmlrpc-c-client-1.16.24-1209.1840.el6.i686

xmlrpc-c-1.16.24-1209.1840.el6.i686

[root@localhost Packages]# yum --disablerepo=\* --enablerepo=c6-media install rpcbind

[root@localhost Packages]# rpcinfo

rpcinfo: can't contact rpcbind: RPC: Remote system error - No such file or directory

[root@localhost ~]# service rpcbind start

Starting rpcbind:                                          [  OK  ]

  program version netid     address                service    owner

   100000    4    tcp6      ::.0.111               portmapper superuser

   100000    3    tcp6      ::.0.111               portmapper superuser

   100000    4    udp6      ::.0.111               portmapper superuser

   100000    3    udp6      ::.0.111               portmapper superuser

   100000    4    tcp       0.0.0.0.0.111          portmapper superuser

   100000    3    tcp       0.0.0.0.0.111          portmapper superuser

   100000    2    tcp       0.0.0.0.0.111          portmapper superuser

   100000    4    udp       0.0.0.0.0.111          portmapper superuser

   100000    3    udp       0.0.0.0.0.111          portmapper superuser

   100000    2    udp       0.0.0.0.0.111          portmapper superuser

   100000    4    local     /var/run/rpcbind.sock  portmapper superuser

   100000    3    local     /var/run/rpcbind.sock  portmapper superuser

還可以用 -p 參數來指定主機端口

[root@localhost ~]# rpcinfo -p 127.0.0.1

  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@localhost ~]# chkconfig rpcbind on

[root@localhost ~]# mkdir /share1

編輯通路共享清單清單

關于這個檔案的編寫格式及含義,大家可以參閱man手冊(可能要先安裝)

在這其中有幾個重要的參數如,no_root_squash,在寫操做時映射為匿名賬戶

清單如下,如允許192.168.2.188進行讀寫操作,并同步操作,如圖

NFS伺服器

網絡權限為讀寫,那麼本地的相關權限也要打開

[root@localhost ~]# ll -d /share1/

drwxr-xr-x. 2 root root 4096 Feb 20 00:44 /share1/

[root@localhost ~]# chmod o+wt /share1/

開啟nfs服務,并将共享清單釋放出去

[root@localhost ~]# service nfs start

Starting NFS services:                                     [  OK  ]

Starting NFS quotas:                                       [  OK  ]

Starting NFS mountd:                                       [  OK  ]

Starting NFS daemon:                                       [  OK  ]

[root@localhost ~]# chkconfig nfs on

[root@localhost ~]# exportfs -rv

exporting 192.168.2.188:/share1

關閉防火牆功能,或修改selinux配置檔案(開機自動關閉)

[root@localhost ~]# vim /etc/sysconfig/selinux

NFS伺服器

[root@localhost ~]# service iptables stop

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Unloading modules:                               [  OK  ]

客戶機的也關閉

[root@localhost ~]# chkconfig iptables off

[root@localhost ~]# setenforce 0

[root@localhost ~]# mount /dev/sr0 /media/cdrom

[root@localhost ~]#

[root@localhost ~]# yum --disablerepo=\* --enablerepo=c6-media install rpcbind

NFS伺服器

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

[root@localhost ~]# showmount

-bash: showmount: command not found

[root@localhost ~]# yum --disablerepo=\* --enablerepo=c6-media install nfs-utils

但是在執行showmount指令時沒有,是以要安裝和它有關的軟體包,在不知道具體軟體的情況下可以在

在服務機上進行下列工作可以查出所需指令的軟體包

[root@localhost ~]#  which  showmount

/usr/sbin/showmount

[root@localhost ~]# rpm -qf 'which showmount'    #` `是反引号,不是單引号,正規表達式規則

error: file /root/which showmount: No such file or directory

[root@localhost ~]# rpm -qf `which showmount`

nfs-utils-1.2.3-36.el6.i686

然後在客戶機上安裝

[root@localhost ~]# showmount -e 192.168.2.199

Export list for 192.168.2.199:

/share1 192.168.2.188

[root@localhost ~]# mount 192.168.2.199:/share1 /mnt/nfs

[root@localhost ~]# mount

/dev/sda2 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

/dev/sr0 on /media/cdrom type iso9660 (ro)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

192.168.2.199:/share1 on /mnt/nfs type nfs (rw,vers=4,addr=192.168.2.199,clientaddr=192.168.2.188)

[root@localhost ~]# cd /mnt/nfs

[root@localhost nfs]# ll

total 0

[root@localhost nfs]# touch f1

-rw-r--r--. 1 nfsnobody nfsnobody 0 Feb 20 01:57 f1 #權限正常

測試其他ip的主機能否操作

先解除安裝本地挂載點

[root@localhost nfs]# cd

[root@localhost ~]# fuser -km /mnt/nfs

[root@localhost ~]# umount /mnt/nfs

修改用戶端的ip(臨時ip)

NFS伺服器

權限拒絕

測試針對所有人的挂載操作

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

NFS伺服器

exporting *:/share1

mount檢視結果,先測試192.168.2.188

NFS伺服器

并進如目錄,(129.168.2.177身份)實際測試

NFS伺服器

自動挂載測試

[root@localhost ~]# vim /etc/fstab

NFS伺服器

測試,(先確定以前的已解除安裝)

NFS伺服器
NFS伺服器

解決rpc中status狀态占用帶寬的問題,借助于自動檔案系統,可能要先安裝自動檔案系統的相關包

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

avahi-autoipd-0.6.25-12.el6.i686

[root@localhost ~]# yum --disablerepo=\* --enablerepo=c6-media install autofs

[root@localhost ~]# vim /etc/auto.master

NFS伺服器

[root@localhost ~]# cp /etc/auto.misc /etc/auto.nfs

[root@localhost ~]# vim /etc/auto.nfs

NFS伺服器

注意上圖中的檔案格式是不正确的,因為檔案參數預設以空格為分隔符,正确為

NFS伺服器

修改行的參數意義為:去監控/mnt目錄,當60之後該目錄沒有任何io操作時,将去執行/etc/auto.nfs中的内容

而在/etc/auto.nfs中我們的檔案參數含義為,挂載192.168.2.199:/share1到/nfs1(/mnt/)目錄中去,注意此時我們監控的是在/mnt目錄下。是以會自動在該目錄下建立子目錄,不需要事先存在

,且該目錄會在逾時後自動消失

[root@localhost mnt]# service autofs restart

Stopping automount:                                        [  OK  ]

Starting automount:                                        [  OK  ]

[root@localhost mnt]# cd nfs1/

[root@localhost nfs1]# mount

192.168.2.199:/share1 on /mnt/nfs1 type nfs (rw,soft,intr,sloppy,vers=4,addr=192.168.2.199,clientaddr=192.168.2.188)

監視mount

[root@localhost nfs1]# cd

[root@localhost ~]# watch -n  1 'mount'

NFS伺服器

沒有挂載,然後進入,(會自動挂載)

NFS伺服器
NFS伺服器

回到主目錄,等候60秒,讓其自動解除安裝

[root@localhost ~]# cd

[root@localhost ~]# pwd

/root

NFS伺服器

我們的實驗正常結果應該是解決在進入指定目錄後,會自動挂載,并在逾時時間内自動解除安裝,

結果正常,測試結束.

繼續閱讀