网络文件共享系统NFS服务搭建

一、NFS介绍

一种情况是一台普通的服务器安装Linux操作系统,配置nfs服务。方法如下

一种情况是一台磁盘阵列柜,具体方法要看具体的产商。

NFS Network File System

网络文件系统,由Sun公司研发的文件系统,简单的说也可以实现文件共享,主要用来做服务器后端共享存储。

任何一个网站都是由零散的网页构成的。

image

NFS的作用:主要用来实现服务器后端的共享存储,适用于Linux与Linux间的数据共享。

CIFS类似于NFS,适用于Linux与windows间的数据共享。

借助文件系统可以把后端的文件共享出去,但是nfs没有提供文件传输功能,要想实现文件传输借助了Linux系统中的rpc机制实现文件传输功能。

二、NFS实现

软件:nfs-utils实现文件共享功能,rpcbind实现文件传输功能。

配置文件:/etc/exports  在这个文件实现nfs服务器上的数据共享。

服务:nfs-server

格式:目录名称    客户端地址(权限,权限,权限)

也就是说,这个目录挂载出去,允许我写的客户端使用。

客户端地址:

1.单个IP地址   eg:192.168.1.10/24

2.网段:eg:192.168.1.0/24

3.主机名:node01.linux.com

4.所有 : *(这个目录,允许所有主机使用,也就是说,这个客户端需要可以和NFS服务器通信。)

范围写的越小越好。能写网段不写*,能写IP地址不写网段。

权限:

1.ro代表只读共享的意思,

2.rw代表读写共享的意思,

3.sync 同步

4.async异步(默认)

拿计算机解释,三个核心部件,CPU,硬盘,内存,

同步的意思是CPU处理完数据以后会直接把数据交给硬盘保存

异步的意思是CPU处理完数据以后不会直接把数据交给硬盘保存,而是会把数据交给内存,过一段时间之后,内存交给硬盘。

从数据的处理速度来说肯定是异步快,

但是从数据的安全性来讲是同步数据安全性更高。

速度和安全性肯定是相互矛盾的。

需要根据公司业务需求来讲。

默认是异步,只追求速度。

5.no_root_squash 保留root用户创建的文件的权限信息

权限必写的只有ro或者是rw

三、配置NFS只读共享

一台NFS服务器,两台客户端

要求:共享/webdata目录,要求/webdata为独立的存储空间,允许另外两台客户端以只读的方式挂载使用。

以下为NFS服务器上操作:

1.创建分区,挂载到/webdata目录

image

如上图所示,可以使用lsblk命令查看系统中所有可用的块设备。

这个命令非常适合于查看整个系统的存储布局,并且可以用来确定设备是否被挂载以及挂载的位置。

image

如上图所示,可以使用fdisk命令 加上磁盘名,来在磁盘上创建新分区。

image

如上图所示,使用partprobe命令来使得系统核心重新检测硬盘/dev/sdb分区表变化。

随后使用lsblk | grep sdb来查看硬盘sdb的分区情况。

image

如上图所示,可以使用mkfs -t 文件系统名称 磁盘分区名 来格式化硬盘分区并赋予其文件系统。

# 设置开机硬盘自动挂载
vim /etc/fstab
# 编辑内容如下:
/dev/sdb1    /webdata    ext4    defaults    0     0
# 编辑完保存退出即可

# 重新自动挂载
mount -a

image

如上图所示,需要在nfs服务器上实现磁盘开机自动挂载,就使用vim 编辑器编辑/etc/fstab文件,随后使用mount -a命令来重新自动挂载所有配置在 /etc/fstab 文件中的条目的命令。这里的 -a 是 --all 的缩写,指示 mount 命令去挂载所有在配置文件中定义的文件系统。

image

如上图所示,此时可以使用df -hT命令来查看分区是否挂载成功。

可以在/webdata/中创建几个测试文件

2.安装nfs相关的软件

安装NFS相关软件:yum install -y nfs-utils rpcbind

image

如上图所示,此时在nfs服务器上安装这两个软件,以实现文件的共享。

3.编辑配置文件实现数据共享

查看配置文件:/etc/exports 是否存在:ls -l /etc/exports

编辑配置文件:vim /etc/exports

添加内容如下:

# 语法:nfs服务挂载共享文件目录    共享客户端IP(权限)
/webdata    192.168.183.10(ro)    192.168.183.11(ro)

image

如上图所示,此时编辑nfs服务的配置文件,要共享的文件夹名称,可以连接nfs服务器的客户端的IP地址,以及客户端的权限。

4.重启nfs-server服务

systemctl start nfs-server
systemctl enable nfs-server

image

如上图所示,是重启nfs-server服务,并且配置开机自启动。

查看nfs服务的相关进程:ps -elf | grep nfs

image

5.在客户端测试挂载使用nfs服务

需要我们在Linux客户端上安装一个nfs-utils的软件:yum install -y nfs-utils

挂载nfs服务:mount -t nfs 192.168.183.12:/webdata /mnt/

image

如上图所示,一旦挂载成功后NFS服务器上的文件就会映射到我客户端的挂载点上。

其中nfs 的后面紧跟着的是我nfs服务器的IP地址。

开机挂载方式1(/etc/fstab):

image

如上图所示,此时打开/etc/fatab文件配置nfs服务的开机自动挂载,具体格式如上图所示,随后使用mount -a使得重新自动挂载所有配置在 /etc/fstab 文件中的条目的命令。

# 编辑/etc/fatab 配置开机挂载
vim /etc/fatab
# 粘贴以下内容:ip地址:nfs服务ip地址
192.168.183.12:/webdata    /mnt    nfs    defaults    0 0

开机挂载方式2(/etc/rc.d/rc.local):

# 编辑/etc/rc.d/rc.local 配置开机挂载
vim /etc/rc.d/rc.local
# 粘贴以下内容:ip地址:nfs服务ip地址
mount -t nfs 192.168.183.12:/webdata /mnt/

 

四.配置NFS的读写共享

1.创建/test目录,并准备测试文件

mkdir /test
touch /test/{1..10}.sh
ls /test/

image

2.编辑nfs配置文件,支持读写共享

查看配置文件:/etc/exports 是否存在:ls -l /etc/exports

编辑配置文件:vim /etc/exports

添加内容如下:

/test/ 192.168.183.10(rw sync,no_root_squash) 192.168.183.11(rw sync,no_root_squash)

image

3.重新读取nfs配置文件,使其生效

重新读取nfs配置文件:exportfs -rav

image

如上图所示,是在不重启nfs服务的前提下,重新读取nfs配置文件,使得nfs配置文件中的配置生效。

4.在客户端测试挂载读写共享

# 编辑/etc/fatab 配置开机挂载
vim /etc/fatab
# 粘贴以下内容:ip地址:nfs服务ip地址
192.168.183.12:/test    /testdir    nfs    defaults    0 0

image

如上图所示,在客户端上创建新目录,编辑/etc/fstab,实现在Linux客户端上的开机自动挂载,随后使用mount -a命令来使得系统重新读取/etc/fstab中的配置,然后使用df -hT查看当前系统的硬盘使用情况,此时在Linux客户端往挂载nfs服务的目录中编写文件,但是权限拒绝,

image

如上图所示,还需要在nfs服务器上确保其他用户在nfs服务器上对/test/用户拥有读写权限,

添加读取权限:chmod o+w /test/

image

如上图所示,在nfs服务器上对/test/要共享的目录,加上其他用户都有的w写权限,

image

如上图所示,此时在Linux客户端实际上对挂载nfs服务的目录进行创建文件的操作,这个新的aa.txt文件是存到了后端nfs服务器的test目录上了

五.对no_root_squash 保留root用户创建的文件的权限信息的解释。(这个权限,一般是要加上的)

客户端向NFS服务器写入数据时,默认NFS服务器会将文件的属主、属组修改为nfsnobody的用户no_root_squash:保留root用户创建的文件的权限信息

 

posted @ 2025-10-14 16:27  阿尔法哲  阅读(16)  评论(0)    收藏  举报