(57)【特許請求の範囲】
【請求項１】
パーティション管理デバイスに適用されるデータ処理方法であって、前記パーティション管理デバイスは、パーティションビューを記憶し、前記パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録し、確定パーティションは、前記カレントパーティションのサブパーティションであるとともに、前記カレントパーティションの分割により取得され、前記方法は、
キーバリューデータ内のキーを取得して、前記キーに従って、前記キーバリューデータに対応する前記確定パーティションのIDを計算するステップであって、前記キーバリューデータは、バリューおよび前記バリューに一意に対応している前記キーを含む、ステップと、
前記確定パーティションの前記IDに対応する前記カレントパーティションの前記IDを計算するステップであって、前記カレントパーティションの前記IDは、複数の確定パーティションのIDに対応している、ステップと、
前記カレントパーティションの前記IDに対応する前記ストレージディスクの前記アドレスを取得するために、前記パーティションビューを検索するステップと、
前記ストレージディスクの前記アドレスを宛先アドレスとして使用することによってキーバリューパケットを生成して、前記キーバリューパケットを前記ストレージディスクに送信するステップであって、前記キーバリューパケットは、前記キーバリューデータを搬送する、ステップとを含む、データ処理方法。
【請求項２】
前記パーティション管理デバイスは、確定パーティションの総数Lをさらに記録し、前記キーに従って、前記キーバリューデータに対応する前記確定パーティションのIDを計算するステップは、
前記キーのハッシュ値を取得するために前記キーに対してハッシュ演算を行い、確定パーティションの前記総数Lに従って、モジュロ演算を前記ハッシュ値に対して行うステップであって、剰余は、前記確定パーティションの前記IDとして使用される、ステップを特に含む、請求項1に記載のデータ処理方法。
【請求項３】
前記パーティション管理デバイスは、カレントパーティションの総数Tをさらに記録し、前記確定パーティションの前記IDに対応する前記カレントパーティションの前記IDを計算するステップは、
カレントパーティションの前記総数Tに従って、モジュロ演算を前記確定パーティションの前記IDに対して行うステップであって、剰余は、前記カレントパーティションの前記IDとして使用され、前記確定パーティションの前記IDは、0以上の整数である、ステップを特に含む、請求項1または2に記載のデータ処理方法。
【請求項４】
前記データ処理方法は、特にデータ書き込み方法であり、前記キーバリューデータ内のキーを取得するステップの前に、前記方法は、
前記バリューを含むバリューセットを取得するために書き込み予定のデータを分割して、前記キーバリューデータを形成するために前記バリューの前記キーを生成するステップをさらに含む、請求項1に記載のデータ処理方法。
【請求項５】
データ処理装置であって、前記装置は、
パーティションビューを記憶するように構成される、記憶モジュールであって、前記パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録し、確定パーティションは、前記カレントパーティションのサブパーティションであるとともに、前記カレントパーティションの分割により取得される、記憶モジュールと、
キーバリューデータ内のキーを取得して、前記キーに従って、前記キーバリューデータに対応する前記確定パーティションのIDを計算するように構成される、確定パーティション計算モジュールであって、前記キーバリューデータは、バリューおよび前記バリューに一意に対応している前記キーを含む、確定パーティション計算モジュールと、
前記確定パーティションの前記IDに対応する前記カレントパーティションの前記IDを計算するように構成される、カレントパーティション計算モジュールであって、前記カレントパーティションの前記IDは、複数の確定パーティションのIDに対応している、カレントパーティション計算モジュールと、
前記カレントパーティションの前記IDに対応する前記ストレージディスクの前記アドレスを取得するために、前記記憶モジュールによって記憶されている前記パーティションビューを検索するように構成される、検索モジュールと、
前記ストレージディスクの前記アドレスを宛先アドレスとして使用することによってキーバリューパケットを生成して、前記キーバリューパケットを前記ストレージディスクに送信するように構成される、送信モジュールであって、前記キーバリューパケットは、前記キーバリューデータを搬送する、送信モジュールとを備える、データ処理装置。
【請求項６】
前記記憶モジュールは、確定パーティションの総数Lを記録するようにさらに構成され、前記確定パーティション計算モジュールは、
前記キーのハッシュ値を取得するために前記キーに対してハッシュ演算を行い、確定パーティションの前記総数Lに従って、モジュロ演算を前記ハッシュ値に対して行うように特に構成され、剰余は、前記確定パーティションの前記IDとして使用される、請求項5に記載のデータ処理装置。
【請求項７】
前記記憶モジュールは、カレントパーティションの総数Tを記録するようにさらに構成され、前記カレントパーティション計算モジュールは、
カレントパーティションの前記総数Tに従って、モジュロ演算を前記確定パーティションの前記IDに対して行うように特に構成され、剰余は、前記カレントパーティションの前記IDとして使用され、前記確定パーティションの前記IDは、0以上の整数である、請求項5または6に記載のデータ処理装置。
【請求項８】
前記データ処理装置は、
前記バリューを含むバリューセットを取得するために書き込み予定のデータを分割して、前記キーバリューデータを形成するために前記バリューの前記キーを生成するように構成される、キーバリューデータ生成モジュールをさらに備える、請求項5に記載のデータ処理装置。
【請求項９】
データ処理デバイスであって、前記データ処理デバイスは、
パーティションビューを記憶するように構成される、メモリであって、前記パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録し、確定パーティションは、前記カレントパーティションのサブパーティションであるとともに、前記カレントパーティションの分割により取得される、メモリと、
外部接続を提供するように構成される、インターフェースと、
コンピュータプログラムを記憶するように構成される、コンピュータ可読媒体と、
前記メモリ、前記インターフェース、および前記コンピュータ可読媒体に接続されるとともに、前記プログラムを動作することによって、
キーバリューデータ内のキーを取得して、前記キーに従って、前記キーバリューデータに対応する前記確定パーティションのIDを計算するステップであって、前記キーバリューデータは、バリューおよび前記バリューに一意に対応している前記キーを含む、ステップと、
前記確定パーティションの前記IDに対応する前記カレントパーティションの前記IDを計算するステップであって、前記カレントパーティションの前記IDは、複数の確定パーティションのIDに対応している、ステップと、
前記カレントパーティションの前記IDに対応する前記ストレージディスクの前記アドレスを取得するために、前記パーティションビューを検索するステップと、
前記ストレージディスクの前記アドレスを宛先アドレスとして使用することによってキーバリューパケットを生成して、前記キーバリューパケットを前記インターフェースを介して前記ストレージディスクに送信するステップであって、前記キーバリューパケットは、前記キーバリューデータを搬送する、ステップとを実行するように構成される、プロセッサとを備える、データ処理デバイス。
【請求項１０】
前記メモリは、確定パーティションの総数Lを記録するようにさらに構成され、前記キーに従って、前記キーバリューデータに対応する前記確定パーティションのIDを計算するステップは、
前記キーのハッシュ値を取得するために前記キーに対してハッシュ演算を行い、確定パーティションの前記総数Lに従って、モジュロ演算を前記ハッシュ値に対して行うステップであって、剰余は、前記確定パーティションの前記IDとして使用される、ステップを特に含む、請求項9に記載のデータ処理デバイス。
【請求項１１】
前記メモリは、カレントパーティションの総数Tを記録するようにさらに構成され、前記確定パーティションの前記IDに対応する前記カレントパーティションの前記IDを計算するステップは、
カレントパーティションの前記総数Tに従って、モジュロ演算を前記確定パーティションの前記IDに対して行うステップであって、剰余は、前記カレントパーティションの前記IDとして使用され、前記確定パーティションの前記IDは、0以上の整数である、ステップを特に含む、請求項9または10に記載のデータ処理デバイス。
【請求項１２】
前記キーバリューデータ内のキーを取得するステップの前に、前記プロセッサは、
前記バリューを含むバリューセットを取得するために書き込み予定のデータを分割して、前記キーバリューデータを形成するために前記バリューの前記キーを生成するステップを実行するようにさらに構成される、請求項9に記載のデータ処理デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、データ処理技術に関し、詳細には、データ処理方法および装置に関する。
【背景技術】
【０００２】
社会が発展するにつれて、量が増加し続けるデータは、記憶および管理する必要があり、さらにマッシブデータとも称される。超大規模データを従来の集中型ストレージを用いて管理する場合には、効率的な読み込み/書き込み処理を提供することがほとんどできなくなり、優れた拡張性および高い可用性を満たすことがほとんどできない。
【０００３】
こうした状況を背景に、各ストレージノードがストレージ領域を提供し得る、複数の物理ストレージノードからなるストレージシステムが出現している。本ストレージ方式を分散ストレージと称する。キーバリューストレージと称する分散ストレージ方式が存在する。キーバリューストレージにおいては、記憶されているデータ(または、データフラグメント)をバリュー(value)と称し、データの各部分は、ストレージシステム全体の範囲で一意な識別子を有し、本識別子がキー(key)である。キーとバリューとは、一対一の対応関係にある。
【０００４】
キーおよびキーに対応するバリューを、概して、キーバリュー、略して、K-Vと称する。各キーバリューは、ストレージシステムのストレージディスク上に記憶される。分散ハッシュテーブル(DHT)技術においては、特定のキーバリューに関して、キーバリューが記憶されているストレージディスクを、マッピングルールを使用して決定し得る。このマッピングルールは、ハッシュ(hash)演算をキーに対して行うことによって生成されるハッシュ(Hash)値に基づいている、ここで、各キーバリューが1つのストレージディスクに対応するように、各ハッシュ値は1つのパーティションに属し、パーティションはストレージディスクに対応する。本方法に基づいて、2つの異なるキーの計算後のハッシュ値が同一である場合には、2つのキーに対応するキーバリューは、同一のストレージディスク上に記憶される。パーティションとストレージディスクとの間の対応付けをパーティションビューと称する。
【０００５】
従来技術では、DHT技術を使用してキーに従って計算されたHash値は、例えば、[0, 2^32-1]の整数の範囲内に含まれる。システム初期化中には、各セグメントがサイズにおいて等しいまたはおおよそ等しい、セグメンテーションをこの大きな整数の範囲に対して行う。この場合には、1つのセグメントがパーティション(Partition)であり、パーティション内のハッシュ値の数量は基本的に同一である。ストレージディスククラスタ内のストレージディスクの数量が比較的小さい場合には、各ストレージディスクは、必要以上のパーティションを有し、パーティションビューが過度に複雑になることを引き起こし、その結果、パーティションビューに従ったデータパケット転送が非効率的になる。具体的な例は、以下の通りである。
【０００６】
最大25,000個のストレージディスクをサポートするクラスタが存在すると仮定すると、最大数量のストレージディスクのケースでは、各ストレージディスクは、おおよそ100個のパーティションを有する。すなわち、クラスタ全体は、総計2,500,000個のパーティションを有する。各パーティション内の情報が4ビットのストレージ領域を占有していると仮定する。これらのパーティション内の情報は総計10MBのストレージ領域を占有することになり、パーティションビュー内の情報は10MBより大きくなる。
【０００７】
パーティションビューを使用する場合には、大量のシステムリソースを占有することになる。
【発明の概要】
【課題を解決するための手段】
【０００８】
本発明は、キーバリューデータを処理する際のシステムリソースの占有を低減することができる、データ処理方法および装置を提供している。
【０００９】
第1の態様によれば、本発明は、パーティション管理デバイスに適用されるデータ処理方法を提供しており、パーティション管理デバイスは、パーティションビューを記憶し、パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録し、方法は、キーバリューデータ内のキーを取得して、キーに従って、キーバリューデータに対応する確定パーティションのIDを計算するステップであって、キーバリューデータは、バリューおよびバリューに一意に対応しているキーを含む、ステップと、確定パーティションのIDに対応するカレントパーティションのIDを計算するステップであって、各カレントパーティションのIDは、複数の確定パーティションのIDに対応している、ステップと、カレントパーティションのIDに対応するストレージディスクのアドレスを取得するために、パーティションビューを検索するステップと、ストレージディスクのアドレスを宛先アドレスとして使用することによってキーバリューパケットを生成して、キーバリューパケットをストレージディスクに送信するステップであって、キーバリューパケットは、キーバリューデータを搬送する、ステップとを含む。
【００１０】
第2の態様によれば、本発明は、データ処理装置を提供しており、装置は、パーティションビューを記憶するように構成される、記憶モジュールであって、パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録する、記憶モジュールと、キーバリューデータ内のキーを取得して、キーに従って、キーバリューデータに対応する確定パーティションのIDを計算するように構成される、確定パーティション計算モジュールであって、キーバリューデータは、バリューおよびバリューに一意に対応しているキーを含む、確定パーティション計算モジュールと、確定パーティションのIDに対応するカレントパーティションのIDを計算するように構成される、カレントパーティション計算モジュールであって、各カレントパーティションのIDは、複数の確定パーティションのIDに対応している、カレントパーティション計算モジュールと、カレントパーティションのIDに対応するストレージディスクのアドレスを取得するために、記憶モジュールによって記憶されているパーティションビューを検索するように構成される、検索モジュールと、ストレージディスクのアドレスを宛先アドレスとして使用することによってキーバリューパケットを生成して、キーバリューパケットをストレージディスクに送信するように構成される、送信モジュールであって、キーバリューパケットは、キーバリューデータを搬送する、送信モジュールとを備える。
【００１１】
第3の態様によれば、本発明は、データ処理デバイスを提供しており、データ処理デバイスは、パーティションビューを記憶するように構成される、メモリであって、パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録する、メモリと、外部インターフェースを提供するように構成される、インターフェースと、コンピュータプログラムを記憶するように構成される、コンピュータ可読媒体と、メモリ、インターフェース、およびコンピュータ可読媒体に接続されるとともに、プログラムを動作することによって、キーバリューデータ内のキーを取得して、キーに従って、キーバリューデータに対応する確定パーティションのIDを計算するステップであって、キーバリューデータは、バリューおよびバリューに一意に対応しているキーを含む、ステップと、確定パーティションのIDに対応するカレントパーティションのIDを計算するステップであって、各カレントパーティションのIDは、複数の確定パーティションのIDに対応している、ステップと、カレントパーティションのIDに対応するストレージディスクのアドレスを取得するために、パーティションビューを検索するステップと、ストレージディスクのアドレスを宛先アドレスとして使用することによってキーバリューパケットを生成して、キーバリューパケットをインターフェースを介してストレージディスクに送信するステップであって、キーバリューパケットは、キーバリューデータを搬送する、ステップとを実行するように構成される、プロセッサとを備える。
【００１２】
第4の態様によれば、本発明は、コントローラによって実行されるパーティション管理方法を提供しており、コントローラは、パーティション管理をクラスタ内のストレージディスクに対して行い、クラスタは、複数のストレージディスクを含み、方法は、N個の新規ストレージディスクがクラスタに追加されようとしていることを検出すると、クラスタ内のカレントストレージディスクの数量Mおよびクラスタ内の現在存在するパーティションの総数Tを獲得するステップであって、M、N、およびTは、すべての自然数である、ステップと、カレントパーティションの総数Tとストレージディスクの総数M+Nとの間の数学的関係が第1のプリセット条件を満たしているかどうかを決定するステップと、関係が第1のプリセット条件を満たす場合には、分割後に取得したパーティションの総数がSとなるように、少なくとも1つのカレントパーティションを分割して、分割後に取得したパーティションをM+N個のストレージディスクに割り振るステップであって、分割後に取得したパーティションの総数Sとストレージディスクの総数M+Nとの間の数学的関係は、第2のプリセット条件を満たし、分割後に取得したパーティションの総数は、クラスタがサポートする確定パーティションの総数Lより大きくなく、LおよびSの両方は、1より大きい自然数である、ステップとを含む。
【００１３】
第4の態様の第1の実施様態においては、パーティションビューを更新する処理がさらに実行される、ここで、パーティションビューは、カレントパーティションとIPディスクとの間の対応付けを記録する。
【００１４】
第5の態様によれば、本発明は、パーティション管理をクラスタ内のストレージディスクに対して行うように構成される、パーティション管理装置を提供しており、クラスタは、複数のストレージディスクを含み、装置は、N個の新規ストレージディスクがクラスタに追加されようとしていることを検出すると、クラスタ内のカレントストレージディスクの数量Mおよびクラスタ内の現在存在するパーティションの総数Tを獲得するように構成される、ストレージディスク検出モジュールであって、M、N、およびTは、すべての自然数である、ストレージディスク検出モジュールと、カレントパーティションの総数Tとストレージディスクの総数M+Nとの間の数学的関係が第1のプリセット条件を満たしているかどうかを決定するように構成される、第1のプリセット条件決定モジュールと、関係が第1のプリセット条件を満たす場合には、分割後に取得したパーティションの総数がSとなるように、少なくとも1つのカレントパーティションを分割し、分割後に取得したパーティションをM+N個のストレージディスクに割り振るように構成される、パーティション分割モジュールであって、分割後に取得したパーティションの総数Sとストレージディスクの総数M+Nとの間の数学的関係は、第2のプリセット条件を満たし、分割後に取得したパーティションの総数は、クラスタがサポートする確定パーティションの総数Lより大きくなく、LおよびSの両方は、1より大きい自然数である、パーティション分割モジュールとを備える。
【００１５】
第5の態様の第1の実施様態においては、パーティション分割モジュールは、パーティションビューを更新する処理を実行するようにさらに構成される、ここで、パーティションビューは、カレントパーティションとIPディスクとの間の対応付けを記録する。
【００１６】
第6の態様によれば、本発明は、クラスタに接続されるとともに、パーティション管理をクラスタ内のストレージディスクに対して行うように構成される、パーティション管理デバイスを提供しており、クラスタは、複数のストレージディスクを含み、パーティション管理デバイスは、パーティションビューを記憶するように構成される、メモリであって、パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録する、メモリと、外部インターフェースを提供するように構成される、インターフェースと、コンピュータプログラムを記憶するように構成される、コンピュータ可読媒体と、メモリ、インターフェース、およびコンピュータ可読媒体に接続されるとともに、プログラムを動作することによって、インターフェースを使用して、N個の新規ストレージディスクがクラスタに追加されようとしていることを検出すると、クラスタ内のカレントストレージディスクの数量Mおよびクラスタ内の現在存在するパーティションの総数Tを獲得するステップであって、M、N、およびTは、すべての自然数である、ステップと、カレントパーティションの総数Tとストレージディスクの総数M+Nとの間の数学的関係が第1のプリセット条件を満たしているかどうかを決定するステップと、関係が第1のプリセット条件を満たす場合には、分割後に取得したパーティションの総数がSとなるように、少なくとも1つのカレントパーティションを分割して、分割後に取得したパーティションをM+N個のストレージディスクに割り振るステップであって、分割後に取得したパーティションの総数Sとストレージディスクの総数M+Nとの間の数学的関係は、第2のプリセット条件を満たし、分割後に取得したパーティションの総数は、クラスタがサポートする確定パーティションの総数Lより大きくなく、LおよびSの両方は、1より大きい自然数である、ステップとを実行するように構成される、プロセッサとを備える。
【００１７】
第6の態様の第1の実施様態においては、プロセッサは、パーティションビューを更新する処理をさらに実行する、ここで、パーティションビューは、カレントパーティションとIPディスクとの間の対応付けを記録する。
【００１８】
本発明の解決手法を使用することによって、パーティション管理デバイスは、キーバリューデータ転送を行うためにカレントパーティションを使用してもよい。カレントパーティションの数量が確定パーティションのもの未満であるため、リソース消費は、 確定パーティションが転送を行うために使用される従来技術における解決手法と比較して低減される。
【図面の簡単な説明】
【００１９】
【図１】本発明による、ストレージシステムの実施形態のトポロジー図である。
【図２】本発明による、パーティション管理方法の実施形態のフローチャートである。
【図３】本発明による、コントローラの実施形態の構造図である。
【図４】本発明による、パーティション管理装置の実施形態の概略図である。
【図５】本発明による、データ処理方法の実施形態のフローチャートである。
【図６】本発明による、データ処理デバイスの実施形態の構造図である。
【図７】本発明による、データ処理装置の実施形態の概略図である。
【発明を実施するための形態】
【００２０】
本発明の実施形態における添付の図面を参照して本発明の実施形態における技術的解決手法を以下に明確に説明する。説明した実施形態が本発明の実施形態のすべてではなく一部にすぎないことは明らかであろう。本発明の実施形態に基づいて得られる他の実施形態のすべては、本発明の保護範囲に含まれるものとする。
【００２１】
図1に示したように、図1は、本発明の実施形態による、ストレージシステムのトポロジー図である。アプリケーションサーバ11は、管理サーバクラスタ12に接続されており、管理サーバクラスタ12は、スイッチクラスタ13に接続されており、スイッチクラスタ13は、IPディスククラスタ14に接続されており、コントローラ15は、管理サーバクラスタ12およびIPディスククラスタ14に接続されている。管理サーバクラスタ12は、少なくとも1つの管理サーバ121からなり、IPディスククラスタ14は、少なくとも1つのIPディスク141からなる。
【００２２】
アプリケーションサーバ11は、データ読み込みコマンドまたはデータ書き込みコマンドを送信する。管理サーバ121は、例えば、分散オブジェクトプール(distributed object pool、DOP)であり、オブジェクトのインターフェースをアプリケーションサーバ11に提供している、ここで、オブジェクトは、非常に大きくてもよく、例えば、基本単位がGBであってもよい。
【００２３】
オブジェクトが過度に大きい場合には、管理サーバ121は、オブジェクトを小さなセグメントに分割し得る。例えば、管理サーバ121は、オブジェクトを各々1MBのサイズを有するセグメントに分割し得る、ここで、各セグメントはバリューであり、各バリューはキーと呼ばれるタグを有する。管理サーバ121は、ハッシュ演算をキーに対して行い、計算後のハッシュ値とパーティションとのマッチングを行い得る。加えて、管理サーバ121は、パーティションビューをさらに記憶し得る、ここで、パーティションビューは、特にカレントパーティションのIDとIPディスクとの間の対応付けであり得る、IPディスクとパーティションとの間の対応付けを記録する。したがって、管理サーバ121は、各キーバリューに対応するIPディスクを探し出し得る。探し出されるIPディスクは、ターゲットディスクと称され、管理サーバ121は、ターゲットIPディスクのアドレスを宛先アドレスとして使用することによってIPパケットを生成して、IPパケットをスイッチクラスタ13に送信し得る。例えば、パーティションビューに記録されているコンテンツを表1に示す、ここで、iは自然数であり、mは1より大きい自然数である。
【００２４】
【表１】
0006288596.tif 000002
【００２５】
スイッチクラスタ13は、少なくとも1つのスイッチからなり、データ読み込みまたはデータ書き込み中に管理サーバ121とIPディスク141との間でデータを交換するために使用される。パーティションビューを検索する処理はまた、スイッチクラスタ13内のスイッチに委ねられ、スイッチクラスタ13内のスイッチによって実行されてもよい、すなわち、スイッチクラスタ13内のスイッチは、パーティションビューを記憶する。本シナリオにおいて、データをスイッチクラスタ13に送信する場合には、管理サーバ121は、IPパケットを使用せずに、キーバリューパケットと称し得る新規タイプのパケットを使用してもよい。キーバリューパケットとIPパケットとの間の違いは、キーバリューパケットの宛先アドレスが、キーを使用して、計算により取得したパーティション番号であり、パケットタイプフィールドが、IPパケットとキーバリューパケットとを区別するために使用される点だけであり、キーバリューパケットの他の部分は、IPパケットのそれと同一である。スイッチは、パーティション番号とIPディスクのアドレスとの間のマッピングテーブルを検索する、ここで、マッピングテーブルは、スイッチによって記憶され、宛先アドレスをパーティションに対応するIPディスクのアドレスに置換し、キーバリューパケットをIPパケットに変換するためにパケットタイプを修正し、その後、IPパケットを記憶するために対応するIPディスクに転送する。
【００２６】
管理サーバ121においては、パーティションとIPディスクとの間の対応付けを記録する方式は、パーティション番号(パーティションIDとも称される)とIPディスクのアドレスとの間の対応付けを記録することであり得る。理解を容易にするために、対応付けの別の表現方法をすれば、パーティションは、IPディスクに属しており、さらに別の表現方法をすれば、IPディスクは、パーティションを所有している。
【００２７】
パーティションは論理的な概念であり、パーティションはストレージ領域を所有しておらず、実際にデータを記憶しているのはIPディスクである。ただし、各パーティションは、対応するIPディスクを有し、データストレージプロセス間に、パーティションに対応するIPディスクが、実際のストレージを行うために、パーティションビューを検索することによって学習され得る。ユーザの視点からは、データは、パーティションに記憶されているように見える、したがって、ときには、我々は、パーティション内にデータを記憶することとして、パーティションに対応するIPディスク内のデータを記憶するプロセスを指すこともある。
【００２８】
コントローラ15は、パーティションの総数を計算し、IPディスクに関する情報を獲得し、IPディスクとパーティションとの間の対応付けを確立し、各管理サーバにある対応付けを適宜更新するように構成される。対応付けは、パーティションビューとも称される。
【００２９】
従来技術では、パーティションの総数が一定であるため、IPディスクの数量が増大するにつれて、各IPディスクに対応するパーティションは低減する。したがって、IPディスクの数量が比較的小さい場合には、各IPディスクは、必要以上のパーティションに対応することになる。例えば、背景技術における例では、25,000個のストレージディスクが存在する場合には、各ストレージディスクが100個のパーティションを有しており適切である、しかしながら、75個のストレージディスクが存在するケースでは、各ストレージディスクが33,333個のパーティションを有しており、このことは少なくとも以下の問題を生じ得るため、不適切である。
【００３０】
(1) パーティションビューが、25,000個のストレージディスクが存在するケースにおける対応付けの数量と近似する、75×33,333=2,499,975個の対応付けを有するため、パーティションビューが、過度に複雑になる。パーティションビューを使用してIPパケットを転送する場合には、管理サーバは、パーティションビュー内の対応付けを読み出す必要がある。IPディスクの数量が小さい場合には、そのような大量の対応付けを読み出す必要があり、その結果、低転送効率となる。加えて、パーティションビューを周知する場合には、コントローラは、パーティションビューを各管理サーバに周知する必要があり、このことは、比較的大きな帯域幅を占有することになる。したがって、管理サーバの必要以上の処理リソースおよびストレージシステムの必要以上の帯域幅リソースを占有している。
【００３１】
(2) データ信頼性を向上させるために、各パーティションは、別のIPディスク上にデュプリケートパーティションを有している、ここで、パーティションおよびそのデュプリケートパーティションは、異なるIPディスクに位置しているが、同一のデータを記憶している。本ケースを複数のデュプリケートと称する。パーティションBおよびパーティションCは、パーティションAのデュプリケートパーティションであると仮定する。パーティションAが位置しているIPディスク上にパケットが記憶されていると、パケットは、パーティションBが位置しているIPディスク上およびパーティションCが位置しているIPディスク上に、同時に、記憶されている。
【００３２】
複数のデュプリケートのシナリオにおいて、障害がIPディスク上で発生していると仮定する。障害のあるストレージディスク内のデータは、データ信頼性を保証するために、デュプリケートを使用することによってリカバリされる必要がある。具体的には、障害のあるIPディスクがパーティションのうちのデュプリケートパーティションに関して検索され、デュプリケートパーティション内のデータがコピーされる、コピーされたデータは障害が生じていないIPディスク上に記憶されている。各IPディスク内に必要以上のパーティションが存在する場合には、これらのパーティションのデュプリケートパーティションの数量も非常に大きくなり、これらのデュプリケートパーティションが大量の他のIPディスクにあることになり得る。結果として、1つのIPディスクに障害があると、大量の他のIPディスクもデータリカバリに巻き込まれることになり、データリカバリの間、データリカバリに巻き込まれたこれらすべてのIPディスクのパフォーマンスに影響を及ぼす。
【００３３】
(3) 複数のデュプリケートのシナリオにおいて、各IPディスクが必要以上の数量のパーティションを有する場合には、1つのIPディスクに対して、IPディスクのパーティションのデュプリケートが大量のIPディスクに散在することになる。デュプリケートを記憶しているIPディスクの数量が比較的大きいため、障害が複数のIPディスクで同時に発生する確率が増大し、それによって、データ信頼性を低下させてしまう。
【００３４】
(4) 本発明の本実施形態は、親パーティションおよび確定パーティションの概念を導入している、ここで、確定パーティションの総数は一定である、このことは、従来技術におけるパーティショニングに類似している。親パーティションは、複数のサブパーティションに分割され得るし、サブパーティションを新規サブパーティションに分割し得る場合には、サブパーティションは、次の段階のサブパーティションの親パーティションである。クラスタ内のIPディスクの数量が増大すると、分割プロセスは、確定パーティションが分割により取得されるまで、継続し得る。この場合には、クラスタ全体が所有するパーティションの数量は、確定パーティションの総数に達する。
【００３５】
従来技術では、ユーザにより見えるパーティションの数量とストレージシステム内部で管理されるパーティションの数量とが同一であることに留意されたい。どれほど多くのIPディスククラスタを所有していたとしてもパーティションの数量は一定であり、同時に、本発明の本実施形態では、ユーザに見えているものは、常に確定パーティションの数量である。ただし、親パーティションが確定パーティションに分割される前は、ストレージシステムは、親パーティションを使用して管理されている。すなわち、パーティションビューおよびパケット転送の両方は、親パーティションを使用して処理される。本発明の実施形態においては、特に断りのない限り、パーティションは、ストレージシステムによって管理されるパーティションを指す。
【００３６】
クラスタ内に比較的少量のIPディスクが存在する場合には、適切な数量の親パーティションが各IPディスクに割り振られ、各IPディスクのマージしたパーティションの数量は、管理者によって指定またはシステムによって自動的に設定されてもよく、確定パーティションの数量によって制限されない。例えば、クラスタが75個のIPディスクを所有している場合には、各IPディスクは、100個の親パーティションに対応しており、75×100=7,500個のみの対応付けが、パーティションビュー内に存在することになる。クラスタが150個のIPディスクを所有しており、各親パーティションが2個のサブパーティションに分割されている場合には、各IPディスクは、100個のパーティションにいまだに対応しており、各パーティションが1つのデュプリケートを所有していると仮定すると、障害がIPディスク上で発生した場合には、影響を受ける他のIPディスクの数量は100以内に限定されることになるであろう。すなわち、本発明は、各IPディスクが所有するパーティションの数量が制御可能となるように、パーティションの数量のカスタマイズを実装し得る。本発明の本実施形態において提供した方法に基づいて、コントローラがパーティションビューを管理サーバクラスタ内の各管理サーバに送信する場合には、より小さい帯域幅が占有されることになる。加えて、対応付けのエントリの数量が低減された後は、管理サーバは、キー(key)に対応するストレージディスクのアドレスのクエリを行うことがより速くなる。
【００３７】
アプリケーションサーバ11がデータを読み込むまたはデータを書き込む必要がある場合には、データは、順に管理サーバ121およびスイッチクラスタ13を通ってIPディスクに到達する。
【００３８】
IPディスクは、記憶媒体として磁気ディスクまたはフラッシュメモリを使用し、ソフトウェア内にキーバリューインターフェースを提供し、ハードウェア内にイーサネット(登録商標)インターフェースを提供し、イーサネット(登録商標)インターフェースを介して受信したイーサネット(登録商標)フレームを展開してIPパケットを取得し得る。IPディスクは、例えば、シーゲート・テクノロジーのKinetic製品である。
【００３９】
本発明の本実施形態においては、キーバリューデータを記憶するためのメモリは、ストレージディスクと総称される。IPディスクに加えて、別の実施様態においては、ストレージディスクはまた、キーバリューインターフェースをサポートする別のストレージデバイスを使用し、ハードウェア内に非イーサネット(登録商標)インターフェースを使用してもよい。ストレージディスクによって使用される記憶媒体は、ハードディスクまたはフラッシュメモリであってもよい。
【００４０】
図2は、本発明の実施形態によるパーティション管理方法を導入し、IPディスククラスタ内のIPディスクの数量が大きくなった場合に新たに追加されたIPディスクの要件を満たすようにパーティションの数量を増大する方法を説明している。本方法は、コントローラによって実行され、方法は、以下のステップを含む。
【００４１】
ステップ21: クラスタがサポートするIPディスクの最大数量に従って、自然数である確定パーティションの数量Lを決定し、初期IPディスクの数量に従って、各IPディスクが所有する初期パーティションの数量を決定する。本ステップは、コントローラが初期化される際に実行される前置ステップであり、随意的なものである。加えて、各初期パーティションは、1つのストレージディスクに対応しており、本対応付けは、パーティションビューを使用することによって記録される。
【００４２】
本ステップが実行された後に、コントローラは、初期IPディスクの数量をカレントIPディスクの数量Mとして記録し、各IPディスクが所有する初期パーティションの数量をカレントパーティションの数量Pとして記録する、ここで、クラスタ内の現在存在するパーティションの総数Tは、T=M・Pである。コントローラは、確定パーティションの数量Lをさらに記録する。その後に、クラスタ内のIPディスクの数量が変化または各IPディスクのパーティションの数量が変化した場合には、カレントIPディスクの数量Mおよびカレントパーティションの数量Pが更新される。本発明の実施形態においては、記号「・」は、積を表す。
【００４３】
確定パーティションの数量は一定であり、確定パーティションは、分割することはできず、ユーザが知覚することができる。初期パーティションは、一般的に親パーティションであり、親パーティションは、分割により次の段階の親パーティションまたは確定パーティションを生成するために分割され得るパーティションである。親パーティションは、ストレージシステムによって使用され、ユーザは、親パーティションの存在を知覚することはできない。本発明の本実施形態においては、カレントパーティションは、現時点において管理サーバによって使用されるパーティションを指し、コントローラによって管理サーバに周知される。パーティションの分割が実行された場合には、カレントパーティションは、パーティション分割後に取得したパーティションである。カレントパーティションは、親パーティションであり得るし、または、確定パーティションを含み得る。
【００４４】
Lの値は、ユーザによって設定され得るし、または、システムによって自動的に割り振られ得るし、IPディスクの最大数量およびIPディスクの数量が最大である場合の各IPディスクのパーティションの数量の両方によって一般的に決定される、すなわち、L=IPディスクの最大数量×各IPディスクのパーティションの数量である。X個のパーティションを所有することが各IPディスクにとって望ましい値であると仮定する。例えば、各IPディスクが100個のパーティションを所有すること、すなわち、X=100が比較的適切な値であるとユーザが考えたとすると、IPディスククラスタがサポートすることができるIPディスクの最大数量は10,000であり、その結果、L=10,000×100=1,000,000となる。
【００４５】
同様に、初期パーティションの数量は、ユーザによって設定され得るし、または、システムによって自動的に割り振られ得る。1つの随意的な方式は、初期状況において、IPディスクの数量MがM=75であり、100個のパーティションが各IPディスクに割り振られていると仮定すると、その結果、初期パーティションの総数=75×100=7,500である。本発明の方法を使用することによって、初期段階では、ストレージシステム内の各IPディスクが所有するパーティションの数量を自由に設定してもよい、ここで、パーティションの数量は、ユーザの要求を満たすとともにパーティションがストレージリソース、計算リソース、および帯域幅リソースなどの必要以上のリソースを占有しない値に設定され得る。
【００４６】
各初期パーティションは、確定パーティションに対応している。各初期パーティションはIDを有し、IDの番号は0以上の整数である。各確定パーティションはIDを有し、番号は0以上の整数である。初期パーティションに対応する確定パーティションを取得するための方法は、確定パーティションのIDを使用して、モジュロ演算を初期パーティションの総数に対して行うことであり、剰余のバリューは、確定パーティションに対応する初期パーティションのIDを示す。この場合には、初期パーティションは、カレントパーティションである。
【００４７】
ステップ22: N個の新規IPディスクがIPディスククラスタに追加されようとしていることを検出すると、クラスタ内のカレントストレージディスクの数量Mおよびクラスタ内の現在存在するパーティションの総数Tを獲得する、ここで、M、N、およびTは、すべての自然数である。
【００４８】
コントローラは、IPディスククラスタに接続されており、したがって、クラスタに追加されようとしている新規IPディスクをコントローラによって検出することができる。現時点、既にM個のIPディスクが存在しており、カレントパーティションの総数は、M・Pである。N個のIPディスクは、物理的にクラスタに接続されており、コントローラによって検出され得るが、パーティションがIPディスクに割り振られていないためデータを記憶することはできない。
【００４９】
「カレント」は本ステップが実行されようとしている時点を指すことに留意されたい。本実施形態においては、コントローラが初期化された後にIPディスクは追加されない、したがって、カレントIPディスクの数量はMである。別の実施形態においては、本ステップが実行される前にIPディスククラスタ内のIPディスクの数量が変化した場合には、カレントIPディスクの数量はMではない。本ステップが実行される前にパーティションが分割されていた場合には、各IPディスクによって現時点所有されている初期パーティションの数量はPより大きい。T個のパーティションが、M個のIPディスクにおおよそ均等に割り振られている。
【００５０】
ステップ23: カレントパーティションの数量がカレントIPディスクおよび新たに追加されたIPディスクの共通の要件を満たしているかどうかを決定し、すなわち、カレントパーティションの総数Tとストレージディスクの総数M+Nとの間の数学的関係が第1のプリセット条件を満たしているかどうかを決定する。具体的には、決定は、式M・P/(M+N)と第1の閾値とを比較する方式で行われ得る、ここで、第1の閾値は、自然数であり、第1の閾値は、コントローラによってプリセットされていてもよい。コントローラが初期化された後の第1回目に本ステップが実行される場合には、T=M・Pである。必要に応じて、前述の第1の閾値は、16、17、18、または19などの10より大きく20未満の整数であり得る。
【００５１】
1つの決定方法は、T/(M+N)が第1の閾値未満である場合には、第1のプリセット条件を満たしており、分割を行う必要がある。各IPディスクが所有するパーティションの数量が分割閾値未満である(または、分割閾値以下に設定され得る)場合には、分割を実行しなければ、各IPディスクが所有するパーティションの数量が過度に小さくなる、したがって、分割によりパーティションの総数を増大する必要があり、その結果、ステップ24が実行される。各IPディスクが所有するパーティションの数量が分割閾値未満ではない場合には、ステップ25が実行される。
【００５２】
別の決定方法は、各IPディスクが所有するパーティションの平均数量が、1回目のパーティション分割後、閾値より大きい(または、閾値以上に設定され得る)場合には、分割を行えば、各IPディスクが所有するパーティションの数量が過度に大きくなることを示しており、その結果、ステップ25が実行される。各IPディスクが所有するパーティションの平均数量が閾値より大きくない場合には、ステップ24が実行される。加えて、2つの決定方法はまた、決定を行うように組み合わされてもよく、サービスに対して最も高い満足度を有する解決手法が選択される。以下の実施形態のすべては、第1の決定方法を例として使用することによって、本発明を説明している。
【００５３】
ステップ24: 分割後に取得したパーティションの数量が要件を満たすまで、1回分割または複数回分割され得る少なくとも1つのカレントパーティションを分割する、その後、ステップ26を実行する。分割後に取得したパーティションの数量が要件を満たすということは、分割後に取得したパーティションの総数Sとストレージディスクの総数M+Nとの間の数学的関係が第2のプリセット条件を満たし、分割後に取得したパーティションの総数が確定パーティションの総数Lより大きくないということであり得る。複数回分割するということは、分割により生成したパーティションに対して複数回の分割を行うことを指す。
【００５４】
分割後に取得したパーティションの総数Sとストレージディスクの総数M+Nとの間の数学的関係が第2のプリセット条件を満たすということは、特に、S/(M+N)が第2の閾値以上であり、第2の閾値が自然数であるということであり得る。第2の閾値は、例えば、25、26、27、48、または49などの25より大きく50未満の自然数であり得る。
【００５５】
分割後に取得したパーティションの数量が要件を満たしているかどうかを決定するための様々な方式が存在し得る。例えば、分割後に取得したパーティションの総数Sとストレージディスクの総数M+Nとの間の数学的関係が第2のプリセット条件を満たす場合には、分割は終了する。具体的には、例えば、分割後の各IPディスクが所有するパーティションの平均数量が第2の閾値以上である場合には、第2のプリセット条件を満たしているとみなされ、分割は終了する。あるいは、分割後の各IPディスクが所有するパーティションの平均数量がプリセット閾値範囲を満たす場合には、要件を満たしているとみなす。
【００５６】
各回の分割において各パーティションを複数のサブパーティションに分割する場合には、各パーティションを同一の数量のサブパーティションに分割する。第1回目の分割から分割の終了までのパーティションの数量を変化させる倍率を分割係数と称する。各親パーティションを各回の分割において2つのサブパーティションに分割すると仮定する。その結果、1回目の分割後に分割が終了した場合には、分割係数は2であり、2回目の分割後に分割が終了した場合には、分割係数は22である。
【００５７】
少なくとも1つのカレントパーティションを分割することがすべてのカレントパーティションを分割することを指す場合には、分割後に取得したパーティションの総数S=T×分割係数である。少なくとも1つのカレントパーティションを分割することが一部のカレントパーティションを分割することを指す場合には、分割後に取得したパーティションの総数S<T×分割係数である。前者の分割方式における分割速度がより高く、後者の分割方式においては、分割後に取得したパーティションの総数の調整機能がより優れている。説明の便宜上、本発明の本実施形態を後者の分割方式を使用して説明する。
【００５８】
後者の分割方法の例を以下に示す。確定パーティションの総数が1,000であり、カレントパーティションの総数が512であり、分割係数が2であると仮定すれば、各パーティションを分割すると、確定パーティションの総数を超過した、1,024個のパーティションが分割後に取得されることになる。カレントパーティションの総数が確定パーティションの総数より大きいことは認められない。このようなケースを避けるために、488個のカレントパーティションだけを分割し得る、つまり、488+512=1,000となる、すなわち、分割後に取得したカレントパーティションの総数は、1,000にちょうど達し、確定パーティションの総数より大きくならない。加えて、1,000個のカレントパーティションは過度に大きな数量であるとユーザが考えたとすると、例えば、分割後に取得したカレントパーティションの総数が800に達することが最も適切であるとユーザが考えたとすると、分割後に取得したカレントパーティションの総数が800にちょうど達するように、512個のカレントパーティションの288個のパーティションを分割係数2に従って分割し得る。後者の分割方法を使用して、1個のパーティションだけを毎回分割することであってもよく、分割係数が2である場合には、分割前後のカレントパーティションの総数の差は1であり、したがって、パーティションを分割するための粒度は最小である。
【００５９】
加えて、前述の実施形態に基づいて、分割係数を変更してもよい。例えば、第1回目の分割中は、2が分割係数として使用されるが、第2回目の分割中は、分割係数が5に変更される。このことは、分割後に取得したパーティションの総数の値をより調整可能にする目的を達成することもできる。
【００６０】
カレントパーティションと確定パーティションとの間に対応付けが存在しており、本対応付けは、コントローラに記憶され得るし、コントローラによって各管理サーバに周知され得る。各カレントパーティションはIDを有し、カレントパーティションのIDは0以上の整数であり得る。総計T個のカレントパーティションが存在しており、T個のカレントパーティションのIDは、初項が0であり、公差が1であり、項数がTである、等差数列を形成する。各確定パーティションはIDを有し、確定パーティションのIDは0以上の整数であり得る。総計S個の確定パーティションが存在しており、S個の確定パーティションのIDは、初項が0であり、差が1であり、項数がSである、等差数列を形成する。例えば、12個のパーティションを24個のパーティションに分割する、ここで、分割前のパーティションのIDは、0、1、2、3、...、9、10、および11であり、分割後のパーティションのIDは、0、1、2、3、...、21、22、および23である。
【００６１】
パーティションを分割した後は、パーティションID生成ルールは、分割後に取得したパーティションにおいて、1つのパーティションがパーティションの元のIDを保持し、他のパーティションのIDの値およびパーティションの元のIDの値が等差数列を形成することであってもよい、ここで、数列の項は、分割前のパーティションの総数Mの公差で漸増する。例えば、分割前に総計200個のパーティションが存在しており、分割後には、各パーティションが3個のパーティションに分割され、IDが21であるパーティションの分割後に生成される3個のパーティションのIDは、順に221、421、および621である。全分割プロセスが終了した後に、カレントパーティションのIDが、初項が0であり、公差が1であり、漸増する、等差数列をさらに形成するならば、本ID生成ルールを変更してもよい。
【００６２】
例えば、別のパーティションID生成ルールによれば、IDが0であるパーティションを分割することによって取得した3個のパーティションのIDは、0、201、および202でさらにあり得るし、IDが1であるパーティションを分割することによって取得したパーティションのIDは、1、203、および204であり、IDが3であるパーティションを分割することによって取得したパーティションのIDは、3、205、および206であり、他のパーティションのIDも同様に取得することができる。
【００６３】
カレントパーティションの総数Tが確定パーティションの総数Lにまさに達しようとしている場合には、次のようなケースが生じ得る、すなわち、各パーティションを1回分割することによって生成されたパーティションの総数が確定パーティションの総数Lより大きい場合には、パーティションの総数が分割により増大され得るので、パーティションの総数が確定パーティションの総数Lを超過しないように、パーティションの一部のみが分割されるまたは分割係数が低減されることになり得ることに留意されたい。
【００６４】
ステップ25: M・P個のパーティションがM+N個のIPディスクに均等に分布するように、元のM個のIPディスクが所有するパーティションの一部を新たに追加されたN個のIPディスクに移行するべく、パーティション移行を行う。ステップ25が実行された後は、システム全体におけるパーティションの総数は変化しないので、各IPディスクが所有するパーティションの平均数量は低減する。ステップ24とステップ25とは二者択一的に実行される。パーティション管理方法のすべての実施形態においては、ステップ24が実行された後に、ステップ25またはステップ26は実行されない。
【００６５】
ステップ26: コントローラに記録されているカレントIPディスクの総数をM+Nに更新し、カレントパーティションの総数をSに更新する。本ステップを、ステップ24と同時に実行してもよい。各IPディスクのカレントパーティションの数量はおおよそS/(M+N)である、したがって、パーティションの総数Sを記録しなくてもよく、その代わりに、クラスタ内の各IPディスクのカレントパーティションの数量がおおよそS/(M+N)であることを記録する。
【００６６】
ステップ26は次回の分割のための準備であり、したがって、カレントパーティション管理処理にとって、ステップ26は必須のステップではない。
【００６７】
S個のカレントパーティションをM+N個のIPディスクに割り振っていることに留意されたい。パーティションビューを更新する処理がさらに実行されてもよい、ここで、パーティションビューは、カレントパーティションに対応するIPディスクを記録しており、特にカレントパーティションのIDとIPディスクのアドレスとの間の対応付けであり得る。パーティションビューを更新する処理をステップ24またはステップ26で実行してもよい。以下のデータ処理方法は、本ステップで更新されたパーティションビューを使用してもよい。実際には、カレントパーティションとIPディスクとの間の対応付けが正しく記録された後のみパーティションを使用することができるため、本発明の別の実施形態においては、カレントパーティションに対する変化が引き起こされた場合には、パーティションビューを更新する処理が実行される必要がある。
【００６８】
前述のパーティション管理方法が図3に示したハードウェアを使用して実行されてもよい。図3においては、コントローラ3は、インターフェース31、プロセッサ32、および記憶媒体33を備える。
【００６９】
インターフェース31は、例えば、ストレージディスククラスタおよび管理サーバと接続するために、外部インターフェースを提供するように構成される。記憶媒体33は、コンピュータプログラムコードを記憶するように構成される。プロセッサ32は、記憶媒体33内のプログラムコードを動作することによって前述のパーティション管理方法を実行する。
【００７０】
図4を参照すれば、本発明の実施形態は、パーティション管理装置4をさらに提供している、ここで、パーティション管理装置4は、ハードウェア、または、ソフトウェアによって形成された仮想ハードウェアであり得る。パーティション管理装置4は、前述のパーティション管理方法を実行し得る。パーティション管理装置4は、ストレージディスク検出モジュール41、第1のプリセット条件決定モジュール42、およびパーティション分割モジュール43を含む。必要に応じて、パーティション管理装置4は、初期化モジュール40をさらに備えていてもよい。必要に応じて、パーティション管理装置4は、更新モジュール44をさらに備えていてもよい。
【００７１】
初期化モジュール40は、クラスタ内のIPディスクの最大数量に従って、自然数である確定パーティションの数量Lを決定し、初期IPディスクの数量に従って、各IPディスクが所有する初期パーティションの数量を決定するように構成される。本ステップは、コントローラが初期化される際にのみ実行される前置ステップである、したがって、随意的なものである。
【００７２】
更新モジュール44は、初期IPディスクの数量をカレントIPディスクの数量Mとして記録し得るし、各IPディスクが所有する初期パーティションの数量をカレントパーティションの数量Pとして記録する、ここで、クラスタ内の現在存在するパーティションの総数Tは、T=M・Pである。更新モジュール44は、確定パーティションの数量Lをさらに記録する。その後に、クラスタ内のIPディスクの数量が変化または各IPディスクのパーティションの数量が変化した場合には、カレントIPディスクの数量Mおよびカレントパーティションの数量Pが更新される。本発明の実施形態においては、記号「・」は、積を表す。
【００７３】
確定パーティションの数量は一定であり、確定パーティションは、分割することはできず、ユーザが知覚することができる。初期パーティションは、一般的に親パーティションであり、親パーティションは、分割により次の段階の親パーティションまたは確定パーティションを生成するために分割され得るパーティションである。親パーティションは、ストレージシステムによって使用され、ユーザは、親パーティションの存在を知覚することはできない。
【００７４】
Lの値は、ユーザによって設定され得るし、または、システムによって自動的に割り振られ得るし、IPディスクの最大数量およびIPディスクの数量が最大である場合の各IPディスクの数量の両方によって一般的に決定される、すなわち、L=IPディスクの最大数量×各IPディスクのパーティションの数量である。X個のパーティションを所有することが各IPディスクにとって望ましい値であると仮定する。例えば、各IPディスクが100個のパーティションを所有すること、すなわち、X=100が比較的適切な値であるとユーザが考えたとすると、IPディスククラスタがサポートすることができるIPディスクの最大数量は10,000であり、その結果、L=10,000×100=1,000,000となる。
【００７５】
同様に、初期パーティションの数量は、ユーザによって設定され得るし、または、システムによって自動的に割り振られ得る。1つの随意的な方式は、初期状況において、IPディスクの数量MがM=75であり、100個のパーティションが各IPディスクに割り振られていると仮定すると、その結果、初期パーティションの総数=75×100=7,500である。本発明の方法を使用することによって、初期段階では、ストレージシステム内の各IPディスクが所有するパーティションの数量を自由に設定してもよい、ここで、パーティションの数量は、ユーザの要求を満たすとともにパーティションがストレージリソース、計算リソース、および帯域幅リソースなどの必要以上のリソースを占有しない値に設定され得る。
【００７６】
ストレージディスク検出モジュール41は、N個の新規ストレージディスクがクラスタに追加されようとしていることを検出すると、クラスタ内のカレントストレージディスクの数量Mおよびクラスタ内の現在存在するパーティションの総数Tを獲得するように構成される、ここで、M、N、およびTは、すべての自然数である。
【００７７】
パーティション管理装置4は、IPディスククラスタに接続されており、したがって、クラスタに新たに追加されたIPディスクをストレージディスク検出モジュール41によって検出することができる。現時点、既にM個のIPディスクが存在しており、カレントパーティションの総数は、M・Pである。N個のIPディスクは、物理的にクラスタに接続されており、ストレージディスク検出モジュール41によって検出され得るが、パーティションがIPディスクに割り振られていないためデータを記憶することはできない。
【００７８】
「カレント」は処理が実行されようとしている時点を指すことに留意されたい。本実施形態においては、パーティション管理装置4が初期化された後にIPディスクは追加されない、したがって、カレントIPディスクの数量はMである。別の実施形態においては、本ステップが実行される前にIPディスククラスタ内のIPディスクの数量が変化した場合には、カレントIPディスクの数量はMではない。本ステップが実行される前にパーティションが分割されていた場合には、各IPディスクによって現時点所有されている初期パーティションの数量はPより大きい。T個のパーティションが、M個のIPディスクにおおよそ均等に割り振られている。
【００７９】
第1のプリセット条件決定モジュール42は、カレントパーティションの総数Tとストレージディスクの総数M+Nとの間の数学的関係が第1のプリセット条件を満たしているかどうかを決定するように構成される。
【００８０】
カレントパーティションの数量がカレントIPディスクおよび新たに追加されたIPディスクの共通の要件を満たしているかどうかを決定する。すなわち、カレントパーティションの総数Tとストレージディスクの総数M+Nとの間の数学的関係が第1のプリセット条件を満たしているかどうかを決定する、ここで、決定は、式T/(M+N)と第1の閾値とを比較する方式で行われ得る。分割閾値は、コントローラによってプリセットされていてもよい。コントローラが初期化された後の第1回目に本処理が実行される場合には、T=M・Pである。第1の閾値は、16、17、18、19、または20などの10より大きく20未満の整数であり得る。
【００８１】
1つの決定方法は、T/(M+N)が第1の閾値未満である場合には、第1のプリセット条件を満たしており、分割を行う必要がある。各IPディスクが所有するパーティションの数量が分割閾値未満である(または、分割閾値以下に設定され得る)場合には、分割を実行しなければ、各IPディスクが所有するパーティションの数量が過度に小さくなることを示しており、その結果、少なくとも1つのカレントパーティションを分割する必要がある。各IPディスクが所有するパーティションの数量が分割閾値未満ではない場合には、パーティション移行を行う必要がある。
【００８２】
別の決定方法は、各IPディスクが所有するパーティションの平均数量が、1回目のパーティション分割後、閾値より大きい(または、閾値以上に設定され得る)場合には、分割を行えば、各IPディスクが所有するパーティションの数量が過度に大きくなることを示しており、その結果、パーティション移行を行う必要がある。各IPディスクが所有するパーティションの平均数量が閾値より大きくない場合には、少なくとも1つのカレントパーティションを分割する必要がある。加えて、2つの決定方法はまた、決定を行うように組み合わされてもよく、サービスに対して最も高い満足度を有する解決手法が選択される。以下の実施形態のすべては、第1の決定方法を例として使用することによって、本発明を説明している。
【００８３】
パーティション分割モジュール43については、第1のプリセット条件決定モジュール42による決定の結果が、関係が第1のプリセット条件を満たしていることである場合には、パーティション分割モジュール43は、分割後に取得したパーティションの総数がSとなるように、少なくとも1つのカレントパーティションを分割し、分割後に取得したパーティションをM+N個のストレージディスクに割り振るように構成される。分割後に取得したパーティションの総数Sとストレージディスクの総数M+Nとの間の数学的関係は、第2のプリセット条件を満たし、分割後に取得したパーティションの総数は、クラスタがサポートする確定パーティションの総数Lより大きくなく、LおよびSの両方は、1より大きい自然数である。分割後に取得したパーティションは、M+N個のストレージディスクに均等に割り振られ得る、または、M+N個のストレージディスクにおおよそ均等に割り振られる。
【００８４】
分割後に取得したパーティションの数量が要件を満たすまで、少なくとも1つのカレントパーティションは、1回分割され得る、または、複数回分割され得る。分割後に取得したパーティションの総数Sとストレージディスクの総数M+Nとの間の数学的関係が第2のプリセット条件を満たすということは、特に、S/(M+N)が第2の閾値以上であり、第2の閾値が自然数であるということであり得る。第2の閾値は、例えば、47、48、49、または50などの25より大きく50未満の自然数であり得る。
【００８５】
分割後に取得したパーティションの数量が要件を満たしているかどうかを決定するための様々な方式が存在し得る。例えば、分割後に取得したパーティションの総数Sとストレージディスクの総数M+Nとの間の数学的関係が第2のプリセット条件を満たす場合には、分割は終了する。具体的には、例えば、分割後の各IPディスクが所有するパーティションの平均数量が第2の閾値以上である場合には、第2のプリセット条件を満たしているとみなされ、分割の継続は終了する。あるいは、分割後の各IPディスクが所有するパーティションの平均数量がプリセット閾値範囲を満たす場合には、要件を満たしているとみなす。
【００８６】
各回の分割において各パーティションを複数のサブパーティションに分割する場合には、各パーティションを同一の数量のサブパーティションに分割する。第1回目の分割から分割の終了までのパーティションにおける変化の倍率を分割係数と称する。各親パーティションを各回の分割において2つのサブパーティションに分割すると仮定する。その結果、1回目の分割後に分割が終了した場合には、分割係数は2であり、2回目の分割後に分割が終了した場合には、分割係数は22である。
【００８７】
少なくとも1つのカレントパーティションを分割することがすべてのカレントパーティションを分割することを指す場合には、分割後に取得したパーティションの総数S=T×分割係数である。少なくとも1つのカレントパーティションを分割することが一部のカレントパーティションを分割することを指す場合には、分割後に取得したパーティションの総数S<T×分割係数である。前者の分割方式における分割速度がより高く、後者の分割方式においては、分割後に取得したパーティションの総数の調整機能がより優れている。具体的な詳細については、パーティション管理方法の実施形態の説明を参照されたい。説明の便宜上、本発明の本実施形態を後者の分割方式を使用して説明する。
【００８８】
後者の分割方法の例を以下に示す。確定パーティションの総数が1,000であり、カレントパーティションの総数が512であり、分割係数が2であると仮定すれば、各パーティションを分割すると、確定パーティションの総数を超過した、1,024個のパーティションが分割後に取得されることになる。カレントパーティションの総数が確定パーティションの総数より大きいことは認められない。このようなケースを避けるために、488個のカレントパーティションだけを分割し得る、つまり、488+512=1,000となる、すなわち、分割後に取得したカレントパーティションの総数は、1,000にちょうど達し、確定パーティションの総数の値より大きくならない。加えて、1,000個のカレントパーティションは過度に大きな数量であるとユーザが考えたとすると、例えば、分割後に取得したカレントパーティションの総数が800に達することが最も適切であるとユーザが考えたとすると、分割後に取得したカレントパーティションの総数が800にちょうど達するように、512個のカレントパーティションの288個のパーティションを分割係数2に従って分割し得る。後者の分割方法を使用して、1個のパーティションだけを毎回分割することであってもよく、分割係数が2である場合には、分割前後のカレントパーティションの総数の差は1であり、したがって、パーティションを分割するための粒度は最小である。
【００８９】
加えて、前述の実施形態に基づいて、分割係数を変更してもよい。例えば、第1回目の分割中は、2が分割係数として使用されるが、第2回目の分割中は、分割係数が5に変更される。このことは、分割後に取得したパーティションの総数の値をより調整可能にする目的を達成することもできる。カレントパーティションと確定パーティションとの間に対応付けが存在しており、本対応付けは、更新モジュール44によって記憶され得るし、更新モジュール44によってデータ処理装置にさらに周知され得る。各カレントパーティションはIDを有し、カレントパーティションのIDは0以上の整数であり得る。すべてのカレントパーティションのIDは、初項が0であり、公差が1であり、等差数列を形成する。各確定パーティションはIDを有し、確定パーティションのIDは0以上の整数であり得る。すべての確定パーティションのIDは、初項が0であり、差が1であり、等差数列を形成する。例えば、12個のパーティションを24個のパーティションに分割する、ここで、分割前のパーティションのIDは、0、1、2、3、...、9、10、および11であり、分割後のパーティションのIDは、0、1、2、3、...、21、22、および23である。
【００９０】
パーティションを分割した後は、パーティションID生成ルールは、分割後に取得したパーティションにおいて、1つのパーティションがパーティションの元のIDを保持し、他のパーティションのIDの値およびパーティションの元のIDの値が等差数列を形成することであってもよい、ここで、等差数列の項は、分割前のパーティションの総数Mの公差で漸増する。例えば、分割前に総計200個のパーティションが存在しており、分割後には、各パーティションが3個のパーティションに分割され、IDが21であるパーティションの分割後に生成される3個のパーティションのIDは、順に221、421、および621である。全分割プロセスが終了した後に、カレントパーティションのIDが、初項が0であり、公差が1であり、漸増する、等差数列をさらに形成するならば、本ID生成ルールを変更してもよい。
【００９１】
カレントパーティションの総数Tが確定パーティションの総数Lにまさに達しようとしている場合には、次のようなケースが生じ得る、すなわち、各パーティションを1回分割することによって生成されたパーティションの総数が確定パーティションの総数Lより大きい場合には、パーティションの総数が分割により増大され得るので、パーティションの総数が確定パーティションの総数Lを超過しないように、パーティションの一部のみが分割されるまたは分割係数が低減されることになり得ることに留意されたい。
【００９２】
更新モジュール44は、パーティション分割モジュール43の処理が実行された後に、パーティション管理装置4に記録されているカレントIPディスクの総数をM+Nに更新し、カレントパーティションの総数をSに更新するように構成される。各IPディスクのカレントパーティションの数量はおおよそS/(M+N)である、したがって、パーティションの総数Sを記録しなくてもよく、その代わりに、クラスタ内の各IPディスクのカレントパーティションの数量がおおよそS/(M+N)であることを記録する。
【００９３】
更新モジュール44によって行われる処理は、次回の分割のための準備であり、したがって、このパーティション管理処理にとって、更新モジュール44は、必須のモジュールではない。
【００９４】
必要に応じて、パーティション分割モジュール43または更新モジュール44は、パーティションビューを更新する処理をさらに実行してもよい、ここで、パーティションビューは、IPディスクがカレントパーティションに対応していること、例えば、カレントパーティションのパーティションIDとIPディスクの対応するIPディスクアドレスとの間の対応付けを記録する。すなわち、パーティションビューは、M+N個のIPディスクのうちのどのIPディスクに、S個のカレントパーティションのうちの各パーティションが対応しているかを記録する。以下のデータ処理装置は、更新後のパーティションビューを使用し得る。
【００９５】
必要に応じて、パーティション移行モジュール(図示せず)をさらに含んでいてもよい。パーティション分割が実行されなかった場合には、M・P個のパーティションがM+N個のIPディスクに均等に分布するように、パーティション移行モジュールが、M個の元のIPディスクが所有するパーティションの一部を新たに追加されたN個のIPディスクに移行するべく、パーティション移行を行うために使用され得る。
【００９６】
図5を参照すれば、本発明は、パーティション管理デバイスに適用されるデータ処理方法をさらに提供している。パーティション管理デバイスは、パーティションビューを記憶し、パーティションビューは、カレントパーティションのIDとストレージディスク(例えば、IPディスク)のアドレスとの間の対応付けを記録する。データ処理方法は、パーティション管理方法の後に実行され、パーティション管理方法に基づいている。しかしながら、2つの方法は、相対的に独立している。パーティション管理デバイスは、コントローラに接続されている。パーティション管理デバイスは、例えば、管理サーバまたはスイッチクラスタである。管理サーバを例として使用して以下に説明する。データ処理方法の実施形態を上述したパーティション管理方法において提供したパーティションビューに基づいて実行してもよい。パーティションビューは、コントローラによって生成され、記憶するためにパーティション管理デバイスクラスタ内のパーティション管理デバイスに送信される。
【００９７】
ステップ51: 書き込み予定のデータに従って、キーバリューデータを生成する。例えば、バリューを含むセットを取得するために書き込み予定のデータを分割し、キーバリューデータを形成するためにバリューのキーを生成する、ここで、キーバリューは、キーおよびキーに対応するバリューの組合せである。書き込み予定のデータの一部を複数のバリューに分割し得るため、それに対応して、複数のキーバリューを生成し得る。説明を簡潔にするために、特定のキーバリューのプロセスを以下のステップだけで説明する。
【００９８】
書き込み予定のデータ、例えば、ファイルまたはデータストリームはアプリケーションサーバからのものである。書き込み予定のデータのサイズ(Size)が比較的大きい場合には、ストレージを容易にするために、管理サーバは、データを分割し得る。例えば、管理サーバは、データを各々1MBの等しいサイズのデータセグメントに分割し得るし、各セグメントをバリューと称する。キーは、バリューを一意に識別するために使用される。したがって、異なるバリューのキーは異なる。例えば、「データファイル名+数詞」をバリューのキーとして使用してもよい。比較的小さなサイズのデータを必ずしも分割する必要はなく、データのキーを直接生成し、その後、キーバリューデータを形成する。いくつかの特別なシナリオにおいては、大きなサイズのデータを必ずしも分割する必要はなく、対応するキーバリューデータは、直接形成され、その後、記憶するためにIPディスクに送信される。
【００９９】
ステップ52: キーバリューデータ内のキーを取得し、キーに従って、キーバリューデータに対応する確定パーティションのIDを計算する。上述したように、キーバリューデータは、バリューおよびバリューに一意に対応しているキーを含む。
【０１００】
確定パーティションのIDを計算するための方法は、キーのハッシュ値を取得するためにキーに対してハッシュ演算を行い、確定パーティションの総数Lに従って、モジュロ演算をハッシュ値に対して行うことであり、剰余は、確定パーティションのIDとして使用され、Lは、2以上の自然数である。このように、確定パーティションの取得したIDは、デジタル数である。別の実施形態においては、等価変換は、デジタル数を別の符号、例えば、英語表記の番号にマッピングすることであり、英語表記の番号を確定パーティションのIDとして使用している。確定パーティションに加えて、初期パーティションおよびカレントパーティションはまた、英語表記の番号を使用することによって表されてもよい。キーに対応する確定パーティションを計算する場合には、または、カレントパーティションと確定パーティションとの間の対応付けを計算する場合には、英語表記の番号をデジタル数に再マッピングしてもよく、「モジュロ」法を使用した数値形式のパーティションIDのように、マッピングにより取得したデジタル数をカウントする。本アルゴリズムにおける、確定パーティションの概念については、パーティション管理方法の前述の実施形態における説明を参照されたい。
【０１０１】
ステップ53: 確定パーティションのIDに対応するカレントパーティションのIDを計算する、ここで、各カレントパーティションのIDは、複数の確定パーティションのIDに対応している。
【０１０２】
確定パーティションIDのカレントパーティションIDを計算するアルゴリズムは、カレントパーティションの総数Tに従って、モジュロ演算を確定パーティションのIDに対して行うことであり、剰余は、カレントパーティションのIDとして使用され、カレントパーティションの総数Tは、自然数である。同様に、カレントパーティションのIDは、デジタル数であり、等価変換は、カレントパーティションのIDとして、デジタル数を別の符号にマッピングすることである。カレントパーティションは、現時点においてIPディスククラスタが所有するパーティションを指し、各カレントパーティションは、1つのIPディスクに対応している。パーティション管理方法の前述の実施形態におけるカレントパーティションの説明を参照してもよい。確定パーティションは、カレントパーティションのサブパーティションである。
【０１０３】
このような事情にかんがみて、カレントパーティションのIDと複数の確定パーティションのIDとの間に対応付けが存在する。対応付けに関する詳細については、パーティション管理方法の実施形態を参照されたい。カレントパーティションと確定パーティションとの間に対応付けが存在しており、本対応付けは、コントローラに記憶され得るし、ステップ53を実行する際に読み込まれる、または、対応付けは、事前に記憶されていなくてもよいし、ステップ53を実行する際にはアルゴリズムにしたがった計算により取得される。各カレントパーティションはIDを有し、カレントパーティションのIDは0以上の整数であり得る。すべてのカレントパーティションのIDのセットは、初項が0であり、公差が1であり、等差数列を形成する。各確定パーティションはIDを有し、確定パーティションのIDは0以上の整数であり得る。すべての確定パーティションのIDのセットは、初項が0であり、差が1であり、等差数列を形成する。カレントパーティションに対応する確定パーティションを取得するための方法は、確定パーティションのIDを使用して、モジュロ演算をカレントパーティションの総数に対して行うことであり、剰余のバリューは、確定パーティションに対応するカレントパーティションのIDとして使用される。
【０１０４】
加えて、パーティションを分割した後は、ID生成ルールは、分割後に取得したパーティションにおいて、1つのパーティションがパーティションの元のIDを保持し、他のパーティションのIDの値およびパーティションの元のIDの値が等差数列を形成することであってもよい、ここで、数列の項は、分割前のパーティションの総数の公差で漸増する。例えば、分割前に総計200個のパーティションが存在しており、分割後には、各パーティションが3個のパーティションに分割され、IDが21であるパーティションの分割後に生成される3個のパーティションのIDは、順に221、421、および621である。全分割プロセスが終了した後に、カレントパーティションのIDが、初項が0であり、公差が1であり、漸増する、等差数列をさらに形成するならば、本ID生成ルールを変更してもよい。例えば、IDが0であるパーティションを別の分割方法に従って分割する。分割後に取得した3個のパーティションのIDは、0、201、および202でさらにあり得るし、IDが1であるパーティションを分割することによって取得したパーティションのIDは、1、203、および204であり、IDが3であるパーティションを分割することによって取得したパーティションのIDは、3、205、および206であり、他のパーティションのIDも同様に取得することができる。
【０１０５】
ステップ54: カレントパーティションのIDに対応するストレージディスクのアドレスを取得するために、パーティションビューを検索する。
【０１０６】
パーティション管理デバイスは、パーティションビューを記憶し、パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録する。ストレージディスクがIPディスクである場合には、ストレージディスクのアドレスは、IPアドレスであり得る。ストレージディスクが、例えば、ATMまたはIPXプロトコルといった、別のタイプのプロトコルに基づく場合には、ストレージディスクのアドレスは、ATMアドレスまたはIPXアドレスである。
【０１０７】
ステップ55: ストレージディスクのアドレスを宛先アドレスとして使用することによってキーバリューパケットを生成して、キーバリューパケットをストレージディスクに送信する、ここで、キーバリューパケットのペイロードは、キーバリューデータを搬送する。
【０１０８】
キーバリューパケットを受信した後に、ストレージディスクは、キーバリューデータを記憶する。
【０１０９】
図6に示したように、図6は、本発明による、データ処理デバイスの実施形態である。データ処理デバイスは、パーティションビューを記憶するように構成される、メモリ61であって、パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録する、メモリ61と、外部インターフェースを提供するように構成される、インターフェース62と、コンピュータプログラムを記憶するように構成される、コンピュータ可読媒体63と、メモリ61、インターフェース62、およびコンピュータ可読媒体63に接続されるとともに、プログラムを動作することによって前述のデータ処理方法を実行するように構成される、プロセッサ64とを備える。
データ処理方法は、例えば、キーバリューデータ内のキーを取得して、キーに従って、キーバリューデータに対応する確定パーティションのIDを計算するステップであって、キーバリューデータは、バリューおよびバリューに一意に対応しているキーを含む、ステップと、確定パーティションのIDに対応するカレントパーティションのIDを計算するステップであって、各カレントパーティションのIDは、複数の確定パーティションのIDに対応している、ステップと、カレントパーティションのIDに対応するストレージディスクのアドレスを取得するために、パーティションビューを検索するステップと、ストレージディスクのアドレスを宛先アドレスとして使用することによってキーバリューパケットを生成して、キーバリューパケットをストレージディスクに送信するステップであって、キーバリューパケットは、キーバリューデータを搬送する、ステップを含む。
【０１１０】
図7に示したように、図7は、本発明の実施形態による、データ処理装置7の添付の図面である。データ処理装置7は、記憶モジュール71、確定パーティション計算モジュール72、カレントパーティション計算モジュール73、検索モジュール74、および送信モジュール75を備える。必要に応じて、データ処理装置7は、キーバリューデータ生成モジュール76をさらに備えていてもよい。
【０１１１】
記憶モジュール71は、パーティションビューを記憶するように構成され、パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録する。記憶モジュール71によって使用される記憶媒体は、フラッシュメモリまたはハードディスクであり得る。
【０１１２】
記憶モジュール71のパーティションビューは、パーティション管理装置、例えば、図4内のパーティション管理装置4からのものである。記憶モジュール71は、パーティションビューを受信するために、パーティション管理装置4に接続され得る。
【０１１３】
確定パーティション計算モジュール72は、キーバリューデータ内のキーを取得し、キーに従って、キーバリューデータに対応する確定パーティションのIDを計算するように構成される、ここで、キーバリューデータは、バリューおよびバリューに一意に対応しているキーを含む。
【０１１４】
確定パーティションのIDを計算するために確定パーティション計算モジュール72によって使用される方法は、キーのハッシュ値を取得するためにキーに対してハッシュ演算を行い、確定パーティションの総数Lに従って、モジュロ演算をハッシュ値に対して行うことであり、剰余は、確定パーティションのIDとして使用され、Lは、2以上の自然数である。このように、確定パーティションの取得したIDは、デジタル数である。別の実施形態においては、等価変換は、デジタル数を別の符号、例えば、英語表記の番号にマッピングすることであり、英語表記の番号を確定パーティションのIDとして使用している。確定パーティションに加えて、初期パーティションおよびカレントパーティションはまた、英語表記の番号を使用することによって表されてもよい。キーに対応する確定パーティションを計算する場合には、または、カレントパーティションと確定パーティションとの間の対応付けを計算する場合には、英語表記の番号をデジタル数に再マッピングしてもよく、「モジュロ」法を使用した数値形式のパーティションIDのように、マッピングにより取得したデジタル数をカウントする。確定パーティションの概念については、パーティション管理方法の前述の実施形態における説明を参照されたい。
【０１１５】
カレントパーティション計算モジュール73は、確定パーティションのIDに対応するカレントパーティションのIDを計算するように構成され、各カレントパーティションのIDは、複数の確定パーティションのIDに対応している。
【０１１６】
確定パーティションのIDに対応するカレントパーティションのIDを計算するためにカレントパーティション計算モジュール73によって使用される方法は、カレントパーティションの総数Tに従って、モジュロ演算を確定パーティションのIDに対して行うことであり、剰余は、カレントパーティションのIDとして使用され、カレントパーティションの総数Tは、自然数である。同様に、カレントパーティションのIDは、デジタル数であり、等価変換は、カレントパーティションのIDとして、デジタル数を別の符号にマッピングすることである。カレントパーティションは、現時点におけるIPディスククラスタが所有するパーティションを指し、各カレントパーティションは、1つのIPディスクに対応している。パーティション管理方法の前述の実施形態におけるカレントパーティションの説明を参照してもよい。確定パーティションは、カレントパーティションのサブパーティションである。
【０１１７】
このような事情にかんがみて、カレントパーティションのIDと複数の確定パーティションのIDとの間に対応付けが存在する。対応付けに関する詳細については、パーティション管理装置の実施形態を参照されたい。対応付けを生成した後に、パーティション管理装置は、対応付けを各データ処理装置に周知する。カレントパーティションと確定パーティションとの間に対応付けが存在しており、本対応付けは、カレントパーティション計算モジュール73に記憶され得る、または、対応付けは、事前に記憶されていなくてもよいし、カレントパーティション計算モジュール73によって計算により取得されてもよい。各カレントパーティションはIDを有し、カレントパーティションのIDは0以上の整数であり得る。すべてのカレントパーティションのIDのセットは、初項が0であり、公差が1であり、漸増する等差数列を形成し得る。各確定パーティションはIDを有し、確定パーティションのIDは0以上の整数であり得る。すべての確定パーティションのIDのセットは、初項が0であり、差が1であり、漸増する等差数列を形成する。例えば、12個のパーティションを24個のパーティションに分割する、ここで、分割前のパーティションのIDは、0、1、2、3、...、9、10、および11であり、分割後のパーティションのIDは、0、1、2、3、...、21、22、および23である。
【０１１８】
加えて、パーティションを分割した後は、ID生成ルールは、分割後に取得したパーティションにおいて、1つのパーティションがパーティションの元のIDを保持し、他のパーティションのIDの値およびパーティションの元のIDの値が等差数列を形成することであってもよい、ここで、数列の項は、分割前のパーティションの総数の公差で漸増する。例えば、分割前に総計200個のパーティションが存在しており、分割後には、各パーティションが3個のパーティションに分割され、IDが21であるパーティションの分割後に生成される3個のパーティションのIDは、順に221、421、および621である。全分割プロセスが終了した後に、カレントパーティションのIDが、初項が0であり、公差が1であり、漸増する、等差数列をさらに形成するならば、本ID生成ルールを変更してもよい。例えば、IDが0であるパーティションを別の分割方法に従って分割する。分割後に取得した3個のパーティションのIDは、0、201、および202でさらにあり得るし、IDが1であるパーティションを分割することによって取得したパーティションのIDは、1、203、および204であり、IDが3であるパーティションを分割することによって取得したパーティションのIDは、3、205、および206であり、他のパーティションのIDも同様に取得することができる。
【０１１９】
検索モジュール74は、カレントパーティションのIDに対応するストレージディスクのアドレスを取得するために、記憶モジュールによって記憶されているパーティションビュー71を検索するように構成される。
【０１２０】
パーティションビューは、カレントパーティションのIDとストレージディスクのアドレスとの間の対応付けを記録する。ストレージディスクがIPディスクである場合には、ストレージディスクのアドレスは、IPアドレスであり得る。ストレージディスクが別のタイプのプロトコルに基づく場合には、例えば、ATMまたはIPXプロトコル、ストレージディスクのアドレスは、ATMアドレスまたはIPXアドレスである。
【０１２１】
ストレージディスクのアドレスを宛先アドレスとして使用することによってキーバリューパケットを生成して、キーバリューパケットをストレージディスクに送信するように構成される、送信モジュール75、ここで、キーバリューパケットは、キーバリューデータを搬送する。
【０１２２】
次に、キーバリューパケットの宛先デバイスとして、ストレージディスクは、スイッチクラスタを使用して、キーバリューパケットを受信し、その後、キーバリューデータを記憶するように構成される。
【０１２３】
キーバリューデータ生成モジュール76は、キーバリューデータを生成するように構成される、例えば、バリューを含むセットを取得するために書き込み予定のデータを分割し、キーバリューデータを形成するためにバリューのキーを生成する、ここで、キーバリューは、キーおよびキーに対応するバリューの組合せである。書き込み予定のデータの一部を複数のバリューに分割し得るため、それに対応して、複数のキーバリューを生成し得る。説明を簡潔にするために、本発明の本実施形態は、特定のキーバリューの処理方式のみを説明する。
【０１２４】
書き込み予定のデータ、例えば、ファイルまたはデータストリームはアプリケーションサーバからのものである。書き込み予定のデータのサイズ(Size)が比較的大きい場合には、ストレージを容易にするために、管理サーバは、データを分割し得る。例えば、管理サーバは、データを各々1MBの等しいサイズのデータセグメントに分割し得るし、各セグメントをバリューと称する。キーは、バリューを一意に識別するために使用される。したがって、異なるバリューのキーは異なる。例えば、「データファイル名+数詞」をバリューのキーとして使用してもよい。比較的小さなサイズのデータを必ずしも分割する必要はなく、データは、キーバリューデータを生成するために、バリューとして直接使用される。いくつかの特別なシナリオにおいては、大きなサイズのデータを必ずしも分割する必要はなく、キーバリューデータを生成するために、バリューとして直接使用される。
【０１２５】
データ処理デバイス7がキーバリューデータ生成モジュール76を備える場合には、確定パーティション計算モジュール72は、キーバリューデータ生成モジュール76に接続され得るし、データ処理デバイス7がキーバリューデータ生成モジュール76を備えていない場合には、確定パーティション計算モジュール72は、キーバリューデータを外部インターフェースを介してアプリケーションサーバから直接取得し得る。
【０１２６】
本発明の各態様または各態様の可能な実施様態がシステム、方法、またはコンピュータプログラム製品として特に実装され得ることを当業者は理解できよう。したがって、本発明の各態様または各態様の可能な実施様態は、本明細書では「回路」、「モジュール」、または「システム」と一様に称する、ハードウェアのみの実施形態、ソフトウェアのみの実施形態(ファームウェア、常駐ソフトウェアなどを含む)、またはソフトウェアとハードウェアとの組合せを用いた実施形態の形式を使用し得る。加えて、本発明の各態様または各態様の可能な実施様態は、コンピュータプログラム製品の形式をとっていてもよい、ここで、コンピュータプログラム製品は、コンピュータ可読媒体に記憶されているコンピュータ可読プログラムコードを指す。
【０１２７】
コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROMまたはフラッシュメモリ)、光ファイバ、およびコンパクトディスクリードオンリーメモリ(CD-ROM)などの、電子、磁気、光学、電磁気、赤外線、ならびに半導体システム、デバイス、または装置、または任意の適切なその組合せを含むが、それに限定されない。
【０１２８】
コンピュータ内のプロセッサは、プロセッサがフローチャート内の各ステップまたはステップの組合せで規定された機能および動作を実行することができるように、コンピュータ可読媒体に記憶されているコンピュータ可読プログラムコードを読み込み、装置は、ブロック図内の各ブロックまたはブロックの組合せで規定された機能および動作を実施するように生成される。
【符号の説明】
【０１２９】
11  アプリケーションサーバ
12  管理サーバクラスタ
13  スイッチクラスタ
14  IPディスククラスタ
15  コントローラ
121  管理サーバ
141  IPディスク
3  コントローラ
31  インターフェース
32  プロセッサ
33  記憶媒体
4  パーティション管理装置
40  初期化モジュール
41  ストレージディスク検出モジュール
42  第1のプリセット条件決定モジュール
43  パーティション分割モジュール
44  更新モジュール
6  データ処理装置
61  メモリ
62  インターフェース
63  コンピュータ可読媒体
64  プロセッサ
7  データ処理装置
71  記憶モジュール
72  確定パーティション計算モジュール
73  カレントパーティション計算モジュール
74  検索モジュール
75  送信モジュール
76  キーバリューデータ生成モジュール
【図１】
0006288596.tif 000003
【図２】
0006288596.tif 000004
【図３】
0006288596.tif 000005
【図４】
0006288596.tif 000006
【図５】
0006288596.tif 000007
【図６】
0006288596.tif 000008
【図７】
0006288596.tif 000009