1. NFS简介
Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed. NFS, like many other protocols, builds on the Open Network Computing Remote Procedure Call (ONC RPC) system. NFS is an open IETF standard defined in a Request for Comments (RFC), allowing anyone to implement the protocol.
参考文档:
2. CentOS中安装NFS
2.1. 安装nfs-server
作为存储节点的主机安装nfs-server,本节中的存储节点主机IP为192.168.56.101。
参考文档:
1、关闭防火墙
1 | systemctl stop firewalld.service |
2、安装nfs(包括nfs-server和nfs-client)
1 | yum install -y nfs-utils rpcbind |
3、创建共享目录,设置共享目录权限
1 | mkdir -p /data/nfs |
4、配置共享目录
1 | echo '/data/nfs *(insecure,rw,sync,no_root_squash)' >> /etc/exports |
5、启动nfs-server
1 | systemctl enable rpcbind |
6、检查nfs状态
1 | exportfs |
7、查看目录挂载权限
1 | cat /var/lib/nfs/etab |
2.2. 安装nfs-client
在需要挂载nfs的主机上安装nfs-client,本节中主机IP为192.168.56.102。
1、关闭防火墙
1 | systemctl stop firewalld.service |
2、安装nfs(包括nfs-server和nfs-client)
1 | yum install -y nfs-utils rpcbind |
3、启动nfs-client
1 | systemctl enable rpcbind |
2.3. 测试nfs挂载
192.168.56.102机器上,测试nfs挂载。
1、检查101是否有nfs共享目录
1 | showmount -e 192.168.56.101 |
2、挂载nfs共享目录到本机
1 | mkdir /data/mntnfs |
3、测试读写文件
102机器读写文件
1 | echo "test" > /data/mntnfs/test.txt |
101机器读文件
1 | cat /data/nfs/test.txt |
4、配置自动挂载
1 | cat <<EOF | tee -a /etc/fstab |
3. Ubuntu中安装NFS
3.1. 安装nfs-server
作为存储节点的主机安装nfs-server,本节中的存储节点主机IP为192.168.56.103。
1、安装nfs-server
1 | apt-get -y install nfs-kernel-server |
2、创建共享目录,设置共享目录权限
1 | mkdir -p /data/nfs |
3、配置共享目录
1 | # echo '/data/nfs *(rw,sync,no_root_squash)' >> /etc/exports |
4、启动nfs-server,配置开机自启动
1 | # service nfs-kernel-server restart |
5、检查nfs状态
1 | exportfs |
3.2. 安装nfs-client
在需要挂载nfs的主机上安装nfs-client,本节中主机IP为192.168.56.104。
安装nfs-client
1 | apt-get install nfs-common |
3.3. 测试nfs挂载
192.168.56.104机器上,测试nfs挂载。
1、检查103是否有nfs共享目录
1 | showmount -e 192.168.56.103 |
2、挂载nfs共享目录到本机
1 | mkdir /data/mntnfs |
3、测试读写文件
104机器读写文件
1 | echo "test" > /data/mntnfs/test.txt |
103机器读文件
1 | cat /data/nfs/test.txt |
4、配置自动挂载
1 | cat <<EOF | tee -a /etc/fstab |
4. NFS高可用
上文中,我们搭建的nfs-server都是单节点的,如果节点挂掉,会造成很多依赖它的软件不可用。如果节点数据丢失,更是一场灾难。因此,生产环境最好搭建nfs高可用环境。
参考文档:
5. NFS重叠挂载
已知NFS的共享和挂载情况如下:
- 主机1通过NFS对外共享了其本地的 /data 目录。
- 主机2通过NFS对外共享了其本地的 /data 目录。
- 主机1的 /data/subdata 目录通过NFS挂载了主机2共享的 /data 目录。
- 主机3的 /data 目录挂载了主机1共享的 /data 目录。
当主机3 /data 目录时,如果其访问的路径深入到了/data/subdata,在这种特殊的设置下,主机3实际上通过主机1中的重叠挂载,间接地访问了主机2的/data目录。
这种场景是通过NFS的转发和重叠挂载功能实现的:
- 当主机1收到针对 /data/subdata 目录的NFS请求时,它会将这些请求转发给主机2。
- 主机2接收到请求后,会像处理任何NFS请求一样处理这些转发过来的请求,返回相应的数据。
注意:不是所有的NFS配置都默认支持这种重叠挂载转发行为。某些NFS版本和实现(特别是较早的版本)可能不支持这样的设置或需要特殊的配置参数来启用重叠挂载的转发。例如,NFSv4协议引入了重叠挂载和委托功能的改进,但是在使用时仍然需要注意初始NFS共享和客户端挂载的正确配置。