NFS文件系统
NFS简介
NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件(share files)。这个NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。
NFS一般用来存储共享视频,图片等静态数据
NFS工作原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jFfl18KH-1616049242820)(C:\Users\Mr.L\Desktop\博客images\NFS文件系统image\1.jpg)]
在传输时使用的端口是随机的未被使用<1024的端口,他是通过RPC(远程过程调用)服务来实现的。
RPC的主要功能就是记录每个NFS功能所对应的端口号,并且将该信息传到NFS客户端,来实现连接。
启动NFS server之前,首先要启动RPC服务(即portmap服务),否则nfs server就无法向RPC服务注册。
注意:
如果RPC服务重新启动,原来已注册好的NFS端口数据就会丢失,因此,此时RPC服务管理的NFS程序也需要重新启动以重新向RPC注册。
NFS权限设置
NFS配置权限设置,即/etc/exports文件配置格式中小括号()里的参数集。
参数命令 | 参数用途 |
---|---|
rw | Read-write表示可读写 |
ro | Read-only表示只能读权限 |
Sync | 同步模式,请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回。优点:数据安全不会丢;缺点:性能比不启用该参数要差 |
no_root_squash | 访问NFS Server共享目录的用户是root的话,它对该共享目录具有root权限。这个配置原本是为无盘客户端准备的。用户应避免使用。 |
root_squash | 如果访问NFS Server共享目录的用户是root,则它的权限将被压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份 |
all_squash | 不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩成匿名用户,同时它的UID和GID都会变成nfsnobody账号身份。在早期多个NFS客户端同时读写NFS Server数据时,这个参数很有用 |
anonuid | 参数以anon开头即指anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多NFS Clients时,如多台Web Server共享一个NFS目录,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用,一般默认即可 |
anongid | 同anongid,就是把uid换成gid而已 |
配置文件
NFS 配置文件是 /etc/exports,内容如下:
[root@localhost ~]# cat /etc/exports
/data 192.168.100.10/32(rw,sync,all_squash,anonuid=1000,anongid=1000)
/home 192.168.100.20/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
# /data:指定要共享的目录
# 192.168.100.10/32:指定要共享给哪些客户端
# rw,sync,all_squash,.....:指定客户端的挂载选项
命令使用
客户端使用mount命令挂载
mount -t nfs NFS_SERVER:/PATH/TO/SOME_EXPORT /PATH/TO/SOMEWHRERE
exportfs
-
-a:跟-r或-u选项同时使用,表示重新挂载所有文件系统或取消导出所有文件系统;
-
-r: 重新导出
-
-u: 取消导出
-
-v: 显示详细信息
showmount
-
-e NFS_SERVER: 查看NFS服务器"导出"的各文件系统
-
-a NFS_SERVER: 查看NFS服务器所有被挂载的文件系统及其挂载的客户端对应关系列表
-
-d NFS_SERVER: 显示NFS服务器所有导出的文件系统中被客户端挂载了文件系统列表
rpcinfo
- -p :显示所有的 port 与 program 的信息
练习
环境说明
主机名称 | IP地址 | 系统版本 |
---|---|---|
客户端client | 192.168.153.10 | RHEl-8.2 |
服务端service | 192.168.153.11 | RHEL-8.2 |
准备工作
#在两台机器上进行操作,关闭selinx和防火墙
[root@client ~]# setenforce 0
[root@client ~]# systemctl stop firewalld
[root@service ~]# setenforce 0
[root@service ~]# systemctl stop firewalld
#在服务端操作
//安装nfs rpcbind
[root@service ~]# yum -y install nfs-utils rpcbind
//创建需要共享的abc文件
[root@service ~]# mkdir -p /leidazhuang/file
[root@service ~]# cd /leidazhuang/file/
[root@service file]# touch abc
//配置NFS服务端配置文件,此文件用于定义共享的目录及权限
[root@service ~]# vim /etc/exports
/leidazhuang/file 192.168.153.10 *(rw)
//启动服务
[root@service ~]# systemctl start nfs-server
[root@service ~]# systemctl start rpcbind
#在客户端操作
//安装showmount命令
[root@client ~]# yum -y install showmount
//显示NFS服务器列表
[root@client ~]# showmount -e 192.168.153.11
Export list for 192.168.153.11:
/leidazhuang/file (everyone)
//在本地创建一个挂载目录
[root@client ~]# mkdir /leidazhuang
手动挂载
//把192.168.153.11主机上的leidazhuang目录挂载在本机的leidazhuang目录上
[root@client ~]# mount 192.168.153.11:/leidazhuang /leidazhuang/
//查看目录,挂载完成,共享文件成功
[root@client ~]# cd /leidazhuang/
[root@client leidazhuang]# ls
file
[root@client leidazhuang]# cd file/
[root@client file]# ls
abc
//取消挂载,方便下面演示
[root@client ~]# umount /leidazhuang/
使用autofs自动挂载
#在客户端进行操作
//定义主配置文件
[root@client ~]# vim /etc/auto.master
#
# Sample auto.master file
# This is a 'master' automounter map and it has the following format:
# mount-point [map-type[,format]:]map [options]
# For details of the format look at auto.master(5).
#
/misc /etc/auto.misc
/media /etc/cdrom.misc
/leidazhuang /etc/ldaz.misc
//定义子配置文件
[root@client ~]# vim /etc/ldaz.misc
ldaz -rw 192.168.153.11:/leidazhuang
//重启autofs服务
[root@client ~]# systemctl restart autofs
//查看当前挂载情况
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 883M 0 883M 0% /dev
tmpfs 901M 0 901M 0% /dev/shm
tmpfs 901M 17M 884M 2% /run
tmpfs 901M 0 901M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 47G 1.9G 46G 4% /
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 181M 0 181M 0% /run/user/0
//进入目录触发挂载
[root@client ~]# cd /leidazhuang/ldaz
[root@client ldaz]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 883M 0 883M 0% /dev
tmpfs 901M 0 901M 0% /dev/shm
tmpfs 901M 17M 884M 2% /run
tmpfs 901M 0 901M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 47G 1.9G 46G 4% /
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 181M 0 181M 0% /run/user/0
192.168.153.11:/leidazhuang 47G 1.7G 46G 4% /leidazhuang/ldaz
//查看abc文件,成功自动挂载
[root@client ldaz]# ls
file
[root@client ldaz]# cd file/
[root@client file]# ls
abc