RHCE------NFS 一、概念 NFS是network file system的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件 ftp 双向传输;nfs 文件访问 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本端的系统中远程主机的目录就是自己的一个磁盘分区一样,使用相当便利 同一个挂载点可以连接多个设备(最后的文件系统),一个设备可以连接多个挂载点
文件共享的特点:挂载 网络文件系统:nfs4 TCP协议 二、NFS服务端和NFS客户端的通讯过程 RPC服务即远程调用,RPC最主要的功能就是在指定每个NFS功能所对应的port number,并且回报给客户端,让客户端可以连接到正确的端口上去(NFS无固定端口,随机端口2049) NFS支持功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个程序就会启用一些端口来传输数据,因此NFS端口并不固定 1.首先服务端启动RPC服务,并开启111端口(第一次、重启过后) 2.服务端启动NFS服务,并向RPC注册端口信息 3.客户端启动RPC,向服务端的RPC服务请求服务端的NFS服务 4.服务端的RPC服务来反馈NFS端口信息给客户端 5.客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输 注册端口---->达成协议(RPC)---->直接建立联系---->达成协议(客户端)---->建立连接 三、配置 1.服务端 安装 nfs-utils 软件包,关闭防火墙和selinux,开启服务 [root@localhost ~]# mount /dev/sr0 /mnt [root@localhost ~]# yum -y install nfs-utils [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 [root@localhost ~]# systemctl restart nfs-server 查看rpc程序是否开启(默认开启) [root@localhost ~]# systemctl status rpcbind Active: active (running) since Fri 2021-08-20 09:00:13 CST; 8h ago 关闭nfs服务,查看默认列表信息 [root@localhost ~]# systemctl stop nfs-server [root@localhost ~]# rpcinfo -p localhost -p指定主机查看信息 program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 45901 status 100024 1 tcp 50009 status 启动nfs服务,查看有哪些注册列表信息 [root@localhost ~]# systemctl restart nfs-server [root@localhost ~]# rpcinfo -p localhost program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 45901 status 100024 1 tcp 50009 status 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100021 1 udp 38063 nlockmgr 100021 3 udp 38063 nlockmgr 100021 4 udp 38063 nlockmgr 100021 1 tcp 45877 nlockmgr 100021 3 tcp 45877 nlockmgr 100021 4 tcp 45877 nlockmgr lsof 列出当前系统序打开文件的工具 [root@localhost ~]# lsof -i:111 -i 指定端口查看信息 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 36u IPv4 22449 0t0 TCP *:sunrpc (LISTEN) systemd 1 root 37u IPv4 22450 0t0 UDP *:sunrpc systemd 1 root 38u IPv6 22451 0t0 TCP *:sunrpc (LISTEN) systemd 1 root 39u IPv6 22452 0t0 UDP *:sunrpc rpcbind 927 rpc 4u IPv4 22449 0t0 TCP *:sunrpc (LISTEN) rpcbind 927 rpc 5u IPv4 22450 0t0 UDP *:sunrpc rpcbind 927 rpc 6u IPv6 22451 0t0 TCP *:sunrpc (LISTEN) rpcbind 927 rpc 7u IPv6 22452 0t0 UDP *:sunrpc netstat ss命令用于显示各种网络相关信息 [root@localhost ~]# netstat -tunlp [root@localhost ~]# netstat -tunlp | grep rpc
2.判断服务是否启动的方式 systemctl status httpd systemctl is-active httpd lsof -i:111(服务有指定端口) netstat -tunlp | grep sshd(服务有指定端口) ps -aux 3.服务配置文件 服务端138 [root@localhost ~]# vim /etc/exports #共享目录路径 共享的主机(ro/rw,参数信息) /pub *(ro) [root@localhost ~]# mkdir /pub 重新测试 [root@localhost ~]# exportfs -ar
客户端(相同的网络模式)139 [root@localhost ~]# hostname client [root@localhost ~]# bash [root@client ~]# mount 192.168.142.138:/pub /mnt 查看挂载信息显示列出 [root@client ~]# mount 192.168.142.138:/pub on /mnt type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.142.139,local_lock=none,addr=192.168.142.138) 更改新的文件系统权限 [root@client ~]# mount -o remount,ro /mnt [root@client ~]# mount 192.168.142.138:/pub on /mnt type nfs4 (ro,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.142.139,local_lock=none,addr=192.168.142.138) 测试权限
服务端138 [root@localhost ~]# hostname server [root@localhost ~]# bash [root@server ~]# cd /pub [root@server pub]# ll 总用量 0 [root@server pub]# touch {1…10}
客户端139 [root@client ~]# showmount -e 192.168.142.138 -e指定显示哪台主机的文件系统 Export list for 192.168.142.138: /pub * [root@client ~]# cd /mnt [root@client mnt]# ll 读取文件 总用量 0 -rw-r–r--. 1 root root 0 8月 21 08:13 1 -rw-r–r--. 1 root root 0 8月 21 08:13 10 -rw-r–r--. 1 root root 0 8月 21 08:13 2 -rw-r–r--. 1 root root 0 8月 21 08:13 3 -rw-r–r--. 1 root root 0 8月 21 08:13 4 -rw-r–r--. 1 root root 0 8月 21 08:13 5 -rw-r–r--. 1 root root 0 8月 21 08:13 6 -rw-r–r--. 1 root root 0 8月 21 08:13 7 -rw-r–r--. 1 root root 0 8月 21 08:13 8 -rw-r–r--. 1 root root 0 8月 21 08:13 9 [root@client mnt]# touch c1 创建文件 touch: 无法创建 ‘c1’: 只读文件系统
服务端138 [root@server pub]# vim /etc/exports #共享目录路径 共享的主机(ro/rw,参数信息) /pub *(rw) [root@server pub]# exportfs -ar [root@server pub]# ll -d drwxr-xr-x. 2 root root 97 8月 21 08:13 . [root@server pub]# chmod o+w .
客户端139 [root@client mnt]# touch c1 [root@client mnt]# id redhat uid=1004(redhat) gid=1004(redhat) 组=1004(redhat)
服务端138 [root@server pub]# id redhat uid=1004(redhat) gid=1004(redhat) 组=1004(redhat)
客户端139 [redhat@client mnt]$ cd /mnt [redhat@client mnt]$ touch red1 通过ll查看red1的用户身份为redhat 4.访问权限选项 rw 表示可读写 ro 表示只读权限 sync async 请求或者写入数据时,数据同步写入到NFS server的硬盘中后才会返回 root_squash 允许root身份映射 no_root_squash 取消root身份映射 all_squash 允许所有身份进行映射 no_all_squash 取消所有身份映射 anonuid anongid 用户映射的uid gid
案例:实现用户自定义信息 [root@server pub]# vim /etc/exports #共享目录路径 共享的主机(ro/rw,参数信息) /pub *(rw,all_squash,anonuid=1000,anongid=1000) [root@server pub]# exportfs -r
案例:架设一台NFS服务器,并按照以下要求配置 开放/nfs/shared目录,供所有用户查询资料 开放/nfs/upload目录,网段主机可以上传目录 并将所有用户即所属组映射为nfs-upload,其uid和gid均为210 1.分析配置什么服务,安装对应的服务包 nfs-utils 2.分析要求自定义配置信息 配置格式:共享目录 可以访问的主机(参数信息) vim /etc/exports /nfs/upload 192.168.142.0/24(rw,all_squash,anonuid=210,anongid=210) 3.根据配置在服务端创建资源信息 mkdir /nfs/upload -pv chmod o+w /nfs/upload touch /nfs/upload/{a…d} useradd -u 210 nfs-upload groupmod -g 210 nfs-upload 4.重启服务识别新配置 systemctl start nfs-server exportfs -ar 5.测试 showmount -e 服务器的ip useradd -u 210 nfs-upload groupmod -g 210 nfs-upload mount 192.168.142.138:/nfs/upload /mnt
|