磁盘压缩

**磁碟壓縮**（英語：**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 的磁碟壓縮組件。

### 其他解決方案

* **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 檔案系統上的檔案提供原生的壓縮支援，但不是以「壓縮驅動器」為標準來實現。

## 磁碟壓縮如何工作

磁碟壓縮程式會建立一個大的檔案，使其成為一個虛擬硬碟。這類似將單個物理驅動器劃分為多個虛擬驅動器。壓縮的驅動器通過一個裝置驅動程式存取（存取）。

### 壓縮現有驅動器

所有驅動器最初都是空的。建立驅動器的實用程式通常會提供「壓縮當前驅動器」功能。它的流程通常是：

1. 建立一個空的壓縮驅動器，儲存在現有驅動器上。
2. 將舊驅動器上的現有檔案傳輸到新的壓縮驅動器。
3. 根據需要增加新的壓縮驅動器的大小，以容納更多檔案，以及在完成後留有空閒空間。
4. 在所有檔案傳輸後，切換驅動器號。

### 壓縮引導驅動器

需要注意的是，存取已壓縮驅動器時必須已載入相應的裝置驅動程式。已壓縮驅動器 C: 需要按下列方法改變啟動程式：

1. BIOS 載入物理驅動器的磁區 0（主開機紀錄）
2. 分割區磁區載入可引導分割區的磁區 0（卷引導記錄）。此種情況下，它是主機驅動器。
3. （若以 DOS 為例）主機驅動器的磁區 0 載入，DOS BIOS（IO.SYS, IBMBIO.COM 等）。
4. DOS BIOS 載入 DOS 核心（MSDOS.SYS, IBMDOS.COM 等）。
5. 如果該 DOS 支援預載入 API，DOS BIOS 嘗試載入可預載入的壓縮驅動程式（從主機驅動器的根目錄尋找 DBLSPACE.BIN、DRVSPACE.BIN 或 STACKER.BIN），並嘗試通過 DOS 預載入 API 與其通信。如果該驅動程式按預期方式回應，DOS BIOS 保留該驅動程式，否則丟棄它。如果保留並適當組態，驅動器號可能被交換，使壓縮的驅動器成為 C:。
6. DOS BIOS 啟動 CONFIG.SYS 處理；在引導驅動器的根目錄尋找檔案。以 DR-DOS 為例，DCONFIG.SYS 等。如果存在，將優先於 CONFIG.SYS。
7. 通過預載入 API 載入的壓縮驅動程式可能會通過 DEVICE 聲明載入。
8. 根據組態情況，如果還未發生，驅動器號可能被切換，以使壓縮的驅動器變為 C:。
9. 從已壓縮的驅動器繼續。

### 效能影響

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

* 在被壓縮後，儲存的資料量減少。
* 一批次磁碟存取可以獲得更多內容。

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

### 缺點

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

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

## 參見

* 記憶體壓縮
* 資料壓縮
* 磁碟碎片
* 可執行檔壓縮
* 自解壓縮檔
* cramfs
* e2compr
* SquashFS
* MDFAT（DoubleSpace）
* BitFAT（DoubleSpace）
* MDBPB（DoubleSpace）

## 備註

## 參考資料

## 外部連結

* MS-DOS 6 Technical Reference. [2017-04-01]. （原始內容存檔於 2008-04-20）.
* DoubleSpace CVF file layout. [2017-04-01]. （原始內容存檔於 2017-01-03）.  ff.
* How Safe is Disk Compression?. BYTE Magazine. February 1994. （原始內容存檔於 2008-06-19）.
* How To... Compress Hard Drives. Smart Computing. April 1999 [2020-09-15]. （原始內容存檔於 2012-02-25）.