1. 用dd建立乙個檔案
dd if=/dev/zero of=/mnt/test bs=4096 count=1 oflag=direct
2. 用stat 檢視檔案的詳細資訊
size表示的是檔案的邏輯大小,這裡是4k。
blocks表示的物理檔案的大小:blocks * 512 => 8 *512 => 4096,也就是4k。
io block表示的是一次io的大小,這裡就是4k,如果不夠4k,也是按4k對齊。
如果dd乙個1k的檔案,會看到size是1024,但是block還是8,也就是檔案的邏輯大小是1k,但實際占用的大小是4k。
3. 用fallocate命令,把檔案變成稀疏檔案。
fallocate -p test0 -o 0 -l 4096
4. 在用stat檢視檔案
看到檔案的邏輯大小還是4k。
但是檔案的物理大小變成0。
如果fallocate檔案的大小不是4k的對齊,那blocks是不會變成0的。也就是變成稀疏檔案失敗。具體原因還沒有查到。
稀疏檔案Sparse File
引入稀疏檔案 sparse file 的目的是有效的利用檔案系統空間 磁碟空間 當檔案沒有實際資料時,首先將元資料 metadata 代表了空blocks 寫入磁碟,而不是用空資料 0 填充磁碟。而當寫入資料的時候,整個block被占用。讀取稀疏檔案時,檔案系統透明地將metadata轉化為實際的空...
稀疏檔案 20210209
看維基百科的介紹吧 wikipedia sparse file 使用find var log type f printf s t p n 判斷檔案是否為稀疏檔案。或者使用stat c b b s file 命令。最左邊一列 s 顯示的值是 block size st blocks st size 在...
Linux 檔案相關程式設計
1.access系統呼叫 access系統呼叫用於檢測所指定的檔案訪問許可權,原型如下 include int access const char pathname,int mode 示例如下 include include int main int argc,char argv 其中f ok用於測...