NFS : Network File System
网络文件系统(NFS)是一个分布式文件系统协议,最初由Sun Microsystems于1984年开发,[1]允许客户端计算机上的用户通过计算机网络访问文件,就像访问本地存储一样。与许多其他协议一样,NFS建立在开放网络计算远程过程调用(ONC RPC)系统上。NFS是Request for Comments(RFC)中定义的开放标准,允许任何人实现该协议。
在centos上默认安装了nfs-utils,可直接启动服务。
三个关键进程:
moutnd 挂载守护进程,负责客户端来源认证进程 nfsd:文件读写 idmapd:id映射进程
NFS配置文件/etc/exports
#文件系统 #客户端{ip | 网段} #导出属性
/nfsfile 192.168.2.0/24(rw,no_root_squash)
文件系统导出属性:
导出属性 rw读写async同步sync异步root_squash压缩用户,通过网络将root用户转换为nfsnobodyno_root_squash不压缩用户,任何客户端root可以访问,不安全all_squash压缩所有用户,谁都不准以自己的身份访问,最安全anonuid,anongid指定用户
showmout
#全部 在nfs服务器端显示所有的挂载会话
showmount -a SERVER_IP
#文件 在服务器端执行,显示那个导出的文件系统被那些客户端挂载过
showmount -d SERVER_IP
#共享,在客户端执行,探查某主机所导出的nfs文件系统
showmount -e SERVER_IP
exportfs导出nfs文件
#操作所有操作系统
exportfs -a
#重新导出所有文件系统
exportfs -ra
#取消导出的所有文件系统
exportfs -ua
#显示详细信息
exportfs -v
nfs的辅助进程mountd等监听在固定端口上,可以通过在编辑/etc/sysconfig/nfs等参数来实现
操作实例
客户端以某一个具体的用户访问NFS
1)服务端
#编辑/etc/exports,压缩所有用户
/nfsfile 172.16.0.0/16(rw,all_squash)
#创建一个新的目录,挂载新的分区sda#,然后使某个UID能够访问
fdisk /dev/sda
mkdir /nfsfile
#开机自动挂载,编辑/etc/fstab并有acl特性,
/dev/sda3 /nfsfile default,acl 0 0
#生效
mount -a
#创建一个UID=1000的用户
useradd -u 1000 testuser
#设置UID=1000的用户对/nfsfile有rwx权限
setfacl -m u:1000:rwx /nfsfile
2)客户端
#将NFS共享的文件挂载至本地某个目录/mnt/nfs
mkdir /mnt/nfs
mount -t nfs 172.16.36.215:/nfsfile /mnt/nfs
#编辑/etc/fstab设置为开机自动挂载,_netdev特性可检测挂载网络
172.16.36.215:/nfsfile /mnt/nfs default,_netdev 0 0
#创建NFS服务端设置的UID=1000的用户
useradd -u 1000 testuser
#su到testuser
su - testuser
#访问/mnt/nfs目录,测试
cd /mnt/nfs
cp /etc/fstab ./