稀疏文件与写入时复制在快照中的应用

摘要

数据库快照、虚拟机快照、系统还原快照的快照机制在数据恢复方面给人们带来了极大便利,这么神奇的操作是如何实现的呢?在使用中我们会发现拍摄一个快照时并不会占用太多的空间,系统运行一段时间发生错误后可以通过快照恢复到原来正常的状态。本文主要阐述了快照的定义,稀疏文件特性以及写入时复制的机制,来对快照的原理有个初步的认识。

关键词:快照,稀疏文件,写入时复制

一、快照

在计算机领域,快照(英语snapshot)是整个系统在某个时间点上的状态,快照中的数据是只读的。

  1. 生成快照:数据A生成一个快照A1。逻辑上生成一个数据的一个副本,只能对这个副本进行读操作。
  2. 快照恢复:数据A修改成为数据B,又修改为数据C,执行快照A1恢复操作后数据C变回了数据A。原数据修改过后,可以通过快照还原回到生成快照时的状态。

二、稀疏文件

稀疏文件(英语Sparse File)是一种文件,采用了NTFS文件系统的一项特性,能尝试在文件内容大多为空时更有效率地使用文件系统的空间。

  1. 真实的数据块将占用真实的磁盘空间。
  2. 大量的空数据块将用简短的信息表示而不占用太多的磁盘空间。

三、写入时复制

写入时复制(英语Copy-On-Write)是当且仅当写入而使数据发生更改时创建数据物理副本的过程。当复制一个对象的时候,不分配新的存储空间,新对象与原对象共用存储空间,并没有真正复制,当写入操作发生时才复制。

  1. 在Java中执行String2=String1的赋值操作时,String2并没有新的地址,而是与String1共用一个地址和存储空间。
  2. 当修改String1时会给String1分配一个新的地址和存储空间来保存修改后的数据,String2的地址保持不变。

四、数据库快照的生成原理

生成一个数据库快照时会生成一个稀疏文件,稀疏文件一开始并不会占用整个数据库大小的磁盘空间。当源数据库发生写操作时,就把修改前的原数据块复制且只复制一次到稀疏文件中,之后相同位置的数据无论怎么修改都不会再写入稀疏文件了(保存原始状态)。进行读快照操作时,一部分数据来自稀疏文件,一部分来自源数据库中未经修改的部分。进行快照恢复时就根据稀疏文件恢复源数据库。

五、参考链接

数据库快照:https://www.cnblogs.com/CareySon/archive/2012/03/30/2424880.html

java字符串:https://blog.csdn.net/ljb825802164/article/details/88528726

六、写在最后

新手文,学习过程中自己整理的一些资料总结,有理解不到的地方欢迎指出。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值