Linux系统下的NFS服务器部署

时间:2022-09-17 09:19:29

一、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后才进行挂载)

Linux系统下的NFS服务器部署
取消挂载:

[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之后自动取消挂载

Linux系统下的NFS服务器部署
Linux系统下的NFS服务器部署

四、自定义目录自动挂载点

实验目的:把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

Linux系统下的NFS服务器部署
Linux系统下的NFS服务器部署
以读写、版本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

Linux系统下的NFS服务器部署