目录
NFS介绍
网络文件系统(network files system)简称NFS是一种基于TCP传输协议的文件共享习通。
NFS的CS体系中的服务端启用协议将文件共享到网络上,然后允许本地NFS客户端通过网络挂载服务端共享的文件。
应用场景:
为web服务器作为视频,图片资源的服务器。域用户家目录服务器。内容文件存储服务器。
更多NFS详细:第十三章、文件服务器之一:NFS 服务器
搭建NFS服务(centos)
说明
NFS服务器
- 操作系统:CentOS 5.5
- IP:192.168.21.160
- nfs网络文件服务器共享目录:
/data/osyunwei
- 目录所有者:www(说明:www为nginx运行账号)
chown www.www -R /data/osyunwei
- 目录权限:700
chmod 700 -R /data/osyunwei
NFS客户端:
- 操作系统:CentOS 5.5
- IP:192.168.21.169
- 把NFS服务器上的目录
/data/osyunwei
挂载到本地目录/data/osyunwei
中- 本地目录/data/osyunwei所有者:www(说明:www为nginx运行账号)
chown www.www -R /data/osyunwei
- 目录权限:700
chmod 700 -R /data/osyunwei
一、关闭SELINUX
1 2 3 4 5 6 |
vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq 保存,关闭 shutdown -r now #重启系统 |
二、防火墙设置,开启相应端口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1001 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 1001 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1002 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 1002 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1003 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 1003 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1004 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 1004 -j ACCEPT /etc/init.d/iptables restart #最后重启防火墙使配置生效 |
防火墙端口说明:
- portmap或者rpcbind(CentOS 6.x)使用:tcp/udp 111
- nfs使用:tcp/udp 2049
- mountd使用: TCP/UDP 892
- rquotad使用:tcp/udp 875
- status使用: TCP/UDP 1001-1004共四个端口
- nlockmgr使用:TCP/32803端口 UDP/32769端口
三、安装NFS服务器
1 |
rpm -q nfs-utils portmap #检查是否安装,注意:在CentOS 6.x中portmap的名称变为rpcbind |
注意:在CentOS 6.x中portmap的名称变为rpcbind
出现下面的提示说明安装成功
1 2 |
nfs-utils-1.0.9-44.el5 portmap-4.0-65.2.2.1 |
安装
1 |
yum install nfs-utils portmap |
编辑配置文件
1 2 3 4 5 6 |
RQUOTAD_PORT=875 #取消前面的注释 LOCKD_TCPPORT=32803 #取消前面的注释 LOCKD_UDPPORT=32769 #取消前面的注释 MOUNTD_PORT=892 #取消前面的注释 STATD_PORT=1001 #取消前面的注释,端口修改为1001 STATD_OUTGOING_PORT=1004 #取消前面的注释,端口修改为1004 |
四、配置nfs
编辑配置文件
1 |
vi /etc/exports |
添加以下内容
1 |
/data/osyunwei 192.168.21.0/24(rw,sync,no_subtree_check,anonuid=501,anongid=501) |
相关参数说明:
/data/osyunwei
:NFS共享目录192.168.21.0/24
:允许这个网段内的IP地址访问共享目录rw
:读取写入权限sync
:数据实时同步no_subtree_check
:不检查目录权限,提高数据读取效率anonuid=501
:501代表www用户 打开cat /etc/passwd
查找www对应的idanongid=501
:501代表www组 打开cat /etc/group
查找www对应的id
启动服务(注意顺序不能错)
1 2 3 4 5 6 |
/etc/rc.d/init.d/portmap start /etc/rc.d/init.d/nfslock start /etc/rc.d/init.d/nfs start chkconfig portmap on #设置开机启动 chkconfig nfslock on #设置开机启动,开启此服务保持数据一致 chkconfig nfs on #设置开机启动 |
要停止服务,执行下面的命令(注意顺序不能错)
1 2 3 |
service nfslock stop service nfs stop service portmap stop |
五、测试NFS
查看使用端口,出现下面的提示,说明配置正确
1 |
rpcinfo -p 192.168.21.160 |
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 |
程序 版本 协议 端口 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 1001 status 100024 1 tcp 1001 status 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tcp 875 rquotad 100011 2 tcp 875 rquotad 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100021 1 udp 32769 nlockmgr 100021 3 udp 32769 nlockmgr 100021 4 udp 32769 nlockmgr 100021 1 tcp 32803 nlockmgr 100021 3 tcp 32803 nlockmgr 100021 4 tcp 32803 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100005 1 udp 892 mountd 100005 1 tcp 892 mountd 100005 2 udp 892 mountd 100005 2 tcp 892 mountd 100005 3 udp 892 mountd 100005 3 tcp 892 mountd |
显示server上面共享的目录
1 |
showmount -e 192.168.21.160 |
出现下面的提示,说明配置正确
1 2 |
Export list for 192.168.21.160: /data/osyunwei 192.168.21.0/24 |
六、配置NFS客户端
检查是否安装,注意:在CentOS 6.x中portmap的名称变为rpcbind
1 |
rpm -q nfs-utils portmap |
出现下面的提示说明安装成功
1 2 |
nfs-utils-1.0.9-60.el5 portmap-4.0-65.2.2.1 |
备注:CentOS默认已经安装了nfs服务,如果没有安装,执行下面的命令
安装
1 |
yum install nfs-utils portmap |
启动服务(注意顺序不能错)
1 2 3 4 5 6 |
/etc/rc.d/init.d/portmap start /etc/rc.d/init.d/nfslock start /etc/rc.d/init.d/nfs start chkconfig portmap on #设置开机启动 chkconfig nfslock on #设置开机启动,开启此服务保持数据一致 chkconfig nfs on #设置开机启动 |
要停止服务,执行下面的命令(注意顺序不能错)
1 2 3 |
service nfslock stop service nfs stop service portmap stop |
显示server上面共享的目录
1 |
showmount -e 192.168.21.160 |
会出现下面的提示
1 2 |
Export list for 192.168.21.160: /data/osyunwei 192.168.21.0/24 |
客户端挂载NFS服务器共享目录,第一个目录是nfs服务器共享目录,第二个目录是客户端本地目录
1 |
mount -t nfs -o soft,intr,bg,rw,rsize=32768,wsize=32768 192.168.21.160:/data/osyunwei /data/osyunwei |
如果要卸载目录,执行下面命令
1 |
umount /data/osyunwei #卸载目录挂载 |
设置开机自动挂载目录
1 |
vi /etc/fstab |
添加如下内容
1 |
192.168.21.160:/data/osyunwei /data/osyunwei nfs soft,intr,bg,rw,rsize=32768,wsize=32768 0 0 |
安装 NFS 服务器(docker)
说明:
192.186.2.105 NFS 服务器
192.168.2.106 CLIENT 客户端
一、安装 NFS 服务器
1、创建 数据文件夹
1 |
mkdir -p /docker/nfs/data |
2、创建启动脚本
1 2 3 4 5 6 7 8 9 10 11 |
docker run --name nfs --privileged \ -v /docker/nfs/data:/nfs \ -e NFS_EXPORT_DIR_1=/nfs \ -e NFS_EXPORT_DOMAIN_1=\* \ -e NFS_EXPORT_OPTIONS_1=rw,insecure,no_subtree_check,no_root_squash,fsid=1 \ -p 111:111 -p 111:111/udp \ -p 2049:2049 -p 2049:2049/udp \ -p 32765:32765 -p 32765:32765/udp \ -p 32766:32766 -p 32766:32766/udp \ -p 32767:32767 -p 32767:32767/udp \ -d fuzzle/docker-nfs-server:latest |
只需要修改-v
的 /docker/nfs/data
为本地的路径即可,其它无需修改
二、安装 客户端
1、安装
1 |
yum -y install nfs-utils |
2、查看
1 |
showmount -e 192.168.2.105 |
显示如下,即为成功
1 2 |
Export list for 192.168.2.105: /nfs * |
3、挂载
1 2 3 |
mkdir -p /mnt/nfs mount -t nfs 192.168.2.105:/nfs /mnt/nfs |
4、创建一个文件
1 |
echo "hello,world" > hello.html |
三、查看 NFS 服务器
1、成功显示 hello.html 文件
1 2 3 4 |
ll /docker/nfs/data 总用量 4 -rw-r--r-- 1 root root 12 3月 19 07:31 hello.html |
总结
NFS的服务端和客户端,都是使用nfs-utils
(yum -y intall nfs-utils
),客户端上不需要启动nfs服务,只是为了使用showmount
工具
参考
CentOS下NFS服务器配置教程
DOCKER 安装 NFS 服务器