ITPub博客

首页 > Linux操作系统 > Linux操作系统 > raid与iops

raid与iops

原创 Linux操作系统 作者:strongthink 时间:2010-04-12 10:23:33 0 删除 编辑
假设存储上有只有一个应用的情况, 以满足以下条件三年内的负载情况
  应用逻辑读写负载为 S (IOPS), 该值最好用系统检测工具进行最繁忙时段的多次监控取每次平均值的最大者
  读:写比例=R:W
  每年复杂增量百分比: C

假设每磁盘可提供的IOPS 为 P  (10000转速磁盘IOPS为130~150IOPS/disk, 15000转的150~180 IOPS/disk, 各厂商说法上有所区别)
因为容量都比较好估算, 所以主要从性能上考虑

1. 主要RAID类型的特点与IOPS估算
 因为RAID 0写性能是最好的,但是没有数据容错, 一般企业环境下很少使用, (除了数据安全性要求不高的地方), 所以这里不作过多论述.
 a. RAID 1 和 RAID 1/0
  逻辑读 1次 <= 物理读1次, 因为可以有两个磁盘读可以提供数据读
  逻辑写 1次 =   物理写2次
  适合顺序读写的应用, RAID 1可以丢失一块盘.  RAID 1/0 最多可以丢失组成RAID 1/0中的一半盘, 但不能避免同时损坏两个互为镜像盘的情况.
  对一个需要S个IOPS的应用, 计算RAID 1的实际IOPS  T 要求:
  T= [S*R/(R+W) + 2*S*W/(R+W)] * (1+C)**3
  磁盘数目: T/P向上取整
       注意: R1/0盘数应为偶数, R1就只两个盘, 没啥好说的. **为乘方操作符
 b. RAID 5
  逻辑读 1次 <= 物理读1次, 因为可以有两个磁盘读可以提供数据读, 和RAID1/0类似
  逻辑写 1次 =   物理写4次, 为什么是4, 这是很多初学者都不能理解的地方, 去看看链接中R 3 和 R 5的写过程就知道了.
  适合顺序读写的应用, 最多可以丢失组成RAID 5中的一个盘
  对一个需要S个逻辑IOPS的应用, 计算RAID 1的实际IOPS  T 要求:
  T= [S*R/(R+W) + 4*S*W/(R+W)] * (1+C)**3
  磁盘数目: T/P向上取整

2. RAID类型的选择, 逻辑盘LUN的分布
 对于顺序读写而且写性能要求高的应用, 选择RAID 1, 或RAID 1/0, 如果是顺序写要求高的数据, 应单独在一个RAID组中, 避免磁头来回移动.  典型的有Oracle的 redo log, Exchange 的 Transaction log等 日志型的数据.
 对于有备份, 没有容错要求, 读写性能要求高的用RAID 0, 比如实时数据采集.
 对于读要求高于写要求, 容量上有考虑的, 选择RAID 5. 随机写要求不高的都可以使用. 如数据库文件.
 
3。单个硬盘的IOPS怎么算的?

设定硬盘的转速是 
 R  rpm ,硬盘的寻道时间为Ts,,磁头定位时间为 Th ,硬盘的外部时间为 Tm ,磁盘存储时间为 Td

∵ Td= Th + Tm
又 ∵ Th =Ts + (1/2 x 60/R)   (想想为什么?)
∴ Td =Ts + (1/2 x 60/R) +Tm
同时: ∵  在单个硬盘中 Tm << Ts ,
∴ Td ≈ Ts + (1/2 x 60/R)

∴ 单个磁盘的随即IOPS = 1/Td =1 / Ts+(1/2 x 60 /R)  IO/s

那么,我们就可以算出单个硬盘的 吞吐量

假设 1个扇区 的大小为 S , 而1 个cluster 是由 N 个连续的扇区组成的
∴ 磁盘的吞吐量 = IOPS x S x N = 1 / Ts+(1/2 x 60 /R)  x S x N  MB/s

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21845741/viewspace-659427/,如需转载,请注明出处,否则将追究法律责任。

上一篇: linux swap划分
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-06-12

  • 博文量
    25
  • 访问量
    40916