简介
NAS
NAS 指 Network Area Storage,它一般是将本地的存储空间共享给其他主机使用,一般通过 C/S 架构实现通信。它实现的是文件级别的共享,计算机通常将共享的设别识别为一个文件系统,其文件服务器会管理锁以实现并发访问。常见的 NAS 有 NFS 和 CIFS。
NFS
NFS是Network File System 的缩写, 即 网络文件系统. 它的主要功能是通过网络( 一般是局域网 )让不同的主机系统之间可以共享文件或目录. NFS客户端(一般为应用服务器, 例如web)可以通过挂载 mount 的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下). NFS网络文件系统很像windows系统的网络共享, 安全功能, 网络驱动器映射, 这也和linux系统里的 samba服务类似. 不过一般情况下, windows网络共享服务或samba服务用于办公局域网共享
实践
操作环境 centos6 关闭防火墙和selinux策略
服务端 ip 10.162.66.32/24
客户端 ip 10.162.66.10/24
安装服务 (两端都需要)
安装软件包
yum install nfs-utils rpcbind
检查安装包
[root@VM000000138 ~]# rpm -qa nfs-utils rpcbind rpcbind-0.2.0-16.el6.x86_64 nfs-utils-1.2.3-78.el6_10.1.x86_64
注意事项
1) 确保所有客户端对NFS共享目录具有相同的用户访问权限
- all_squash把所有用户压缩成匿名用户( uid相同 )
- anonuid anongid指定的uid和gid用户
2) 所有的客户端和服务端( 所有服务器上 )都要有一个相同的uid和gid的用户,默认即 nfsnobody [uid必须相同]
服务端操作
启动服务
[root@VM000000155 ~]# /etc/init.d/rpcbind start
[root@VM000000155 ~]# /etc/init.d/rpcbind status
rpcbind (pid 2015) is running...
[root@VM000000155 ~]# rpcinfo -p localhost 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 100024 1 udp 44121 status 100024 1 tcp 50137 status [root@VM000000155 ~]# /etc/init.d/nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] [root@VM000000155 ~]# rpcinfo -p localhost 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 100024 1 udp 44121 status 100024 1 tcp 50137 status 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tcp 875 rquotad 100011 2 tcp 875 rquotad 100005 1 udp 42881 mountd 100005 1 tcp 2826 mountd 100005 2 udp 47632 mountd 100005 2 tcp 16271 mountd 100005 3 udp 55231 mountd 100005 3 tcp 11100 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 57753 nlockmgr 100021 3 udp 57753 nlockmgr 100021 4 udp 57753 nlockmgr 100021 1 tcp 50660 nlockmgr 100021 3 tcp 50660 nlockmgr 100021 4 tcp 50660 nlockmgr
加入开机自启
chkconfig nfs on
chkconfig rpcbind on
chkconfig |egrep "nfs|rpcbind"
编辑配置
[root@VM000000155 ~]# vim /etc/exports [root@VM000000155 ~]# cat /etc/exports /mnt/uploadVideo/uploads/ftpFile 10.162.66.10/24(rw,sync,all_squash,anonuid=555,anongid=555)
平滑重启
[root@VM000000155 ~]# cat /var/lib/nfs/etab [root@VM000000155 ~]# /etc/init.d/nfs reload [root@VM000000155 ~]# cat /var/lib/nfs/etab /mnt/uploadVideo/uploads/ftpFile 10.162.66.10/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,anonuid=555,anongid=555,sec=sys,rw,root_squash,all_squash)
[root@VM000000155 ~]# showmount -e 10.162.66.32
Export list for 10.162.66.32:
/mnt/uploadVideo/uploads/ftpFile 10.162.66.10/24
开机自启
chkconfig nfs on
chkconfig rpcbind on
客户端操作
[root@test ~]# /etc/init.d/rpcbind start
[root@test ~]# /etc/init.d/rpcbind status
rpcbind (pid 15308) is running...
[root@test ~]# chkconfig rpcbind on
[root@test ~]# showmount -e 10.162.66.32 Export list for10.162.66.32:
/mnt/uploadVideo/uploads/ftpFile 10.162.66.10/24
[root@test ~]# mount -t nfs 10.162.66.32:/mnt/uploadVideo/uploads/ftpFile /uploads/ftpFile/
[root@test ~]# echo 'mount -t nfs 10.162.66.32:/mnt/uploadVideo/uploads/ftpFile' >>/etc/rc.local
防止服务挂了客户端卡死: mount -t nfs -o bg,hard,intr 192.168.0.12:/svn/2 /svnBackup
NFS客户端开机自启动挂载方案
第一种方法,将挂载命令放在/etc/rc.local里。
缺点:偶尔开机挂载不上,工作中除了开机自启动配置,还要对是否挂载做监控。
第二种方法,将挂载命令放在/etc/fstab里。
其实这种配置方法有一个误区,如下。
fstab会优先于网络被Linux系统加载。网络没启动时执行fstab会导致连不上NFS服务器端,
无法实现开机挂载。而且,即使是本地的文件系统,也要注意,fstab最后两列要设置00,否则有可能导致无法启动服务器的问题。