Linux 内核如何处理 Windows NTFS 文件系统?

Linux 内核如何处理 Windows NTFS 文件系统?

我正在阅读一篇文章(RW Smith LPIC_1学习指南),内容如下:

Linux 可以可靠地读取 NTFS 并可以覆盖现有文件,但 Linux 内核无法将新文件写入 NTFS 分区。

“内核”无法将新文件写入 NFTS 分区是什么意思?

在另一个地方说:

NTFS-3G 是一个读/写 NTFS 驱动程序,驻留在用户空间而不是内核空间。它被某些 Linux 发行版用作默认的 NTFS 驱动程序。

内核空间与用户空间有何不同?

另外,由于我们可以在双引导系统中访问 Windows 驱动器,为什么我们不能使用诸如 之类的命令查看 Windows 文件系统的类型df -T

答案1

在 NTFS-3G 之前没有适当的读/写 NTFS 支持。最初,在双启动系统上,可以在 NTFS 分区上写入文件,但在 Windows NT/XP 下重新启动时,您必须执行文件系统检查以更正光盘上的(元)数据。因此,使用 VFAT 分区用于 Windows NT/XP 和 Linux 之间的数据交换是很常见的,因为该文件系统类型的驱动程序没有此限制/问题。

自从引入 NFTS-3G (2006) 以来,这不再是必要的,您可以编写新文件并更新现有文件,在 Windows 下重新启动并使用这些文件,而无需执行文件系统检查。 (到那时,我基本上不再需要重新启动,而是在虚拟机中使用 Windows)。

NTFS-3G 在用户空间中运行,这意味着它无法直接访问内核数据和例程,但必须像任何普通程序一样通过系统调用(与内核空间(设备)驱动程序相反)。

至于df -T,它似乎与 Fuse 一起运行,并且(正确地)将文件系统类型标识为fuseblk。 Fuse 对 NTFS 一无所知,因此它不提供任何更深入的探测。也不df -T探测光盘,它只是询问文件系统驱动程序,它正在处理什么类型(如果可以,您不必安装文件系统即可使其显示在 中df -T,在这种情况下,它可以直接探测设备块并做一个猜想)。

相关内容