阅读386 返回首页    go 阿里云 go 技术社区[云栖]


阿里云快照容量基本原理

快照容量与磁盘容量的关系

快照是在某个时间点,对整个磁盘数据状态的捕捉。在
创建快照的过程中, 通过消除空块的操作,使得单个快照容量小于磁盘容量。
阿里云会识别出从未写入过数据的磁盘空间,并标记为空块,不进行计量, 以节省用户的快照空间。

数据写入操作的准确定义

首先澄清一个概念,对底层分布式存储系统而言,“数据写入操作”不仅仅 意味着用户写入的业务数据,也包括格式化磁盘等一系列 IO 操作。
用户在拿到磁盘后,必须要先格式化才能正常使用,格式化的本质是建立文 件系统的过程。一个分区或磁盘在作为文件系统使用前,需要初始化,并将数据 结构记录到磁盘上,这个过程就叫建立文件系统。
因此,在磁盘上建立文件系统,也就意味着对磁盘有数据写入操作。
不同的文件系统,在格式化时写入的文件大小也不尽相同,具体如下:
1. Windows 系统格式化,分为快速和正常格式化:
• 快速格式化只是给分区分配文件系统,并重写目录表;
• 正常格式化不但会进行上述工作,还会对分区逐扇区进行扫描以
确定和标记坏扇区;
• 因此正常格式化操作,会填充磁盘空块,相当于把磁盘全盘写了
一遍。在此种情况下,第一个全量快照的大小会近似于磁盘容量。
而快速格式化占用的实际空间则相对较少。
2. Linux 系统格式化,也同样是建立文件系统的过程。因此刚刚格式化完
毕的磁盘,在用户没有写入业务数据的时候,第一个快照也会有一定的 容量大小,具体要看不同的文件系统格式而定。

虚拟机内删除文件会减少空间占用吗?

文件系统中所谓删除只是在需要删除的文件头部做个标记,告诉用户这块空 间可以利用了,并不会减少磁盘本身的空间占用。

为什么快照容量大于文件系统内看到的数据量?

如上所述,文件系统的格式化、文件的删除操作以及用户的写数据行为都会 使得磁盘空块数量不断减少,从而减弱了创建快照过程中消除空块的效果。因此, 用户会看到快照容量比文件系统内展示的数据量要大。

为什么快照删除了之后,快照链总容量有时不会减少?

由于阿里云采用的是增量快照的方式,即后面的快照会和之前的快照进行比对,如果是全部内容相同,则直接引用之前快照的内容,例如:
s1->s2->s3

在创建s3时,会把磁盘的内容和s2的内容进行比较,如果没有发生任何变化,则直接引用s2的内容,增量大小则为0,s2的引用计数为1,此时删除s2,并不会回收s2占用的存储空间。

最后更新:2017-06-05 11:32:27

  上一篇:go  基于OGG Datahub插件将Oracle数据同步上云
  下一篇:go  《Netty IN ACTION》中文版《Netty实战》翻译手记——不负好时光