DriveSpace

**DriveSpace**（最初稱為 **DoubleSpace**，即雙倍空間）是一個從 MS-DOS 6.0 版本開始提供的磁碟壓縮實用工具。DriveSpace 的目的是使用者可在磁碟空間上儲存的資料量，通過即時的透明壓縮和解壓。它主要用於硬碟，但也支援對軟碟使用。

## 概述

最常見的使用場景為，使用者的電腦中有一個硬碟，所有空間都已分配到一個分割區（通常是驅動器 C:）。該軟體會壓縮整個驅動器的內容到根分割區中的一個大檔案，然後在系統啟動時，驅動程式將這個大檔案分配為驅動器 C:，使檔案如往常一樣存取。

微軟決定開發 DoubleSpace 並將其添加到 MS-DOS 的原因很可能是，其他製造商（IBM 和 Novell）的基於 DOS 的作業系統事實上已開始在第三方產品中包含磁碟壓縮軟體。

相比從頭開發自己的產品，微軟取得了 Vertisoft 公司 DoubleDisk 產品的技術授權，並在將其調整後成為 DoubleSpace。比如說，控制壓縮、解壓縮的驅動程式 DBLSPACE.BIN 更加深入地整合到作業系統（在 CONFIG.SYS 檔案前載入）。

微軟最初試圖獲得 Stac Electronics 的技術授權，它有一個名為 Stacker 的類似產品，但談判失敗了。微軟後被 Stac Electronics 成功起訴產品侵犯某些壓縮專利。在審理期間，Stac Electronics 稱微軟試圖取得 Stacker 授權時拒絕支付任何費用，僅提供 Stac Electronics 開發增強產品的可能性。

## 消耗和相容情況

有部份電腦程式（特別是遊戲）與 DoubleSpace 不相容，因為它們會繞過 DoubleSpace 的驅動程式。DoubleSpace 也會顯著消耗大量常規記憶體，因此將很難執行占用大量記憶體的程式。

## 軟體缺陷與資料遺失

在軟體發布後不久，一些資料遺失的報告就已出現。一家名為 Blossom 軟體的公司聲稱已發現了一個可能導致資料損壞的軟體缺陷。該缺陷會在寫入檔案到嚴重碎片化的磁碟時出現，並用一個稱為 BUST.EXE 的程式證明。這家公司出售一個名為 DoubleCheck 的程式，用途是檢查可能導致此錯誤的碎片狀況。微軟的立場是，這個錯誤不太可能發生，但已在 MS-DOS 6.2 中修復此問題。

碎片狀況與 DoubleSpace 壓縮單個簇（大小 8K）並將其適配到磁碟的方式有關， occupying fewer sectors (size 512 bytes) than the fixed number required without DoubleSpace (16 sectors in this example). 這導致可能發生一種內部碎片問題，即 DoubleSpace 將無法找到足夠的連續磁區儲存壓縮的簇，即使有足夠的可用空間。

其他潛在的資料遺失原因包括：DoubleSpace 的記憶體區域被其他程式損壞。DoubleSpace 的記憶體區域未受保護，因為在 MS-DOS 執行在真實模式下。微軟已嘗試在 MS-DOS 6.2 版本的 DoubleSpace 中彌補這一點，一項名為 DoubleGuard 的功能會檢查此類損壞。

將整個驅動器壓縮到單個檔案意味著，使用者有可能會意外地刪除所有資料。這可能在使用者無意間存取到包含此檔案的代管驅動器時發生。代管驅動器通常被壓縮驅動程式對映到 H:，但如果壓縮驅動程式載入失敗，使用者可能會看到它在驅動器 C:

在 DoubleSpace 完成更新其資料結構前關閉電腦也可能導致資料遺失。此問題在微軟預設啟用 MS-DOS 6.0 中 SMARTDRV 磁碟快取軟體的寫入快取後更為嚴重。由於此更改，在結束應用程式後，MS-DOS 提示符可能會在所有資料寫入磁碟前出現。在那個時代，由於缺乏關機控制程式（現代作業系統中則很常見），許多使用者會將看到 MS-DOS 提示符作為現在可安全關閉電腦的表象，而這在 MS-DOS 6.0 之前也基本正確。微軟在 MS-DOS 6.2 中處理了此問題，寫入快取仍然預設啟用，但快取會在命令列提示符出現前被強制寫入。

## 附加元件

AddStor 提供了一個名為 Double Tools for DoubleSpace 的附加元件產品，它包含大量工具來增強 MS-DOS 6.0 中提供的 DoubleSpace 的功能。這包括各種診斷功能，已壓縮抽取式媒介自動掛載為習慣布局，以及後台整理 DoubleSpace 已壓縮驅動器的磁碟碎片。為了在後台整理檔案碎片，它可能讓 DoubleTools 替換底層的 DoubleSpace 驅動程式（DBLSPACE.BIN）為 DoubleTools 提供的版本。替換這個驅動程式也能啟用此產品的其他增強功能，例如在檢測到 Intel 80386 或更進階 CPU 時使用 32 位元程式碼路徑、快取功能，以及它所支援的高端記憶體區 —— 這也允許對它的某些緩衝區使用擴充記憶體（減少驅動程式在常規記憶體和高端記憶體區上占用的總空間，雖然這以稍微降低速度為代價）。另一個功能是在多個軟碟上分割壓縮卷，在插入第一個磁碟的情況下就能看到整個卷（並在需要時提示更換光碟）。也可以與遠端電腦共享壓縮卷。Double Tools 還能夠在壓縮的軟碟上放置一個特殊的實用程式，這樣在即使沒有 DoubleSpace（或 Double Tools）的電腦上也可以存取壓縮的資料。

早前開發 DoubleDisk 並授權給微軟的公司 Vertisoft 後來開發並出售一個名為 SpaceManager 的 DoubleSpace 的附加元件程式，其中包含大量可用性增強，並提供改進的壓縮率。

其他產品（例如 Stac Electronics 的 Stacker 的晚期版本）可以轉換現有的 DoubleSpace 已壓縮驅動器到它們自己的格式。

## 後期版本

### MS-DOS 6.2

MS-DOS 6.2 包含一個新的改進後的 DoubleSpace 版本。它已支援移除 DoubleSpace。SCANDISK 程式在此版本中引入，可以掃描壓縮和非壓縮的驅動器，包括檢查 DoubleSpace 的內部結構。安全功能（稱為 DoubleGuard）被添加，以防止記憶體損壞導致資料遺失。與 MS-DOS 6.0 中提供的版本相比，DoubleSpace 驅動程式的記憶體占用減少。上面討論的碎片問題已修復。

### MS-DOS 6.21

因為 Stac Electronics 就專利侵權的訴訟成功，微軟發布了不含 DoubleSpace 的 MS-DOS 6.21。法庭禁令也禁止再分發以前任何包含 DoubleSpace 的 MS-DOS 版本。

### MS-DOS 6.22

MS-DOS 6.22 包含一個磁碟壓縮軟體的重新實現版本，但這次以 **DriveSpace** 為名發布。該軟體從使用者角度看與 MS-DOS 6.2 中的 DoubleSpace 基本相同，並且相容之前的版本。

### Windows 95 中的 DriveSpace

Windows 95 通過一個原生 32 位元驅動程式以及圖形版軟體工具完全支援存取 DoubleSpace/DriveSpace 的壓縮驅動器。MS-DOS DriveSpace 使用者可以無障礙升級到 Windows 95。此外，Microsoft Plus! for Windows 95 包包含 DriveSpace 第三版。此版本引入了新的壓縮格式（HiPack 和 UltraPack），具有不同的效能特性，可提供更高的壓縮率，還有一種工具，可以根據檔案的使用頻率使用不同的格式重新壓縮磁碟上的檔案。可以從 DriveSpace 2 升級到 DriveSpace 3，但沒有降級到 DriveSpace 2 的路徑。雖然，可以解壓縮 DriveSpace 3 驅動器。因為新的功能，DriveSpace 3 的 DOS 裝置驅動程式的記憶體占用大約為 150KB。這導致了使用者難以重新啟動到用於執行遊戲的 Windows 95 的 MS-DOS 模式，因為可用的常規記憶體減少了。

DriveSpace 3 也在 Windows 95 OSR2 中附帶，但許多功能被禁用，除非 Plus! 也已安裝。DriveSpace 也不能與 FAT32 一起使用，這使其幾乎不會用在大空間的 PC 硬碟。

### Windows 98 中的 DriveSpace

Windows 98 附有 DriveSpace 3 作為作業系統的一部份。功能與 Windows 95 with Plus! 相同。

### Windows Me 中的 DriveSpace

因為真實模式支援被移除、FAT32 走向主流和 DriveSpace 不再受歡迎，Windows Me 中的 DriveSpace 只有有限的支援。DriveSpace 不再支援硬碟壓縮，但仍支援讀取和寫入已壓縮的抽取式媒體，但除此之外，DriveSpace 支援的操作是刪除和重新分配已壓縮驅動器。

複製 Windows 98 中的可執行檔替換 Windows ME 系統中的檔案可以非正式的恢復 DriveSpace 3 的所有功能。這樣做之後，可以在 Windows 98 上如往常一樣壓縮新的驅動器。

## 對 Windows 其他檔案系統的壓縮

* DriveSpace 工具不支援 FAT32。
* NTFS 在以 Windows NT 為基礎的作業系統上有自己原生的壓縮技術，不同於 DriveSpace。

## 微軟外的支援

DMSDOS 是一個 Linux 核心驅動程式，開發於 1990 年代後期，支援讀取和寫入 DoubleSpace/DriveSpace 磁碟。不過，讀取和寫入到壓縮的檔案系統僅在核心版本為 2.0、2.1 和 2.2 時可靠。

## 參考資料

## 外部連結

* Microsoft DoubleSpace System Application Programming Interfaces (API) v1.00.05 and DoubleSpace Compressed Volume File (CVF) format. Microsoft. 1993 [1992] [2017-01-08]. （原始內容存檔於 2016-03-03）.
* DoubleSpace Overview（頁面存檔備份，存於網際網路檔案館）
* MDFAT（頁面存檔備份，存於網際網路檔案館）
* CVF layout（頁面存檔備份，存於網際網路檔案館）
* MRCI（頁面存檔備份，存於網際網路檔案館）