wordpress 建站完整视频教程,上海债务优化公司,阿里巴巴做短视频网站,网站建设要注意一些什么1 快照
1.1 动机
在上一篇《备份》里提到#xff0c;热备份就是在执行操作时#xff0c;服务器需要正常处理来自用户或应用对数据的更新#xff0c;这样能够保证数据7*24小时可用#xff08;在很多服务里这是必要的#xff09;。
而热备份的困难就是如何保证数据的一致…1 快照
1.1 动机
在上一篇《备份》里提到热备份就是在执行操作时服务器需要正常处理来自用户或应用对数据的更新这样能够保证数据7*24小时可用在很多服务里这是必要的。
而热备份的困难就是如何保证数据的一致性比如有两个数据块在第一个时刻他们是 A 1 B 1 A_1B_1 A1B1此时备份了数据块 A 1 A_1 A1在下一个时刻它们被修改成了下一个版本 A 2 B 2 A_2B_2 A2B2此时备份了下一个数据块 B 2 B_2 B2得到的备份数据就是 A 1 B 2 A_1B_2 A1B2并不能组成一个一致的数据。
解决备份时的数据一致问题有几个方向
备份时不允许服务更新数据不满足7*24小时可用跳过打开文件服务正在访问的文件通常也是很重要的需要备份的不应该跳过的区别对待备份IO和应用程序的正常访问IO通过拆分成不同的IO路径来让它们互不影响从而解决一致性问题
快照Snapshot 就是出于动机3被引入的通过对一个数据对象进行逻辑复制形成完全可用的数据副本进而拆分应用程序的正常IO可以写到之前的上去不影响逻辑复制出来的快照卷。
1.2 操作
准备快照为了解决快照一致性基本都需要停IO刷新缓存创建快照create snapshot形成此时此刻源卷的数据映像删除快照delete snapshot删除某个数据映像恢复restore用快照的数据恢复源卷数据
2 写前复制Copy-on-Write
2.1 原理
也叫写时复制、首写复制Copy on First Write第一次对源卷进行写入操作时把数据搬到快照卷里然后再修改源卷的数据。
此后更新操作都会直接更新源卷里的数据。读源卷时从源卷读读快照卷时如果快照卷里那个位置有被copy过来的数据就直接读快照卷否则就fallback回源卷读取。
为了解决“怎么知道快照卷里对应位置的数据是不是copy过来了”这件事可以引入一个快照映射表所有on first write的copy动作都记录在这个表里只要查表miss了就回源卷读取。 删除快照直接删除快照卷和快照映射表
数据回滚扫一遍快照映射表把快照卷中的数据写回到源卷里去就能将源卷恢复到该快照所记录的状态了
2.2 优缺点
优点不影响源卷删除快照卷很简单
缺点首次写入时需要先拷贝数据再写源卷需要一次read两次write
3 写时转向Redirect-on-Write
3.1 原理
也叫写时重定向相比于CoW是在首写的时候copy数据到快照卷源卷的数据还是在源卷的位置上。RoW则是相反快照一旦生成这些数据块就放在那不动了如果有对数据的修改那么就把修改的数据写到新的位置上去然后让源卷指向这个新的数据位置。
3.2 优缺点
优点首写只需要一次重定向write
缺点因为源卷指向的数据和快照卷的数据交错所以删除快照时候需要把数据链接调整回源卷因此删除快照操作相对更复杂一点
3.3 案例
WAFLWrite Anywhere File Layout文件系统就是用了RoW的典型例子在打快照时只要建一个新的逻辑根指向源卷的数据在对源卷有更改时就把写入操作redirect到新的位置不动快照指向的那些数据。由于WAFL是多级链接结构真正的数据块在最下面所以每次write redirect都会递归地建立这条path上的所有node 另一个用RoW做快照的经典例子是Hyper-V的differencing vhdx也是写时转向到新的vhdx文件里
4 拆分镜像Split-Mirror
4.1 原理
类似于RAID1的镜像盘持续维护完整的两份源卷数据对源卷的写入会复制给镜像卷保证镜像卷的数据和源卷相同。当快照操作来临时只要停止镜像复制操作镜像卷就立即成为了此时刻的快照卷。
删除快照快照卷完成数据备份后要删除快照只要直接与源卷同步数据同步好之后可以继续作为镜像卷使用
数据回滚直接拿快照卷作为服务的底层数据即可
4.2 优缺点
优点数据恢复、复制和归档简单。快照卷和源卷独立存在所以一方的数据丢失另一方仍然可用
缺点
想要支持几个快照就需要几倍的存储空间不能随时创建快照比如如果没有创建镜像卷、或者镜像卷正处于数据同步过程中都不能创建为了支持快照操作需要持续的镜像复制操作增大了系统开销
4.3 案例
EMC的TimeFinder引入了一种业务持续卷Business Continuance VolumeBCV和主存储设备绑定成BCV Pair之后就作为主存储设备的镜像卷持续将主存储设备的数据复制过来。
需要打快照时就分裂BCV Pair分裂后BCV上的就是主存储设备的快照数据。
需要删除快照时就重建BCV Pair这会丢弃在分裂后对BCV的修改并将分裂后对主存储设备的修改应用到BCV上使BCV快速成为镜像卷。
需要restore时也是重新绑定BCV Pair但是将BCV的数据写入主存储设备即可。
参考阅读
《存储技术原理分析》1.2.2
What is Storage Snapshot Technology?