看到鸟哥私房菜对NFS的介绍,就想试试玩一下。看起来步骤也很简单。
1.背景名词。
NFS(Network File System)
作用:让所有的Unix-like 机器通过网络共享彼此的文件
局限:文件权限问题。客户端和服务器端必须具备相同的账号才能够访问某些目录或文件。
RPC(Remote Procedure Call)
作用:指定每个NFS功能所对应的port number,并且通知客户端,让客户端可以连接到正确的端口上去。
当服务器在启动NFS时会随机选取数个端口,并主动向RPC注册,因此RPC可以知道每个端口对应的NFS功能。
所以启动NFS之前,要启动RPC,否则NFS无法向RPC注册。
2.服务器端配置
1)下载软件
#sudo apt-get install rpcbind nfs-kernel-server
2)建立共享目录
#sudo mkdir /home/user/nfstest
#sudo chmod 777 /home/user/nfstest
3)修改配置文件
#sudo vim /etc/exports
/home/user/nfstest localhost(rw,sync,no_root_squash)
localhost表面只允许本机访问,这个字段可以为IP地址。也可以用正则表达式来表示。
rw代表具有可读写权限。ro代表只具有可读权限。
sync是资料同步写入内存和硬盘。async代表数据会先暂存于内存当中,而非直接写入硬盘。
no_root_squash和root_squash的不同在于客户端用户为root时,访问系统的权限不同。客户端使用NFS系统的账号为root时,root_squash会压缩用户为nfsnobody,而no_root_squash会继续保持其root身份。
all_root_squash会压缩所有的用户为nfsnobody。
4)重启服务
#sudo /etc/init.d/rpcbind restart
#sudo /etc/init.d/nfs-kernel-server restart
* Stopping NFS kernel daemon
...done.
* Unexporting directories for NFS kernel daemon...
...done.
* Exporting directories for NFS kernel daemon...
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "localhost:/home/user/nfstest".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x ...done.
* Starting NFS kernel daemon
...done.
可以看到 NFS kernel daemon启动成功。如果不成功会显示fail。
5)测试服务器
#showmount -e
Export list for hostname:
/home/user/nfstest localhost
说明服务器端搭建OK。
3.客户端配置
1)下载软件
#sudo apt-get install rpcbind nfs-common
2)挂载文件
#mkdir /home/user/mnt
#chmod 777 /home/user/mnt
#mount -t nfs localhost:/home/user/nfstest /home/user/mnt
mount -t nfs 服务器名/IP地址:服务器共享目录 本地挂载目录
3)客户端测试
#cd /home/user/mnt
#touch testfile
就会看到 /home/user/nfstest和/home/user/mnt下面都有testfile文件,说明测试成功。
4.取消挂载
#sudo umount /home/user/mnt