05 NFS基础知识
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 |