zoukankan      html  css  js  c++  java
  • NTFS误报可用空间?

    我最近接到个问题,客户打电话来报告卷根的“磁盘大小”与卷属性中报告的“已用空间”数量之间存在显著差异。在考虑这一点时,我注意到我自己的C:驱动器有一个神秘的20GB的差异。

    下面是我如何找到答案的故事。

    在开始之前,有两种方法用于计算磁盘使用量…
    方法1–体积位图分析

    下面的饼图显示的%已用%和%空闲指示基于卷位图分析。隐藏的$Bitmap:$Data:“”流是通过FSCTL_GET_volume_Bitmap IO控制代码从卷中读取的,并计算1和0。二进制“1”表示已分配的群集,而“0”表示空闲群集。设置位总数表示卷上已分配的群集总数。这是计算已分配空间和可用空间的最快和最可靠的方法。

    方法2-使用FindFirstFileEx/FindNextFile扫描文件

    导航到“C:”文件夹,选择“所有文件/文件夹”,然后右键单击,然后选择“属性”。当shell枚举它可以在根文件夹和子文件夹中找到的所有文件时,将出现一个对话框。“大小”和“磁盘大小”字段最终将显示Explorer找到的所有文件的所有主数据流的总大小。在我的例子中,这个方法只找到102GB中的80.25GB(留下21.75GB的差异)。

    为什么会有这么大的区别?

    简单的回答是-“如果您在Explorer中看不到它,它不会被添加到总大小中。”
    如何找到隐藏的磁盘使用…

    首先,检查您的文件是否在当前用户帐户和资源管理器设置下都是可见的。取消选中“隐藏受保护的操作系统文件”并选择“显示隐藏的文件和文件夹”。完成后,再次查看磁盘上的大小。

    它与饼图的匹配度在百分之几以内吗?如果没有,请继续执行下面的操作。

    运行CHKDSK并保存输出。最后的总结信息就是我们想要看到的。

    基于CHKDSK输出,我们可以通过将以下内容相加来计算元数据的总使用量…

    KB

    GB

    Description

    57036

    .05 GB

    Space used by 22677 indexes.

    0

    0 GB

    Space used by $Badclus file.

    1352680

    1.29 GB

    Space used by $MFT.

    65536

    .06 GB

    Space used by $Loffile.

    1475252

    1.4 GB

     Metadata Total

    在本例中,metadata使用量仅占1.4 GB。如果metadata数量占使用率的比例很高,那么我们需要更仔细地了解卷的使用情况,而不是简单地查找隐藏文件。
    从CHKDSK输出可以看出,用户文件占用的总空间为106095080kb(101.18gb)。这占总使用量的很大一部分,因此我们应该查看用户文件,以了解为什么在Explorer中看不到这些文件。

    你有权限查看卷/文件夹吗?
    a、 如果这是系统驱动器,请查看“Documents and Settings”或“users”文件夹,看看是否可以浏览所有配置文件文件夹。如果没有,您可能需要与所有者联系以检查他们的文件夹大小,并查看他们在用户文件夹中保存了什么。如果他们像我一样,他们将有5年的内存转储,MP3,VHD,PDF等。
    b、 试试看”CACLS.EXE x: /T”,或浏览驱动器上的文件夹,查找“拒绝访问”错误。一旦发生这种情况,请为自己授予对子树的该部分的权限(如果您的管理权限允许),或者让有权访问该文件夹的人为您枚举内容。检查该文件夹中所有文件的文件数和磁盘大小,并将其添加到总数中。
    c、 继续此过程,直到所有文件夹中的所有文件总数为。
    d、 总数有意义吗?如果没有,则继续下一步。
    在我神秘的20GB差异的情况下,我发现了一个以前安装的旧用户配置文件。果然,我在浏览时收到了一个拒绝访问的错误。我获得了文件夹的所有权。这个用户习惯于在桌面的子文件夹中收集内存转储和虚拟机。我用delete键恢复了不少空闲空间。我重新扫描了这卷书,但令我失望的是,仍然有很大的不同。

    是否有其他流文件?尝试使用STREAMS.EXE从(http://technet.microsoft.com/en-us/sysinternals/default.aspx). Streams将递归子目录并按备用命名流报告空间使用情况。将其导入文本文件,并使用文本编辑器或电子表格程序对其进行分析。

    当通过文件扫描方法计算总使用量时,硬链接可能会有问题。硬链接的使用并不广泛,但这一点值得一提。硬链接是指向现有文件的额外索引项。这些是通过CreateHardLink函数创建的。虽然文件实际上存在于一个位置,但每个硬链接都有自己的大小字段。因此,单个文件可以添加两次到运行总数中。另一件要知道的事情是硬链接是不同步的,因此可能只有一个链接会显示实际的文件大小(请参阅下面的示例)。

    不幸的是,很少有选项可用于检测硬链接悖论,但当文件扫描显示的使用率超过位图时,需要考虑这一点。既然我们的情况正好相反,硬链接并不是一个重要因素。

    卷影复制服务是否为快照维护差异区域文件?使用VSSADMIN LIST SHADOWSTORAGE查找。将卷影存储添加到运行总数中。
    VSSVC为制作卷快照预先分配空间。为了支持此功能,diff area文件保存在“System Volume Information”文件夹中。此预先分配的空间用于维护“早期版本”功能和“系统还原”应用程序的时间点信息。如果您是希望将这些特性的影响降到最低的用户类型,那么可以使用VSSADMIN调整卷影存储的大小,以便它对磁盘使用的影响更小。我更喜欢保留这些特性的默认设置(并记下它使用了多少磁盘空间)。

    如果你的数字仍然没有意义,那么现在是时候检查活动隐藏的文件/文件夹了。有许多不同的rootkit扫描器可以帮助您识别是否存在活动隐藏的文件和文件夹。尝试使用类似Rootkit Revealer的扫描仪。看到我没有大量的神秘用法,我很满意没有恶意逻辑隐藏我的文件。在考虑了所有因素后,只剩下1.57GB的差异(这是由用户回收站的内容计算的)。
    每当你看到“已用空间”和“磁盘大小”之间的差异时,一定要问自己“我没有看到什么?”?”

  • 相关阅读:
    OK335xS-Android mkmmc-android-ubifs.sh hacking
    OK335xS-Android pack-ubi-256M.sh hacking
    OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建
    Qt Quick Hello World hacking
    Qt QML referenceexamples attached Demo hacking
    QT 5.4.1 for Android Ubuntu QtWebView Demo
    I.MX6 working note for high efficiency
    QT 5.4.1 for Android Windows环境搭建
    mkbootimg hacking
    Generate And Play A Tone In Android hacking
  • 原文地址:https://www.cnblogs.com/yilang/p/13618173.html
Copyright © 2011-2022 走看看