dd 命令建立虛擬硬碟檔案

2021-06-16 17:09:42 字數 1796 閱讀 6545

linux下面沒有未分割槽的硬碟空間了,但是又需要建立乙個單獨硬碟分割槽,怎麼辦,如果已分割槽的硬碟還有可用空間那就是用dd 命令吧

虛擬機器技術 - 把linux安裝在乙個檔案中(用dd生成虛擬塊裝置檔案) 

第乙個問題是:什麼是虛擬塊裝置檔案?虛擬塊裝置檔案是本人杜撰的乙個名稱,該類檔案在主機作業系統上是普通檔案,在虛擬機器中作為乙個虛擬塊裝置,也就是虛擬機器中的硬碟。在虛擬機器中對虛擬塊裝置的讀寫,實際都是對主機上該檔案的操作。 

虛擬塊裝置檔案更通用的名稱是硬碟映象檔案(hard disk image),但不是所有的硬碟映象檔案都是虛擬塊裝置檔案,例如,目前ghost的gho格式的映象檔案就不能成為虛擬機器中的硬碟。 

linux的dd命令,可以用於生成虛擬塊裝置檔案。既可以用於建立空映象檔案,也可以用於建立物理硬碟的映象。先看乙個實際例子:

# dd if=/dev/hda of=/mnt/nebula/hda_dd.image4757130+0 records in4757130+0 records out

上面這個命令將ide裝置/dev/hda的內容複製到/mnt/nebula/hda_dd.image檔案。引數if告訴dd從哪個檔案讀取資料,引數 of告訴dd讀出的資料寫入哪個檔案中。注意,對於dd來說,輸入和輸出都是檔案,dd做的只是檔案拷貝工作,這得益於unix/linux下面將裝置也抽象為特殊的檔案。

一般來說裝置檔案有兩種,一種是塊裝置,一種是字元裝置。塊裝置的特點是可以隨機讀寫(random access),比如記憶體、硬碟等。字元裝置的特點是順序讀寫(sequential access),比如滑鼠,鍵盤,麥克風等。

前面說了如何生成物理硬碟的映象,如果想生成空映象檔案(本文的主要目的),還需要乙個特殊的裝置。/dev/zero是linux提供的乙個特殊的字元裝置,它的特點是可以永遠讀該檔案,每次讀取的結果都是二進位制0。下面的命令可以生成乙個100m的空映象檔案:ixpub技術部落格 

dd if=/dev/zero of=100m.img bs=1m count=100

y#x l![v#z+r7{0 100+0 records inixpub技術部落格 w7vof{7m#l

100+0 records outixpub技術部落格 ^r1a8rr"l!`'s]

104857600 bytes (105 mb) copied, 0.18719 seconds, 560 mb/s 

除了前面已經解釋的of和if引數,這次又出現了bs和count引數。bs=1m表示每一次讀寫1m資料,count=100表示讀寫 100次,這樣就指定了生成檔案的大小為100m。bs引數還可以進一步細分為ibs和obs兩種,為讀操作與寫操作分別指定不同的buffer大小。 

這樣就生成100m的空映象檔案,問題是,如果要生成1g的虛擬塊裝置檔案,就得占用1g的硬碟空間,而這個映象檔案完全是空的,是不是有一點浪費?好在linux支援sparse(稀疏)檔案。請看下面的例子 

# dd if=/dev/zero of=1g.img bs=1m seek=1000 count=0

0+0 records in

0+0 records out

0 0 bytes (0 b) copied, 3.3e-05 seconds, 0.0 kb/s

# ls -l 1g.img

-rw-r-r- 1 root  root  1048576000 mar 25 15:32 1g.img

# du -m 1g.img

這裡用了乙個新的命令seek,表示略過1000個block不寫(這裡block按照bs的定義是1m),count=0表示寫入0個block。用ls命令看新生成的檔案,大小可以看出是1000m。但是再用du一看,實際占用硬碟大小只有1m。

DD 命令 測速 硬碟

老外喜歡用 dd if dev zero of test bs 64k count 16k conv fdatasync 國人喜歡用 dd if dev zero of test.bin bs 64k count 4k oflag dsync 1.dd if dev zero of test bs ...

DD 命令 測速 硬碟

老外喜歡用 dd if dev zero of test bs 64k count 16k conv fdatasync 國人喜歡用 dd if dev zero of test.bin bs 64k count 4k oflag dsync 1.dd if dev zero of test bs ...

linux建立檔案命令 dd命令

linux建立檔案命令 dd命令 把指定的輸入檔案拷貝到指定的輸出檔案中,並且在拷貝的過程中可以進行格式轉換。語法 code copy to clipboard dd 選項 quote if 輸入檔案 或裝置名稱 of 輸出檔案 或裝置名稱 ibs bytes 一次讀取 bytes 位元組,即讀入緩...