Linux 多种方式实现文件共享(三)NFS 6

简介: 【8月更文挑战第6天】NFS 即网络文件系统,是一种使用于分布式文件系统的协议,NFS 功能是通过网络让不同的机器,不同的操作系统能够彼此分享各自的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据

NFS 实现文件共享

NFS 即网络文件系统,是一种使用于分布式文件系统的协议,NFS 功能是通过网络让不同的机器,不同的操作系统能够彼此分享各自的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法.


目前NFS有三个版本,其常用的版本解析

NFSv2:是一个古老的版本,但却被众多的操作系统所支持,这样兼容性更好.

NFSv3:拥有更多的特点,包括更快的速度,更大的单个文件大小,对TCP的支持.

NFSv4:提供有状态连接,共容易追踪,安全性增强,RHEL7上默认4版本协议.

在启动NFS Server之前,首先要启动RPC服务否则NFS Server就无法向RPC服务区注册,另外如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失.因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册.


NFS系统的守护进程介绍

RPC:(Remote Procedure Call Protocol),远程过程调用协议

NFS:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器

RPCbind:主要功能是进行端口映射工作,和端口代理分配等

客户端NFS和服务端NFS通讯过程


首先服务器端启动RPC服务,并开启111端口

启动NFS服务,并向RPC注册端口信息

客户端启动RPC,向服务端的RPC服务请求服务端的NFS端口

服务端的RPC服务,反馈NFS端口信息给客户端

客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输

NFS服务器是通过读取/etc/exports配置文件设定那个客户端可以访问那些NFS共享文件系统,该文件书写原则有如下几条.


空白行的内容将被忽略

以#号开头的内容是注释

可以通过\转义字符换行

每个共享文件系统需要独立一行条目

客户端的主机列表需要使用空格隔开

接下来我们来看一下一条完整的规则条目是如何书写的吧,需要注意的是客户端主机可以是一个网段,单台主机或者是主机名称,在使用时应该灵活运用.


[共享目录] [允许谁来访问][权限] [可用主机名][权限] [其他主机权限]


/nfs  192.168.1.1(rw)  localhost(rw)  *(ro,sync)

/nfs  192.168.1.0/24(rw) localhost(rw)  *(ro,sync)

/nfs  192.168.1.1(rw) 192.168.1.2(ro) 192.168.1.3(ro,sync)

如上所示,有个权限列表,NFS配置中可以给一个共享路径指定相关权限,NFS的默认属性为ro,sync,wdelay,root_squash,具体的NFS属性列表,我们可以参考一下列表.


NFS权限选项 功能描述信息

ro 以只读方式共享

rw 以读写方式共享

sync 同步写入磁盘

async 异步写入磁盘

wdelay 延迟写入操作

root_squash 屏蔽远程root权限

no_root_squash 不屏蔽远程root权限

all_squash 屏蔽所有远程用户权限

以上的几个说明信息,是我们最常用的几个,当然还有很多这样的配置选项,这里就不依次列举了,更多内容请百度了解.



NFS 服务端配置

1.在配置NFS共享文件之前,我们先来放行NFS的几个常用服务,并将防火墙默认设置为拒绝状态.


[root@localhost ~]# firewall-cmd --add-service=nfs

[root@localhost ~]# firewall-cmd --add-service=mountd

[root@localhost ~]# firewall-cmd --add-service=rpc-bind

[root@localhost ~]# firewall-cmd --add-service=nfs --permanent

[root@localhost ~]# firewall-cmd --add-service=mountd --permanent

[root@localhost ~]# firewall-cmd --add-service=rpc-bind --permanent


2.通过YUM仓库快速安装NFS相关的软件包.

[root@localhost ~]# yum install -y rpcbind nfs-utils*


Package rpcbind-0.2.0-47.el7.x86_64 already installed and latest version

Package 1:nfs-utils-1.3.0-0.61.el7.x86_64 already installed and latest version

Nothing to do

3.创建需要共享的文件,并拷贝相关的文件内容,并设置SeLinux规则.

[root@localhost ~]# mkdir -p /public

[root@localhost ~]# chmod o+rw /public/

[root@localhost ~]# chcon -R -t public_content_t /public/

4.修改NFS主配置文件,并写入要访问的主机列表.


[root@localhost ~]# vim /etc/exports


/public 192.168.1.0/24(rw,sync)

#-----------------------------------------------------------------

# 其他完整写法,可参考以下配置方式

#[共享目录] [允许谁来访问][权限] [可用主机名][权限] [其他主机权限]

#/nfs  192.168.1.1(rw)  localhost(rw)  *(ro,sync)

#/nfs  192.168.1.0/24(rw) localhost(rw)  *(ro,sync)

5.重启NFS服务,和守护进程,并设置开机自启动.


[root@localhost ~]# systemctl restart nfs

[root@localhost ~]# systemctl restart rpcbind

[root@localhost ~]# systemctl enable nfs

[root@localhost ~]# systemctl enable rpcbind

[root@localhost ~]# systemctl restart nfs-server

[root@localhost ~]# systemctl enable nfs-server

NFS 客户端配置

1.通过YUM仓库快速安装NFS相关的软件包.


[root@localhost ~]# yum install -y rpcbind nfs-utils*

Package rpcbind-0.2.0-47.el7.x86_64 already installed and latest version

Package 1:nfs-utils-1.3.0-0.61.el7.x86_64 already installed and latest version

Nothing to do

2.创建挂载点,并设置SeLinux规则.


[root@localhost ~]# mkdir -p /mnt/nfsmount

[root@localhost ~]# chcon -R -t public_content_t /mnt/nfsmount

NFS挂载演示: 手动挂载目录,可通过mount命令来实现,具体的挂载参数如下.


#mount -t nfs -o 选项 服务主机:/服务器共享目录  /本地挂载没记录


[root@localhost ~]# mount -t nfs -o rw,sync 192.168.1.5:/public /mnt/nfsmount

[root@localhost ~]# df -hT |grep "public"


Filesystem              Type      Size  Used Avail Use% Mounted on

192.168.1.5:/public     nfs4       17G  1.9G   16G  12% /mnt/nfsmount

具体的挂载详细参数如下:

● Intr:当服务器宕机时终端NFS请求

● nfsvers=4:指定使用那个版本的协议

● noacl:关闭ACL,仅与老版本兼容

● nolock:关闭文件锁机制

● noexec:挂载时屏蔽二进制程序

● port=num:指定NFS服务器端口号

● rsize=num:设置最大数据块大小(读取)

● wsize=num:设置最大数据块大小(写入)

● tcp:使用TCP协议挂载

● udp:使用UDP协议挂载


nfsstat命令: NFS提供了查看NFS共享状态功能.


[root@localhost ~]# nfsstat        #显示服务端与客户端状态

[root@localhost ~]# nfsstat -s     #只显示服务端状态

[root@localhost ~]# nfsstat -c     #只显示客户端状态

[root@localhost ~]# nfsstat -n     #仅显示NFS与RPC信息

[root@localhost ~]# nfsstat -m     #显示挂载信息

[root@localhost ~]# nfsstat -l     #以列表信息显示信息

rpcinfo命令: NFS生成RPC信息报表功能.


[root@localhost ~]# rpcinfo -m 127.0.0.1   #显示指定主机rpcbind操作列表

[root@localhost ~]# rpcinfo -p 127.0.0.1   #显示指定主机RPC注册信息

[root@localhost ~]# rpcinfo -s             #显示所有RPC注册信息

showmount命令: NFS使用shomount命令可以查看远程主机共享列表.


[root@localhost ~]# showmount -e 127.0.0.1  #显示服务器可用资源

[root@localhost ~]# showmount -a 127.0.0.1  #查看所有客户链接信息

[root@localhost ~]# showmount -d 127.0.0.1  #只显示客户输出信息

exportfs命令: 此命令允许root在不重启NFS服务情况下,选择共享或取消共享文件.


[root@localhost ~]# exportfs -a   #全部挂载或卸载配置文件中的内容

[root@localhost ~]# exportfs -r   #重新加载配置文件中的信息

[root@localhost ~]# exportfs -u   #停止单一目录的共享

[root@localhost ~]# exportfs -au  #停止所有服务端的共享

[root@localhost ~]# exportfs -ra  #重新共享所有目录

配置固定端口: 我们可以修改配置文件来实现配置固定的共享端口号.


[root@localhost ~]# vim /etc/sysconfig/nfs


RQUOTAD_PORT=5001              

LOCKD_TCPPORT=5002            #设置tcp的ockd程序端口号

LOCKD_UDPPORT=5002            #设置udp的lockd程序端口号

MOUNTD_PORT=5003              #设置mountd程序端口号

STATD_PORT=5004               #设置rpc.statd程序端口号

设置自动挂载: 修改自动挂载目录,写入以下内容即可实现自动挂载.


[root@localhost ~]# vim /etc/fstab

192.168.1.1:/public /mnt/nfsmount  nfs  default  0 0

目录
打赏
0
13
13
1
219
分享
相关文章
|
3天前
|
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
40 19
|
27天前
|
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
70 19
|
1月前
|
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
62 5
Linux 常用文件查看命令
|
21天前
|
如何创建Linux交换文件?Linux交换文件最新创建方法
Swap是Linux中的虚拟内存空间,用于在物理内存不足时将非活动进程移至磁盘,从而优化活动进程的性能。通过创建交换文件(如1GB),可灵活调整交换空间而无需重新分区。步骤包括:使用`fallocate`或`dd`创建文件、设置权限 (`chmod 600`)、格式化 (`mkswap`)、启用交换 (`swapon`)、修改`/etc/fstab`以持久化配置,以及调整`vm.swappiness`值(默认60,建议从10开始)来平衡内存与交换的使用。最后通过`swapon -s`检查状态并重启生效。此方法适用于VPS和专用服务器,需以root用户操作。
45 2
Linux|Transfer.sh 轻松实现文件共享
Linux|Transfer.sh 轻松实现文件共享
46 2
Linux|Transfer.sh 轻松实现文件共享
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
122 34
linux怎么把文件传到docker里面
在现代应用开发中,Docker作为流行的虚拟化工具,广泛应用于微服务架构。文件传输到Docker容器是常见需求。常用方法包括:1) `docker cp`命令直接复制文件;2) 使用`-v`选项挂载宿主机目录,实现数据持久化和实时同步;3) 通过SCP/FTP协议传输文件;4) 在Dockerfile中构建镜像时添加文件。选择合适的方法并确保网络安全是关键。
185 1
|
2月前
|
Linux文件与目录的日常
目录的切换 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd - / cd..“); 如果,想快速切换,追原始的目录可以(”cd --“); 查看目录及文件
57 14
|
2月前
|
Linux 将所有文件和目录名重命名为小写
Linux 将所有文件和目录名重命名为小写
69 3
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
137 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等