来源/西部信息安全谷
2020年9月14日,在2020中国信息安全与数据灾备技术产业高峰论坛上,清华大学的教授,中国工程院院士,清华大学高性能计算研究所的所长郑纬民先生,进行了以《存储系统可靠性关键技术探索》为题的精彩分享。
以下为整理后演讲全文:
非常高兴参加古剑论坛,我想今天主要讲的内容是关于存储器安全的。
我做了一个数据存储器,起名叫“高可靠存储系统”。这个存储器在其生命周期内,都能够提供正常的服务,不发生数据丢失,且无需管理员进行维护的存储系统。
常规的数据存储器生命周期一般7~8年就不用了,但我研发这款即使硬盘坏了数据也不会丢,也不需要人去维护,这也算是数据灾备领域的技术之一。
我先给大家介绍一下数据存储备份技术,它大概分为三种:
第一个技术叫数据副本技术。比如一个文件来了存在三个地方,一个坏了还有两个,两个坏了还有第三个。毕竟,三个都坏的可能性比较低,大家都用这样的办法来提高存储的可靠性。这样备份的方式有一个大问题,就是成本比较高。一个东西要存三份,那就要多买2倍的硬盘。
另一个方法叫“冗余磁盘阵列技术”。我们常见的RAID是用多余的硬盘来实现的,把一个文件数据放进一个硬盘,把脚页码放在另外一个硬盘。这五个硬盘,其中坏一个硬盘没事,还能把你纠正过来,2个硬盘坏了也没事,但是3个硬盘坏了呢?因此我们说RAID5,就是两个硬盘坏了没事,这种办法也比较麻烦。
今天我主要介绍的第三个方式叫“数据纠删码技术”。这种方法的启发来源于通信学,比如我现在将一批数据从重庆发到到上海去,一边发数据,一边对数据本身做一些算法处理。数据发送结束后,算法处理也结束了。
被算法处理过的数据叫“纠删码”,传输过程会把纠删码也发过去。因此上海方除了收到数据之外,还会收到纠删码。纠删码的作用在于,当数据出现一定程度的损坏或者丢失时,那可以用纠删码可以纠过来。
举一个例子,比如把一个文件分成4个块,把它发到四个硬盘里面去,一边写进去一边做运算,算完以后出来两个纠删码,数据本身写到硬盘里面去了,同时进行计算产生了2个纠删码也写到硬盘里面去。这跟常规存储相比,多写入了2个盘的纠删码。即便其中6个盘里,有两个出错,数据也能够被正常读取。
纠删码模式的好处在于,纠删码存盘量决定了可损坏的上限。2块纠删码盘容许2个盘损坏或丢失,4块就允许4个、16块就允许16个,纠删码这个技术要比前面两个好很多。假如是写进去的内容是32+16,一份数据来了分成32块,同时产生16块纠删码数据,共计48块数据。也就是说,小于等于16个盘损坏或丢失都对数据没有影响,极大节省了数据的存储成本。
我们根据这个原理,做了这样一个“高容错自维护存储系统”。这里有几个关键的部分,一个东西叫高容错,必须有硬件冗余,没有冗余以就不好办。我强调一件事情,高容错不是指买的硬盘质量特别好,完全可以使用市场上普通的硬盘。因此,大规模纠删码,通过大规模的数据编解码算法,提供数据高可靠性提高磁盘的存储效率,编码和解码的计算量大,需要加速。
实际上我刚才已经说了,纠删这个过程需要通过多种手段对编码编解码加速。一个文件来了分成三大块写进去,这个过程不麻烦,一边写进去一边要做计算产生纠删码。这个过程必须要实时,无法实时也就无法实现纠删码的方式。
要做到实时的话怎么办呢?四个方法:第一个方法,对计算过程进行分析,减少实现过程中的计算量。你选一个矩阵要简单一点,计算量尽可能少一点,就产生纠删码的办法尽可能计算得小一点,但是你不能说只做一个加法就完了,那达不到纠删的意思。我们2016年在一篇杂志上发表了一篇文章,怎么写这个矩阵,它的计算量最少,我们的办法是计算量最小的,计算量少一点就比较能够快的算出来,能实时的。
第二个方法:通过多线程并行计算,充分利用多核的计算能力。美国很多公司做存储的为什么没有想到,因为很多不怎么懂并行计算,不怎么懂高性能计算,因为我这个所叫高性能计算研究所。
第三个方法:通过使用处理器的向量指令,提高单线程的编解码计算能力。
第四个方法:通过计算、传输、存储的存算重叠,充分利用所有的硬件资源,提高磁盘的并行写入速度。
我们如何演示纠删码这一技术呢?我们会把一个电影存到这个存储系统里面去,并把它分成32块,这个大家都能理解。一边放映一边计算,算出来16块硬盘的纠删码。放电影的时候一边放映,一边让人拔除硬盘,一直拔到17块还可以放。
总之从安全的角度来说,前面几位讲的都是密码学的专家,数据加密非常的复杂。你破不了密码,那你拿了也没用,这就是安全的。你加了密码了,总得放到存储里面,那硬盘坏了数据跟密码本身都没有了,那你还能说安全吗,也谈不上安全了。但是我现在做的,你加了密的东西放在存储器硬盘里面,那硬盘坏了我还没事,是从这个角度来说我的数据安全。
最后一点谈谈自我维护。一般来说,硬盘第1年出错率为5%,以200块硬盘为例,第一年大概有10块硬盘坏,实际上10块盘还不一定坏到同一个文件。第2年的时候出错率就低一点,有2%左右,大概坏了4块盘,那第2年也不用处理。第3年开始出错率再次达到10%,这么一来又10块盘去了,如果不进行处理的话,就有超过了22块的硬盘损坏。
所以,我们希望这个产品在2年里不用维护,即便在使用环境比较差的环境下,都不需要雇人,肯定是不会丢数据。
热门跟贴