什么是CDP
如果说快照是南宫NG·28照相机,那么CDP(Continuous Data Protection)就是南宫NG·28录像机。录像当然要为了回放,要回放,就当然可以任意快进快退,看到并提取每一个“帧”,甚至直接把当前系统南宫NG·28回滚到之前的某个历史时间点。大家接触最多的一个实例就是南宫NG·28库的redo和undo日志了。
南宫NG·28云的字节级CDP体验
块级CDP的底层机制需要在一个单独设备中,先将源卷镜像一份出来。如下图所示:
主机访问底层的卷,一定是以512Byte为对齐单位,也就是一个扇区,或者说一个块,对卷做CDP保护,其最小粒度也只能是一个块。而如果对文件来做CDP的话,难度着实就不小了,因为文件的最小更改粒度,是1Byte,而不是512Byte。而且针对文件的操作,远比针对块的操作要复杂,后者只有Write操作,而前者,则还有比如delete,truncate,setattr,setendoffile,write,mkdir,link,unlink等这些文件系统通用操作,这些页都是某种变更,如果要做到每一笔变更都不丢失,那么CDP系统就要将所有这些变更都记录并追踪管理下来,也像上图那样存储在日志中。
这便是“字节级”CDP,其记录的真的字节级别的更新。
为了求证此事,冬瓜哥向南宫NG·28软件申请了个试用DEMO环境,亲自操作了一把,用实际证明了字节级CDP,真的不是个鬼,而是个仙。
如图所示。进入云灾备的控制页面,首先看到的是一张全局Dashboard。
这些不重要,重要的是,冬瓜哥在某台远端机器上做了如下操作:
然后到控制台中尝试回放之前的历史时刻点,点击图中的“查看相关CDP日志”按钮之后,便跳出一个列出了针对目标文件所有细粒度操作的列表。
如下图所示,可以发现,其没有落下任何一个对该文件的变更操作,连link/unlink都抓取了下来,并复制到远端的日志中供后续回放。
然而,由于粒度过细,该文件并不能从日志中即刻虚拟出一个即刻可以访问的虚拟文件,而必须基于最近baseline,将增量读出,重新replay一下增量到baseline,然后将replay好的文件副本拷贝到某个地方,才能供用户访问。不能直接像块级CDP回放时那样指哪打哪,但是优点就是能够在文件粒度、字节粒度,提供更加贴近用户的细粒度恢复。而基于块的CDP,需要先将整个虚拟卷挂起,然后才能看到文件,进入对应目录做恢复。
可以从图片中看到,该CDP服务端是运行在腾讯云的某台主机上的,跨网络传输,需要精打细算,在这方面,块级CDP的确有劣势,因为上层文件更新了哪怕只有一个Byte的元南宫NG·28,底层其实也要更新至少4KB(之前读上来缓存住,更改后,刷盘),因为文件系统一般格式化的时候也是最小4KB的块大小,元南宫NG·28也按照块来分配。所以,传这么多南宫NG·28块的话,时延会比较高。其还可以从腾讯云复制到阿里云跨云复制和CDP,目前未在其他产品上看到支持跨云实现CDP的。
字节级CDP的底层机制
对于字节级CDP,源端的IO抓取器,其实本质上是一个filter driver,其插入到系统的IO路径上,将自己的回调函数注册或者说hook挂接到系统内现存的其他驱动下方,比如挂接到VFS下方,那么它就可以抓取每一笔针对文件系统的操作请求。而块级CDP的IO抓取器实际上是挂接到了SCSI协议栈顶层的Device Driver下方,从而抓取到的是针对某个磁盘设备的IO操作。在Windows下,这些IO请求有个名称叫做“IRP”,IO Request Packet,Linux下针对块设备的IO则被称为bio,block IO。
字节级CDP的IO抓取Filter Driver嵌入到IO路径之后,抓取每一笔IO操作,判断其是否是变更操作,比如write,link,setattr等,如果是,则将这个请求下发到下游驱动的同时,复制一份,封装到网络包中,推送给CDP服务端从而保存在增量日志中供后续回放。
[网络协议栈中的Filter Driver]
Wireshark等抓包软件,大家也都用过,其底层就是用了一个FIlter Driver,插入到了网络协议栈里网卡驱动的上方,这样才能抓取到所有网卡上报的以太网帧,从而做分析。Filter Driver越处于下层,就越能够抓取更加底层的信息,但是缺点就是粒度不够细,因为上层的调用到了底层会大变样,比如,文件系统的调用,底层都会被转为块的传输,除非使用了NFS协议,因为NFS Client程序会将上层调用几乎透传到NFS Server端,但是此时抓取的是NFS封包,多了很多冗余信息,而如果在上层抓取,则直接抓取的是原始细粒度的IRP或者Linux下的file IO描述结构体。
[多路径软件本身就是个FIlter Driver]
多路径软件,就是插入到IO路径中,截获上方的IO,做判断,然后从对应路径转发出去;当路径故障时,向上层屏蔽其影响,自动切换路径。
多路径软件有多种不同实现,有些直接插入到Host Driver上方,有些则插入到Device Driver上方。越往上,兼容性越强,所以内核自带的多路径软件,都位于通用块层,这样可以屏蔽底层的差异,傲视群雄。
传统的复制技术需要考虑使用额外的南宫NG·28去重技术来减少对存储空间的需求,增加了系统资源和处理开销。而南宫NG·28的字节级南宫NG·28捕获与复制技术所传输和保存的都是 I/O 级别的增量南宫NG·28,为最精简的变化南宫NG·28,无重可去,从而大大节省了存储空间,提升了传输效率。
及时响应,快速服务,为您保驾续航
立即注册