linux nfs文件共享
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux nfs文件共享相关的知识,希望对你有一定的参考价值。
linux nfs文件共享
◆一、概念
NFS是网络文件系统(Network File System)的简称,是分布式计算机系统的一个组成部分,可实现在异构网络上共享和装配远程文件系统。
NFS由SUN公司开发,目前已成为文件服务的一种标准(RFC1904,RFC1813)。其最大的功能就是可以通过网络,让不同操作系统的计算机可以共享数据,所以也可以看作是一个文件服务器。NFS是除了SAMBA之外Windows与Linux及Unix与Linux之间通信的方法。
理想条件下的NFS 网络拓扑结构 |
1、设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务);
2、NFS只是一种文件系统,本身没有传输功能,是基于RPC协议实现的,才能达到两个Linux系统之间的文件目录共享;
3、NFS为C/S架构;
◆二、服务器配置
1、配置文件
主要配置文件为:/etc/exports
格式为: 共享目录 可mount主机IP(参数1,参数2,……)
如:/var/nfs 172.20.*.*(rw,sync,no_rootl_squash)
ro: 只读
rw: 可读写
sync: 同步写入
async: 不同步写入
root_squash: 将root用户映射为来宾账号
no_root_squash: 将root用户映射为非来宾账号
all_squash: 所有帐号为来宾帐号
anonuid,anongid: 指定映射的来宾帐号的UID和GID;
说明:必须注意nfs/目录的访问权限,必须设置成777权限;父目录/var权限无要求,普通的755即可;
2、启动相关服务
然后依次启动相关服务:portmap,nfslock,nfs
service portmap start
service nfslock start
service nfs start
关闭顺序相反。
3、检查共享目录
随后可以采用showmount –e查看一下,看看共享的目录情况:
[[email protected] var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20.*.*
OK,到此为止,NFS服务器搭建完毕;
◆三、客户端配置
1、确保portmap运行
客户端必须确保RPC协议相应的portmap正常运行,否则mount将失败;
2、挂载/var/nfs目录(本地挂载点为/mnt/nfs)
mount -t nfs 172.20.65.16:/var/nfs /mnt/nfs
成功mount以后,即可同本地目录一样随意操作;
◆四、其它相关命令
1、当修改了/etc/exports文件后,可以不用重新启动nfs服务,直接采用exports –rv 即可重新导出共享目录;
该命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount 目录
-v :在 export 的时候,将详细的信息输出到屏幕上。
具体例子:
[[email protected] var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20.*.*
[[email protected] var]# exportfs –au #全部卸载
[[email protected] var]# showmount -e
Export list for ns.osserver:
[[email protected] var]# exportfs –rv #全部重新 export 一次
exporting 172.20.*.*:/var/nfs
[[email protected] var]#
2、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法
showmout
-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。
-e :显示指定的NFS SERVER上export出来的目录。
例如:
[[email protected] ~]# showmount -e 172.20.16.139
Export list for 172.20.16.139 :
/root/share 172.20.16.137
[[email protected] var]# showmount -a
All mount points on localhost.localdomain:
*:/root/share
172.20.16.139:,172.20.16.139
172.20.16.139:DEFAULT
◆五、常见问题解答
1、提示:mount to NFS server ‘172.20.67.203‘ failed: server is down.
解决方案:可能是NFS服务器的防火墙有问题;
2、提示:mount: RPC: Timed out
解决方案:由于RPC协议没运行;启动portmap服务;
也有可能是防火墙问题;Server/Client均有可能。
[[email protected] conn]# service nfslock status #服务器端查看
rpc.statd (pid 3041) is running...
[[email protected] conn]# service portmap status
portmap (pid 2983) is running...
[[email protected] conn]# service nfs status
rpc.mountd (pid 22877) is running...
nfsd (pid 22874 22873 22872 22871 22870 22869 22868 22867) is running...
rpc.rquotad (pid 22862) is running...
[[email protected] conn]# showmount -e
Export list for test:
[[email protected] conn]# vi /etc/exports
/var/nfs 10.109.131.*(rw,async)
[[email protected] conn]# exportfs -arv
exporting 10.109.131.*:/var/nfs
[[email protected] conn]# showmount -e
Export list for test:
/var/nfs 10.109.131.*
[[email protected] ~]# mkdir /var/nfs
[[email protected] nfs]# cd /var/nfs
[[email protected] nfs]# touch a.123
[[email protected] ~]# mount -t nfs 10.109.131.209:/var/nfs/ /mnt/nfs/ #客户端查看
[[email protected] ~]# ll /mnt/nfs/a.123
-rw-r--r-- 1 root root 0 Jan 15 16:28 /mnt/nfs/a.123
[[email protected] ~]# mount
...
10.109.131.209:/var/nfs/ on /mnt/nfs type nfs (rw,addr=10.109.131.209)
[[email protected] ~]# showmount -e 10.109.131.209
Export list for 10.109.131.209:
/var/nfs 10.109.131.*
特例:NSF权限是通过ID号来确认权限,因此root默认为
[[email protected] conn]# id hbase #服务器端查看,hbase的ID号为502
uid=502(hbase) gid=502(hbase) groups=502(hbase)
[[email protected] conn]# setfacl -m u:hbase:rwx /var/nfs/
[[email protected] conn]# ll /var/nfs/
total 0
-rw-r--r-- 1 root root 0 Jan 15 16:28 a.123
[[email protected] conn]# su - hadoop
[[email protected] ~]$ cd /var/nfs/
[[email protected] nfs]$ touch 11.hadoop
[[email protected] nfs]$ ll
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Jan 15 16:52 11.hadoop
-rw-r--r-- 1 root root 0 Jan 15 16:28 a.123
[[email protected] nfs]$ su - hbase
[[email protected] conn]# setfacl -m u:hbase:rwx /var/nfs/
[[email protected] conn]# ll /var/nfs/
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Jan 15 16:52 11.hadoop
-rw-rw-r-- 1 hbase hbase 0 Jan 15 16:57 321.hbase
-rw-r--r-- 1 root root 0 Jan 15 16:28 a.123
[[email protected] ~]# groupadd -g 502 openstack #客户端查看,openstack的ID号为502
[[email protected] ~]# useradd -g 502 -u 502 openstack
[[email protected] ~]# id openstack
uid=502(openstack) gid=502(openstack) groups=502(openstack)
[[email protected] ~]# ll /mnt/nfs/
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Jan 15 16:52 11.hadoop
-rw-rw-r-- 1 openstack openstack 0 Jan 15 16:57 321.hbase
-rw-r--r-- 1 root root 0 Jan 15 16:28 a.123
[[email protected] ~]# su - openstack
[[email protected] ~]$ cd /mnt/nfs/
[[email protected] nfs]$ ll /mnt/nfs/
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Jan 15 16:52 11.hadoop
-rw-rw-r-- 1 openstack openstack 0 Jan 15 16:57 321.hbase
-rw-r--r-- 1 root root 0 Jan 15 16:28 a.123
[[email protected] nfs]$ touch b.openstack
[[email protected] nfs]$ ll
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Jan 15 16:52 11.hadoop
-rw-rw-r-- 1 openstack openstack 0 Jan 15 16:57 321.hbase
-rw-r--r-- 1 root root 0 Jan 15 16:28 a.123
-rw-rw-r-- 1 openstack openstack 0 Jan 15 17:04 b.openstack
[[email protected] conn]# ll /var/nfs/ #服务器端查看
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Jan 15 16:52 11.hadoop
-rw-rw-r-- 1 hbase hbase 0 Jan 15 16:57 321.hbase
-rw-r--r-- 1 root root 0 Jan 15 16:28 a.123
-rw-rw-r-- 1 hbase hbase 0 Jan 15 17:04 b.openstack
统一用一个权限访问:
[[email protected] nfs]# useradd -u 511 nfstest #服务器端查看
[[email protected] nfs]# touch nfstest
[[email protected] nfs]# ls
11.hadoop 321.hbase b.openstack nfstest
[[email protected] nfs]# ll
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Jan 15 16:52 11.hadoop
-rw-rw-r-- 1 hbase hbase 0 Jan 15 16:57 321.hbase
-rw-rw-r-- 1 hbase hbase 0 Jan 15 17:04 b.openstack
-rw-r--r-- 1 root root 0 Jan 15 17:16 nfstest
[[email protected] nfs]# chown nfstest.nfstest /var/nfs/nfstest
[[email protected] nfs]# ll
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Jan 15 16:52 11.hadoop
-rw-rw-r-- 1 hbase hbase 0 Jan 15 16:57 321.hbase
-rw-rw-r-- 1 hbase hbase 0 Jan 15 17:04 b.openstack
-rw-r--r-- 1 nfstest nfstest 0 Jan 15 17:16 nfstest
[[email protected] nfs]# vi /etc/exports
[[email protected] nfs]# cat /etc/exports
/var/nfs 10.109.131.*(rw,async,all_squash,anonuid=511,anongid=511)
[[email protected] nfs]# exportfs -ra
[[email protected] nfs]# exportfs -rav
exporting 10.109.131.*:/var/nfs
[[email protected] nfs]# showmount -e 10.109.131.209
Export list for 10.109.131.209:
/var/nfs 10.109.131.*
[[email protected] nfs]#
[[email protected] nfs]# ll #客户端查看
total 0
-rw-rw-r-- 1 hadoop hadoop 0 Jan 15 16:52 11.hadoop
-rw-rw-r-- 1 openstack openstack 0 Jan 15 16:57 321.hbase
-rw-rw-r-- 1 openstack openstack 0 Jan 15 17:04 b.openstack
-rw-r--r-- 1 511 511 0 Jan 15 17:16 nfstest
[[email protected] nfs]# vim /etc/fstab
...
192.168.1.5:/var/nfs /mnt/nfs nfs default,-rnetdev 0 0
[[email protected] var]# vi /etc/sysconfig/nfs #固定监控端口
# Optional arguments passed to rpc.mountd. See rpc.mountd(8)
# Port rquotad should listen on.
RQUOTAD_PORT=875
# Optinal options passed to rquotad
#RPCRQUOTADOPTS=""
# Optional arguments passed to rpc.mountd. See rpc.mountd(8)
#RPCMOUNTDOPTS=""
# Port rpc.mountd should listen on.
MOUNTD_PORT=892
[[email protected] var]# rpcinfo -p localhost
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 676 status
100024 1 tcp 679 status
100011 1 udp 991 rquotad
100011 2 udp 991 rquotad
100011 1 tcp 994 rquotad
100011 2 tcp 994 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100021 1 udp 39240 nlockmgr
100021 3 udp 39240 nlockmgr
100021 4 udp 39240 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100021 1 tcp 37209 nlockmgr
100021 3 tcp 37209 nlockmgr
100021 4 tcp 37209 nlockmgr
100005 1 udp 1005 mountd
100005 1 tcp 1008 mountd
100005 2 udp 1005 mountd
100005 2 tcp 1008 mountd
100005 3 udp 1005 mountd
100005 3 tcp 1008 mountd
....(待续)
以上是关于linux nfs文件共享的主要内容,如果未能解决你的问题,请参考以下文章