一、NFS基本信息
网络文件系统 (NFS) 是类Unix系统和网络附加存储文件管理器常用的网络文件系统 , 允许多个客户端通过网络共享文件访问。它可用于提供对共享二进制目录的访问 , 也可用于允许用户在同一工作组中从不同客户端访问其文件。
NFS是分布式计算机系统的一个组成部分,可实现在异构网络上共享和装配远程文件系统。NFS由Sun公司开发,目前已经成为文件服务的一个标准(RFC 1904 ,RFC 1813)。
其最大功能是可以通过网络让不同操作系统的计算机共享数据,所以也可以看作是一台文件服务器。NFS除了提供samba之外,还提供Windows与Linux以及UNIX与Linux之间的通信的方法
客户端PC可以挂载NFS服务器所提供的目录,并且挂载之后这个目录看起来如同本地的磁盘分区一样,可以使用cp、cd、mv、rm、df等与磁盘相关的命令。
二、NFS的安装配置
服务端:
安装软件
[root@server ~]# yum install nfs-utils -y
配置/etc/exports文件
用户可以把需要共享的文件系统直接编辑到/etc/exports中,当NFS服务器重新启动时系统就会自动读取该文件,从而告诉内核要输出的文件系统和相关的存根权限
以下为常用的一些访问限制参数
参数 | 涵义 |
---|---|
rw | 可读写权限 |
ro | 只读权限 |
no_root_squash | 如果登录NFS主机使用共享目录的身份是root,对于这个共享目录来说,它具有root的权限 |
root_squash | 当登录NFS主机使用共享目录的身份是root,其权限将被转换成匿名使用者,UID GID会变成nobody |
all_squash | 忽略登录NFS使用者的身份,其身份都会被转换为匿名使用者nobody |
anonuid | 默认nobody,也可以自行设置这个UID的值 |
anongid | 同anonuid,但是变为GID |
sync | 同步写入数据到内存与硬盘中 |
async | 数据会暂存与内存中,而并非写入硬盘 |
以读写、数据同步的方式共享文件系统
[root@server ~]# vim /etc/exports
/mnt *(sync,rw)
[root@server ~]# systemctl start nfs-server
[root@server ~]# systemctl enable nfs-server
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# exportfs -rv ##-r同步更新/etc/exports中的设置 -v在输出时将共享的目录显示在屏幕上
exporting *:/mnt
[root@server ~]# chmod 777 /mnt/ ##为了实验方便给一个满权限,但实际需要添加acl的方式来管理权限
客户端:
安装软件
[root@client ~]# yum install nfs-utils -y
查看205上可以挂载的目录
[root@client ~]# showmount -e 172.25.254.205 ##-e显示NFS服务器的输出清单
Export list for 172.25.254.205:
/mnt *
挂载使用
[root@client ~]# mount 172.25.254.205:/mnt/ /mnt/
[root@client mnt]# touch file
[root@client mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jun 2 04:41 file
以student用户student组的形式共享文件系统
[root@server ~]# vim /etc/exports
/mnt *(sync,rw,anonuid=1000,anongid=1000)
[root@server ~]# exportfs -rv
exporting *:/mnt
[root@client mnt]# touch file
[root@client mnt]# ll
-rw-r--r-- 1 student student 0 Jun 2 04:45 file
以root的身份登录
[root@server ~]# vim /etc/exports
/mnt *(sync,rw,no_root_squash)##不转换用户身份
[root@server ~]# exportfs -rv
[root@client mnt]# touch file
[root@client mnt]# ll
-rw-r--r-- 1 root root 0 Jun 2 04:50 file
对不同ip设定不同权力
[root@server ~]# vim /etc/exports
/westos 172.25.254.0/24(sync) 172.25.254.5(sync,rw)
[root@server ~]# exportfs -rv
exporting 172.25.254.5:/westos
exporting 172.25.254.0/24:/westos
[root@client ~]# mount 172.25.254.205:/westos /mnt/
[root@client ~]# cd /mnt/
[root@client mnt]# rm -rf file1
rm: cannot remove ‘file1’: Read-only file system
[root@foundation5 ~]# mount 172.25.254.205:/westos /mnt/
[root@foundation5 mnt]# rm -rf file1 ##删除成功
三、文件系统的自动挂载和取消挂载
[客户端和服务端nfs服务必须都在开启状态]
安装软件、开启服务
[root@client ~]# yum install autofs -y
[root@client ~]# systemctl start autofs
共享文件的路径为/net/服务器ip/共享目录
[root@client ~]# yum install autofs -y
[root@client ~]# systemctl start autofs
[root@client ~]# cd /net/
[root@client net]# ls
[root@client net]# cd 172.25.254.205
[root@client 172.25.254.205]# ls
mnt westos
[root@client 172.25.254.205]# cd westos/
切换到共享目录之后即自动挂载
[root@client westos]# df ##已经自动挂载(切换到/net/172.25.254.205/westos后才进行挂载)
取消挂载:
[root@client westos]# vim /etc/sysconfig/autofs ##修改取消挂载的时间为5s
13 TIMEOUT=5
[root@client westos]# systemctl restart autofs.service
[root@client westos]# cd
[root@client ~]# df ##过5s之后自动取消挂载
四、自定义目录自动挂载点
实验目的:把172.25.254.205:/westos 挂载到 /nfs/westos
只读挂载
[root@client westos]# vim /etc/auto.master##指定挂载点的上层目录即/nfs
8 /nfs /etc/auto.westos
[root@client westos]# vim /etc/auto.westos
westos -ro 172.25.254.205:/westos ##挂载点、挂载方式和指定挂载的目录
[root@client westos]# cd
[root@client ~]# systemctl restart autofs.service
[root@client ~]# cd /nfs/westos
[root@client westos]# df
172.25.254.205:/westos 10473984 3159424 7314560 31% /nfs/westos
以读写、版本3方式挂载(-rw,vers=3)
[root@client westos]# vim /etc/auto.master##指定挂载点的上层目录即/nfs
8 /nfs /etc/auto.westos
[root@client westos]# vim /etc/auto.westos
westos -rw,vers=3 172.25.254.205:/westos
[root@client ~]# systemctl restart autofs.service
[root@client ~]# cd /nfs/westos
[root@client westos]# mount