处理文件系统和快照空间大小不一致的方法

发布时间:2025-04-11 点击:8
建站服务器
这篇文章主要介绍处理文件系统和快照空间大小不一致的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
为什么文件系统和快照空间大小不一致?
有用户咨询,在ecs实例内删除文件后再打快照,发现快照容量并没有变小。出现该现象的原因与快照原理、以及文件系统与磁盘、快照的关系有关,即,只要被写过数据的存储块(block),即使在磁盘中的相关文件已经被删除,数据块仍会被记录到快照中,所以出现快照比磁盘占用空间大的现象。文件系统中所谓删除只是在需要删除的文件头部做个标记,让用户知道这块空间可以利用了,但并不会减少磁盘本身的空间占用。
为什么文件系统和快照空间大小不一致?
用户在实例内部看到的是磁盘 (ebs),在磁盘分区上创建的是文件系统 (file system)。文件系统负责管理磁盘空间,其操作最终均转化为磁盘的 i/o 请求。ebs 会记录 block(指磁盘的逻辑块地址被块存储划分为相同大小的块)状态,按需将脏数据拷贝到 oss,这就是打快照的过程。
以下原因可能会造成文件系统的空间与快照大小不一致:
文件系统本身的元数据会占用磁盘空间。
创建文件系统过程会写大量 block。特别的,windows 的慢速格式化会写脏大量 block,而使用快速格式化可以减少写block 的数量。
文件系统为了减小开销,删除文件只是在内部做个标记,而 ebs 不感知这个删除指令,block 仍然是已分配状态,所以仍会把这部分也做到快照里,导致快照比文件系统大。
virtio-block 和 xen 的 block-front 等模块不支持 trim 指令(一种io指令,提示lba上的某段数据不再使用,可以被删除),因而磁盘无法感知数据可以被删除。
创建快照原理
创建快照原理如下图所示。
说明:
将磁盘 lba(逻辑块地址) 划分为 block,未分配过的称为空块,图中白色小方框表示。
只要 block 被写过(已分配,将不再是空块),就将参与计量。
磁盘第一个快照是全量,空块不拷贝。
磁盘后续快照是增量快照,拷贝自上一个快照以来的增量脏数据,因此同一个 block 在不同快照中可能会出现多个版本(图中用不同颜色来表示)。
快照计量方法
如上图所示,快照记录空间共有 11 个 block,比磁盘 t2 中的 9 个 block 还要多出 2 个。
对单块磁盘的所有快照整体计量。
只对已分配的 block 进行计量。不同时间点相同版本 block 只统计一次。
不同版本的 block 占用 n 倍空间。
删除快照的原理
删除快照的原理如下图所示。
说明:
离线分析已删除快照的所有 block,删除其中未被其他快照引用的数据。
删除 s1 之后,剩下的快照一共有 10 个 block(包含 s0 的 6 个、s1 产生的 2 个脏数据、s2 的 2 个。),而不是 8 个 block(s0 的 6 个、s2 的 2 个)。
“数据写入操作”的准确定义
首先澄清一个概念,对底层分布式存储系统而言,“数据写入操作”不仅仅意味着用户写入的业务数据,也包括格式化磁盘等一系列i/o操作。
用户在拿到磁盘后,必须要先格式化才能正常使用。格式化的本质是建立文件系统的过程。一个分区或磁盘在作为文件系统使用前,需要初始化,并将数据结构记录到磁盘上,这个过程就叫建立文件系统。
因此,在磁盘上建立文件系统,也就意味着对磁盘有数据写入操作。不同的文件系统,在格式化时写入的文件大小也不尽相同,具体如下:
windows系统格式化,分为快速和正常格式化:
快速格式化只是给分区分配文件系统,并重写目录表;
正常格式化不但会进行上述工作,还会对分区逐扇区进行扫描以确定和标记坏扇区;
因此正常格式化操作,会填充磁盘空块,相当于把磁盘全盘写了一遍。在此种情况下,第一个全量快照的大小会近似于磁盘容量。而快速格式化占用的实际空间则相对较少。
linux系统格式化,也同样是建立文件系统的过程。因此刚刚格式化完毕的磁盘,在用户没有写入业务数据的时候,第一个快照也会有一定的容量大小,具体要看不同的文件系统格式而定。
以上是处理文件系统和快照空间大小不一致的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注资讯频道!

com续费多少钱?新手如何进行com域名续费操作?
【 Linux】?Netdata1.25.0发布!实时性能和健康监测系统
电脑中使用搜狐影音下载视频的技巧
国内web云服务器合算
阿里云服务器怎么更改套餐模式
腾讯云服务器加买数据盘
云服务器收费标准表
腾讯云服务器镜像搬家阿里云