目录
一.NFS的原理
- NFS(NetworkFileSystem),即网络文件系统,网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS。NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
- NFS是基于TCP/IP传输的网络文件系统协议。
- 通过使用NFS协议,NFS客户机可以像访问本地目录一样访问远程NFS服务器中共享资源。
- 对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法。
- NFS也是NAS存储设备必然支持的一种协议,NFS没有用户认证机制,而且数据在网上明文传输,所以安全性比较差,一般只能在局域网中使用。
二.NFS的应用场景
- 在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片等静态资源文件。
- NFS服务的实现依赖于RPC(remote process call,远端过程调用)机制,RPC在NFS的服务端和客户端充当中介,以完成远程到本地的映射过程。
- 在centos7中一般都已经安装好nfs-utils安装包(用于NFS共享的发布和访问),rpcbind安装包(用于RPC的支持)。
三.NFS共享存储的实验步骤
- 在服务端添加一块新的磁盘,格式化且挂载
[root@192 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242624, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@192 ~]# mount /dev/sdb1 /mnt
[root@192 ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 10G 4.3G 5.8G 43% /
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.2M 481M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda3 xfs 4.0G 39M 4.0G 1% /home
/dev/sda1 xfs 4.0G 158M 3.9G 4% /boot
tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs tmpfs 98M 20K 98M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 xfs 20G 33M 20G 1% /mnt
- 确认nfs-utils和rpcbind安装包
[root@192 ~]# rpm -q nfs-utils
nfs-utils-1.3.0-0.48.el7.x86_64
[root@192 ~]# rpm -q rpcbind
rpcbind-0.2.0-42.el7.x86_64
[root@192 ~]#
- 在NFS的配置文件/etc/exports中,设置共享资源
- 配置参数格式为:新磁盘的挂载点 客户端的IP地址/或者网段地址(权限选项)
- 权限选项之中rw表示允许读写(ro为只读),sync表示同步写入,no_root_squash表示当客户端以root身份访问时赋予本地root权限,此外默认是root_squash,将作为nfsnobody用户降权对待
- 当需要将同一个目录共享给不同的客户端,且分配不同的权限时,只要以空格分隔指定多个“客户端IP地址(权限选项)”即可。
[root@192 ~]# vim /etc/exports
/mnt 192.168.43.132(rw,sync,no_root_squash)
- 开启服务,关闭防火墙和安全性功能
root@192 ~]# systemctl start nfs
[root@192 ~]# systemctl start rpcbind
[root@192 ~]# systemctl stop firewalld
[root@192 ~]# setenforce 0
[root@192 ~]#
- 验证服务端,共享目录
[root@192 ~]# showmount -e
Export list for 192.168.43.133:
/mnt 192.168.43.132
[root@192 ~]#
- 在客户端查看是否又nfs-utils和rpcbind安装包,在开启服务,关闭防火墙
[root@localhost ~]# rpm -q nfs-utils
nfs-utils-1.3.0-0.48.el7.x86_64
[root@localhost ~]# rpm -q rpcbind
rpcbind-0.2.0-42.el7.x86_64
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]#
- 查看服务端共享的目录
[root@localhost ~]# showmount -e 192.168.43.133
Export list for 192.168.43.133:
/mnt 192.168.43.132
[root@localhost ~]#
- 在客户端挂载NFS共享目录
[root@localhost ~]# mount 192.168.43.133:/mnt /opt
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 20G 4.3G 16G 22% /
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.8M 481M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot
tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs tmpfs 98M 32K 98M 1% /run/user/0
192.168.43.133:/mnt nfs4 20G 33M 20G 1% /opt
[root@localhost ~]#
注:本实验中都是使用手动挂载,在系统重启之后就会失效,可以使用自动挂载,在/etc/fstab中配置挂载参数,mount -a 更新参数,则可以一直挂载。