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号映射
进程说明:
[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