全球网络存储工业协会SNIA(Storage Networking Industry Association)对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像(和索引----本人添加)。
快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。按照 SNIA 的定义, 快照有全量快照和增量快照两种类型, 其中又各自使用了不同的快照技术:
上面这个定义翻译过来后很难理解和产生歧义,更喜欢下面的(增量快照的)定义:
- 存储快照是特定时间点数据的一组参考标记。快照就像一个详细的目录表,为用户指向他们可以回滚到的数据的可访问副本。摘自:What is a Storage Snapshot? - https://www.techtarget.com/searchdatabackup/definition/storage-snapshot
存储快照是什么意思?
存储快照可以定义为一组指针,用于表示(denote )存储在存储设备上的数据。该存储设备可以是磁盘驱动器、磁带或存储区域网络 (SAN)。它可以被认为是一个目录,每个指针描述存储在磁盘上的信息或数据。计算机将此快照视为数据的完整备份。
存储快照提供了在创建快照时文件或设备的简明“外观”。它不是数据的精确复制品,而只是数据在特定时刻的快速“图片”。What is a Storage Snapshot? -https://www.techopedia.com/definition/13596/storage-snapshot
以上的定义可以用一成语来形容:按图索骥。 图-->照片-->快照。 骥-->被快照的数据
所以快照应该是一个数据的目录。
这就解答了快照究竟是在备份什么
快照是对当前目录及以下的子树状态进行保存,创建快照相当于对目录树中(节点以下的子目录树)每个inode进行备份,因为inode承载了文件系统的全部信息。
根据 SNIA,快照分为完整快照和增量快照,增量快照又分COW和ROW,共三种。它们使用不同的快照技术。
全量快照可以参考RAID1理解,创建快照时会生成一个源卷的镜像卷,在读操作时没有任何影响,在写操作时会有两次写入操作,分别是写入源卷与镜像卷。关于增量快照是本文的重点内容,下文将进行详细的介绍。
增量快照包含COW和ROW两种,下面我们将介绍这两种快照技术的原理实现。
存储系统采用虚拟化存储技术。存储池中创建的LUN包含了元数据卷(Meta Volume)和数据卷(Data Volume)两部分组成。
需要进行快照操作的源数据所在的卷,对用户而言表现形式为源LUN。源LUN包括Meta Volume和Data Volume:
对源LUN创建快照后,逻辑上生成的数据副本。对用户而言表现形式为快照LUN。快照LUN包括Snapshot Meta Volume和Snapshot Data Volume:
快照生成并激活后,存储系统在源LUN所在的存储池中动态划分一部分存储空间,用于保存写前拷贝数据。同一个源LUN对应的所有快照LUN共享同一个COW数据空间。COW数据空间包括COW Meta区域和COW Data区域:
映射表用于记录源LUN数据和快照LUN数据的在某个时间点的改变情况以及改变后的存储位置。映射表分为共享映射表和独享映射表:
ROW(Redirect-on-Write 写时重定向):
写数据时写入到快照卷;读源卷时,创建快照前的数据从源卷读,创建快照后数据从快照卷读。
COW(Copy-on-Write 写前拷贝):
写入数据之前,先对源卷数据进行复制,然后新数据才写进源卷;
快照进行读操作时,首先由快照系统判断,上层业务需要读取的数据是否在快照卷中,若在,直接从快照卷读取,若不在,则查询映射表,去对应源卷的逻辑地中读取(这个查表并去源卷读的操作,也叫读重定向)
RWM(Read-Modify-Write 写前读出修改):
指当覆盖写发生时,如果本次改写的内容不足一个BlockSize,那么需要先将对应的块读上来,然后再内存中将原内容和待修改内容合并Merge,最后将新的块写到原来的位置。但是RMW也带来了两个问题:一是需要额外的读开销;二是RMW不是原子操作,如果磁盘中途掉电,会有数据损坏的风险。为此我们需要引入Journal,先将待更新数据写入Journal,然后再更新数据,最后再删除Journal对应的空间。
原文链接:https://blog.csdn.net/DeamonXiao/article/details/120866790
使用场景区别:
可以看出COW在写入时需要拷贝一份数据到快照卷的动作,而ROW是直接重定向到快照卷写入,所以ROW适合写密集型;相反,由于ROW不断进行指针重定向,读性能会有较大影响,而COW不会,所以COW适合读密集型。
原文链接:https://blog.csdn.net/grimmp/article/details/115430994
1.快照技术
指定数据集合的一个完整复制描述,该复制包括相应数据在某个时间点的映像。
快照相当于给数据拍个照片
快照的核心概念就是 :快照存储了指向具体数据的指针(索引)
2.COW(Copy-On-Write),写前拷贝 (<----创建快照后的事)
第一次写时复制 COW
COW(Copy-On-Write),写前拷贝,也称写时拷贝。
创建快照以后,如果源卷的数据发生了变化,那么快照系统会首先将 原始数据 拷贝到 快照卷 上对应的数据块中,然后再对源卷进行改写。
写操作
如上图简要示例,快照创建以后,若上层业务对源卷写数据X,X在缓存中排队,快照系统将X即将写入的位置(逻辑地址)上的数据Y,拷贝到快照卷中对应的位置(逻辑地址)上,同时,生成一张映射表,表中一列记录源卷上数据变化的逻辑地址,另一列记录快照卷上数据变化的逻辑地址。
我们可以看到,上层业务每下发一个数据块,存储上,发生了两次写操作:一次是源卷将数据写入快照卷(即图中Y),一次是上层业务将数据写入源卷(即图中X)。
读操作
如上图,快照卷 若映射给上层业务进行数据分析等用途时,针对快照进行读操作时,首先由快照系统判断,上层业务需要读取的数据是否在快照卷中,若在,直接从快照卷读取,若不在,则查询映射表,去对应源卷的逻辑地中读取(这个查表并去源卷读的操作,也叫读重定向)。这一点,恰好就解释了为什么快照是一份完全可用的副本,它没有对源卷进行100%的拷贝,但对上层业务来说,却可以将快照看做是和源卷“一模一样”的副本。
也就是说,当原数据要发生改变时(暂时在cache中),我们先将即将改变的位置的数据复制到快照,再将数据复制到原始磁盘,然后快照指针更改,存在一个重定向,如果在快照中找不到,即重定向到原始磁盘寻找。
3.写前重定向
ROW(Redirect-on-write ),也称为写时重定向。
创建快照以后,快照系统把对数据卷的写请求重定向给了快照预留的存储空间,直接将新的数据写入快照卷。上层业务读源卷时,创建快照前产生的数据从源卷读,创建快照后产生的数据,从快照卷读。
(重定向到快照,然后写,只发生一次写操作)
写操作:
如上图简要示例,快照创建以后,若上层业务对源卷写数据X,X在缓存中排队,快照系统判断X即将写入源卷的逻辑地址,然后将数据X写入快照卷中预留的对应逻辑地址中,同时,将源卷和快照卷的逻辑地址写入映射表,即写重定向。我们可以看到,上层针对源卷写入一个数据块X,存储上只发生一次写操作,只是写之前进行了重定向。
读操作:
若快照创建以后,上层业务对源卷进行读,则有两种情况:
1)若读取的数据,在创建快照前产生,数据是保存在源卷上的,那么,上层就从源卷进行读取;2)若需要读取的数据是创建快照以后才产生的,那么上层就查询映射表,从快照卷进行读取(即读重定向)。
若快照创建以后,上层业务对快照卷进行读,同样也有两种情况:
1)若读取的数据,在创建快照前产生,数据是保存在源卷上的,那么上层就查询映射表,从源卷进行读取;
2)若需要读取的数据是创建快照以后才产生的,那么上层就直接从快照卷进行读取。
我们可以看到,ROW快照也是根据创建快照后上层业务产生的数据,来实时占用必需的存储空间。
参考:https://zhuanlan.zhihu.com/p/39916936
原文链接:https://blog.csdn.net/IT_flying625/article/details/106954540
需要注意的是,CephFS的快照和多个文件系统的交互是存在问题的——每个MDS集群独立分配 snappid,如果多个文件系统共享一个池,快照会冲突。如果此时有客户删除一个快照,将会导致其他人丢失数据,并且这种情况不会提升异常,这也是 CephFS的快照不推荐使用的原因之一。
What is a Storage Snapshot? - Definition from WhatIs.com
其他不同分类:
副本:能用来恢复某个时间的数据模样的 数据集合的资源 (有可能部分或全部都指向 源数据)
复制品:和源数据集合完全一样的复制品 (源数据一份一模一样的拷贝,只是存储的位置不一样)
下图是 复制品和写时复制技术创建的副本的区别:可以看到复制品就是和源数据一样的,只是存储位置不同。
而副本是 一份元数据(描述恢复某个时间的源数据的数据--比如存放在哪里,怎么组合起来)+写前拷贝 拷贝出来的数据:
个人理解:
副本:能用来恢复 源数据集合 的资源(可能只是一个目录,指向旧数据没有改变过的部分的地址和写时重定向增量写的数据的地址)
复制品:和源数据集合完全一样的复制品,一般存在另外一个物理地址(另外的盘、另外的分区……)
比如一个房子A有自行车:
三个副本可以是 : 3x(车轮、车把手、链条、鞍、螺钉……)。你可以用它们来恢复3成3个自行车,也可能是
三个复制品 : 复制3x自行车 放到房子B。
参考:COW、ROW快照技术原理 - https://support.huawei.com/enterprise/zh/doc/EDOC1100196336/
COW and ROW Snapshot Working Principles - https://support.huawei.com/enterprise/en/doc/EDOC1100200561
ROW/COW 快照技术原理解析 - http://t.zoukankan.com/jmilkfan-fanguiju-p-10589828.html
摘抄自:What is a Storage Snapshot? - https://www.techtarget.com/searchdatabackup/definition/storage-snapshot
存储快照是特定时间点数据的一组参考标记。快照就像一个详细的目录,为用户提供可用于回滚到的可访问的数据的副本(不一定是镜像/拷贝)。
Storage snapshots are often based around the use of a differencing disk. A differencing disk is a special type of virtual hard disk that's linked to a parent virtual hard disk.
当管理员创建存储快照时,底层系统会创建一个绑定到原始虚拟硬盘的 differencing disk。所有未来的写操作都指向 differencing disk,使原始虚拟硬盘保持不变。文件系统完全不知道differencing disk的存在。文件系统继续像在物理机器上一样运行。
快照具有父子关系并形成树。每次快照都会创建树的另一个分支。
快照是表示文件系统在特定时间点的样子的磁盘块。
Snapshots are disk blocks that represent what a file system looked like at a specific point in time.
Not all snapshots are based on differencing disks. There are several other types of storage snapshots:
并非所有快照都基于differencing disks。还有其他几种类型的存储快照:
Copy-on-write snapshots
存储有关原始数据位置的元数据,而不是复制原始数据。这些快照几乎是立即创建的,创建快照的系统几乎没有性能影响。这样可以在程序发生故障时快速恢复系统。
The data in a copy-on-write snapshot is consistent with the exact time the snapshot was taken, hence the name copy-on-write. 但是,如果需要对网络或存储介质上的所有数据进行完整归档或恢复,则所有以前的快照都必须可用。每个写时复制过程都需要一次读取和两次写入;数据在被覆盖之前需要被读取和写入到不同的位置。
Clone or split-mirror snapshots 克隆或拆分镜像快照
引用一组镜像驱动器上的所有数据。每次运行快照工具时,都会创建整个卷的快照,而不仅仅是新数据或更新数据。这使得离线访问数据成为可能,并简化了恢复、复制或归档驱动器上所有数据的过程。这是一个较慢的过程,每个存储快照都需要与原始数据一样多的存储空间。
reference all the data on a set of mirrored drives. Each time the utility is run, a snapshot is created of the entire volume, not only new or updated data. This makes it possible to access data offline and simplifies the process of recovering, duplicating or archiving all the data on a drive. This is a slower process, and each storage snapshot requires as much storage space as the original data.
Copy-on-write with background copy 带有背景副本的写时复制
从写时复制操作中获取快照数据,并使用后台进程将数据复制到快照存储位置。此过程创建原始数据的镜像,并被认为是写时复制和克隆之间的混合。
takes snapshot data from a copy-on-write operation and uses a background process to copy the data to the snapshot storage location. This process creates a mirror of the original data and is considered a hybrid between copy-on-write and cloning.
Redirect-on-write storage snapshots 写入时重定向存储快照
类似于写时复制,但写操作被重定向到为快照配置的存储,消除了两次写操作的需要。写入时重定向快照 仅写更改的数据,而不动原始数据的副本。删除快照后,必须复制该数据并使其在原始卷上保持一致。额外存储快照的创建使原始数据访问和快照数据变得复杂。
are similar to copy-on-write, but write operations are redirected to storage that's provisioned for snapshots, eliminating the need for two writes. Redirect-on-write snapshots write only changed data instead of a copy of the original data. When a snapshot is deleted, that data must be copied and made consistent on the original volume. The creation of additional storage snapshots complicates original data access along with the snapshot data.
Incremental snapshots
创建时间戳允许用户返回到任何时间点。与其他类型的存储快照相比,可以更快、更频繁地生成增量快照。而且由于它们不使用比原始数据更多的存储空间,它们可以保存更长时间。每次生成增量快照时,都会更新原始快照。
create timestamps that allow a user to go back to any point in time. Incremental snapshots can be generated faster and more frequently than other types of storage snapshots. And because they don't use much more storage space than the original data, they can be kept longer. Each time an incremental snapshot is generated, the original snapshot is updated.
VMware snapshots VMware 快照
复制虚拟机磁盘文件,如果发生故障,可以将虚拟机 (VM) 还原到特定时间点。 VMware 快照技术用于 VMware 虚拟环境中,通常会在一个小时内被删除。管理员可以拍摄 VM 的多个快照,创建多个时间点还原点。拍摄快照时,任何可写数据都将变为只读数据。
copy a virtual machine disk file and can restore a virtual machine (VM) to a specific point in time if a failure occurs. VMware snapshot technology is used in VMware virtual environments and is often deleted within an hour. Administrators can take multiple snapshots of a VM, creating multiple, point-in-time restore points. When a snapshot is taken, any writeable data becomes read-only.
持续数据保护 (CDP) 使用 跟踪更改块 和快照 来备份系统,从而允许用户恢复最新的数据实例。
CDP 通过对 存储设备 块级别的监视 来工作。每当创建或修改存储块时,都会自动备份该存储块。这允许用户恢复包含最新更改的数据。而(如果没有Continuous data protection)常规存储快照 如果在系统发生故障之前未拍摄,则这些最新更改的数据可能会丢失。
CDP 还记录发生的每一次更改,因此始终可以恢复数据的最新干净副本。
Continuous data protection (CDP) uses changed block tracking and snapshots to back up a system in a way that allows users to recover the most up-to-date instance of data.
CDP works by monitoring a storage device at the block level. Any time a storage block is created or modified, that storage block is automatically backed up. This allows a user to recover data with the most recent changes included, whereas those updates can be lost if a regular storage snapshot wasn't taken before the system failed.CDP also keeps a record of every change that occurs, so it's always possible to recover the most recent clean copy of the data.
尽管快照提供了类似备份的功能,但快照和备份是完全不同的。尽管许多现代备份系统都包含快照,但快照并非旨在替代备份。
Although snapshots offer backup-like capabilities, snapshots and backups are quite different from one another. Snapshots aren't intended to be a replacement for backups, although many modern backup systems incorporate snapshots.
快照vs备份
使用存储快照作为更大备份策略的一部分有几个好处。
快照是一种快速简单的时间点恢复,备份应用程序可以使用快照来启用即时恢复等功能。
尽管存储快照技术是对备份计划的有益补充,但它并不能完全替代传统备份。
不应该将快照用作备份的替代方法有几个原因。首先,快照会对系统性能产生负面影响。对于差异磁盘快照尤其如此。每次创建快照时,都会创建一个额外的差异磁盘。系统的读取性能会随着每个附加差异磁盘的创建而降低。
快照不是合适的备份替代品的另一个原因是快照依赖于源数据。如果源数据丢失,快照也会消失。与备份不同,快照不包含受保护数据的副本,并且不会保护源数据免受由于存储损坏的硬件故障而丢失。
Snapshots vs. backups
There are several benefits to using storage snapshots as part of a larger backup strategy. Snapshots are a quick and easy point-in-time recovery and can be used by backup applications to enable features such as instant recovery. Although storage snapshot technology is a helpful supplement to a backup plan, it isn't considered a full replacement for a traditional backup.
There are several reasons why snapshots shouldn't be used as an alternative to backups. First, snapshots can negatively affect a system's performance. This is especially true of differencing disk snapshots. Each time a snapshot is created, an additional differencing disk is created. The system's read performance diminishes with the creation of each additional differencing disk.
Another reason why snapshots aren't a suitable backup replacement is because snapshots are dependent on source data. If the source data is lost, the snapshot is gone as well. Unlike a backup, a snapshot doesn't contain a copy of the protected data and does nothing to protect the source data against loss due to hardware failure of storage corruption.
Backup | Snapshot | |
Data protection 数据保护 |
备份包含受保护数据的可恢复副本。 |
快照可确保无法修改先前存在的数据,但无法防止因硬件故障或其他因素造成的丢失。 |
Recovery 恢复 |
恢复操作涉及将数据从备份复制回主存储。 |
快照可用于立即将系统回滚到以前的状态。 |
Performance 性能 |
备份进行时系统的读取性能可能会降低,但备份完成后会恢复正常。 |
只要快照存在,差异磁盘快照就会对读取性能产生不利影响。 |
How storage snapshots and backups work together 存储快照和备份如何协同工作
生产环境中使用的现代备份系统通常使用快照作为备份过程的一部分。备份活动数据库时尤其如此。如果活动数据库只是简单地复制到备份中,那么数据库中的数据可能会在备份完成之前发生更改。生成的备份将损坏。
现代备份系统在启动备份之前拍摄数据库的快照。然后,备份会备份数据库,因为它在创建快照时一直存在。备份过程完成后,快照将被删除,并且已存储在快照中的数据将合并到数据库中。
Modern backup systems used in a production environment often use snapshots as a part of the backup process. This is especially true when backing up an active database. If an active database were simply copied to backup, then the data in the database would likely change before the backup is complete. The resulting backup would be corrupt.
Modern backup systems take a snapshot of a database prior to initiating a backup. The backup then backs up the database as it existed up to the time that the snapshot was created. When the backup process completes, the snapshot is deleted and the data that had been stored in the snapshot is merged into the database.