NFS用于Linux主机访问网络中其他Linux主机上的共享资源。NFS的原理是在客户端上通过网络将远程主机共享文件系统以挂载(Mount)的方式加入本机的文件系统,之后的操作就如同在本机上一样。仅记录自己安装使用过程中的问题。
1、安装nfs工具
sudo apt-get install nfs-kernel-server nfs-common portmap
2、创建 nfs 文件夹
建议在用户目录下创建,方便多用户;mkdir /home/用户名/nfs/nfs
3、修改nfs文件夹权限
chmod 777 /home/用户/nfs
4、修改nfs配置文件 /etc/exports
vim /etc/exports
在最后添加
/home/用户名/nfs 192.168.1.0/24(rw,sync,no_subtree_check)
/home/用户名/nfs 表示共享目录,当然,你可以随便换成自己喜欢的目录。
192.168.1.0/24:是你主机(NFS客户端)的ip地址(本机终端ifconfig命令就可以获得本机的ip地址)网段。
此处我使用192.168.1.*或直接使用* 挂载时也会出错,特别要注意上面的IP的形式,以前是形如192.168.1.*,现在是IP/掩码为数的形式。用旧的格式可能会出问题
错误1:mount: 192.168.9.85:/home/xx/nfs failed, reason given by server: Permission denied
错误2:mount.nfs: access denied by server while mounting 192.168.9.85:/home/xx/nfs
rw:读/写权限,只读权限的参数为ro;
sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。
no_root_squash:NFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。
错误: /etc/exports [1]: Neither ‘subtree_check’ or ‘no_subtree_check’ specified for export “*:/home/xx/nfs
5、重新导出 NFS 共享目录
每当修改了/etc/exports文件后,不需要重新启动NFS服务,使用exportfs命令就可以使设置立即生效
exportfs -rv
6、重启nfs服务
sudo /etc/init.d/nfs-kernel-server start
7、使用虚拟机验证
mount -o nolock -t nfs 192.168.1.85:/home/xx/nfs /root
挂载成功,此处可能出现以下错误
mount: mounting 192.168.0.1:/home/xx/nfs on /root failed: Connection refused
nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。
解决方法:kill 文件锁(lockd)或者mount -o nolock