2012-02-06 54 views
1

首先,我想解釋爲什麼我需要這個。 我需要爲虛擬機創建一些磁盤映像文件。該文件將是非常巨大的(100GB〜1.5TB)文件,填充零。它應該在很短的時間內創建(儘可能多,至少應該比使用「/ dev/zero」的「dd」命令更快)。要求大小將是各種各樣的(這意味着我不能以前創建它)。 簡單的解決方案(直到知道)將文件創建爲稀疏文件。 但爲什麼我想改變解決方案是稀疏文件的某種缺點。在非常短的時間內連接非常大(〜TByte)文件

在我看來,它可以通過直接編輯inode來解決。 我的想法是創建非常大的文件,這些文件充滿了零並將它們分爲inode級別。或者,在連接文件以創建所需的文件大小之前,我可以創建大量100 GB的文件。 我知道「debugfs」可以編輯索引節點的直接塊。因爲「debugfs」用於文件恢復,也許,我可以使用它來創建文件。但直到現在我還找不到如何編輯inode的間接塊。除了編輯間接塊之外,我不確定直接編輯inode的副作用。

無論如何,是否有任何酷的解決方案或工具(如果存在)「縫製」大文件或創建零填充文件? 「貓」命令或其他只是讀寫解決方案可能不能完成我的問題。

+2

你說你想解釋_why_,但你永遠不會解釋它......但是,如果你需要填充零的文件,爲什麼不讀取你需要的任何數量從/ dev/zero? – Kimvais 2012-02-06 07:59:45

+0

/dev/zero正是我想要建議:) – paulsm4 2012-02-06 08:03:52

+0

// kimvais謝謝你的回覆。該文件是磁盤映像。我將把這些鏡像安裝到虛擬機上。 – jinhwan 2012-02-07 00:19:19

回答

4

如果您只想創建零填充文件,則fallocate可能會有用。從手冊頁

fallocate用於將塊預分配給文件。對於支持fallocate系統調用的文件系統,通過分配塊並將它們標記爲未初始化,可以快速完成此操作,因此不需要數據塊的IO。這比通過填充零來創建文件要快得多。

從Linux Kernel v2.6.31開始,bocfs,ext4,ocfs2和xfs文件系統支持fallocate系統調用。

+0

謝謝你的回答。但可悲的是,我不能使用這個解決方案,df – jinhwan 2012-02-22 06:52:58