Linux —— nfs文件系统

简介

  NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

  NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

  NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

参考:https://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html

网站数据的一致性--》NFS服务器
压力测试--》ab
监控 --》zabbix

为什么需要nfs服务器?
  保障网站数据的一致性--》不管负载均衡器将请求分配到那台后端的服务器,客户机看到的内容是一样。


nfs服务器是否是最佳的解决方法?
  答案: 不是的
        nfs是比较廉价的解决方法,一般的公司不会采用,性能不是特别棒,建议使用专用的存储服务器。

存储服务器 

SAN
  优点:读写性能好,有灾备
    SAN:区域存储网络
    存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。

  缺点: 需要一笔费用

NAS

NAS(Network Attached Storage)网络存储基于标准网络协议实现数据传输,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机提供文件共享和数据备份。
        比较便宜使用tcp/ip网络协议,在日常的生活和工作里使用,例如:可以将所有手机,电脑里的图片集中存储。
        小型带系统的存储设备


nfs是什么?
 网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

nfs解决了什么问题?
  数据同源: 到同一个地方去拿数据,保障数据的一致性

nfs的优点和缺点
  优点: 随便一台linux服务器都可以搭建,成本非常低,构建非常容易
  缺点: 读取速度有限,跟网络质量,磁盘IO,cpu,内存等因素有关,在传统的tcp/ip网络上传输的
 

原理

 权限的选项

[root@nfs-server ~]# vim /etc/exports/web  192.168.0.0/24(rw,all_squash,sync)
/web  是我们共享的文件夹的路径--》使用绝对路径
192.168.0.0/24 允许过来访问的客户机的ip地址网段
(rw,all_squash,sync) 表示权限的限制 rw 表示可读可写 read and  writero 表示只能读  read-onlyall_squash :任何客户机上的用户过来访问的时候,都把它认为是普通的用户root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户no_root_squash  当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员sync  同时将数据写入到内存与硬盘中,保证不丢失数据async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据

搭建过程

1.安装nfs的相关软件
[root@nfs-server ~]# yum install nfs-utils -y
2.启动nfs-server服务
[root@nfs-server ~]# service nfs-server stop
Redirecting to /bin/systemctl stop nfs-server.service
[root@nfs-server ~]# service nfs-server start
Redirecting to /bin/systemctl start nfs-server.service
[root@nfs-server ~]# service nfs-server restart
Redirecting to /bin/systemctl restart nfs-server.service
[root@nfs-server ~]#[root@nfs-server ~]# ps aux|grep nfs
root         431  0.0  0.0      0     0 ?        I    8月01   0:01 [kworker/u128:4-nfsd4]
root         833  0.0  0.3  50304  2932 ?        Ss   8月01   0:00 /usr/sbin/nfsdcld
root        5311  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5312  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5313  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5314  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5315  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5316  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5317  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5318  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5326  0.0  0.1  12320   992 pts/0    S+   11:03   0:00 grep --color=auto nfs
[root@nfs-server ~]#3.原理部分:
nfs服务和rpc到底是如何实现的呢?工作原理ssh-->22
nginx -->80
mysql -->3306时我们就得需要远程过程调用 (RPC) 的服务啦!RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能。nfs自己并没有去对外监听某个端口号,而是外包给了rpc服务,rpc帮助nfs去监听端口,然后告诉客户机和本机的那个进程对应的端口连续[root@nfs-server ~]# netstat -anplut|grep nfs
[root@nfs-server ~]# netstat -anplut|grep rpc  查看rpc服务相关的端口
tcp        0      0 0.0.0.0:35503           0.0.0.0:*               LISTEN      960/rpc.statd       
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      5304/rpc.mountd     
tcp6       0      0 :::20048                :::*                    LISTEN      5304/rpc.mountd     
tcp6       0      0 :::42099                :::*                    LISTEN      960/rpc.statd       
udp        0      0 0.0.0.0:20048           0.0.0.0:*                           5304/rpc.mountd     
udp        0      0 127.0.0.1:717           0.0.0.0:*                           960/rpc.statd       
udp        0      0 0.0.0.0:42974           0.0.0.0:*                           960/rpc.statd       
udp6       0      0 :::20048                :::*                                5304/rpc.mountd     
udp6       0      0 :::43399                :::*                                960/rpc.statd       
[root@nfs-server ~]# 4.共享文件,编辑/etc/exports文件,写好具体的共享的目录和权限
/etc/exports
[root@nfs-server ~]# vim /etc/exports/web  192.168.0.0/24(rw,all_squash,sync)
/web  是我们共享的文件夹的路径--》使用绝对路径   --》需要自己新建
192.168.0.0/24 允许过来访问的客户机的ip地址网段
(rw,all_squash,sync) 表示权限的限制 rw 表示可读可写 read and  writero 表示只能读  read-onlyall_squash :任何客户机上的用户过来访问的时候,都把它认为是普通的用户root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户no_root_squash  当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员sync  同时将数据写入到内存与硬盘中,保证不丢失数据async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据
[root@nfs-server ~]# mkdir /web
[root@nfs-server ~]# cd /web
[root@nfs-server web]#vim   index.html  创建首页文件
index.html [root@nfs-server web]# cat index.html 
sanchuang
fengdeyong  xuzizhen  zhangrenjie
[root@nfs-server web]# 
5.刷新输出文件的列表
[root@nfs-server web]# exportfs -rv
exporting 192.168.0.0/24:/web
[root@nfs-server web]# [root@nfs-server web]# cat /etc/exports
/web  192.168.0.0/24(rw,all_squash,sync)
/download  192.168.0.0/24(rw,all_squash,sync)
/download  192.168.0.190(rw,all_squash,sync)
/download  192.168.0.192(rw,all_squash,sync)
/download  192.168.0.180(rw,all_squash,sync)
[root@nfs-server web]# 
[root@nfs-server web]# mkdir /download   新建/download
[root@nfs-server web]# exportfs -rv
exporting 192.168.0.190:/download
exporting 192.168.0.192:/download
exporting 192.168.0.180:/download
exporting 192.168.0.0/24:/download
exporting 192.168.0.0/24:/web
[root@nfs-server web]# 
复制一点点数据到/download目录下
[root@nfs-server download]# cp /etc/hosts  .
[root@nfs-server download]# tar czf boot.tar.gz  /boot 
tar: 从成员名中删除开头的“/”[root@nfs-server download]# 
[root@nfs-server download]# ls
boot.tar.gz  hosts
[root@nfs-server download]#5.建议关闭防火墙和selinux[root@nfs-server download]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@nfs-server download]# systemctl disable firewalld
[root@nfs-server download]# getenforce 
Disabled
[root@nfs-server download]# 在客户机上挂载nfs服务器上共享的/web和/download目录
[root@web-server2 ~]# yum install nfs-utils -y  安装nfs-utils软件,方便客户机上进行挂载,具有了相关命令了,例如:showmount
[root@web-server2 ~]# showmount -e 192.168.0.139  查看nfs服务器上共享输出了哪些文件夹
Export list for 192.168.0.139:
/web      192.168.0.0/24
/download 192.168.0.0/24
[root@web-server2 ~]# 挂载nfs服务器上的目录到本机上
[root@web-server2 ~]# mkdir   /web  在客户机的本地新建一个目录/web
[root@web-server2 ~]# mount 192.168.0.139:/web   /web  将nfs服务器上的/web目录挂载到本地的/web目录,今后访问本地的/web目录,就是访问到nfs服务器上的/web目录
mount 是挂载的命令,可以理解为一种映射语法:  mount   nfs服务器的目录    本地的目录[root@web-server2 ~]# cd /web
[root@web-server2 web]# ls
index.html
[root@web-server2 web]# ls
index.html  sc.txt
[root@web-server2 web]#[root@web-server2 web]# mkdir /download
[root@web-server2 web]# mount 192.168.0.139:/download   /download
[root@web-server2 web]# cd /download/
[root@web-server2 download]# ls
boot.tar.gz  hosts
[root@web-server2 download]# 客户机上能否有写的权限要看2种权限:1.共享权限 --》/etc/exports文件里的权限,例如ro,rw2.文件系统里的权限  --》/web 在linux里的权限[root@nfs-server web]# ll -d /web
drwxrwxrwx. 3 root root 56 8月   2 11:55 /web
[root@nfs-server web]# ll -d /download
drwxr-xr-x 2 root root 38 8月   2 11:44 /download        ---》nfs客户机挂载后,没有写的权限,因为其他人没有w权限
[root@nfs-server web]# 在nfs服务器上授权
[root@nfs-server web]# chmod a+w /download/
[root@nfs-server web]# ll -d /download
drwxrwxrwx 2 root root 38 8月   2 11:44 /download
[root@nfs-server web]# 在客户机上验证
[root@web-server2 web]# cd /download/
[root@web-server2 download]# mkdir fengdeyong
[root@web-server2 download]# ls
boot.tar.gz  fengdeyong  hosts
[root@web-server2 download]# 后端的real-server到底要把nfs服务器共享的目录挂载到哪里?用户才能看到一样的数据nginx安装目录下的html --》编译安装的[root@web-server2 sczhengbo99]# mount 192.168.0.139:/web /usr/local/sczhengbo99/html/
[root@web-server2 sczhengbo99]# cd /usr/local/sczhengbo99/html/
[root@web-server2 html]# ls
fengdeyong  index.html  sc.txt
[root@web-server2 html]# 

相关命令和文件

mount   挂载

exportfs -rv   相当于重启nfs服务,让修改的/etc/exports文件生效

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

umount   卸载

开机自动挂载nfs文件系统

1. /etc/rc.local

mount  192.168.0.139:/web   /usr/local/sczhengbo/html 

chmod +x /etc/rc.d/rc.local 

2.修改/etc/fstab文件,也可以自动挂载

  /etc/fstab 是linux系统开机会自动根据这个文件里的内容挂载磁盘分区
  fstab  -->file  system  table

192.168.0.139:/web   /usr/local/sczhengbo99/html  nfs    defaults  0 0
192.168.0.139:/web   挂载的分区--》nfs的文件系统
 /usr/local/sczhengbo/html 在本地的挂载点

 nfs 文件系统的类型

 defaults  挂载的选项,使用默认
 0 是否支持dump命令进行备份
 0 是否开机的时候进行分区的文件系统的检查,分区的文件系统是否有问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/56160.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA 2023.2.1 修复版本日志

我们刚刚发布了 v2023.2 的第一个错误修复更新。 您可以从 IDE 内部、使用工具箱应用程序或通过快照(如果您使用的是 Ubuntu)更新到此版本。您也可以直接从我们的网站下载。 以下是最新版本中包含的最值得注意的改进和修复的列表: 我们已经解…

apex和pl/sql学习记录2

验证后过程函数代码插眼儿 -- 登录后验证过程3 create or replace PROCEDURE TEST_USER_WXX3_PRO ASV_USER_ID NUMBER(20);V_ROLE_ID NUMBER(20);V_PERM_ID NUMBER(20);V_DEPT_ID NUMBER(20);V_USER_NAME NVARCHAR2(64);V_JOB_NUMBER NVARCHAR2(32);V_M…

Linux系统编程--文件编程--打开创建文件

创建文件需要包含以下3个头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 打开、创建文件有以下3个API open的返回值——文件描述符&#xff08;索引作用&#xff09;&#xff0c;是一个小的非负整数 int open(const char*pathn…

Hbuild 打包H5项目

1、输入用户信息登录Hbuilder编辑器&#xff1b; 2、进入manifest.json配置文件&#xff1b;获取AppID信息&#xff1b;&#xff08;可以点击DCloud AppID使用说明进行查看详情&#xff09; 3、进入DCloud开发者中心https://dev.dcloud.net.cn/&#xff1b;登录用户和密码&…

Linux目录结构与文件管理 (02)(四)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、查看文件内容 二、创建文件 三、删除文件 四、 移动文件 五、复制文件 六、编辑文件内容 总结 前言 今天是在昨天的基础上继续学习&#xff0c;主要…

【VLDB 2023】基于预测的云资源弹性伸缩框架MagicScaler,实现“高QoS,低成本”双丰收

开篇 近日&#xff0c;由阿里云计算平台大数据基础工程技术团队主导&#xff0c;与计算平台MaxCompute团队、华东师范大学数据科学与工程学院、达摩院合作&#xff0c;基于预测的云计算平台资源弹性伸缩框架论文《MagicScaler: Uncertainty-aware, Predictive Autoscaling 》被…

Flutter实现动画列表AnimateListView

由于业务需要&#xff0c;在打开列表时&#xff0c;列表项需要一个从右边飞入的动画效果&#xff0c;故封装一个专门可以执行动画的列表组件&#xff0c;可以自定义自己的动画&#xff0c;内置有水平滑动&#xff0c;缩放等简单动画。花里胡哨的动画效果由你自己来定制吧。 功…

StableVideo:使用Stable Diffusion生成连续无闪烁的视频

使用Stable Diffusion生成视频一直是人们的研究目标&#xff0c;但是我们遇到的最大问题是视频帧和帧之间的闪烁&#xff0c;但是最新的论文则着力解决这个问题。 本文总结了Chai等人的论文《StableVideo: Text-driven consistency -aware Diffusion Video Editing》&#xff…

学习Linux的注意事项(使用经验;目录作用;服务器注意事项)

本篇分享学习Linux过程中的一些经验 文章目录 1. Linux系统的使用经验2. Linux各目录的作用3. 服务器注意事项 1. Linux系统的使用经验 Linux严格区分大小写Linux中所有内容以文件形式保存&#xff0c;包括硬件&#xff0c;Linux是以管理文件的方式操作硬件 硬盘文件是/dev/s…

2023-08-23 LeetCode每日一题(统计点对的数目)

2023-08-23每日一题 一、题目编号 1782. 统计点对的数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个无向图&#xff0c;无向图由整数 n &#xff0c;表示图中节点的数目&#xff0c;和 edges 组成&#xff0c;其中 edges[i] [ui, vi] 表示 ui 和 vi 之间有一…

Linux(实操篇二)

Linux实操篇 Linux(实操篇二)1. 常用基本命令1.3 时间日期类1.3.1 date显示当前时间1.3.2 显示非当前时间1.3.3 date设置系统时间1.3.4 cal查看日历 1.4 用户管理命令1.4.1 useradd添加新用户1.4.2 passwd设置用户密码1.4.3 id查看用户是否存在1.4.4 cat /etc/passwd 查看创建了…

Ubuntu常用配置集合

Ubuntu配置软件镜像源 参考文章&#xff1a;Ubuntu如何配置软件镜像源 建议使用清华的源。 Ubuntu安装SSH服务&#xff1a; 参考文章&#xff1a;Ubuntu安装SSH服务 ubuntu下安装使用nvm 参考文章&#xff1a;ubuntu下安装使用nvm 出现下载sh文件不成功的情况&#xff0c;…

用香港服务器域名需要备案吗?

​  在选择服务器的时候&#xff0c;很多人会考虑使用香港服务器。香港服务器的一个优势就是不需要备案。不管是虚拟主机还是云主机&#xff0c;无论是个人网站还是商业网站&#xff0c;都不需要进行备案手续。 域名实名认证 虽然不需要备案&#xff0c;但使用香港服务器搭建…

基于Linux操作系统的keepalived双机热备和keepalived+lvs(DR)基本配置操作

目录 keepalived双机热备 一、概述 &#xff08;一&#xff09;具体工作原理如下&#xff1a; &#xff08;二&#xff09;实验拓补 二、安装NFS、配置 1、第一台机器配置&#xff1a;NFS &#xff1a;192.168.11.101 2、更改配置文件 3、安装NFS进行目录共享 4、编辑…

Linux 之 yum使用(yum 命令使用讲解)

yum使用 1.yum安装软件 yum -y install vim [rootlocalhost ~]# yum -y install vim 已加载插件&#xff1a;fastestmirror Bad id for repo: mirrors.aliyun.com_docker-ce_linux_centos_docker-ce.xn--repo()-mu8ig98h4l0hokj, byte ( 60 Loading mirror speeds from cac…

大数据(五):Pandas的基础应用详解(二)

专栏介绍 结合自身经验和内部资料总结的Python教程&#xff0c;每天3-5章&#xff0c;最短1个月就能全方位的完成Python的学习并进行实战开发&#xff0c;学完了定能成为大佬&#xff01;加油吧&#xff01;卷起来&#xff01; 全部文章请访问专栏&#xff1a;《Python全栈教…

Python数据分析与数据挖掘:解析数据的力量

引言&#xff1a; 随着大数据时代的到来&#xff0c;数据分析和数据挖掘已经成为许多行业中不可或缺的一部分。在这个信息爆炸的时代&#xff0c;如何从大量的数据中提取有价值的信息&#xff0c;成为了企业和个人追求的目标。而Python作为一种强大的编程语言&#xff0c;提供…

无涯教程-机器学习 - 矩阵图函数

相关性是有关两个变量之间变化的指示&#xff0c;在前面的章节中&#xff0c;无涯教程讨论了Pearson的相关系数以及相关的重要性&#xff0c;可以绘制相关矩阵以显示哪个变量相对于另一个变量具有较高或较低的相关性。 在以下示例中&#xff0c;Python脚本将为Pima印度糖尿病数…

jemter连接数据json断言

文章目录 一、jmeter连接数据库1、加载JDBC驱动2、连接数据3、SQL Query的Query Type使用方法&#xff1a;4、Variable Name使用方法&#xff1a;5、Result variable name使用方法&#xff1a; 二、Json响应断言1、添加 》 断言 》 JSON断言2、JSON断言界面参数说明&#xff1a…

【100天精通python】Day46:python网络编程基础与入门

目录 专栏导读 1 网络编程的基础 2. 基本概念和协议 2.1 计算机网络基础 2.2 网络协议、IP地址、端口号 2.3 常见网络协议 3. 套接字编程 3.1 套接字的基本概念 3.2 套接字的基本操作 3.3 套接字通信模型和方法&#xff1a;send、recv 3.3.1 TCP通信模型 3.3.2 U…