(57)【要約】【課題】  本発明が解決しようとする課題は、磁気記憶装置のごく一部のトラックしか使用しない場合、例えばNative Max Addressが小さい磁気記憶装置を大きい磁気記憶装置に保守交換する場合等に、定点浮上防止を実現することである。Native Max Addressが小さい磁気記憶装置を大きい磁気記憶装置で置き換える場合、その差が大きい場合には、大きい磁気記憶装置の外周の狭い部分しか使用しないため、定点浮上のリスクを負う。定点浮上は、ヘッドが一定のトラックに浮上し続けることにより、円板上の潤滑剤を風圧で押しのけて、ヘッドと円板が直接接触することにより、クラッシュの原因となる。【解決手段】  磁気記憶装置の一部のトラックのみ使用するために定点浮上となる場合に、全体の容量を実際に使用する容量で割った数より小さな整数の分だけLBAを飛ばして記憶させるLBA変換方法。【選択図】  図１
2012053963.tif 000002
【特許請求の範囲】
【請求項１】
磁気記憶装置の一部のトラックのみ使用するために定点浮上となる場合に、全体の容量を実際に使用する容量で割った数より小さな整数の分だけLBAを飛ばして記憶させるLBA変換方法。
【請求項２】
LBAを変換して飛ばして記憶させて空いたエリアを冗長化のために利用して、複数のセクタに同じデータを記憶させるLBA変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置の磁気記憶装置と磁気記憶装置を制御するコントローラに係り、磁気記憶装置の記録したデータの信頼性の確保に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特許文献1がある。この公報には、「１セクタ当たりのバイト数に制限されることなく、セクタ単位の記憶容量が異なる記憶装置間においてデータの転送ができるようにする。」と、セクタ単位の記憶容量が異なる記憶装置間のデータ転送方法が記載されている。また、特許文献2がある。この公報には、「二重化ディスク装置が異なる物理容量のディスク装置で構成されている場合、いかなるタイミングで電源断やコンピュータシステムの起動が行われても、再起動時にデータの整合性を保証できるとともに、正確にデータコピーが行われること。」と、二重化ディスクの一方を元のディスクより小さい容量へ置き換える方法が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2000-200153号公報
【特許文献２】特開2002-163154号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、磁気記憶装置のごく一部のトラックしか使用しない場合、例えばNative Max Addressが小さい磁気記憶装置を大きい磁気記憶装置に保守交換する場合等に、定点浮上防止を実現することである。Native Max Addressが小さい磁気記憶装置を大きい磁気記憶装置で置き換える場合、その差が大きい場合には、大きい磁気記憶装置の外周の狭い部分しか使用しないため、定点浮上のリスクを負う。定点浮上は、ヘッドが一定のトラックに浮上し続けることにより、円板上の潤滑剤を風圧で押しのけて、ヘッドと円板が直接接触することにより、クラッシュの原因となる。
【課題を解決するための手段】
【０００５】
Native Max Addressが大きい磁気記憶装置のNative Max Addressを、Native Max Addressが小さい磁気記憶装置のNative Max Addressで割って、その値を超えない整数値の間隔でデータを記録するように、Native Max Addressが大きい磁気記憶装置のLBAを変換する。
【発明の効果】
【０００６】
本発明はNative Max Addressが小さい磁気記憶装置を大きい磁気記憶装置で置き換える場合に、大きい磁気記憶装置のNative Max Addressを、小さい磁気記憶装置のNative Max Addressで割って、その値を超えない整数値の間隔でデータを記録するように大きい磁気記憶装置のLBAを変換することで、定点浮上を防止する。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施例1のLBA変換を実施しない場合と実施する場合を示す概念図の例である。
【図２】本発明の実施例1の全体構成を示すブロック図の例である。
【図３】上記実施例のライトコマンドが正常終了する場合の時系列図の例である。
【図４】上記実施例のリードコマンドが正常終了する場合の時系列図の例である。
【図５】上記実施例のライトコマンドがエラー終了する場合の時系列図の例である。
【図６】上記実施例のリードコマンドがエラー終了する場合の時系列図の例である。
【図７】上記実施例の処理フローを示すフローチャートの例である。
【図８】本発明の実施例2のLBA変換を実施する場合を示す概念図の例である。
【図９】本発明の実施例2のLBA変換を実施する場合を示す概念図の例である。
【図１０】上記実施例の処理フローを示すフローチャートの例である。
【図１１】本発明の実施例3の全体構成を示すブロック図の例である。
【発明を実施するための形態】
【０００８】
以下、実施例を図面を用いて説明する。
【０００９】
＜実施例１＞
本実施例では、LBA変換を行う装置200の例を説明する。
【００１０】
図1は本実施例の本発明を適用しない場合の円板上のLBAの物理位置と本発明による変換を適用する場合の円板上のLBAの物理位置の例である。同心円は円板上の各トラックを示す。変換しない場合の１つのLBAの物理位置110は変換する場合の１つのLBAの物理位置130に相当する。同様に、変換しない場合の1つのLBAの物理位置120は変換する場合の１つのLBAの物理位置140に相当する。同様に他のLBAの物理位置も一定間隔を空けて配置する。これによりアクセスする面積を広げて定点浮上を防止する。
【００１１】
図2は本実施例の演算処理装置の構成図の例である。ICH210に磁気記憶装置220を接続する。ライトコマンドまたはリードコマンドはICH210のデバイスドライバがアクセスLBAを変換する。
【００１２】
図3は本実施例のライトコマンドのLBA変換動作のコマンド正常終了時の時系列図の例である。図示する時系列図はホスト310、ICH210のドライバ320、磁気記憶装置220を示す。ステップ311はホストのライトコマンド発行を示す。ライトコマンドを受信したICHドライバ320はステップ321でLBA変換のためにコマンド内容を操作し、ステップ322で磁気記憶装置330に発行する。磁気記憶装置はステップ331でライトコマンドを実行し、ステップ332で正常終了する。ICHドライバ320が変換したコマンドが複数あればステップ323、324、325以降、同様に実行と終了を繰り返す。ICHドライバ320は最後のライトコマンド正常終了をステップ324で受信し、ステップ325で変換前のコマンドの完了としてホストに送信し、ステップ312でコマンド完了する。
【００１３】
図4は本実施例のリードコマンドのLBA変換動作のコマンド正常終了時の時系列図の例である。図示する時系列図はホスト310、ICH210のドライバ320、磁気記憶装置220を示す。ステップ411はホストのリードコマンド発行を示す。リードコマンドを受信したICHドライバ320はステップ421でLBA変換のためにコマンド内容を操作し、ステップ422で磁気記憶装置220に発行する。磁気記憶装置はステップ431でリードコマンドを実行し、ステップ432でICH210のドライバ320へリードデータを送信する。ICH210のドライバ320はステップ423でリードデータをメモリする。ICHドライバ320が変換したコマンドが複数あればステップ324、433、434以降、同様に実行と終了を繰り返す。変換後コマンドの2つ目以降はICH210のドライバ320は磁気記憶装置220から受信したリードデータをステップ425のように前の変換後コマンドでメモリしたリードデータにマージしてメモリする。ICHドライバ320は最後のリードコマンドをステップ427でマージしてメモリし、ステップ428で変換前のコマンドのリードデータとしてホストに送信し、ステップ412でコマンド完了する。
【００１４】
図5は本実施例のライトコマンドのLBA変換動作のコマンドエラー終了時の時系列図の例である。図示する時系列図はホスト310、ICH210のドライバ320、磁気記憶装置220を示す。ステップ511はホストのライトコマンド発行を示す。ライトコマンドを受信したICHドライバ320はステップ521でLBA変換のためにコマンド内容を操作し、ステップ522で磁気記憶装置330に発行する。磁気記憶装置はステップ531でライトコマンドを実行し、ステップ532で正常終了する。ICHドライバ320が変換したコマンドが複数あれば実行と終了を繰り返すが、ステップ534でエラーが発生する。磁気記憶装置220はステップ535でエラー報告を実施し、ICHドライバ320はステップ524でエラーLBAを元通りに変換し、ステップ525でホスト310にエラー報告する。ホスト310はステップ512でエラー処理を実施する。
【００１５】
図6は本実施例のリードコマンドのLBA変換動作のコマンドエラー終了時の時系列図の例である。図示する時系列図はホスト310、ICH210のドライバ320、磁気記憶装置220を示す。ステップ611はホストのリードコマンド発行を示す。リードコマンドを受信したICHドライバ320はステップ621でLBA変換のためにコマンド内容を操作し、ステップ622で磁気記憶装置220に発行する。磁気記憶装置はステップ631でリードコマンドを実行し、ステップ632でICH210のドライバ320へリードデータを送信する。ICH210のドライバ320はステップ623でリードデータをメモリする。変換後コマンドの2つ目以降はICH210のドライバ320は磁気記憶装置220から受信したリードデータをステップ425のように前の変換後コマンドでメモリしたリードデータにマージしてメモリする。ICHドライバ320が変換したコマンドが複数あれば実行と終了を繰り返すが、ステップ634でエラーが発生する。磁気記憶装置220はステップ635でエラー報告を実施し、ICHドライバ320はステップ625でエラーLBAを元通りに変換し、ステップ626でホスト310にエラー報告する。ホスト310はステップ612でエラー処理を実施する。
【００１６】
図7は本実施例のLBA変換のフローチャートの例である。ステップ713で磁気記憶装置220の内部情報からNative Max Address=Aを取得する。ステップ714で使用する最大のLBA=Bを設定する。ステップ715でＡ÷Ｂを超えない整数nを設定する。ステップ701でLBA=C、ブロックサイズ=mのライトコマンドまたはリードコマンドが入力される。ステップ702で入力された情報をＬＢＡ＝ｎ×Ｃ、ブロックサイズ=1に変換し、Dを設定して0を代入する。ステップ703で入力されたコマンドがライトコマンドか判定する。Yesならばステップ704に進み、ブロックサイズmのデータを1セクタずつm個に分割し、D=0~m-1の番号を付す。Noならばステップ704は実施しない。ステップ705で変換を行ったコマンドを実行する。ステップ706で正常終了か判定し、Yesならばステップ707に進み、Noならばステップ716に進む。ステップ707でリードコマンドか判定し、Yesならばステップ708に進み、前ターンのデータがあればマージしてメモリする。Noならばステップ708は実施しない。ステップ709でＬＢＡ＝ｎ×（Ｃ＋ｍ−１）か判定し、Yesならばステップ710に進み、Noならばステップ718に進む。ステップ710でLBA=C+m-1に変換する。ステップ711でリードコマンドか判定し、Yesならばステップ712に進み、Noならばステップ719に進む。ステップ712では上位へデータを転送して終了する。ステップ719では上位へコマンド完了を報告して終了する。
【００１７】
ステップ709でNoの場合は、ステップ718へ進みLBAにnを加え、Dに1を加えてステップ705へ還る。
【００１８】
ステップ706でNoの場合は、ステップ716へ進みLBAをnで割って、Sector count registerにm-Dを代入し、ステップ717で上位へエラーを報告して終了する。
【００１９】
＜実施例２＞
本実施例では、定点浮上防止だけでなく、データの冗長化も行える演算処理装置の例を説明する。
【００２０】
図８、図９は実施例２における磁気記憶装置220の円板上のLBA配置を示す図の例である。
【００２１】
図8、図9の直線810と850で仕切った範囲はLBA変換前の1つのセクタに割り当てたLBA変換後のトラック上の範囲である。この範囲にはn個のセクタがあり、冗長化のためにこの範囲内でn個以下の同一データを自由に配置できる。丸で示した820、830、840、910、920、930、940、950、960、970、980、990はそれぞれ1つのセクタを示し、同一データをライトする。
【００２２】
図10は本実施例のデータの冗長化を行う場合のLBA変換のフローチャートの例である。ステップ1014で磁気記憶装置220の内部情報からNative Max Address=Aを取得する。ステップ1015で使用する最大のLBA=Bを設定する。ステップ1016でＡ÷Ｂを超えない整数nを設定する。ステップ1001でLBA=C、ブロックサイズ=mのライトコマンドまたはリードコマンドが入力される。ステップ1002で入力された情報をＬＢＡ＝ｎ×Ｃ、ブロックサイズ=1に変換し、Dを設定して0を代入する。ステップ1003で入力されたコマンドがライトコマンドか判定する。Yesならばステップ1004に進み、ホストから入力されたブロックサイズmのデータを1セクタずつm個に分割し、D=0~m-1の番号を付す。ステップ1005でブロックサイズ＝kと設定する。このk個のセクタには冗長化のためにそれぞれ同じデータをライトする。ステップ1003でNoならばステップ1017でブロックサイズ=1と設定する。ステップ1006で変換を行ったコマンドを実行する。ステップ1007で正常終了か判定し、Yesならばステップ1008に進み、Noならばステップ1018に進む。ステップ1008でリードコマンドか判定し、Yesならばステップ1009に進み、前ターンのデータがあればマージしてメモリする。Noならばステップ1009は実施しない。ステップ1010でＬＢＡ＝ｎ×（Ｃ＋ｍ−１）か判定し、Yesならばステップ1011に進み、Noならばステップ1022に進む。ステップ1011でLBA=C+m-1に変換する。ステップ1012でリードコマンドか判定し、Yesならばステップ1013に進み、Noならばステップ1023に進む。ステップ1013では上位へデータを転送して終了する。ステップ1023では上位へコマンド完了を報告して終了する。
【００２３】
ステップ1010でNoの場合は、ステップ1022へ進みLBAにnを加え、Dに1を加えてステップ1006へ還る。
【００２４】
ステップ1007でNoの場合は、ステップ1018へ進む。ステップ1018でYesの場合はステップ1019へ進みT=0を設定する。ステップ1020でYesの場合はステップ1021でLBA=LBA-Tを行い、ステップ1009へ進む。ステップ1020でNoの場合は、ステップ1026へ進み、T=k-1かどうか判定する。Yesの場合はステップ1027に進み、LBA=LBA-k+1を行い、ステップ1024へ進み、LBAをnで割って、Sector count registerにm-Dを代入し、ステップ1025で上位へエラーを報告して終了する。ステップ1026でNoの場合は、ステップ1028へ進み、LBAに1を加え、Tに1を加えて、コマンドを実行し、ステップ1020へ進む。
ステップ1018でNoの場合は、ステップ1024へ進み、LBAをnで割って、Sector count registerにm-Dを代入し、ステップ1025で上位へエラーを報告して終了する。
【００２５】
＜実施例３＞
図11は演算処理装置の図2とは別の構成図の例である。RAID1120に磁気記憶装置220を接続する。このようにライトコマンドまたはリードコマンドはRAID1120のファームウェアにアクセスLBAを変換させることも可能である。
【００２６】
＜実施例４＞
また磁気記憶装置220のファームウェアにアクセスLBAを変換させることも可能である。
【００２７】
＜実施例５＞
またIOH1110のデバイスドライバにアクセスLBAを変換させることも可能である。
【符号の説明】
【００２８】
２００  演算処理装置、２１０  ICH、２２０  磁気記憶装置、１１１０  IOH、１１２０  RAID、
【図１】
2012053963.tif 000003
【図２】
2012053963.tif 000004
【図３】
2012053963.tif 000005
【図４】
2012053963.tif 000006
【図５】
2012053963.tif 000007
【図６】
2012053963.tif 000008
【図７】
2012053963.tif 000009
【図８】
2012053963.tif 000010
【図９】
2012053963.tif 000011
【図１０】
2012053963.tif 000012
【図１１】
2012053963.tif 000013