Windows 将 Linux 所做的更改恢复为 FAT32 分区

Windows 将 Linux 所做的更改恢复为 FAT32 分区

我有一台笔记本电脑,在内部 M.2 SSD 上安装了双启动的 Windows 10 和 Linux Mint 19 Tara。除了所有操作系统专用分区外,我在该 SSD 上还有一个 4 GB 的 FAT32 分区,我打算用它来在操作系统之间复制文件。

问题是,在 Linux 中对该分区进行任何小改动(创建一个小文本文件/任何文件夹、编辑一个文件等)并启动 Windows 后,Windows 看不到该分区的任何变化。因此,在访问该分区时,“不可见”的数据会被损坏和丢失(对两个操作系统而言都是永久的)。当我将一个大文件复制到该分区时,通常不会发生这种情况,然后所有更改在 Windows 中也可见。此外,尽管 Windows 中创建的文件存在,但 Windows 始终将分区显示为空。

我假设 Linux 没有将更改提交到磁盘,Windows 正在某处缓存分区或 FAT 表,或者驱动器进行了一些奇怪的缓存。

问题:如何让 Windows 同意 Linux 对该分区所做的更改?

需要澄清的是:“不可见”是指根据 Windows 实际上不存在。相反的方向则完全正常,Windows 所做的更改可以毫无问题地被 Linux 接收。

答案1

可能是这样,当您启动 Linux 时,您让 Windows 处于睡眠/休眠状态而不是将其关闭。(众所周知,Windows 10 很难正常关闭。)Windows 可能会将部分文件系统缓存在内存中(即页面文件),并且不希望其他操作系统修改磁盘。

尝试弄清楚如何真的关闭 Windows。

答案2

最近的 Windows 版本确实包含启动优化,其中涉及将磁盘数据缓存在同一磁盘的不同位置,这会导致您在不同的操作系统访问磁盘时发现的行为。

您可以使用组策略关闭启动和恢复优化 (位于计算机配置\管理模板\系统\磁盘 NV 缓存)这应该使 Windows 只存储其分区上的文件。还有一些其他非易失性缓存设置可用,但那个应该可以解决您的问题。

答案3

为了补充以前的答案并添加一些额外的信息:

此问题也发生在 Windows 11* 上,并且不仅限于 FAT32 分区,甚至不仅限于位于同一驱动器上的分区。显然,Windows 对其可以访问的所有内部驱动器都这样做(我在与 Windows 本身相同的 SSD 上以及不同的内部驱动器上对 FAT32 和 exFAT 分区进行了测试)。

对于 Windows 11,禁用快速启动似乎已经解决了。(我在 Linux 中创建的文件在 Win11 中可见,并且当我在那里创建新文件时不会被覆盖)

其他缓存选项似乎仅适用于外部驱动器,并不能真正解决内部驱动器(在我的情况下是 SSD 和 HDD)的问题,但如果是这种情况,那么该问题的其他答案就涵盖了这一点。

答案该问题可能也适用于 Windows 10(界面略有不同,但实际上是相同的设置)。

* 有趣的是,在启用快速启动的情况下,Windows 11 似乎没有注意到哪怕是剧烈的变化,例如重新格式化整个驱动器并更改其分区表。我不敢测试如果它试图在那种状态下写入驱动器会发生什么。

相关内容