Snapshot,也就是快照技术,在backup时被广泛采用。很早就被应用到阵列和主机中,主要采用Copy on Write的算法。这些详细的技术细节,可以去snia.org上查找。通常,他们都是基于卷,在block级别进行处理。各种大型的array中都有支持,主机OS上的卷管理器,如VxVM上就可以做快照。
关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。
快照其实是指向保存在存储设备中的数据的引用标记或指针,说穿了就是数据在某一时刻的状况,其工作原理核心就是建立一个指针列表,指示读取数据的地址,提供一个瞬时数据的影像,当数据有改变时,再进行复制。
快照大致分为2种,一种叫做即写即拷(copy-on-write)快照,通常也会叫做指针型快照,VSS即属于这一种,另一种叫做分割镜像快照,常叫做镜像型快照。指针型快照占用空间小,对系统性能影响较小,但如果没有备份而原数据盘坏了,数据就无法恢复了;而镜像型快照实际就是当时数据的全镜像,会对系统性能造成一定负荷,但即使原数据损坏也不会有太大影响,不过要占用到相等容量的空间。
磁盘快照(Snapshot)是针对整个磁盘卷册进行快速的档案系统备份,与其它备份方式最主要的不同点在于「速度」。进行磁盘快照时,并不牵涉到任何档案复制动作。就算数据量再大,一般来说,通常可以在一秒之内完成备份动作。
磁盘快照的基本概念与磁带备份等机制有非常大的不同。在建立磁盘快照时,并不需要复制数据本身,它所作的只是通知LX Series NAS服务器将目前有数据的磁盘区块全部保留起来,不被覆写。这个通知动作只需花费极短的时间。接下来的档案修改或任何新增、删除动作,均不会覆写原本数据所在的磁盘区块,而是将修改部分写入其它可用的磁盘区块中。所以可以说,数据复制,或者说数据备份,是在平常档案存取时就做好了,而且对效能影响极低。LX Series NAS档案系统内部会建立一份数据结构,纪录磁盘快照备份及目前作用中档案系统所使用到的磁盘区块及指针,让使用者可以同时存取到主要档案系统及过去的磁盘快照版本。
CRecordset 为MFC 里ODBC数据库的接口类。
snapshot是CRecordset类的成员变量,通常作为CRecordset::Open()函数的参数,代表在记录集中可双向移动的快照。
NI IMAQ Snapshot
NI VDM中的Image Display也有Snapshot快照模式,其作用原理与上面的讲的差不多,也是复制一个图像复本用于显示。
以下是NI Vision for LabVIEW help中的相关描述:
Snapshot Mode—Determines if the control makes a copy of the image or has a reference to the image. When you enable the Snapshot Mode, if the inspection image changes later in your application, the Image Display control continues to display the image as it was when the image was wired into the Image Display control.
Enabling the Snapshot Mode may reduce the speed of your application because the control makes a copy of the image. Enable this property when you want to display a snapshot of the image in time. Disable this property when you need to display results quickly, such as during a grab acquisition. The Snapshot Mode property is disabled by default.
其意思大概为决定控件是否复制一个图像复本或创建一个图像的引用。当使能快照模式时,如果检查图像在后面的应用中改变了,这个图像显示控件可以继续显示它过去的图像当图像被连接线到图像显示控件。使能快照模式可能会减少你的应用程序速度,因为这个控件复制了一个图像复本。使能属性节点当你想及时显示图像的快照时。禁用快照模式属性当你需要快速显示结果时,例如在连续采集图像期间。快照模式属性默认是禁用的。
在实际应用中,使用快照模式可以用于调试,因为即使你最后执行了释放图像内存,其图像也是不会被清空的,而如果不使用快照模式,当执行完释放内存时,就会被清空图像。而在实际生成应用程序时,建议不使用快照模式,因为使用快照模式,会给应用程序多生成一张图像大小的存储。例如不使用快照模式,一个应用程序可能只有1M,而使用快照模式,生成的图像是500万像素的,约4.8M,那么生成的应用程序可能就是5.8M了。
对采集的图像在显示时增加overlay,在显示时overlay会有闪烁的感觉。可以怎样避免呢?这是正常的现象。每一帧新采集的图像会重写包含overlay信息的IMAQ图像缓冲区,有时重新绘制overlay的时间在图像显示时就能被感觉到。为避免这种现象,您可以将图像显示控件的显示方式更改为快照模式(snapshot),具体来说就是在图像显示控件上右键点击并选择Snapshot。也可以通过图像显示属性节点来设置snapshot模式为开启或关闭。通过设定为snapshot模式就可以避免重新绘制显示图像的行为。