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时可靠。