NFS文件系统详解

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

nfs工作流程图:

server:
安装:
[root@sherry ~]# yum install nfs-utils rpcbind    -y

启动:
[root@sherry ~]# /etc/init.d/rpcbind start
[root@sherry ~]# /etc/init.d/nfs start
Starting NFS services:                                    [  OK  ]
Starting NFS quotas:                                      [  OK  ]  #磁盘检查
Starting NFS mountd:                                      [  OK  ] #等待客户端挂载 挂载守护进程,负责客户端来源认证的进程
Starting NFS daemon:                                      [  OK  ]#守护进程  文件读写nfs
Starting RPC idmapd:                                      [  OK  ]#id号映射

进程说明:
12345678 [root@sherry ~]# rpcinfo  -p localhost
  program vers proto  port  service
    100000    4  tcp    111  portmapper        #rpc
    100005    3  tcp  48973(随机)  mountd
    100003    2  tcp  2049  nfs                #文件读写
    100227    3  tcp  2049  nfs_acl            #访问控制列表
    100021    1  udp  41315(随机)  nlockmgr      #锁管理器
    100011    2  tcp    875  rquotad              #磁盘资源配额

配置文件:
帮助:
[root@sherry ~]# man exports

/etc/exports:
    文件系统  客户端1(文件系统导出属性)    客户端2(文件系统导出属性) 
        文件系统
        客户端:
            IP: 172.16.100.8
            Hostname: *.magedu.com
            Network: 
              常用文件系统导出属性:
            rw
            async 默认异步 
            sync  同步性能差
            root_squash:默认 压缩root用户,基于imapd,将root通过网络访问时转换为nfsnobody用户 
            no_root_squash: 不压缩root用户;
            all_squash: 压缩所有用户;
            anonuid, anongid: 指定匿名用户映射为的UID和GID;

[root@sherry nfsshared]# vim /etc/exports 
/nfsshared/node1  192.168.1.0/24(rw) 
#/nfsshared/node1  192.168.1.0/24(rw,anonuid=304)  304 nginx
#/nfsshared/node1  192.168.1.0/24(rw,all_squash)  nfsnobody

重启服务:   
[root@sherry nfsshared]# /etc/init.d/nfs restart
Shutting down NFS daemon:                                  [  OK  ]
Shutting down NFS mountd:                                  [  OK  ]
Shutting down NFS quotas:                                  [  OK  ]
Shutting down RPC idmapd:                                  [  OK  ]
Starting NFS services:                                    [  OK  ]
Starting NFS quotas:                                      [  OK  ]
Starting NFS mountd:                                      [  OK  ]
Starting NFS daemon:                                      [  OK  ]
Starting RPC idmapd:                                      [  OK  ]

client:
[root@marvin ~]# yum install nfs-utils rpcbind -y   
[root@marvin ~]# rpcinfo -p sherry      #nfs客户端执行 需要安装rpcbind
 program vers proto  port  service  (每项都多个)
    100000    2  udp    111  portmapper
    100011    2  tcp    875  rquotad
    100005    3  tcp  33671  mountd
    100003    2  tcp  2049  nfs
    100227    2  tcp  2049  nfs_acl
    100021    4  tcp  36734  nlockmgr

[root@marvin ~]# showmount -e sherry  #nfs客户端执行  需要安装nfs-utils
Export list for sherry:
/nfsshared 192.168.1.0/24

客户端挂载:
[root@marvin ~]# mkdir /mnt/nfs/node1 -pv
mkdir: created directory `/mnt/nfs’
mkdir: created directory `/mnt/nfs/node1′
[root@marvin ~]# mount -t nfs sherry:/nfsshared/node1 /mnt/nfs/node1/ 
[root@marvin ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv1      5.7G  2.6G  2.9G  47% /
tmpfs                    491M    0  491M  0% /dev/shm
/dev/sda1                194M  29M  155M  16% /boot
/dev/mapper/vg0-lv3      3.0G  69M  2.8G  3% /mydata
sherry:/nfsshared/node1  2.5G  67M  2.3G  3% /mnt/nfs/node1

模拟nginx程序写文件:
服务器:
[root@sherry nfsshared]# vim /etc/exports /nfsshared/node1 
192.168.1.0/24(rw,anonuid=304)   
[root@sherry nfsshared]# /etc/init.d/nfs start
[root@sherry nfsshared]# setfacl -m user:nginx:rwx node1/

测试:
#client
[root@marvin node1]# touch a
#server
[root@sherry nfsshared]# cd node1/
[root@sherry node1]# ll
total 0
-rw-r–r– 1 nginx nfsnobody 0 May 26 23:02 a

配置文件reload:
exportfs  -rav

exportfs:
        -a: 操作所有文件系统
        -ra: 重新导出所有文件系统
        -ua: 取消导入的所有文件系统
        -v: 显示详细信息

over

发表评论

电子邮件地址不会被公开。 必填项已用*标注