NFS共享存储的安装及使用

NFS共享存储的安装及使用

实现存储服务方式

1.1 基于软件实现存储服务

  • NFS
  • FTP
  • Samba分布式存储

1.2 NFS网络文件系统

基于网络实现数据共享存储,针对于中小企业,只能部署在linux系统中。

1.3 samba是NFS服务升级产品

可以实现windows和linux服务器数据统一共享存储。

1.4 分布式存储

可以将数据分散存储在不同服务器上,增加数据存储安全性,和数据存储高效性。

1.5 基于硬件实现存储服务

  • IBM
  • 华为
  • EMC

1.6 存储架构实现数据存储

  • SAN(基于光纤网络,实现数据存储)
  • NAS(基于以太网,实现数据存储)
  • DAS(实现直连存储,群晖存储)

存储服务工作原理过程

2.1 NFS服务端

  • 启动好rpc服务,用于接受用户访问请求。
  • 启动好nfs服务,用于处理用户访问请求。
  • 存储服务信息会像RPC服务进行注册。

2.2 NFS客户端

  • 客户端和服务端建立好网络连接。
  • 客户端和服务端进行挂载操作过程。
  • 客户端存储数据实际上是保存到服务端磁盘中。

2.3 RPC服务工作原理:远程过程调用程序

  • RPC服务可以作为存储服务中介。
  • RPC服务用于接收存储服务信息,NFS服务运行之后会有多进程出现、多端口出现,而RPC中介程序只用一个进程和端口。
  • RPC服务将用户请求信息发送给后端NFS服务进行处理。

image-20231117155517863

NFS服务端安装配置

3.1 关闭防火墙以及安全策略

1)关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2)关闭selinux安全策略

sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

3.2 安装nfs-server服务

yum install nfs-utils rpcbind -y

3.3 将nfs服务端的/data目录共享给XXX.16.1.0/24网段内的所有主机

vi /etc/exports
/data XXX.16.1.0/24(rw,sync,all_squash)

3.4 建立共享目录,并设置权限

注:共享目录会记录在/var/lib/nfs/etab。

mkdir /data
chown -R nfsnobody.nfsnobody /data

3.5 启动服务,并将其加入开机自启动

systemctl start rpcbind nfs-server
systemctl enable rpcbind nfs-server

NFS客户端安装配置

4.1 安装客户端工具,仅启动rpcbind服务

yum install nfs-utils rpcbind -y

4.2 打开rpcbind服务,并开机自启动

systemctl start rpcbind
systemctl enable rpcbind

4.3 创建一个空目录,并进行挂载查看

mkdir web01
mount XXX.16.1.31:/data /web01
df -h

4.4 卸载nfs共享

umount /web01

4.5 可以通过mount -o指定挂在参数,禁止使用suid、exec,增加安全性

mount -t nfs -o nosuid,noexec,nodev XXX.16.1.31:/data /web01

4.6 有时也需要考虑性能相关参数(可选)

mount -t nfs -o noatime,nodiratime XXX.16.1.31:/data /web01

NFS服务端配置文件参数、服务端命令详解:

1)/etc/exports配置文件详解

rw 读写权限
ro 只读权限
root_squash 当以root用户身份进行数据存储时, 会将root用户身份进行转换(不常用)
no_root_squash 当以root用户身份进行数据存储时, 不会将root用户身份进行转换(不常用)
all_squash 当以普通用户身份进行数据存储时, 会将普通用户身份进行转换
no_all_squash 当以普通用户身份进行数据存储时, 不会将普通用户身份进行转换
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后在写入硬盘;这样效率高,但可能会丢失数据
anonuid 指定nfs存储默认映射用户信息(不做配置默认映射的是nfsnobody)
anongid 指定nfs存储默认映射用户组信息

2)验证ro权限实战

服务端修改rw为ro参数:

[root@nfs ~]# cat /etc/exports
/data XXX.16.1.0/24(ro,sync,all_squash)
systemctl restart nfs-server

验证客户端:(发现此时已经无法在/mnt下创建文件)

mount -t nfs XXX.16.1.31:/data /mnt
[root@web01 mnt]# touch 123
touch: setting times of ‘123’: Read-only file system

3)验证all_squash、anonuid、anongid权限

服务端修改为:

[root@nfs ~]# cat /etc/exports
/data XXX.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

创建对应uid和gid用户:

[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u 666 -g 666 www

重启nfs服务:

[root@nfs ~]# systemctl restart nfs-server

授权共享目录:

[root@nfs ~]# chown -R www.www /data

服务端查看此目录下面的文件:

[root@nfs ~]# ll /data
drwxr-xr-x 2 www www 6 Jun 10 21:11 123

客户端验证:(这时发现客户端是666)

[root@web01 mnt]# ll /mnt
drwxr-xr-x 2 666 666 6 Jun 10 21:11 123

将客户端也创建一个指定uid、gid为666的用户:

[root@web01 mnt]# groupadd -g 666 www
[root@web01 mnt]# useradd www -u 666 -g 666

此时再查看:

[root@web01 mnt]# ll /mnt
drwxr-xr-x 2 www www 6 Jun 10 21:11 123

4)服务端命令及配置默认参数配置文件

  • /usr/sbin/exportfs命令
exportfs -rv 平滑重启
例如:exportfs -o rw,sync XXX.16.1.0/24:/data01 临时设置存储目录
  • rpcbind命令
rpcinfo -p 查看是否注册信息
showmount -e 查看存储目录信息
  • 服务默认配置文件,也是nfs家目录
/var/lib/nfs/etab
  • 客户端默认挂载参数
/proc/mounts

客户端挂载知识

mount -o(以下参数也可以放入/etc/fstab中使用)

rw 挂载后挂载点目录为可读写权限(不加此参数,默认就有)
ro 挂载后挂载点目录为可读权限(默认)
setsuid 挂载后具有命令文件属主能力(获取suid能力)
nosuid 挂载后挂载点目录中不可以实现setuid能力
dev 挂载点目录中可以存在设备文件信息
nodev 挂载点目录中不可以存在设备文件信息
exec 挂载目录中一些脚本文件可以直接执行
noexec 挂载目录中一些脚本文件禁止直接执行
auto 实现自动挂载操作功能,在/etc/fstab中使用
noauto 不要实现自动挂载功能
nouser 不支持普通用户挂载目录,在/etc/fstab中使用
user 支持普通用户挂载目录,在/etc/fstab中使用
async 异步方式存储数据信息(效率高,不出现卡顿,但安全性不高)
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
atime 数据被访问时, 修改atime信息, 时间信息保存在inode中(磁盘) 消耗IO
notime 数据被访问时, 不要修改atime信息, inode不会被修改,不会消耗IO
diratime 目录被访问时, 修改diratime信息, 时间信息保存在inode中(磁盘) 消耗IO
nodiratime 目录被访问时, 不要修改diratime信息, inode不会被修改,不会消耗IO
remount 重新挂载参数

企业案例:

服务器在有些时候会出现文件系统异常情况,造成整个系统只读情况:

mount -o remount rw / 可以解决文件系统逻辑错误问题
posted @ 2023-11-17 16:01  寻梦99  阅读(360)  评论(0)    收藏  举报