例如
# du -lh /home/cachedata
226M .
# ls -lh /home/cachedata
total 226M
-rw-r--r-- 1 nobody nobody 16G May 13 15:29 cache.db
當在 建立一個空的檔案時
並未馬上建立(佔用)16G 大小的硬碟空間
而是跟作業系統要求此檔案大小 (16G) 的空間申請下來(連續空間)
然後在實際讀寫時
du (disk usage) 佔用磁碟空間
檔案大小 與 檔案佔用磁碟空間 不大一樣
以 linux 而言,一個區塊 block 為 4Kb
建一個 1byte 的檔案,實際會佔用一個區塊 block 4Kb 硬碟空間
但 ls 出來是 1byte 沒錯
建一個 5Kb 的檔案,實際會佔用兩個區塊 block 8Kb 硬碟空間
例如
# ls -l aa.txt
-rw-r--r-- 1 www users 186 Nov 18 23:30 aa.txt
# ls -lh j.php
-rw-r--r-- 1 www users 186 Nov 18 23:30 aa.txt
# du -lh aa.txt
4.0K aa.txt (佔用一個區塊 block 的空間)
另外:
還有個 Sparse File 稀疏檔案
https://zh.wikipedia.org/wiki/稀疏文件
Sparse file (wiki)
例如建立一個 5MB 的空檔案 (沒有任何內容)
ls 時結果是 5MB
du 時結果是 0
$ dd of=sparse-file bs=1k seek=5120 count=0 0+0 records in 0+0 records out 0 bytes (0 B) copied, 0.000107405 s, 0.0 kB/s $ ls -l sparse-file -rw-rw-r--. 1 web wweb 5242880 Dec 6 18:32 sparse-file $ du sparse-file 0 sparse-file
ls and du shows VERY different size!
What is the difference between du -h and ls -lh?
稀疏文件(sparse-files)生成汇总
4 KB 扇区磁盘上的 Linux:实用性建议
高级的格式化磁盘使用的是 4,096 字节的扇区,而不是更常见的 512 字节的扇区。为了让操作系统正常运行,人们使用固件将 4,096 字节的物理扇区分成 512 字节的逻辑分区,以此掩盖了这一变化,但是较大物理扇区的使用给磁盘布局和系统性能带来了一些隐患。本文将查看这些隐患,包括基准测试,它们描述了对一些常见 Linux 文件系统的可能的实际影响。随着高级的格式化磁盘变得越来越普遍,对于那些想要避免与次优配置相关的严重性能损失的人来说,了解如何处理这些磁盘也成为了一项重要的技能。