简介
NFS(Network File System)即网络文件系统,它的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件
nfs特点
在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
nfs不仅适用于Linux与Unix之间实现文件共享,也能实现Linux与Windows间的文件共享功能
nfs是运行在应用层的协议,其监听于2049/tcp和2049/udp套接字上(固定端口是2049,nfs还会开启很多端口,而且这些端口不固定)
客户端认证是基于IP地址(没有用户名和密码的说法),这也是它的缺点之一
NFS网络文件系统一般用来存储共享视频、图片、附件,用户家目录等资源文件
nfs的应用场景
nfs有很多实际应用场景,以下是一些常用的场景:
多个机器共享一台CDROM或其他设备。这对于在多台机器中安装软件来说更加便宜与方便。
在大型网络中,配置一台中心NFS服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。
不同客户端可在NFS上观看影视文件,节省本地空间。
在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下
架构图
首先服务器端启动RPC服务,并开启111端口。
服务器端启动NFS服务,并向RPC注册端口信息。
客户端启动RPC,向服务端的RPC服务请求服务端的NFS端口。
服务端的RPC服务反馈NFS端口信息给客户端。
客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输
nfs配置
服务安装
//安装rpc和nfs服务
[root@server ~]# yum -y install rpcbind nfs-utils
//启动服务,同样启动两个服务,注意启动顺序
[root@server ~]# systemctl start rpcbind nfs-server
配置nfs输出目录
//创建共享目录,/hzz目录可读可写,/zzh目录只读
[root@server ~]# mkdir /lzx
[root@server ~]# mkdir /lzx
//配置共享目录的访问权限,针对客户端访问的用户设置
[root@server ~]# chmod 777 /lzx/
[root@server ~]# chmod 755 /lzx/
//编辑配置文件,配置共享目录
[root@server ~]# vim /etc/exports
/zrz 192.168.14.50/24(rw)
/zzz 192.168.14.50/24(ro)
//服务端重启服务
[root@server ~]# systemctl restart nfs-server
//在客户端挂载共享目录,先创建挂载点
[root@client ~]# mkdir /mnt/lzx
[root@client ~]# mkdir /mnt/lzx
//客户端也要安装nfs才能挂载
[root@client ~]# yum -y install rpcbind nfs-utils
//使用mount命令挂载
[root@client ~]# mount -t nfs 192.168.14.51:/zrz /mnt/lzx/
[root@client ~]# mount -t nfs 192.168.14.51:/zzz /mnt/lzx/
//永久挂载
[root@client ~]# vim /etc/fstab
192.168.14.51:/lzx /mnt/lzx nfs defaults,_netdev 0 0
192.168.14.51:/lzx /mnt/lzx nfs defaults,_netdev 0 0
//查看挂载情况
[root@client ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.7M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 183M 0 183M 0% /run/user/0
192.168.14.51:/lzx 17G 1.1G 16G 7% /mnt/lzx
192.168.14.51:/lzx 17G 1.1G 16G 7% /mnt/lzx
案例
开放/nfs/shared目录,供所有用户查阅资料
// 服务端与客服端下载安装nfs
[root@service ~]# yum -y install nfs-utils
[root@client ~]# yum -y install nfs-utils
// 关闭防火墙与selinux
[root@service ~]# systemctl disable --now firewalld.service
[root@service ~]# setenforce 0
[root@client ~]# systemctl disable --now firewalld.service
[root@client ~]# setenforce 0
//创建共享目录
[root@service ~]# vim /etc/exports
[root@service ~]# cat /etc/exports
/nfs/shared
[root@service ~]# mkdir -p /nfs/shared
[root@service ~]# systemctl restart nfs-server.service
//客服端进行挂载
[root@client ~]# showmount -e 192.168.14.50
Export list for 192.168.14.50:
/nfs/shared *
[root@client ~]# mount -t nfs 192.168.14.50:/nfs/shared /lzx
// 测试
[root@service shared]# cd /nfs/shared/
[root@service shared]# touch zhen // 在服务端创建一个文件
[root@client lzx]# ls // 客服端查看
zhen
// 创建目录
[root@service ~]# mkdir /nfs/upload
// 创建用户且UID与GID均为300
[root@service ~]# useradd -r -u 300 nfs-upload
[root@service ~]# id nfs-upload
uid=300(nfs-upload) gid=300(nfs-upload) 组=300(nfs-upload)
// 编辑共享目录
[root@service ~]# vim /etc/exports
[root@service ~]# cat /etc/exports
/nfs/upload 192.168.14.0/24(rw,anonuid=300,anongid=300,sync)
// 重启nfs-server.service
[root@service ~]# systemctl restart nfs-server.service
// 更改所属的用户组
[root@service ~]# chown nfs-upload.nfs-upload /nfs/upload
[root@service ~]# ll /nfs/
总用量 0
drwxr-xr-x. 2 root root 29 9月 24 20:47 shared
drwxr-xr-x. 2 nfs-upload nfs-upload 6 9月 24 20:47 upload
// 客服端进行挂载
[root@client lzx]# showmount -e 192.168.14.50
Export list for 192.168.14.50:
/nfs/upload 192.168.14.0/24
[root@client ~]# mkdir /opt/l
[root@client l]# mount -t nfs 192.168.14.50:/nfs/upload /opt/l/
// 测试
[root@service ~]# cd /nfs/upload/
[root@service upload]# touch yy
[root@client z]# ls
yy