单机存储系统可靠性及相关技术介绍

news2024/10/7 20:29:48

一、存储系统可靠性的影响因素

单机存储系统包括存储硬件和存储软件。存储硬件又包含存储介质、存储控制器、设备固件;存储软件栈层次则更为复杂,以Linux为例包括:存储设备驱动层、 块设备层(Block Layer)、可选的虚拟块设备层(Device Mapper)、文件系统层等。如下图所示,各个层次可进一步细分,整个存储栈非常复杂庞大。存储系统的可靠性依赖各层硬件和软件的可用性,另一方面也包括存储系统中数据的可靠性。

f96718c44ba800f8715a972e68586f27.png

图1 Linux存储栈层次 [1]

存储系统硬件和软件的可用性(Availability)是指其可正常运行、长时间无故障的能力。存储器件的控制器损坏(如:磁盘磁头的机械故障)就属于不可用的范畴,一些存储软件缺陷(如:异常死锁)也可导致系统不可用。

数据的可靠性是指在数据的生命周期内,所有数据都是完全的、一致的和准确的程度。影响数据可靠性的原因有很多方面:

  • 存储介质在极端环境下数据保存周期缩短可能导致数据丢失,如:1)磁盘在极强的磁场环境下会消磁导致数据丢失,2)NAND闪存在高温环境下长时间断电放置数据保存周期会大幅缩短(如图2所示,断电状态30摄氏度下可保存52周,40摄氏度下仅可保存14周)

d61298960e24b57167760e00e2509a5d.png

图2 JEDEC标准下NAND闪存在不同环境温度下的数据保存周期(单位:周)[2]

  • 存储器件中电子元件的比特翻转(Bit Flip)导致数据错误,如:寄存器、SRAM、NAND FLASH等因供电电压不稳导致的比特翻转,甚至宇宙射线也可能造成比特翻转,当然这是极小概率的情况

  • 存储系统外部的不可预期数据破坏,如:1)硬盘上存在多个数据分区,裸写的分区偏移地址计算错误导致其他分区的数据被覆盖;2)Linux内核中某个模块存在踩内存异常,使得页缓存(Page Cache)中的数据被破坏,异常数据最终持久化到存储中

  • 存储软硬件的设计缺陷导致数据异常,如:1)固件在异常掉电等特殊情况下存在映射表更新异常,2)文件系统在特殊场景的逻辑异常导致数据未能正常更新或被错误的覆盖等

二、存储可靠性相关技术介绍

存储可靠性相关的技术比较多:从单条数据粒度可以做数据校验,从设备层面可以做冗余容错,从系统层面可以做快照、备份已经CDP(连续数据保护),针对存储系统中某一个组件、模块的特点还有一些针对性的保护方案和技术。这其中有些技术是数据保护层面的,有些是同时考虑系统可用性层面和数据保护的。下面我们一一展开介绍。

2.1数据校验

数据校验是为保证数据的完整性进行的一种验证操作。通常用一种指定的算法对原始数据计算出的一个校验值,接收方用同样的算法计算一次校验值,如果两次计算得到的检验值相同,则说明数据是完整的。有些校验算法还有更近一步的纠错能力。常用的数据校验算法包括:

  • 奇偶校验 根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。如1010001有3个1,奇校验需保证1的个数为奇数在尾部添加校验位0,即:10100010。对应的,偶校验结果位:10100011。奇偶校验可以检测出一bit错误。(参考表1 )

表1 奇偶校验示例

fc468d0c0019b41051c88f1035e3ee8f.png

  • ECC校验 全称为Error Checking and Correcting, 顾名思义它不仅可以发现错误还可以纠正错误。ECC校验广泛应用于DRAM和NAND闪存等设备中。ECC码将信息进行8比特位的编码,下表是一个8字节信息的ECC编码示例,校验信息分为行校验和列校验。其中列校验CP0是对所有8个字节的Bit 0,2,4,6的所有位做异或得到,CP1是对Bit 1,3,5,7采用同样方式做校验。CP2是针对Bit 0,1,4,5校验,CP3是针对Bit 2,3,6,7。CP4是针对Bit 0,1,2,3校验,CP5是针对Bit 4,5,6,7。行校验的RP0 - RP5同理。在检测时对数据做同样的校验,经过对比原校验值即可判断数据是否出错及出错位置。ECC校验能纠正1 Bit错误,检测2 Bit错误。

表2 ECC校验说明

a4da7981837e6900cd776689e3544201.png

  • CRC校验 全称为Cyclic Redundancy Check,循环冗余校验。一些文件系统的元数据校验中会使用CRC。CRC具备检错和纠错的能力(其由信息码n位和校验码k位构成),其校验可以理解为一种二进制模2算法,它是一定能被生成多项式整除的,如果除不尽,那就说明传输出现了错误。这里举例说明:

  1. 先假定一个多项式,用于计算校验码,设多项式为G(x)=x^2+x+1(G(x)是一个k+1位的二进制数),其二进制表示为111,共3位,其中k=2;

  2. 假设要发送数据序列的二进制为10111(即f(x)),共5位;

  3. 多项式的位数为3,则在要发送的数据后面加上3-1个位的0(生成f(x)*(x^k)),二进制表示为1011100,共7位;

  4. 用生成多项式的二进制表示111去除乘积1011100,按模2算法求得余数序列为01(注意余数一定是k位的,如果位数不够,需要在高位补0;模2算法是不向上借位的,相当于异或);

  5. 将余数添加到要发送的数据后面,得到真正要发送的数据的比特流:1011101,其中前5位为原始数据,后2位为CRC校验码;

接收端在接收到带CRC校验码的数据后,如果数据在传输过程中没有出错,将一定能够被相同的生成多项式G(x)除尽,如果数据在传输中出现错误,生成多项式G(x)去除后得到的结果肯定不为0。

2.2磁盘冗余阵列(RAID)

全称是Redundant Array of Independent Disks,广泛应用于存储服务器上,SSD闪存内部的多个闪存颗粒(die)上也采用了RAID技术容错。RAID有一系列的阵列配置用于实现不同的性能和可靠性需求。常用的配置有:

  • RAID0 亦称为数据条带化(data striping)。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。数据分段后分散存储在这些磁盘中,读写可并行处理。在所有的RAID级别中,RAID 0速度最快但不具备容错能力。

  • RAID1 由两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高,磁盘利用率最低。

  • RAID5 把数据和相对应的奇偶校验信息存储于不同的磁盘上。当RAID 5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。

  • RAID6 与RAID 5相比,增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性。更换新磁盘后,资料将会重新算出并写入新的磁盘中。

a2f6283dda5be96a0cbde281dfbf0565.jpeg

ea97ac4f90cde4d3fcd58804df757fa7.jpeg

d5cf96208989d5dfa78980d9de3ea57f.jpeg

图3 RAID常用配置实现 [3]

此外,还有RAID01、RAID10、RAID50、RAID60等灵活组合方式。RAID01是指RAID0为基础阵列配置,多个RAID0阵列组合成RAID1,其他组合同理。各个配置的RAID特点对比详见表3。RAID6引入多个校验块并分散化的配置本质上是RS纠删码(Erasure Coding)[4]的一个特例。RS纠删码是基于数学模型实现校验块生成并最优化数据块和校验块分布,目前广泛应用于分布式存储中。

表3 RAID特点对比 [3]

d3083fec1d64ee62d3c89aa89b526e3e.png

2.3存储快照

主要是实现数据的逻辑保护,即在出现误删除或者其他软硬件缺陷等原因导致数据破坏时,通过快照技术可将数据恢复到之前的某一个时间点。可以将存储系统抽象为数据块的集合,快照相当于在指定时间点给所有数据块拍了一张照片。快照可以在文件系统或者块设备层面实现,重点考虑的是原始数据更新后快照数据的保留和管理。可以在存储系统的元数据中通过位图等机制对数据块进行管理和标记,当有更新发生时,将原始数据块拷贝到新位置,将快照的位图指向新地址。如下图所示,这种方法称为COW(Copy-On-Write)。另一种方式是ROW(Redirect-On-Write),更新时并不在原始位置写入数据,而是分配新位置。对于日志结构文件系统等异地更新的设计使用ROW实现快照较为常见。快照和原有数据存储共享数据块,当原始存储文件删除时,快照对原始数据块的引用依然存在,数据块不会被删除。

22b7a4b9c2ebc15cb6195cb36f2a218f.png

图4 COW存储快照示意图

除了快照,备份也是常用的数据保护技术。数据备份是独立于原始数据的,消耗存储资源较多。快照相对轻量级,但在原始数据被破坏的情况下无法恢复出正确数据。此外,还有更为强大的CDP(Continuous Data Protection)技术。如果说快照是给存储系统拍一张照片的化,CDP就是一个录像机。它可以恢复到系统任意时间点的状态,同时不像快照为了保证一致性需要一个时间窗口暂停业务运行。具体技术实现这里不再展开,有兴趣可参考[5]。

2.4其他针对性技术

在前述可靠性相关技术之外,针对逻辑缺陷和器件特性还有一些专门的数据保护方案,例如:

  • NetAPP的WAFL(Write Anywhere File Layout)[6] 开发了增量校验机制用于识别文件系统之外的数据破坏,确保元数据块在内存和存储上受到端到端的保护。同时还实现了事务审计模块,利用元数据之间的一致性关系识别出异常、逻辑错误等情况。这些一致性关系可以总结为一致性等式,比如:

    a .每个inode维护一个自己使用的数据块数量,文件系统也维护一个已分配数据块数量,这两个数量应该一致。

    b .文件系统块分配的位图中有记录每个数据块的分配状态,可以计算得出空闲数据块的数量。这同文件系统中维护的空闲数据块数量应该一致。

此外,WAFL还增加了增量校验内存页保护机制,通过在不更新时将页表项设为只读在被外部修改时触发异常。这可以用于发现存储系统外部引发的数据错误。出于性能考虑,内存页保护技术一般只应用于内部测试版本。

  • 针对NAND闪存中的存储单元在内外部环境变化下出现的电压平移,SSD设计了数据重读机制。可通过不断改变参考电压尝试读取数据,直到数据校验正确即可恢复数据。为了防患于未然,避免发生ECC不可恢复的情况。SSD还有扫描重写机制,读取数据并在比特翻转情况过一定阈值时重写数据。

三、总结

以上就是对单机存储系统可靠性及相关技术的一个简单介绍,可靠性是存储系统最重要的基础能力。智能终端设备相比服务器有较安全稳定的使用环境,在可靠性能力的构建上可侧重于增加数据可靠性。可施行的数据保护技术包括但不限于:数据校验、快照备份、文件系统事务审计、应用行为监控等。

参考文献:

[1] Linux Storage Stack Diagram, https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram

[2]  固态硬盘一年不通电,数据会自动消失?, https://zhuanlan.zhihu.com/p/39916936

[3] RAID, https://en.wikipedia.org/wiki/RAID

[4] Reed–Solomon error correction, https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction

[5] Continuous Data Protection, https://en.wikipedia.org/wiki/Continuous_Data_Protection

[6] Kumar et.al, High Performance Metadata Integrity Protection in the WAFL Copy-on-Write File System, FAST 17

c838331819da94aec7056c033eb866f2.gif

长按关注内核工匠微信

Linux内核黑科技| 技术文章 | 精选教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新手使用wvp-pro和zlm的菜鸟说明(手把手教)

对于wvp-pro的使用,很多大佬都是白嫖菜鸟党,很多都第一次使用wvp,甚至第一次接触国标,连国标最基本流程都不清楚。所以写此文档以供各位菜鸟大佬点评指正 看此文档前提: 第一:先看三遍zlm和wvp的wiki&…

【光照感知子场:差分感知融合模块与中间融合策略相结合】

PIAFusion: A progressive infrared and visible image fusion network based on illumination aware 本文提出了一种基于光照感知的渐进式图像融合网络PIAFusion,自适应地保持显著目标的亮度分布和背景的纹理信息。具体而言,我们设计了一个光照感知子网…

【Java基础篇】基础知识易错集锦(一)

在学习的路上,我们只记得学习新的知识,却忽略了一切新知识都是在旧知识的基础上;努力奔跑的过程中,也要记得常回头看看; 题目展示: 解析: abstract是抽象的意思,在java中&#xff0…

【Vue 快速入门】使用vue脚手架创建一个项目

文章目录一、环境检查1.安装node环境2.脚手架配置3.不同版本vue介绍二、创建项目三、脚手架配置解说1.配置解说2.我的第一个vue程序一、环境检查 1.安装node环境 Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境…

Flutter - AlignmentGeometry :Alignment 和 FractionalOffset

AlignmentGeometry 是一个抽象类,它有两个常用的子类:Alignment和 FractionalOffset Alignment Alignment继承自AlignmentGeometry,表示矩形内的一个点,他有两个属性x、y,分别表示在水平和垂直方向的偏移 上图中 Flu…

阳光保险港交所上市:年营收1200亿 市值超600亿港元

雷递网 雷建平 12月9日阳光保险集团股份有限公司 (简称:“阳光保险”,06963)今日在港交所上市,发行价为每股5.83港元,募资净额为64.195亿港元。若行使超额配股权,阳光保险可额外再募资9.81亿港元。阳光保险发行价为5.8…

软件测试 -- 进阶 7 软件测试环境构建 与 测试数据准备

工欲善其事,必先利其器。-- 《论语卫灵公》 释译:工匠想要工作做好,一定要先让工具锋利。比喻要做好一件事,准备工作非常重要。 1. 为什么要构建测试环境、准备测试数据 提前准备测试所需资源保证测试有效执行保证测试用序执…

ChatGPT新玩法来了,微信聊天机器人

前言 上一篇文章中说了ChatGPT是什么,然后怎么注册使用。 传送门:花了1块钱体验一把最近很火的ChatGPT 但是实际操作下来还是有不少小伙伴跟我一样遇到各种坑。 没有科学上网工具OpenAI的服务在你的国家无法使用(最多的问题) 注…

自动驾驶之夜间检测调研

1. ExDark 第一个 公开 特定的提供 natural low-light images for object的数据集 7363张 low-light images, 12 classes Low-light image enhancement: IVC database. general image enhancement而非特指low-light. 黑夜是人工合成的,可以找到原图像See-in-the-Dark datase…

如何创建Spring项目以及如何使用?

目录: 1.创建Spring项目 2.将对象存储在Spring中 3.从Spring中取出对象 4.使用对象 5.总结 Spring 就是⼀个包含了众多⼯具⽅法的 IoC 容器,它具备两个最基本的功能: 将对象存储到容器(Spring)中;从容器…

Web大学生网页作业成品——美食餐饮网站设计与实现(HTML+CSS+JavaScript)

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

java SpringMVC 之 表现层与前端数据传输 SSM整合 异步处理前后台处理联调 拦截器

SSM整合 项目结构配置搭建 pom的依赖&#xff1a; <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><de…

如何使用 Python 实现彩票自由(双色球)

福彩双色球也是购买次数最多的彩种之一&#xff0c;相比大乐透&#xff0c;双色球更容易中小奖 下面将介绍 Python 实习双色球彩票自由的流程 1. 随机一注 福彩双色球一注同样包含 7 个数字&#xff0c;包含 6 个红球和 1 个篮球 其中 红球是从 1 - 33 中选择 6 个不同的数…

【Keras+计算机视觉+Tensorflow】生成对抗神经网络中DCGAN、CycleGAN网络的讲解(图文解释 超详细)

觉得有帮助麻烦点赞关注收藏~~~ 一、生成对抗网络简介 生成对抗网络(GANs&#xff0c;Generative Adversarial Nets),由Ian Goodfellow在2014年提出的,是当今计算机科学中最有趣的概念之一。GAN最早提出是为了弥补真实数据的不足&#xff0c;生成高质量的人工数据。GAN的主要思…

数据宝藏“淘金热”,腾讯云大数据愿做“卖铲人”

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业大数据产业作为数字化时代的基础设施之一&#xff0c;正在成为新时代经济发展的重要动能之一。11月30日&#xff0c;在2022腾讯全球数字生态大会大数据专场上&#xff0c;腾讯云大数据重磅发布了两款具有高频应用场景的产品…

晶品特装科创板上市:市值68亿 主打地面无人装备研发与产销

雷递网 雷建平 12月9日北京晶品特装科技股份有限公司&#xff08;简称&#xff1a;“晶品特装”&#xff0c;证券代码&#xff1a;688084&#xff09;昨日在科创板上市。晶品特装本次发行1900万股&#xff0c;发行价为60.98元&#xff0c;募资总额11.59亿元。晶品特装昨日收盘价…

R语言从经济时间序列中用HP滤波器,小波滤波和经验模态分解等提取周期性成分分析

经济时间序列的分析通常需要提取其周期性成分。最近我们被客户要求撰写关于经济时间序列的研究报告&#xff0c;包括一些图形和统计输出。这篇文章介绍了一些方法&#xff0c;可用于将时间序列分解为它们的不同部分。它基于《宏观经济学手册》中Stock和Watson&#xff08;1999&…

TypeScript和JavaScript的区别,全面解读超详细(二)

了解基础篇&#xff1a;请跳转 3.4.3 TS的编译 点击跳转 TypeScript和JavaScript的区别,全面解读超详细 我们知道.js的文件可以直接在浏览器中运行的&#xff0c;而.ts或者.tsx却不行&#xff0c;所以我们在运行TS项目时需要编译成浏览器引擎可以识别的JS语言。同时为了提高编…

体验最近火爆的ChatGPT

体验最近火爆的ChatGPT演示前言体验1. 回答问题2. 写方案、写作3. 写代码4. 各种古怪刁钻问题回答国内用户如何注册ChatGPT账号并在线体验如果不能在官网体验&#xff0c;可以在我的网站上体验演示 体验最近火爆的ChatGPT 前言 前几天OpenAI公布了ChatGPT算是火爆朋友圈&…

基于Java+Swing+mysql图书管理系统

基于JavaSwingmysql图书管理系统一、系统介绍二、功能展示1.用户登陆2.系统主页3.图书查询4.图书添加5.图书修改6.图书删除7.办理借书8.办理还书9.历史查询10.用户查询、删除&#xff08;管理员&#xff09;三、数据库四、其它1.其他系统实现一、系统介绍 该系统实现了 用户: …