磁碟壓縮

磁碟壓縮（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（在其收購數字研究公司後），包含一個啟用DOS保護模式服務的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的磁碟壓縮組件。

### 其他解決方案

- Squeeze，一個適用於Lotus 1-2-3和文件的駐留的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 -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保留該驅動程序，否則丟棄它。
- DOS BIOS啟動CONFIG.SYS處理；在引導驅動器的根目錄查找文件。以DR-DOS為例，DCONFIG.SYS等。如果存在，將優先於CONFIG.SYS。
- 通過預加載API加載的壓縮驅動程序可能會通過聲明加載。
- 從已壓縮的驅動器繼續。

### 性能影響

在硬碟性能緩慢的系統上，磁碟壓縮可能增加系統性能。這是因為兩個原因：

- 在被壓縮後，存儲的數據量減少。
- 一批次磁碟訪問可以獲得更多內容。

如果系統不得不頻繁等待硬碟訪問完成（I/O瓶頸），將硬碟轉換為壓縮狀態或能顯著增加系統速度。但數據的壓縮和解壓將增加CPU使用率。如果系統已遇到CPU瓶頸，磁碟壓縮會降低整體性能。

### 缺點

使用磁碟壓縮也有一些常見的缺點：

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