磁盤壓縮

磁盤壓縮（disk compression）軟件是一種可以增加硬盤存儲信息量的技術。與需要用戶指定要壓縮文件的文件壓縮工具不同，磁盤壓縮工具自動完成壓縮與解壓，用戶無需意識到其存在。
此類程序將在需要存儲信息時壓縮數據，而在讀取信息時解壓縮。磁盤壓縮工具將覆蓋操作系統的標準流程。因為幾乎所有應用軟件都使用這種流程訪問磁盤，因此它們可以在安裝磁盤壓縮軟件後繼續正常工作。
磁盤壓縮實用程序在1990年代受到歡迎，當時微型計算機的硬盤仍然較小（20至80百萬字節），價格昂貴，每兆字節需要大約10美元）。對不少用戶來說，相比購買更大容量的磁盤代替當前的驅動器，這種磁盤壓縮軟件是在短期內獲取更多磁盤存儲空間的有效且經濟的手段。一個設計良好的磁盤壓縮軟件平均可將可用空間翻倍，而對速度的影響可以忽略不計。隨著硬盤技術與製造業的進步和成本降低，磁盤壓縮軟件在1990年代後期被淘汰。

**常見的磁盤壓縮解決方案**

**獨立的硬件解決方案**
部分磁盤壓縮解決方案需要硬件輔助，除軟件驅動程序外還需使用額外的壓縮/解壓縮協處理器板卡。知名解決方案包括：- Stacker XT/8和Stacker AT/16，出自Stac Electronics- Expanz!和Expanz! Plus，出自InfoChip Systems- MRCI（微軟即時壓縮接口），出自微軟公司

**獨立的軟件解決方案**
隨著PC處理器性能增長，軟件解決方案在大多數情況下開始達到或甚至超過硬件輔助解決方案的性能。這些壓縮實用程序為獨立銷售。用戶必須具體選擇來安裝和配置軟件。- Squish和Squish Plus，出自Sundog Software- Stacker，出自Stac Electronics- XtraDrive，出自Integrated Information Technology（IIT）- SuperStor和SuperStor Pro，出自AddStor- DoubleDisk和DoubleDisk Gold，出自Vertisoft Systems- JAM（JAM.SYS），出自烏克蘭基輔的JAM Software- DiskDoubler，出自Salient Software- Double Density，出自Data Becker

**軟件捆綁的解決方案**
將磁盤壓縮軟件綁售到新計算機上的想法吸引了經銷商和用戶。經銷商喜歡得到更多的存儲空間來銷售，而用戶喜歡無需自行配置軟件。捆綁的軟件包含（按時間排序）：- DR DOS 6.0（1991年），出自數位研究公司，包含一個AddStor“SuperStor”的自定義版本。- PalmDOS 1.0（1992年），出自Novell（在其收購數字研究公司後），包含一個啟用DPMS的SuperStor。- MS-DOS 6.0（1993年），出自微軟公司，包含DoubleSpace，其部分基於Vertisoft Systems的“DoubleDisk”。MS-DOS 6.0引入了所謂DOS預加載API，它是一個無文檔的挑戰響應輸入接口，允許磁盤組件軟件（DBLSPACE.BIN）在處理CONFIG.SYS文件前自動加載。- PC DOS 6.1（1993年），出自IBM，原始版本未包含磁盤壓縮器，而SuperStor/DS的定製版本（在收購AddStor後）包含在之後的發佈版本中，並也在PC DOS產品線中包括預加載API。- MS-DOS 6.2（1993年），出自微軟公司，包含一個“DoubleSpace”的改進版本。- Novell DOS 7（1993年），出自Novell，包含一個出自Stac Electronics的啟用DPMS的Stacker 3.12（STACKER.BIN），其支持與也在運行Stacker的遠程NetWare和PNW服務器進行已壓縮數據的交換，從而避免複製文件時不必要的重新壓縮。它也引入了DOS 6預加載API的支持，以保持與微軟公司的DoubleSpace在多重引導下的兼容性。使用了一個類似的機制來加載可選的單用戶或多用戶安全組件。- PTS-DOS Extended 6.4（1994年），出自PhysTechSoft，包含一個名為Folder（FOLDER.SYS）的磁盤壓縮組件。- PC DOS 6.3（1994年），出自IBM，包含一個SuperStor/DS。- MS-DOS 6.22（1994年），出自微軟公司，包含DriveSpace，它與DoubleSpace採用不同的壓縮算法（DRVSPACE.BIN），MS-DOS 6.21因法律原因而未搭載任何磁盤壓縮軟件。- PC DOS 7.0（1995年），出自IBM，包含一個出自Stac Electronics的啟用DPMS的Stacker 4.02。- Windows 95（1995年），出自微軟公司，包含一個DriveSpace 2的更新版本。- Windows 95 OSR2（1996年），出自微軟公司，包含一個DriveSpace 3的簡化版本。- Windows 95 Plus!（1996年），出自微軟公司，包含DriveSpace 3的完全版本。- OpenDOS 7.01（1997年），出自Caldera（在收購Novell DOS後），包含一個啟用DPMS的Stacker 3.12。- DR-DOS 7.02（1998年），出自Caldera，包含一個啟用DPMS的的Stacker 3.12。DR-DOS 7.02也添加了對微軟公司DriveSpace的支持。- PC DOS 2000（1998年），出自IBM，包含一個啟用DPMS的Stacker 4.02。- Windows 98（1998年），出自微軟公司，包含DriveSpace 3的完全版本。- DR-DOS 7.03（1999年），出自Caldera，包含一個啟用DPMS的Stacker 3.12。- Windows 98 SE（1999年），出自微軟公司，包含一個DriveSpace 3的完全版本。- PTS-DOS Pro 2000（1999年），出自Paragon Technology Software，包含一個名為DATACOMP的磁盤壓縮組件。

**THS其他解決方案**
 Squeeze，一個適用於Lotus 1-2-3和Lotus Symphony文件的駐留的DOS文件壓縮器，出自Turner Hall Publishing- Squish Plus ROM，出自Sundog Software。它通過Personalized Software（現為Thaddeus Computing）專門分發，是一個特殊的唯讀記憶體板卡，其中包含只有36 KB的適用於HP Portable Plus的一個Squish Plus的定製版本。- Double Tools for DoubleSpace，是Addstor的一個附加產品，是為增強與MS-DOS 6.0捆綁的DoubleSpace的功能。- Multimedia Stacker，出自Helix Software was a bundle of Stac's DPMS-enabled Stacker 4.01 combined with Helix Cloaking和utilities, 利用Cloaking內置的DPMS服務器來重新定位和運行於保護模式。- THS filesystem（1994年-1996年，由Thomas Scheuermann），一個面向Linux的壓縮的文件系統，它可以讀取某些壓縮的卷文件（CVF）。- DMSDOS（1996年），一個Linux內核驅動程序，是為支持DoubleSpace、DriveSpace 2和3以及Stacker 3和4的卷的讀寫。
從Windows XP開始，微軟為NTFS文件系統上的文件提供原生的壓縮支持，但不是以“壓縮驅動器”為標準來實現。

**磁盤壓縮如何工作**
磁盤壓縮程序會創建一個大的文件，使其成為一個虛擬硬盤。這類似將單個物理驅動器劃分為多個虛擬驅動器。壓縮的驅動器通過一個設備驅動程序訪問（存取）。

**壓縮現有驅動器**
所有驅動器最初都是空的。創建驅動器的實用程序通常會提供“壓縮當前驅動器”功能。它的流程通常是：
# 創建一個空的壓縮驅動器，存儲在現有驅動器上。
# 將舊驅動器上的現有文件傳輸到新的壓縮驅動器。
# 根據需要增加新的壓縮驅動器的大小，以容納更多文件，以及在完成後留有空閒空間。
# 在所有文件傳輸後，切換驅動器號。

**壓縮引導驅動器**
需要注意的是，訪問已壓縮驅動器時必須已加載相應的設備驅動程序。已壓縮驅動器C:需要按下列方法改變啟動程式：
# BIOS加載物理驅動器的扇區0（主引導記錄）
# 分區扇區加載可引導分區的扇區0（卷引導記錄）。此種情況下，它是主機驅動器。
# （若以DOS為例）主機驅動器的扇區0加載，DOS BIOS（IO.SYS, IBMBIO.COM等）。
# DOS BIOS加載DOS內核（MSDOS.SYS, IBMDOS.COM等）。
# 如果該DOS支持預加載API，DOS BIOS嘗試加載可預加載的壓縮驅動程序（從主機驅動器的根目錄尋找DBLSPACE.BIN、DRVSPACE.BIN或STACKER.BIN），並嘗試通過DOS預加載API與其通信。如果該驅動程序按預期方式響應，DOS BIOS保留該驅動程序，否則丟棄它。如果保留並適當配置，驅動器號可能被交換，使壓縮的驅動器成為C:。
# DOS BIOS啟動CONFIG.SYS處理；在引導驅動器的根目錄查找文件。以DR-DOS為例，DCONFIG.SYS等。如果存在，將優先於CONFIG.SYS。
# 通過預加載API加載的壓縮驅動程序可能會通過DEVICE聲明加載。
# 根據配置情況，如果還未發生，驅動器號可能被切換，以使壓縮的驅動器變為C:。
# 從已壓縮的驅動器繼續。

**性能影響**
在硬盤性能緩慢的系統上，磁盤壓縮可能增加系統性能。這是因為兩個原因：- 在被壓縮後，存儲的數據量減少。- 一批次磁盤訪問可以獲得更多內容。
如果系統不得不頻繁等待硬盤訪問完成（I/O瓶頸），將硬盤轉換為壓縮狀態或能顯著增加系統速度。但數據的壓縮和解壓將增加CPU使用率。如果系統已遇到CPU瓶頸，磁盤壓縮會降低整體性能。

**缺點**
使用磁盤壓縮也有一些常見的缺點：- 並非所有壓縮工具都能在壓縮磁盤前確認FAT文件系統中的錯誤。某些錯誤如交叉鏈接文件可能導致轉換過程中額外的數據丟失。- 已壓縮驅動器僅在設備驅動程序已加載並且已壓縮驅動器已掛載時可見。而啟動盤可能不包含所需驅動程序。（這對與操作系統捆綁的解決方案來說通常不是問題，除非是啟動一個外來的操作系統。因為SYS這樣的程序默認已修改為將壓縮驅動程序複製到引導磁盤，從而相應的操作系統也能在引導盤以外的驅動器上找到它們。）- 如果已壓縮磁盤的展開數據超過正常的磁盤容量，卸載（解除壓縮）會遇到問題。- 用戶不一定能意識到一個主機驅動器上的大文件就是已壓縮的磁盤。雖然它通常是默認“隱藏”的，用戶仍可能好奇地發現一個大文件並可以刪除它。這通常會導致數據丟失。

**參見**
 內存壓縮- 數據壓縮- 磁盤碎片- 可執行文件壓縮- 自解壓縮檔- cramfs- e2compr- SquashFS- MDFAT（DoubleSpace）- BitFAT（DoubleSpace）- MDBPB（DoubleSpace）

**備註**

**參考資料**

**外部鏈接**
 dead-url=no- dead-url=no ff.