存储服务存在价值:1.可以实现数据统一共享存储2.节省架构服务运营成本如何实现数据存储:NFS(network file system --- 网络共享文件系统 不支持windows)FTP(文件共享存储 --- windows比较方便简单 linux如何部署FTP --- 数据权限设置)samba (linux部署服务端 可以让 windows 与 linux同时可以访问)分布式存储:Moosefs(mfs)、glusterFS、FastDFS(推荐)存储服务部署过程RPC 远程过程调用程序---中介服务服务端部署wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo1.nfs服务安装好之后,会自动创建nfsnobody虚拟用户2.需要确认4个和用户相关的文件不能上锁[[email protected] ~]# yum install nfs-utils rpcbind -y[[email protected] ~]# rpm -qa nfs-utilsnfs-utils-1.3.0-0.61.el7.x86_64[[email protected] ~]# rpm -qa rpcbindrpcbind-0.2.0-47.el7.x86_64[[email protected] ~]# vim /etc/exports/data 172.16.1.0/24(rw,sync)sync : 同步方式存储数据同步方式存储数据:用户有数据存储 ---- 存储服务器(磁盘中) 存储安全性高异步方式存储数据:用户有数据存储 ---- 内存 --- 存储服务器(磁盘中) 存储效率高[[email protected] ~]# mkdir -p /data[[email protected] ~]# ID nfsnobodyuID=65534(nfsnobody) gID=65534(nfsnobody) groups=65534(nfsnobody)[[email protected] ~]# chown nfsnobody:nfsnobody /data[[email protected] ~]# ls -ld /datadrwxr-xr-x 2 nfsnobody nfsnobody 6 Jul 12 03:43 /data[[email protected] ~]# systemctl enable rpcbind[[email protected] ~]# systemctl start rpcbind [[email protected] ~]# systemctl status rpcbind[[email protected] ~]# systemctl enable nfs[[email protected] ~]# systemctl start nfs[[email protected] ~]# systemctl status nfs[[email protected] ~]# ps -ef | egrep "rpc|nfs" rpc 7283 1 0 Jul18 ? 00:00:00 /sbin/rpcbind -wrpcuser 7398 1 0 00:01 ? 00:00:00 /usr/sbin/rpc.statdroot 7404 2 0 00:01 ? 00:00:00 [rpciod]root 7409 1 0 00:01 ? 00:00:00 /usr/sbin/rpc.IDmapdroot 7412 1 0 00:01 ? 00:00:00 /usr/sbin/rpc.mountdroot 7417 2 0 00:01 ? 00:00:00 [nfsd4_callbacks]root 7465 2 0 00:01 ? 00:00:00 [nfsd]root 7466 2 0 00:01 ? 00:00:00 [nfsd]root 7467 2 0 00:01 ? 00:00:00 [nfsd]root 7468 2 0 00:01 ? 00:00:00 [nfsd]root 7469 2 0 00:01 ? 00:00:00 [nfsd]root 7470 2 0 00:01 ? 00:00:00 [nfsd]root 7471 2 0 00:01 ? 00:00:00 [nfsd]root 7472 2 0 00:01 ? 00:00:00 [nfsd]root 7548 6778 0 00:17 pts/0 00:00:00 grep -E --color=auto rpc|nfs[[email protected] ~]# yum -y install nfs-utils检查nfs服务是否存在可以共享目录[[email protected] ~]# showmount -e 10.0.0.31Export List for 10.0.0.31:/data 172.16.1.0/24[[email protected] ~]# showmount -e 172.16.1.31Export List for 172.16.1.31:/data 172.16.1.0/24[[email protected] ~]# mount -t nfs 172.16.1.31:/data /mnt[[email protected] ~]# df -Thfilesystem Type Size Used Avail Use% Mounted on/dev/sda2 xfs 50G 1.9G 48G 4% /devtmpfs devtmpfs 229M 0 229M 0% /devtmpfs tmpfs 240M 0 240M 0% /dev/shmtmpfs tmpfs 240M 5.3M 234M 3% /runtmpfs tmpfs 240M 0 240M 0% /sys/fs/cgroup/dev/sdc1 xfs 200G 33M 200G 1% /backup/dev/sdb1 xfs 500G 33M 500G 1% /data/dev/sda1 xfs 197M 105M 93M 54% /boottmpfs tmpfs 48M 0 48M 0% /run/user/0172.16.1.31:/data nfs4 500G 33M 500G 1% /mnt测试nfs存储[[email protected] ~]# cd /mnt/[[email protected] /mnt]# touch 1.txt[[email protected] /mnt]# ls -ltotal 0-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:20 1.txt服务端检查[[email protected] ~]# ls -l /data/total 0-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:20 1.txt[[email protected] ~]# cat /etc/yum.conf[main]cachedir=/var/cache/yum/$basearch/$releasever --- 下载软件保存路径keepcache=0 --- 下载软件保留下来,不要被删除[[email protected] ~]# ls -l /etc/exports-rw-r--r-- 1 root root 30 Jul 18 23:49 /etc/exports存储服务配置文件编写格式ro 只读rw 读写sync 同步存储数据async 异步存储数据all_squash 将所有普通用户映射为指定nfsnobody用户no_all_squash 将所有普通用户都不做映射root_squash 将root用户映射为指定nfsnobody用户no_root_squash 将root用户不做映射all_squash映射实践:[[email protected] ~]# vim /etc/exports/data 172.16.1.0/24(rw,sync,all_squash)[[email protected] ~]# systemctl reload nfsrestart 将所有连接会话都会直接断开reload 只会将没有数据传输链接断开, 重新建立连接 让用户访问感受更好[[email protected] /mnt]# useradd natasha[[email protected] /mnt]# ID natashauID=1000(natasha) gID=1000(natasha) groups=1000(natasha)[[email protected] /mnt]# su - natasha[[email protected] ~]$ cd /mnt/[[email protected] mnt]$ touch 2.txt[[email protected] mnt]$ ls -ltotal 0-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:20 1.txt-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul 19 00:30 2.txt --- 所有普通用户都会做映射no_all_squash映射实践:[[email protected] ~]# vim /etc/exports/data 172.16.1.0/24(rw,no_all_squash)[[email protected] ~]# chmod 777 /data[[email protected] ~]# ls -ld /data drwxrwxrwx 2 nfsnobody nfsnobody 32 Jul 19 00:42 /data[[email protected] ~]# systemctl reload nfs[[email protected] mnt]$ touch 3.txt[[email protected] mnt]$ ls -ltotal 0-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:20 1.txt-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul 19 00:30 2.txt-rw-rw-r-- 1 natasha natasha 0 Jul 19 00:43 3.txt[[email protected] ~]# ls -l /data/total 0-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:20 1.txt-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul 19 00:30 2.txt-rw-rw-r-- 1 1000 1000 0 Jul 19 00:43 3.txt --- 用户传输数据身份没有变化,看用户uID信息root_squash映射实践:[[email protected] ~]# vim /etc/exports/data 172.16.1.0/24(rw,root_squash)[[email protected] ~]# systemctl reload nfs[[email protected] /mnt]# touch 4.txt[[email protected] /mnt]# ls -ltotal 0-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:20 1.txt-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul 19 00:30 2.txt-rw-rw-r-- 1 natasha natasha 0 Jul 19 00:43 3.txt-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:47 4.txt[[email protected] /data]# lltotal 0-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:20 1.txt-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul 19 00:30 2.txt-rw-rw-r-- 1 1000 1000 0 Jul 19 00:43 3.txt-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:47 4.txt --- root用户会映射为指定的nfsnobody用户no_root_squash映射实践:[[email protected] ~]# vim /etc/exports/data 172.16.1.0/24(rw,no_root_squash)[[email protected] ~]# systemctl reload nfs[[email protected] /mnt]# touch 5.txt[[email protected] /mnt]# ls -ltotal 0-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:20 1.txt-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul 19 00:30 2.txt-rw-rw-r-- 1 natasha natasha 0 Jul 19 00:43 3.txt-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:47 4.txt-rw-r--r-- 1 root root 0 Jul 19 00:49 5.txt[[email protected] ~]# ls -l /data/total 0-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:20 1.txt-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul 19 00:30 2.txt-rw-rw-r-- 1 1000 1000 0 Jul 19 00:43 3.txt-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 19 00:47 4.txt-rw-r--r-- 1 root root 0 Jul 19 00:49 5.txt练习:服务端:/data/w 可读可写权限,所有用户都做映射, 采用同步传输数据/data/r 只能读取数据,只有root用户组映射,采用异步传输数据客户端:backup /data/w --挂载点 /data/w 可以存储数据web01 /data/r --挂载点 /data/r 不能存储数据服务端共享目录权限存在继承关系建议设置共享目录时,不要存在父级与子级关系服务端[[email protected] ~]# vim /etc/exports/data/w 172.16.1.0/24(rw,all_squash)/data/r 172.16.1.0/24(ro,async,root_squash)[[email protected] ~]# mkdir -p /data/{r,w}[[email protected] ~]# chown nfsnobody:nfsnobody /data/{r,w}[[email protected] ~]# ls -ld /data/wdrwxr-xr-x 2 nfsnobody nfsnobody 6 Jul 19 00:55 /data/w[[email protected] ~]# ls -ld /data/rdrwxr-xr-x 2 nfsnobody nfsnobody 6 Jul 19 00:55 /data/r[[email protected] ~]# systemctl reload nfs客户端[[email protected] ~]# mkdir /data/r -p[[email protected] ~]# mount -t nfs 172.16.1.31:/data/r /data/r[[email protected] ~]# df -Th /data/rfilesystem Type Size Used Avail Use% Mounted on172.16.1.31:/data/r nfs4 500G 33M 500G 1% /data/r[[email protected] ~]# yum -y install nfs-utils[[email protected] ~]# mkdir /data/w -p[[email protected] ~]# mount -t nfs 172.16.1.31:/data/w /data/w[[email protected] ~]# df -Th /data/wfilesystem Type Size Used Avail Use% Mounted on172.16.1.31:/data/w nfs4 500G 33M 500G 1% /data/w进行卸载:umount -lfnfs挂载常见问题异常问题一:ls: cannot open directory .: Stale file handle (文件句柄错误)出现原因:当父级和子级目录同时进行挂载时,一旦父级目录取消共享,但是客户端还是处于挂载状态问题解决:将和父级目录有关的所有挂载点全部卸载,重新挂载异常问题二:Cannot register service: RPC: Unable to receive;出现原因:服务启动顺序不正确问题解决:关闭所有服务,按顺序进行启动异常问题三:出现挂载卡死情况clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)出现原因:服务端开启防火墙,阻止客户端访问问题解决:关闭防火墙异常问题四:服务端采用restart情况,会有一个90s延迟;造成客户端挂载好共享目录,90s内无法存储数据出现原因: [[email protected] ~]# cat /etc/sysconfig/nfs|grep 90#NFSD_V4_GRACE=90#NFSD_V4_LEASE=90nfs存储排错原理:01.检查服务端服务是否启动02.检查nfs服务是否向rpc服务注册[[email protected] ~]# rpcinfo -p 127.0.0.1[[email protected] ~]# 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 54921 status 100024 1 tcp 45810 status 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 38851 nlockmgr 100021 3 udp 38851 nlockmgr 100021 4 udp 38851 nlockmgr 100021 1 tcp 35456 nlockmgr 100021 3 tcp 35456 nlockmgr 100021 4 tcp 35456 nlockmgr[[email protected] ~]# rpcinfo -p 172.16.1.31 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 54921 status 100024 1 tcp 45810 status 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 38851 nlockmgr 100021 3 udp 38851 nlockmgr 100021 4 udp 38851 nlockmgr 100021 1 tcp 35456 nlockmgr 100021 3 tcp 35456 nlockmgr 100021 4 tcp 35456 nlockmgr[[email protected] ~]# showmount -e 172.16.1.31Export List for 172.16.1.31:/data/r 172.16.1.0/24/data/w 172.16.1.0/24/data 172.16.1.0/24记录nfs服务默认配置参数信息[[email protected] ~]# cat /var/lib/nfs/etab/data/r 172.16.1.0/24(ro,wdelay,hIDe,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuID=65534,anongID=65534,sec=sys,ro,no_all_squash)/data/w 172.16.1.0/24(rw,all_squash,rw,all_squash)/data 172.16.1.0/24(rw,no_root_squash,no_all_squash)[[email protected] ~]#可以平滑重启nfs服务,可以临时设置共享存储目录[[email protected] ~]# exportfs -rvexporting 172.16.1.0/24:/data/rexporting 172.16.1.0/24:/data/wexporting 172.16.1.0/24:/data临时创建目录:exportfs -o rw,sync 192.168.10.0/24:/data01实现开机自动挂载:方法一:编写/etc/rc.localmount -t nfs 172.16.1.31:/data /mnt方法二:编写/etc/fstab文件172.16.1.31:/data /mnt nfs defaults 0 0centos6启动系统 -- 加载fstab -- 启动network网络服务 -- netfs (在系统启动完毕之后,再次加载fstab)centos7启动系统 -- 加载fstab -- 启动network网络服务 -- remote-fs.target(在系统启动完毕之后,再次加载fstab)启动nfs服务客户端很慢:出现原因:在客户端上配置自动nfs服务挂载 --- 耦合度太高解决问题:取消自动挂载启动顺序 先开启后端服务:nfs MysqL backup 缓存服务,再开启前端服务:web服务 负载均衡服务挂载参数说明:defaults: rw,suID(setuID),dev,exec,auto(mount -a),nouser,and async(异步存储)noatime访问文件时不更新文件的inode时间戳,高并发环境下,推荐显示应用该选项,可以提高系统I/O性能。性能优化nodiratime不更新文件系统上的directory inode时间戳,高并发环境,推荐显式应用该选项,可以提高系统I/O性能。性能优化remount在不进行卸载挂载点时,直接重新挂载修改挂载参数文件系统只读,mount -o remount,rw /rsize=262144 用户 (读取) --- web01 /data 2M --- nfs /data 10M 压力大 设置一个缓存区 262144字节 设置大小和内存有关wsize=262144 用户(存储) --- web01 /data 10M --- nfs /data 10M 压力大 设置一个缓冲区 262144字节hard --- 当服务端处于关闭状态,客户端会处于一直挂载soft --- 当服务端处于关闭状态,不会一直挂载proto=tcp --- 挂载协议客户端重要文件:/proc/mounts --- 查看到mount挂载命令默认参数信息总结
以上是内存溢出为你收集整理的NFS存储服务全部内容,希望文章能够帮你解决NFS存储服务所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)