ubuntu 下面配置 NFS (网络文件系统)
NFS 原理
1、将其他计算机的共享目录映射成本地的目录;
2、基于RPC (远程过程调用)服务,所以启动RPC服务需要分配端口;
3、NFS Server 是提供共享目录的计算机,即提供空间的计算机;
4、NFS Client 是使用NFS服务的计算机;
5、客户端可以读写NFS的提供的目录,但是不可以移动和删除服务器共享文件。
NFS 的组成
为NFS服务器提供服务的程序有三个,他们是:
1、rpc.protmapper
这一程序本身并不直接提供NFS服务,但是它将其他计算机发出的调用请求映射到正确的NFS守护进程,即端口映射
2、rpc.nfsd
这一进程把NFS请求转化为本地的文件系统上的实际请求。
3、rpc.mountd
这一守护程序负责为加载和卸载文件系统的请求提供服务。
安装NFS
在debian 或Ubuntu 系统上有两种NFS服务器,一种是以内核模块方式提供的 nfs-kernel-server,另一种是以用户空间程序提供的 nfs-user-server, 安装任何一种都可以。
安装 nfs 服务器,以内核模块为例
sudo aptitude install nfs-kernel-server
启动NFS服务
安装结束后会自动启动portmap 服务和 nfsd服务
启动NFS服务
$ sudo /etc/init.d/nfs-kernel-server restart 启动
$ sudo /etc/init.d/nfs-kernel-server stop 停止
$ sudo /etc/init.d/nfs-kernel-server reload 重新加载
检查NFS是否正常运行
$ ps ax|grep nfsd 查看nfsd是否启动
$ ps -aux|grep portmap 查看portmap是否启动
配置 NFS 服务器
一、NFS 服务器需要指定可以共享的文件目录、客户端读写的限制、可以访问本服务器的IP地址范围等。
配置文件 /etc/exports 的记录格式 : $ sudo vi /etc/exports
exports 的每一行由导出路径、客户列表以及每个客户名后尾随的访问选项构成,访问选项是可选的,语法如下:
共享目录 (客户端 (host 或 IP)) (读写权限)
举例:/usr www.baidu.com
说明:将路径/usr 提供给 www.baidu.com 访问
举例:/usr www.baidu.com(rw)
说明:将路径/usr 提供给 www.baidu.com 访问,具备读写权限
举例:/usr (ro,insecure.all_squash)
说明:将路径/usr 提供给所有机器访问,对/usr只有读的权力,允许大于1024的端口进行连接,并把所有的连接id映射到nobody
举例:/usr 192.168.123.123(rw,sync) *(ro,async)
说明:只有192.168.123.123的用户对/usr 有读写权限,其他的用户只有只读权限。
二、选项的说明
insecure : 允许用户可以从大于1024的端口进行连接;
secure : 限制用户可以从大于1024的端口进行连接;
ro : 只读权限,在没有设置ro的情况下,默任是可以写的;
rw : 可写,默任是可以写的;
noaccess : 让导出路径的所有子目录对客户不可见,用户连接到这个路径后,看到的是个空目录;
root_squash : 远端的root用户对nfs共享目录的权限设置成一般权限的anonymous用户;
no_root_squash : 远端的root用户对nfs共享目录有完全管理的权限;
sync : 所有数据在请求写入时共享
三、配置检查
exportfs 用于维护NFS 文件系统的列表,当执行该命令后,会将/etc/exports文件内容写入 /var/lib/nfs/etab文件
NFS 客户端连接
通过NFS服务,可以把服务器上共享的目录 mount 到本地,就像访问本地目录一样
1、查看NFS 服务器共享内容
showmount -e 服务器主机名或者ip地址
示例:$ showmount -e 192.168.123.66
2、挂载NFS服务器的共享目录到本地计算机
mount 服务器主机名或者IP :共享目录 本地挂载目录名
示例:$ sudo mount 192.168.123.66/home2/nfsroot/longtu /mnt/
3、卸载NFS服务目录
umount 本地挂载目录
示例:$ sudo umount /mnt
NFS 原理
1、将其他计算机的共享目录映射成本地的目录;
2、基于RPC (远程过程调用)服务,所以启动RPC服务需要分配端口;
3、NFS Server 是提供共享目录的计算机,即提供空间的计算机;
4、NFS Client 是使用NFS服务的计算机;
5、客户端可以读写NFS的提供的目录,但是不可以移动和删除服务器共享文件。
NFS 的组成
为NFS服务器提供服务的程序有三个,他们是:
1、rpc.protmapper
这一程序本身并不直接提供NFS服务,但是它将其他计算机发出的调用请求映射到正确的NFS守护进程,即端口映射
2、rpc.nfsd
这一进程把NFS请求转化为本地的文件系统上的实际请求。
3、rpc.mountd
这一守护程序负责为加载和卸载文件系统的请求提供服务。
安装NFS
在debian 或Ubuntu 系统上有两种NFS服务器,一种是以内核模块方式提供的 nfs-kernel-server,另一种是以用户空间程序提供的 nfs-user-server, 安装任何一种都可以。
安装 nfs 服务器,以内核模块为例
sudo aptitude install nfs-kernel-server
启动NFS服务
安装结束后会自动启动portmap 服务和 nfsd服务
启动NFS服务
$ sudo /etc/init.d/nfs-kernel-server restart 启动
$ sudo /etc/init.d/nfs-kernel-server stop 停止
$ sudo /etc/init.d/nfs-kernel-server reload 重新加载
检查NFS是否正常运行
$ ps ax|grep nfsd 查看nfsd是否启动
$ ps -aux|grep portmap 查看portmap是否启动
配置 NFS 服务器
一、NFS 服务器需要指定可以共享的文件目录、客户端读写的限制、可以访问本服务器的IP地址范围等。
配置文件 /etc/exports 的记录格式 : $ sudo vi /etc/exports
exports 的每一行由导出路径、客户列表以及每个客户名后尾随的访问选项构成,访问选项是可选的,语法如下:
共享目录 (客户端 (host 或 IP)) (读写权限)
举例:/usr www.baidu.com
说明:将路径/usr 提供给 www.baidu.com 访问
举例:/usr www.baidu.com(rw)
说明:将路径/usr 提供给 www.baidu.com 访问,具备读写权限
举例:/usr (ro,insecure.all_squash)
说明:将路径/usr 提供给所有机器访问,对/usr只有读的权力,允许大于1024的端口进行连接,并把所有的连接id映射到nobody
举例:/usr 192.168.123.123(rw,sync) *(ro,async)
说明:只有192.168.123.123的用户对/usr 有读写权限,其他的用户只有只读权限。
二、选项的说明
insecure : 允许用户可以从大于1024的端口进行连接;
secure : 限制用户可以从大于1024的端口进行连接;
ro : 只读权限,在没有设置ro的情况下,默任是可以写的;
rw : 可写,默任是可以写的;
noaccess : 让导出路径的所有子目录对客户不可见,用户连接到这个路径后,看到的是个空目录;
root_squash : 远端的root用户对nfs共享目录的权限设置成一般权限的anonymous用户;
no_root_squash : 远端的root用户对nfs共享目录有完全管理的权限;
sync : 所有数据在请求写入时共享
三、配置检查
exportfs 用于维护NFS 文件系统的列表,当执行该命令后,会将/etc/exports文件内容写入 /var/lib/nfs/etab文件
NFS 客户端连接
通过NFS服务,可以把服务器上共享的目录 mount 到本地,就像访问本地目录一样
1、查看NFS 服务器共享内容
showmount -e 服务器主机名或者ip地址
示例:$ showmount -e 192.168.123.66
2、挂载NFS服务器的共享目录到本地计算机
mount 服务器主机名或者IP :共享目录 本地挂载目录名
示例:$ sudo mount 192.168.123.66/home2/nfsroot/longtu /mnt/
3、卸载NFS服务目录
umount 本地挂载目录
示例:$ sudo umount /mnt