项目需求

在一些项目开发中,往往有这种需求,就是项目的一些静态资源都是直接存放在项目服务外的目录中。比如 APP 程序包的上传和下载,一般后台服务上传包,服务直接把包上传到当前系统资源目录,但多个上传服务上传的包都在各自的应用服务器上,由于下载并发量比较大,下载服务常常做了负载均衡,所以当前机器的下载服务并不一定能找到上传的包,因为有些包是在其它机器上。

鉴于这种需求,有两种解决方式。一种是上传下载就用一个服务,目录也只有一个,上传时上传到该目录,下载时从该目录取,这种方式对并发大的情况显然不能支撑;另外一种方式,就是每个服务都对应自己单独的资源目录,然后做目录共享,使得不管哪个服务下载资源,都能够访问到,这就是这篇所要说的 NFS 目录共享安装和配置。

服务原理

NFS(Network File System,网络文件系统)是当前主流异构平台共享文件系统之一。主要应用在 UNIX 环境下。最早是由 Sun Microsystems 开发,现在能够支持在不同类型的系统之间通过网络进行文件共享,广泛应用在 FreeBSD、SCO、Solaris 等异构操作系统平台,允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便地使用网上资源。换言之,NFS 可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。

NFS 的工作原理是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。服务器程序向其他计算机提供对文件系统的访问,其过程称为输出。NFS 客户端程序对共享文件系统进行访问时,把它们从 NFS 服务器中“输送”出来。文件通常以块为单位进行传输。其大小是 8KB(虽然它可能会将操作分成更小尺寸的分片)。NFS 传输协议用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程地访问保存在存储设备上的数据。

资源准备

准备两台机器,分别为 web69(192.168.220.69)、web68(192.168.220.68),计划用 web69 作为 nfs 服务端,web68 作为 nfs 服务客户端,机器可以任意扩展。

安装配置

一、查看系统是否已经安装 NFS 服务

命令:rpm -qa |grep nfs

如果没有输出信息,则说明未安装该服务。

二、查看系统是否已经安装 rpcbind 服务

命令:rpm -qa |grep rpcbind

注:rpcbind 是一个 RPC 服务,主要是在 nfs 共享时候负责通知客户端、服务器的 nfs 端口号的,简单理解 rpc 就是一个中介服务。

三、安装 NFS 和 rpcbind

如果在前两步发现这两个服务都没有安装,则安装这俩服务,如果安装了,则这步不需要做了。

命令:yum -y install nfs-utils rpcbind

已加载插件:fastestmirror

设置安装进程

Loading mirror speeds from cached hostfile

... ...

已安装:

nfs-utils.x86_64 1:1.2.3-70.el6_8.2 rpcbind.x86_64 0:0.2.0-12.el6

作为依赖被安装:

keyutils.x86_64 0:1.4-5.el6 libevent.x86_64 0:1.4.13-4.el6 libgssglue.x86_64 0:0.1-11.el6

libtirpc.x86_64 0:0.2.1-11.el6_8 nfs-utils-lib.x86_64 0:1.1.5-11.el6 python-argparse.noarch 0:1.2.1-2.1.el6

完毕!

四、NFS 服务端配置

1. 在 NFS 服务端上创建共享目录 /home/workspace

命令:mkdir -p /home/workspace

2. 并设置目录访问权限

命令:chmod 777 /home/workspace

3. 编辑 export 文件,内容如下:

命令:vi /etc/exports

/home/workspace 192.168.220.0/24(rw,no_root_squash,no_all_squash,sync)

常见的参数则有:

rw/ro:该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。

sync/async:sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘!

no_root_squash/root_squash:客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody,如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行!

no_all_squash/all_squash:不论登入 NFS 的使用者身份为何,他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 。

anonuid/anongid:anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID。

4. 使得配置生效

命令:exportfs -r

五、启动服务端 rpcbind 和 nfs 服务

1. 查看服务是否启动

命令:

service rpcbind status

service nfs status

2. 启动服务

命令:

service rpcbind start

service nfs start

3. 配置开机启动服务

chkconfig rpcbind on

chkconfig nfs on

chkconfig --list rpcbind

chkconfig --list nfs

4. 查看 RPC 服务的注册状况

命令:rpcinfo -p localhost

选项与参数:

-p :针对某 IP (未写则预设为本机) 显示出所有的 port 与 porgram 的信息;

-t :针对某主机的某支程序检查其 TCP 封包所在的软件版本;

-u :针对某主机的某支程序检查其 UDP 封包所在的软件版本;

5. 测试联机

在 NFS 服务器设定妥当之后,我们可以在 server 端先自我测试一下是否可以联机,就是利用 showmount 这个指令来查阅。

命令:showmount -e localhost

选项与参数:

-a :显示目前主机与客户端的 NFS 联机分享的状态;

-e :显示某部主机的 /etc/exports 所分享的目录数据;

六、NFS 客户端安装

客户端只需要安装 nfs 服务即可,不需要安装 rpcbind 服务了。

安装详细步骤参考第三步。

七、NFS 客户端配置

1. 创建挂载目录

在客户端机器上创建挂在目录,这里与服务端保持一致(可以按照需求,不一致也没问题)

命令:mkdir -p /home/workspace

2. 并设置目录访问权限

命令:chmod 777 /home/workspace

3. 查看服务器抛出的共享目录信息

命令:showmount -e 192.168.220.69

4. 挂载目录

为了提高 NFS 的稳定性,使用 TCP 协议挂载,NFS默认用 UD P协议。

命令:mount -t nfs 192.168.220.69:/home/workspace /home/workspace -o proto=tcp -o nolock

八、测试目录共享

1. 在客户端机上,查看磁盘信息。

命令:df -h

2. 在服务端机上,创建一个文件,编辑一些内容。

[root@web69 workspace]# touch abc.txt

[root@web69 workspace]# ll

total 4

-rw-r--r--. 1 root root 0 Jan 17 16:21 abc.txt

drwxr-xr-x. 4 root root 4096 Apr 26 2019 RSF

[root@web69 workspace]# vi abc.txt

[root@web69 workspace]# cat abc.txt

test nfs...

[root@web69 workspace]#

3. 查看客户端机上是否能共享,查看内容是否正确。

[root@web68 workspace]# ll

total 4

-rw-r--r--. 1 root root 0 Jan 17 16:21 abc.txt

drwxr-xr-x. 4 root root 4096 Apr 26 2019 RSF

[root@web68 workspace]# cat abc.txt

test nfs...

[root@web68 workspace]#

4. 在客户端机上追加一部分内容到文件。

[root@web68 workspace]# echo 'ok.' >> abc.txt

[root@web68 workspace]# cat abc.txt

test nfs...

ok.

[root@web68 workspace]#

5. 查看服务端机上的文件内容是否正确。

[root@web69 workspace]# cat abc.txt

test nfs...

ok.

[root@web69 workspace]#

到此,nfs 目录共享的安装、配置和测试就完成了。

九、其它配置

1. 设置挂载永久生效

上面测试步骤中的挂载命令,是临时生效的。也就是说当机器重启后,在客户端机上,看不到挂载的目录,那么如何设置永久挂载呢?有两种方式:

1)修改 /etc/fstab 文件。

命令:192.168.220.69:/home/workspace    /home/workspace    nfs    rw    0    0

2)把上面的挂载命令添加到 /etc/rc.local 中。

命令:mount -t nfs 192.168.220.69:/home/workspace /home/workspace -o proto=tcp -o nolock

2. 端口不固定,如何配置防火墙规则

为了方便配置防火墙,需要固定 nfs 服务端口。NFS 启动时会随机启动多个端口并向 RPC 注册,这样如果使用 iptables 对 NFS 端口进行限制就会有点麻烦,可以更改配置文件固定 NFS 服务相关端口。

分配端口,编辑配置文件:

命令:vi /etc/sysconfig/nfs

修改配置文件后,记得重启 nfs 服务。重启后可以看到,随机端口已固定,便于配置防火墙策略。

服务器简历共享文件,通过 NFS 实现服务器目录共享相关推荐

  1. 如何访问云服务器的共享文件,怎么访问云服务器的共享文件夹

    怎么访问云服务器的共享文件夹 内容精选 换一换 本章节指导用户挂载已有数据的共享云硬盘,只可以用作数据盘.您可以在磁盘列表中查看磁盘信息,磁盘信息符合以下条件,该磁盘支持挂载至云服务器用作数据盘.共享 ...

  2. centos7 nfs安装及目录共享

    nfs共享目录主要分为服务器端操作和客户端操作,服务器端需要做的时候安装服务,建立共享目录,并通过共享服务进行共享.客户端需要做的就是创建本地目录,并将本地目录与共享目录进行挂载,之后就可以通过操作本 ...

  3. ubuntu服务器创建共享文件夹,Ubuntu samba安装创建共享目录及使用

    Ubuntu samba更新了很多版本更新,我本人认为Ubuntu samba是很好使的文件系统,在此向大家推荐.如今技术不断更新,各种使用文件都已经淘汰.我认为还是有很不错的如Ubuntu samb ...

  4. windows多个服务器之间共享文件夹,windows server 2008 R2 部署NFS,实现多台服务器间、客户端间的共享目录。...

    如何通过Windows Server 2008 R2建立NFS存储服务? 通过Windows Server 2008 R2,我们可以很容易地将其作为一台NFS存储服务器,得到一个NFS软存储,轻松解决 ...

  5. [NFS 挂载] NFS远程服务器目录挂载

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一.NFS客户端,服务端配置 1.服务端 2.客户端 BUG总结 前言   NFS简单概要 1: NFS 是Ne ...

  6. nfs服务器之间实现目录共享

    title: nfs服务器之间实现目录共享 date: 2022-11-05 22:41:54 tags: [nfs,文件共享] categories: linux 在使用airflow的时候,sch ...

  7. 通过 NFS 实现服务器目录共享

    项目需求 在一些项目开发中,往往有这种需求,就是项目的一些静态资源都是直接存放在项目服务外的目录中.比如 APP 程序包的上传和下载,一般后台服务上传包,服务直接把包上传到当前系统资源目录,但多个上传 ...

  8. 使用云服务器实现共享文件,使用云服务器实现共享文件

    使用云服务器实现共享文件 内容精选 换一换 用户可以采用加密方式创建私有镜像,确保镜像数据安全性.用户已启用数据加密服务.加密镜像不能共享给其他用户.加密镜像不能发布到应用超市.如果云服务器的系统盘已 ...

  9. 云服务器 共享文件,云服务器 共享文件

    云服务器 共享文件 内容精选 换一换 创建文件共享.创建文件系统成功后,您还需前往弹性云服务器执行挂载操作,才能实现多个云服务器共享文件存储.挂载相关操作请参考弹性文件服务快速入门.该接口为异步接口, ...

最新文章

  1. mysql本周函数_MySQL的YEARWEEK函数以及查询本周数据_MySQL
  2. java 解析 csv 文件
  3. scvmm2008R2创建委派管理员角色
  4. 《快学 Go 语言》第 7 课 —— 冰糖葫芦串
  5. ActiveMQ、RabbitMQ、RocketMQ、Kafka的介绍及优缺点说明
  6. Alluxio2.X简要介绍
  7. polyfill 与 transform-runtime
  8. java_web开发入门
  9. background-color:#e5eecc; border:solid 1px #c3c3c3;
  10. java Operator ‘/‘ cannot be applied to ‘java.math.BigInteger‘, ‘int‘
  11. 【leetcode】Copy List with Random Pointer (hard)
  12. 硬盘格式化后数据能否恢复 硬盘格式化数据恢复方法分享
  13. Spartan-6 FPGA 如何使用ISE下载程序
  14. 计算机专业术语pe什么意思,pe是什么意思
  15. autoit3 ie.au3 函数之——_IEErrorNotify
  16. gwr模型用什么做_迷你世界微缩模型还能这样用,玩家自己就能做皮肤
  17. 计算机配置时能关机吗,怎么设置时间让电脑自动关机?
  18. 正则表达式和文本处理工具
  19. Android Studio 奇葩遭遇(xxx is never used)
  20. MySQL 表查询关键字

热门文章

  1. 8 stark组件 展示数据
  2. Basic64 编码解码
  3. linux系统编程:read,write与lseek的综合应用
  4. 从零开始springboot 第二讲
  5. AndroidMVP
  6. Oracle性能优化
  7. Linux下select函数的使用
  8. 解决Cannot load /usr/local/apache/modules/libphp5.so的方法
  9. Word+Excel 问题及解决
  10. easyUI combobox启用禁用功能写法