一、NFS的认识
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本 地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
目前NFS主要有两个版本(NFSv2,NFSv3)两个版本,而NFSv2和NFSv3除了3版本支持更多的新特性以外,最主要的区别应该就是 NFSv2是使用UDP协议进行传输的,所以NFSv2的连接在复杂网络环境下可能没有那么可靠,而NFSv3同时支持UDP和TCP协议。
刚才看了一下,Centos7已经支持NFSv4协议了,这里就不贴NFSv4了,有时间了再去看v4吧。
当client端要挂载NFS共享卷的时候,会发送RPC请求给服务端,而NFS服务端会在用户验证后将一个随机的cookie传送至客户端,以便客户端使用这个cookie来认证那些要访问的共享卷。
NFS的验证支持内置的IP/主机权限分配,同时也被tcp wrappers所限制。
Redhat上的NFS服务 (于linux和linux之间的传输文件)
Redhat内核中默认就开启了NFS支持,并且通过NFS的Daemon来控制NFS服务端的启动,而负责将网络套接字和RPC调用绑定起来,还 需要一个rpcbind服务(在redhat5中名为portmap),如果你在系统中找不到nfs服务,是因为没有安装nfs-utils这个包,这个 包提供了一些工具和服务脚本等。
整个NFS服务大概包含以下几个(抄自红帽官方文档,但是有点老了好像):
- nfs — 启动响应的RPC进程来响应NFS
- nfslock — 这是一个可选的服务,用来响应客户端对文件加锁的请求。
- rpcbind(portmap) — 这个是rpc服务的守护进程,用来建立连接并且响应rpc请求。
二、NFS的安装
1.挂载使用:
[root@localhost ~]# yum install nfs-utils -y //下载安装nfs服务
[root@localhost ~]# mkdir /westos
[root@localhost ~]# vim /etc/exports //打开主配置文件
/westos *(sync,rw)
(共享文件的目录) (* 代表所有,sync 为共享的方式,rw为可读、可写)
[root@localhost ~]# exportfs -rv //刷新服务
[root@localhost ~]# firewall-cmd --permanent --add-service=nfs
success
[root@localhost ~]# firewall-cmd --permanent --add-service=rpc-bind
success
[root@localhost ~]# firewall-cmd --permanent --add-service=mountd
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# chmod 777 /mnt //给/mnt满权限 (根据实际需要添加acl的方式来管理权限)
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable nfs-server.service
客户机测试:
[root@localhost ~]# yum install nfs-utils -y //下载安装软件nfs-utils
[root@localhost ~]# showmount -e 172.25.254.110 //-e 显示NFS服务器上的输出清单
Export list for 172.25.254.110:
/westos *
[root@localhost ~]# mount 172.25.254.110:/westos /mnt/
[root@localhost ~]# cd /mnt
[root@localhost ~]# ls
file2
2.以普通用户的身份共享文件
[root@localhost ~]# vim /etc/exports
/westos *(sync,rw,anonuid=1000,anongid=1000)
[root@localhost ~]# exportfs -rv
exporting *:/westos
客户机测试:
[root@localhost ~]# touch file
[root@localhost ~]# ll
-rw-r--r-- 1 student student 0 Jun 2 04:45 file
3.以root用户的身份共享文件
[root@localhost ~]# vim /etc/exports
/westos *(sync,rw,no_root_squash)
[root@localhost ~]# exportfs -rv
exporting *:/westos
[root@localhost ~]# touch file
[root@localhost ~]# ll
-rw-r--r-- 1 root root 0 Jun 2 04:45 file1
4.对不同ip的设定
[root@localhost ~]# vim /etc/exports //打开主配置文件
/westos 172.25.254.0/24(sync) 172.25.254.77(sync,rw) //同域的ip只可以读,不能写,只有指定的ip才具有可读、可写权限
[root@localhost ~]# exportfs -rv
exporting 172.25.254.77:/westos
exporting 172.25.254.0/24:/westos
用ip为172.25.254.123的主机测试:
[root@localhost ~]# mount 172.25.254.110:/westos /mnt/
[root@localhost ~]# cd /mnt/
[root@localhost ~]# rm -rf file1
rm: cannot remove ‘file1’: Read-only file system //报错,只读文件,无法删除。
用ip为172.25.254.77的主机测试:
[root@localhost ~]# mount 172.25.254.110:/westos /mnt/
[root@localhost ~]# [root@foundation77 mnt]# rm -fr file1
rm: cannot remove ‘file1’: Permission denied //此时无法删除该文件,需要在服务机上修改/westos的权限为777,才能进行以下操作。
[root@localhost ~]# rm -rf file1 ##删除成功
三、文件系统的自动挂载和自动取消挂载
服务端的NFS必须开启,客户端的autofs服务开启
[root@localhost ~]# yum install autofs -y
[root@localhost ~]# systemctl start autofs
[root@localhost ~]# cd /net/
[root@localhost net]# ls
[root@localhost net]# cd 172.25.254.110
[root@localhost 172.25.254.110]# ls
westos
[root@localhost 172.25.254.110]# cd westos/
[root@localhost westos]# ls
file2
[root@localhost westos]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda3 7660544 1055752 6604792 14% /
devtmpfs 503384 0 503384 0% /dev
tmpfs 508996 0 508996 0% /dev/shm
tmpfs 508996 6712 502284 2% /run
tmpfs 508996 0 508996 0% /sys/fs/cgroup
/dev/vda1 201388 81612 119776 41% /boot
172.25.254.110:/westos 10473984 3151232 7322752 31% /net/172.25.254.110/westos
取消挂载:
[root@localhost westos]# vim /etc/sysconfig/autofs ##修改取消挂载的时间为5s
13 TIMEOUT=5 ##自动取消挂载时间为 5 秒
[root@localhost westos]# systemctl restart autofs.service
[root@localhost westos]# cd
[root@localhost ~]# df ##5秒后自动取消挂载
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda3 7660544 1055776 6604768 14% /
devtmpfs 503384 0 503384 0% /dev
tmpfs 508996 0 508996 0% /dev/shm
tmpfs 508996 6712 502284 2% /run
tmpfs 508996 0 508996 0% /sys/fs/cgroup
/dev/vda1 201388 81612 119776 41% /boot
[root@localhost ~]#
四、自定义目录自动挂载
[root@station ~]# vim /etc/auto.master
/nfsdir /etc/auto.westos //指定挂载目录
#
#
[root@station ~]# vim /etc/auto.westos
westos -ro 172.25.254.110:/westos
[root@station ~]# systemctl restart autofs.service
[root@station ~]# cd /nfsdir
[root@station nfsdir]# cd westos
[root@station westos]# ls
file2