NFS简介

NFS(Network File System)即网络文件系统。

主要功能:通过网络(局域网)让不同的主机系统之间可以共享文件或目录。

主要用途:NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件。

NFS存储服务

无NFS文件共享存储

当用户A通过互联网上传文件时,经过负载均衡,随机或者定向分配到某个节点。但是当用户B去下载这个文件的时候,并不确定会向哪个节点发送请求,这样会导致用户存在一定几率下载不到的情况。

有NFS文件共享存储

当用户A通过互联网上传文件时,经过负载均衡,无论发送到哪个节点都会被存储到NFS文件服务器。但是当用户B去下载这个文件的时候,任何节点都可以读取NFS文件服务器的文件。

NFS服务的优缺点

优点

简单容易上手

方便部署非常快速,维护十分简单

节省本地存储空间将常用的数据存放在一台服务器可以通过网络访问

缺点

在高并发下NFS效率/性能有限

NFS的数据是明文的,对数据完整性不做验证

多台机器挂载NFS服务器时,连接管理维护麻烦

容易发生单点故障,如果服务端宕机,所有客户端将不能访问

客户端没用用户认证机制,且数据是通过明文传送,安全性一般(一般建议在局域网内使用)

RPC工作流程

NFS支持的功能非常多,不同的功能会有不同的服务来完成,很多服务都需要监听在一些端口,其中的很多端口并不是固定的。这些服务在启动时,都需要向rpcbind服务注册一个端口,rpcbind服务随机选取一个未被使用的端口予以分配。rpcbind服务监听在111端口,所以rpcbind的主要功能就是指定每个RPC service对应的port number,并且通知给客户端,让客户端连接到正确的端口上去。

客户端向NFS服务器端请求的步骤:

首先用户访问网站程序,由程序在NFS客户端上发出存取NFS文件的请求,这是NFS客户端的RPC服务就不通过网络向NFS服务器端的RPC服务的111端口发出NFS文件存取功能的查询请求,包括要实现的什么功能。

NFS服务器端的RPC服务找到对应的已注册的NFS端口,通知NFS客户端的RPC服务。

此时NFS客户端获取到正确的端口,并与NFS联机存取数据。

NFS客户端把数据存取成功后,返回给客户端程序,告知用户存取结果。

注意:由于rpc service在启动时需要向rpcbind注册端口,所以rpcbind要先启动。另外若rpcbind重新启动,原来注册的数据也会不见,因此一但rpcbind重新启动,让所管理的服务因为需要重新启动以重新向rpcbind注册。

NFS服务器端配置

NFS服务器:192.168.1.180

检查并安装NFS

[root@iZ2ze74fkxrls31tr2ia2fZ ~]# rpm -qa rpcbind nfs-utils

nfs-utils-1.3.0-0.48.el7_4.1.x86_64

rpcbind-0.2.0-42.el7.x86_64

如果没有,安装 NFS 服务器所需的软件包,实际上需要安装两个包nfs-utils(nfs服务主程序)和rpcbind(rpc主程序), 不过当使用yum安装nfs-utils时会把rpcbind一起安装上。

yum install -y nfs-utils

配置说明

/etc/sysconfig/nfs #NFS的主配置文件

/etc/exports #配置共享目录的文件

/etc/exports的配置格式:

nfs共享目录 nfs客户端地址1(参1,参2.....) 客户端地址2(参1,参2...)

说明:

nfs共享目录:为nfs服务器要共享的实际目录,绝对目录。注意权限问题。

nfs客户端地址:为nfs服务器授权可以访问的客户端的地址,可以是单独的ip地址或主机名,域名。也可以是整个网段。

授权整个网段:eg:10.0.0.0/24

文件配置实例说明:

/data/fileserver 192.168.1.190(rw,sync,no_root_squash)

若服务器端对/etc/exports文件进行了修改,可以通过exportfs命令重新加载服务而不需要重启服务。若重启服务需要重新向prcbind注册,而且对客户端的影响也很大,所以尽量使用exportfs命令来使配置文件生效。

exportfs:

exportfs -ar #重新导出所有的文件系统

exportfs -r #导出某个文件系统

exportfs -au #关闭导出的所有文件系统

exportfs -u #关闭指定的导出的文件系统

相关参数 (man exports)

A. 选项:选项用来设置输出目录的访问权限、用户映射等。

设置输出目录只读:ro

设置输出目录读写:rw

B. 用户映射选项

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash:与all_squash取反(默认设置);

root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash:与rootsquash取反;

anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

C. 其它选项

secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

insecure:允许客户端从大于1024的tcp/ip端口连接服务器;

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);

no_wdelay:若有写操作则立即执行,应与sync配合使用;

subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

启动NFS服务端上nfs服务

1、先为rpcbind和nfs做开机启动:

systemctl enable rpcbind.service

systemctl enable nfs-server.service

2、然后分别启动rpcbind和nfs服务:

systemctl start rpcbind.service

systemctl start nfs-server.service

查看服务是否启动

[root@iZ2ze74fkxrls31tr2ia2fZ ~]# rpcinfo -p

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 47426 status

100024 1 tcp 35379 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 53046 nlockmgr

100021 3 udp 53046 nlockmgr

100021 4 udp 53046 nlockmgr

100021 1 tcp 38280 nlockmgr

100021 3 tcp 38280 nlockmgr

100021 4 tcp 38280 nlockmgr

使用exportfs查看本机上已经共享的目录:

exportfs

NFS客户端配置

NFS客户端:192.168.1.190

安装nfs,并启动服务。

yum install -y nfs-utils

systemctl enable rpcbind.service

systemctl start rpcbind.service

客户端不需要启动nfs服务,只需要启动rpcbind服务。

检查 NFS 服务器端是否有目录共享

showmount -e 192.168.1.180

挂载远程服务

mount -t nfs 192.168.1.180:/data/fileserver /data/itstyle

查看挂载

df -h

开机挂载,编辑/etc/fstab

vim /etc/fstab 加入以下内容:

# 设备文件 挂载点 文件系统类型 mount参数 dump参数 fsck顺序

192.168.1.180:/data/fileserver /data/itstyle nfs defaults,_netdev 0 0

_netdev明确说明这是网络文件系统,避免网络启动前挂载出现错误。

保存后,重新挂载 /etc/fstab 里面的内容。

mount -a

java文件服务器_JavaWeb项目架构之NFS文件服务器相关推荐

  1. JavaWeb项目架构之NFS文件服务器

    NFS简介 NFS(Network File System)即网络文件系统. 主要功能:通过网络(局域网)让不同的主机系统之间可以共享文件或目录. 主要用途:NFS网络文件系统一般被用来存储共享视频, ...

  2. java kafka分布式_JavaWeb项目架构之Kafka分布式日志队列

    架构.分布式.日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Kafka做消息队列罢了. kafka介绍 Kafka是由Apache软件基金会开发的一个开源流处理平台,由S ...

  3. rmi java 服务_javaweb项目启动时自动启动rmi服务器实例

    1.我们先写一个web项目启动时需要运行的类RmiRegisterServlet.java package com.mx.Servlet; import javax.servlet.ServletCo ...

  4. Java job interview:项目架构研发京东大数据价值最大化的应用实践

    "大数据"的经典定义是可以归纳为4个V:海量的数据规模(volume).快速的数据流转和动态的数据体系(velocity).多样的数据类型(variety)和巨大的数据价值(val ...

  5. Java job interview:项目架构研发使用Apache Kylin搭建企业级开源大数据分析平台

    Kylin(麒麟)是什么?我们听到过有麒麟芯片.麒麟OS等等,我们这个全名是叫Apache Kylin,是一个大数据分析的项目. 从名字上或许可以猜到,它来自中国,的确这也是我们想让世界知道的,有一群 ...

  6. Java job interview:项目架构Java车联网行业的云端架构实现

    中国互联网技术联盟发布的"互联网+"技术体系中有指出,云是互联网+转型的技术重点,大数据的价值要通过云来实现最大化,它包括云存储.云计算.云运维.云安全等多种形式.本文是元征科技信 ...

  7. 大型Java项目架构演进

    为什么80%的码农都做不了架构师?>>>    大型Java项目架构演进过程 1. All-In-One (所有服务在一台服务器上): 也就是所有的服务都在同一个服务器上,包括应用服 ...

  8. 大型Java项目架构演进(小白)

    大型Java项目架构演进(小白) 增加服务器 大部分的访问都在小部分的数据(缓存)上 增加缓存(具有哪种业务特点的数据适合使用缓存)  远程缓存 远程单机缓存 远程分布式缓存 (集群)  分布式缓存在 ...

  9. 【Java从0到架构师】项目实战 - 前后端分离、后端校验、Swagger、全局异常处理

    项目实战 - 前后端分离.后端校验.Swagger Layui 同源策略 SpringMVC 实现 CORS 后端校验 - hibernate-validator 方法的 Model 参数校验 方法的 ...

最新文章

  1. 使用supervisor支持Python3程序 (解决找不到Module的问题)
  2. P1083 [NOIP 2012]借教室
  3. 【干货】网管的三个重要服务:AAA、NTP和SYSLOG
  4. oracle删除无效归档日志,求助:rman无法按照策略删除过期的归档日志
  5. python字符串/列表/字典互相转换
  6. Java常用的5大框架介绍!
  7. windows + vscode 远程配置
  8. 2016-08-05
  9. 【Pytorch神经网络理论篇】 19 循环神经网络训练语言模型:语言模型概述+NLP多项式概述
  10. ETL异构数据源Datax_datax-web简述_09
  11. 友盟页面访问路径全量统计功能上线啦!
  12. Python学习之路_day_25(面向对象之封装/多态/组合)
  13. 递归的使用不当 导致 压缩文件不能压缩二级目录
  14. Linux网络协议栈:关闭一个还有没发送数据完的TCP连接
  15. mysql--------常用命令
  16. 计算机中存储单位的认识与理解
  17. scrapy 引擎,调度器出入队列及去重原理及几个构造request方法
  18. 文件上传到云服务器对象存储oos流程
  19. Node.js npm 使用介绍
  20. 程序员的中年危机及路在何方?

热门文章

  1. python open函数_精选2个小例子,带你快速入门Python文件处理
  2. 单片机 c语言 概念题,(C语言版)单片机复习题.doc
  3. oracle备份能备份索引吗,ORACLE会使索引失效的条件
  4. matlab二维谐振子,基于有限差分法求解的二维谐振子的MATLAB程序如下。哪位大神能帮我做个注明啊,完全看不懂啊,,急...
  5. 李航《统计学习方法》之EM算法及其推广
  6. ado.net mysql 连接池_ADO.NET数据连接池
  7. 【OpenCV 例程200篇】65. 图像锐化——Scharr 算子
  8. mxnet深度学习(NDArray)
  9. java struts1_struts1.x
  10. 2寸的照片长宽各是多少_贵州公务员考试照片尺寸要求是多少