Linux服务器之文件共享服务

举报
tea_year 发表于 2025/07/29 23:29:17 2025/07/29
【摘要】 任务背景由于业务驱动,为了提高用户的访问效率,现需要将原有web服务器上的静态资源文件分离出来,单独保存到一台文件服务器上。任务要求一台应用服务器web-server部署apache,静态网页资源存放在另外一台NFS服务器上对于NFS服务器上保存的静态资源实行实时备份(inotify + rsync)任务拆解共享存储服务器搭建NFS服务,为web服务器提供静态资源文件内容创建共享目录来保存静...

任务背景

由于业务驱动,为了提高用户的访问效率,现需要将原有web服务器上的静态资源文件分离出来,单独保存到一台文件服务器上。

web后端共享存储.png


任务要求

  1. 一台应用服务器web-server部署apache,静态网页资源存放在另外一台NFS服务器上

  2. 对于NFS服务器上保存的静态资源实行实时备份(inotify + rsync)

任务拆解

  1. 共享存储服务器搭建NFS服务,为web服务器提供静态资源文件内容

    • 创建共享目录来保存静态资源文件

    • 发布该共享目录给web服务使用

  2. 一台服务器搭建web服务,使用mount指定对NFS服务器进行挂载

  3. 对NFS服务器中的静态资源进行实时备份(inotify + rsync)

1.png

涉及知识点

  • NFS服务的搭建

  • mount命令挂载网络资源

  • rsync工具实现对共享存储上的静态资源备份

课程目标

  • 了解NFS服务的应用场景及特点

  • 能够通过NFS服务实现文件共享(重点)

  • 能够使用mount命令挂载网络共享资源

环境搭建

1、任务解读

① 搭建NFS服务器(用于静态资源的存储如图片、视频、附件)

② 使用mount指定对NFS服务器进行挂载,挂载到Web服务器中

③ 对NFS服务器中的静态资源进行实时备份(inotify + rsync)

2、环境准备

准备三台机器如下所示(IP依据个人环境准备)

编号 主机名称FQDN IP地址 作用
1 web.yun.cn 10.1.1.11 Web服务器
2 nfs.yun.cn 10.1.1.12 NFS服务器
3 backup.yun.cn 10.1.1.13 Backup服务器

第一步:设置计算机的在主机名称

Web# hostnamectl set-hostname web.yun.cn
NFS# hostnamectl set-hostname nfs.yun.cn
Backup# hostnamectl set-hostname backup.yun.cn
​
设置完毕后,可以执行su命令,就立马更新主机名了。

第二步:设置IP地址

# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet'
BOOTPROT0="static'
IPADDR=10.1.1.11
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
DNS1=8.8.8.8
DNS2=114.114.114.114
NAME='ens33"
DEVICE="ens33"
ONBOOT="yes"
//...准备另外两台机器
​
准备好后,分别重启网络服务
# systemctl restart network

第三步:关闭防火墙与SELinux

关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
​
关闭SELinux
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled

第四步:配置YUM源

参考:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.7b101b11RLgyI4
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# yum makecache

3、NFS概述

NFS(Network File System)网络文件系统,主要用于Linux系统上实现文件共享的一种协议,其客户端主要是Linux

没有用户认证机制,且数据在网络上传送的时候是明文传送,一般只能在局域网中使用

支持多节点同时挂载及并发写入

企业应用:为集群中的web server提供后端存储(做静态资源服务器)

4、NFS组成

rpcbind : 负责NFS的数据传输,远程过程调用 tcp/udp协议 端口111

nfs-utils :控制共享哪些文件,权限管理

RPC(Remote Procedure Call Protocol): 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。

image-20200413154315842.png

5、与NFS相关的软件包

nfs-utils-1.2.3-26.el6.x86_64       nfs服务的一个脚本控制工具(服务端与客户端)
nfs4-acl-tools-0.3.3-6.el6.x86_64   acl 工具包
nfs-utils-lib-1.1.5-4.el6.x86_64    nfs 库文件

6、在nfs机器上安装NFS软件

一般服务器上已经安装过了,不需要安装了

安装命令
# yum install rpcbind nfs-utils -y
查询是否安装
# rpm -q rpcbind
# rpm -aq|grep ^nfs

7、NFS的配置文件

NFS的配置文件是/etc/exports,初始化的配置文件里面没有任何内容,可以使用man 5 exports查看相关配置说明
# vim /etc/exports
​
在进行配置的时候,我们只需要配置两列即可,一列代表共享目录,一列代表共享选项。
共享目录   共享选项
/share    *(ro,sync)
/public   *(ro,sync)
​
在共享选项中*(ro,sync):*号代表共享的网络,(ro,sync):括号内部代表其他属性。详解如下:
共享选项-共享主机:
*   :代表所有主机
192.168.0.0/24:代表共享给某个网段192.168.0.1 ~ 192.168.0.254
192.168.0.0/24(rw) 192.168.1.0/24(ro) :代表共享给不同网段
192.168.0.254:共享给某个IP
*.yun.cn:代表共享给某个域下的所有主机
​
共享选项-括号内部:
ro:只读
rw:读写
sync:实时同步,直接写入磁盘(安全性最高)
async:异步,先缓存数据在内存然后再同步磁盘(效率最高,但是有丢失文件风险)
anonuid:设置访问nfs服务的用户的uid,uid需要在/etc/passwd中存在
anongid:设置访问nfs服务的用户的gid
root_squash :默认选项 root用户创建的文件的属主和属组都变成nfsnobody,其他人nfs-server端是它自己,client端是nobody。(访问NFS服务器时,映射为匿名账号)
no_root_squash:root用户创建的文件属主和属组还是root,其他人server端是它自己uid,client端是nobody。(访问NFS服务器时,映射为root管理员账号)
all_squash: 不管是root还是其他普通用户创建的文件的属主和属组都是nfsnobody
​
说明:
anonuid和anongid参数和all_squash一起使用。
all_squash表示不管是root还是其他普通用户从客户端所创建的文件在服务器端的拥有者和所属组都是nfsnobody;服务端为了对文件做相应管理,可以设置anonuid和anongid进而指定文件的拥有者和所属组

三、NFS任务解决方案

1、搭建NFS服务器

第一步:安装软件

服务器自带了环境,所以可以忽略

# yum install rpcbind nfs-utils -y

第二步:创建一个共享目录,如/share

# mkdir /share

2、编写NFS主配置文件

# vim /etc/exports
共享目录   共享选项
/share    web服务器ip的前三位.0/24(rw,sync)   

3、启动相关的NFS服务

# systemctl start rpcbind
# systemctl start nfs
​
//出现111端口就证明启动成功
# ss -naltp |grep 111       

4、搭建Web服务器

# yum install httpd -y
# systemctl start httpd

当Apache软件启动完毕后,会自动占用计算机的80端口。

80端口指向Web服务器的目录 => /var/www/html

所以项目源代码都可以直接存放于/var/www/html目录下

# echo "NFS实战演练" > /var/www/html/index.html

编辑完毕后,使用浏览器访问web服务器的ip,查看效果。

 

2.png



5、在Web服务器中挂载NFS

# mkdir /var/www/html/media
​
​
# mount -t nfs nfs服务器的ip地址:/share /var/www/html/media 
或
# mount.nfs nfs服务器的ip地址:/share /var/www/html/media
​
如果客户端没有安装nfs工具可能导致挂载失败,比如最小化安装的虚拟机就没有这个环境,解决方案就是手动安装:
# yum -y install nfs-utils nfs-utils-lib nfs4-acl-tools
​
查看磁盘挂载情况,一般最后一行是挂载信息:
# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  5.1G   12G  30% /
devtmpfs                 894M     0  894M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M   11M  900M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M  18% /boot
tmpfs                    182M   28K  182M   1% /run/user/1000
/dev/sr0                 4.3G  4.3G     0 100% /run/media/itheima/CentOS 7 x86_64
tmpfs                    182M     0  182M   0% /run/user/0
10.1.1.12:/share          17G  5.1G   12G  30% /var/www/html/media

6、上传tian.mp4视频到NFS服务器的/share

第一步:使用FinalShell上传tian.mp4到NFS服务器的/share目录

第二步:在Web服务器中,ll /var/www/html/media目录

# ll /var/www/html/media
tian.mp4

7、在html网页中调用tian.mp4文件

# vim /var/www/html/index.html
<video width="800" height="450" controls>
    <source src="media/tian.mp4">
</video>

8、对NFS服务器进行实时备份

NFS服务器:/share目录有变化,马上rsync进行同步Backup备份服务器的/backup目录

第一步:安装inotify工具(NFS服务器)

上传inotify-tools-3.14.tar.gz到NFS服务器

# tar -xvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure && make && make install

第二步:编写rsync.sh脚本,监控/share目录的变化

# cd ~
# vim rsync.sh
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /share |while read events
do
    rsync -a --delete /share/ 备份服务器backup的IP地址:/backup/
    echo "`date +%F\ %T`出现事件$events" >> /var/log/rsync.log 2>&1
done

第三步:给rsync添加x权限

# chmod +x rsync.sh

第四步:把NFS服务器与Backup备份服务器进行免密登录

# ssh-keygen
# ssh-copy-id root@Backup备份服务器IP地址

第五步:在Backup服务器中创建一个/backup目录,用于实时备份

# mkdir /backup

第六步:在NFS服务器中执行rsync脚本

# nohup ./rsync.sh &
查看是否运行
# jobs

第七步:在NFS服务器的/share目录下新建一个文件,然后查看备份服务器是否备份

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。