NFS简介
NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件(share files)。这个NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。
NFS一般用来存储共享视频,图片等静态数据
NFS工作原理
在传输时使用的端口是随机的未被使用<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