| Device | Type | IOPS |
|---|---|---|
| 7,200 rpm SATA drives | HDD | ~75-100 IOPS[2] |
| 10,000 rpm SATA drives | HDD | ~125-150 IOPS[2] |
| 10,000 rpm SAS drives | HDD | ~140 IOPS [2] |
| 15,000 rpm SAS drives | HDD | ~175-210 IOPS [2] |
| RAID level | Read | Write |
|---|---|---|
| RAID 0 | 1 | 1 |
| RAID 1 and 10 | 1 | 2 |
| RAID 5 | 1 | 4 |
| RAID 6 | 1 | 6 |
假设你有10个驱动器,每个驱动器的IOPS为150,那么总的IOPS为1500
如果使用raid5的话可以得到1500个读IOPS,375个写IOPS.
如何监控读写操作的IOPS?
使用windows自带的perfmon监控如下值:
逻辑/物理磁盘的Avg.Disk read/sec,Avg.Disk write/sec.
还有Disk Transfers/sec.Disk Transfers/sec是读写IOPS的综合
磁盘响应时间(Disk Response Time)条目
1.Avg. Disk sec/Transfer:显示了存储端处理的每个IO的平均时间。
2.Avg. Disk sec/Read:显示了存储端处理的每个读IO的平均时间。
3.Avg. Disk sec/Write:显示了存储端处理的每个写IO的平均时间。
上述条目显示的单位都是毫秒ms
IOPS条目
1.Disk Transfers/sec:显示了磁盘上的IOPS总数,直观的显示了说对应LUN上的每秒IO的吞吐量。
2.Disk Reads/sec:显示了磁盘每秒的读IO数量。
3.Disk Writes/sec:显示了磁盘每秒的写IO数量。
Throughput(MB/s)条目:
1.Disk Bytes/sec:显示了磁盘上的总的数据传输量,单位为Byte。
2.Disk Read Bytes/sec:显示了磁盘上读数据的传输量。
3.Disk Write Bytes/sec:显示了磁盘上写数据的传输量。
读写百分比
% idle time 、%disk time、%disk read time、% disk write time这几个值显示磁盘处于做读写状态的百分比。理论上,disk time%这个值应该小于100%,否则则说明磁盘处于极度繁忙状态,或存在性能问题。
队列条目
Avg. Disk Queue Length、Avg. disk read queue length、Avg. disk write queue length、Current Disk Queue Length这几个值显示了磁盘队列长度的相关信息。所谓Disk Queue也就是服务器端发出的存储操作正在等待被存储处理的请求数目。例如有一个应用发出一条读请求,但是目标磁盘当时正在处理其他任务。那么这个新的读请求就会被放在磁盘队列里。这时候磁盘队列的值就是1。理论上讲,Current Disk Queue Length的这个值不应该长时间地大于2。Avg. Disk Queue Length的值也是,如果看到采样期间,平均的Queue Length大于1,则说明在采样的某段时间存储无法完全响应应用端说发出的IO请求的。
| 参数 | 描述 | 值 |
| 磁盘转速 | 这个参数直接影响磁盘能够从正确的扇区读取数据的快慢 | 15,000 RPM: 150 随机 IOPS |
| Read/Write | IOPS 可以分解为读和写操作。不同的进程对读写的密集程度不一。读、写比例影响总IOPS |
|
| RAID 级别 | RAID 配置会由于不同类型的冗余影响实际写的数量。写惩罚会影响总IOPS | RAID 0: 无RAID 惩罚 |
| 桌面 生命周期 | 每个桌面有6种状态,每个阶段对存储子系统都有不同的影响. | 启动: 26 IOPS
登出: 12 IOPS Offline: 0 IOPS |
根据这6种不同的虚拟桌面状态可以帮助架构师基于每服务器计算IOPS需求和完整的虚拟桌面基础架构.公式如下 :
总原生 IOPS=磁盘转速 IOPS * 磁盘数目
举例而言: 假设我们有8 块72G 的15,000 转 SCSI3 驱动,并按照RAID 10 配置。那么,这个存储系统总共会产生720 个功能性IOPS,计算公式如下:
功能性 IOPS=(((总原生 IOPS×写 %))/(RAID 惩罚))+(总原生IOPS×读 %)
总原生 IOPS=150×8=1200
功能性IOPS=(((1200× .8))/2)+(1200×.2)= 720
如果是MCS, 功能性IOPS =(1200*0.5)/2+ 1200*0.5=900
这个计算会帮助确定当所有的桌面执行同样行为时候的可能性,当然,不是所有的情况都适合。实际上,在不同的hypervisor 上,不同的虚拟机状态可能是不一样的。因此,作为一个架构师来说,你需要根据不同桌面的综合体验来计算不同的服务器需求。根据计算,很有可能你都会发现可能你根本不需要SAN,使用本地硬盘就足够了!
浅谈RAID写惩罚(Write Penalty)与IOPS计算
通常当数据库管理员提出需要更多存储空间的时候,他们还会指定必须要达到多少IOPS。现在有这样一个需求,20TB存储空间同时满足4500 IOPS+RAID 5,我应该如何计算?RAID 5或者RAID 1/0的时候分别需要多少块硬盘?
| RAID类型 | 公式 |
|---|---|
| RAID 5和3 | Drive IOPS = Read IOPS + 4*Write IOPS |
| RAID 6 | Drive IOPS = Read IOPS + 6*Write IOPS |
| RAID 1和1/0 | Drive IOPS = Read IOPS + 2*Write IOPS |
假定4500 IOPS中读/写比是2:1,则不同RAID类型Drive IOPS要求分别如下:
RAID 1/0: (2/3)*4500 + 2*(1/3)*4500 = 6000 IOPS
RAID 5: (2/3)*4500 + 4*(1/3)*4500 = 9000 IOPS
RAID 6: (2/3)*4500 + 6*(1/3)*4500 = 12000 IOPS
再参照下表中不同类型硬盘单块IOPS参数,得出需要多少块硬盘:
| 硬盘类型 | IOPS |
|---|---|
| Fibre Channel 15k rpm | 180 |
| SAS 15k rpm | 180 |
| Fibre Channel 10k rpm | 140 |
| SATA 7.2k rpm | 80 |
| SATA 5.4k rpm | 40 |
| Flash drive | 2500 |
假定选用FC 15K RPM硬盘,则:
RAID 1/0: 6000/180 = 34 块
RAID 5: 9000/180 = 50 块
RAID 6: 12000/180 = 67 块
注:实际情况下还需考虑Vault Drivers (共5块)以及Hot Spares (建议每30块硬盘一个)。
最后,如果选用600GB FC硬盘来实现20TB可用空间,则RAID 1/0需要78块,RAID 5需要42块。