NFS介绍
- NFS是Network File System的缩写
- NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本(2010年)
- NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写,(远程过程调用)为NFS服务提供支持。
- NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致。用户在B和C上更新了文件,A上也实时更新。
-
- NFS服务不会监听端口,通信的过程由rpc服务来监听端口111实现通信
NFS服务端安装配置
- akuilinux01作为服务端,并安装yum install -y nfs-utils rpcbind
- 在服务端上写入以下配置
[root@akuilinux01 ~]# vim /etc/exports
/home/nfstestdir #共享的目录 192.168.21.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
[root@akuilinux01 ~]# mkdir /home/nfstestdir
[root@akuilinux01 ~]# chmod 777 /home/nfstestdi
[root@akuilinux01 ~]# systemctl start rpcbind
[root@akuilinux01 ~]# systemctl start nfs
[root@akuilinux01 ~]# systemctl enable rpcbind
[root@akuilinux01 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@akuilinux01 ~]# ps aux |grep rpc
rpc 2376 0.0 0.0 64956 1404 ? Ss 08:51 0:00 /sbin/rpcbind -w
rpcuser 2394 0.0 0.0 42376 1760 ? Ss 08:51 0:00 /usr/sbin/rpc.statd
root 2401 0.0 0.0 0 0 ? S< 08:51 0:00 [rpciod]
root 2411 0.0 0.0 42564 944 ? Ss 08:51 0:00 /usr/sbin/rpc.mountd
root 2412 0.0 0.0 43816 544 ? Ss 08:51 0:00 /usr/sbin/rpc.idmapd
root 2504 0.0 0.0 112676 976 pts/1 S+ 08:53 0:00 grep --color=auto rpc
[root@akuilinux01 ~]# ps aux |grep nfs
root 2424 0.0 0.0 0 0 ? S< 08:51 0:00 [nfsd4_callbacks]
root 2430 0.0 0.0 0 0 ? S 08:51 0:00 [nfsd]
root 2431 0.0 0.0 0 0 ? S 08:51 0:00 [nfsd]
root 2432 0.0 0.0 0 0 ? S 08:51 0:00 [nfsd]
root 2433 0.0 0.0 0 0 ? S 08:51 0:00 [nfsd]
root 2434 0.0 0.0 0 0 ? S 08:51 0:00 [nfsd]
root 2435 0.0 0.0 0 0 ? S 08:51 0:00 [nfsd]
root 2436 0.0 0.0 0 0 ? S 08:51 0:00 [nfsd]
root 2437 0.0 0.0 0 0 ? S 08:51 0:00 [nfsd]
root 2506 0.0 0.0 112676 980 pts/1 S+ 08:54 0:00 grep --color=auto nfs
NFS配置选项
- rw 读写
- ro 只读
- sync 同步模式,内存数据实时写入磁盘
- async 非同步模式
- no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大,相当于root在本地磁盘读写
- root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
- all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
- anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
- 客户端操作
- akuilinux02作为客户端,安装yum install -y nfs-utils
- showmount -e 192.168.133.130 //该ip为NFS服务端ip,查看是否有权限连接服务端,如果不能连接,查看服务端NFS服务是否启动,有没有监听111端口,检查服务端和客户端firewalld和SELinux防火墙是否关闭。
[root@akuilinux02 ~]# showmount -e 192.168.21.128
Export list for 192.168.21.128
/home/nfstestdir 192.168.21.0/24
[root@akuilinux02 ~]# mount -t nfs 192.168.21.128:/home/nfstestdir /mnt
[root@akuilinux02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.1G 17G 6% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.7M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 85M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
192.168.21.128:/home/nfstestdir 18G 7.4G 11G 42% /mnt
[root@akuilinux02 ~]# touch /mnt/aminglinux.txt
[root@akuilinux02 ~]# ls -l /mnt/aminglinux.txt
-rw-r--r-- 1 1000 1000 0 6月 22 09:06 /mnt/aminglinux.txt
[root@akuilinux01 ~]# ll /home/nfstestdir/
总用量 0
-rw-r--r-- 1 akui akui 0 6月 22 09:06 aminglinux.txt
#因为限定了属主和属组所以显示1000,和akui(01机器的1000为akui)