nfs基本实现

  NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
   NFS最早是由Sun公司发展出来的,
  简单的来说:它就是是可以透过网络,让不同的主机、不同的操作系统可以共享存储。

nfs基本实现
以下是NFS最显而易见的好处:

  1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。

  2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。

  3. 一些存储设备CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。

  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是负责负责信息的传输。
1.服务端配置

nfs-utils: 这个是NFS服务主程序(包含rpc.nfsd、rpc.mountd、daemons)
rpcbind: 这个是CentOS6.X的RPC主程序(CentOS5.X的为portmap)

yum install -y nfs-utils rpcbind #安装nfs服务端

systemctl start rpcbind
systemctl enable rpcbind #设置开机启动

netstat -lntup |grep rpcbind #查询rpcbind服务启动状态
rpcinfo -p localhost #查看NFS服务项rpc服务器注册的端口

由于在FNS服务过程中,必须先启动rpcbind,再启动nfs,这样才能让NFS在rpcbind上注册成功

systemctl start nfs
systemctl enable nfs #设置开机启动

rpcinfo -p localhost #查看NFS服务项rpc服务器注册的端口

为了规范化最好用rc.local来管理开机自启动

[root@NFS-server ~]# ps -ef |egrep "rpc|nfs" #查看nfs相进程
rpcuser 1303 1 0 Nov22 ? 00:00:00 rpc.statd #检查文件一致性
root 1512 2 0 Nov22 ? 00:00:00 [rpciod/0]
rpc 2723 1 0 02:43 ? 00:00:00 rpcbind
root 2896 1 0 02:56 ? 00:00:00 rpc.rquotad #磁盘配额进程
root 2901 1 0 02:56 ? 00:00:00 rpc.mountd #权限管理验证等
root 2908 2 0 02:56 ? 00:00:00 [nfsd4]
root 2909 2 0 02:56 ? 00:00:00 [nfsd4_callbacks]
root 2910 2 0 02:56 ? 00:00:00 [nfsd]
root 2911 2 0 02:56 ? 00:00:00 [nfsd]
root 2912 2 0 02:56 ? 00:00:00 [nfsd]
root 2913 2 0 02:56 ? 00:00:00 [nfsd] #NFS主进程,管理登入,身份判定
root 2914 2 0 02:56 ? 00:00:00 [nfsd]
root 2915 2 0 02:56 ? 00:00:00 [nfsd]
root 2916 2 0 02:56 ? 00:00:00 [nfsd]
root 2917 2 0 02:56 ? 00:00:00 [nfsd]
root 2948 1 0 02:56 ? 00:00:00 rpc.idmapd #名称映射
2.配置
/etc/exports 是NFS程序的配置文件。并且默认为空
/etc/exports文件的配置格式为:
NFS共享目录 NFS客户端地址1(参数1,参数2,参数3......) 客户端地址2(参数1,参数2,参数3......)
NFS共享目录 NFS客户端地址(参数1,参数2,参数3......)

配置文件(/etc/exports)

#开头的行表示注释

格式: share_dir client_host(permission1,permission2,...,permissionn)

参数:

(1)share_dir

共享目录,必须是目录,若为文件,则在挂载时会出错.

若目录名含有空格等字符,须用双引号

(2)client_host

可以是单个主机(10.226.70.32),也可以是网络段(10.226.70.0/24),支持通配符*和?

(3)permission

ro: 只读(read-only)

rw:读和写(read-write)

root_squash:压缩root用户。当客户端以root挂载时,则NFS服务器将root视为匿名用户服务(nfsnobody)

no_root_squash:不压缩root用户。当客户端以root挂载时,则NFS服务器仍将root视为root用户,不×××全。
all_squash: 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)

anonuid=xxx: 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx: 将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
sync:同步写磁盘

async:异步写磁盘。

(1)多个权限间用逗号隔开

例如:

/testnfs 10.226.70.0/24(rw,sync,no_root_squash)

将服务器的/testnfs目录共享给10.226.70.0/24网段,属于这个网段的主机有读写、同步写磁盘和不压缩root用户的权限。

(2)修改/etc/exports后,要使修改后的文件生效,需使用exportfs命令或重新启动nfs服务

exportfs -ra

mkdir /data
chown -R nfsnobody.nfsnobody /data #使用nfs默认账户
mount /dev/sdb /data
vim /etc/exports #添加配置文件
/data 10.100.0.0/16(rw,sync)

systemctl reload nfs

showmount -e 127.0.0.1 #查看本机挂载情况
nfs基本实现

3.配置NFS客户端
客户端也需要安装rpcbind和nfs-utils软件,并且设置开机自启动。(只需要启动rpcbind即可)

yum -y install rpcbind nfs-utils

systemctl start rpcbind
systemctl enable rpcbind #设置开机启动

showmount -e 10.100.5.56 #检测挂载
nfs基本实现

mount -t nfs 10.100.5.56:/data /mnt
nfs基本实现

即可看到挂载成功

nfs基本实现

nfs基本实现

4.设置开机自动挂载
vim /etc/fatab
10.100.5.56:/data /mnt nfs defaults 0 0

猜你喜欢

转载自blog.51cto.com/13564078/2112301
nfs