您的位置:首页 > 其它

搭建NFS文件服务器

2016-03-25 17:07 288 查看
系统环境:

OS版本: CentOS release 6.4 内核:2.6.32-358.el6.x86_64

虚拟机: 2台 S1(客户端) S2(服务端)

1、安装软件包

服务端需要的软件包:nfs-utils, rpcbind

客户端需要的软件包:rpcbind

采用本地yum源进行安装:

S1:客户端

yum -y install rpcbind
[root@S1 ~]# rpm -qa | grep rpcbind
rpcbind-0.2.0-11.el6.x86_64


S2:服务端

yum -y install rpcbind
yum -y install nfs-utils
[root@S2 ~]# rpm -qa | grep -E "rpcbind|nfs-utils"
nfs-utils-lib-1.1.5-6.el6.x86_64
rpcbind-0.2.0-11.el6.x86_64
nfs-utils-1.2.3-36.el6.x86_64


2、启动服务并设置为开机自启动

注意:服务端必须先启动rpcbind进程,在启动nfs进程。因为nfs启动时,会向rpc进程进行注册。

启动rpcbind

[root@S2 ~]# /etc/init.d/rpcbind start
Starting rpcbind:                                          [  OK  ]
[root@S2 ~]# /etc/init.d/rpcbind status
rpcbind (pid  1110) is running...
[root@S2 ~]# rpcinfo -p S2
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


启动nfs(客户端不需启动)

[root@S2 ~]# /etc/init.d/nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
[root@S2 ~]# /etc/init.d/nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 1304) is running...
nfsd (pid 1331 1330 1329 1328 1327 1326 1325 1324) is running...
[root@S2 ~]# rpcinfo -p S2
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
100005    1   udp  54783  mountd
100005    1   tcp  57438  mountd
100005    2   udp  38136  mountd
100005    2   tcp  54148  mountd
100005    3   udp  54618  mountd
100005    3   tcp  45259  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  36835  nlockmgr
100021    3   udp  36835  nlockmgr
100021    4   udp  36835  nlockmgr
100021    1   tcp  52016  nlockmgr
100021    3   tcp  52016  nlockmgr
100021    4   tcp  52016  nlockmgr


设置开机自启动:

chkconfig --level 3 nfs on
chkconfig --level 3 rpcbind on
[root@S2 ~]# chkconfig --list | grep -E "nfs|rpcbind"
nfs             0:off   1:off   2:off   3:on    4:off   5:off   6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off


3、配置共享目录

[root@S2 ~]# mkdir /data
[root@S2 ~]# cat >> /etc/exports << EOF
> /data 192.168.1.0/24(rw,sync)
> EOF


192.168.1.0/24表示网段, rw表示进行读写(ro只能读),sync同步(写到服务端磁盘才算成功)async(写到缓存中及成功)

4、重新加载nfs服务

[root@S2 ~]# /etc/init.d/nfs reload
[root@S2 ~]# showmount -e S2
Export list for S2:
/data 192.168.1.0/24


showmount 命令 show mount information for an NFS server

-e or –exports

Show the NFS server’s export list.

showmount 命令在nfs-utils包中,如果客户端需要查看服务端可mount的信息,需要安装nfs-utils包。

[root@S1 ~]# showmount -e S2
Export list for S2:
/data 192.168.1.0/24


如果在客户端用showmount命令,查看不到服务端共享目录信息可以进行如下检查:

a> 能否ping通 ping S2

b> 能否telnet telnet S2 111

5、在客户端挂载服务端目录

[root@S1 ~]# mount S2:/data /mnt/data
[root@S1 ~]# mount
S2:/data on /mnt/data type nfs (rw,vers=4,addr=192.168.1.121,clientaddr=192.168.1.120)


6、测试

[root@S1 ~]# cd /mnt/data
[root@S1 data]# pwd
/mnt/data
[root@S1 data]# touch a.txt
touch: cannot touch `a.txt': Permission denied


客户端在共享目录创建文件,报权限不足,我们在配置共享目录时,不是设置了rw权限吗?why?

这是因为服务端本地目录的权限限制了,查看服务端/data目录的权限

[root@S2 ~]# ls -ld /data
drwxr-xr-x 2 root root 4096 Mar 25 16:22 /data


只有root用户有权限对/data目录有写权限。

怎么解决呢?

有2中方式可以解决:

a) 更改服务端/data目录的权限 (如给777)

[root@S2 ~]# chmod -R 777 /data
[root@S1 data]# pwd
/mnt/data
[root@S1 data]# ls
[root@S1 data]# touch a.txt
[root@S1 data]# ls
a.txt
[root@S1 data]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 25 16:47 a.txt


可以看出客户端访问服务的用户为nfsnobody。

b) 更改服务端/data目录的属主

chown -R nfsnobody:nfsnoboy /data
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nfs