【发布时间】:2015-03-08 09:10:45
【问题描述】:
NTFS 文件可以有对象 ID。这些 id 可以使用FSCTL_SET_OBJECT_ID 设置。但是,msdn article 说:
修改对象标识符可能会导致文件部分的数据丢失,甚至包括整个数据量。
但它没有详细说明。这怎么会导致数据丢失?它是在谈论文件系统中潜在的对象 ID 冲突吗?NTFS 是否以某种方式依赖它们?
侧节点:在找到那段之前我做了一些实验,并设置了一些新创建的文件的对象ID,希望我的文件系统仍然完好无损。
【问题讨论】:
-
确实令人费解,特别是因为它继续说您无论如何不能修改对象标识符。 (在一个还没有对象标识符的对象上设置一个对象标识符不是修改,至少不是这个词的正常意义。)
-
它们由分布式链接跟踪服务使用。当文件从一台机器移动到另一台机器时,这有助于跟踪文件,这在大型企业网络中很重要。或者在您移动桌面快捷方式引用的可执行文件时在桌面上。当您的代码使重要的公司文档无法找到时,可怕的语言肯定是为了给 Microsoft 支持提供一种让您挂断电话的方法 :)
-
DLTS 并不是唯一可能将这些 ID 用作身份和主键的服务。我想在数据库应用程序中修改实体的主键会产生影响,这取决于谁在使用这些主键值做什么。 NTFS 也是如此。大文件与具有较新时间戳的零字节文件之间故意生成的文件 ID 冲突将是明显的“数据丢失”情况。
标签: windows filesystems ntfs