(57)【要約】【課題】従来のデータのエンディアン依存部分を吸収する手段としては、計算機側のドライバ層にて解決するものがあったが、計算機側で変換処理を行うため、処理量に応じて、計算機処理のオーバヘッドが発生する。また、多くの計算機からデータを共有する場合には、プラットフォームごとにドライバの開発や設定など、管理性にも問題があった。【解決手段】上記課題を解決するために、ストレージ装置において、データのプラットフォーム固有のエンディアンに依存する部分を適切に変換し、ひとつのデータを複数の異なるサーバ間で透過的かつ効率的に共有する手段を提供する。【選択図】図１
2007128275.tif 000002
【特許請求の範囲】
【請求項１】
ストレージからのデータの読み込み方法であって、計算機からのデータ読み込み要求を受け付け、設定情報にもとづき、データの読み込み要求元ポートとデータの読み込み要求先LUのエンディアンの種類の違いを判定し、違いがある場合は、データのエンディアン依存部分を適切に変換し、その変換したデータを要求元ポートへ送付することを特徴とするエンディアン変換読み込み方法。
【請求項２】
ストレージへのデータの書き込み方法であって、計算機からのデータの書き込み要求を受け付け、設定情報にもとづき、データの書き込み要求元ポートとデータの書き込み要求先LUのエンディアンの種類の違いを判定し、違いがある場合は、データのエンディアン依存部分を適切に変換し、その変換したデータを要求先LUへ書き込むことを特徴とするエンディアン変換書き込み方法。
【請求項３】
ストレージからのデータの読み込み方法であって、計算機からのデータ読み込み要求を受け付け、設定情報にもとづき、データの読み込み要求元ポートとデータの読み込み要求先LUのエンディアンの種類の違いを判定し、適切なデータが格納されているLUよりデータを取得し、要求元ポートへ送付することを特徴とするエンディアン変換読み込み方法。
【請求項４】
ストレージへのデータの書き込み方法であって、計算機からのデータの書き込み要求を受け付け、設定情報にもとづき、要求先LUとそのペアとなるLUに対して、それぞれ、元のデータとそのデータのエンディアン依存部分を適切に変換したデータを書き込むことを特徴とするエンディアン変換書き込み方法。
【請求項５】
ストレージ内におけるデータの複製方法であって、複製元LUのデータを読み込み、そのデータのエンディアン依存部分を異なるエンディアン用のデータに変換し、複製先LUにデータを書き出すことを特徴とするストレージ内におけるデータのエンディアン変換複製方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのエンディアン変換に関する。
【背景技術】
【０００２】
従来のデータのエンディアン依存部分を吸収する手段としては、計算機側のドライバ層にて解決するものがある(特開平９−２１２４４４号公報)。
【０００３】
【特許文献１】特開平９−２１２４４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来技術の課題は、計算機側で変換処理を行うため、処理量に応じて、計算機処理のオーバヘッドが発生することである。また、多くの計算機からデータを共有する場合には、プラットフォームごとにドライバの開発や設定など、管理性にも問題がある。本発明の目的は、ストレージ装置において、データのプラットフォーム固有のエンディアンに依存する部分を適切に変換し、ひとつのデータを複数の異なるサーバ間で透過的に共有する手段を提供することである。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、アクセス要求元サーバとアクセス要求先データのエンディアンの違いを自動的に判断する手段、ストレージ側にてデータのエンディアン依存部分を自動的に変換する手段、異なるエンディアンごとのデータを複数領域に管理し、エンディアン変換処理無しに適切なデータをサーバが読み込めるための手段、データのエンディアン依存部分を変換したデータの複製を作成する手段を備える。
【０００６】
ストレージ側にてデータを変換するため、計算機側の処理能力を必要としない。また、エンディアンごとに複数のデータ領域を管理し、適切なエンディアンに対応したデータが格納されている領域からデータ読みこむことで、データ読み込み時の処理を高速化する。さらに、多くの計算機からデータを共有する場合にも、計算機側の設定は必要とせず、ストレージ側での一元的な設定・運用管理を実現する。
【０００７】
また、ストレージ筐体内においてLUの複製をする際、複製元LUのデータのエンディアン依存部分を変換したデータを複製先LUに格納することで、システム統合化における、異プラットフォーム間のデータの移行なども効率的に実現できる。
【発明の効果】
【０００８】
本発明により、データのプラットフォーム固有のエンディアンに依存する部分を意識すること無く、ひとつのデータを複数の異なるサーバ間で透過的かつ効率的に共有することが可能になる。
【発明を実施するための最良の形態】
【０００９】
本発明の実施の形態を、図面を用いて詳細に説明する。
【００１０】
図１はシステム構成図である。100,102,104はストレージに対してI/Oを要求するホストコンピュータである。101,103,105はストレージを含むネットワークと接続するホスト側のインターフェースであり、ホストバスアダプタ(HBA)やLANアダプタである。106はストレージシステムである。110はストレージ側のネットワークインターフェースであり、Storage Area Network(SAN)の場合はチャネルアダプタ、Network Attached Storage(NAS)の場合はLANアダプタとなる。107,108,109はコンピュータとファイバチャネル(FC)ケーブルなどで接続をするためのポートであり、チャネルアダプタに複数存在する。111はエンディアン変換プログラムでありチャネルアダプタのファームウェアとして実行される。112はエンディアン変換プログラムが参照する設定情報表である。111,112はチャネルアダプタのメモリ上にある。113はストレージシステムのコントローラである。114はエンディアン変換機能付き筐体内ミラープログラムである。115,116,117,118,119は実際にデータが格納されるLU（論理ボリューム）である。122は管理コンソールであり設定情報表を更新することができる。120,121はそれぞれストレージ側、管理コンソール側のコンソールI/F(インターフェース)である。
【００１１】
図２はエンディアン変換プログラム111の構成を示している。I/O要求受送信部201はホストコンピュータからのI/O要求をポート経由で受け付けたり、I/Oデータブロックの転送を行う部分である。エンディアン変換処理部203はI/O要求受送信部やディスクI/O処理部から受け取ったデータのエンディアン依存部分を変換処理する部分である。設定情報管理部205は、管理コンソール122からの要求を受け付け、設定管理情報表112の変更を行う部分である。ディスクI/O処理部204は実際にLUにデータI/Oの要求をする部分である。制御部202はI/O要求受送信部、エンディアン変換処理部、ディスクI/O処理部および設定情報管理部を制御する。206はLU115とLU116からなるLUペアを示している。
【００１２】
図３はエンディアン変換機能付き筐体内ミラープログラム114の構成を示している。エンディアン変換処理部302はディスクI/O処理部から受け取ったデータのエンディアン依存部分を変換処理する部分である。ディスクI/O処理部303はLUにデータI/Oの要求をする部分である。制御部301はエンディアン変換処理部、ディスクI/O処理部を制御する。
【００１３】
図４はエンディアン変換プログラムの動作概念図を示したものである。ビッグエンディアンのコンピュータ100から発行されたI/OデータはそのままLU115に書き込まれる。リトルエンディアンのコンピュータ102がそのデータの読み込みを要求すると、エンディアン変換プログラムがデータのエンディアン依存部分を自動変換し、コンピュータ102が適切に読み取れるデータとして渡す。
【００１４】
図５はLUペア機能を使用した場合のエンディアン変換プログラムの動作概念を示したものである。ビッグエンディアンのコンピュータ100から発行されたI/OデータはそのままLUペア206に含まれるビッグエンディアン用LU1にはそのまま書き込まれ、LUペアに含まれるリトルエンディアン用のLU2へエンディアン変換プログラム111にてデータのエンディアン依存部分が変換されたデータが書き込まれる。リトルエンディアンのコンピュータ102からデータの読み込み要求があった場合は、LUペアに含まれるリトルエンディアン用LU2にアクセスし、エンディアン変換処理を経ず、そのままデータを渡す。
【００１５】
図６はエンディアン変換機能付き筐体内ミラープログラムの動作概念図である。LU1からデータを読み込み、データのエンディアン依存部分をエンディアン変換機能付き筐体内ミラープログラム114にて変換したデータを複製先LU2へ書き込む。
【００１６】
図７は設定情報表の詳細を示してある。設定表１はポートとそのポートに接続されているコンピュータのプラットフォーム情報とエンディアン情報の対応情報が格納されている。設定表２はLUごとにレコードを持つ。ポート番号はLUがそのポートに接続されているコンピュータのエンディアンに元づいたデータを格納していることを示す。ペアLU番号はそのLUのペアとなるLU番号を示す。オプション１、オプション２、オプション３は、データをエンディアン変換する際に必要な情報を格納する。例えば、データベース用のデータをエンディアン変換するプログラムであれば、データブロックサイズやデータタイプ(ユーザデータ、ログデータ)などが格納される。
【００１７】
図８および図９は書き込み時のエンディアン変換処理のフローチャートを示したものである。ストレージに対する書き込み要求が発生した場合、I/O要求送受信部はポートを通してI/Oブロック要求を受信する(ステップ801)。設定情報管理部は設定表2から、I/O要求先LU番号に対応する行を参照し、ポート番号列の値がI/O要求元ポート番号と一致するか確認する(ステップ802)。一致している場合はステップ805へ一致していない場合はステップ804へ処理を進める(ステップ803)。設定情報管理部は設定表1から、異なるポート番号それぞれに対応するエンディアン情報を参照し、エンディアン変換が必要かどうかを判断する。エンディアン情報が一致しない場合は変換が必要と判断し、一致する場合は変換が必要と判断する(ステップ804)。設定情報管理部は設定表2から、I/O要求先LU番号に対応する行を参照し、ペアLU番号に値が入っているかを確認する(ステップ805)。ペアLU番号の値が存在しない場合はステップ901へ、存在する場合はステップ902へ処理を進める(ステップ806)。ステップ804でエンディアン変換処理が必要と判断されなかった場合はステップ903へ、必要と判断された場合はステップ905へ処理を進める(ステップ901)。データI/O処理部は、書き込み要求先LUに対して、そのままのデータを書き込む(ステップ903)。エンディアン変換処理部は、設定表2のオプション情報を参照し、書き込みI/Oデータのエンディアン変換を行う。たとえば、データベース用データのエンディアン変換を行うプログラムであれば、オプションデータとして、データブロックサイズやデータタイプ(ユーザデータ、ログデータ) などがあった場合、指定したデータブロックサイズ単位でデータベースタイプごとのデータ格納フォーマット(1バイト目から16バイト、32バイト目から8バイトなど)に従ってデータを変換する(ステップ905)。データI/O処理部は、書き込み要求先LUに対して、エンディアン変換されたデータを書き込む(ステップ906)。ステップ804でエンディアン変換処理が必要と判断されなかった場合はステップ904へ、必要と判断された場合はステップ909へ処理を進める(ステップ902)。データI/O処理部は、書き込み要求先LUに対して、そのままのデータを書き込む(ステップ904)。エンディアン変換処理部は、設定表2のオプション情報を参照し、書き込みI/Oデータの変換を行う(ステップ907)。データI/O処理部は、ペアLUに対して、エンディアン変換されたデータを書き込む(ステップ908)。データI/O処理部は、ペアLUに対して、そのままのデータを書き込む(ステップ909)。エンディアン変換処理部は、設定表2のオプション情報を参照し、書き込みI/Oデータのエンディアン変換を行う(ステップ910)。データI/O処理部は、書き込み要求先LUに対して、エンディアン変換されたデータを書き込む(ステップ911)。
【００１８】
図１０および図１１は読み込み時のエンディアン変換処理のフローチャートを示したものである。ストレージに対する読み込み要求が発生した場合、I/O要求受送信部はポートを通してI/Oブロック要求を受信する(ステップ1001)。設定情報管理部は設定表2から、I/O要求先LU番号に対応する行を参照し、ポート番号列の値がI/O要求元ポート番号と一致するか確認する(ステップ1002)。一致している場合はステップ1005へ一致していない場合はステップ1004へ処理を進める(ステップ1003)。設定情報管理部は設定表1から、異なるポート番号それぞれに対応するエンディアン情報を参照し、エンディアン変換が必要かどうかを判断する。エンディアン情報が一致しない場合は変換が必要と判断し、一致する場合は変換が必要と判断する(ステップ1004)。設定情報管理部は設定表2から、I/O要求先LU番号に対応する行を参照し、ペアLU番号に値が入っているかを確認する(ステップ1005)。ペアLU番号の値が存在しない場合はステップ1101へ、存在する場合はステップ1106へ処理を進める(ステップ1006)。データI/O処理部は、読み込み要求先LUからデータを読み込む(ステップ1101)。ステップ1004でエンディアン変換処理が必要と判断されなかった場合はステップ1103へ、必要と判断された場合はステップ1104へ処理を進める(ステップ1102)。I/O要求受送信部は、データを、要求のあったポートに対し送信する(ステップ1103)。エンディアン変換処理部は、設定表2のオプション情報を参照し、読み込みI/Oデータの変換を行う。たとえば、データベース用データのエンディアン変換を行うプログラムであれば、オプションデータとして、データブロックサイズやデータタイプ(ユーザデータ、ログデータ)などがあった場合、指定したデータブロックサイズ単位でデータベースタイプごとのデータ格納フォーマット(1バイト目から16バイト、32バイト目から8バイトなど)に従ってデータを変換する(ステップ1104)。I/O要求受送信部は、エンディアン変換されたデータを、要求のあったポートに対し送信する(ステップ1105)。ステップ1004でエンディアン変換処理が必要と判断されなかった場合はステップ1107へ、必要と判断された場合はステップ1108へ処理を進める(ステップ1106)。データI/O処理部は、読み込み要求先LUからデータを読み込む(ステップ1107)。データI/O処理部は、読み込み要求先LUに対応するペアLUからデータを読み込む(ステップ1108)。
【００１９】
図１２はエンディアン変換機能付き筐体内ミラープログラムのフローチャートを示したものである。管理コンソールから制御部に対しLUコピーの要求を出す。要求時に指定する情報としては、コピー元LU番号、コピー先LU番号、エンディアン変換実施の有無及びオプション情報である(ステップ1201)。ディスクI/O処理部はコピー元LUからデータを読み込む(ステップ1202)。ステップ1201でエンディアン変換処理を実施すると指定した場合はステップ1204へ、指定しなかった場合はステップ1205へ処理を進める(ステップ1203)。エンディアン変換処理部は読み込んだデータを変換する(ステップ1204)。ディスクI/O処理部はコピー先LUに対しデータを書き込む(ステップ1205)。すべてのデータをコピーして終了し、そうでない場合はステップ1202へ処理を進める(ステップ1206)。
【００２０】
実施例及びその効果としては以下が挙げられる。
・アプリケーションデータを複数の異なるプラットフォームのサーバ間で共有することができ、分散されたデータを集約することが容易となる。
・複数のエンディアンに対応したデータを複数領域に管理し、適切な領域からデータを読み込むことで、エンディアン変換処理のオーバヘッドを無くし、処理を高速化できる。
・複数の異なるプラットフォームのサーバ間でアプリケーションデータ共有が可能になることで、異プラットフォームのサーバ同士でのクラスタリングなどの実現可能性が見えてくる。それにより既存のサーバ資源を有効活用したシステム統合を推進することができる。
・エンディアン変換をしたデータ領域を複製することで、異なるプラットフォームへのデータ移行やバックアップ、遠隔地のディザスタリカバリへのデータ転送などを容易に実現することが可能となる。
【図面の簡単な説明】
【００２１】
【図１】システム構成図。
【図２】エンディアン変換プログラム構成図。
【図３】エンディアン変換機能付き筐体内ミラープログラム構成図。
【図４】エンディアン変換動作概念図。
【図５】エンディアン変換動作概念図(LUペア機能を使用した場合)。
【図６】エンディアン変換機能付き筐体内ミラープログラム動作概念図。
【図７】設定情報表。
【図８】書き込み時のエンディアン変換処理フローチャート図(1)。
【図９】書き込み時のエンディアン変換処理フローチャート図(2)。
【図１０】読み込み時のエンディアン変換処理フローチャート図(1)。
【図１１】読み込み時のエンディアン変換処理フローチャート図(2)。
【図１２】エンディアン変換機能付き筐体内ミラープログラムフローチャート図。
【符号の説明】
【００２２】
100,102,104…コンピュータ、101,103,105…ホスト側I/F、106…ストレージシステム、107,108,109…ポート、110…チャネルアダプタ、111…エンディアン変換プログラム、112…設定情報表、113…コントローラ、114…エンディアン変換機能付き筐体内ミラープログラム、115,116,117,118,119…LU、120,121…コンソールI/F、122…管理用コンソール、201…I/O要求受送信部、202…制御部、203…エンディアン変換処理部、204…ディスクI/O処理部、205…設定情報管理部、206…LUペア、301…制御部、302…エンディアン変換処理部、303…ディスクI/O処理部、401…ビッグエンディアンプラットフォームから書き込まれたI/Oデータブロック、402…LU1から読み込まれたI/Oデータブロック、403…エンディアン変換されたI/Oデータブロック、501…ビッグエンディアンプラットフォームから書き込まれたI/Oデータブロック、502…ビッグエンディアンプラットフォームから書き込まれたI/Oデータブロック、503…エンディアン変換されたI/Oデータブロック、504…LU2から読み込まれたI/Oデータブロック、601…複製元LU１から読み込まれたI/Oデータブロック、602…エンディアン変換されたI/Oデータブロック、603…複製元LU、604…複製先LUＬＵ。
【図１】
2007128275.tif 000003
【図２】
2007128275.tif 000004
【図３】
2007128275.tif 000005
【図４】
2007128275.tif 000006
【図５】
2007128275.tif 000007
【図６】
2007128275.tif 000008
【図７】
2007128275.tif 000009
【図８】
2007128275.tif 000010
【図９】
2007128275.tif 000011
【図１０】
2007128275.tif 000012
【図１１】
2007128275.tif 000013
【図１２】
2007128275.tif 000014