【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。

一:案例描述

知己知彼,方能百战百胜,数据恢复也是一样,详细了解数据丢失的过程,可以使数据恢复更加简单,与客户详细沟通得知故障原因如下:整个VMware vSphere共控制多个集群,其中出现故障的集群使用的vSAN分布式结构存储,故障原因是一台存储中的1个磁盘组的闪存盘出现故障,磁盘指示灯报错,但是数据能够正常使用,于是更换一块新的SSD硬盘上去,但之前的磁盘组不认这个硬盘,故磁盘组失效,维护人员重新选择该磁盘组的2块HDD与新的SSD重新组成一个新的磁盘组,并重新加入vSAN分布式存储集群,2小时后同步完成,集群能够正常访问,但涉及该磁盘组的虚拟机中,有一台虚拟机无法启动,检查后发现该虚拟机的VMDK文件变成1KB大小。

二:解决方案

1.案例评估

通过我司技术工程师现场分析梳理,发现出现问题的虚拟机存储策略与其他正常虚拟机策略不一致,该虚拟机采用的是RAID0结构的策略,并且未使用置备,其他虚拟机均采用RAID1策略,使用100%置备。重建该磁盘组的时候,其实涉及存储在该磁盘组的虚拟机已经全部出现故障,但是由于使用100%置备策略的原因,已经自动降级,然后自动恢复并且又继续使用100%置备策略,故这些虚拟机都能够自动恢复成正常的状态,但没有使用该策略的虚拟机则不能自动恢复,出现数据丢失。vSAN与VMware传统的VMFS文件系统存在一定的相似性,可以理解为vSAN是一个大的分区,这个分区内每一个文件夹都是VMFS相似的结构。首先访问vSAN,才能访问下一层级的VMFS文件系统,只不过在vSAN下面的VMFS文件系统内,对虚拟磁盘VMDK文件的存储有特殊的定义。

VMDK1.jpg

用户在vSAN内新建一个虚拟机,该虚拟机配有1个VMDK文件,系统在生成这个VMDK文件时,同时会生成1个虚拟对象,并使用UUID来进行关联,通过网页访问vSphere时,我们可以在该虚拟机目录下发现该VMDK文件,并且大小为正常大小。

但是我们通过SFTP的方式进行访问,就会发现该VMDK大小文1kb,因为使用外部访问VMDK文件时,系统并不会自动关联VMDK文件和虚拟对象。

同理,如果虚拟对象出现故障,无法正常访问,关联失效,那么使用网页访问vSphere时,我们看到与之关联的VMDK文件也会变成1kb。(大小未满1kb同一按1kb计算)

VMDK2.jpg

我们可以下载1kb的VMDK文件,使用txt打开后可以看到与之关联的虚拟对象的UUID,红框内就是与之关联的虚拟对象ID:

VMDK3.jpg

我们可以在集群里面选择监控,里面可以查看虚拟对象的情况:

VMDK4.jpg

然后根据虚拟对象ID查看该虚拟对象的物理存储位置,由图我们可以看到,该虚拟对象是一个RAID 0,由多个组件组成,组件的状态为缺失:

VMDK5.jpg

2.恢复方案

数据恢复思路如下:

1)记录下该虚拟对象下面每个组件的所在的主机、缓存磁盘、物理磁盘。

2)解析出该物理盘内分配给此虚拟对象的空间。

3)从缓存磁盘内解析已分配但是还未写入的空间地址。

4)使用工具手动提取这些扇区地址并组合成一个完整的组件。

5)使用提取的所有组件重组RAID 0,即可访问该虚拟对象内的所有数据。

第一步:解析出与故障VMDK文件对应的虚拟对象。

第二步:依据获取的虚拟对象的ID,在vSphere监控里面查看该虚拟对象的结构。

有些极端情况下,该虚拟对象已经在vSphere监控里面丢失,无法找到该虚拟对象,则需要手动分析,访问硬盘底层扇区,呈现结构如下。解析vSAN分布式存储的分区在该HDD和SSD上占用的空间,在这些空间内可以通过16进制数编辑器解析出丢失的虚拟对象ID,提取指定虚拟对象或VMDK虚拟磁盘文件。

vSAN2.jpg

第三步:依据获取的虚拟对象ID,从硬盘提取隶属于该ID的组件成员,重组RAID,获取丢失的数据,提取vSAN分布存储在该磁盘组中的组件数据,可以提取出整个虚拟对象的组件,然后重组RAID即可恢复出丢失的数据。

VMDK6.jpg

三:案例总结

vSAN是一种以vSphere内核为基础进行开发,基于VMware ESXi虚拟化平台的可扩展的分布式存储架构。vSAN通过在vSphere集群主机当中安装闪存和硬盘来构建vSAN存储层。这些设备由vSAN进行控制和管理,vSAN形成一个供vSphere集群使用的统一共享存储层。VMDK(虚拟机磁盘)是由VMware开发的一种虚拟机磁盘格式,是存储虚拟机硬盘的标准格式之一。在虚拟化环境中,VMDK文件作为一个磁盘驱动器,包含虚拟机的操作系统、应用程序和数据等。VMDK文件是一个包含所有虚拟机磁盘信息的文件,其文件格式由多个数据文件和一个描述文件组成。数据文件是虚拟磁盘的实际数据,而描述文件则包含了磁盘的配置信息、虚拟机的硬件配置和磁盘文件的信息。VMDK文件可以在不同的VMware虚拟化平台之间进行移植和共享,支持在多种操作系统和硬件环境下运行,并提供灵活的虚拟化解决方案。

相关文章
|
10天前
|
存储 Unix 数据库
虚拟化数据恢复—FreeNAS+ESXi数据恢复案例
虚拟化数据恢复环境: SAN环境下通过iSCSI实现FreeNAS,FreeNAS采用的UFS2文件系统。物理存储架构在一台服务器上,另外两台服务器上安装ESXi虚拟化系统。整个存储建立一个稀疏模式的文件,并挂载到ESXi虚拟化系统上。ESXi系统上有5台虚拟机。 虚拟化故障: 一次异常断电后,ESXi虚拟化系统连不上存储。
|
1月前
|
存储 网络安全 虚拟化
虚拟化数据恢复—VMware ESX Server数据恢复案例
虚拟化数据恢复环境: 某企业信息管理平台, 几台VMware ESX Server主机共享一台存储设备,大约有几十台虚拟机。 虚拟化故障&原因: Vcenter报告虚拟磁盘丢失。管理员通过ssh远程到ESX中执行fdisk -l命令查看磁盘,发现STORAGE已经没有分区表了。重启所有设备后,ESX SERVER均无法连接到存储设备中的STORAGE。
|
9天前
|
存储 SQL 数据库
虚拟化数据恢复—Vmware虚拟机误还原快照的数据恢复案例
虚拟化数据恢复环境: 一台虚拟机从物理机迁移到ESXI虚拟化平台,迁移完成后做了一个快照。虚拟机上运行了一个SQL Server数据库,记录了数年的数据。 ESXI虚拟化平台上有数十台虚拟机,EXSI虚拟化平台连接了一台EVA存储,所有的虚拟机都存放在EVA存储上。 虚拟化故障: 工组人员误操作将数年前迁移完成后做的快照还原了,也就意味着虚拟机状态还原到数年前,近几年数据都被删除了。 还原快照相当于删除数据,意味着部分存储空间会被释放。为了不让这部分释放的空间被重用,需要将连接到这台存储的所有虚拟机都关掉,需要将不能长时间宕机的虚拟机迁移到别的EXSI虚拟化平台上。
84 50
|
6天前
|
存储 网络安全 虚拟化
虚拟化数据恢复—VMware ESX SERVER数据恢复案例
虚拟化数据恢复环境&故障: 某单位信息管理平台,数台VMware ESX SERVER共享一台某品牌DS4100存储。 vc报告虚拟磁盘丢失,管理员ssh到ESX中执行fdisk -l查看磁盘,发现STORAGE中的分区表不见了。重启所有设备后,ESX SERVER均无法连接到DS4100存储中的STORAGE。
|
28天前
|
存储 运维 虚拟化
虚拟化数据恢复——Hyper-V虚拟化故障导致虚拟机文件丢失的数据恢复案例
在Windows Server上部署的Hyper-V虚拟化环境中,因存储中虚拟机数据文件丢失导致服务瘫痪。北亚企安数据恢复工程师通过物理检测、操作系统及文件系统检测,确定为人为格式化造成,并通过镜像硬盘、重组RAID、分析并恢复文件索引项等步骤,成功恢复数据,最终在新Hyper-V环境中验证并迁移所有虚拟机,确保用户业务恢复正常运行。
|
13天前
|
SQL 数据挖掘 数据库
虚拟化数据恢复—XenServer虚拟化平台数据恢复案例
服务器虚拟化数据恢复环境: 某品牌720服务器中有一组通过同品牌、型号为H710P的RAID卡+4块STAT硬盘组建的RAID10磁盘阵列。上层部署XenServer虚拟化平台。1台Windows Server操作系统虚拟机,该虚拟机有2块虚拟磁盘(系统盘+数据盘),当作网站服务器使用。 服务器虚拟化故障: XenServer虚拟机不可用,虚拟磁盘中数据丢失。
|
2月前
|
存储 SQL 数据挖掘
虚拟化数据恢复—VMware虚拟机vmdk文件被误删除的数据恢复案例
虚拟化数据恢复环境: 某品牌服务器(部署VMware EXSI虚拟机)+同品牌存储(存放虚拟机文件)。 虚拟化故障: 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除,然后重建一个虚拟机并且分配固定大小的虚拟磁盘。
|
1月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
3月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
107 2
基于Redis的高可用分布式锁——RedLock
|
6天前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
40 16