您当前的位置: 首页 > windows教程 > 电脑入门 > Windows目录到底占用了多少硬盘空间?

Windows目录到底占用了多少硬盘空间?

作者:guanchaofeng 来源:本站整理 发布时间: 2009-09-23 18:41 点击:
看到这个问题,我想99%的人都会说:用资源管理器右键点击Windows目录,看看属性不就知道了吗?何必故弄玄虚呢!但是,我会有那么傻的把一个大家都知道的问题重新翻出来吗?既然提出了这个话题,就有我的道理!请各位耐住性子往下看,看看我们的Microsoft同学

Windows目录到底占用了多少硬盘空间?

  看到这个问题,我想99%的人都会说:用资源管理器右键点击Windows目录,看看属性不就知道了吗?何必故弄玄虚呢!但是,我会有那么傻的把一个大家都知道的问题重新翻出来吗?既然提出了这个话题,就有我的道理!请各位耐住性子往下看,看看我们的Microsoft同学又玩了什么样的花活,呵呵。
  
  我们知道,查看一个目录有多大的最快捷的方法就是看看资源管理器文件夹的属性,但是我今天要说的是:如果你用这个方法去看WindowsVista/Windows7系统的目录,你会被你的眼睛所欺骗,因为,Microsoft同学在WindowsVista/Windows7里面大量使用了NTFS文件系统的特性之一的:硬连接(HardLink)来实现WinSxS机制!
  
  我们知道,要安装WindowsVista/Windows7系统,那么系统分区必须是NTFS文件系统。原因有以下一些:
  
  系统文件保护所需
  
  各种安全保护机制,如MIC所需
  
  WinSxS所需
  
  ……
  
  关于最后一点的WinSxS所需,我没有看到过相关的资料说明,不过可以肯定的是,这也是WindowsVista/Windows7系统需要NTFS文件系统的一个条件,因为只有在NTFS文件系统上面,才能实现硬连接机制,也才能达到优化Windows目录占用磁盘空间的目的。
  
  关于硬连接,简单的说,就是一种针对文件的特殊快捷方式,只不过这种快捷方式的实现和一般的快捷方式不一样。
  
  一般的快捷方式是创建一个LNK文件,在这个LNK文件里面描述了目标文件/目录的属性,资源管理器或者其他文件管理工具利用SHELL32.DLL里面的API函数获得这个LNK文件所指向的文件/目录,从而进行访问。
  
  硬连接:是一种基于文件系统级别上的针对文件的快捷方式,基于文件系统级别的含义就是说,只要文件系统启动了,那么对应的快捷方式也就生效了。换句话说,这种连接是常存的,因为文件系统是必须要随机启动的。
  
  硬连接是NTFS文件系统特有的属性之一,在Linux下面,也有类似的机制。硬连接适用于在同一个卷的文件级别,硬连接是不能跨卷的。
  
  WindowsVista/Windows7自带了创建硬连接的命令:mklink.exe,利用这个命令,我们可以给指定的文件创建硬连接:
  
  下面的命令将在link.txt和source.txt之间建立硬连接关系
  
  C:\Users\Smallfrogs\Desktop>mklink/hlink.txtsource.txt
  
  为link.txt<<===>>source.txt创建了硬链接
  
  注意上面的例子:link.txt本是一个不存在的文件,但是当执行完mklink命令以后,link.txt文件也就被创建了。其实,link.txt是一个虚假的文件,它是在文件系统层面上对source.txt文件的一个映射,而link.txt是不占硬盘空间的。
  
  关于硬盘空间的占用问题,是这样测试的:
  
  1、给硬盘划分一个新分区,空间只有2GB;
  
  2、在这个分区的test目录里面新建了一个1.9GB大小的文件,此时剩余空间是0.1GB;
  
  3、用mklink命令给这个1.9GB大小的文件建立了一个硬连接;
  
  4、检查这个分区的剩余空间,还是0.1GB,但是如果用资源管理器看test目录的属性,会发现有2个文件,总大小是3.8GB(整个分区才2GB,能够容纳3.8GB大小的文件吗?显然不可能了)。
  
  还是针对上述的例子,如果我们把原始的文件source.txt删除以后,link.txt文件还是会继续存在的,且内容就是source.txt的文件内容。也就是说,我们删除source.txt,实际上删除的仅仅是这种连接关系,文件本身还是没有被操作的。
  
  关于硬连接,最后一个需要介绍的内容是:当硬连接建立以后,硬连接双方任何一个对象被修改,都会造成对应的连接对象被修改。例如上面的例子:如果修改了link.txt,那么source.txt文件也会同步被修改,反之亦然。这一点和SHELL层面的快捷方式不同,SHELL层面的快捷方式文件LNK仅仅是一个指示关系,修改LNK文件并不影响LNK文件指向的对象,修改LNK文件指向的对象也不会影响LNK文件。
  
  好了,基本知识介绍完了,我们来实际看看Windows目录里面对于硬连接的使用情况吧。
  
  经常看到有人抱怨,Windows\WinSxS目录占用了太多的空间,里面经常发现有同名的文件,而且这些同名的文件在Windows\System32目录下面也有存在,这是为啥呢?其实这就是硬连接导致的。
  
  Microsoft实际上在Windows\WinSxS目录和Windows目录之间建立了硬连接的关系,举一个最简单的例子:
  
  对于Windows7RTM来说,你可以在2个地方找到Ntoskrnl.exe文件。第一个地方是:Windows\System32\ntoskrnl.exe,另外还有一个地方是Windows\WinSxS\x86_microsoft-windows-os-kernel_31bf3856ad364e35_6.1.7600.16385_none_6c06b7c41576a7d9\ntoskrnl.exe,这就是一个典型的硬连接例子。Microsoft在文件系统上面对ntoskrnl.exe做了一个硬连接,使得ntoskrnl.exe能够出现在不同的目录里面,但是只占用了一份ntoskrnl.exe的硬盘空间。利用这种机制,有下面的一些好处:
  
  同样的文件,只需要维护硬连接关系,不需要进行多重的拷贝,这样可以节省硬盘空间。
  
  如果涉及文件更新,只需要先在WinSxS目录里面下载好一个新版本,然后修改Windows\System32下面同名文件的硬连接关系,从旧版本的硬连接指向新版本的硬连接,这样就能够快速的完成文件的更新工作,而不需要进行文件的复制,速度也会快不少。
  
  补丁卸载也是一样的,只需要把硬连接指向改为旧版本就可以了,没有文件替换的问题。而且建立了硬连接关系的文件之间的修改是同步的,因此只要有一方被修改了,另一方也会得到修改。
  
  说了这么多,那么如何知道Windows目录的真实大小呢?Smallfrogs提供了一个工具,可以很方便的知道您系统里面有哪些文件是有硬连接关系的,以及Windows目录下真实的文件大小。
  
  工具可以从http://www.kztechs.com/hardlink/realwindirsize.zip(请使用右键点击另存为...方式下载)下载到,下载解压缩以后,直接运行就可以开始扫描了。扫描过程比较漫长,扫描完成以后,会看到下面的提示信息:
  
  另外,在realwindirsize.exe所在目录下,会生成一份文件名叫做LinkedFile.TXT的文件,里面记录了Windows目录下各个硬连接的关系。
  
  我们扫描到了65088个文件,其中,真实的文件有48022个,其他17066个文件都是硬连接文件。真实的文件占用了14981682KB的硬盘空间,而如果你用资源管理器看Windows目录的话,那么会提示说Windows目录占用了18244902KB的硬盘空间。实际上,Windowssystem32目录下的大多数文件都和WinSxS目录建立了硬连接关系。
  
  说了这么多,最后总结一下吧:
  
  硬连接,一种基于文件系统的同一卷里面的文件快捷方式,Windows目录下面大量使用了硬连接技术,WindowsSystem32目录下的大多数文件,都和WinSxS目录建立了硬连接关系。

分享到:
本文"Windows目录到底占用了多少硬盘空间?"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4