首页 > 系统相关 >Linux基础27 NFS原理, 搭建, NFS挂载卸载, NFS参数

Linux基础27 NFS原理, 搭建, NFS挂载卸载, NFS参数

时间:2023-07-13 16:36:38浏览次数:42  
标签:00 27 172.16 nfs NFS Linux 挂载 root

一、什么是NFS

共享存储,文件服务器

1.NFS基本概述
NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网让不同的主机系统之间可以共享文件或目录
NFS系统和windows网络共享、网络驱动器类似,只不过windows用于局域网,NFS用于企业集群架构中 如果是大型网页,会用到更复杂的
分布式文件系统FastDFS(音频、小说、视频),glusterfs(iso镜像,因为文件比较大),HDFS(存数据,配合消息队列), NFS(图片、静态页)解决共享前端web共享

2.为什么使用NFS
1.为了实现多台服务器之间数据共享
2.实现多台服务器之间数据一致

 

二、NFS应用
1.没有NFS时
A用户上传图片经过负载均衡,上传请求调度至WEB01服务器
B用户访问A上传的图片时,被负载均衡调度到了WEB02上,犹豫WEB02没有A用户上传的图片,所以B用户无法看到。

2.有NFS共享存储的时候
1、A用户上传图片无论被负载均衡调度至WEB01还是WEB02,最终数据都被写入至共享存储;
2、B用户访问A用户上传的图片时,无论被调度至WEB01还是WEB02,最终都会上共享存储访问对应的文件,这样就可以访问到资源了。

 

三、NFS原理

1.用户进程访问NFS客户端,使用不同的函数对数据进行处理
2.NFS客户端通过TCP/IP连接服务端
3.NFS服务端接受请求后,会先调用portmap进程进行端口映射
4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端
5.Rpc.mount进程用于判断客户端可以对服务端进行哪些操作
6.最后如果允许操作,客户端可以对服务端磁盘进行修改
注意:rpcbind是一个远程调用,使用NFS时必须有rpcbind

 

四、NFS实践

主机      外网IP          内网IP          角色
nfs      10.0.0.31       172.16.1.31    NFS服务端
web01    10.0.0.7        172.16.1.7     NFS客户端
1.服务端
1)关闭防火墙和selinux
# 关闭firewalld防火墙
[root@nfs ~]# systemctl stop firewalld
[root@nfs ~]# systemctl disable firewalld

# 关闭selinux
[root@nfs ~]# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/seliunx/config
[root@nfs ~]# setenforce 0
setenforce: SELinux is disabled
2)安装NFS和rpcbind
yum install -y nfs-utils rpcbind    # centos7实际上只要装nfs-utils就行,rpcbind会一起安装
注意:
如果是Centos6系统,一定要手动下载rpcbind,启动时一定县启动rpcbind,再启动nfs
3)配置NFS
配置NFS服务,配置文件为 /etc/exports,书写格式为:
/data 172.16.1.0/24(rw,sync,all_squash)
语法    |    /data    |    172.16.1.0/24    |    (rw,sync,all_squash)
语法含义    |  NFS共享的目录    |   NFS允许连接的客户端    |    允许的操作(参数1,参数2)
# 服务端配置
vim /etc/exports
/data 172.16.1.0/24    (rw,sync,all_squash)    # 0/24表示172.16.1这个网段都允许
4)创建共享目录
[root@nfs ~]# mkdir /data
5)启动nfs
[root@nfs ~]# systemctl start rpcbind nfs-server
# 验证启动
[root@nfs ~]# ps -ef |grep nfs
root      83009      2  0 23:28 ?        00:00:00 [nfsd4_callbacks]
root      83015      2  0 23:28 ?        00:00:00 [nfsd]
root      83016      2  0 23:28 ?        00:00:00 [nfsd]
root      83017      2  0 23:28 ?        00:00:00 [nfsd]
root      83018      2  0 23:28 ?        00:00:00 [nfsd]
root      83019      2  0 23:28 ?        00:00:00 [nfsd]
root      83020      2  0 23:28 ?        00:00:00 [nfsd]
root      83021      2  0 23:28 ?        00:00:00 [nfsd]
root      83022      2  0 23:28 ?        00:00:00 [nfsd]
root      83329  94603  0 23:29 pts/0    00:00:00 grep --color=auto nfs
6)验证nfs配置
[root@nfs ~]# cat /var/lib/nfs/etab
/data   172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)

2.客户端操作
1)关闭防火墙和selinux
# 关闭firewalld防火墙
[root@nfs ~]# systemctl stop firewalld
[root@nfs ~]# systemctl disable firewalld

# 关闭selinux
[root@nfs ~]# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/seliunx/config
[root@nfs ~]# setenforce 0
setenforce: SELinux is disabled

2)安装NFS和rpcbind(因需要showmount命令,该命令在nfs中)
yum install -y nfs-utils rpcbind
3)查看挂载点
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
4)挂载
[root@web01 ~]# systemctl start rpcbind    # centos7自动启动,6里才需要手动启动(客户端不需要启动nfs)
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /backup    # -t指定nfs文件类型
[root@web01 backup]# df -h        # 查询是否挂载成功
文件系统           容量  已用  可用 已用% 挂载点
/dev/sda3           18G  1.8G   17G   10% /
devtmpfs           476M     0  476M    0% /dev
tmpfs              487M     0  487M    0% /dev/shm
tmpfs              487M  7.7M  479M    2% /run
tmpfs              487M     0  487M    0% /sys/fs/cgroup
/dev/sda1         1014M  127M  888M   13% /boot
tmpfs               98M     0   98M    0% /run/user/0
172.16.1.31:/data   18G  1.8G   17G   10% /backup

5)写入数据到挂载目录测试
# 进入挂载目录,创建文件或目录
[root@web01 backup]# touch 1.txt
touch: 无法创建"1.txt": 权限不够

# 服务端需要操作
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/

# 客户端再测试
[root@web01 backup]# mkdir 123
[root@web01 backup]# touch 1.txt
[root@web01 backup]# ll
总用量 0
drwxr-xr-x 2 nfsnobody nfsnobody 6 7月  13 01:23 123
-rw-r--r-- 1 nfsnobody nfsnobody 0 7月  13 01:23 1.txt

#nfsnobody
该用户在安装nfs之后自动创建,是NFS使用的用户,该用户没有特殊权限,只能操作所有用户都可以读写的文件

3.NFS挂载卸载

挂载
NFS客户端的配置步骤也十分简单,先试用showmount -e命令,查询NFS服务器的远程共享信息,其输出格式为"共享的目录名称允许使用客户端地址"
NFS挂载:客户端当前的目录仅仅是NFS服务端共享目录的一个入口文件,客户端写入的任何东西还是传出在服务端的

注意:
1.挂载目录后,原来目录下的文件不会丢失,取消挂载后数据仍然存在
2.取消目录挂载的时候不要在该目录里面,退出该目录再取消挂载
3.挂载时如果在挂载的目录下,还是可以暂时看到原来目录下的文件,重新进入后才显示挂载点的文件

1)安装客户端工具
yum install -y nfs-utils rpcbind    # 客户端安装nfs-utils是为了使用showmount命令
systemctl start rpcbind

2)客户端查看挂载点
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

3)挂载命令
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /backup    # -t指定nfs文件类型
mount    # 挂载命令
-t    # 指定挂载的文件类型
172.16.1.31    #  远端NFS服务器地址
:date    # NFS服务器可提供挂载的目录
/backup    # 本地要挂载的目录

# 使用df -h可以查看已挂载的目录
[root@web01 backup]# df -h        # 查询是否挂载成功
172.16.1.31:/data   18G  1.8G   17G   10% /backup

4)卸载
[root@web01 ~]# umount /backup
[root@web01 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  1.8G   17G   10% /
devtmpfs        476M     0  476M    0% /dev
tmpfs           487M     0  487M    0% /dev/shm
tmpfs           487M  7.7M  479M    2% /run
tmpfs           487M     0  487M    0% /sys/fs/cgroup
/dev/sda1      1014M  127M  888M   13% /boot
tmpfs            98M     0   98M    0% /run/user/0

# 取消目录挂载的时候不要在该目录里面,退出该目录再取消挂载
# 或者强制取消挂载
umount -Lf /backup

5.开机挂载
# 挂载,重新启动服务器会取消,想要一直挂载
# 编辑fstab文件
vim /etc/fstab
172.16.1.31:/data /backup nfs defaults 0 0

# 验证fstab是否写正确
mount -a

 

五、NFS配置详解

NFS共享参数      |    参数作用
rw            |    读写权限
ro            |    只读权限(无法创建文件,一般不用)
root_squash     |    当NFS客户端以root访问时,修改权限为NFS服务器的匿名用户(不常用)
no_root_squash   |    当NFS客户端以root访问时,修改权限为NFS服务器的root用户(几乎不用)
all_squash      |    当NFS客户端以任意用户访问时,修改权限为NFS服务器的匿名用户(常用)
no_all_squash    |    当NFS客户端以任意用户访问时,不修改权限(不常用)
sync           |    同时将数据写入内存和磁盘(保证数据不丢失)
async          |    优先将数据写入内存,再写入硬盘;效率高,但是会丢失数据
anonuid         |    配合all_squash,指定匿名用户的uid,用户为系统用户,必须存在
anongid         |    配合all_squash,指定匿名用户的gid

 

六、NFS案例

1.安装http和php服务
[root@web01 backup]# yum install -y httpd php

2.上传代码
rpm -ql httpd|grep html    # 查找站点目录
cd /var/www/html
rz kaoshi.zip    # 把网页文件压缩包放在站点目录下
unzip kaoshi.zip

3.修改上传作业代码
vim upload_file.php
$wen="/backup";

4.启动httpd
systemctl start httpd
netstat -lntp    # 检查端口是否启动

5.测试提交作业代码

1)访问10.0.0.7
2)测试上传文件
3)常见错误
1.文件名字有误
2.显示上传成功,服务器没有文件,一般为权限错误
chown -R apache.apache /backup/    # httpd启动权限为apache,/backup/目录无挂载,为root权限时无法修改,给文件夹赋权apache
6)测试(没有挂载时)
在10.0.0.7的服务器上传 1_nfs.gif
在10.0.0.8的服务器上传 2_nfs.jpg
访问测试
10.0.0.7/pic/1_nfs.gif    访问成功
10.0.0.7/pic/2_nfs.jpg    访问失败

7)挂载共享目录后访问测试
mount -t nfs 172.16.1.31:/data /var/www/html/pic

# 重新上传图片
在10.0.0.7的服务器上传 1_nfs.gif
在10.0.0.8的服务器上传 2_nfs.jpg

访问测试
10.0.0.7/pic/1_nfs.gif    访问成功
10.0.0.7/pic/2_nfs.jpg    访问成功

 

标签:00,27,172.16,nfs,NFS,Linux,挂载,root
From: https://www.cnblogs.com/ludingchao/p/17551262.html

相关文章

  • Linux工具之numactl
     NUMA(Non-UniformMemoryAccess)字面直译为“非一致性内存访问”,对于Linux内核来说最早出现在2.6.7版本上。这种特性对于当下大内存+多CPU为潮流的X86平台来说确实会有不少的性能提升,但相反的,如果配置不当的话,也是一个很大的坑。本文就从头开始说说Linux下关于CPUNUMA特性的配......
  • 【漏洞复现】CVE-2023-27372 RCE漏洞
    产品介绍SPIP是一个互联网发布系统,其中非常重视协作工作,多语言环境和Web作者的易用性。它是自由软件,在GNU/GPL许可证下分发。这意味着它可以用于任何互联网站点,无论是个人的还是机构的,非营利的还是商业的。漏洞概述SPIPCmsv4.2.1之前版本允许通过公共区域中的表单值远程执行......
  • linux 中 M-cM-^@M-^@M-cM-^@M-^@特殊字符的处理
     001、[root@PC1test01]#lstest.txt[root@PC1test01]#cat-Atest.txt##存在特殊字符 M-cM-^@M-^@M-cM-^@M-^@TomM-cM-^@M-^@M-cM-^@M-^@2012-12-11car53000$JohnM-cM-^@M-^@M-cM-^@M-^@2013-01-13bike41000$TomM-cM-^@M-^@M-cM-^@M-......
  • Linux资源管理
    Linux资源管理Linux进程检测与控制linux中对需要运维去管理、去查看的资源信息,如下:内存资源、使用率free磁盘资源、使用率dfCPU资源、使用率tophtop#yuminstall-yhtopglances#yuminstall-yglances进程资源、使用率pspstreepidof网络资源、使用......
  • linux查看网络端口是万兆还是千兆
    1、ethtoolethtool网络接口名#ethtoolem4(网络接口名)Settingsforem4:Supportedports:[TP]Supportedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/Full1000baseT/FullSupportsauto-negotiation:YesAdvertisedlinkmodes:10baseT/Half10baseT/Full1......
  • linux系统ntp服务器
    1、https://zhuanlan.zhihu.com/p/572638416https://blog.csdn.net/thunderLZM/article/details/125996390 修改ntp服务配置文件,添加时间服务vim/etc/ntp.conf,按i进入编辑内容,编译完成后按Esc退出编译状态,之后:wq保存并退出。配置文件需要修改和理解的内容分为几个部分......
  • Archlinux安装和配置fcitx5
    本文基于archlinux系统,搭配dwm窗口管理器进行配置fcitx5安装一些基础包的安装,关于fcitx5框架我们只需要安装fcitx5-im包就可以,这个包实际上就包含了:fcitx5fcitx5-configtoolfcitx5-gtkfcitx5-qt除此之外再安装中文插件和基本的主题sudopacman-Sfcitx5-imfcitx5-chin......
  • Linux系统安装MySql服务器
    1、登录购买的云服务器,进入到根目录,如下图: 2、查看系统里是否有安装MySQL相关的程序包,有则需要先卸载,再重新安装,卸载过程文档后续补充,如需先卸载,可自行百度查找解决方案进行处理。查询是否安装命令:rpm-qa|grepmysql 如图,是已经安装的情况(如下截图的是redis,mysql同理)......
  • 现有Linux系统制作ISO镜像——使用Mondo Rescue
    MondoRescue是什么?MondoRescue(简称Mondo):是一款开源免费的故障恢复和备份工具,可以说是Linux操作系统下的Ghost,你可以轻松地创建系统(Linux或Windows)克隆或备份的ISO镜像,可以将这些镜像存放在CD、DVD、磁带、USB设备、硬盘和NFS上。万一数据丢失了,你将能够可以从备......
  • 在vm-14版本上安装centos 7.5的linux系统
    1、新建虚拟机 2、选择安装类型 3、选择默认的兼容性选项4、选择稍后安装操作系统 5、选择centos的linux系统 6、虚拟机命名和修改存储位置 7、选择配置内核数 8、选择系统默认内存分配 9、选择网络类型 10、选择默认控制器 11、选择磁盘类型 1......