[root@ip-XXXXXXXX data]# ls -lh test.dat -rw------- 1 root root 60G Sep 19 07:22 test.dat
[root@ip-XXXXXXXX data]# du -sh test.dat 4.4G test.dat
[root@ip-172-30-38-68 data]# du -h --apparent-size test.dat 60G test.dat
既然找到問題了,就得好好看看這是個啥東西,看了以後第一反應就是這個文件預分配了60G,但實際上只使用了4.4G...,蒽~~,就這麼個意思......sql
一、定義app
二、其餘使用場景運維
dd of=sparse-file bs=7M seek=1120 count=0 # 至關於建立一個7G的空文件,不佔磁盤上的存儲數據
或者測試
truncate -s 7G lile # 至關於建立一個7G的空文件,不佔磁盤上的存儲數據
四、測試spa
# 能夠看到/run目錄下是7.7G [root@master run]# df -h Filesystem Size Used Avail Use% Mounted on /dev/nvme0n1p2 200G 6.0G 195G 3% / devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs 7.7G 428K 7.7G 1% /run tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup tmpfs 1.6G 0 1.6G 0% /run/user/1000 # 建立一個7G的sparse file [root@master run]# truncate -s 7G lile [root@master run]# ls -lh lile -rw-r--r-- 1 root root 7.0G Sep 19 08:46 lile # lile這個文件只是一個空的文件,不佔存儲空間 [root@master run]# df -h Filesystem Size Used Avail Use% Mounted on /dev/nvme0n1p2 200G 6.0G 195G 3% / devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs 7.7G 428K 7.7G 1% /run tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup tmpfs 1.6G 0 1.6G 0% /run/user/1000 # 使用dd建立一個大小爲7G的普通文件 [root@master run]# dd if=/dev/zero of=output bs=1G count=7 7+0 records in 7+0 records out 7516192768 bytes (7.5 GB) copied, 3.5524 s, 2.1 GB/s # 能夠看到是成功的,這就說明sparse文件預分配的大小不影響磁盤存儲空間,不影響其餘文件使用存儲空間 [root@master run]# df -h Filesystem Size Used Avail Use% Mounted on /dev/nvme0n1p2 200G 6.0G 195G 3% / devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs 7.7G 7.1G 704M 92% /run tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup tmpfs 1.6G 0 1.6G 0% /run/user/1000
五、總結及注意3d
1)Sparse files並不佔用磁盤存儲空間unix
2)平時咱們使用ls -lh查看文件大小、find / -size +1G 找出來的日誌大小並不必定準確,儘可能再一遍使用du -sh確認日誌
3)ls命令和du命令在必定程度上能夠這樣表示code