云原生运维实战笔记:华为云存储类服务全景解析——EVS、OBS、SFS与CBR深度实践

云原生运维实战笔记:华为云存储类服务全景解析------EVS、OBS、SFS与CBR深度实践

在之前关于计算与网络的笔记中,我们梳理了华为云上ECS、VPC、ELB等核心基础设施的运作机制。作为云原生架构的基石,计算提供算力,网络提供连接,而存储则负责数据的持久化与生命周期管理。

在企业实际业务上云的过程中,数据是最核心的资产。公有云提供的存储服务并非单一产品,而是针对不同应用场景(块设备、非结构化数据、共享文件、容灾备份)分化出的矩阵式产品。本篇笔记将根据实验手册,对华为云的**云硬盘(EVS)、对象存储(OBS)、弹性文件服务(SFS)和云备份(CBR)**进行全流程的深度实操与理论复盘,涉及大量底层概念与核心操作指令。


一、 存储类服务基础理论与架构概述

1.1 企业级存储诉求与云存储分类

在云化进程中,企业对存储的诉求可以概括为三大维度:高性能 (低时延、高IOPS)、高可靠 (多副本、容灾)、高安全(加密、访问控制)。公有云通过资源池化技术,将这些诉求转化为标准化的云服务:

  • 块存储(EVS):为云服务器提供高可靠、高性能的块设备,类似于物理机上的硬盘,需要格式化后挂载使用,适用于数据库、文件系统、开发测试等。
  • 对象存储(OBS):基于对象的海量存储服务,采用扁平化结构(桶和对象),通过HTTP/HTTPS RESTful API访问,适用于大数据分析、静态网站托管、备份归档等。
  • 文件存储(SFS):提供按需扩展的高性能NAS(网络附加存储),支持NFS和CIFS协议,允许多个云服务器并发共享访问。
  • 云备份(CBR):为云内资源(ECS、EVS、SFS等)及云下环境提供统一的备份与恢复服务,是数据保护的最后一道防线。

1.2 关键技术特性解析

  • EVS的三副本机制:默认将数据切分为1MB的块,每块复制3份,通过分布式算法分散存储在不同机柜、不同服务器的不同物理磁盘上,保证强一致性,单点硬件故障不影响业务。
  • OBS的存储类别:分为标准存储(热数据,低时延)、低频访问(温数据,月均1次)、归档存储(冷数据,年均1次)、深度归档(极冷数据,几年1次),通过生命周期规则自动流转,以降低成本。

二、 云硬盘(EVS)深度实操:从挂载到快照恢复

云硬盘不能脱离计算实例独立使用,必须挂载至ECS或BMS并经过初始化(分区、格式化)才能被操作系统识别。

2.1 为Windows ECS挂载与初始化云硬盘

环境准备 :在VPC-SH01下创建一台Windows ECS(ecs-win1,Windows Server 2016)。

进入云硬盘EVS 控制台,购买一块20GB的通用型SSD数据盘(volume-data1),可用区与ECS保持一致,挂载点选择ecs-win1。

初始化磁盘 :

挂载完成后,通过VNC登录ecs-win1。打开"服务器管理器" -> "计算机管理" -> "磁盘管理",此时系统会提示新磁盘处于"脱机/没有初始化"状态。

  1. 右键磁盘1,选择"初始化磁盘",分区形式选择MBR(主启动记录)。
  2. 右键未分配空间,选择"新建简单卷",根据向导分配驱动器号(如D盘),文件系统选NTFS,执行快速格式化。
  3. 当磁盘状态显示为"状态良好"时,回到文件资源管理器,即可看到新增的D盘。

验证数据隔离与持久性 :

在D盘新建测试文件test.txt,写入内容。在磁盘管理中右键该磁盘,选择"脱机"。

回到EVS控制台,将该云硬盘从ecs-win1卸载 ,然后挂载 到另一台同可用区的ECS(ecs-win2)上。登录ecs-win2,在文件资源管理器中可直接打开D盘,发现test.txt及内容完好无损。注意:同一块非共享云硬盘在同一时刻只能挂载给一台云服务器。

2.2 为Linux ECS挂载与配置云硬盘

购买一台Linux ECS(ecs-linux,CentOS 7.8),同样挂载一块10GB的数据盘(volume-linux)。

Linux底层分区与格式化指令:

bash 复制代码
# 1. 查看磁盘识别情况,发现新增了 /dev/vdb
[root@ecs-linux ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   40G  0 disk 
└─vda1 253:1    0   40G  0 part /
vdb    253:16   0   10G  0 disk 

# 2. 使用fdisk对数据盘进行分区
[root@ecs-linux ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xa902bda3.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-20971519, default 2048): 
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): w
The partition table has been altered!

# 3. 格式化分区为ext4文件系统
[root@ecs-linux ~]# mkfs.ext4 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stride width=0 blocks
655360 inodes, 2621184 blocks
131059 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

# 4. 创建挂载点并挂载
[root@ecs-linux ~]# mkdir /data
[root@ecs-linux ~]# mount /dev/vdb1 /data
[root@ecs-linux ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      ext4       40G  2.6G   35G   7% /
/dev/vdb1      ext4      9.8G   37M  9.2G   1% /data

# 5. 写入测试数据
[root@ecs-linux data]# echo "huawei cloud" > evs
[root@ecs-linux data]# cat evs
huawei cloud

配置开机自动挂载 :

使用mount命令挂载在重启后会失效,必须修改/etc/fstab。

bash 复制代码
[root@ecs-linux ~]# vi /etc/fstab
# 在文件末尾追加以下行:
/dev/vdb1 /data ext4 defaults 0 0

# 卸载测试并重新挂载所有
[root@ecs-linux ~]# umount /dev/vdb1
[root@ecs-linux ~]# mount -a
[root@ecs-linux ~]# df -Th | grep /data
/dev/vdb1      ext4      9.8G   37M  9.2G   1% /data

2.3 云硬盘快照与数据回滚演练

快照是云硬盘某一时刻的完整数据镜像,基于写时复制(Copy-on-Write)或重定向写(Redirect-on-Write)技术实现。

  1. 在控制台为volume-linux创建快照snapshot-data1,记录当前时间点。
  2. 在ecs-linux中模拟数据误删:
bash 复制代码
[root@ecs-linux data]# rm evs
rm: remove regular file 'evs'? y
[root@ecs-linux data]# ls
lost+found
  1. 在控制台基于快照snapshot-data1创建磁盘 (volume-snapshot-data1)。
  2. 将该新磁盘挂载到ecs-linux。
bash 复制代码
# 查看系统磁盘,发现多了 /dev/vdc
[root@ecs-linux ~]# fdisk -l
...
Disk /dev/vdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
...
# 挂载新磁盘
[root@ecs-linux ~]# mkdir /snapshot-data
[root@ecs-linux ~]# mount /dev/vdc1 /snapshot-data
[root@ecs-linux ~]# cd /snapshot-data && ls
evs  lost+found
[root@ecs-linux snapshot-data]# cat evs
huawei cloud

通过快照创建的磁盘完美保留了误删前的数据,实现了秒级的数据保护与回滚。


三、 对象存储(OBS)实战与高级特性

OBS面向海量非结构化数据,其核心是"桶(Bucket)"和"对象(Object)"。OBS提供REST API,支持按需付费。

3.1 基础操作与分享机制

  1. 进入对象存储OBS 控制台,创建一个桶(如cloud-service-gqd),存储类别选"标准存储",桶策略选"私有"。
  2. 上传本地文件gqd-Cloud Service.txt至桶中。
  3. 分享链接:在对象列表点击"分享",设置URL有效期(1分钟至18小时),系统会生成一个带签名的长URL。将URL发给他人,即可在有效期内免鉴权下载该文件。

3.2 多版本控制(Versioning)

开启多版本控制后,上传同名对象会生成不同的版本ID,防止数据被意外覆盖。

  1. 在OBS控制台的桶概览页,编辑"多版本控制"并选择"启用"。
  2. 上传gqd-Cloud Service-2.txt(内容为gqd-Cloud Service-2)。
  3. 修改本地同名文件内容为gqd-Cloud Service-2 update,再次上传。
  4. 在OBS控制台开启"历史版本"显示,可以看到同一文件名下存在两个版本,分别对应修改前后的内容,可随时下载或恢复指定版本。

3.3 客户端工具 OBS Browser+

对于批量管理和传输,推荐使用OBS Browser+。

  1. 登录控制台,在"我的凭证"中"新增访问密钥",下载credentials.csv(包含Access Key ID和Secret Access Key)。
  2. 打开OBS Browser+客户端,选择AK方式登录,输入账号、AK、SK。
  3. 登录后即可看到桶列表,并进行图形化上传、下载及删除操作。注:AK/SK是永久凭证,严禁泄露。

四、 弹性文件服务(SFS)共享存储实验

SFS提供标准的NAS服务,支持NFSv3(Linux)和CIFS(Windows)协议,允许多个ECS同时挂载同一个文件系统,实现数据共享。

4.1 创建文件系统与Linux挂载

  1. 在弹性文件服务SFS 控制台,创建文件系统SFS-turbo-01。类型选标准型,协议选NFS,容量500GB,网络和子网选择与ECS一致(如VPC-SH01)。
  2. 创建完成后,在详情页获取挂载命令。
  3. 登录ecs-linux,安装NFS客户端工具:
bash 复制代码
[root@ecs-linux ~]# yum install nfs-utils -y
[root@ecs-linux ~]# rpm -qa | grep nfs
libnfsidmap-0.25-19.el7.x86_64
nfs-utils-1.3.0-0.68.el7.2.x86_64

# 创建本地挂载点并挂载
[root@ecs-linux ~]# mkdir /mnt/sfs_turbo
[root@ecs-linux ~]# mount -t nfs -o vers=3,timeo=600 256e3761-ecaa-4561-9506-834df2ae51de.sfsturbo.internal:/ /mnt/sfs_turbo

[root@ecs-linux ~]# df -Th
Filesystem                                                 Type  Size  Used Avail Use% Mounted on
...
256e3761-ecaa-4561-9506-834df2ae51de.sfsturbo.internal:/ nfs   1.2T     0  1.2T   0% /mnt/sfs_turbo

# 创建测试文件
[root@ecs-linux ~]# touch /mnt/sfs_turbo/huawei_cloud
[root@ecs-linux ~]# ls /mnt/sfs_turbo/
huawei_cloud

同样,可以将NFS挂载写入/etc/fstab:

bash 复制代码
# 追加配置
256e3761-ecaa-4561-9506-834df2ae51de.sfsturbo.internal:/ /mnt/sfs_turbo nfs vers=3,nolock 0 0

4.2 Windows挂载SFS(CIFS/NFS)

由于SFS Turbo支持NFS协议,Windows也可通过NFS客户端挂载。

  1. 登录ecs-windows,打开"服务器管理器" -> "添加角色和功能"。
  2. 在"功能"中勾选NFS 客户端,点击安装。
  3. 打开CMD,调整NFS客户端配置:
cmd 复制代码
# 修改传输协议为TCP,并启用硬装载(无限重试)
mount -o nolock -o casesensitive=yes 256e3761-ecaa-4561-9506-834df2ae51de.sfsturbo.internal:/ E:
  1. 打开"此电脑",可以看到新增的E盘,进入E盘,发现刚才在Linux端创建的huawei_cloud文件,实现了跨OS的共享读写。

五、 云备份服务(CBR)容灾恢复演练

云备份(CBR)提供针对ECS、EVS等资源的备份与恢复,其核心在于"存储库"和"备份策略"。

5.1 备份云服务器

  1. 登录云备份CBR 控制台,购买备份存储库(容量50GB),绑定ecs-linux。
  2. 执行一次性备份:选择ecs-linux,立即执行备份。
  3. 在任务中心可看到备份任务进度(快照创建与数据上传)。备份完成后的数据独立于原ECS存储,存放在OBS中。

5.2 故障模拟与恢复

故障模拟 :非常不小心地在ECS控制台将ecs-linux删除(勾选删除云硬盘)。

恢复演练:

  1. 回到CBR控制台,在备份副本列表找到刚才的ECS备份。
  2. 选择"恢复数据" -> "创建新ECS"。在配置页面,保持网络、规格等参数与原来一致,关键是在镜像 处,选择备份中自带的操作系统盘镜像(如image-linux)。
  3. 提交后,系统基于备份数据拉起一台全新的ECS。
  4. 登录新ECS,检查之前创建的qingqingcaoyuan.txt等文件是否完好无损,完成整机级别的容灾恢复。

六、 底层机制探究与排障总结

通过对上述四种存储服务的实操,必须深刻理解它们的本质区别:

对比维度 云硬盘 (EVS) 对象存储 (OBS) 弹性文件服务 (SFS) 云备份 (CBR)
数据逻辑 二进制数据(需格式化) 对象(Key-Metadata-Data) 文件和文件夹(树形结构) 映像/快照流
访问方式 挂载至ECS/BMS HTTP/HTTPS API、SDK NFS/CIFS网络协议 恢复为EVS/ECS
容量级别 TB级 EB级 PB级 取决于购买存储库
使用场景 数据库、系统盘 大数据、静态网站、归档 共享目录、媒体渲染 数据保护、容灾

常见排障点:

  1. EVS挂载后找不到磁盘 :通常是因为没有在操作系统内部执行"联机"或初始化分区。Linux可通过fdisk -l或lsblk确认,Windows需在"磁盘管理"中初始化。
  2. SFS挂载超时:检查ECS的安全组是否放通了NFS协议需要的端口(TCP 111、2049等),或者检查挂载地址的域名是否能正确解析。
  3. CBR恢复失败:确认在恢复时选定的存储库容量是否充足,以及目标ECS所在的可用区是否与原备份一致。

通过本次对存储四件套的系统学习,我们构建了从块、对象、文件到备份的完整云上数据持久化知识体系。公有云底层强大的多副本与分布式机制保障了极高数据持久性,但应用层的正确挂载、安全组配置及备份策略执行,依然依赖于运维人员严谨的操作与深入的理解。

相关推荐
1314lay_100742 分钟前
ABAP 程序性能优化总结
经验分享·笔记·性能优化
Decay__1 小时前
17_MySQL 监控体系构建 —— mysqld_exporter + Prometheus + Grafana 全栈实战
运维·数据库·sql·mysql·架构
天远数科1 小时前
零信任架构实战:基于天远全能家政风险报告构建自动化即时到家保洁与短工抢单安全核验网关
运维·人工智能·架构·自动化
源图客1 小时前
解决CentOS操作系统网络异常问题
linux·运维·centos
分布式存储与RustFS1 小时前
K8s 集群备份落到自建对象存储:Velero 接 RustFS 配置指南
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
镜子AI10 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo11 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
螺蛳粉 螺蛳粉12 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
视觉小萌新12 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list