磁盘压缩

磁盘压缩(英语:disk compression软件是一种可以增加硬盘存储信息量的技术。与需要用户指定要压缩文件的文件压缩工具不同,磁盘压缩工具自动完成压缩与解压,用户无需意识到其存在。

此类程序将在需要存储信息时压缩数据,而在读取信息时解压缩。磁盘压缩工具将覆盖操作系统的标准流程。因为几乎所有应用软件都使用这种流程访问磁盘,因此它们可以在安装磁盘压缩软件后继续正常工作。

磁盘压缩实用程序在1990年代受到欢迎,当时微型计算机的硬盘仍然较小(20至80百万字节),价格昂贵,每兆字节需要大约10美元)。对不少用户来说,相比购买更大容量的磁盘代替当前的驱动器,这种磁盘压缩软件是在短期内获取更多磁盘存储空间的有效且经济的手段。一个设计良好的磁盘压缩软件平均可将可用空间翻倍,而对速度的影响可以忽略不计[来源请求]。随着硬盘技术与制造业的进步和成本降低,磁盘压缩软件在1990年代后期被淘汰。

常见的磁盘压缩解决方案

独立的硬件解决方案

部分磁盘压缩解决方案需要硬件辅助,除软件驱动程序外还需使用额外的压缩/解压缩协处理器板卡。知名解决方案包括:

独立的软件解决方案

随着PC处理器性能增长,软件解决方案在大多数情况下开始达到或甚至超过硬件辅助解决方案的性能。这些压缩实用程序为独立销售。用户必须具体选择来安装和配置软件。

软件捆绑的解决方案

将磁盘压缩软件绑售到新计算机上的想法吸引了经销商和用户。经销商喜欢得到更多的存储空间来销售,而用户喜欢无需自行配置软件。捆绑的软件包含(按时间排序):

其他解决方案

Windows XP开始,微软为NTFS文件系统上的文件提供原生的压缩支持,但不是以“压缩驱动器”为标准来实现。

磁盘压缩如何工作

磁盘压缩程序会创建一个大的文件,使其成为一个虚拟硬盘。这类似将单个物理驱动器划分为多个虚拟驱动器。压缩的驱动器通过一个设备驱动程序访问(存取)。

压缩现有驱动器

所有驱动器最初都是空的。创建驱动器的实用程序通常会提供“压缩当前驱动器”功能。它的流程通常是:

  1. 创建一个空的压缩驱动器,存储在现有驱动器上。
  2. 将旧驱动器上的现有文件传输到新的压缩驱动器。
  3. 根据需要增加新的压缩驱动器的大小,以容纳更多文件,以及在完成后留有空闲空间。
  4. 在所有文件传输后,切换驱动器号。

压缩引导驱动器

需要注意的是,访问已压缩驱动器时必须已加载相应的设备驱动程序。已压缩驱动器C:需要按下列方法改变启动程式

  1. BIOS加载物理驱动器的扇区0(主引导记录
  2. 分区扇区加载可引导分区的扇区0(卷引导记录英语Volume Boot Record)。此种情况下,它是主机驱动器。
  3. (若以DOS为例)主机驱动器的扇区0加载,DOS BIOS(IO.SYS, IBMBIO.COM等)。
  4. DOS BIOS加载DOS内核(MSDOS.SYS, IBMDOS.COM等)。
  5. 如果该DOS支持预加载API英语DOS preload API,DOS BIOS尝试加载可预加载的压缩驱动程序[17](从主机驱动器的根目录寻找DBLSPACE.BIN、DRVSPACE.BIN或STACKER.BIN),并尝试通过DOS预加载API与其通信。如果该驱动程序按预期方式响应,DOS BIOS保留该驱动程序,否则丢弃它。[18]如果保留并适当配置,驱动器号可能被交换,使压缩的驱动器成为C:。
  6. DOS BIOS启动CONFIG.SYS处理;在引导驱动器的根目录查找文件。以DR-DOS为例,DCONFIG.SYS等。如果存在,将优先于CONFIG.SYS。[19][10]
  7. 通过预加载API加载的压缩驱动程序可能会通过DEVICE英语DEVICE (CONFIG.SYS directive)声明加载。
  8. 根据配置情况,如果还未发生,驱动器号可能被切换,以使压缩的驱动器变为C:。
  9. 从已压缩的驱动器继续。

性能影响

在硬盘性能缓慢的系统上,磁盘压缩可能增加系统性能。这是因为两个原因:

  • 在被压缩后,存储的数据量减少。
  • 一批次磁盘访问可以获得更多内容。

如果系统不得不频繁等待硬盘访问完成(I/O瓶颈英语I/O bound),将硬盘转换为压缩状态或能显著增加系统速度。但数据的压缩和解压将增加CPU使用率。如果系统已遇到CPU瓶颈英语CPU bound,磁盘压缩会降低整体性能。

缺点

使用磁盘压缩也有一些常见的缺点:

  • 并非所有压缩工具都能在压缩磁盘前确认FAT文件系统中的错误。某些错误如交叉链接英语Crosslinked file文件可能导致转换过程中额外的数据丢失。[nb 1]
  • 已压缩驱动器仅在设备驱动程序已加载并且已压缩驱动器已挂载时可见。而启动盘可能不包含所需驱动程序。(这对与操作系统捆绑的解决方案来说通常不是问题,除非是启动一个外来的操作系统。因为SYS英语SYS (DOS command)这样的程序默认已修改为将压缩驱动程序复制到引导磁盘,从而相应的操作系统也能在引导盘以外的驱动器上找到它们。)
  • 如果已压缩磁盘的展开数据超过正常的磁盘容量,卸载(解除压缩)会遇到问题。
  • 用户不一定能意识到一个主机驱动器上的大文件就是已压缩的磁盘。虽然它通常是默认“隐藏”的[nb 2],用户仍可能好奇地发现一个大文件并可以删除它。这通常会导致数据丢失。

参见

备注

  1. ^ 交叉链接文件英语Crosslinked file,是指两个文件在同一个位置存储它们的(哪怕部分)数据
  2. ^ 举例来说,DOS会为文件分配最多四个属性英语FAT attributes:系统、隐藏、只读和存档。默认情况下,带有系统或隐藏属性的文件不会被显示。带有系统或只读属性的文件不能使用

参考资料

  1. ^ 1.0 1.1 1.2 Slovick, Linda. The big squeeze. InfoWorld英语InfoWorld. 1992-02-17, 14 (7): 57–63 [2015-04-06]. (原始内容存档于2017-04-02). 
  2. ^ 2.0 2.1 2.2 2.3 Pastrick, Greg. Double - no - triple your hard disk space with on-the-fly data compression utilities. PC Magazine. 1992-01-28, 11 (2): 261 [2015-04-06]. (原始内容存档于2017-04-02). 
  3. ^ Mendelson, Edward. Expanz! board quickly compresses files on all disk types but forfeits some DOS compatibilities. PC Magazine. 1990-11-13, 9 (19): 13 [2015-04-06]. (原始内容存档于2017-04-01). 
  4. ^ Walkenbach, John. Squish - File compressor crams data into smaller space, but slowly. InfoWorld英语InfoWorld. 1987-02-02, 9 (6): 55 [2015-04-05]. (原始内容存档于2017-04-02). 
  5. ^ Davis, Stephen Randy. Squish Puts a Squeeze on Files Before They Are Written to Disk. PC Magazine. 1987-02-24, 6 (4): 46 [2015-04-06]. (原始内容存档于2017-04-01). 
  6. ^ Goldstein, Hal. 50% more file space for as little as $89.95 (PDF). The Portable Paper英语The Portable Paper (Personalized Software英语Personalized Software, now Thaddeus Computing英语Thaddeus Computing). 1989-07-08, 4 (4): 46 [2015-04-05]. (原始内容存档 (PDF)于2020-10-22). 
  7. ^ 存档副本. [2017-04-01]. (原始内容存档于2019-02-11). 
  8. ^ MS-DOS-Clone made in Russia. Computerwoche. 1994-05-06 [2015-04-12]. (原始内容存档于2020-09-25).  参数|journal=与模板{{cite web}}不匹配(建议改用{{cite journal}}|website=) (帮助)
  9. ^ DR-DOS 7.02 User Guide. Caldera, Inc.英语Caldera, Inc.. 1998 [2015-04-06]. (原始内容存档于2016-11-05). 
  10. ^ 10.0 10.1 Paul, Matthias. Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT. 1997-10-02 [2009-03-29]. (原始内容存档于2003-10-04). 
  11. ^ Turner Hall Publishing. Squeeze 10 times as many spreadsheets on a disk - SQZ! - The data squeezer for Lotus. PC Magazine. 1986-10-14: 155 [2016-11-18]. (原始内容存档于2016-11-19). 
  12. ^ ftp://sunsite.unc.edu/pub/Linux/system/Filesystems/dosfs/thsfs.tgz[永久失效链接]
  13. ^ 存档副本. [2017-04-01]. (原始内容存档于2017-01-03). 
  14. ^ 存档副本. [2017-04-01]. (原始内容存档于2017-01-03). 
  15. ^ DMSDOS - Linux kernel driver. 2005-03-18 [2016-05-25]. (原始内容存档于2016-11-11). 
  16. ^ DMSDOS CVF module. 1998-11-19 [2016-11-01]. (原始内容存档于2016-11-02). 
  17. ^ Schulman, Andrew; Brown, Ralf; Maxey, David; Michels, Raymond J.; Kyle, Jim. Undocumented DOS - A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 2. Addison Wesley英语Addison Wesley. 1994. ISBN 0-201-63287-X. ISBN 978-0-201-63287-3. 
  18. ^ Hands on - Under the Hood: Inside MS-DOS 6 - The developers of MS-DOS describe the operating system's memory optimization and disk-compression technology. BYTE Magazine英语BYTE Magazine. July 1993, 18: 197–202 [2016-11-01]. 
  19. ^ Paul, Matthias. NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds. MPDOSTIP (e-book) edition 3, release 157. 1997-07-30 [2015-04-05]. (原始内容存档于2016-11-03) (德语).  NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.

外部链接