先介召如何在 Ubuntu18.04 安装NFS, 以后有空在补CentOS 7的内容.
第一步当然是安装包啦
$ sudo apt-get update -u && sudo apt-get install -y nfs-kernel-server
$ sudo mkdir -p /home/ops/nfs/k8s
$ sudo mkdir -p /home/ops/nfs/tools
$ sudo chown nobody:nogroup /home/ops/nfs/k8s
$ sudo chown nobody:nogroup /home/ops/nfs/tools
$ sudo chmod 777 /home/ops/nfs/k8s
$ sudo chmod 777 /home/ops/nfs/tools
Create one if this file does not exist.
$ sudo touch /etc/exports
$ sudo vim /etc/exports
Append following lines to the file above:
/home/ops/nfs/k8s 192.168.0.0/16(rw,sync,no_subtree_check)
/home/ops/nfs/tools 192.168.0.0/16(rw,sync,no_subtree_check)
括号内的参数选项的意义列举如下(来源于网络):
参数 说明
rw 表示可读写
ro Read-only表示只能读权限
Sync 请求或者写入数据时,数据同步写入到NFS server的硬盘中后才会返回
no_root_squas 访问nfs server共享目录的用户如果是root的话,它对该目录具有root权限。这个配置原本为无盘用户准备的。用户应避免使用!
root_squash 对于访问NFS server共享目录的用户,如果是root的话会被压缩成为nobody用户身份。
all_squash 不管访问nfs server共享目录的用户身份如何包括root,它的权限都将被压缩成为匿名用户,同时他们的udi和gid都会变成nobody或nfsnobody账户的uid,gid。在多个nfs客户端同时读写nfs server数据时,这个参数很有用可以确保大家写入的数据的权限是一样的。
但不同系统有可能匿名用户的uid,gid不同。因为此处我们需要服务端和客户端之间的用户是一样的。比如说:服务端指定匿名用户的UID为2000,那么客户端也一定要存在2000这个账号才可以
$ sudo exportfs -a
exportfs命令参数不多,请执行 man exportfs 查看
最后为重启一下服务
$ sudo systemctl restart nfs-kernel-server
如果有防火墙的需要把防火墙打开
$ sudo apt-get update -y && sudo apt-get install -y nfs-common
$ sudo mkdir -p /data/nfs/tools
$ sudo mount 192.168.50.3:/home/ops/nfs/tools /data/nfs/tools
上面的命令在客户机重启的时候挂载目录就没了。要修改 /etc/fstab 文档,让机器重启后自动挂载.
修改 /etc/fstab, 在添加下面几行
192.168.50.3:/home/ops/nfs/tools /data/nfs/tools nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
关于上面这行各参数的解释,可以参考下面的link:
https://linoxide.com/file-system/understanding-each-entry-of-linux-fstab-etcfstab-file/