【存储系统】多硬盘存储系统

0x00 多硬盘系统 对多硬盘系统可靠性的度量,上图从故障产生,故障产生程序错误,错误检测,修复故障四个时间节点为一个周期。 三个可靠性的指标: 可靠性:通过错误产生到发现错误的时间间隔MTTF来衡量 可维护性:通过发现错误到错误修复的时间间隔来衡量,定义系统修复的能力 可用性:通过系统中非修复时间所占的比例,可以对外提供服务的时间占比,$EA=\frac{MTTF}{MTTF+MTTR}$ MTBF=MTTR+MTTF,两故障之间的时间间隔 恢复一块硬盘的代价很高,为了提高系统可用性,需要构建多盘系统,在某块磁盘故障时仍然能正常工作。 每秒的I/O请求峰值为1200,R/W比例为2:1,分别使用RAID 1/5,计算峰值的硬盘负载 总的R/W分别为800/400 RAID 1:写操作需要翻倍,总负载为800+400*2=1600 RAID 5:写操作翻四倍,总负载为800+400*4=2400 使用多盘系统的目的: 提高存储容量 提高性能 负载均衡 Disk Striping 带宽 吞吐量 提高可靠性 容错 基于奇偶校验的保护 创建副本 JBOD(Just a Bunch Of Disks)单纯对硬盘进行组合,只提高存储容量 负载均衡 静态:某一地址固定映射到某块硬盘 动态:热点数据分配到不同的硬盘中 按照数据块:将一个数据划分后存储到所有硬盘中(Disk Striping 条带化) Disk Striping 按一定大小对数据分块(stripe unit/block),然后依次存储到各个硬盘中 分配规则使用轮询枚举,通过取模判断存储的磁盘编号,根据余数确定偏移量 Stripe Unit大小设置一般为2M、4M、16M,太大丧失负载均衡能力,太小会在寻址上花费太多时间 磁盘失效 对于JBOD、Striping某块盘失效,整个文件系统都将失效 可以通过备份来解决,要花费较长的时间 多盘系统的MTTF为第一块磁盘失效的时间,比单盘系统时间短很多 解决方案:Redundancy冗余存储 Redundancy 存储副本 存储两份或更多的副本,采用三副本的服务有HDFS/GFS/Cloud Storage Disk Mirroring 磁盘镜像,分主从磁盘,从盘基于主盘进行同步,可以从任意盘进行读取 有较高的可用性 花费较高 写性能降低,磁盘之间需要同步,受限于最慢同步的磁盘 读性能提高,请求被分散到各个磁盘 磁盘镜像可以与结合条带化 先做Mirroring再做Striping (RAID 10) 若有磁盘故障,会损失1/2的数据 先做Striping再做Mirroring (RAID 01)

【存储技术基础】主存

0x00 主存 当前面临的问题: 容量问题、带宽问题、QoS保证 多核处理器、数据密集应用、云计算、GPU HDFS(GFS)基于外存储器 Spark 内存中数据处理 能耗功率问题 40%功耗在DRAM,Refresh操作耗能 DRAM发展遇到瓶颈 制成方式限制 改进: 3D-Stack DRAM 提供更高的带宽 低延迟DRAM 低功耗DRAM NVM(e.g. PCM)容量更大,延迟较高 0x01 DRAM的组成 Channel DIMM 内存条 Rank 二维阵列最小单元 Chip 芯片 Bank Row/Column 行为字线 word line 列为位线,交点是cell 内存单元 DRAM row是一个DRAM page Sense Amplifiers 也被叫做Row buffer 每个地址通过<row,colum>编址 访问一个closed row的过程: Activate:将row放到row buffer中 Read/Write:读写row buffer中的column Precharge:从row buffer中的数据写回到选中的row中 Bank Operation 给定Row Address通过Row decoder选中一行 将行加载到Row Buffer 若读取的Row在Row Buffer中,则为命中Hit状态,通过Column Mutex直接获取数据 若读取的Row不在Row Buffer中,则为冲突Conflict状态,将Row Buffer回写,然后再选中新的Row,读取数据 Chip 由多个(2-16个)Bank组成,Bank共享总线(指令/地址/数据总线) 每次只能读4或16 Bit Rank and Module Module为DIMM内存条,连接在主板上,由一个或多个rank组成

【存储技术基础】固态硬盘

主要由Flash Memory 和FTL组成 Non-Volatile Memory 提供低延迟持久性的内存/存储,也可以用来做内存 根据延迟数量级,一般用PCM做内存,Flash Memory做外存 0x00 Flash Memory 闪存原理 类型 NOR闪存 存储密度低 可字节改写 NAND闪存(主流) 存储密度高 不可覆盖写 用于外存需要较高的存储量级,一般用NAND 闪存单元 读:电压代表不同数值 写:电子注入 相比晶体管添加了浮栅门,保存电子 原理其实比较简单,非电子系就不做太详细的研究了 闪存页(4KB,8KB,16KB,读写单元),阵列中的每一行 闪存块(擦除单元),由多个页组成的单元 选中行和列,然后将数据加载到Sense Amplifiers 存储单元有两个阈值的电压,可以根据两个电压的中点作为读电压,2.5V读电压时左边通电,数据为1,右边则不通电,数据为0 Pass Through 选取一个较大的电压,使得所有的单元都接通,数据为1,不影响其他行的状态 如图所示的存储结构,在第二行施加2.5V电压,其他行施加5V,最终读取数据为0011 上述为SLC,Single Level Cell,单存储单元 多比特闪存 多比特闪存单元MLC,包含2Bits 4个Level的数据 TLC 3 Bits 8个Level QLC 4 Bits 16个Level 多比特使用格雷码来编码 使用格雷码使得相邻单元只有一位差异,方便纠错 多比特提高了存储密度,但是提高了错误率,因为施加的电压差距很小。可靠性会降低。 对于多比特的写,MLC分为高比特和低比特,对于低比特的状态加偏移电压确定高比特,在低比特时需要加的电压较大,操作难度低,运行速度快,在高比特时需要加的电压小,波形的间距小,操作难度高,运行的速度较慢。 对于多比特的读,先看lower bit,加一次电压,即可筛选出低位的0,1,再加两次电压确定upper bit。因为upper bit为0的在中间部分,为1的在两侧,因此需要在两个分界线分别加一次电压来确定upper bit为多少。 闪存 Block的大小的一种配置: 一行有两个Page,Upper Page和Lower Page,每个单元中,低位构成Lower Page,高位构成Upper Page,有128个单元,128K/8=16KB 有64列bitlines,一个block的大小即为16KB*64*2=2MB,一般按照此比例配置Block 写入时按照固定顺序,写入高低页面相互独立,不能同时写,在写入加压时容易使相邻单元发生数据偏移,要降低错误率 写入是需要先擦除再写入,擦除整个块 特性 读写粒度 闪存页读写粒度:

中奖

中奖 我人生中几乎很少有过中奖,印象中甚至是没有,抛开小时候5毛钱买的那种,今天在去图书馆的路上看到了这个画面,让我想起了三年前大一刚入学发生的事。 当时还是在余家头,正值跨年,学校举办了一个跨年晚会,其中有一个抽奖的活动,也是在图书馆前搭了舞台。我当时刚从食堂吃完饭,回寝室的路上看到了类似的扫码抽奖,毫不犹豫地拿起手机扫了码参与抽奖,只见大屏幕上的头像开始滚动,3!2!1!屏幕上的头像停止了滚动,只剩下一个获奖的熊猫头,下面写着Coding_Panda字样,是什么小爱学习机,我反应过来是我中奖了,于是飞快的跑到舞台上想找工作人员领奖,但是这是工作人员却对我说:“恭喜你啊同学,但是我们现在在彩排,希望你晚上也有同样的好运气!”。刚才的兴奋瞬间转变为了失望,当然不是什么大事,也是因为自己没搞清楚状况。 之后可能还搞过什么转发抽奖,当然也从来没中过,再之后我也从来没参加过什么抽奖了。抽奖可能也并不是为了去中奖才去参与的,但是中奖的那一刻确实会有一种喜悦的感觉,我自认是一个有点倒霉的人,有时候又会很走运,远远比中奖开心的事情也有很多,不如把精力放在无限的学习之中。

【存储技术基础】磁盘技术

本讲内容HDD好弟弟: 磁盘的构成和各个部分的功能 磁盘的性能和评估方式 磁盘固件的功能,固件算法 推荐阅读:Memory System: Cache,DRAM,Disk.Author: Bruce Jacob, Spencer W. Ng, David T.Wang 0x00 组成 转轴,盘片,磁头 track 磁道,每个盘片的正面和背面的同心圆 对于盘片每个面是surface,每个track磁道分为多个sector(扇区) 所有盘片上同一个位置的track是一个cylinder(柱面) 寻址 物理编址:CHS,Cylinder-Head-Sector 定位一个块的位置 根据柱面-磁头-扇区来访问 右边图示表示逻辑块地址,每个柱面可以从上到下顺序编址,组成线性结构 0x01 性能评估 电子设备 电路驱动 机械设备 seek time 磁头运动速度 rotational latency 转轴旋转速度 data transfer rate 数据传输速率 $磁盘访问时间=磁头运动速度+转轴旋转速度+数据传输速度$ Seek time inner和outter track中进行移动,到达对应的track所消耗的时间 评价方法: Full stroke 里圈到外圈 Average 移动到中间所花费的时间 Track-to-track 两个磁道间的移动时间 Rotational Latency 平均旋转速度:转半圈的时间 厂商使用转速来标称 rpm: round per min $$ {\rm Rotational\ Latency}=\frac{1}{2}*\frac{1}{\frac{x\ rpm}{60}} $$ Data Transfer Time 分为内部传输和外部传输

【存储技术基础】概述

0x00 Intro 对于场景制定存储方案: 存储结构 存储大小 可靠性和容错 文件访问类型,读/写频率 要学习硬件的选择和文件系统设计 0x01 现状 存储的挑战 数据量激增 存储是什么 分层的存储架构 L0-L1-L2-DRAM-Disk 存储的特性 可靠性: 多副本 纠删码 一致性: 原子+持久化 数据保护 容灾和备份: 解决单点故障 0x02 存储历史与发展 硬件上的发展 1956–HDD 1984–Flash Memory 早期用于嵌入式 2010s–Persistent Memory 3D-Point Intel SSD NAND Flash: SLC,MLC,TLC,QLC存储单元中电平的等级 对比HDD和SSD: 对于NAND,需要先擦出,再写 NAND Flash有擦除,HDD只能覆盖写 SSD多个颗粒可以并行I/O,总体上速度快 软件上的发展 网络存储 远程挂载目录NAS 分布式文件系统GFS,Hadoop HDFS 键值存储Key-Value 云存储 数据存在远端,商业化,软件协作Office Assignment 有一个服务器集群(4台),针对I/O 500测试,需要考虑哪些问题?
0%