Ubuntu 通过NFS挂载远程目录到本地
本地机器每次对于自身挂载的远程文件的访问,实际上都是发送了一次新的RPC请求,请求目标服务器,将其对应的数据实时返回到本地机器的文件当中;(Linux中存在这样一个应用即:Network File System 即 NFS 网络文件系统,一种使用于分散式文件系统的协定,让应用程序在客户端通过网络访问位于远程磁盘中的数据,是在类Unix系统间实现对应的磁盘文件共享的一种方法)。
NFS于RPC的关系:
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
NFS服务器配置
1. 安装NFS相关包
apt-get install nfs-kernel-server nfs-common
# centos 7
# yum install nfs-utils
2. 配置NFS目录和权限
NFS的配置文件为/etc/exports,文件内容默认为空(无任何共享)。在exports文件中设置共享资源时,记录格式为 "服务器文件路径 客户机器IP地址(权限选项)" 其中客户机地址于权限列表的括号() 中间不能有空格;
vim /etc/exports
# 如给任何地址授权
/app *(rw,sync,no_root_squash)
# 如给多个地址授权
/app 172.16.8.97(rw,sync,no_root_squash) 172.16.8.98(rw,sync,no_root_squash)
# 如给某个网段内所有IP授权
/app 172.16.8.*(rw,sync,no_root_squash)
客户机地址可以是 : 主机名、IP地址、网段地址、或者"*、?"通配符;
权限选项:rw表示允许读写(ro为只读)
sync表示同步写
no_root_squash表示当前客户机以root身份访问时,赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)
3. 重启服务
/etc/init.d/nfs-kernel-server restart
# centos 7
# systemctl enable nfs-server && systemctl start nfs-server
4. 当前已发布的NFS共享目录
showmount -e nfs-server-ip
NFS客户端配置
1. 安装NFS客户端
apt-get install nfs-common
2. 将目录挂载到本地
mount nfs-server-ip:/nfsdir /mnt
3. 开机自动挂载
vim /etc/fstab
nfs-server-ip:/nfsdir /mnt nfs rw 0 0