如果你安裝了時下最流行的微軟Windows 7操作系統,是否會覺得微軟Windows 7操作系統下的winsxs文件夾龐大的嚇人,有些人就裝X說Windows 7操作系統占空間了,本文為你詳解。
關於最近的新的微軟安全,穩定著稱的操作系統
我們知道,查看一個目錄有多大的最快捷的方法就是看看資源管理器文件夾的屬性,但是我今天要說的是:如果你用這個方法去看 Windows Vista / Windows 7 系統的目錄,你會被你的眼睛所欺騙,因為,Microsoft 同學在 Windows Vista/ Windows 7 裡面大量使用了NTFS文件系統的特性之一的:硬連接(Hard Link)來實現WinSxS機制!
用過的人都知道,要安裝 Windows Vista / Windows 7系統,那麼系統分區必須是NTFS文件系統。原因有以下一些:系統文件保護所需;各種安全保護機制,如MIC所需;WinSxS 所需……
關於最後一點的 WinSxS 所需,所以NTFS這是Windows Vista / Windows 7 系統需要的一個條件,因為只有在 NTFS 文件系統上面,才能實現硬連接機制,也才能達到優化Windows目錄占用磁盤空間的目的。
關於微軟系統的硬鏈接
硬鏈接是什麼呢?簡單的說,就是一種針對文件的特殊快捷方式,只不過這種快捷方式的實現和一般的快捷方式不一樣。
硬連接是NTFS文件系統特有的屬性之一,在Linux下面,也有類似的機制。硬連接適用於在同一個卷的文件級別,硬連接是不能跨卷的。
硬鏈接,系統屬性測試
Windows Vista / Windows 7自帶了創建硬連接的命令:mklink.exe,利用這個命令,我們可以給指定的文件創建硬連接:
下面的命令將在link.txt和source.txt之間建立硬連接關系
C:UsershoiiDesktop》mklink /h link.txt gb.txt
為 link.txt 《《===》》 gb.txt 創建了硬鏈接
注意上面的例子:link.txt本是一個不存在的文件,但是當執行完mklink命令以後,link.txt文件也就被創建了。其實,link.txt是一個虛假的文件,它是在文件系統層面上對gb.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大小的文件嗎?顯然不可能了)
還是針對上述的例子,如果我們把原始的文件 gb.txt 刪除以後,link.txt文件還是會繼續存在的,且內容就是source.txt的文件內容。也就是說,我們刪除gb.txt,實際上刪除的僅僅是這種連接關系,文件本身還是沒有被操作的。
關於硬連接,最後一個需要介紹的內容是:當硬連接建立以後,硬連接雙方任何一個對象被修改,都會造成對應的連接對象被修改。例如上面的例子:如果修改了link.txt,那麼gb.txt文件也會同步被修改,反之亦然。這一點和SHELL層面的快捷方式不同,SHELL層面的快捷方式文件LNK僅僅是一個指示關系,修改LNK文件並不影響LNK文件指向的對象,修改LNK文件指向的對象也不會影響LNK文件。
WIN新系統下的硬鏈接情況和使用這種技術的原因
好了,基本知識介紹完了,我們來實際看看Windows目錄裡面對於硬連接的使用情況吧。
經常看到有人抱怨,WindowsWinSxS目錄占用了太多的空間,裡面經常發現有同名的文件,而且這些同名的文件在 WindowsSystem32 目錄下面也有存在,這是為啥呢?其實這就是硬連接導致的。
Microsoft為啥這麼麻煩搞這個呢?其實這樣對系統的穩定性的增加非常有好處
同樣的文件,只需要維護硬連接關系,不需要進行多重的拷貝,這樣可以節省硬盤空間
如果涉及文件更新,只需要先在WinSxS 目錄裡面下載好一個新版本,然後修改 WindowsSystem32 下面同名文件的硬連接關系,從舊版本的硬連接指向新版本的硬連接,這樣就能夠快速的完成文件的更新工作,而不需要進行文件的復制,速度也會快不少
補丁卸載也是一樣的,只需要把硬連接指向改為舊版本就可以了,沒有文件替換的問題。而且建立了硬連接關系的文件之間的修改是同步的,因此只要有一方被修改了,另一方也會得到修改
真相大白
說了這麼多,那麼如何知道 Windows 目錄的真實大小呢?有很多小工具可以使用,也可以在DOS下的第三方工具來測試,有興趣的童鞋就自己測試吧,我的測試結果如下:
對於純淨的系統測試結果如下,共有文件65088個,其中,真實的文件有48022個,其他17066個文件都是硬連接文件。真實的文件占用了14981682 KB的硬盤空間,而如果你用資源管理器看的話,那麼會提示說占用了 18244902 KB的硬盤空間。其實呢?, Windowssystem32 目錄下的大多數文件都和 WinSxS 目錄建立了硬連接關系~~都多算了一次。
Windows 7操作系統winsxs那麼多空間占著。其實沒那麼多。那不過是文件同步映射導致的結果。