快照与备份的区别

一个虚拟机快照 占多少空间_百度知道

快照原理:将当前虚拟机的虚拟硬盘文件锁定,不再更改。之后新建一个文件,之后所有更改都放到新建的文件中,读取时,优先读取这个新建的文件中的,没有的话在读取锁定中的数据。所以快照占的空间 取决于 你做了多少更改


作者:木头龙
链接:https://www.zhihu.com/question/20374919/answer/499376887
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一句话答案:快照是数据存储的某一时刻的状态记录;备份则是数据存储的某一个时刻的副本。这是两种完全不同的概念。

快照

先说背景知识:我们现在电脑上的数据,记录方式都是地址->数据这样存放的。例如我们最熟悉的机械硬盘,最小存储单位是扇区,老式硬盘一个扇区512字节,新式硬盘一个扇区4096字节。每个扇区都有自己的地址,现在主流的LBA寻址方式,就是从0开始,0,1,2,3,……,N这样。

当然,对于外部存储,我们一般不会这样直接存放数据,我们可能通过硬盘分区,并且格式化对应分区后存放数据,于是就变成这样的情况:

例如上图,我们建立一张逻辑地址和物理地址的映射表每个逻辑地址 对应两个物理存储单。当然,这是比较简单的情况:物理硬盘,上面有一个磁盘分区,格式化的时候一个分配单元(Windows叫“簇”)占两个扇区。复杂一点的,可能会有多层逻辑地址,例如分区上有一个虚拟磁盘文件,作为虚拟机的“物理”设备。而虚拟盘的每一个物理扇区号,其实只是虚拟磁盘文件的某个逻辑地址,又对应着文件系统的某个分配单元,同时又是物理磁盘的某个物理扇区号。也就是说可能存在多层逻辑地址,而每一层逻辑地址都会把上一层逻辑地址看做是物理地址对待,这个就不展开了。



如果这个时候,我们做一个快照,快照的数据大概类似这么一个东西:

如果我们要把保存的ABCD改成AACD,在没有快照的时候,是下图的情况(数据在原来的地址上被覆盖了)

 很显然,我们找不回ABCD这个数据了。而如果我们做了快照快照地址0、1 对应的物理地址[0-3]  就被锁定不可更改了,结果会类似这么一个情况:

 (PS:因为我们之前做快照,所有逻辑地址[0,1]以及与其对应的物理地址[0,1,2,3]都被锁定了。于是我们在尝试修改被锁定的逻区域的时候,我们会把新的修改存到一个新的区域。例如,我们对原来的逻辑地址0(即物理地址[0,1])进行修改的时候,会将修改写到新的逻辑地址0(物理地址[7,8])中)

这个时候,我们按照0-1-2-3这样的逻辑地址,读取出来的就是AACD,两个空单元。按照快照地址0-1读取数据,我们就能读取到原来的ABCD了。同时,我们可以看到,原来的逻辑地址4没有了换句话说,我们的存储空间少了一个逻辑存储单元

当然,上面这是最简单的快照。事实上,我们要考虑将来,逻辑地址1可能要从CD改成EF;将来我们需要再做快照2、快照3,更复杂的,我们可能做了快照3之后,回滚到快照1,然后继续修改数据,之后再做一个快照4……又或者这是一个虚拟硬盘文件,放入一份原始数据之后,做了一个快照;然后我们在这个基础上创建了虚拟硬盘2、3、……、N,用于存放不同逻辑的数据处理结果。这些更复杂的情况就不展开说了。

一般来说,原则就是就是快照时锁定物理单元内容,并记录本次快照上一次快照的所对应的物理地址(或者是上一层逻辑地址)的差异。上面例子中,快照完成后,物理地址0-3的数据是不可改动的如果改写后再做第2次快照,则物理地址8-9也会锁定,同时第二次快照会记录下逻辑地址0所对应的物理地址从0改为8

因为快照仅仅记录逻辑地址和物理地址的对应关系,因此快照的速度非常快。在上面例子中,一个逻辑地址对应2个物理扇区,按照现代硬盘一个扇区4KiB,就算按照ZFS的地址宽度128bit=16Byte算,加上物理地址宽度,做一次快照的写入的数据量可能只有整体数据量的0.5%不到。

备份

备份,则是另外一份数据副本,例如这样的:

同一物理设备上的备份

或者这样的:

不同物理设备上的备份

另外,备份又分全量备份增量备份,全量备份就是上面的情况了。增量备份则类似快照,但不同的地方在于两次快照之间只记录了两层地址之间的对应关系的差异,而增量备份则把这些差异中,新增地址所对应的底层数据也复制了一份出来

快照和备份的不同在于:

  • 备份的数据安全性更好:如果原始数据损坏(例如物理介质损坏,或者绕开了快照所在层的管理机制对锁定数据进行了改写),快照回滚是无法恢复出正确的数据的,而备份可以。
  • 快照的速度比备份快得多生成快照的速度比备份速度快的多。也因为这个原因,为了回避因为备份时间带来的各种问题(例如IO占用、数据一致性等)很多备份软件是先生成快照,然后再按照快照所记录的对应关系去读取底层数据来生成备份。
  • 占用空间不同:备份会占用双倍的存储空间,而快照所占用的存储空间则取决于快照的数量以及数据变动情况。极端情况下,快照可能会只占用1%不到的存储空间,也可能会占用数十倍的存储空间。(PS:不过如果同一份数据,同时做相同数量的快照和增量备份的话,备份还是会比快照占用的存储空间多得多。)

最后,快照在很多地方都有使用,例如文件系统层面,ZFS、BtrFS、NTFS(MS管快照叫卷影复制,Volume Shadow copy Service,VSS)这些文件系统都提供快照功能;各种虚拟机有快照;很多关系数据库也有快照。


作者:李志松
链接:https://www.zhihu.com/question/20374919/answer/15155664
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

快照与备份是两个不同的概念.
先来看快照.
快照,其本质类似于数据库的照片,也就是在某个特定时间点(创建快照的时间点)给数据库拍个照放在那儿.但是这个照片是一个新的数据库,可以应用SQL语句.
快照数据库里的数据是不变的.创建快照后,系统会对原数据库的所有数据页做个标识,如果数据页在创建快照后被修改,会复制一个数据页出来,没有修改的数据页则不会有快照(原数据库和快照数据库共用该数据页).
从这样来看,快照存在的时间越长,对系统的压力会越大(要维护的变化数据页太多).
一般来说,快照用在数据库的镜像机上,因为镜像机上的数据库永远是Restoring状态,可以在某个特定的时间点生成一个快照,这样就可以在镜像机上提供一个可访问的数据库,用来为数据仓库提供数据源比较合适.
再来看备份.
备份,其本质是一个副本.相当于在某个时间点把数据库里的所有对象内容都COPY一份,放到一个特定的文件里(备份文件,一般是.bak).
这个文件不是一个数据库,不能直接应用SQL,必须先通过还原的方式还原到一个数据库(可以是和原数据库名称一致,也可以是一个新的数据库),之后才能访问里面的数据.
因为备份的结果是文件,这个文件可以被COPY走,或者写入磁带(放到银行里),从而实现离线容灾.
此外,备份是个很复杂的概念,还涉及到数据库的恢复模型、日志处理等很复杂的东西,需要自己先系统学习下备份还原的相关概念。


作者:幽灵代笔
链接:https://www.zhihu.com/question/20374919/answer/168631711
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

快照这个词常用来表达某种事物的确切状态,因为事物是变动的,文件系统中的文件便是如此,文件快照就是文件本身,只是增加了时间副词而已

取个栗子,假设我有一个hello.txt文件需要备份,随着版本的变化,文件内容的变化如下图所示:

在的第一个版本,文件的内容是123,第二个版本内容是123456789,第三个版本内容是123456。当我们说snapshot1(快照1)指的是内容为123的hello.txt文件,说snapshot2(快照2)说的是内容为123456789的hello.txt文件。

在以快照方式备份的系统中(如git),文件一旦发生变化,备份时就会根据内容生成一个快照(其实就是包含某内容的文件)存储到数据库中,文件没有变化则不会生成新的快照,这些快照(文件)版本号联系在一起,所有可以通过版本号来恢复文件的历史状态

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB的快照备份是一种常用的数据备份方法,它可以在特定时间点对数据库进行全量备份。下面是MongoDB快照备份的介绍: 1. 快照备份原理:MongoDB的快照备份是通过文件系统级别的快照技术来实现的。它会在指定时间点对数据库的数据文件进行拍摄,生成一个数据文件的副本,这个副本可以用于恢复数据库到该时间点的状态。 2. 快照备份的优点: - 高效性:快照备份只需要拍摄数据文件的副本,不需要遍历整个数据库,因此备份速度较快。 - 数据一致性:快照备份是在文件系统级别进行的,可以保证备份数据的一致性,不会出现部分数据备份成功而部分数据备份失败的情况。 - 空间占用小:由于快照备份只是生成数据文件的副本,不需要额外的存储空间,因此占用的空间相对较小。 3. 快照备份的使用: - 文件系统快照:可以使用操作系统或者存储设备提供的文件系统快照功能来进行备份。 - MongoDB工具:MongoDB也提供了一些工具来进行快照备份,如mongodump和mongorestore命令行工具。 4. 注意事项: - 快照备份只能用于全量备份,无法实现增量备份。 - 在进行快照备份时,需要确保数据库处于稳定状态,避免备份过程中的写操作对数据的一致性造成影响。 - 快照备份只能用于恢复到备份时的状态,无法实现精确到某个操作的恢复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值