问题
突然间,所有文件都来自2015 年 2 月到2016 年 11 月有消失了从文件系统。
语境
- 在过去 2 年中,系统多次因电源故障或 USB 硬件断开而突然终止。
- 这种损失似乎不是因为坏块或类似的事情。似乎更多的是与软件相关的东西。
vmdk
这些磁盘是连接到 VirtualBox Ubuntu 的基于 USB 硬件的 RAID-5 上的平面全尺寸文件。- 拥有 RAID 和 VirtualBox 的主机是 Windows。
- Windows 中的 RAID 是 NTFS,VirtualBox 运行 Ubuntu,访问 ext4 格式的 vmdk。 Windows 除了包含一堆虚拟机之外不执行任何其他功能,并且除了启动或停止虚拟机之外,没有用户进入该 Windows。
情况
我每天都在大量使用这些磁盘(来自 Ubuntu)。而且我每天都成功地使用了前一天、前一周、上个月等的文件...即使在重新启动后...所以数据必须在那里。
但突然...我的 Dropbox 开始删除文件,我去看看发生了什么,事实是...我无法判断这是“即时”发生的还是重新启动后发生的。
但问题是……我能看到的最新文件是 2015 年 1 月的,而我每天都成功地使用这些磁盘,直到 2016 年 11 月。这些文件可能在块中,并且由于某种原因我丢失了所有索引。
我可以很容易地想象,由于某种原因,ext4
保存了 i 节点表的备份副本或类似的东西,并且出于某种原因,linux 决定将映射“恢复”到旧的映射。
我看到有很多工具。从运行 fsck 到 extundelete 等等。
我所看到的
正在做:
find . -newermt 20150201
给我零结果。
此外,
- 对于我知道它们存在的文件,我
cd
进入相应的目录,但看不到那里的文件。 - 我可以看到我知道已删除的目录结构。
- 连接到虚拟机的多个磁盘都发生了这种情况。
ext4 还是 NTFS?
我已经从 Windows 中卸载了包含虚拟磁盘的 RAID vmdk
,并将其以只读方式安装在 Linux 上。
如果我列出文件,我可以看到:
root@vagrant:/mnt/raid5/mnt# ls -la
total 1572864014
drwxrwxrwx 1 root root 4096 Jan 29 2015 .
drwxrwxrwx 1 root root 4096 Oct 31 21:14 ..
-rwxrwxrwx 2 root root 268435456000 Jan 26 2015 LinuxData250G_A-flat.vmdk
-rwxrwxrwx 2 root root 651 Jan 26 2015 LinuxData250G_A.vmdk
-rwxrwxrwx 2 root root 268435456000 Jan 26 2015 LinuxData250G_B-flat.vmdk
-rwxrwxrwx 2 root root 558 Jan 26 2015 LinuxData250G_B.vmdk
-rwxrwxrwx 2 root root 536870912000 Jan 26 2015 LinuxData500G_A-flat_3.vmdk
-rwxrwxrwx 2 root root 536870912000 Jan 26 2015 LinuxData500G_A-flat.vmdk
-rwxrwxrwx 2 root root 559 Jan 26 2015 LinuxData500G_A.vmdk
有问题的磁盘是 LinuxDataXXXG_Y-flat.vmdk
令我惊讶的是...所有这些的修改日期是 2015 年 1 月 26 日...正好“在磁盘内容丢失之前”...我看不到 2 月份的任何文件- 2015 年,但我确实看到了 2015 年 1 月的文件。
我想知道是否不是 linux 内部 EXT4 的问题,而是 NTFS 本身的问题。我无法判断 VirtualBox 低级驱动程序是否会更新主机文件的时间或“创建”时间。
RAID 中没有空间来保存 vmdk 的完整副本,因此丢失的数据必须以某种方式存在。
处理图像副本
我已经制作了原始版本的“映像” vmdk
,并且卸载了完整的 RAID,因此我可能会对副本有点“破坏性”。
问题是,复制完整备份映像需要 20 个小时,所以我不想拿反复试验开玩笑,我想按正确的顺序使用正确的工具。
过程中如有任何失败,将延迟 1 天。
问题
假设数据必须在那里...假设从 ext4 开始我可以使用 i 节点表...
- Q1) 我需要什么工具集来尝试恢复 i 节点映射或从无到有重新创建新的 i 节点表?
- Q2)特别是,什么是命令我必须运行这些工具吗?我的意思是,如果我运行 fsck 也许我会破坏 extundelete 或反之亦然或其他工具的东西。
- Q3) i 节点表是否会不时备份到为其保留的特殊分区区域?在哪里?如果不是从“最后一天”开始,至少从 2016 年 11 月中旬左右开始,我是否可以幸运地找到表的备份?
也许我问错了问题......
因此,一环即可解决所有问题: 问)如何恢复丢失的文件?
答案1
一致认为 USB 可能可以推送备份(实际上仍然相当慢),但是 USB 上的 RAID 和 USB 上的 TCP-NETWORK 都不是可靠且快速的(目前为止)。
- 在搞乱之前备份有故障的文件系统(如果有资源(额外的外部磁盘或足够大小的 NAS))
- 当备份为一时,用户可以安全地运行任何工具
- 是的,为什么不呢,从 fsck 开始:
fsck -y -v -f /dev/sdX
- 还强烈建议将分区设置为在启动时自动检查(在操作系统启动之前)
tune2fs -C 2 -c 1 /dev/sdX1
(仅适用于 ext3 和 ext4) apt install testdisk
->photorec /dev/sdx
-> 将带回 NTFS 和 ext4 文件内容,但不带回 /directory/struct/and/filename.jpg :(
祝你好运 :)