IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Hyper-V の部屋

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第14回 ストレージの性能設計に必要な基礎知識 (小塚大介) 2014年7月

 Hyper-V で仮想化をする場合、性能設計でストレージの性能を正しく設計することはとても重要です。今回は物理環境から仮想環境に移行するケースもふまえて、リソースマネージャーを使ってストレージの負荷測定の方法と確認するポイントをお伝えします。

 最初にストレージの性能を評価するときにはシーケンシャルI/OとランダムI/Oの2種類の読み書きの性能を確認します。シーケンシャルI/Oの性能はMB/sやGB/s という単位で表示されることが多く、1秒間に読み書きできるデータの量を表すために使われます。ランダムI/Oの性能はIOPSという単位が使われることが多く、1秒間に処理できる読み書きの命令の数を表します。シーケンシャルI/Oの性能は大きなファイルの読み書きに影響し、ランダムI/Oはたくさんの小さなファイルを読み書きする際の速度に影響します。一般的にハードディスクはランダムI/Oを苦手とし、SSDはシーケンシャル、ランダムI/Oともに高速です。Hyper-V の仮想マシンに接続するVHDXファイルを保存するストレージはランダムI/Oの性能が必要になることが多く、SSDを使ったシステムでは高い性能を発揮します。

リソースマネージャーで負荷を把握する

 それでは、すでに稼動しているサーバーがどれくらいストレージに負荷をかけているかを確認しましょう。今回は以前紹介したリソースマネージャーを利用します。基本的な使い方は既に紹介しているので改めて説明はしませんが、このリソースマネージャーで確認するべきパフォーマンスカウンターは以下の通りです。

  • [LogicalDisk] - [Disk Write Bytes / sec]
  • [LogicalDisk] - [Disk Read Bytes / sec]
  • [LogicalDisk] - [Disk Writes / sec]
  • [LogicalDisk] - [Disk Reads / sec]

fig01

図:ストレージの負荷を取得するためのパフォーマンス カウンター

 先の2つは1秒間に読み書きしたデータの量(Byte/s)を意味し、後の2つは1秒間に何回の IO 命令を処理したか(IOPS)を意味します。この4つのパフォーマンスカウンターを確認することで、このシステムに必要なストレージ性能をMB/s、IOPSの両方で測定することができます。

RAIDとIOPSの関係

 前述の4つのパフォーマンスカウンターが Read と Write のそれぞれのカウンターを確認することには意味があります。ベンダーにストレージ設計を任せる場合は Read と Write それぞれに IOPS, MB/s の目標値を伝えましょう。それはストレージの設定などで ReadとWriteの得意不得意がある場合や、RAIDのタイプによってもRead と Write の得意不得意があるためです。
 自分でストレージ設計をする場合、SASのハードディスク1台当たり150 - 200 IOPSなどの目安が使われる場合が多いようです。 600 IOPSの性能を発揮するストレージが必要な場合、1台のHDDあたり150 IOPSとして単純に計算すると4台のハードディスクが必要と計算できますが、これには冗長化が考慮されていません。
 仮にRAID 0+1の場合は1つのデータを2つのハードディスクに書き込みます。ですので WriteのIOPS の2倍 + Read のIOPS を合計した値を性能要件とする必要があります。たとえば Write : 400 IOPS 、Read : 200 IOPS の場合は (400 * 2) + 200 = 1000 IOPS を発揮できるストレージが必要です。
 また、RAID 5の場合にはパリティの書き込みや確認などで1つのデータを書き込むのに4回のI/O が必要になります。そのため設計をする際には Writes の IOPS を4倍して計算する必要があります。たとえば先ほどと同じ Write : 400 IOPS 、Read : 200 IOPS の場合は (400 * 4) + 200 = 1800 IOPS を発揮できるストレージが必要です。

 このように、ストレージの設計を行う場合には IOPS, MB/s の値を Write, Read に分けて設定する必要があります。仮想化してサーバーを集約する場合にストレージ設計はとても重要ですので、ぜひこれらの点を考慮しながら設計をしてください。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes