【虚拟机数据恢复】FreeNAS+ESXi数据恢复案例

虚拟机数据恢复环境:
架构在一台DELL服务器上的存储使用FreeNAS来做iSCSI;
另外两台DELL服务器做ESXi虚拟化系统(共5台虚拟机);
FreeNAS是UFS2文件系统,整个存储建一个稀疏模式的文件,挂载到ESXi系统。
ESXi虚拟化系统中最重要的3台虚拟机基本情况:
一台windows server系统,内部数据为该公司的门户网站,ASP.net+PHP混合构架,数据库:SqlServer+mysql。
一台为FreeBSD系统,存储Mysql数据库,供其它多台虚拟机使用。
一台为windows server系统,存储此公司新开发的程序代码。

 

虚拟机故障情况:
一次意外断电后,ESXi系统连接不上存储。经过检查后发现FreeNAS中的UFS2文件系统出现问题。管理员用fsck修复文件系统。修复完成后ESXi系统可以连上存储,但ESXi系统不能识别到原来的数据存储和VMFS文件系统。管理员联系我们数据恢复中心进行数据恢复。

虚拟机数据恢复过程:
本案例的应用构架层次:FreeNAS(UFS2文件系统–> 一个稀疏模式的文件) –> ESXi(VMFS文件系统层) -> 单台虚拟机的虚拟磁盘 (windows-NTFS文件系统/FreeBSD-UFS2文件系统)。
1、镜像FreeNAS层。整个存储的文件就是一个名称为iscsidata的900+GB的文件。
2、通过UFS2文件系统的二进制结构,定位到iscsidata文件的Inode数据,数据恢复工程师发现此文件被重建过,inode指针指向的数据量很少。FreeNAS层的问题无法解决,就无法进入到下一步的VMFS层分析。
收集UFS2文件系统的重要结构:
块大小:16KB
Segment大小:2KB
柱面组大小:188176KB
UFS2一个数据指针占8字节,一个块可存储2048个数据指针,一个二级指针块可存储:2048*2048*16KB= 64GB数据,一个三级指针块可存储64GB*2048= 128TB数据。如果能找到iscsidata文件的三级指针块就能解决FreeNAS层的问题。iscsidata文件重建过,推断有部分指针块已被覆盖。原始iscsidata文件的inode和新建iscsidata文件的 inode就在一个位置,数据恢复工程师尝试搜索没有发现其它有用的inode,只能编写程序收集有用的指针块:


 

3、由于iscsidata文件是使用稀疏模式,放宽程序的收集条件,收集到大量三级指针块和二级指针块。
4、对所有收集到的三级指针块进行分析,数据恢复工程师发现这些指针块都是无效的,没有发现iscsidata文件使用的三级指针块。数据恢复工程师推断出现这种情况是因为在新建iscsidata文件时被覆盖(新的iscsidata文件在挂载到ESXi后有个VMFS格式化过程,而本案例中的ESXi版本 使用的是GPT分区,GPT分区会在磁盘最后写入冗余的GPT头和分区表信息数据,这样会使用iscsidata文件的三级指针块)。
5、数据恢复工程师分析收集到的二级指针块,对有大量的二级指针块的指向数据进行DUMP,然后再从磁盘中的数据定位到二级指针。通过这种方式获得大量DUMP的数据。
6、分析VMFS层。因为管理员格式化过VMFS,原始UFS2的指针已丢失,VMFS元文件基本上不可用,无重要参考信息。所幸虚拟机都有快照,仍可恢复。通过单台虚拟机层(windows(NTFS)和 FreeBSD(UFS2)系统的文件系统结构)向上定位到VMFS层,再通过VMFS层定位到DUMP出的单个64GB 文件。通过多次组合,最终将这三台重要的虚拟机的虚拟磁盘数据完全恢复出来。
7、将恢复出来的网页数据和数据库数据上传到新构建的系统中,拉起应用,没有发现任何问题。历时4天,数据恢复完成。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu是一种流行的Linux操作系统,而FreeNAS是一个基于FreeBSD的开源网络附加存储(NAS)操作系统。在Ubuntu上安装FreeNAS可以提供一个功能强大的网络存储解决方案。以下是安装FreeNAS的步骤: 1. 首先,确保你已经在Ubuntu上安装了必要的软件包和依赖项。可以使用以下命令更新软件包列表并安装所需的软件包: ``` sudo apt update sudo apt install build-essential git python3 python3-dev python3-pip libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev ``` 2. 接下来,从FreeNAS的GitHub存储库中克隆源代码。使用以下命令克隆存储库: ``` git clone https://github.com/freenas/freenas.git ``` 3. 进入克隆的FreeNAS目录: ``` cd freenas ``` 4. 使用pip安装所需的Python依赖项: ``` sudo pip3 install -r requirements.txt ``` 5. 安装FreeNAS的构建工具: ``` sudo python3 setup.py develop ``` 6. 安装FreeNAS的Web界面依赖项: ``` sudo pip3 install -r gui/requirements.txt ``` 7. 生成FreeNAS的配置文件: ``` cp freenas-config.example freenas-config ``` 8. 运行FreeNAS的Web界面: ``` sudo python3 manage.py runserver ``` 9. 现在,你可以通过在Web浏览器中访问`http://localhost:8000`来访问FreeNAS的Web界面。 请注意,这只是一个基本的安装过程,具体的步骤可能会因为不同的Ubuntu版本和FreeNAS版本而有所变化。建议在安装之前查阅FreeNAS的官方文档以获取最新的安装指南和详细说明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值