NFS工具包
- centos:nfs-utils
- ubuntu:nfs-kernel-server,
配置文件
# 配置文件路径
/etc/exports
/etc/exports.d/*.exports
# 配置文件格式
共享目录路径 共享目标IP(共享权限选项)
/dir IP(选项参数)
# 主机名支持通配符等
*.wuvikr.com
server?.wuvikr.com
server[0-9].wuvikr.com
# IP支持网段
10.0.0.0/24
10.0.0.0/255.255.255.0
# 共享选项参数
默认选项:(ro,sync,root_squach,no_all_squash)
ro 只读
rw 读写
async 异步
sync 同步
root_squash 远程root用户映射为UID&GID=65534的匿名用户,centos7及之前为nfsnobody,centos8为nobody
no_root_squash 远程root用户映射为本机的root用户
all_squash 所有远程用户映射为UID&GID=65534的指定用户
no_all_squash 保留使用远程用户的UID和GID
anonuid/anongid 指明映射的特定用户UID和GID,默认为UID&GID=65534的匿名用户
# 举例:
/data/dir1 10.0.0.10(rw,sync,no_subtree_check,root_squash,no_all_squash)
/data/dir2 *.wuvikr.top(ro,async,all_squash)
# 启动nfs服务
systemctl start nfs-server.service
exprotfs命令
# 常用选项
-v 查看NFS共享
-r 重新加载配置文件并生效
-a 开启所有共享
-au 暂停所有共享
showmount命令
# 常用选项
-e 显示NFS服务器所有共享目录
-d 仅显示已被客户端加载的目录
客户端NFS挂载相关
fg 前台挂载
bg 后台挂载
hard 如果没有挂载成功,持续请求挂载
intr 配合hard选项,请求可被中断(ctrl+c)
soft 如果没有挂载成功,就中断挂载
_netdev 如果没有网络连接则不是挂载
vers 指定版本
# 临时挂载
mount -o rw,nosuid,fg,hard,intr 172.16.1.100:/data/dir1 /mnt/dir1
# 开机挂载
vim /etc/fstab
172.16.1.100:/data/dir1 /mnt/dir1 nfs defaults,_netdev 0 0
# 如果NFS服务没有开启rw权限的话,进行读写操作的时候会有以下报错。
[root@centos7 dir1]#touch aa.txt
touch: cannot touch ‘aa.txt’: Read-only file system
# NFS服务给了rw权限,读写还是报错,但错误变为权限不允许。
[root@centos7 dir1]#touch 222.txt
touch: cannot touch ‘222.txt’: Permission denied
# 这是因为本地账号读写文件时会被映射为NFS服务器上的匿名账户
# 查看下/data/dir目录可以发现,远程用户对本目录来说属于其他用户
[root@centos7 ~]#ll /data/
total 2
drwxrwxr-x 3 root root 18 Nov 5 15:15 dir1
# 最简单的方法就是将该目录的权限设为777,但是这样做不是很安全,建议使用setfcl精准授权
chmod -R 777 /data/dir1
setfacl -R -m u:nfsnobody:rwx /data/dir1
autofs自动挂载服务
配置文件:/etc/auto.master
配置自动挂载
例:将172.16.1.100:/data/dir1挂载到本机的/data/dir1/dir2路径下
-
方法一:相对路径式
vim /etc/auto.master # 文件格式 挂载点的dirname 该dirname的子配置文件路径 /data/dir1 /etc/auto.dir1 vim /etc/auto.dir1 # 文件格式 挂载点的basename 文件类型 设备路径 dir2 -fstype=nfs 172.16.1.100:/data/dir1
-
方法二:绝对路径式
vim /etc/auto.master # 文件格式 /- 子配置文件路径 /- /etc/auto.dir1 vim /etc/auto.dir1 # 文件格式 挂载点绝对路径 文件类型 设备路径 /data/dir1/dir2 -fstype=nfs 172.16.1.100:/data/dir1