磁盘告警之---神奇的魔法(Sparse file)
一、问题来源



二、出现的问题
[root@ip-XXXXXXXX data]# ls -lh test.dat
-rw------- root root 60G Sep : test.dat
[root@ip-XXXXXXXX data]# du -sh test.dat
.4G test.dat
三、排查过程
[root@ip---- data]# du -h --apparent-size test.dat
60G test.dat
四、Sparse file
既然找到问题了,就得好好看看这是个啥东西,看了之后第一反应就是这个文件预分配了60G,但实际上只使用了4.4G...,蒽~~,就这么个意思......
1、定义

2、其他使用场景


dd of=sparse-file bs=7M seek= count= # 相当于创建一个7G的空文件,不占磁盘上的存储数据
或者
truncate -s 7G lile # 相当于创建一个7G的空文件,不占磁盘上的存储数据
4、测试
# 可以看到/run目录下是7.7G
[root@master run]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p2 200G .0G 195G % /
devtmpfs .7G .7G % /dev
tmpfs .7G .7G % /dev/shm
tmpfs .7G 428K .7G % /run
tmpfs .7G .7G % /sys/fs/cgroup
tmpfs .6G .6G % /run/user/ # 创建一个7G的sparse file
[root@master run]# truncate -s 7G lile [root@master run]# ls -lh lile
-rw-r--r-- root root .0G Sep : lile # lile这个文件只是一个空的文件,不占存储空间
[root@master run]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p2 200G .0G 195G % /
devtmpfs .7G .7G % /dev
tmpfs .7G .7G % /dev/shm
tmpfs .7G 428K .7G % /run
tmpfs .7G .7G % /sys/fs/cgroup
tmpfs .6G .6G % /run/user/ # 使用dd创建一个大小为7G的普通文件
[root@master run]# dd if=/dev/zero of=output bs=1G count=
+ records in
+ records out
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 .0G 195G % /
devtmpfs .7G .7G % /dev
tmpfs .7G .7G % /dev/shm
tmpfs .7G .1G 704M % /run
tmpfs .7G .7G % /sys/fs/cgroup
tmpfs .6G .6G % /run/user/
5、总结及注意
1)Sparse files并不占用磁盘存储空间
2)平时我们使用ls -lh查看文件大小、find / -size +1G 找出来的日志大小并不一定准确,尽量再一遍使用du -sh确认
3)ls命令和du命令在一定程度上可以这样表示

五、其他
1、本想看一下跟sparse file相关的unix系统方面的,但是感觉自己知识点不太足,有点难度....
磁盘告警之---神奇的魔法(Sparse file)的更多相关文章
- 第17章 内存映射文件(3)_稀疏文件(Sparse File)
17.8 稀疏调拨的内存映射文件 17.8.1 稀疏文件简介 (1)稀疏文件(Sparse File):指的是文件中出现大量的0数据,这些数据对我们用处不大,但是却一样的占用空间.NTFS文件系统对此 ...
- SQL Server ->> Sparse File(稀疏文件)
Sparse File(稀疏文件)不是SQL Server的特性.它属于Windows的NTFS文件系统的一个特性.如果某个大文件中的数据包含着大量“0数据”(这个应该从二进制上看),这样的文件就可以 ...
- Linux 磁盘告警分析
硬件配置 cat /etc/redhat-release && dmidecode -s system-product-name && cat /proc/cpuinf ...
- 转 由一次磁盘告警引发的血案:du 和 ls 的区别
如果你完全不明白或者完全明白图片含义, 那么你不用继续往下看了. 否则, 这篇文章也许正是你需要的. 背景 确切地说,不是收到的自动告警短信或者邮件告诉我某机器上的磁盘满了,而是某同学人肉发现该机器写 ...
- 用windows自带的fsutil来创建1G稀疏文件(sparse file)
fsutils file createnew a.dat 1073741824 fsutil sparse setflag a.dat fsutil sparse setrange a.dat 0 ...
- 基于【磁盘】操作的IO接口:File
基本操作Api import org.apache.commons.lang3.time.DateFormatUtils; import java.io.*; import java.util.Dat ...
- 神奇的魔法数字0x61c88647
来源JDK源码,产生的数字分布很均匀 用法代码如下. # -*- coding: utf-8 -*- HASH_INCREMENT = 0x61c88647 def magic_hash(n): fo ...
- KVM虚拟化技术(六)磁盘管理
KVM支持的虚拟磁盘类型 raw 这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像:它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案,然而也正因为 它不存储元数据,因此不能支持某些高 ...
- Python监控SQL Server数据库服务器磁盘使用情况
本篇博客总结一下Python采集SQL Server数据库服务器的磁盘使用信息,其实这里也是根据需求不断推进演化的一个历程,我们监控服务器的磁盘走了大概这样一个历程: 1:使用SQL Server作业 ...
随机推荐
- 100天搞定机器学习|Day21 Beautiful Soup
前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...
- 分布式系统的一致性级别划分及Zookeeper一致性级别分析
最近在研究分布式系统的一些理论概念,例如关于分布式系统一致性的讨论,看了一些文章我有一些不解.大多数对分布式系统一致性的划分是将其分为三类:强一致性,顺序一致性以及弱一致性.强一致性(Strict C ...
- js中toFixed精度问题的解决办法
toFixed() 方法可把 Number 四舍五入为指定小数位数的数字.例如将数据Num保留2位小数,则表示为:toFixed(Num):但是其四舍五入的规则与数学中的规则不同,使用的是银行家舍入规 ...
- go 学习笔记之详细说一说封装是怎么回事
关注公众号[雪之梦技术驿站]查看上篇文章 猜猜看go是不是面向对象语言?能不能面向对象编程? 虽然在上篇文章中,我们通过尝试性学习探索了 Go 语言中关于面向对象的相关概念,更确切的说是关于封装的基本 ...
- Spring源码剖析开篇:什么是Spring?
在讲源码之前,先让我们回顾一下一下Spring的基本概念,当然,在看源码之前你需要使用过spring或者spirngmvc. Spring是什么 Spring是一个开源的轻量级Java SE(Java ...
- 算法与数据结构基础 - 贪心(Greedy)
贪心基础 贪心(Greedy)常用于解决最优问题,以期通过某种策略获得一系列局部最优解.从而求得整体最优解. 贪心从局部最优角度考虑,只适用于具备无后效性的问题,即某个状态以前的过程不影响以后的状态. ...
- webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建
webrtc是google推出的基于浏览器的实时语音-视频通讯架构.其典型的应用场景为:浏览器之间端到端(p2p)实时视频对话,但由于网络环境的复杂性(比如:路由器/交换机/防火墙等),浏览器与浏览器 ...
- three.js实现球体地球2018年全球GDP前十国家标记
概况如下: 1.SphereGeometry实现自转的地球: 2.THREE.Math.degToRad,Math.sin,Math.cos实现地图经纬度与三位坐标x,y,z之间的转换: 3.Imag ...
- PHP 递归读取无限级分类
/** * [获取第一级分类] * 20170829 * * @return array */ public function getCateList(){ $this->catelog = [ ...
- python多进程通信实例分析
操作系统会为每一个创建的进程分配一个独立的地址空间,不同进程的地址空间是完全隔离的,因此如果不加其他的措施,他们完全感觉不到彼此的存在.那么进程之间怎么进行通信?他们之间的关联是怎样的?实现原理是什么 ...