NFS网络文件系统

实验环境:VMware Workstation Pro 14(试用版)系统平台:CentOS Linux release 7.4.1708 (Core)       内核  3.10.0-693.el7.x86_64

NFS配置介绍

软件包

nfs-utils

端口

2049(nfsd), 其它端口由rpcbind(111)分配工作过程NFS启动时,会将所使用的端口向rpcbind注册,当有客户端访问的时候,客户端首先通讯的是rpcbind(111),进而rpcbind会告知NFS所使用的端口,客户端就可以通过端口访问NFS服务了。

配置文件:

/etc/exports/etc/exports.d/*.exports

依赖包

rpcbind(必须)tcp_wrappers

日志

/var/lib/nfs/

NFS服务主要进程

rpc.nfsd    最主要的NFS进程,管理客户端是否可登录rpc.mountd  挂载和卸载NFS文件系统,包括权限管理rpc.lockd   非必要,管理文件锁,避免同时写出错rpc.statd   非必要,检查文件一致性,可修复文件

CentOS 7不支持同一目录同时用nfs和samba共享,因为使用锁机制不同

启动NFS

# systemctl start nfs# systemctl start nfs-server在Centos 6上,rpcbind必须先启动,否则NFS无法启动在Centos 7上,NFS服务启动时,会把依赖的服务rpcbind一并启动rpcbind.service可以被rpcbind.socket 激活,rpcbind.socket独立工作报以下错误的时候clnt_create: RPC: Program not registered > 重启NFS服务重新注册到rpcbindclnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused) > rpcbind服务未启动,重启rpcbing和nfs服务,注意顺序

查看NFS开启的端口

# rpcinfo -p

如果需要在外部使用NFS服务,需要调整防火墙策略

必须先把NFS配置使用固定端口vim /etc/sysconfig/nfsRQUOTAD_PORT=875LOCKD_TCPPORT=32803LOCKD_UDPPORT=32769MOUNTD_PORT=892STATD_PORT=662STATD_OUTGOING_PORT=2020防火墙除开放上述端口,还需开放TCP和UDP的 111 和 2049 共4个端口

配置NFS

语法格式

目录路径 允许访问的IP地址或FQDN列表(选项1,选项2)/app/nfs *              > * 代表所有/app/nfs 192.168.5.10(ro) 192.168.5.13(rw)  > 列表以空格分隔/app/nfs 192.168.5.0/24(rw)/app/nfs *.magedu.com默认选项:(ro,sync,root_squash,no_all_squash)· ro,rw 只读和读写· async 异步,数据变化后不立即写磁盘,性能高· sync(1.0.0后为默认)同步,数据在请求时立即写入共享· no_all_squash (默认)保留共享文件的UID和GID· all_squash 所有远程用户(包括root)都变成nfsnobody· root_squash (默认)远程root映射为nfsnobody,UID为65534,早期版本是4294967294 (nfsnobody)· no_root_squash 远程root映射成root用户· anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nfsnobody,可配合all_squash使用

生效与查看共享资源

# exportfs -rexportfs: No options for /app/nfs *: suggest *(sync) to avoid warning# exportfs -v/app/nfs        <world>(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)通过远程主机查看# showmount -e 192.168.5.108Export list for 192.168.5.108:/app/nfs *

远程主机挂载NFS共享

Linux主机

# mount -t nfs 192.168.5.108:/app/nfs /tmp/nfs# mount 192.168.5.108:/app/nfs /tmp/nfs#dfFilesystem           1K-blocks    Used Available Use% Mounted on192.168.5.108:/app/nfs  8913920 1422112   7491808  16% /tmp/nfs# mount192.168.5.108:/app/nfs on /tmp/nfs type nfs (rw,vers=4,addr=192.168.5.108,clientaddr=192.168.5.107)指定NFS版本号挂载# mount -o vers=3 192.168.5.108:/app/nfs /tmp/nfs192.168.5.108:/app/nfs on /tmp/nfs type nfs (rw,vers=3,addr=192.168.5.108)永久挂载# vim /etc/fstab192.168.5.108:/app/nfs /tmp/nfs nfs vers=3 0 0192.168.5.108:/app/nfs /tmp/nfs nfs defaults 0 0

Wdindows下挂载

c:\>mount 192.168.5.108:/app/nfs Z:Z: 现已成功连接到 192.168.5.108:/app/nfs命令已成功完成。

NFS权限情况

1.NFS共享受文件系统权限影响2.受下以选项影响root_squash (默认)远程root映射为nfsnobody,UID为65534,早期版本是4294967294 (nfsnobody)no_root_squash 远程root映射成root用户anonuid和anongid

NFS工具

rpcinforpcinfo -p hostnamerpcinfo –s hostname 查看RPC注册程序exportfs–v 查看本机所有NFS共享–r 重读配置文件,并共享目录–a 输出本机所有共享–au 停止本机所有共享showmount -e hostnamemount.nfs 挂载工具

NFS相关的挂载选项

fg  (默认)前台挂载,bg后台挂载hard(默认)持续请求,soft 非持续请求intr 和hard配合,请求可中断rsize和wsize 一次读和写数据最大字节数,rsize=32768_netdev 无网络不挂载示例:mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/

实现NFS的伪根

/app *(fsid=0,rw,crossmnt)       > 指明NFS根的路径,(fsid=0,crossmn)这2个选项需要添加/app/nfs *(rw)/app/home/hunk *(rw)重新加载配置#exportfs -r查看#exportfs -v/app            <world>(rw,sync,wdelay,hide,crossmnt,no_subtree_check,fsid=0,sec=sys,secure,root_squash,no_all_squash)/app/nfs        <world>(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)/app/home/hunk  <world>(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)

远程主机挂载NFS伪根

# mount 192.168.5.108:/ /tmp/ > 方法跟之前的是一样的,只是把远程NFS的挂载目录变为/#tree /tmp/tmp├── home│ └── hunk│     └── hunk└──nfs    ├── aaa.txt    └── nfs1.txt
(0)

相关推荐