NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
以下是NFS最显而易见的好处:
1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
3. 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
NFS组成:
1.一台NFS服务器和若干台客户机
2.客户机通过TCP/IP网络远程访问存放在NFS服务器上的数据。
3.在NFS服务器正式启用前,需要根据实际环境和需求,配置一些NFS参数
常
被
使
用
的
情
景
:
\color{blue}{常被使用的情景:}
常被使用的情景:
在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。
下面我们进行实验说明:
首先,环境搭建:
1.两台环境纯净的主机,一台做server服务器,一台做client客户端。
2.网络配置
3.yum仓库搭建,yum源指定,确保可以使用
4.主机名更改为:server.xyy.com和server.client.com 方便自己使用
5.本地解析配置,将各自主机IP与域名【主机名】对应。
【NFS服务器搭建:】
在server服务器上:
systemctl stop firewalld ##关闭火墙
yum install nfs-utils -y ##下载nfs
vim /etc/exports ###编辑nfs配置文件
/mnt 172.25.254.0/24(ro,sync)
###写入可共使用的目录,以及可以被哪个网段或者哪个主机识别到。
##ro为只读,sync为实时同步
systemctl start nfs-server
客户端:
systemctl stop firewalld
yum install nfs-utils -y
showmount -e 172.25.254.200 ###查看服务器可被使用的目录或磁盘
mount 172.25.254.200:/mnt /xyy ###挂载到/xyy目录下
cd /xyy
NFS服务器的搭建并不难,下面我们来对其配置参数进行说明:
配置参数:rw读写 给server的/mnt/权限777后可以建立文件
vim /etc/exports
/mnt172.25.254.0/24(rw,async,anonuid=1001,anongid=1001,all_squash,no_root_squash)
###指定的uid和gid为服务端已经有了的用户id
no_root_squash 沿用客户端管理用户的身份,不做转换
all_squash 所用用户的身份都要做转换 【优先级高,最终会被执行】
如果有指定anonuid和anongid的话,就会被转换为指定的uid,没有指定则会转化为默认用户nsnobody。
客户端:
在/xyy建立文件,ll查看属性,进行测试。
首先我们在服务器上先更改配置如下图:
在客户端进行测试:
配
置
已
经
更
改
为
可
读
可
写
了
,
却
不
能
创
建
文
件
,
因
为
目
录
不
允
许
我
们
创
建
\color{blue}{配置已经更改为可读可写了,却不能创建文件,因为目录不允许我们创建}
配置已经更改为可读可写了,却不能创建文件,因为目录不允许我们创建
我
们
在
服
务
器
上
更
改
/
m
n
t
目
录
的
权
限
,
现
在
为
755
,
我
们
改
为
777
,
再
测
试
\color{blue}{我们在服务器上更改/mnt目录的权限,现在为755,我们改为777,再测试}
我们在服务器上更改/mnt目录的权限,现在为755,我们改为777,再测试
客户端:
当
没
有
指
定
u
i
d
和
g
i
d
时
:
\color{blue}{当没有指定uid和gid时:}
当没有指定uid和gid时:
使
用
客
户
端
原
有
I
D
,
不
做
转
换
:
\color{blue}{使用客户端原有ID,不做转换:}
使用客户端原有ID,不做转换:
服务器:
exportfs -rv
客户端:
不是很明显,我们在客户端重新建立一个用户,再测试下:
发现客户端所创建的文件,其所属用户是客户端的用户,而不再是服务器的用户。
在上面的实验中,我们其实会发现,我们在第一次挂载后便没有卸载,而是直接切换用户继续使用。这样并不合理,并不是每个用户都该拥有使用的权限的。我们下面将进行系统和存储分离。效果为:使用时挂载,不使用时自动卸载掉。
在客户端先卸载/mnt
yum install autofs -y ###自动文件系统
systemctl start autofs
systemctl enable autofs
ls -ld /net
systemctl stop autofs ###关闭后就没有/net目录
ls -ld /net
systemctl start autofs
vim /etc/autofs.conf 或者 /etc/sysconfig/autofs
##不同版本的主配置文件路径不同
timeout = 5 切出目录后自动卸载的间隔时间
systemctl restart autofs.service
cd /net/172.25.254.199/mnt/
df ###查看,发现mnt有挂载
cd ~ ###切换到别的目录【不使用199的/mnt】
df ###查看,mnt已经被卸载掉了 【注意查看时间要等timeout设定的时长之后】
我们同样可以试着去切换用户,看是否还可以直接使用200主机的/mnt,但没必要,因为我们刚才卸载掉了/xyy上的挂载设备,并没有再次重新挂载。即/xyy上并无设备,就不能使用。
我
们
在
刚
才
去
使
用
200
的
/
m
n
t
时
,
进
入
的
是
/
n
e
t
这
个
目
录
,
这
是
个
默
认
的
网
络
共
享
目
录
。
\color{blue}{我们在刚才去使用200的/mnt时,进入的是/net这个目录,这是个默认的网络共享目录。}
我们在刚才去使用200的/mnt时,进入的是/net这个目录,这是个默认的网络共享目录。
但
是
如
果
不
想
使
用
这
个
目
录
,
也
可
以
做
修
改
\color{blue}{但是如果不想使用这个目录,也可以做修改}
但是如果不想使用这个目录,也可以做修改
客户端:
vim /etc/auto.master ###主策略文件
/xyy /etc/auto.nfs ###指定子策略文件
vim /etc/auto.nfs ###子策略文件
netdir 172.25.254.200:/mnt ###指定默认被挂载到的目录和要挂载的设备
systemctl restart autofs
cd /xyy/netdir
我
们
同
样
可
以
在
子
策
略
文
件
中
指
定
设
置
,
例
如
,
只
读
:
\color{blue}{我们同样可以在子策略文件中指定设置,例如,只读:}
我们同样可以在子策略文件中指定设置,例如,只读:
使用mount指令查看挂载参数:
目录匹配:可以匹配服务端所拥有的目录进行使用:作用:给每一个用户单独的目录
客户端:
vim /etc/auto.nfs
* -ro,vers=3 172.25.254.199:/mnt/&
systemctl restart autofs
cd /mnt/westos1
df ###查询注意等设定刷新时长过后再查询
cd /mnt/westos2
df ###查询注意等设定刷新时长过后再查询
服务器:
cd /mnt
mkdir a b c
大大的小小阳