首页 > 技术文章 > 05 NFS基础知识

zhaokunhao 2021-04-19 21:34 原文

NFS

共享存储,文件服务器

客户端和服务端都要安装rpcbind和nfs

客户端安装的原因是为了使用showmount命令

服务端

#nfs默认的配置文件
/etc/exports

#配置
vim /etc/exports
/data 192.168.15.0/24(rw,sync,all_squash)

#语法
[挂载的目录] [IP]/[子网掩码] (操作权限)
#根据配置文件操作
[root@nfs ~]# mkdir /data	#建立配置文件里的文件夹

#启动服务(一点要先启动rpcbind再启动nfs)
#centos 7
[root@nfs ~]# systemctl start rpcbind nfs
#c6
[root@nfs ~]# service rpcbind start
[root@nfs ~]# service nfs start

#验证启动
[root@nfs ~]# netstat -tunlp | grep rpc
tcp        0      0 0.0.0.0:33818           0.0.0.0:*               LISTEN      1782/rpc.statd      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      933/rpcbind         
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      1796/rpc.mountd     
tcp6       0      0 :::56964                :::*                    LISTEN      1782/rpc.statd 

#验证nfs配置文件是否正确
[root@nfs ~]# cat /var/lib/nfs/etab 
/data	192.168.15.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
#如果你配置错误,一定没有东西,配置的时候ip和后面的括号一定不能有空格

客户端

#查看挂载点
[root@web01 ~]# showmount -e 192.168.15.31
Export list for 192.168.15.31:
/data (everyone)

 #挂载
 [root@web01 ~]# mount -t nfs 192.168.15.31:/data /root/data/
 
 #检查
 [root@web01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 475M     0  475M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M  7.6M  479M   2% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/mapper/centos-root   99G  2.6G   97G   3% /
/dev/sda1               1014M  163M  852M  17% /boot
tmpfs                     98M     0   98M   0% /run/user/0
192.168.15.31:/data       99G  2.6G   97G   3% /root/data
#现在你对本地的/root/data进行操作,就是对nfs端的进行操作

#写入数据进行测试
#第一次写入测试的时候出现了权限问题
[root@web01 data]# touch 1.txt
touch: cannot touch ‘1.txt’: Read-only file system

#授权目录去操作
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/
[root@nfs ~]# systemctl restart rpcbind nfs
#开机自动挂载
vim /etc/fstab
192.168.15.31:/data /nfsdir nfs defaults 0 0

#验证fstab是否正确
mount -a

注意事项

1、挂载目录后,原来文件下的内容不会丢失,仅仅是被遮盖住,取消挂载后仍然存在
2、取消挂载时,不要在挂载的目录下面操作,否则会提示忙碌,切换到其他的目录下卸载
总之,挂载和卸载,不要呆在挂载目录下

3、如果服务端的nfs停止服务
先检查服务端,重启nfs
如果实在排查不到问题
强制取消挂载	umount -lf /backup

nfs配置

NFS共享参数 参数作用
rw 读写权限
ro 只读权限
root_squash 当NFS客户端以root访问时,修改权限为NFS服务器的匿名用户(不常用)
no_root_squash 当NFS客户端以root访问时,修改权限为NFS服务器的root用户(几乎不用)
all_squash 当NFS客户端以任意用户访问时,修改权限为NFS服务器的匿名用户(常用)
no_all_squash 当NFS客户端以任意用户访问时,不修改权限(不常用)
sync 同时将数据写入内存和磁盘(保证数据不丢失)
async 优先将数据写入内存,再写入硬盘;效率高,但是会丢失数据
anonuid 配合all_squash,指定匿名用户的uid,用户为系统用户,必须存在
anongid 配合all_squash,指定匿名用户的gid

推荐阅读