群晖(Synology)存储ext4视频文件删除的恢复方法
随着NAS/SAN 技术的普及,只需要一台小型的存储设备就可以实现轻松数据管理、安全共享等私有云解决方案。比如要管理数量不算少的安防摄像头生成的视频数据,通过一个小型的NAS+网络摄像头就可以完成数据采集到写入的所有环节,大大的节省成本。今天来看一下使用群晖(Synology)存储+ext4文件系统视频删除后如何进行恢复。
故障存储:
群晖(Synology)5.45TB/文件系统:ext4/块大小:4KB
故障现象:
某日管理员清理早期数据时误删除了两条视频文件,发现误操作后直接断开了网络并对存储进行了关机操作。
故障分析:
在开始分析前先对ext4文件系统做个简单的介绍:
Linux系统中的ext2、ext3、ext4 文件系统,它们都有很强的向后和向前兼容性,可以在数据不丢失的情况下进行文件系统的升级。ext4是一个相对较成熟、稳定且高效的文件系统,适用于绝大部分规模和需求的Linux环境。
ext4突出的特点有:数据分段管理、多块分配、延迟分配、持久预分配、日志校验、支持更大的文件系统和文件大小。而和其它的老前辈一样,ext4仍然使用块(Block)和块组(BlockGroup)进行管理,最小的操作单元就是块(类似于windows的簇)。本例中的块大小为4KB(如图1),4KB算是比较经典的块大小了,兼顾了IO性能和空间的浪费,不仅仅是ext4实际上ntfs文件系统也更加偏爱4KB的块(簇)大小。
一般来讲,NAS还是比较偏爱ext或者btrfs的,这个小存储做为视频数据最终的“落脚点”使用ext4相对来讲比较适合,因为整体的系统开销会更低。而做为网络服务器更多的使用“网络IO”,网络IO的典型特点就是:1、排队 2、分块,比如同一时间可能会有摄像头A和摄像头B都有IO请求,这个时候就需要先排队,再写入,(A写一块然后再写B不断循环)这样就导致了数据的“碎片化”,现实情况下可能排队数量远远大于AB两个客户端,可能会更多。此案例中使用的是mp4文件,这也是目前使用比较广泛的封装格式,其文件结构相对“弹性”,可以实现分块传输、在线播放(如图2)。通过对存在文件的分析发现以下特征:
- 碎片数量多
- 碎片区间较大
- 偏移值并非线性而是随机
这些特殊的情况都让这次恢复变的难度很高,特别是第2点,可以看到实例分析中的碎片区间已经达到了1.36TB(如图3),此文件还算是碎片数量较少的。
图1:块大小为4KB
图2:mp4文件使用AVC视频编码和MP4A音频编码
图3:碎片化的存储方式典型的“网络IO”
故障处理:
STEP1:“海选”式定位文件。
由于存储空间较大,而其MP4使用的是结构体前置的方式,所以初步方案是先进行文件头定位,在海量的数据中去查找客户所需要的文件,当然前提是文件头没有被覆盖,如果此方案无果再进行深入遍历。
使用通用恢复软件成功找到客户所需要的两条视频,由于存在碎片的原因,仅仅能播放前1分钟的画面,但也成功定位到了文件头所在的块偏移(如下图),经过“海选”定位文件没有被覆盖的可能性概率较大,这样就可以继续下一步的恢复工作了。
图4:海选式定位
STEP2:确定大概范围。根据分析的视频特征进行数据定位,由于空间过大的原因还是使用了手工定位。
图5:确定大概范围
STEP3: “有的放矢,精确重组”,前两步定位后对相应的数据块进行二次合成,这样可以有效减少IO范围。处理完成后,使用CHS零壹视频恢复程序高级版进行碎片精确定位和重组,经过扫描后可以看到程序已经成功重组出了相应的文件,这些文件中前两个就是客户所需,文件级别为0说明文件效果是最好的,至此恢复工作完成。
分析扫描结果发现两个文件虽然不大,一个211MB一个402MB,碎片数量在20-50个之间,碎片的区间达到了3TB左右。
图5:CHS零壹视频恢复程序高级版扫描结果
这就是群晖(Synology)存储ext4视频文件删除的恢复方法,大家在遇到此类问题时,可以和CHS数据实验室联系!