我在联想 P50 上运行 Ubuntu 16.04。
我的笔记本电脑上有 2 个 SSD,如下所示:
/dev/sda
- 256GB,有 Linux 分区和 Windows 分区/dev/sdb
- 512GB,单个 FAT32 分区,用于存储大型数据文件(所有文件都不重要或在其他地方备份)
我想将 Windows 移至,/dev/sdb
以便我的 Linux 分区可以占用全部 256GB /dev/sda
。为此,我首先要缩小我的/dev/sdb
“数据存储”分区。
为了缩小/dev/sdb
分区,我打开了 gGParted 并使用“调整分区大小”操作将/dev/sdb
分区缩小到 128GB。GParted 报告已成功完成操作。
我关闭了 GParted 并重新打开它。当我重新打开它时,它报告说我的/dev/sdb
分区大小没有变化,并且仍然占用了整个 512GB 的驱动器空间。我再次执行了“调整大小”操作。第二次执行调整大小操作后,分区表损坏了。GParted 不再能够检测到文件系统。
Testdisk 也无法检测到我的 fat32 文件系统。fdisk 报告了 4 个随机大小的分区,表明分区表已损坏。
我计划在将来重新整理一些重要数据,我想知道:
- 我做错了什么
- 为什么会发生这种情况
- 我该如何恢复我的数据?我愿意打开十六进制编辑器并手动检查。
- 我该如何预防此类事件再次发生?
答案1
我做错了什么
第一个错误是使用 FAT32 并假设您可以保存更大的文件。FAT32 没有日志,无法使恢复/修复更容易,并且无法保存超过 4GB 的文件。它可能会说您保存了它,但只保存了前 4GB。
当 gparted 说它工作了但没有显示时,你应该立即停止并调查原因。可能需要 chkdsk,它在 FAT32 上非常慢,因为没有日志。
为什么会发生这种情况
不确定,通常 gparted 可以工作,但通常最好在 Windows 上使用 Windows 工具,在 Linux 上使用 Linux 工具。这样你就不会因为破坏 Windows 文件系统而责怪 Linux。
我如何恢复我的数据(我愿意打开十六进制编辑器并手动浏览它)
您可能应该使用 ddrescue 或类似工具来对驱动器进行映像处理。然后,您可以使用 testdisk 的一部分 photorec 来扫描驱动器,查找任何看起来像文件的东西。由于只有一个分区,因此您可以尝试重置分区表,看看 chkdsk 或 dosfsck 是否有效。
我该如何预防此类事件再次发生?
我现在喜欢 gpt,因为它有 MBR(msdos)上的备份分区表,但 Windows 只能从 gpt 以 UEFI 模式启动。Ubuntu 可以从 gpt 以 UEFI 或 BIOS 启动。我建议重新安装 Ubuntu,而不是移动 Windows。然后,您可以在删除旧安装之前轻松地将 /home 和数据移动到新安装中。如果您想要一个用于共享数据的数据分区,请使用 NTFS。