内容:
1、NFS简介
2、NFS服务端的配置
3、NFS客户端的配置以及使用命令
4、NFS服务的搭建测试
一、NFS简介
1、NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
1)、设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务);
2)、NFS只是一种文件系统,本身没有传输功能,是基于RPC协议实现的,才能达到两个Linux系统之间的文件目录共享;
3)、NFS为C/S架构;
二、NFS服务端的配置
1、需要安装的软件包:
rpcbind:提供rpc服务(mapping),在centos5以前叫portmap,5以后改名为rpcbind
nfs-utils:提供nfs,mountd与其他相关程序。
我们可以rpm -ql nfs-utils来查看nfs服务的应用程序主要有以下几个:
nfsd:NFS的守护进程,工作在tcp与udp的2049端口上。
mountd:NFS用来验证客户端信息的守护进程,工作在随机端口。
rquotad:磁盘限额进程。
lockd:文件锁。
idmapd:权限映射。
辅助类的服务:rpc (portmap)
rpc.mountd:认证;
rpc.lockd:加锁
rpc.statd:状态
2、配置文件:
/etc/exports:nfs的主要设定文件。
/var/lib/nfs/*tab:设定记录文件。
etab:共享目录的完整权限设定。
xtab:曾经连接的客户端资料。
/usr/sbin/exportfs:NFS分享资源命令,可以用来重新获取共享文件设定,挂载,卸载等。
/usr/sbin/showmount:用来查看远程主机的共享信息。
3、exports文档设定格式
管理共享的nfs文件系统:配置文件每一行定义一个共享文件系统
/PATH/TO/SOME_DIR CLIENTS_1(export_options,...) CLIENTS_2(export_options,...)
CLIENTS:
single host: IPv4, IPv6, FQDN
IP networks:network/netmask,支持两种格式的掩码;
wildcards:在主机名字符串中使用通,*.maideliang.com,
anonymous:*,表示所有的客户端主机;
export_options:
ro:只读;
rw:读写;
sync:同步
async:异步
User ID Mapping:
root_squash:压缩root用户的权限,默认行为;nfsnobody
no_root_squash:不压缩root用户的权限;
all_squash:压缩所有用户的权限;
anonuid and anongid:将压缩的用户映射为此处指定的用户
命令:
exportfs命令(可以不重启nfs而生效):
-a:跟-r或-u选项同时使用,表示重新挂载所有文件系统或取消导出所有文件系统;
-r: 重新导出
-u: 取消导出
-v: 显示详细信息
4、权限相关
当远程用户访问共享文件夹时是使用什么权限呢?如果创建文件那么属主和属组又是什么呢?
其实也samba共享服务一样,nfs默认是使用你本地主机当前用户UID与GID相对应的身份来使用,如果远程服务端没有此用户或组就会以数字的形式呈现。
如果是root用户,那么在远程主机上肯定就是使用root了,因为root默认的uid gid都是0!这样就太危险了,所以如果使用了root访问,NFS会自动压缩权限为最小权限nfsnobady。
当本地用户使用不一样的名字,UID却是相同的创建文件,会通过idmapd这个进程来映射,所以你在远程看到的还会是你原来的name。
当你将权限都设定完成后记得去更改服务器端文件夹的权限,推荐使用acl来设定,因为你的权限其实为 "用户权限与文件夹权限的交集"。
三、NFS客户端命令:
1、挂载NFS目录:
mount -t nfs NFS_SERVER:/PATH/TO/EXPORTED_DIR /MOUNT_POINT [-rvVwfnsh] [-o OPTIONS]
2、查看NFS服务的命令:
showmount -e NFS_SERVER: 查看NFS服务器“导出”的各文件系统
showmount -a NFS_SERVER: 查看NFS服务器所有被挂载的文件系统及其挂载的客户端对应关系列表
showmount -d NFS_SERVER: 显示NFS服务器所有导出的文件系统中被客户端挂载了文件系统列表
3、开机自动挂载
编辑fstab文件添加即可,不过需要注意添加挂载选项
例:设定开机自动挂载:
10.1.252.109:/shared /mnt/nfs nfs defaults,_rnetdev 0 0
最好加载挂载选项:_rnetdev,代表如果检查nfs远端服务如果没开则跳过检查,否则会导致开机不成功(已测试验证)
四、NFS服务的搭建测试
1、服务端安装相关的程序包
[00:18 [email protected]~]# yum install -y nfs-utils rpcbind
2、编写/etc/exports到处列表,并启动nfs服务
[00:39 [email protected]~]# cat !$ cat /etc/exports /shared 10.1.0.0/16(rw) #把/shared目录共享给10.1.0.0/16的所有用户,并有读写权限 [00:42 [email protected]~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ]
3、客户端挂载测试
[root@localhost ~]# showmount -e 10.1.252.109 #查看服务端的exports到处列表 clnt_create: RPC: Program not registered [root@localhost ~]# showmount -e 10.1.252.109 Export list for 10.1.252.109: /shared 10.1.0.0/16 [root@localhost ~]# showmount -a 10.1.252.109 All mount points on 10.1.252.109: [root@localhost ~]# showmount -d 10.1.252.109 Directories on 10.1.252.109: [root@localhost ~]# mkdir /mydata/nfs [root@localhost ~]# mount -t nfs 10.1.252.109:/shared /mydata/nfs/ #挂载NFS文件系统 [root@localhost ~]# showmount -e 10.1.252.109 Export list for 10.1.252.109: /shared 10.1.0.0/16 [root@localhost ~]# showmount -d 10.1.252.109 Directories on 10.1.252.109: [root@localhost ~]# showmount -a 10.1.252.109 All mount points on 10.1.252.109: [root@localhost ~]# mount #检查已经挂载成功 /dev/mapper/vg0-root on / type ext4 (rw) /dev/mapper/vg0-usr on /usr type ext4 (rw) /dev/mapper/vg0-var on /var type ext4 (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other) //10.1.252.109/windows on /mydata/samba type cifs (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 10.1.252.109:/shared on /mydata/nfs type nfs (rw,vers=4,addr=10.1.252.109,clientaddr=10.1.252.187)
注意:如果出现以下错误说明,本机没有安装 mount.nfs了,我们只要安装mount.nfs就可以了
[root@localhost ~]# mount -t nfs 10.1.252.109:/shared /mnt mount: wrong fs type, bad option, bad superblock on 10.1.252.109:/shared, missing codepage or helper program, or other error (for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.helper program) In some cases useful info is found in syslog - try dmesg | tail or so. [root@localhost ~]# yum install -y nfs-utils [root@localhost ~]# mount mount mount.nfs mount.nfs4 mountpoint mountstats [root@localhost ~]# mount -t nfs 10.1.252.109:/shared /mnt
接下来就可以做各种基于NFS共享的负载均衡实验了。
OK,更多内容请关注我的博客。