這篇文章主要講解了“fallocate的基本使用方法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“fallocate的基本使用方法”吧!
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供淮南網(wǎng)站建設(shè)、淮南做網(wǎng)站、淮南網(wǎng)站設(shè)計、淮南網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、淮南企業(yè)網(wǎng)站模板建站服務(wù),10余年淮南做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
什么是空洞文件?
“在UNIX文件操作中,文件位移量可以大于文件的當前長度,在這種情況下,對該文件的下一次寫將延長該文件,并在文件中構(gòu)成一個空洞,這一點是允許的。位于文件中但沒有寫過的字節(jié)都被設(shè)為 0?!?/p>
如果 offset 比文件的當前長度更大,下一個寫操作就會把文件“撐大(extend)”。這就是所謂的在文件里創(chuàng)造“空洞(hole)”。沒有被實際寫入文件的所有字節(jié)由重復(fù)的 0 表示??斩词欠裾加糜脖P空間是由文件系統(tǒng)(file system)決定的。大部分文件系統(tǒng)是不占用的。
怎么獲得一個空洞文件?
以Linux來說,使用lseek或truncate到一個固定位置生成的“空洞文件”是不會占據(jù)真正的磁盤空間的。
空洞文件特點就是offset大于實際大小,也就是說一個文件的兩頭有數(shù)據(jù)而中間為空,以‘\0‘填充。那文件系統(tǒng)會不會不做任何處理的將其存放在硬盤上呢?大部分文件系統(tǒng)是不會將其存放在硬盤上。
文件預(yù)留
快速的為某個文件分配實際的磁盤空間在Linux下可通過fallocate(對應(yīng)的posix接口為posix_fallocate)系統(tǒng)調(diào)用來實現(xiàn),大部分主流文件系統(tǒng)如ext4,xfs還是支持fallocate
fallocate
#include
int fallocate(int fd, int mode, off_t offset, off_t len);
fd就是open產(chǎn)生的文件描述符,offset就是進行fallocate的文件偏移位置,len為fallocate的的長度。offset和len一起構(gòu)成了要釋放的文件范圍。
[root@centos ~]# fallocate --help Usage: fallocate [options]Preallocate space to, or deallocate space from a file. Options: -c, --collapse-range remove a range from the file -d, --dig-holes detect zeroes and replace with holes -i, --insert-range insert a hole at range, shifting existing data -l, --length length for range operations, in bytes -n, --keep-size maintain the apparent size of the file -o, --offset offset for range operations, in bytes -p, --punch-hole replace a range with a hole (implies -n) -z, --zero-range zero and ensure allocation of a range -x, --posix use posix_fallocate(3) instead of fallocate(2) -v, --verbose verbose mode -h, --help display this help -V, --version display version For more details see fallocate(1). [root@centos ~]# fallocate -l 10M dctestfile [root@centos ~]# ls dctestfile [root@centos ~]# cat dctestfile ^C [root@centos ~]# ll -alhtr dctestfile -rw-r--r-- 1 root root 10M May 7 18:10 dctestfile
參考:
https://blog.csdn.net/weixin_36145588/article/details/78822837
感謝各位的閱讀,以上就是“fallocate的基本使用方法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對fallocate的基本使用方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!