NFS服务的配置
NFS服务器配置文件
NFS服务器共享目录配置文件为/etc/exports
,此文件的语法结构如下:
共享目录的绝对路径 客户端地址1(选项) 客户端地址2(选项) ...
NFS服务器在共享一个目录的时候,客户端选项部分定义允许哪些主机可以访问此共享目录,客户端地址与选项之间没有空格。
例如:
/share 172.16.2.0/24(rw) 172.16.1.100(ro)
这表示/share
目录共享给172.16.2.0网段内的所有主机具有读写权限,同时共享给172.16.1.100主机具有只读权限。
客户端地址格式说明
客户端地址 | 说明 |
---|---|
172.16.1.100 | 指定IP地址的主机 |
172.16.2.0/24 | 指定子网中的所有主机 |
*.centos.cn | 指定域名的所有主机 |
* | 所有主机 |
权限选项
当客户端在挂载NFS服务器共享的目录时,会根据NFS服务器的权限选项来决定以只读方式或读写方式来挂载文件系统。
访问权限选项 | 说明 |
---|---|
ro | 设置输出目录只读 |
rw | 设置输出目录可读可写 |
用户映射选项
NFS客户端在访问服务器端共享的目录时,访问的用户可以映射为一个权限很低的普通用户或系统用户,这样可以增强访问的安全性。
用户映射选项 | 说明 |
---|---|
all_squash | 将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(nobody) |
no_all_squash | 不将远程访问的所有普通用户及所属用户组映射为匿名用户或用户组(默认) |
root_squash | 将root用户及所属用户组都映射为匿名用户或用户组(默认) |
no_root_squash | 不将root用户及所属用户组映射为匿名用户或用户组 |
anonuid=xxx | 将远程访问的用户映射为本地用户账户,并指定该匿名用户账户(UID=xxx) |
anongid=xxx | 将远程访问的用户组映射为本地用户组账户,并指定该匿名用户组账户(GID=xxx) |
其他访问选项
其他选项 | 说明 |
---|---|
secure | 限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置) |
insecure | 允许客户端从大于1024的TCP/IP端口连接NFS服务器 |
sync | 将数据同步写入内存缓冲区与磁盘中,虽然这样做效率较低,但可以保证数据的一致性 |
async | 将数据先保存在内存缓冲区中,必要时才写入磁盘 |
wdelay | 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可提高效率(默认设置) |
no_wdelay | 若有写操作则立即执行,应与sync配合使用 |
subtree_check | 若输出目录是一个子目录,则NFS服务器将检查其父目录的权限(默认设置) |
no_subtree_check | 即使输出目录是一个子目录,NFS服务器也不检查其父目录的权限,这样做可提高效率 |
exportfs命令
用来维护NFS服务的输出目录列表的命令,其基本格式如下:
exportfs [选项]
选项说明:
-a
:输出在/etc/exports
文件中所设置的所有目录。-r
:重新读取/etc/exports
文件中的设置,并使设置立即生效,而不需重新启动NFS服务。-v
:在输出目录时将目录显示到屏幕上。
举例:在CentOS上配置NFS服务器和客户端
在CentOS上配置NFS服务器
-
安装NFS和相关软件包
sudo yum install nfs-utils rpcbind
-
配置共享目录
- 编辑
/etc/exports
文件,添加以下内容:/srv/nfs 192.168.1.0/24(rw,sync,no_root_squash)
- 编辑
-
启动并启用NFS服务
sudo systemctl start rpcbind sudo systemctl start nfs-server sudo systemctl enable rpcbind sudo systemctl enable nfs-server
-
导出共享目录
sudo exportfs -a
在CentOS上配置NFS客户端
-
安装NFS和相关软件包
sudo yum install nfs-utils
-
创建挂载点并挂载NFS共享
sudo mkdir -p /mnt/nfs sudo mount -t nfs 192.168.1.100:/srv/nfs /mnt/nfs
-
验证挂载
- 使用
df -h
命令检查是否成功挂载NFS共享。
- 使用