[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