1. 环境说明
角色 | ip | os |
NFS 服务端 | 172.31.0.12 | CentOS 7.6 |
NFS 客户端 | 172.18.0.7 | CentOS 7.6 |
2. NFS 服务端
2.1 安装 nfs-utils
# rpcbind 作为依赖会自动安装。 > yum install nfs-utils
2.2 配置并启动服务
允许rpcbind.service、nfs.service开机自启:
# 启动相关服务 > systemctl start rpcbind > systemctl start nfs
防火墙允许服务通过:
# 防火墙允许服务通过 > firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs} success > firewall-cmd --reload success
或者直接关闭防火墙:systemctl stop firewalld
2.3 配置共享目录
例如需要共享的目录为/mnt/nfs/
:
# 创建 /mnt/kvm 并修改权限 > cd /mnt /mnt > mkdir nfs /mnt > chmod 755 nfs # 验证目录权限 /mnt > ls -l total 0 drwxr-xr-x 2 root root 59 Oct 17 17:49 nfs
之后修改/etc/exports
,将/mnt/nfs/
添加进去:
> cat /etc/exports # 1. 只允许 abelsu7-ubuntu 访问 /mnt/nfs/ abelsu7-ubuntu(rw,sync,no_root_squash,no_all_squash) # 2. 根据 IP 地址范围限制访问 /mnt/nfs/ 172.0.0.0/8(rw,sync,no_root_squash,no_all_squash) # 3. 使用 * 表示访问不加限制 /mnt/nfs/ *(rw,sync,no_root_squash,no_all_squash)
关于/etc/exports
中的参数含义:
/mnt/kvm/
:需要共享的目录172.0.0.0/8
:客户端 IP 范围,*
表示无限制rw
:权限设置,可读可写sync
:表示文件同时写入硬盘和内存no_root_squash
:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份no_all_squash
:可以使用普通用户授权(??)
保存之后,重启nfs
服务:
> systemctl restart nfs
2.4 查看共享目录列表
[root@VM-0-12-centos mnt]# showmount -e localhost Export list for localhost: /mnt/nfs 172.0.0.0/8
3. NFS 客户端
3.1 安装 nfs-utils
# CentOS/Fedora, etc. > yum install nfs-utils # Ubuntu/Debian, etc. > apt install nfs-common
必须要安装nfs-utils,安装过程会下载关键命令到本机,例如showmount
等等。
3.2 配置并启动服务(非必须步骤)
开启
rpcbind
服务不是必须的,经过实测只要安装了nfs-utils到本机,就可以实现挂载。设置rpcbind
服务开机启动:
> systemctl enable rpcbind
启动rpcbind
:
> systemctl start rpcbind
客户端不需要打开防火墙,也不需要开启 NFS 服务
3.3 挂载共享目录
先查看服务端的共享目录:
[root@k8s-node1 mnt]# showmount -e 172.31.0.12 Export list for 172.31.0.12: /mnt/nfs 172.0.0.0/8
在客户端创建并挂载对应目录:
> mkdir -p /mnt/nfs > mount -t nfs 172.31.0.12:/mnt/nfs /mnt/nfs
最后检查一下是否挂载成功:
[root@k8s-node1 mnt]# df -hT /mnt/nfs Filesystem Type Size Used Avail Use% Mounted on 172.31.0.12:/mnt/nfs nfs4 493G 72M 467G 1% /mnt/nfs
[root@k8s-node1 mnt]# mount | grep /mnt/nfs 172.31.0.12:/mnt/nfs on /mnt/nfs type nfs4 (rw,relatime,vers=4.1,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.18.0.7,local_lock=none,addr=172.31.0.12)
3.4 配置自动挂载
在客户端编辑/etc/fstab,加入如下配置:
172.31.0.12:/mnt/nfs /mnt/nfs nfs defaults 0 0
最后重新加载systemctl
,即可实现重启后自动挂载
> systemctl daemon-reload
4. NFS 读写速度测试
写速度:
[root@k8s-node1 mnt]# time dd if=/dev/zero of=/mnt/nfs/jenkins.war bs=8k count=1024 1024+0 records in 1024+0 records out 8388608 bytes (8.4 MB) copied, 0.122319 s, 68.6 MB/s real 0m0.138s user 0m0.000s sys 0m0.008s
读速度:
[root@k8s-node1 mnt]# time dd if=/mnt/nfs/jenkins.war of=/dev/null bs=8k count=1024 1024+0 records in 1024+0 records out 8388608 bytes (8.4 MB) copied, 0.0020144 s, 4.2 GB/s real 0m0.004s user 0m0.000s sys 0m0.002s