磁盘压缩

磁盘压缩（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文件系统中的错误。某些错误如交叉链接文件可能导致转换过程中额外的数据丢失。
- 已压缩驱动器仅在设备驱动程序已加载并且已压缩驱动器已挂载时可见。而启动盘可能不包含所需驱动程序。（这对与操作系统捆绑的解决方案来说通常不是问题，除非是启动一个外来的操作系统。因为这样的程序默认已修改为将压缩驱动程序复制到引导磁盘，从而相应的操作系统也能在引导盘以外的驱动器上找到它们。）
- 如果已压缩磁盘的展开数据超过正常的磁盘容量，卸载（解除压缩）会遇到问题。
- 用户不一定能意识到一个主机驱动器上的大文件就是已压缩的磁盘。虽然它通常是默认“隐藏”的，用户仍可能好奇地发现一个大文件并可以删除它。这通常会导致数据丢失。