linux下fallocate快速建立大檔案,linuxfallocate

來源:互聯網
上載者:User

linux下fallocate快速建立大檔案,linuxfallocate

以前建立檔案我一般用dd來建立,例如建立一個512M的檔案:

dd命令可以輕易實現建立指定大小的檔案,如

dd if=/dev/zero of=test bs=1M count=1000

會產生一個1000M的test檔案,檔案內容為全0(因從/dev/zero中讀取,/dev/zero為0源)

但是這樣為實際寫入硬碟,檔案產生速度取決於硬碟讀寫速度,如果欲產生超大檔案,速度很慢

在某種情境下,我們只想讓檔案系統認為存在一個超大檔案在此,但是並不實際寫入硬碟

則可以

dd if=/dev/zero of=test bs=1M count=0 seek=100000

此時建立的檔案在檔案系統中的顯示大小為100000MB,但是並不實際佔用block,因此建立速度與記憶體速度相當

seek的作用是跳過輸出檔案中指定大小的部分,這就達到了建立大檔案,但是並不實際寫入的目的

當然,因為不實際寫入硬碟,所(www.111cn.net)以你在容量只有10G的硬碟上建立100G的此類檔案都是可以的


記得以前做Windows開發的時候,有個API叫SetEndOfFile,可以用來將檔案內部遊標所在位置設為檔案末尾,可以用來截取或者擴充檔案,這個函數本質上相當於直接操作檔案分區表的結構,用它來作檔案擴充是不需要頻繁的填充檔案,linux下肯定也有對應的東西,即ftrunc/truncate這兩個函數。

那麼直接利用這個特性來建立大檔案的工具就肯定有人做好了,經搜尋找到了fallocate和truncate兩個命令, 以及GNU dd的seek擴充:

代碼如下 複製代碼
# fallocate -l 10G bigfile
# truncate -s 10G bigfile
# dd of=bigfile bs=1 seek=10G count=0

檔案系統對於這樣建立的檔案有特殊處理,叫疏鬆檔案,現在建立大檔案光速了,再也不用糾結等半天了。
from:http://www.111cn.net/sys/linux/55537.htm

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.