Linux文件共享之NFS

  • 简介
  • 部署NFS
  • server1
  • server2
  • 客户端可读写
  • server1
  • server2
  • 服务端指定文件所有者
  • server2
  • 自动挂载和卸载
  • server2
  • 更改自动挂载目录
  • server2
  • 指定挂载类型
  • server2


简介

NFS(Network File
System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

功能: 可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 2、NFS的好处
节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。

NFS参数

ro

只读访问

rw

读写访问

sync

所有数据在请求时写入共享

async

NFS在写入数据前可以相应请求

secure

NFS通过1024以下的安全TCP/IP端口发送

insecure

NFS通过1024以上的端口发送

wdelay

如果多个用户要写入NFS目录,则归组写入(默认)

no_wdelay

如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

Hide

在NFS共享目录中不共享其子目录

no_hide

共享NFS目录的子目录

subtree_check

如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

no_subtree_check

和上面相对,不检查父目录权限

all_squash

共享文件的UID和GID映射匿名用户anonymous,适合公用目录。不管客户端以哪个身份建立文件,都会被映射成服务端匿名用户,如果指定了,就是指定的1001的用户

no_all_squash

保留共享文件的UID和GID(默认)

root_squash

root用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squas

root用户具有根目录的完全管理访问权限 ,客户端以哪个身份建立文件,文件就属于客户端哪个用户的

anonuid=xxx

指定NFS服务器/etc/passwd文件中匿名用户的UID ,指定客户端的用户身份为服务端已经存在的用户身份

前期准备

server1-172.25.70.11

服务端

server2-172.25.70.12

客户端

linux nfs 所有IP linux中的nfs_linux nfs 所有IP

部署NFS

server1

yum install nfs-utils -y
systemctl start nfs-server 开启服务nfs
vim /etc/exports 编辑该服务的配置文件
	/mnt 172.25.70.0/24(ro,sync)
将这台nfs服务器的/mnt这个目录挂载在本地这个网段的任何一个主机上面,并且只读,而且同步
exportfs -rv 刷新
systemctl stop firewalld
firewall-cmd --list-all  或者查看防火墙的nfs和rpc服务是否启动

linux nfs 所有IP linux中的nfs_linux nfs 所有IP_02

linux nfs 所有IP linux中的nfs_服务端_03

server2

yum install nfs-utils -y
systemctl start nfs-server
exportfs -rv刷新
showmount -e 172.25.70.11 快速查看126远程服务器共享出来的东西
mount 172.25.70.11:/mnt/ /mnt/ 挂载服务端的目录到本地

linux nfs 所有IP linux中的nfs_服务端_04

客户端可读写

server1

vim /etc/exports
	/mnt 172.25.70.0/24(rw,sync)	
exportfs -rv刷新更改

在服务端,vim /etc/exports 修改成为读写方式共享,让客户端可以建立和删除文件

server2

linux nfs 所有IP linux中的nfs_客户端_05

服务端指定文件所有者

vim /etc/exports 
	/mnt 172.25.70.0/24(rw,async,anonuid=1001,anonugid=1001)使得在客户端本地建立文件属于服务端的指定的1001用户
exportfs -rv刷新更改
chmod 777 /mnt

其中
设定参数 all_squash表示,转变所有客户端的用户身份为服务器用户,
all_squash也就是说不管客户端是以什么样的身份来进行访问的,都会被压缩成为anonuid、anongid 指定的id
客户端访问服务端默认是使用nfsnobody这个用户来进行访问的。
服务器默认共享时,也是加上了all_squash这个参数
no_root_squash参数,在客户端建立文件file3,在服务端的/mnt文件中file3的所有者和所有组都变为root

server2

linux nfs 所有IP linux中的nfs_linux nfs 所有IP_06

自动挂载和卸载

前面当一个用户注册信息的时候放在一台主机里面,当主机坏了,这个用户就登陆不了,
当由有多个用户分别对应多台主机的时候,每个用户的信息都在自己的服务器里面放着,但是这样很不好,当其中一个服务器挂了,那个主机的信息就没了,
实际在企业当中,主机系统和存储数据是分离的,客户通过主机注册系统,然后放到存储数据的地方,
每台主机和存储设备相连但是当主机不用的时候,没有必要和存储系统连接,浪费资源。

现在想实现客户端,用的时候自动挂载,不用的时候自动卸载。

server2

yum install autofs -y   安装可以实现自动挂载文件系统的服务
systemctl start autofs
systemctl enable autofs 设置开机启动

开启autofs这个服务后,系统就会有/net这个目录
vim /etc/sysconfig/autofs 更改退出目录时自动卸载的时间,默认为300s,更改为3秒
	timeout=3
systemctl restart autofs.services
cd /net/172.25.70.11/mnt

linux nfs 所有IP linux中的nfs_服务器_07

更改自动挂载目录

server2

mkdir /westos_nfs建立共享目录
vim /etc/auto.master
	/mnt /etc/auto.nfs

vim /etc/auto.nfs
	westos 172.5.70.11:/mnt

systemctl restart autofs.services

linux nfs 所有IP linux中的nfs_linux nfs 所有IP_08

指定挂载类型

server2

vim /etc/auto.nfs
westos -ro,vers=3 172.25.254.11:/mnt
systemctl restart autofs