基于卷的快照技术研究

时间:2022-09-19 09:57:55

基于卷的快照技术研究

【摘要】随着计算机和信息技术的不断发展,人类每日产生的信息量正以指数的级别增加。面对海量的数据,如何快速存储数据并保证数据的安全成为当今社会的重要考验。首先阐述了快照技术的现状,并介绍了当前主流的快照技术,然后详细介绍了基于卷的快照技术,最后分析了该技术的应用前景。该技术提高了时间和空间的利用率,有较好的应用价值。

【关键词】快照创建卷写时复制克隆存储备份

中图分类号:TP31文献标识码:A文章编号:1006-1010(2014)-07-0069-04

1 背景

随着计算机技术的不断发展,人们的信息化水平得到了空前的提高。在当今时代,新闻、多媒体、航天技术、生物技术、电子图书馆、电子商务等大量数据业务的涌现,对计算机存储及信息的安全提出了严峻的考验。有数据表明,现在每年产生的数据量相当于之前所有年代的数据量之和。另外黑客、病毒等因素还时时威胁着数据的安全,所以如何合理地存储数据,以及数据的安全显得尤为重要。

然而存储技术的发展却没能完全跟上时代的步伐,虽然现在云存储被炒得很火,但真正成熟的解决方案却很少,在企业的存储上,重要的数据还是依靠昂贵的磁阵来存储。在数据备份方面还是一直采用数据复制、备份、恢复等技术来保护数据的安全,定期对数据进行备份和复制。由于备份过程会影响性能,并且非常耗时,一般会选择在系统较轻松的夜间进行。

显然,这种数据存储方式存在非常严重的不足。在备份期间,企业需要暂停对外的服务,随着业务的发展,这个时间可能会越来越长。但现在许多应用,如银行、网上支付等,都要求24小时不间断营业,短暂的间断可能会带来巨大的损失。另外,传统的数据分享方式带来了巨大的存储浪费,例如同样一份数据,每个用户都会备份一份。而快照技术则可以弥补这些不足,因此处在不断的发展之中。

2 当前主流技术

(1)镜像分享

顾名思义,镜像分享需要一个完整的物理镜像,同一份数据需写在两个设备上。当需要创建快照时,停止镜像卷的写操作,镜像被保存为一个快照。当需要新的快照时,需要重新准备一个物理卷,并与源数据进行数据同步。

优点:有完整的物理备份,安全;窗口时间小,基本不会影响使用。

缺点:每个备份都需要完整的物理设备,成本高;需要完整的数据同步后才能创建快照,不够灵活。

(2)写时复制

写时复制在创建快照的时候,并不会发生真实的数据拷贝,而仅仅是复制当前卷的元数据,因为元数据非常小,所以整个过程几乎在一瞬间完成。当原始卷有数据修改时,首先将这块数据读出来,写入给快照预留的空间,然后再将新的数据写入原始卷。因为在写数据时才会对数据进行备份,因而得名。

优点:创建快照快,不需要完整的物理设备,成本小。

缺点:没有完整的物理备份,有风险。

(3)指针重映射

指针重映射与写时复制基本类似,创建快照时也不会发生数据拷贝。区别在于当发生数据改变时,系统直接将新的数据写入新分配的空间,并将数据的指针指向新分配的区域。而原来的数据空间作为快照空间被保存下来。与写时复制相比,指针重映射加快了写操作,每次写少了一次IO操作。

(4)日志文件

日志文件是指对文件系统的每一次写操作都写上日志,当系统出现故障时,可以通过日志来恢复信息。这种技术主要用于ext3等本地文件系统中,有时也用于分布式系统的主备同步机制上。

(5)克隆快照

克隆快照可以理解为镜像分享和写时复制的结合。首先利用写时复制创建一个快照,然后在后台启动一个进程,将快照复制到一个独立的设备,以保证数据的安全。

3 基于分布式的快照

前面讲了很多的快照技术,各有其优缺点。这里介绍的快照技术与写时复制比较相似,但使用上更灵活,能适用于很多场景。

在大多数企业,都会有一个知识库,所有的人都可以从上面取资料,但是不能修改,如果要修改必须重新拷贝一份至本地。但大多数人都有一个习惯,即使不修改,也会拷贝一份至本地磁盘,以便随时查看。这样,一份文档可能在公司里存在几千甚至几万份,公司给员工都配备了大容量的硬盘,结果还是不够用,那么有没有办法能够将这些数据只保存一份而又能满足随时修改的需求呢?

再来看另外一个场景,公司每个人的电脑都要装操作系统,而对于操作系统里面的文件,大部分都是用不着修改的。以Windows 7为例计算,假设一个系统占据10G,一个公司共有1 000名员工,那么仅系统占的空间就是10T,有什么办法能节省空间呢?

3.1卷的创建

快照的核心是卷的管理,所有的快照都是基于卷来创建的。这里讲的卷与传统意义上的卷是有区别的:卷既可以是单机的,也可以是分布式的;卷是写时分配的,即在创建卷时是不会分配任何空间的,只有在真正写数据时才会分配空间。

假设有一个存储单元,其容量是1T,需要在上面创建一个10G的卷,将块大小设置为512k,那么得到的是一个如图1所示的卷:

图1存储单元创建卷示意图

块的大小可以根据业务的需要而定,对于存储大文件的系统,可以将块尽量设的大一点。例如HDFS默认的块大小是64M,如果是存储小文件,可以考虑将块设小一点。一般情况下推荐用512k或1M。当然也可以用一些合并技术来解决数据冗余的问题。

写时分配也是一个很重要的概念,业界很多系统都使用了这个技术,例如前段时间打得火热的网盘大战,腾讯、百度、360分别将其提供的免费容量提升至T级别,其实除了极个别用户,大部分都只使用少部分空间,企业并不需要为这一措施购买大量的存储。

创建卷后就可以在卷上创建文件系统或写数据了,每个逻辑块所对应的磁盘位置通过一定的算法进行定位。

3.2快照的创建

在创建快照前有必要介绍一下快照与卷的关系,所有的快照都是在卷上创建的,快照是只读的,卷是可写的。可以基于快照创建卷,所有基于快照创建的卷上都保留有快照上所有数据。其关系如图2所示:

图2快照与卷的关系

对于卷和快照的操作主要包含以下三个方面:

创建卷(图2左侧);

基于当前卷创建快照(图2中间);

基于快照创建卷(图2右侧)。

为了更好地定位到每个卷对应的数据及位置,这里定义了一组KEY:

KEY(volum_id, branch_id, snap_id, block_id)

volum_id:如果卷或快照具有同一个根节点,那他们就具有相同的volum_id;

branch_id:每基于快照创建一个卷,那么这个卷就产生一个新的branck_id;

snap_id:在同一个分支下,snap_id递增,例如图3中间,快照1的snap_id是0,卷1的sna_id是1;

block_id:如图1,每个块对应一个block_id,并递增。

有了上面这组KEY,就可以很方便地对数据进行操作了。

图3读数据操作

3.3读数据

逻辑卷上的每一个块,都有一个对应的KEY,KEY上面记录了这个块上是否有数据,有数据的话,记录数据存放的位置。如图3所示,块1’、2’、4’、5’、7’、9’上是有数据的,其中7’、9’所对应的KEY分别为(0,0,0,6)、(0,0,0,8)。

假如此时有请求过来需要访问块7的数据,块7的KEY是(0,0,1,6),检查发现其上没有数据,于是寻找其父节点,找到7’,7’上有数据,于是将数据读出。如果请求的是块6的数据,发现上面没有数据,向上寻找父节点6’,也没有数据,再向上寻找,直到找到根节点为止,此处6’已经是根节点,所以认为块6是空的。

由此可以看到,卷1上本身是没有数据的,但是通过父节点可以读到数据。这同样适用于卷2,卷1和卷2共享数据却互不干扰。

3.4写数据

假如收到一个请求,需要修改块1(0,0,1,0)的数据,首先按读数据的步骤,将块1’(0,0,0,0)的数据读至内存,将需要修改的部分修改,然后再将修改后的数据写入块1。如果写的数据是一个完整的块,那么无需执行读动作,直接将数据写入块1即可。第三种情况,如果需要修改块3(0,0,1,2),执行读动作时,发现这个块上没有数据,那么无需修改,直接将数据写入块3即可,如图4所示:

图4写数据操作

卷2也可以执行同样的操作,其修改的数据保存在自己的逻辑空间里,然后通过一定的算法映射到磁盘的某个位置。

3.5分析

对于这一套快照机制,其有如下显著的特点:

(1)创建快照非常快,基本不会对系统有任何的负担;

(2)可以根据快照读取全量的数据;

(3)非常方便数据共享,只需基于某快照创建一个卷给用户使用,就可以让该用户拥有这份数据,关键是用户并不需要将数据拷贝至本地再做备份;

(4)对于快照和卷的数量没有限制,理论上可以无限创建;

(5)由于是基于逻辑的方式创建卷,所以只需简单的逻辑就可以实现卷的动态扩缩容。

这套机制当然也有缺点:数据并没有做到真正意义上的容灾,如果系统出现故障,那么所有数据可能丢失,当然,想要高的可靠性就还需要其它特征来支持,例如多副本、集群化管理等。

4 基于卷的快照技术应用

4.1单机应用

对于单机来说,可以设计一套类似于LVM的卷管理软件来取代LVM,在未创建快照时可以提供与LVM等同的功能,创建快照后可以为多用户提供灵活的需求。如图5所示:

图5快照技术在单机上的应用

4.2分布式应用

对于分布式来说,其与单机的要求类似,单台机器并不用太关心其它机器上数据分布情况。当用户要求创建卷时,系统会根据一定的规则选择一个节点或一台主机,如果有副本则选择多个节点或主机,然后这个卷上的所有操作都会发送至这个节点,与单机处理模式一样。只是有多副本时还需要考虑数据一致性的问题。

4.3应用前景

(1)虚拟机

现在很多公司在计划虚拟机,采用虚拟机除了可以让资源得到统一管理、减少PC的采购、信息安全外,还有一个很重要的点就是节省资源,这是当前大部分系统都不具备的功能。假设某公司要搭建一个虚拟机系统,公司总共有1万人,按照每个人40G系统盘、200G数据盘来计划,不包含副本的情况下,需要2 400T的存储空间。采用上述快照方案后,首先创建一个卷用来卷操作系统,然后创建快照,再基于这个快照创建1万个卷。这需要的空间为2 000T+40G。节省了16.7%的资源,如果再加上资源共享部分,能节省的空间更多。

(2)网盘

网盘是当前非常流行的一个应用,厂商动不动就给用户提供上G甚至T级的空间,如果用户上百万或千万,那这个存储需求是惊人的。但其实真正用到这么大的空间的是少数,大部分用户只是用到了其中一小部分,这样采用使用时分配的原则,可以节省大量的资源。

(3)企业资料共享

说到企业的资料共享,基本每个企业都有一个庞大的资料库,往往是存放在一个共享主机上,员工通过网络访问,这样不仅会造成高峰期的网络阻塞,并且同样的文档在每个用户的机器上都会存在一份,特别是对于大型的软件,例如Office、Oracle等,造成重复存放,浪费大量的空间。这时可以考虑上面的方案,使用快照软件创建一个卷,然后将资料放到这个卷上,创建快照,基于这个快照创建任意多的卷,给每个员工一个可用的卷,员工直接将卷挂载在本地当本地磁盘使用。这样给每个员工的数据磁盘可以大大减小。当然,这里还会涉及到信息管理的问题。

(4)数据备份与恢复

除了上面的应用,基于卷的快照技术还有备份与恢复、随时备份、随时恢复的功能。

5 总结

快照技术自发明以来,一直在不断的发展,人们对其进行了大量的改进,时间和空间的利用率都得到了不同程度的提高。而基于卷的快照管理是在当前快照技术基础上对时间和空间利用的改进,如果能合理地利用,其价值将不可限量。

近年来,存储的发展日新月异,不断有新产品问世。随着人类技术的积累,未来还会有更多的快照技术问世,能有效地解决当前存在的时间、性能、安全性方面的问题,为数据存储和备份领域提供长足的发展。

参考文献:

[1] 刘爱贵. 快照(Snapshot)技术发展综述[EB/OL]. (2009-08-28). /liuaigui/article/details/4494555.

[2] 李中,王刚,刘. 一种在存储子系统中实现连续时间点快照的技术[J]. 计算机工程与应用, 2004(9).

[3] 李亮. 一种基于持续数据保护的镜像系统的研究与实现[D]. 长沙: 国防科学技术大学, 2010.

[4] 袁晓铭. 磁盘阵列系统的快照技术研究[D]. 武汉: 华中科技大学, 2007.

[5] 海杰. 设备层多版本快照的设计与实现[D]. 武汉: 华中科技大学, 2008.

作者简介

江乾荣:系统架构师,学士毕业于湖南大学,现任职于中国移动(深圳)有限公司,主要从事云存储和云计算的研究工作。

上一篇:借力家长除积习 下一篇:接纳,转变厌学生