(57)【要約】【課題】  複数のファイルシステムの共存を気にすることなく、論理ドライブの書き込み速度の向上を図ること。【解決手段】  情報処理装置は、第１設定手段および第２設定手段を具備する。第１設定手段は、複数台の記憶装置から構成される論理ドライブのセクタサイズを、一つのストライプグループ内に冗長コード以外のデータを格納可能なストライプグループ容量の正整数倍に設定する。第２設定手段は、クラスタサイズを第１設定手段によって設定されたセクタサイズの正整数倍に設定する。【選択図】    図３
2012053571.tif 000002
【特許請求の範囲】
【請求項１】
複数台の記憶装置をストライプグループ単位で管理し、データを前記複数台の記憶装置に分散して書き込み、前記複数台の記憶装置の内の複数の第１の記憶装置の同一のストライプグループに格納されているデータから生成される冗長コードを、前記複数台の記憶装置の内の第２の記憶装置の前記同一のストライプグループに格納する情報処理装置であって、
前記複数台の記憶装置から構成される論理ドライブのセクタサイズを、一つのストライプグループ内に前記冗長コード以外のデータを格納可能なストライプグループ容量の正整数倍に設定する第１設定手段と、
クラスタサイズを前記第１設定手段によって設定された前記セクタサイズの正整数倍に設定する第２設定手段と
を具備する情報処理装置。
【請求項２】
ストライプサイズを記憶する記憶手段と、
前記複数の第１の記憶装置の台数を取得する取得手段と、
前記ストライプサイズおよび前記複数の第１の記憶装置の台数に基づいて前記ストライプグループ容量を算出する算出手段とを更に具備し、
前記第１設定手段は、前記算出手段によって算出されたストライプグループ容量に基づいて前記セクタサイズを設定する
請求項１記載の情報処理装置。
【請求項３】
前記記憶手段は、前記第２の記憶装置の台数を示す第１データと、前記複数台の記憶装置の台数を示す第２データを記憶し、
前記取得手段は、前記第１データと前記第２データとに基づいて前記複数の記憶装置の台数を算出する
請求項２に記載の情報処理装置。
【請求項４】
複数台の記憶装置をストライプグループ単位で管理し、データを前記複数台の記憶装置に分散して書き込み、前記複数台の記憶装置の内の複数の第１の記憶装置の同一のストライプグループに格納されているデータから生成される冗長コードを、前記複数台の記憶装置の内の第２の記憶装置の前記同一のストライプグループに格納するコントローラカードであって、
前記ホストから前記複数台の記憶装置から構成される論理ドライブのセクタサイズの送信を要求された場合に、一つのストライプグループ内に前記冗長コード以外のデータを格納可能なストライプグループ容量の正整数倍を前記セクタサイズとして前記ホストに送信する送信手段を
を具備するコントローラカード。
【請求項５】
複数台の記憶装置をストライプグループ単位で管理し、データを前記複数台の記憶装置に分散して書き込み、前記複数台の記憶装置の内の複数の第１の記憶装置の同一のストライプグループに格納されているデータから生成される冗長コードを、前記複数台の記憶装置の内の第２の記憶装置の前記同一のストライプグループに格納する情報処理装置の制御方法であって、
前記複数台の記憶装置から構成される論理ドライブのセクタサイズを、一つのストライプグループ内に前記冗長コード以外のデータを格納可能なストライプグループ容量の正整数倍に設定し、
クラスタサイズを前記設定されたセクタサイズの正整数倍に設定する
情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データを冗長化して複数の記憶装置に書き込む情報処理装置、コントローラカード、および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
一般にドライブアレイ装置は、複数のドライブからなるドライブアレイと、このドライブアレイ内の各ドライブに対するアクセスを制御するドライブアレイ制御装置とを備え、各ドライブを並列に動かしてアクセスの高速化を図ると共に、冗長構成によって信頼性の向上を図るようにした外部記憶装置として知られている。
【０００３】
ディスクアレイ制御装置は、ホスト装置から転送される書き込みデータに対して、データ訂正情報としてのパリティデータを排他的論理和演算により生成し、複数のドライブのうちのいずれかに書き込むようになっている。これにより、複数のドライブのうちの１台の故障に対し、このパリティデータと残りのドライブのデータを用いて排他的論理和演算を行うことで、故障したドライブのデータを復元することを可能としている。
【０００４】
このような、パリティ等によるデータ冗長化の方式の１つとして、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks ）方式が知られている。ＲＡＩＤ方式では、ＲＡＩＤのデータとパリティとの関連において、ＲＡＩＤレベルとして種々のレベルに分類されており、その代表的なものにレベル５がある。
【０００５】
ＲＡＩＤ５の論理ドライブは、ストライプグループの容量以下の書き込み要求があった場合、新しいデータ、パリティを書き込む前に、パリティを作成するのに不足している既存のデータやパリティをリードする必要があり、それが書き込み速度を低下させる要因になっている。
【０００６】
書き込み速度の低下を抑制するために、１ストライプグループあたりのデータ容量をファイルシステムのアクセス単位に合わせることにより、既存のデータやパリティをリードすること無しに、新しいデータ、パリティをライトすることができる技術がある。
【０００７】
しかしながら、上述した技術では、１つの論理ドライブに複数のパーティションが設定され、それぞれのパーティションを別のファイルシステムでフォーマットした場合、それぞれのファイルシステムで使用される論理ドライブ内のストライプグループの容量を変更するなど個別に対処が必要になる。ファイルシステムによって、アクセス単位(クラスタサイズ)が異なるため、ファイルシステムごとにストライプグループの容量の変更が必要になる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−８０５４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
複数のファイルシステムの共存を気にすることなく、論理ドライブの書き込み速度の向上をはかることが望まれている。
【００１０】
本発明の目的は、複数のファイルシステムの共存を気にすることなく、論理ドライブの書き込み速度の向上を図ることが可能な情報処理装置、コントローラカード、および情報処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【００１１】
実施形態によれば複数台の記憶装置をストライプグループ単位で管理し、データを前記複数台の記憶装置に分散して書き込み、前記複数台の記憶装置の内の複数の第１の記憶装置の同一のストライプグループに格納されているデータから生成される冗長コードを、前記複数台の記憶装置の内の第２の記憶装置の前記同一のストライプグループに格納する情報処理装置は、第１設定手段および第２設定手段を具備する。第１設定手段は、複数台の記憶装置から構成される論理ドライブのセクタサイズを、一つのストライプグループ内に冗長コード以外のデータを格納可能なストライプグループ容量の正整数倍に設定する。第２設定手段は、クラスタサイズを前記第１設定手段によって設定された前記セクタサイズの正整数倍に設定する。
【図面の簡単な説明】
【００１２】
【図１】実施形態の情報処理装置のシステム構成を示すブロック図。
【図２】ＲＡＩＤコントローラカードのシステム構成を示すブロック図。
【図３】ＲＡＩＤ−５の論理ドライブにおける代表的なデータ・パリティ配置例を示す図。
【図４】３台のドライブでＲＡＩＤ−５を構築し、論理ドライブのセクタサイズを４つのストライプグループに設定した例を示す図。
【図５】図４に示す３台のドライブによって論理ドライブを構築した場合の、オペレーティングシステムによって設定される論理ブロックアドレス(LBA)を示す図。
【図６】論理セクタサイズの設定およびクラスタサイズの設定を行うための構成を示すブロック図。
【図７】論理セクタサイズの設定およびクラスタサイズの設定を行う手順を示すフローチャート。
【発明を実施するための形態】
【００１３】
以下、実施の形態について図面を参照して説明する。
【００１４】
図１を参照して実施形態に係わる情報処理装置を説明する。情報処理装置は、コンピュータとして実現されている。  
図１は、コンピュータ１０のシステム構成を示すブロック図である。図１に示すように、コンピュータ１０は、ＣＰＵ１１、ノースブリッジ１２、主メモリ１３、グラフィックスコントローラ１４、ＶＲＡＭ１４Ａ、サウスブリッジ１６、ＢＩＯＳ−ＲＯＭ１７、ＲＡＩＤコントローラカード１８、およびハードディスク（ＨＤＤ）１９等を備えている。
【００１５】
ＣＰＵ１１は、コンピュータ１０内の各部の動作を制御するプロセッサである。ＣＰＵ１１は、ＨＤＤ１９から主メモリ１３にロードされるオペレーティングシステム（ファイルシステム）や、このオペレーティングシステムの制御下で動作する各種プログラムを実行する。また、ＣＰＵ１１は、ＢＩＯＳ−ＲＯＭ１７に格納された基本入出力システム（ＢＩＯＳ）も実行する。なお、以下では、このＢＩＯＳ−ＲＯＭ１７に格納された基本入出力システム自体をＢＩＯＳと称することがある。
【００１６】
ノースブリッジ１２は、ＣＰＵ１１のローカルバスとサウスブリッジ１６との間を接続するブリッジデバイスである。ノースブリッジ１２は、バスを介してグラフィックスコントローラ１４との通信を実行する機能を有しており、また、主メモリ１３をアクセス制御するメモリコントローラも内蔵されている。グラフィックスコントローラ１４は、本体側のディスプレイ１５を制御する表示コントローラである。グラフィックスコントローラ１４は、ＶＲＡＭ１４Ａに書き込まれた画像データからディスプレイ１５に送出すべき映像信号を生成する。
【００１７】
サウスブリッジ１６は、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バスの各種デバイスを制御するコントローラである。また、このサウスブリッジ１６には、ＢＩＯＳ−ＲＯＭ１７が直接的に接続され、これらを制御する機能も有している。
【００１８】
３台のハードディスクドライブ１９Ａ〜１９ＣによってＲＡＩＤ−５が構築されている。
【００１９】
次に、ＲＡＩＤコントローラカード１８のシステム構成について図２のブロック図を参照して説明する。ＲＡＩＤコントローラカード１８は、コントローラ３０１、ＰＣＩｅコントローラ３０２、ＳＡＳ／Ｓ−ＡＴＡコントローラ３０３、キャッシュメモリ３１１、および不揮発性メモリ３２０等を備えている。
【００２０】
コントローラ３０１は、ＲＡＩＤに係わる書き込み処理および読み込み処理等を行う。また、サウスブリッジ１６からＨＤＤ１９Ａ〜１９Ｃに関する情報の問い合わせがあった場合に、コントローラ３０１は、問い合わせに対する回答を行う。ＰＣＩｅコントローラ３０２は、サウスブリッジ１６との間のデータの伝送を制御するためのＰＣＩ  Ｅｘｐｒｅｓｓインタフェースである。ＳＡＳ／Ｓ−ＡＴＡコントローラ３０３は、ＨＤＤ１９Ａ〜１９Ｃとの間のデータの伝送を制御するためのインタフェースである。キャッシュメモリ３１１は、例えばＤＤＲ２  ＳＤＲＡＭ（Double-Data-Rate2 Synchronous Dynamic Random Access Memory）によって構成されている。例えば、ＨＤＤ１９Ａ〜１９Ｃに対するライトアクセスがあった場合、サウスブリッジ１６から転送されたデータは一旦キャッシュメモリ３１１に書き込まれる。そして、コントローラ３０１によって後述するパリティ（冗長コード）が演算される。
【００２１】
不揮発性メモリ３２０内には、ＲＡＩＤ設定データ３２１、論理セクタサイズデータ３２２、アドレス変換テーブル３２３等が格納されている。ＲＡＩＤ設定データ３２１には、ＲＡＩＤの種類を示す情報、ストライプサイズ等の設定が記述されている。論理セクタサイズデータ３２２には、３台のハードディスクドライブ１９Ａ〜１９Ｃによって構成される論理ドライブの最小アクセス単位である論理セクタサイズが記述されている。アドレス変換テーブル３２３には、コンピュータ１０からみたディスクアレイ（ディスク装置）２上のデータアドレス（データブロックアドレス）、つまり論理アドレス（論理ブロックアドレス）を、ディスクアレイ２における物理的なデータ（データブロック）の位置を示すアドレスが記述されている。なお、コンピュータ１０からみた論理ブロックアドレスは論理セクタサイズに基づいて決定される。また、コンピュータ１０によって実行されるファイルシステムは、ファイルシステムからの最小アクセス単位であるクラスタサイズを論理セクタサイズの正整数倍に設定する。
【００２２】
図３は、ディスク０からディスクＮ−１までのＮ台で構築したＲＡＩＤ５の論理ドライブにおける、一般的なデータ及びパリティの配置例である。各ディスクは、ストライプと呼ばれる単位に分割され管理される。例えばストライプ０内には、それをData 0,0、Data 0,1、…、Data 0,N-2、Parity 0が格納される。特に、ユーザデータが格納されるストライプをデータストライプと呼び、パリティが格納されるストライプをパリティストライプと呼ぶ。
【００２３】
Ｎ−１台の各ディスクの１ストライプから、１つのパリティストライプを作成するかたまりを、ストライプグループ（ＳＧ）と定義する。例えば、ＳＧ(0)は、データストライプであるData 0,0、Data 0,1、…、Data 0,N-2と、パリティストライプであるParity 0で構成される。そして、パリティストライプを除いたストライプグループのデータ容量ＳSGは、ＳDS×（Ｎ−１）となる。ここで、ＳDSはデータストライプおよびパリティストライプのサイズ、つまりストライプサイズである。
【００２４】
また、パリティがディスクN-1に存在する場合、Parity mは、以下の式で生成されるデータストライプの冗長データである。
【００２５】
Parity m = (Data m,0) XOR (Data m,1) XOR … XOR (Data m,N-2)
ここで XOR は排他的論理和を示す。
【００２６】
例えばデータ Data m,0 を new Data m,0 に更新する場合、同時に対応するパリティParity mも更新する必要がある。新たな new Parity mを生成する式は以下の通りである。
【００２７】
(new Parity m)＝(new Data m,0) XOR (Data m,1) XOR … XOR (Data m,N-2)
または
(new Parity m)＝(Data m,0) XOR (new Data m,0) XOR (Parity m)
new Parity mを生成するためには、既存のデータData m,1からData m,N-2、もしくはData m,0、Parity mをドライブから読み込む必要があり、ＲＡＩＤ５の書き込み速度に大きな悪影響を与えている。
【００２８】
そこで、本ＲＡＩＤコントローラカード１８では、ＲＡＩＤ５の論理ドライブのセクタサイズを、ストライプグループのデータ容量のｎ倍(ｎは正整数)にする。セクタサイズをストライプグループのデータ容量のｎ倍にすることによって、常に各ストライプグループのすべてのデータストライプを更新することになり、既存のデータを読み込む必要が無いため、書き込み性能を向上させることができる。
【００２９】
図４は、ＲＡＩＤコントローラで、３台のドライブ（ＨＤＤ１９Ａ〜１９Ｃ）を使用したＲＡＩＤ５の論理ドライブを構築した例である。Drive 0がＨＤＤ１９Ａに対応し、Drive 1がＨＤＤ１９Ｂに対応し、Drive 2がＨＤＤ１９Ｃに対応する。
【００３０】
なお、説明を簡単にするために、ストライプサイズを５１２バイト(Drive 0〜2の１セクタサイズ)にする。そして、論理ドライブのセクタサイズをストライプグループ容量の正整数倍にしている。なお、ストライプグループ容量とは、１ストライプグループ中にパリティ以外のデータを格納することができるサイズのことである。図４に示す例では、４つのストライプグループ（ＳＧ０〜ＳＧ３やＳＧ４〜ＳＧ７等）を論理ドライブのセクタサイズとしている。従って、論理ドライブのセクタサイズは、５１２バイト×(３−１)×４＝４ＫＢ（１ＫＢ＝１０２４バイト）となる。
【００３１】
ファイルシステムが論理ドライブのセクタサイズを取得すると、ファイルシステムから論理ドライブへのアクセスは、４ＫＢ単位でおこわなわれる。そのため、書き込み処理において、常に４つのストライプグループに属するすべてのデータストライプを更新することになるため、パリティを生成するための読み込みを省略することができ、書き込み性能を向上させることができる。
【００３２】
ところで、論理ドライブのインタフェースがＳＣＳＩ（Small Computer System Interface）の場合、コントローラ３０１は、オペレーティングシステム（ファイルシステム）から送信されたReadCapacityコマンドを受信することで、論理ドライブの個体情報をオペレーティングシステム（ファイルシステム）に返す。個体情報には、論理ドライブのセクタサイズを含むセクタ情報、最大アドレス値等のデータの書き込み及び読み出しに必要な情報が記述されている。
【００３３】
なお、論理ドライブのインタフェースがＡＴＡ（Advanced Technology Attachment）の場合、コントローラ３０１は、IDENTIFY DEVICEコマンドを受信することで論理ドライブの個体情報をオペレーティングシステム（ファイルシステム）に返す。
【００３４】
図５は、図４に示す３台のドライブによって論理ドライブを構築した場合の、オペレーティングシステムによって設定される論理ブロックアドレス(LBA)である。一般的には、一般的なハードディスクドライブのセクタサイズと同じ５１２バイトのセクタサイズごとに論理ブロックアドレスが割り振られる。本実施形態では、４ＫＢごとに論理ブロックアドレスが割り振られる。そのため、２ＴＢを超える容量であっても３２ビットのアドレス幅で対応可能となる。
【００３５】
次に、論理セクタサイズの設定、およびクラスタサイズの設定を行うための構成を図６のブロック図を参照して説明する。
【００３６】
コントローラ３０１は、パリティストライプ数検出モジュール４０１、ストライプグループ容量算出モジュール４０２、論理セクタサイズ作成モジュール４０３、変換テーブル設定モジュール４０４、および送信モジュール４０５等を有する。
【００３７】
パリティストライプ数検出モジュール４０１は、不揮発性メモリ３２０に格納されているＲＡＩＤ設定データ３２１に基づいて、ＲＡＩＤにおいて１ストライプグループの内でパリティストライプの数、則ち１ストライプグループの内でパリティが格納されるドライブ台数を検出する。パリティストライプ数検出モジュール４０１は、ＲＡＩＤ設定データに記述されているＲＡＩＤの種類に基づいてデータストライプの数を検出する。例えば、ＲＡＩＤの種類がＲＡＩＤ−５であれば、パリティストライプの数は１である。また、ＲＡＩＤの種類がＲＡＩＤ−６であれば、パリティストライプの数は２である。
【００３８】
ストライプグループ容量算出モジュール４０２は、パリティストライプ数検出モジュール４０１によって検出されたパリティストライプ数と、ＲＡＩＤ設定データ３２１に記述されている全ドライブ数およびストライプサイズに基づいて、一つのストライプグループ内に格納可能なデータ容量を演算する。ここでのデータとはパリティを除いている。
【００３９】
ストライプグループ容量ＳSGは、次式によって求められる。
【００４０】
ＳSG＝ＳDS×（ｋ−ｍ）
ここで、ＳDSはストライプサイズ、ｋは論理ドライブを構成する全ドライブ数、ｍは１ストライプグループ中のパリティが格納されるドライブ数である。
【００４１】
論理セクタサイズ作成モジュール４０３は、ストライプグループ容量算出モジュール４０２によって算出されたストライプ容量に基づいて、論理ドライブの論理セクタサイズを設定する。
【００４２】
セクタサイズＳSは、次式によって求められる。
【００４３】
ＳS＝ＳSG×ｎ＝ＳDS×（ｋ−ｍ）×ｎ
ｋ−ｍは、１ストライプグループ中のデータストライプの数である。従って、１ストライプグループ中のデータが分散して記録されるドライブの台数、言い換えると１ストライプグループ中のパリティが格納されないドライブの台数をＲＡＩＤ設定データに記述しておき、記述された台数に基づいてセクタサイズを求めても良い。
【００４４】
論理セクタサイズ作成モジュール４０３は、設定された論理セクタサイズを論理セクタサイズデータ３２２に記録する。
【００４５】
変換テーブル設定モジュール４０４は、論理セクタサイズ作成モジュール４０３によって設定された論理セクタサイズに基づいて、アドレス変換テーブルを作成する。変換テーブル設定モジュール４０４は、作成したアドレス変換テーブルをアドレス変換テーブル３２３に格納する。アドレス変換テーブルは、論理セクタサイズに基づいた論理ブロックアドレスを、物理ドライブの物理ブロックアドレスに変換するために用いられる。
【００４６】
送信モジュール４０５は、オペレーティングシステム（ファイルシステム）４１０から論理ドライブの個体情報の送信を命じるコマンドが送信された場合に、論理セクタサイズデータ３２２に記述された論理セクタサイズを含む個体情報をオペレーティングシステム（ファイルシステム）４１０に送信する。
【００４７】
オペレーティングシステム（ファイルシステム）４１０は、クラスタサイズを個体情報に含まれる論理セクタサイズの正整数倍に設定する。
【００４８】
次に、図７のフローチャートを参照して、論理セクタサイズの設定およびクラスタサイズの設定を行う手順を説明する。
【００４９】
コントローラ３０１は、論理ドライブのセクタサイズを設定する（ステップ５０１）。オペレーティングシステム（ファイルシステム）４１０は、コントローラ３０１に論理ドライブの個体情報を要求する（ステップ５０２）。コントローラ３０１は、要求に応じて論理セクタサイズを含む論理ドライブの個体情報をオペレーティングシステム（ファイルシステム）４１０に送信する（ステップ５０３）。オペレーティングシステム（ファイルシステム）４１０は、受信した個体情報に含まれる論理セクタサイズに基づいてクラスタサイズを設定する。
【００５０】
以上の処理で、論理ドライブのセクタサイズをストライプグループ容量の正整数倍に設定することができる。また、クラスタサイズを論理ドライブのセクタサイズの正整数倍に設定することができる。クラスタサイズを論理ドライブのセクタサイズの正整数倍に設定することで、オペレーティングシステム（ファイルシステム）からライトアクセスする際、１ストライプグループの全データストライプを全て更新することになるので、既存のデータを読み込む必要が無いため、書き込み性能を向上させることができる。
【００５１】
また、論理ドライブのセクタサイズをストライプグループ容量の正整数倍に設定することで、どのようなファイルシステムでも、アクセス単位(クラスタサイズ)は、セクタサイズ(ディスクの最小アクセス単位)の正整数倍になるため、複数のファイルシステムの共存を気にする必要がなくなる。
【００５２】
なお、指定したい論理ドライブのセクタサイズが、ストライプグループの容量の正整数倍にならない場合、余分な物理ドライブのセクタを未使用にすることでストライプグループの容量の正整数倍にすることが可能である。この場合、容量効率は落ちるが、書き込み性能を向上させることができる。
【００５３】
なお、本実施形態では、論理ドライブのセクタサイズをストライプグループ容量の４倍に設定していたが、論理ドライブのセクタサイズをストライプグループ容量１倍、２倍、３倍、５倍、６倍等の正整数倍に設定しても良い。また、本実施形態では、クラスタサイズを論理ドライブのセクタサイズの１倍に設定したが、クラスタサイズを論理ドライブのセクタサイズの２倍、３倍、４倍等の正整数倍に設定しても良い。
【００５４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５５】
１８…ＲＡＩＤコントローラカード、１９Ａ，１９Ｂ，１９Ｃ…ハードディスク、３０１…コントローラ、３１１…キャッシュメモリ、３２０…不揮発性メモリ、３２１…ＲＡＩＤ設定データ、３２２…論理セクタサイズデータ、３２３…アドレス変換テーブル、４０１…パリティストライプ数検出モジュール、４０２…ストライプグループ容量算出モジュール、４０３…論理セクタサイズ作成モジュール、４０４…変換テーブル設定モジュール、４０５…送信モジュール、４１０…オペレーティングシステム。
【図１】
2012053571.tif 000003
【図２】
2012053571.tif 000004
【図３】
2012053571.tif 000005
【図４】
2012053571.tif 000006
【図５】
2012053571.tif 000007
【図６】
2012053571.tif 000008
【図７】
2012053571.tif 000009