先看一张图:
这个图里面分别是从GPT分区到PV到LV然后到文件系统的一个相关信息
然后分成2个问题来思考:
1. LV没了怎么搞
lv和磁盘的分区是很类似的,当一个LV被删除的时候,实际上磁盘上除了会修改Metadata内容,别的都不会变,所以,所有的数据都是存在的,那么如果你还记得你当时进行PV划分的时候的信息,那么是完全可以恢复的。
在Linux中,lvm的信息是会自动备份到一个目录/etc/lvm/backup里面的,先到这个目录中看看有没有东西可以用,如果有,可以用vgcfgrestore这样的命令尝试修复一下,具体怎么用自行查手册。
如果比较悲催,这里面数据也没了,可以吧那个PV的Metadata那一段的数据dd出来,然后用编辑器查看,由于pv、vg、lv的信息会保留很多份,所以,也许能够从这里面看到。 另外,如果一个vg里面有多个pv,那么,如果你是一个pv的损坏到只lv丢失,那么也可以从别的PV里面找到这个信息。都是一样的。
如果这些都没有了,也可以直接找到那个文件系统开头的地方,直接dd出来,至于这个位置在哪儿,可以猜,也可以根据那个图里的信息,尝试着dd出来后查看第一个block是否是文件系统的标签,总体要多种尝试。
2. 文件系统怎么搞
文件系统的损坏,比如重新进行了mkfs,恭喜你,你会比较凄惨,因为fsck会破坏所有的文件系统信息,唯一的修复方式就是尝试进行全盘扫描,然后重新构建数据块的连接关系,现在还没有一个什么特别NB的工具能够做到完全恢复,当然,也可能有些公司有一些不公开的“神器”。
总结: 从原理分析,就能找到恢复的方法