1、須要安裝的軟件包ios
1)rpcbind :RPC的主程序,這個軟件包在客戶端和服務器端都須要安裝bash
2)nfs-utils :NFS的主程序,提供nfsd和mountd等相關服務,客戶端和服務端都要安裝服務器
2、開始行動。。。網絡
爲了便於區分客戶端和服務端,我分別將主機名改成Server和Clientapp
1
2
3
|
[root@Server ~]
# hostname
Server
[root@Server ~]
#
|
1
2
3
|
[root@Client ~]
# hostname
Client
[root@Client ~]
#
|
1)兩臺主機分別安裝rpcbind和nfs-utils異步
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[root@Server ~]
# yum install rpcbind
#此處省略若干行#
Dependencies Resolved
=======================================================================================================
Package Arch Version Repository Size
=======================================================================================================
Installing:
rpcbind x86_64 0.2.0-11.el6 local_repo 51 k
Installing
for
dependencies:
libgssglue x86_64 0.1-11.el6 local_repo 23 k
libtirpc x86_64 0.2.1-6.el6_4 local_repo 78 k
Transaction Summary
=======================================================================================================
Install 3 Package(s)
#此處省略若干行#
Installed:
rpcbind.x86_64 0:0.2.0-11.el6
Dependency Installed:
libgssglue.x86_64 0:0.1-11.el6 libtirpc.x86_64 0:0.2.1-6.el6_4
Complete!
[root@Server ~]
#
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
[root@Server ~]
# yum install nfs-utils
####此處省略若干行
=======================================================================================================
Package Arch Version Repository Size
=======================================================================================================
Installing:
nfs-utils x86_64 1:1.2.3-39.el6 local_repo 320 k
Installing
for
dependencies:
keyutils x86_64 1.4-4.el6 local_repo 39 k
libevent x86_64 1.4.13-4.el6 local_repo 66 k
nfs-utils-lib x86_64 1.1.5-6.el6 local_repo 67 k
Transaction Summary
=======================================================================================================
Install 4 Package(s)
####此處省略若干行
Installed:
nfs-utils.x86_64 1:1.2.3-39.el6
Dependency Installed:
keyutils.x86_64 0:1.4-4.el6 libevent.x86_64 0:1.4.13-4.el6 nfs-utils-lib.x86_64 0:1.1.5-6.el6
Complete!
[root@Server ~]
#
|
3)分析一下安裝以後生成的文件async
先看看rpcbind的tcp
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@Client ~]
# rpm -ql rpcbind
/etc/rc
.d
/init
.d
/rpcbind
#紅帽系的啓動腳本
/sbin/rpcbind
#rpcbind的啓動和管理命令
/usr/sbin/rpcinfo
#查詢指定主機的rpc信息
####下面都是打醬油的
/usr/share/doc/rpcbind-0
.2.0
/usr/share/doc/rpcbind-0
.2.0
/AUTHORS
/usr/share/doc/rpcbind-0
.2.0
/ChangeLog
/usr/share/doc/rpcbind-0
.2.0
/README
/usr/share/man/man8/rpcbind
.8.gz
/usr/share/man/man8/rpcinfo
.8.gz
/var/cache/rpcbind
[root@Client ~]
#
|
在看看nfs-utils的ide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
[root@Server ~]
# rpm -ql nfs-utils
/etc/nfsmount
.conf
/etc/rc
.d
/init
.d
/nfs
/etc/rc
.d
/init
.d
/nfslock
/etc/rc
.d
/init
.d
/rpcgssd
/etc/rc
.d
/init
.d
/rpcidmapd
/etc/rc
.d
/init
.d
/rpcsvcgssd
/etc/request-key
.d
/id_resolver
.conf
/etc/sysconfig/nfs
/sbin/mount
.nfs
/sbin/mount
.nfs4
/sbin/nfs_cache_getent
/sbin/rpc
.statd
/sbin/umount
.nfs
/sbin/umount
.nfs4
/usr/sbin/exportfs
/usr/sbin/mountstats
/usr/sbin/nfsidmap
/usr/sbin/nfsiostat
/usr/sbin/nfsstat
/usr/sbin/rpc
.gssd
/usr/sbin/rpc
.idmapd
/usr/sbin/rpc
.mountd
/usr/sbin/rpc
.nfsd
/usr/sbin/rpc
.svcgssd
/usr/sbin/rpcdebug
/usr/sbin/showmount
/usr/sbin/sm-notify
/usr/sbin/start-statd
###下面若干行省略
|
注意:有一個特特特別重要的文件上面沒有列出來,那就是/etc/exports這個文件,這是這是用於配置nfs共享文件的配置,十分重要,後面詳細介紹。性能
4)啓動RPC服務和NFS服務
在啓動NFS服務以前必定先啓動RPC服務,so,啓動rpcbind,而後用rpcinfo探測本機rpc信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@Client ~]
# service rpcbind start
Starting rpcbind: [ OK ]
[root@Client ~]
# rpcinfo 127.0.0.1
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
[root@Client ~]
#
|
從上面對rpcinfo中沒有發現任何和NFS有關的信息,那是由於咱們探測的是Client端。
好,那咱們把服務端的rpcbind和NFS啓動
1
2
3
4
5
6
7
8
9
|
[root@Server ~]
# service rpcbind start
Starting rpcbind: [ OK ]
[root@Server ~]
# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
[root@Server ~]
#
|
能夠看出來,當起動nfs主服務,隨之一塊兒啓動的還有quotas(配額服務),mountd(掛載和訪問權限控制的)等等。
如今咱們在回過頭來在客戶端用rpcinfo探測服務端。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
[root@Client ~]
# rpcinfo 192.168.80.102
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
100011 1 udp 0.0.0.0.3.107 rquotad superuser
100011 2 udp 0.0.0.0.3.107 rquotad superuser
100011 1 tcp 0.0.0.0.3.107 rquotad superuser
100011 2 tcp 0.0.0.0.3.107 rquotad superuser
100005 1 udp 0.0.0.0.170.4 mountd superuser
100005 1 tcp 0.0.0.0.233.174 mountd superuser
100005 1 udp6 ::.179.140 mountd superuser
100005 1 tcp6 ::.163.49 mountd superuser
100005 2 udp 0.0.0.0.166.4 mountd superuser
100005 2 tcp 0.0.0.0.201.171 mountd superuser
100005 2 udp6 ::.229.140 mountd superuser
100005 2 tcp6 ::.229.7 mountd superuser
100005 3 udp 0.0.0.0.237.110 mountd superuser
100005 3 tcp 0.0.0.0.183.5 mountd superuser
100005 3 udp6 ::.157.246 mountd superuser
100005 3 tcp6 ::.216.13 mountd superuser
100003 2 tcp 0.0.0.0.8.1 nfs superuser
100003 3 tcp 0.0.0.0.8.1 nfs superuser
100003 4 tcp 0.0.0.0.8.1 nfs superuser
100227 2 tcp 0.0.0.0.8.1 nfs_acl superuser
100227 3 tcp 0.0.0.0.8.1 nfs_acl superuser
100003 2 udp 0.0.0.0.8.1 nfs superuser
100003 3 udp 0.0.0.0.8.1 nfs superuser
100003 4 udp 0.0.0.0.8.1 nfs superuser
100227 2 udp 0.0.0.0.8.1 nfs_acl superuser
100227 3 udp 0.0.0.0.8.1 nfs_acl superuser
100003 2 tcp6 ::.8.1 nfs superuser
100003 3 tcp6 ::.8.1 nfs superuser
100003 4 tcp6 ::.8.1 nfs superuser
100227 2 tcp6 ::.8.1 nfs_acl superuser
100227 3 tcp6 ::.8.1 nfs_acl superuser
100003 2 udp6 ::.8.1 nfs superuser
100003 3 udp6 ::.8.1 nfs superuser
100003 4 udp6 ::.8.1 nfs superuser
100227 2 udp6 ::.8.1 nfs_acl superuser
100227 3 udp6 ::.8.1 nfs_acl superuser
100021 1 udp 0.0.0.0.231.70 nlockmgr superuser
100021 3 udp 0.0.0.0.231.70 nlockmgr superuser
100021 4 udp 0.0.0.0.231.70 nlockmgr superuser
100021 1 tcp 0.0.0.0.167.220 nlockmgr superuser
100021 3 tcp 0.0.0.0.167.220 nlockmgr superuser
100021 4 tcp 0.0.0.0.167.220 nlockmgr superuser
100021 1 udp6 ::.190.58 nlockmgr superuser
100021 3 udp6 ::.190.58 nlockmgr superuser
100021 4 udp6 ::.190.58 nlockmgr superuser
100021 1 tcp6 ::.160.232 nlockmgr superuser
100021 3 tcp6 ::.160.232 nlockmgr superuser
100021 4 tcp6 ::.160.232 nlockmgr superuser
[root@Client ~]
#
|
再看看是否是就多了不少信息啦,如今服務端的rpc就多了nfs相關的子服務了。
3、配置和使用
雙方的服務都搭建好了,如今就是使用吧
1)配置服務端要共享出去的目錄或者分區,這個配置就是剛剛說到的/etc/exports文件了
/etc/exports配置規則:[共享目錄] [客戶端][權限]
[共享文件]:這個隨意,如 /home/works/
[客戶端]: 分享給誰,誰能夠訪問,這裏可使用主機ip、網絡號ip還有主機名
主機ip:如192.168.80.101/24
網絡號:如 192.168.80.0/24
主機名:如www.baidu.com,若是用主機名配置,可使用通配符。如 *.baidu.com就表示任何baidu.com的三級域名均可以訪問
[權限] 須要注意的是,上面的每一項都是空格分開,可是權限要緊隨[客戶端]後面,用括號括起來
具體的權限選項:
1
2
3
4
5
6
7
8
9
10
11
12
|
rw: 讀寫
ro:
secure: 默認已經啓用;限制客戶端只能使用小於1024的端口訪問請求;若不加限制,則使用 insecure
async: 異步寫入,性能好,數據可靠性差;
sync
: 同步寫入,性能差,數據可靠性高;
wdelay: 寫入延遲;no_wdelay
nohide: 不隱藏要導出的目錄中掛載的其它nfs;
no_acl: 關閉nfs的acl功能;
root_squash: 壓縮root權限, nfsnobody
no_root_squash: 不壓縮root權限
all_squash:全部用戶都壓縮
anonuid=nfsuser,anongid=nfsgroup:使用指定的用戶賬號作匿名用戶賬號
|
如今咱們就配置一下咱們客戶端能夠訪問的nfs服務
1
|
/data/
192.168.80.0
/24
(rw)
|
配置好exports文件後,重啓nfs服務
重啓完成以後咱們在客戶端用showmount命令檢查一下服務端共享的文件
1
2
3
4
|
[root@Client ~]
# showmount -e 192.168.80.102
Export list
for
192.168.80.102:
/data
192.168.80.0
/24
[root@Client ~]
#
|
能夠看到服務端共享了/data這個目錄,那咱們趕忙掛載使用吧。
將對方的/data/掛載到本地/nfstest/裏
1
2
3
4
|
[root@Client ~]
# mount 192.168.80.102:/data /nfstest
[root@Client ~]
# ls /nfstest/
fstab inittab
[root@Client ~]
#
|
ok,掛載成功,可使用了,可是真的可使用了嗎,還不必定,why?權限問題,NFS服務中,權限是個大問題,也是NFS服務中最頭痛的問題,額。。。。請聽下回分解。。。