磁盤壓縮

磁盤壓縮(英語: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.

外部連結