nfs文件系统了解与使用(代码片段)

author author     2022-12-25     514

关键词:

NFS介绍

NFS是network file system(网络文件系统)的缩写,早期的NFS由Sun公司开发,分为2、3、4三个版本,4.0开始由Netapp主导开发,最新版本为4.1
NFS数据传输基于RPC协议(Remote Procedure call)
NFS应用于多个服务器需要访问一个共享资源,如web服务器的网站内容,其共享的数据是一致的,一个NFS数据可供多台服务器挂载访问,服务器端访问NFS上数据内容是相同的
NFS基于RPC协议来进行数据传输

NFS服务端安装配置

服务器端安装nfs和rpcbind,安装nfs时不指定rpcbind也会把rpcbind安装上,在服务端和客户端都安装NFS

[[email protected] ~]# yum install -y nfs-utils rpcbind
已加载插件:fastestmirror
base | 3.6 kB 00:00:00 ? ? 
epel/x86_64/metalink 
---------------------省略过程
已安装:
  nfs-utils.x86_64 1:1.3.0-0.54.el7 rpcbind.x86_64 0:0.2.0-44.el7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
作为依赖被安装:
  gssproxy.x86_64 0:0.7.0-17.el7 keyutils.x86_64 0:1.5.8-3.el7 libbasicobjects.x86_64 0:0.1.1-29.el7 ? ? ?
  libcollection.x86_64 0:0.7.0-29.el7 libevent.x86_64 0:2.0.21-4.el7 libini_config.x86_64 0:1.3.1-29.el7 ? ? ? ?
  libnfsidmap.x86_64 0:0.25-19.el7 libpath_utils.x86_64 0:0.2.1-29.el7 libref_array.x86_64 0:0.1.5-29.el7 ? ? ? ? 
  libtirpc.x86_64 0:0.2.4-0.10.el7 libverto-libevent.x86_64 0:0.2.5-4.el7 quota.x86_64 1:4.01-17.el7 ? ? ? ? ? ? ? ? 
  quota-nls.noarch 1:4.01-17.el7 tcp_wrappers.x86_64 0:7.6-77.el7 ? ? ? ? ? ?
更新完毕:
  selinux-policy.noarch 0:3.13.1-192.el7_5.6 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
作为依赖被升级:
  policycoreutils.x86_64 0:2.5-22.el7 selinux-policy-targeted.noarch 0:3.13.1-192.el7_5.6 ? ? ? ? ? ? ? ? ? ? ?
完毕!

服务器端安装nfs的配置,在配置文件中写入nfs的分享目录的配置,并创建分享的目录,这两类分享的是web网站目录,为了便捷访问,把其权限设置为777

[[email protected] ~]# cat /etc/exports
/data/wwwroot/aaa/ 192.168.1.234/24(rw,sync,all_squash,anonuid=100,anongid=100)
[[email protected] ~]# ll -d /data/wwwroot/aaa/
drwxrwxrwx 4 root root 185 8月 15 23:48 /data/wwwroot/aaa/

NFS的分享享权限

rw  读写
ro ? 只读
rync ? 同步模式,内存数据实时写入磁盘
async  非实时同步模式
no_root_squash ? 客户端挂载NFS共享目录后,root用户不受权限约束,对分享的目录相当于用root权限来操作
root_squash ? 客户端挂载使用分享的目录会受到约束,其权限会被限制为服务器端的一个普通用户
all_squash ? 客户端上所有用户在使用NFS分享的目录时都会被限制为一个普通用户
anonuid/anongid ? 和root_squash、all_squash配合使用,指定限制用户的uid和gid

在服务器端启动nfs和rpcbind,并把NFS和rpcbind加入开机启动当中
[[email protected] ~]# systemctl start rpcbind
[[email protected] ~]# systemctl start nfs
[[email protected] ~]# systemctl enable rpcbind
[[email protected] ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
查看rpcbind监听的端口,rpcbind监听111端口

[[email protected] ~]# ps -aux |grep rpcbind
rpc 17079 0.0 0.1 65008 1424 ? Ss 01:33 0:00 /sbin/rpcbind -w
root 17193 0.0 0.0 112724 976 pts/1 R+ 01:39 0:00 grep --color=auto rpcbind
[[email protected] ~]# netstat -ntlp |grep rpcbind
tcp ? ?0 ? ?0 0.0.0.0:111 ? ? ?0.0.0.0:* ? ? ? ? LISTEN ? ? ?17079/rpcbind 
tcp6 ? 0 ? ?0 :::111 ? ? ? ? ? :::* ? ? ? ? ? ?  LISTEN ? ? ?17079/rpcbind ? ? 

查看NFS启动进程,NFS并不监听端口,是通过rpcbind监听端口来提供服务的,所以NFS依赖rpc这个协议来对外提供访问

[[email protected] ~]# ps -axu |grep nfs
root 17135 0.0 0.0 0 0 ? S< 01:33 0:00 [nfsd4_callbacks]
root 17141 0.0 0.0 0 0 ? S 01:33 0:00 [nfsd]
root 17142 0.0 0.0 0 0 ? S 01:33 0:00 [nfsd]
root 17143 0.0 0.0 0 0 ? S 01:33 0:00 [nfsd]
root 17144 0.0 0.0 0 0 ? S 01:33 0:00 [nfsd]
root 17145 0.0 0.0 0 0 ? S 01:33 0:00 [nfsd]
root 17146 0.0 0.0 0 0 ? S 01:33 0:00 [nfsd]
root 17147 0.0 0.0 0 0 ? S 01:33 0:00 [nfsd]
root 17148 0.0 0.0 0 0 ? S 01:33 0:00 [nfsd]
root 17196 0.0 0.0 112724 976 pts/1 R+ 01:40 0:00 grep --color=auto nfs

NFS配置选项

在服务端查看nfs分享目录的配置,使用vim编辑/etc/exports这个文件,把分享的目录设定访问权限

[[email protected] ~]# cat /etc/exports
/data/wwwroot/aaa/ 192.168.1.0/24(rw,sync,all_squash,anonuid=100,anongid=100)
使用showmount可以在客户端查看NFS分享的目录信息 ??showmount -e
[[email protected] ~]# showmount -e 192.168.1.234
Export list for 192.168.1.234:
/data/wwwroot/aaa 192.168.1.234/24

NFS分享目录的权限配置

rw 读写
ro 只读
rync 同步模式,内存数据实时写入磁盘
async 非实时同步模式
no_root_squash 客户端挂载NFS共享目录后,root用户不受权限约束,对分享的目录相当于用root权限来操作
root_squash 客户端挂载使用分享的目录会受到约束,其权限会被限制为服务器端的一个普通用户
all_squash 客户端上所有用户在使用NFS分享的目录时都会被限制为一个普通用户
anonuid/anongid 和root_squash、all_squash配合使用,指定限制用户的uid和gid

挂载nfs分享的目录,使用df -h可以看到客户端上挂载的网络目录路径,卸载使用umount

[[email protected] ~]# mount -t nfs 192.168.1.234:/data/wwwroot/aaa /mnt
[[email protected] ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 15G 3.3G 82% /
devtmpfs 487M 0 487M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 38M 459M 8% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 197M 108M 89M 55% /boot
tmpfs 100M 0 100M 0% /run/user/0
192.168.1.234:/data/wwwroot/aaa 18G 6.5G 12G 37% /mnt

exportfs命令

NFS在添加新的共享路径时需要重启服务,但是在重启服务的时候客户端可能会正在读写文件,如果这时候发生重启,可能会导致使用nfs的某些进程被挂起,使用ps查看是D符号表示,挂起进程不仅会停止正常服务,还有可能会造成系统崩溃,所以在nfs增加新配置时,我们需要平滑重启加载配置的操作
exportfs常用操作
-a ?全部挂载或全部卸载
-r ?重新挂载
-u ?卸载某一目录
-v ?显示共享目录
在服务器端新添加一个共享目录

[[email protected] ~]# cat /etc/exports
/data/wwwroot/aaa/ 192.168.1.0/24(rw,sync,all_squash,anonuid=100,anongid=100)
/data/wwwroot/b/ 192.168.1.223(rw,sync,no_root_squash)

exportfs重新加载配置

[[email protected] ~]# exportfs -arv
exporting 192.168.1.223:/data/wwwroot/b
exporting 192.168.1.0/24:/data/wwwroot/aaa

在客户端使用showmount查看加载的配置,第一次为在服务器端未重新加载nfs的配置,第二次为加载配置后的showmount

[[email protected] ~]# showmount -e 192.168.1.234
Export list for 192.168.1.234:
/data/wwwroot/aaa 192.168.1.0/24
[[email protected] ~]# showmount -e 192.168.1.234
Export list for 192.168.1.234:
/data/wwwroot/aaa 192.168.1.0/24
/data/wwwroot/b 192.168.1.223

测试;在客户端挂载nfs的新共享目录

[[email protected] /]# mount -t nfs 192.168.1.234:/data/wwwroot/b /media/
[[email protected] /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 15G 3.3G 82% /
devtmpfs 487M 0 487M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 38M 459M 8% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 197M 108M 89M 55% /boot
tmpfs 100M 0 100M 0% /run/user/0
192.168.1.234:/data/wwwroot/aaa 18G 6.5G 12G 37% /mnt
192.168.1.234:/data/wwwroot/b 18G 6.5G 12G 37% /media

在客户端创建文件,查看nfs是否限制root权限读写
挂载的客户端创建一个文件

[[email protected] /]# cd /media/
[[email protected] media]# ls
index.html index.php sleep.php
[[email protected] media]# touch 11.html
[[email protected] media]# ll -h 11.html 
-rw-r--r-- 1 root root 0 8月 18 2018 11.html

服务器端查看这个新创建的文件是什么权限

[[email protected] ~]# cd /data/wwwroot/b/
[[email protected] b]# ll -h 11.html 
-rw-r--r-- 1 root root 0 8月 18 03:59 11.html

在nfs共享中,使用no_root_squash配置比较多

nfs网络文件系统详解(代码片段)

...1章NFS基本概述1.1什么是nfsNFS是NetworkFileSystem的缩写及网络文件系统。主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS系统和Windows网络共享、网络驱动器类似,只不过windows用于局域网,NFS用于企业集群架构... 查看详情

nfs(代码片段)

...应用场景。2.nfs工作机制2.1RPC2.2NIS2.3nfs工作机制。3.exports文件的格式。4.nfs管理1.nfs简介1.1nfs特点●NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/P网络共享资源●在NFS的... 查看详情

nfs详解(代码片段)

1、NFS介绍NFS是NetworkFileSystem的简写,即网络文件系统,NFS是FreeBSD支持的文件系统中的一种。NFS基于RPC(RemoteProcedureCall)远程过程调用实现,其允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序就可以像访问... 查看详情

红帽7nfs(网络文件系统)(代码片段)

NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件, RHEL7系统中默认已经... 查看详情

1.nfs服务配置(代码片段)

[toc]NFS服务配置一、NFS介绍1.1NFS文件系统什么是文件系统,NFS文件系统又是什么?简单的说,文件系统就是通过软件对磁盘上的数据进行组织和管理的一种机制,对其的一种封装或透视。NFS,NetworkFileSystem。顾名思义,网络文件... 查看详情

security-centos7下nfs使用与配置(代码片段)

NFS是NetworkFileSystem的缩写,即网络文件系统。客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下。nfs为什么需要RPC?因为NFS支持的功能很多,不同功能会使用不同程序来启动,因此,NFS对应的功能所对应的端口... 查看详情

nfs共享存储服务(代码片段)

NFS是NetworkFileSystem的简写,即网络文件系统,网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS.NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。... 查看详情

centos7部署nfs网络文件系统(代码片段)

NFS(NetworkFileSystem),即网络文件系统。NFS服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使用本地主机(Linux客户端)像使用本地资源那样读写远程Linux系统上的共享资源。表1:系统环境主机名称操作... 查看详情

nfs网络文件系统详解(代码片段)

...1章NFS基本概述1.1什么是nfsNFS是NetworkFileSystem的缩写及网络文件系统。主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS系统和Windows网络共享、网络驱动器类似,只不过windows用于局域网,NFS用于企业集群架构... 查看详情

nfs网络文件系统(代码片段)

NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,他允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一... 查看详情

nfs文件系统及搭建nfs共享服务(代码片段)

一、什么是文件系统?  文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。文件系统是在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区上组织文件方式方法,常见文件系统如ext2、ext3、ext4、NTFS... 查看详情

nfs网络文件系统(代码片段)

实验环境:VMwareWorkstationPro14(试用版)系统平台:CentOSLinuxrelease7.4.1708(Core)内核3.10.0-693.el7.x86_64NFS配置介绍软件包nfs-utils端口2049(nfsd),其它端口由rpcbind(111)分配工作过程NFS启动时,会将所使用的端口向rpcbind注册,当有客户端访问... 查看详情

nfs系统的搭建(代码片段)

...博客,防止以后再次使用的时候,能够很快得重新建立NFS文件系统。调研:   NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本... 查看详情

nfs及rpc讲解(代码片段)

NFS(NetworkFileSystem)即网络文件系统,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间... 查看详情

nfs(代码片段)

...错误的地方,请帮忙指出,感激不尽 NFS简介NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Li... 查看详情

3-nfs-共享存储(代码片段)

一,NFS概述1.什么是nfs?  NFS(NetworkFileSystem)即网络文件系统。NFS共享存储2.nfs能干什么?  主要功能:通过网络(局域网)让不同的主机系统之间可以共享文件或目录。3.为什么要使用nfs?  NFS网络文件系统一般被用来存储... 查看详情

网络文件共享服务-nfs(代码片段)

NFS服务NFS:NetworkFileSystem网络文件系统,基于内核的文件系统。Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(RemoteProcedureCallProtocol远程过程调用)实现RPC:采用C/S模式。客户机... 查看详情

nfs共享储存服务部署(代码片段)

NFS是一种基于TCP/IP传输的网络文件系统协议,最初由SUN公司开发,通过使用NFS协议,NFS客户机可以向访问本地目录一样访问远程NFS服务器中的共享资源。大多数负载均衡群集都使用NFS协议。NFS网络文件系统一般被用来存储共享视... 查看详情