云原生运维实战笔记:华为云存储类服务全景解析------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,选择"初始化磁盘",分区形式选择MBR(主启动记录)。
- 右键未分配空间,选择"新建简单卷",根据向导分配驱动器号(如D盘),文件系统选NTFS,执行快速格式化。
- 当磁盘状态显示为"状态良好"时,回到文件资源管理器,即可看到新增的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)技术实现。
- 在控制台为
volume-linux创建快照snapshot-data1,记录当前时间点。 - 在
ecs-linux中模拟数据误删:
bash
[root@ecs-linux data]# rm evs
rm: remove regular file 'evs'? y
[root@ecs-linux data]# ls
lost+found
- 在控制台基于快照
snapshot-data1创建磁盘 (volume-snapshot-data1)。 - 将该新磁盘挂载到
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 基础操作与分享机制
- 进入对象存储OBS 控制台,创建一个桶(如
cloud-service-gqd),存储类别选"标准存储",桶策略选"私有"。 - 上传本地文件
gqd-Cloud Service.txt至桶中。 - 分享链接:在对象列表点击"分享",设置URL有效期(1分钟至18小时),系统会生成一个带签名的长URL。将URL发给他人,即可在有效期内免鉴权下载该文件。
3.2 多版本控制(Versioning)
开启多版本控制后,上传同名对象会生成不同的版本ID,防止数据被意外覆盖。
- 在OBS控制台的桶概览页,编辑"多版本控制"并选择"启用"。
- 上传
gqd-Cloud Service-2.txt(内容为gqd-Cloud Service-2)。 - 修改本地同名文件内容为
gqd-Cloud Service-2 update,再次上传。 - 在OBS控制台开启"历史版本"显示,可以看到同一文件名下存在两个版本,分别对应修改前后的内容,可随时下载或恢复指定版本。
3.3 客户端工具 OBS Browser+
对于批量管理和传输,推荐使用OBS Browser+。
- 登录控制台,在"我的凭证"中"新增访问密钥",下载
credentials.csv(包含Access Key ID和Secret Access Key)。 - 打开OBS Browser+客户端,选择AK方式登录,输入账号、AK、SK。
- 登录后即可看到桶列表,并进行图形化上传、下载及删除操作。注:AK/SK是永久凭证,严禁泄露。
四、 弹性文件服务(SFS)共享存储实验
SFS提供标准的NAS服务,支持NFSv3(Linux)和CIFS(Windows)协议,允许多个ECS同时挂载同一个文件系统,实现数据共享。
4.1 创建文件系统与Linux挂载
- 在弹性文件服务SFS 控制台,创建文件系统
SFS-turbo-01。类型选标准型,协议选NFS,容量500GB,网络和子网选择与ECS一致(如VPC-SH01)。 - 创建完成后,在详情页获取挂载命令。
- 登录
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客户端挂载。
- 登录
ecs-windows,打开"服务器管理器" -> "添加角色和功能"。 - 在"功能"中勾选NFS 客户端,点击安装。
- 打开CMD,调整NFS客户端配置:
cmd
# 修改传输协议为TCP,并启用硬装载(无限重试)
mount -o nolock -o casesensitive=yes 256e3761-ecaa-4561-9506-834df2ae51de.sfsturbo.internal:/ E:
- 打开"此电脑",可以看到新增的E盘,进入E盘,发现刚才在Linux端创建的
huawei_cloud文件,实现了跨OS的共享读写。
五、 云备份服务(CBR)容灾恢复演练
云备份(CBR)提供针对ECS、EVS等资源的备份与恢复,其核心在于"存储库"和"备份策略"。
5.1 备份云服务器
- 登录云备份CBR 控制台,购买备份存储库(容量50GB),绑定
ecs-linux。 - 执行一次性备份:选择
ecs-linux,立即执行备份。 - 在任务中心可看到备份任务进度(快照创建与数据上传)。备份完成后的数据独立于原ECS存储,存放在OBS中。
5.2 故障模拟与恢复
故障模拟 :非常不小心地在ECS控制台将ecs-linux删除(勾选删除云硬盘)。
恢复演练:
- 回到CBR控制台,在备份副本列表找到刚才的ECS备份。
- 选择"恢复数据" -> "创建新ECS"。在配置页面,保持网络、规格等参数与原来一致,关键是在镜像 处,选择备份中自带的操作系统盘镜像(如
image-linux)。 - 提交后,系统基于备份数据拉起一台全新的ECS。
- 登录新ECS,检查之前创建的
qingqingcaoyuan.txt等文件是否完好无损,完成整机级别的容灾恢复。
六、 底层机制探究与排障总结
通过对上述四种存储服务的实操,必须深刻理解它们的本质区别:
| 对比维度 | 云硬盘 (EVS) | 对象存储 (OBS) | 弹性文件服务 (SFS) | 云备份 (CBR) |
|---|---|---|---|---|
| 数据逻辑 | 二进制数据(需格式化) | 对象(Key-Metadata-Data) | 文件和文件夹(树形结构) | 映像/快照流 |
| 访问方式 | 挂载至ECS/BMS | HTTP/HTTPS API、SDK | NFS/CIFS网络协议 | 恢复为EVS/ECS |
| 容量级别 | TB级 | EB级 | PB级 | 取决于购买存储库 |
| 使用场景 | 数据库、系统盘 | 大数据、静态网站、归档 | 共享目录、媒体渲染 | 数据保护、容灾 |
常见排障点:
- EVS挂载后找不到磁盘 :通常是因为没有在操作系统内部执行"联机"或初始化分区。Linux可通过
fdisk -l或lsblk确认,Windows需在"磁盘管理"中初始化。 - SFS挂载超时:检查ECS的安全组是否放通了NFS协议需要的端口(TCP 111、2049等),或者检查挂载地址的域名是否能正确解析。
- CBR恢复失败:确认在恢复时选定的存储库容量是否充足,以及目标ECS所在的可用区是否与原备份一致。
通过本次对存储四件套的系统学习,我们构建了从块、对象、文件到备份的完整云上数据持久化知识体系。公有云底层强大的多副本与分布式机制保障了极高数据持久性,但应用层的正确挂载、安全组配置及备份策略执行,依然依赖于运维人员严谨的操作与深入的理解。