作为80后技术员, 我一直很喜欢李玟, 是我们那个时代的偶像, 一直也很喜欢听他的歌, 看到她的噩耗, 还是很那么的无法理解, 一个那么好的人怎么会得抑郁症呢, 心里多少还是无法接受. 不过联想到自己的工作,多少次也都是在被技术难题折磨的快要到抑郁症犯的边缘上. 
 
作为数据恢复行业的从业者, 行业的技术发展实在是太快了, 几乎每年都会有新的技术出现, 无论是文件系统还是数据库等等, 每年都在推陈出新, 老旧的技术会被直接抛弃, 绝非是在原有技术上进行改良, 作为数据恢复产品作者, 你必须得更上这种升级速度, 而且前面对所有老旧技术的付出基本上算是白搞, 因为随着时间的发展, 这些老旧的技术会类似winxp系统一样淹没在历史的潮流中.
 
在现如今的三大操作系统windows, linux, mac os现在分别对应的最新的文件系统有refs, zfs, btrfs, apfs, 这些我都在产品中做了支持, 底层技术在我看来基本大同小异.  做这几个文件系统的恢复以及解析结束让我吃尽苦头,  他们与上一代文件系统存储技术是如此的不同, 上一代的文件系统结构例如fat, ntfs, ext234, ufs等等, 他们是如此的百花齐放, 个性分明, 你不太容易找到他们的共同点, 他们充斥着各种奇怪的结构和设计理念.
 
但是新一代的文件系统我能够明显的感觉到他们越来越同质化发展, 我虽然不敢保证他们彼此之间有互相抄袭, 但是我觉得至少在架构思路上互相彼此都在借鉴. 

 
 
 这次让我吃尽苦头的文件系统是refs, 作为新一代的桌面系统的文件系统, 我本以为他会跟apfs更加类似, 因此在查阅相关资料后, 我很就对refs的结构进行解析, 并且对相关数据进行定位, 刚开始的途中一直没有发现有什么问题. 并且说实话, 因为做了太多的数据库结构分析, 我很明显感觉到了, 他的MSB+ page结构是如此的类似于sql 的页面结构. 所以刚开始的时候, 我轻车熟路的一路分析下去. MSB+ page结构大致如图:
 
根据下图的结构, 可以从data area结构中提取到数据或者是REF参数跳转到子页面中提取数据.
 

根据下图的结构, 解析当我分析到checkpointer为止, 我都没有遇到问题. 直到到了object id table结构, 我遇到了前所未有的障碍. 居然找不到正确结构的MSB+了. 
 

未完待续...

浅谈REFS文件系统数据恢复研发经历(1)的更多相关文章

  1. 浅谈Linux文件系统

    Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件.使用命令 mkdir 创建目录时,若期望创建的目录的名称与现有的文件名(或目录名)重复,则会创建失败. Lin ...

  2. 浅谈个人学DP的经历和感受

    动态规划的定义! 首先,我们看一下官方定义:定义:动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决.动态规划算法的基本思想与分治法类似,也是将待求 ...

  3. 浅谈算法和数据结构: 七 二叉查找树 八 平衡查找树之2-3树 九 平衡查找树之红黑树 十 平衡查找树之B树

    http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html 前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的 ...

  4. pb传输优化浅谈

    在正式切入今天要谈的优化之前,先碎碎念一些自己过去这几年的经历.很久没有登录过博客园了,今天也是偶然兴起打开上来看一下,翻看了下自己的随笔,最后一篇原创文章发布时间是2015年的4月,今天是2017年 ...

  5. 【转】浅谈分布式服务协调技术 Zookeeper

    非常好介绍Zookeeper的文章, Google的三篇论文影响了很多很多人,也影响了很多很多系统.这三篇论文一直是分布式领域传阅的经典.根据MapReduce,于是我们有了Hadoop:根据GFS, ...

  6. 浅谈FPGA

    浅谈FPGA 前言 生活中永远都不会缺少「 为什么 」,于最近就被合胜学长了,问了一个看似简单却又极具意义的问题,为什么需要FPGA?FPGA与单片机的区别是什么?瞬间刷新了我入门三天FPGA的冲击感 ...

  7. 浅谈数据库系统中的cache(转)

    http://www.cnblogs.com/benshan/archive/2013/05/26/3099719.html 浅谈数据库系统中的cache(转)   Cache和Buffer是两个不同 ...

  8. 浅谈原子操作、volatile、CPU执行顺序

    浅谈原子操作.volatile.CPU执行顺序 在计算机发展的鸿蒙年代,程序都是顺序执行,编译器也只是简单地翻译指令,随着硬件和软件的飞速增长,原来的工具和硬件渐渐地力不从心,也逐渐涌现出各路大神在原 ...

  9. 【Fiori系列】浅谈SAP Fiori的设计美感与发展历程

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[Fiori系列]浅谈SAP Fiori的设计美 ...

  10. [转] [知乎] 浅谈Roguelike

    浅谈Roguelike 从柏林诠释说起 在2008年召开的国际Roguelike开发会议上,众多的Roguelike开发者与爱好者共同制定了<柏林诠释>,规定了Roguelike游戏需要具 ...

随机推荐

  1. 【比赛记录+题解】CET

    A题: 由于太菜而一直没有AC.其实是一道01背包..最后才AC的 01背包什么的自己去了解就行了吧 因为我\(DP\)太烂,所以不会\(DP\)的我也救不了了 #include <algori ...

  2. postgresSQL Extended Query执行过程和sharding-proxy的处理

    pg Extended Query PostgreSQL: Documentation: 15: 55.2. Message Flow 多个阶段,可复用 Parse → DESCRIBE statem ...

  3. 【机器学习入门与实践】数据挖掘-二手车价格交易预测(含EDA探索、特征工程、特征优化、模型融合等)

    [机器学习入门与实践]数据挖掘-二手车价格交易预测(含EDA探索.特征工程.特征优化.模型融合等) note:项目链接以及码源见文末 1.赛题简介 了解赛题 赛题概况 数据概况 预测指标 分析赛题 数 ...

  4. 2023GDKOI游记

    2023GDKOI游记 DAY-5: 3.5 周五回家提前一天返校,连续打了两场比赛,第二场清华ACM就只打出了最后一题世界杯(签到题),然后就只会做第二题了,调了一下午没想到正解. DAY-4: 3 ...

  5. Analysis of Variance ANOVA versus T test 方差分析和T检验

    Levels are different groupings within the same independent variable(factor). Eg. if the independent ...

  6. 【Dotnet 工具箱】JIEJIE.NET - 强大的 .NET 代码混淆工具

    你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用! JIEJIE.NET - 强大的 .NET 代码混淆工具 JIEJIE.NET JIEJIE.NET ...

  7. 武装你的WEBAPI-OData Versioning

    本文属于OData系列 目录 武装你的WEBAPI-OData入门 武装你的WEBAPI-OData便捷查询 武装你的WEBAPI-OData分页查询 武装你的WEBAPI-OData资源更新Delt ...

  8. 2020-10-25:go中channel的close流程是什么?

    福哥答案2020-10-25:

  9. 2022-05-30:给定一个n*2的二维数组,表示有n个任务。 一个信息是任务能够开始做的时间,另一个信息是任务的结束期限,后者一定大于前者,且数值上都是正数, 你作为单线程的人,不能并行处理任务,

    2022-05-30:给定一个n*2的二维数组,表示有n个任务. 一个信息是任务能够开始做的时间,另一个信息是任务的结束期限,后者一定大于前者,且数值上都是正数, 你作为单线程的人,不能并行处理任务, ...

  10. 2021-03-19:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的最大子矩形,内部有多少个1。

    2021-03-19:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的最大子矩形,内部有多少个1. 福大大 答案2021-03-19: 按行遍历二维数组,构造直方图. 单调栈,大 ...