Linux之NFS基础总结及应用实践

Linux之NFS基础总结及应用实践

一、简介

    NFS(Network File System)即网络文件系统,允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

    特性:节省本地存储空间、共享存储空间、 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用

    NFS工作原理

wKioL1Y_ASPTGvZ2AAHfwre9bYk685.jpg

    简要说明:NFS并不是单独存在的,它和另外2个模块共同存在(即:NFS,RPC,PORTMAP),试想两台网络当中的主机如何进行通讯,当然只有通过ip+port来发送数据。远程客户端进行nfs请求,RPC获得请求,通知PORTMAP来获取端口号,然后PORTMAP将可用的端口号传给NFS、RPC,然后NFS模块再进行权限检验,如果有足够的权限,RPC就通过PORTMAP给出的端口进行数据传输,并通过该端口到达客户端。


二、简要说明NFS配置文件

    1、NFS服务主配置文件在/etc/exprots,“exports”文件用于配置NFS服务器中输出的共享目录,如

    #im /etc/exports

    /nfs/share *(sync,ro)

   注:/nfs/share为nfs共享目录名、*为客户端主机地址、(sync,ro)是设置选项

   客户端主机地址指能够访问共享目录的主机地址,可以有以下几种方式:

   指定IP地址的主机:192.168.1.x

   指定网段中的所有主机:192.168.1.0/24

   指定域名的主机:www.test.com

   指定域下的所有主机:*.test.com

   所有主机:*

   设置选项指设置共享目录的属性,要用()括起来,多个选项间用逗号分隔

   sync :设置NFS服务器同步写磁盘,这样不会轻易丢失数据,建议所有的NFS共享目录都使用该选项

   ro :设置输出的共享目录只读,与rw 不能共同使用

   rw :设置输出的共享目录可读写,与ro 不能共同使用

   其他常用用户选项:

   root_squash:不允许 root 用户访问挂载上来的 NFS 卷

   no_root_squash:允许 root 用户访问挂载上来的 NFS 卷

   all_squash:限制所有的 UID 和 GID,只使用匿名用户。缺省设置是 no_all_squash。

   anonuid、anongid:将匿名 UID 和 GID 修改成特定用户和组帐号。

三、NFS应用实践

    实践要求:建立nfs共享,将主机192.168.1.100上的目录/magedu通过nfs共享给192.168.1.0/24网络的主机以异步读写方式使用;当nfs服务器不允许root用户访问共享文件,即映射为服务器端的nfsuser用户

    环境:centos 6.7(最小化安装)

    检查已安装NFS(如能看到nfs-utils rpcbind两个相关的包即为已安装,如未安装直接yum -y install nfs*即可)

    [root@hc01 ~]# rpm -qa|grep nfs

    nfs4-acl-tools-0.3.3-7.el6.x86_64

    nfs-utils-1.2.3-64.el6.x86_64

    nfs-utils-lib-1.1.5-11.el6.x86_64

    [root@hc01 ~]# rpm -qa|grep rpcbind

    rpcbind-0.2.0-11.el6.x86_64

    1、创建nsfuser用户,mageedu目录并在目录创建test.txt测试文件,设置NFS主配置文件

    #useradd nfsuser

    #mkdir /mageedu   

    #touch test.txt

    #vi /etc/exports

    /mageedu 192.168.1.100/24(rw,async,root_squash,anonuid=501,anongid=501) 

wKiom1Y_AP7DwsYKAAF6ojaliN0671.jpg

    2、启动nfs服务,必须可以正常看到以下5个进程启动

wKiom1Y_AQzCwGchAADzBXLtUmw488.jpg

    3、客户端查看挂载nfs并验证是否访问正常,这里以192.168.1.101为客户端

    [root@hc02 ~]# showmount -e 192.168.1.100

    Export list for 192.168.1.100:

    /mageedu 192.168.1.100/24

    [root@hc02 ~]# mount -t nfs 192.168.1.100:/mageedu /mnt

    [root@hc02 ~]# ls /mnt/

    test.txt

wKioL1Y_AWPC7ftqAAEd9BO1F3M775.jpg

    4、客户端在挂载/mnt目录下创建hc02.txt,验证客户端root权限是否有权限

    [root@hc02 ~]# cd /mnt/

    [root@hc02 mnt]# ls

    test.txt

    [root@hc02 mnt]# touch hc02.txt

    提示:权限拒绝

wKioL1Y_AXHj4128AACO3JSzXfI916.jpg

    注:由于在挂载参数指定了root匿名用户的权限,映射为普通用户nfsuser的权限501来访问。该用户在服务器端/mageedu上是没有权限写入的。这是我们可以验证在NFS Server(192.168.1.100)上的/mageedu目录下创建一个让nfsuser用户可读可写的目录rw_user

    [root@hc01 /]# ll -d /mageedu/

    drwxr-xr-x 2 root root 4096 Nov  7 01:50 /mageedu/

    #mkdir /mageedu/rw_user

    #setfacl -m u:nfsuser:rwx /mageedu/read_write  (注意该命令是设置权限)

    这是在客户端挂载的/mnt/rw_user目录下,新建hc02.txt,可以正常创建,并且在nfs服务器端查看

wKioL1Y_AYPgYxIwAAFD2yQ7ELM486.jpg


你可能感兴趣的:(计算机,工作原理,配置文件,NetWork,nfs,共享资源)