大话SSD - yufeng.info

Download Report

Transcript 大话SSD - yufeng.info

大话SSD
淘宝核心系统数据库组 褚霸
http://yufeng.info
2011/06/25
Agenda
初见
相识
相知
相爱
存储设备IOPS演变史
设备
7200 RPM SATA drives
~90 IOPS
接口
SATA II
15k RPM SCSI drives
~180 IOPS
SAS
Intel X25-M G2 (MLC)
~8,600 IOPS
SATA II
ioDrive, a PCI-Express card with
Flash
with Flash 140,000 PCIe
Read IOPS,
135,000 Write
IOPS
Fusion-io ioDrive Octal
1,180,000+
Random
Read/Write IOPS
IOPS
PCIe
存储设备价格对照
设备
价格/每GB
SATA 7200转
0.1 USD
SAS 10000转
0.4 USD
Intel X25-M 160G
* USD
FusionIO iodrive MLC 320G
* USD
Virident tachion SLC 400G
* USD
淘宝使用案例
•
•
•
•
•
•
•
•
•
CDN
IC库
TC主库
TC读库
Oceanbase
Vstore
图像搜索
Tair
...
Agenda
初见
相识
相知
相爱
PCI-E/SATA接口
Intel X25-M/SATA
FusionIO iodrive/PCI-E
Virident tachion/PCI-E
SSD写入如何发生的呢?
背景知识1:Nand芯片擦写次数
Generation
SLC
MLC
2x
100,000
2,500
3x
100,000
5,000
5x
100,000
10,000
eMLC
35,000
背景知识2:写放大倍数
写放大倍数的定义:SSD物理写字节数/应用逻辑写字节数
放大倍数越大,说明:
• 设备不够好
• 我们没用好
• 寿命杀手
Intel X25/M Nand内部布局
数据如何写入SSD(1)
数据如何写入SSD(2)
数据如何写入SSD(3)
数据如何写入SSD(4)
垃圾收集导致IO性能下降
Agenda
初见
相识
相知
相爱
适用环境
•
•
•
•
•
对IOPS要求高,离散读多。
离散写多。
需要低延迟。
作为后备内存。
作为L2 Cache 。
对程序员的影响
•
•
•
•
•
•
SSD=/=磁盘,传统软件基于机械硬盘设计。
IOPS不再是问题,如果利用好是问题。
离散读写非常快(3个数量级),顺序读写没优势。
读写延迟时间小。
读不消耗寿命,写消耗,越小的数据写越不合算。
同一个位置写,由于均衡算法的存在,不会磨损芯片的同一位
置。
• 尽量合并写。
对程序员的影响(续)
• SSD IO吞吐量1.XG/s, 内存是4-6G/s, 可看作是更大的内
存?
• MMAP做后备内存,和jemalloc这样的内存分配器配合。
• 异步IO, 保证IO请求队列深度。
• 对SSD的特性进行算法优化。
• fsync能力是数据类应用天花板。
使用SSD通常要考虑的问题
Agenda
初见
相识
相知
播种
选择
•
•
•
•
•
•
•
•
•
多线程和IOPS
文件系统的选择
IO块大小
SLC还是MLC
写放大倍数
数据安全性
驱动对应用的影响
抖动/延迟
L2 Cache方案
离散读性能/线程数目
离散写性能/线程数目
文件系统的影响
IO块大小的影响
Nand: MLC还是SLC
写放大倍数和寿命
数据库典型的应用:
Intel X25-M: 5-8倍
FusionIO iodrive: 2-3倍
可以透过ssd设备提供的监控程序(如smartctl)来获取这些参数 .
寿命:
Intel X25-M: 200T
FusionIo iodrive 320G: 4P
数据安全性
数据校验:
• ECC校验
• Raid冗余
• Intel X25-M支持硬件raid卡,FusionIO 只能做软raid
掉电保护:
• 大电容保护
• 日志系统
数据恢复时间:
• FusionIO最多10分钟左右(内部日志系统)
驱动对应用的影响
Sata接口:标准Linux驱动,驱动开销很小
PCI-E接口:每个厂家驱动不同,对CPU和内存的消耗可能会非常
大。 FusionIO在峰值的时候可能会占用1-2G内存, 最多
1x0%CPU, Virident由于板载处理器CPU消耗比较小。
中断开销:
• 中断多的时候是否可以考虑均衡
抖动和延迟
由于数据整理的不可避免性,抖动也是不可避免的。
Intel:
脏块回收做的不是很好,在使用过程中,数据写入多的情况下
抖动会很厉害。
FusionIO:
相对好些,但是也会有轻微抖动。
可以通过加大reserve容量(通常默认20%)来大大缓解这个问题。
延迟时间可能会达到1ms.
SSD作为L2Cache方案
好处:
• 低成本,高性能
• 对应用透明
可选方案:
• Facebook FlashCache
• FusionIO DirectCache
• 文件系统
存在问题:
• 性能损失
• 单点故障
• 数据热点问题
Agenda
初见
相识
相知
相爱
交流时间
谢谢大家!
SSD未来会很快普及,
我们做好相爱的准备了吗?