(57)【要約】【課題】レイテンシを改善することができるストレージ装置を提供する。【解決手段】実施形態によれば、ストレージ装置は、ホストからのコマンドに基づき、ストレージを制御するコントローラを具備する。前記コントローラは、インタフェース部、コマンドキュー部、リオーダリング部を具備する。前記コマンドキュー部は、前記インタフェース部によって受信されたコマンドをキューイングする。前記リオーダリング部は、前記ストレージの一部領域の設定に関する第１コマンドの後ろに前記一部領域へアクセスする第２コマンドが前記コマンドキュー部にキューイングされている場合、前記第２コマンドよりも後ろに前記コマンドキュー部にキューイングされている前記一部領域以外へアクセスする第３コマンドが前記第２コマンドの前となるように前記コマンドキュー部にキューイングされているコマンドの順序を入れ替える。【選択図】図１
2020115250.tif 000002
【特許請求の範囲】
【請求項１】
ストレージと、
ホストからのコマンドに基づき、前記ストレージを制御するコントローラと、
を具備し、
前記コントローラは、
前記ホストからコマンドを受信し、前記コマンドの結果を前記ホストへ送信するインタフェース部と、
前記インタフェース部によって受信されたコマンドをキューイングするコマンドキュー部と、
前記ストレージの一部領域の設定に関する第１コマンドの後ろに前記一部領域へアクセスする第２コマンドが前記コマンドキュー部にキューイングされている場合、前記第２コマンドよりも後ろに前記コマンドキュー部にキューイングされている前記一部領域以外へアクセスする第３コマンドが前記第２コマンドの前となるように前記コマンドキュー部にキューイングされているコマンドの順序を入れ替えるリオーダリング部と、
を具備するストレージ装置。
【請求項２】
前記第１コマンドに対応する処理を実行する第１コマンド処理部をさらに具備し、
前記第１コマンド処理部は、前記第１コマンドが要求する前記一部領域の設定の内容が取得された時点で、前記第３コマンドに対応する処理を開始させる請求項１に記載のストレージ装置。
【請求項３】
前記第１コマンド処理部は、前記第３コマンドに対応する処理と並行して前記第１コマンドに対応する処理を実行する請求項２に記載のストレージ装置。
【請求項４】
前記コマンドキュー部にキューイングされているコマンドを順次読み出して当該コマンドに対応する処理を開始させるコマンド処理制御部をさらに具備し、
前記リオーダリング部は、前記コマンド処理制御部内に設けられる請求項１に記載のストレージ装置。
【請求項５】
前記第１コマンドは、前記一部領域に格納されるデータの暗号化に用いる暗号鍵の変更を要求するコマンドである請求項１から４のいずれか１項に記載のストレージ装置。
【請求項６】
前記第１コマンドは、前記一部領域に対するアクセスの制限、制限内容の変更または制限の解除を要求するコマンドである請求項１から５のいずれか１項に記載のストレージ装置。
【請求項７】
前記第１コマンドは、前記ストレージの領域上における前記一部領域用の区画の設定を要求するコマンドである請求項１から５のいずれか１項に記載のストレージ装置。
【請求項８】
ストレージと、
ホストからのコマンドに基づき、前記ストレージを制御するコントローラと、
を具備し、
前記コントローラは、前記ストレージの一部領域のセキュリティ状態の設定に関する第１コマンドに対応する処理を、前記一部領域へのアクセスがない状況下において実行する設定制御部を具備するストレージ装置。
【請求項９】
ストレージ装置のコマンド処理方法であって、
ホストから受信したコマンドをキューイングすることと、
ストレージの一部領域の設定に関する第１コマンドの後ろに前記一部領域へアクセスする第２コマンドがキューイングされている場合、前記第２コマンドよりも後ろにキューイングされている前記一部領域以外へアクセスする第３コマンドが前記第２コマンドの前となるようにキューイングされているコマンドの順序を入れ替えることと、
を具備するコマンド処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージ装置およびコマンド処理方法に関する。
【背景技術】
【０００２】
近時、複数の区画領域が設定可能であり、領域ごとに暗号化やアクセス可否設定などが可能なストレージ装置が普及している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１１／００５８４４０号明細書
【特許文献２】国際公開第２０１５／１４５５５２号
【特許文献３】米国特許出願公開第２０１６／００３４６８３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
たとえばデータの書き込みおよび読み出しのいずれも可能であった一部の領域についてデータの書き込みを禁止するといった設定の変更を実施する場合、従来、その領域以外の領域へのアクセスも保留されて、レイテンシの悪化を招いてしまっていた。
本発明が解決しようとする課題は、レイテンシを改善することができるストレージ装置およびコマンド処理方法を提供することである。
【課題を解決するための手段】
【０００５】
実施形態によれば、ストレージ装置は、ストレージと、コントローラとを具備する。前記コントローラは、ホストからのコマンドに基づき、前記ストレージを制御する。前記インタフェース部と、コマンドキュー部と、リオーダリング部とを具備する。前記インタフェース部は、前記ホストからコマンドを受信し、前記コマンドの結果を前記ホストへ送信する。前記コマンドキュー部は、前記インタフェース部によって受信されたコマンドをキューイングする。前記リオーダリング部は、前記ストレージの一部領域の設定に関する第１コマンドの後ろに前記一部領域へアクセスする第２コマンドが前記コマンドキュー部にキューイングされている場合、前記第２コマンドよりも後ろに前記コマンドキュー部にキューイングされている前記一部領域以外へアクセスする第３コマンドが前記第２コマンドの前となるように前記コマンドキュー部にキューイングされているコマンドの順序を入れ替える。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態のストレージ装置の一構成例および一接続例を示す図。
【図２】第１実施形態のストレージ装置が備えるセキュリティ機能（暗号化によるデータ保護）を説明するための第１図。
【図３】第１実施形態のストレージ装置が備えるセキュリティ機能（アクセス制限によるデータ保護）を説明するための第２図。
【図４】第１実施形態のストレージ装置においてストレージ領域内の一部領域の設定が変更される一例を示す図。
【図５】第１実施形態のストレージ装置における実行順序が変更される前のコマンドのキューイング状態の一例を示す図。
【図６】第１実施形態のストレージ装置においてキューイングされているコマンドの実行順序が変更される一例を示す図。
【図７】第１実施形態のストレージ装置のセキュリティコマンドによるストレージ領域の変更時の動作手順の一例を示すフローチャート。
【図８】第２実施形態のストレージ装置の一構成例および一接続例を示す図。
【図９】第２実施形態のストレージ装置におけるセキュリティコマンドを含むコマンドの実行に関する動作手順の一例を示すフローチャート。
【発明を実施するための形態】
【０００７】
（第１実施形態）
まず、第１実施形態について説明する。
図１は、本実施形態のストレージ装置１の一構成例および一接続例を示す図である。
ストレージ装置１は、データを暗号化して格納したり、格納されているデータへのアクセスを制限したりすることが可能なセキュリティ機能を備えるセキュリティストレージ装置である。ストレージ装置１は、たとえばＰＣＩｅ（登録商標）などのインタフェースを介して複数のホスト（ホスト［Ａ］２−１、ホスト［Ｂ］２−２）と接続され得る。
【０００８】
ストレージ装置１は、ホスト［Ａ］２−１やホスト［Ｂ］２−２からコマンドを受信し、そのコマンドに対応する処理を実行して、その処理結果をホスト［Ａ］２−１やホスト［Ｂ］２−２へ送信する。ストレージ装置１が受信するコマンドには、データの書き込みを要求するライトコマンドと、データの読み出しを要求するリードコマンドと、セキュリティ機能に関する処理を要求するセキュリティコマンドとが少なくとも存在する。セキュリティコマンドについては後述する。これらのコマンドのほか、ストレージ装置１は、様々な制御コマンドを受信し得る。
【０００９】
ストレージ装置１は、たとえばＳｏＣ（System on a Chip）などとして構成されるコントローラ１１と、たとえばＤＲＡＭなどであるバッファメモリ１２と、たとえばフラッシュメモリなどであるストレージ１３とを有する。コントローラ１１は、バッファメモリ１２をデータの一時的な格納領域として利用しながら、ストレージ１３へのデータの書き込み処理およびストレージ１３からのデータの読み出し処理を実行する。コントローラ１１は、ホストインタフェース部１１１、コマンドキュー部１１２、コマンド処理制御部１１３、アクセス可否チェック部１１４および暗号化部１１５を有する。また、コントローラ１１は、ストレージ１３へのデータの書き込み処理や、ストレージ１３からのデータの読み出し処理を実行する書き込み／読み出し部１１６を有する。コントローラ１１内の各制御部は、たとえばコントローラ１１に内蔵されるプロセッサがたとえばコントローラ１１に内蔵されるメモリに格納されるプログラムを実行することによって実現されるものであってもよい。あるいは、コントローラ１１内の各制御部は、電気回路として実現されてもよい。つまり、各制御部は、ソフトウェアによっても実現し得るし、ハードウェアによっても実現し得る。また、一部がソフトウェアによって実現され、その他の一部がハードウェアによって実現されてもよい。なお、本実施形態のストレージ装置１においては、後述するリオーダリング部１１３Ａによるリオーダリングとアクセス可否チェック部１１４によるセキュリティの設定変更とをハードウェアによって実施することを想定する。これらをソフトウェアで実施する場合、コントローラ１１に内蔵されるプロセッサがストレージ１３に対するデータ・アクセス以外で処理するオーバヘッドが多くなり、ストレージ装置１の性能が向上しないおそれが生じる。
【００１０】
ここで、図２および図３を参照して、ストレージ装置１が備えるセキュリティ機能の概略について説明する。ストレージ装置１が備えるセキュリティ機能は、暗号化によるデータ保護と、アクセス制限によるデータ保護とが可能である。なお、ストレージ装置１が備えるセキュリティ機能は、これら２種類のデータ保護の中の一方のみに対応するものであってもよい。また、ストレージ装置１が備えるセキュリティ機能は、これら２種類のデータ保護の中の一方または両方に加えて、または、これら２種類のデータ保護に代えて、これら２種類以外のデータ保護に対応するものであってもよい。さらには、ストレージ装置１は、たとえばパスワードによる権限認証などのセキュリティ機能を併せて備えてもよい。ストレージ装置１が備える、暗号化によるデータ保護と、アクセス制限によるデータ保護とが可能なセキュリティ機能は、アクセス可否チェック部１１４と暗号化部１１５とが協働することによって実現される。
【００１１】
図２は、暗号化によるデータ保護の概要を説明するための図である。
図２中において符号ａ１で示すストレージ領域は、ストレージ１３の領域の一部または全部であって、たとえばホスト［Ａ］２−１またはホスト［Ｂ］２−２の一方に割り当てられている領域を論理的に表したものである。あるいは、このストレージ領域ａ１は、たとえばホスト［Ａ］２−１とホスト［Ｂ］２−２との双方からアクセス可能に確保されたストレージ１３の領域の一部または全部であってもよい。ストレージ領域ａ１の確保は、いずれかのホストが前述の制御コマンドによって実施する。ここでは、このストレージ領域ａ１は、ストレージ１３の領域中の論理アドレス（LBA［Logical Block Address］）0-0x3FFに対応づけられている領域であるものと想定する。また、図２中において符号ａ２で示す暗号鍵情報は、ストレージ領域ａ１へ書き込むデータを暗号化するために暗号化部１１５が管理する暗号鍵である。暗号化部１１５は、暗号鍵情報ａ２を、たとえばコントローラ１１に内蔵されるメモリなどを用いて管理する。
【００１２】
図２（Ａ）は、ストレージ領域ａ１の初期状態を示している。初期状態においては、ストレージ領域ａ１の全領域が共有領域として位置づけられる。共有領域とは、暗号鍵が共有されている領域であり、ストレージ１３が初期状態にある場合、暗号化部１１５は、共有領域用の暗号鍵（xxxxxxx）のみを管理している。換言すれば、この場合、暗号鍵情報ａ２は、共有領域用の暗号鍵のみを含んでいる。この共有領域用の暗号鍵は、たとえば、ストレージ領域ａ１の設定時などにおいて暗号化部１１５によって生成される。図２（Ａ）に示す初期状態においてストレージ領域ａ１を対象とするライトコマンドやリードコマンドが受信された場合、暗号化部１１５は、共有領域用の暗号鍵を用いてデータの暗号化や復号を行う。
【００１３】
前述したように、ストレージ装置１が受信するコマンドには、セキュリティ機能に関する処理を要求するセキュリティコマンドが存在する。セキュリティコマンドは、用途により異なるパラメータを使用して実行することができる。その中の１つは、ストレージ領域ａ１上の目的の範囲に区画領域を設定することが可能である。また、セキュリティコマンドは、たとえばストレージ領域ａ１上に設定された複数の区画領域の中の目的の区画領域に適用される暗号鍵を変更するために発行され得る。なお、セキュリティコマンドによる区画領域の設定とは、セキュリティ機能を領域ごとに稼働させるための区画の設定であって、たとえばストレージ領域ａ１などを設定するための制御コマンドによる区画の設定とは異なるものである。ここでは、制御コマンドによって設定される区画をスペース区画と称し、セキュリティコマンドによって設定される区画をセキュリティ区画と称する。つまり、セキュリティコマンドによる区画領域の設定は、たとえば、制御コマンドによって設定されている一スペース区画であるストレージ領域ａ１内においてセキュリティ区画を設定するものである。セキュリティ区画の設定は、たとえばアクセス可否チェック部１１４が主体となって暗号化部１１５と協働することによって実行される。また、設定されたセキュリティ区画に関する情報は、アクセス可否チェック部１１４と暗号化部１１５とで共有される情報として、たとえばコントローラ１１に内蔵されるメモリなどに格納される。なお、セキュリティコマンドは、セキュリティ区画をなくしたり、セキュリティ区画の範囲を変更したりする場合においても発行され得る。
【００１４】
図２（Ｂ）は、初期状態にあったストレージ領域ａ１上に新たなセキュリティ区画領域として領域Ａ（LBA：0x200-0x2FF）がセキュリティコマンドによって設定され、かつ、この領域Ａに適用される暗号鍵がセキュリティコマンドによって変更された状態を示している。この場合における暗号鍵の変更とは、領域Ａ用の暗号鍵を設定することである。この暗号鍵も暗号化部１１５によって生成される。領域Ａ用に設定された暗号鍵は、セキュリティコマンドによってさらに変更することも可能である。ある領域について暗号鍵の変更を実行する場合、その領域に格納されているデータは無効化してもよいし、変更前の暗号鍵による復号と変更後の暗号鍵による暗号化とを行って再格納するようにしてもよい。図２（Ｂ）に示されるように、暗号鍵情報ａ２に領域Ａ（LBA：0x200-0x2FF）用の暗号鍵（aaaaaaa）が追加されている。
【００１５】
なお、領域Ａ用の暗号鍵（aaaaaaa）は、領域Ａが設定された時点で暗号化部１１５によって生成される。また、設定された領域Ａの情報（LBA:0x200-0x2FF）は、前述したように、アクセス可否チェック部１１４と暗号化部１１５とで共有される。
【００１６】
図２（Ｂ）に示す状態においてストレージ領域ａ１を対象とするライトコマンドやリードコマンドが受信された場合、暗号化部１１５は、領域Ａについては領域Ａ用の暗号鍵を用いてデータの暗号化や復号を行う。また、領域Ａ以外の領域については、暗号化部１１５は、共有領域用の暗号鍵を用いてデータの暗号化や復号を行う。
【００１７】
図２（Ｃ）は、さらに、ストレージ領域ａ１上に新たなセキュリティ区画領域として領域Ｂ（LBA：0x300-0x3FF）がセキュリティコマンドによって設定され、かつ、この領域Ｂに適用される暗号鍵がセキュリティコマンドによって変更された状態を示している。図２（Ｃ）に示されるように、暗号鍵情報ａ２に領域Ｂ（LBA：0x300-0x3FF）用の暗号鍵（bbbbbbb）が追加されている。
【００１８】
図２（Ｃ）に示す状態においてストレージ領域ａ１を対象とするライトコマンドやリードコマンドが受信された場合、暗号化部１１５は、領域Ａについては領域Ａ用の暗号鍵を用いてデータの暗号化や復号を行い、領域Ｂについては領域Ｂ用の暗号鍵を用いてデータの暗号化や復号を行う。また、領域Ａおよび領域Ｂ以外の領域については、暗号化部１１５は、共有領域用の暗号鍵を用いてデータの暗号化や復号を行う。
【００１９】
この暗号化によるデータ保護によって、領域ごとに異なる暗号鍵でデータを暗号化することができるので、単一の暗号鍵を適用する場合と比較して、データが不正に読み取られてしまうリスクを低減することができる。
なお、図２（Ａ）に示すセキュリティ区画領域が設定されていない状態においても、セキュリティコマンドによって共有領域用の暗号鍵を変更することも可能である。
【００２０】
また、図３は、アクセス制限によるデータ保護の概要を説明するための図である。
ここでも、ストレージ領域ａ１は、ストレージ１３の領域中の論理アドレス（LBA）0-0x3FFに対応づけられている領域であるものと想定する。図３中において符号ａ３で示すアクセス可否設定情報は、一スペース区画であるストレージ領域ａ１へのアクセスをセキュリティ区画の区画領域単位に制限するためにアクセス可否チェック部１１４が管理する情報である。アクセス可否チェック部１１４は、アクセス可否設定情報ａ３を、たとえばコントローラ１１に内蔵されるメモリなどを用いて管理する。
【００２１】
図３（Ａ）は、ストレージ領域ａ１の初期状態を示している。初期状態においては、ストレージ領域ａ１の全領域が、データの書き込みおよび読み出しのいずれもが可能な領域として位置づけられる。図３（Ａ）に示されるように、アクセス可否設定情報ａ３は、ストレージ領域ａ１の全領域（LBA:0-0x3FF）がデータの書き込みおよび読み出しのいずれもが可能な領域であることを示す情報（W/R）を含んでいる。
【００２２】
図３（Ａ）に示す初期状態においてストレージ領域ａ１を対象とするライトコマンドやリードコマンドが受信された場合、アクセス可否チェック部１１４は、それらのコマンドがストレージ領域ａ１上のいずれの範囲に関するものであっても、それらのコマンドを実行可能なコマンドと判定する。たとえばライトコマンドの場合、データが暗号化部１１５によって暗号化されてストレージ１３へ書き込まれる。
【００２３】
図３（Ｂ）は、初期状態にあったストレージ領域ａ１上に新たなセキュリティ区画領域として領域Ｃ（LBA：0x200-0x2FF）がセキュリティコマンドによって設定され、かつ、この領域Ｃがデータの書き込みを禁止する読み出し専用領域へとセキュリティコマンドによって変更された状態を示している。図３（Ｂ）に示されるように、アクセス可否設定情報ａ３に領域Ｂ（LBA：0x200-0x2FF）が読み出し専用領域であることを示す情報（R）が追加されている。ある領域を読み出し専用領域として設定するケースとしては、たとえば、その領域に書き込まれているデータが更新されることを防止したい場合などが考えられる。
【００２４】
図３（Ｂ）に示す状態において領域Ｃを対象とするライトコマンドが受信された場合、アクセス可否チェック部１１４は、そのライトコマンドを実行不可のコマンドと判定する。この場合、そのライトコマンドの発行元に対してホストインタフェース部１１１を介してエラーが通知される。領域Ｃを対象とするリードコマンドが受信された場合は、アクセス可否チェック部１１４は、そのリードコマンドを実行可能なコマンドと判定する。この場合、ストレージ１３から読み出されたデータが暗号化部１１５によって復号されて、そのリードコマンドの発行元に対してホストインタフェース部１１１を介して転送される。
【００２５】
図３（Ｃ）は、さらに、ストレージ領域ａ１上に新たなセキュリティ区画領域として領域Ｄ（LBA：0x300-0x3FF）がセキュリティコマンドによって設定され、かつ、この領域Ｄがデータの書き込みおよび読み出しのいずれも禁止するアクセス不可領域へとセキュリティコマンドによって変更された状態を示している。図３（Ｃ）に示されるように、アクセス可否設定情報ａ３に領域Ｄ（LBA：0x300-0x3FF）がアクセス不可領域であることを示す情報（アクセス不可）が追加されている。ある領域をアクセス不可領域として設定するケースとしては、たとえば、その領域に書き込まれているデータを秘匿化したい場合などが考えられる。
【００２６】
図３（Ｃ）に示す状態において領域Ｄを対象とするライトコマンドやリードコマンドが受信された場合、アクセス可否チェック部１１４は、それらのコマンドを実行不可のコマンドと判定する。この場合、それらのコマンドの発行元に対してホストインタフェース部１１１を介してエラーが通知される。
【００２７】
このアクセス制限によるデータ保護によって、領域ごとに、より詳しくは、スペース区画内において任意に設定され得るセキュリティ区画ごとに、データの更新防止やデータの秘匿化を図ることができる。
なお、セキュリティコマンドは、たとえば、読み出し専用領域として設定されている領域をデータの書き込みも可能な領域に変更したり、アクセス不可領域として設定されている領域をデータの書き込みおよび読み出しのいずれも可能な領域に変更したりするために発行され得る。つまり、セキュリティコマンドは、アクセス制限を解除するために発行され得る。さらには、セキュリティコマンドは、読み出し専用領域やアクセス不可領域としてだけでなく、ある領域を書き込み専用領域として設定するために発行され得る。
【００２８】
以上説明したセキュリティ機能の概略を踏まえて、図１に戻り、ストレージ装置１の各部の説明を続ける。
ホストインタフェース部１１１は、ストレージ装置１に対してホスト［Ａ］２−１やホスト［Ｂ］２−２から発行されたコマンドを受信する。ホストインタフェース部１１１は、受信したコマンドをコマンドキュー部１１２へ転送する。コマンドキュー部１１２は、ホストインタフェース部１１１から転送されてくるコマンドをキューイングする。コマンドキュー部１１２は、ホストインタフェース部１１１から受け取った順にコマンドをキューイングする。
【００２９】
コマンド処理制御部１１３は、コマンドキュー部１１２にキューイングされているコマンドを順次読み出し、アクセス可否チェック部１１４、暗号化部１１５、書き込み／読み出し部１１６に対して、そのコマンドで要求される処理の実行を指示する。また、コマンド処理制御部１１３は、コマンドに対応する処理が終了したときに、そのコマンドをコマンドキュー部１１２から削除する。コマンド処理制御部１１３は、コマンドキュー部１１２にキューイングされているコマンドの実行順序を変更するリオーダリング部１１３Ａを有する。リオーダリング部１１３Ａについては後述する。
【００３０】
アクセス可否チェック部１１４は、ストレージ１３へアクセスするコマンドについて、その対象領域を判別し、かつ、その実行可否を判定する。アクセス可否チェック部１１４は、実行可能なコマンドであると判定した場合には、その対象領域を暗号化部１１５に通知する。
【００３１】
暗号化部１１５は、アクセス可否チェック部１１４によって実行可能と判定されたコマンドがストレージ１３へデータを書き込むライトコマンドであった場合、アクセス可否チェック部１１４から通知された対象領域に適用される暗号鍵を用いてデータを暗号化する。書き込み対象データは、たとえば、ホストインタフェース部１１１およびアクセス可否チェック部１１４を経由して暗号化部１１５に供給される。暗号化部１１５は、暗号化したデータを、たとえばバッファメモリ１２経由で書き込み／読み出し部１１６へ供給し、書き込み部／読み出し部１１６は、暗号化部１１５から受け取ったデータをストレージ１３へ書き込む。アクセス可否チェック部１１４によって実行可能と判定されたコマンドがストレージ１３からデータを読み出すリードコマンドであった場合、暗号化部１１５は、書き込み／読み出し部１１６がストレージ１３から読み出したデータを、たとえばバッファメモリ１２経由で受け取り、暗号化された状態の当該データをアクセス可否チェック部１１４から通知された対象領域に適用される暗号鍵を用いて復号する。復号されたデータは、たとえば、アクセス可否チェック部１１４およびホストインタフェース部１１１を経由して、ホスト［Ａ］２−１やホスト［Ｂ］２−２へ送信される。
【００３２】
つまり、ホストインタフェース部１１１は、前述したホスト［Ａ］２−１やホスト［Ｂ］２−２からのコマンドの受信とともに、そのコマンドの処理結果のホスト［Ａ］２−１やホスト［Ｂ］２−２への送信を実行する。たとえば、アクセス可否チェック部１１４によって実行不可と判定された旨の通知、ストレージ１３へのデータの書き込みが成功した旨の通知、ストレージ１３から読み出したデータなどが、コマンドの処理結果として、コマンドの発行元であるホスト［Ａ］２−１やホスト［Ｂ］２−２へ送信される。
【００３３】
コマンド処理制御部１１３のリオーダリング部１１３Ａは、たとえばセキュリティコマンドの次に位置づけられているコマンドの実行が開始されるタイミングで、そのセキュリティコマンドの影響を受けないコマンドが次に実行されるコマンドとして位置づけられるように、コマンドキュー部１１２にキューイングされているコマンドの実行順序を変更する。換言すれば、そのセキュリティコマンドの影響を受けるコマンドが次に実行されるコマンドとして位置づけられていたならば、そのコマンドと、たとえばそのコマンドのさらに次に実行されるコマンドとして位置づけられている、セキュリティコマンドの影響を受けないコマンドとの実行順序を入れ替える。つまり、セキュリティコマンドの影響を受けないコマンドが、セキュリティコマンドの影響を受けるコマンドの前に実行されるように、コマンドキュー部１１２にキューイングされているコマンドの実行順序を変更する。
【００３４】
図４は、セキュリティコマンドによってストレージ領域ａ１内の一部領域の設定が変更される一例を示す図である。図４中、（Ａ）は、ストレージ領域ａ１内の一部領域の設定変更前の状態を示し、（Ｂ）は、ストレージ領域ａ１内の一部領域の設定変更後の状態を示している。
【００３５】
図４に示されるように、ここでは、論理アドレス（LBA）0-0x1FFの領域１のうち、論理アドレス（LBA）0x100-0x1FFまでの領域を領域４とする再設定が行われた場合を想定する。たとえば、領域１が、共有領域用の暗号鍵が適用される領域であって、その一部について暗号鍵を変更するために領域４が設定される場合や、領域１が、データの書き込みおよび読み出しのいずれもが可能な領域であって、その一部についてデータの書き込みを禁止する読み出し専用領域へ変更するために領域４が設定される場合などが相当する。
【００３６】
また、図５は、リオーダリング部１１３Ａによってコマンドの実行順序が変更される前のコマンドキュー部１１２によるコマンドのキューイング状態の一例を示す図である。
図５において、コマンドキュー部１１２にキューイングされているコマンドは、実行される順番に上から下へと列挙されている。ここでは、基本的に、ホストインタフェース部１１１による受信順にコマンドがキューイングされているものと想定する。また、図５中の複数のフィールド（Command、Start、Length、Area、Host）は、左から、コマンドの種類、アクセスする領域の先頭位置（先頭ＬＢＡ）、データ長、アクセスする領域、コマンドの発行元を示している。たとえば、１番上のコマンドは、ホスト［Ａ］２−１から発行された領域１のアドレス0x100から長さ0x10のデータを書き込むことを要求するライトコマンド（Write）である。
【００３７】
図５中、符号ｂ１で示されるコマンド（Security）が、図４に示した領域１の一部領域を領域４として再設定することを要求するセキュリティコマンドである。図５に示されるように、セキュリティコマンドｂ１よりも前に実行されるコマンドとして位置づけられる複数のコマンドが存在し、かつ、その中には、セキュリティコマンドｂ１が対象とする領域へアクセスするコマンドが含まれる。具体的には、セキュリティコマンドｂ１が対象とする領域１へデータを書き込むことを要求するライトコマンド（Write）ｂ２と、この領域１からデータを読み出すことを要求するリードコマンド（Read）ｂ３とが含まれる。しかしながら、これらは、セキュリティコマンドｂ１の影響を受けることなく、セキュリティコマンドｂ１による設定変更前の図４（Ａ）の状態の領域１を対象として実行される。
【００３８】
また、図５中、符号ｂ４で示されるコマンド（Read）は、セキュリティコマンドｂ１の次に実行されるように位置づけられている、セキュリティコマンドｂ１によって設定される領域４からデータを読み出すことを要求するリードコマンドである。このリードコマンドｂ２は、セキュリティコマンドｂ１に対応する処理が完了して、図４（Ｂ）に示される領域４が設定されるまでは実行を待機しなければならないコマンドである。
【００３９】
通常、ストレージ領域ａ１のセキュリティ状態を変更する処理を実行する場合、ストレージ装置１は、その影響を受けて誤った処理結果を得てしまうことを避けるため、ストレージ領域ａ１のセキュリティ状態を変更する処理が完了するまで、ストレージ領域ａ１の全領域についてアクセスを保留する。つまり、ストレージ領域ａ１を対象とするセキュリティコマンドの実行中、ストレージ領域ａ１を対象とするライトコマンドやリードコマンドはすべて保留される。
【００４０】
しかしながら、この場合、変更箇所に該当しないライトコマンドやリードコマンドも実行が保留されるため、これらライトコマンドやリードコマンドの応答が待たされ、レイテンシの悪化を招いてしまう。
そこで、本実施形態のストレージ装置１は、リオーダリング部１１３Ａが、セキュリティコマンドの実行時、このセキュリティコマンドに影響されないコマンドが次に実行されるコマンドとして位置づけられるように、コマンドキュー部１１２にキューイングされているコマンドの実行順序を変更する。また、本実施形態のストレージ装置１は、アクセス可否チェック部１１４が、セキュリティコマンドによって要求される処理の内容を、たとえばコントローラ１１に内蔵されるメモリなどに一時的に退避し終えた時点で当該セキュリティコマンドを完了したものとし、その上で、その一時的に退避した内容の処理を実行する。
【００４１】
図６は、図５に示したようにコマンドキュー部１１２にキューイングされているコマンドの実行順序がリオーダリング部１１３Ａによって変更される一例を示す図である。
図６中、符号ｂ５で示されるコマンド（Read）は、リードコマンドｂ４の次に実行されるように位置づけられている、セキュリティコマンドｂ１の影響を受ける領域１および領域４とは異なる領域２からデータを読み出すことを要求するリードコマンドである。たとえば前述したように処理の内容を一時的に退避し終えた時点で完了したものとなるセキュリティコマンドｂ１の次に実行されるように位置づけられているリードコマンドｂ２の開始時、リオーダリング部１１３Ａは、このリードコマンドｂ２がセキュリティコマンドｂ１の影響を受けるか否かを判定する。この判定は、アクセス可否チェック部１１４によるアクセス可否の判定と並行して実施されてもよい。リードコマンドｂ４は、セキュリティコマンドｂ１の影響を受けるので、リオーダリング部１１３Ａは、さらに、このリードコマンドｂ４の次に実行されるように位置づけられているリードコマンドｂ５がセキュリティコマンドｂ１の影響を受けるか否かを判定する。
【００４２】
リードコマンドｂ５は、セキュリティコマンドｂ１の影響を受けないので、リオーダリング部１１３Ａは、このリードコマンドｂ５がセキュリティコマンドｂ１の次に実行されるように、コマンドキュー部１１２内におけるリードコマンドｂ４とリードコマンドｂ５との実行順序を入れ替える。換言すれば、リオーダリング部１１３Ａは、セキュリティコマンドｂ１の影響を受けないリードコマンドｂ５が、セキュリティコマンドｂ１の影響を受けるコマンドｂ４の前に実行されるように、コマンドキュー部１１２内におけるリードコマンドｂ４とリードコマンドｂ５との実行順序を入れ替える。図６中、符号ｂ４’で示されるコマンド（Read）は、実行順序が繰り下がったリードコマンドｂ４である。
【００４３】
もし、リードコマンドｂ５が、セキュリティコマンドｂ１の影響を受ける場合、リオーダリング部１１３Ａは、さらに次のコマンドについて、セキュリティコマンドｂ１の影響を受けるか否かを判定する。たとえば、セキュリティコマンドに続いて、コマンドＡ（影響有）→コマンドＢ（影響有）→コマンドＣ（影響無）の順にコマンドがキューイングされている場合、リオーダリング部１１３Ａは、それらの実行順序を、コマンドＣ（影響無）→コマンドＡ（影響有）→コマンドＢ（影響有）と変更する。
【００４４】
また、アクセス可否チェック部１１４は、前述したように、セキュリティコマンドｂ１によって要求される、領域１の一部領域を領域４として再設定することを一時的に退避すると、このセキュリティコマンドｂ１を完了したものとする。セキュリティコマンドｂ１が完了し、セキュリティコマンドｂ１の実行時におけるリオーダリング部１１３Ａの処理が終了すると、コマンド処理制御部１１３の制御の下、セキュリティコマンドｂ１の次に実行されるコマンドとして位置づけられているリードコマンドｂ５の実行が開始される。アクセス可否チェック部１１４は、このリードコマンドｂ３の実行と並行して、完了したものとなっているが実際には未処理の状態である、領域１の一部領域を領域４として再設定する処理を、暗号化部１１５と協働して実行する。たとえばセキュリティコマンドによる暗号鍵の変更に伴ってデータの再暗号化および再書き込みが実行される場合、これらは時間がかかる。このセキュリティコマンドによる変更箇所に該当しないコマンドを実行することで、レイテンシを改善することができる。
【００４５】
これにより、セキュリティコマンドによる変更箇所に該当しないライトコマンドやリードコマンドの実行が保留されることをなくし、これらライトコマンドやリードコマンドの応答が待たされ、レイテンシの悪化を招くことを回避することができる。
なお、ここでは、わかり易くするために、コマンドキュー部１１２にキューイングされているコマンドが１つずつ実行されていくことを想定して説明を行ったが、複数のコマンドを並行して実行できる場合、リオーダリング部１１３Ａは、並行して実行できるコマンド数を考慮して、コマンドキュー部１１２にキューイングされているコマンドの実行順序を入れ替える。たとえば並行して３つのコマンドが実行可能である場合、リオーダリング部１１３Ａは、セキュリティコマンドに後続する３つのコマンド中に当該セキュリティコマンドの影響を受けるコマンドが位置しないように実行順序の入れ替えを実行する。
【００４６】
図７は、ストレージ装置１のセキュリティコマンドによるストレージ領域の変更時の動作手順を示すフローチャートである。
ストレージ領域の変更を要求するセキュリティコマンドを実行する場合、アクセス可否チェック部１１４は、そのセキュリティコマンドによって要求される変更内容を一時的に退避して、そのセキュリティコマンドを完了したものとする（ステップＳ１）。
【００４７】
リオーダリング部１１３Ａは、たとえばコマンドキュー部１１２内において次に実行されるコマンドとしてキューイングされているコマンドの開始時、このコマンドが、ストレージ領域上のセキュリティコマンドによる変更箇所に該当するコマンドか否かを調べる（ステップＳ２）。
【００４８】
変更箇所に該当する場合（ステップＳ３：ＹＥＳ）、リオーダリング部１１３Ａは、コマンドキュー部１１２内においてさらに次に実行されるコマンドとしてキューイングされているコマンドについて、ストレージ領域上のセキュリティコマンドによる変更箇所に該当するコマンドか否かを調べる（ステップＳ４）。変更箇所に該当する場合（ステップＳ５：ＹＥＳ）、リオーダリング部１１３Ａは、ステップＳ４に戻り、ストレージ領域上のセキュリティコマンドによる変更箇所に該当しないコマンドが検索されるまで（ステップＳ５：ＮＯ）、ステップＳ４〜ステップＳ５の処理を繰り返す。ストレージ領域上のセキュリティコマンドによる変更箇所に該当しないコマンドが検索されると（ステップＳ５：ＮＯ）、リオーダリング部１１３Ａは、そのコマンドが次に実行されるコマンドとして位置づけられるように、コマンドキュー部１１２にキューイングされているコマンドの入れ替えを実行する（ステップＳ６）。つまり、リオーダリング部１１３Ａは、ストレージ領域上のセキュリティコマンドによる変更箇所に該当しないコマンドが、ストレージ領域上のセキュリティコマンドによる変更箇所に該当するコマンドの前に実行されるように、コマンドキュー部１１２にキューイングされているコマンドの入れ替えを実行する。
【００４９】
コマンドキュー部１１２内において次に実行されるコマンドとしてキューイングされているコマンドが、ストレージ領域上のセキュリティコマンドによる変更箇所に該当しないコマンドであった場合（ステップＳ３：ＮＯ）、または、コマンドキュー部１１２にキューイングされているコマンドの入れ替え（ステップＳ６）が実行された場合、コマンド処理制御部１１３は、コマンドキュー部１１２内において次に実行されるコマンドとしてキューイングされているコマンドの実行を開始する（ステップＳ７）。
【００５０】
また、ステップＳ７で開始されたコマンドの実行と並行して、アクセス可否チェック部１４は、ステップＳ１で記録した変更内容を反映させるための処理を暗号化部１１５と協働して実行する（ステップＳ８）。
以上のように、本実施形態のストレージ装置１においては、たとえば図４に示したようなストレージ領域の変更が実行される場合、従来は遅延してしまっていた変更箇所に該当しない領域２や領域３へのアクセスを、遅延なしで実行することが可能となる。つまり、本実施形態のストレージ装置１は、レイテンシを改善することができる。
【００５１】
（第２実施形態）
次に、第２実施形態について説明する。
図８は、本実施形態のストレージ装置１の一構成例および一接続例を示す図である。第１実施形態と同様、本実施形態においても、ストレージ装置１が、データを暗号化して格納したり、格納されているデータへのアクセスを制限したりすることが可能なセキュリティ機能を備えるセキュリティストレージ装置であることを想定する。ここでは、第１実施形態と同一の構成要素については同一の符号を用い、それらについての重複する説明を省略する。
【００５２】
本実施形態のストレージ装置１においては、コントローラ１１のコマンド処理制御部１１３が、第１実施形態におけるリオーダリング部１１３Ａに代えて、セキュリティ設定変更制御部１１３Ｂを有する。つまり、本実施形態のストレージ装置１においては、コマンドキュー部１１２にキューイングされているコマンドの実行順序の変更を行わない。
【００５３】
また、本実施形態のストレージ装置１におけるコントローラ１１のアクセス可否チェック部１１４は、セキュリティコマンドによって要求される処理の内容を一時的に退避して当該セキュリティコマンドを完了したものとした後、セキュリティ設定変更制御部１１３Ｂからの指示を受けて、その一時的に退避した内容の処理を実行する。セキュリティ設定変更制御部１１３Ｂは、セキュリティコマンドが実行対象となった場合、そのセキュリティコマンドによる変更箇所に対するアクセスを監視し、その変更箇所に対するアクセスが無いタイミングで、アクセス可否チェック部１１４に対する指示を行う。セキュリティコマンドによる変更箇所に対するアクセスの有無は、コマンドキュー部１１２にキューイングされているコマンドの情報から判定することができる。
【００５４】
このように、本実施形態のストレージ装置１は、たとえば暗号鍵の変更などのセキュリティコマンドによる設定の変更を、その変更箇所に対するアクセスがない状況下で適用することによって、レイテンシを改善することを実現する。
なお、セキュリティ設定変更制御部１１３Ｂによる処理も、ハードウェアによって実施することを想定する。これをソフトウェアで実施する場合、コントローラ１１に内蔵されるプロセッサがストレージ１３に対するデータ・アクセス以外で処理するオーバヘッドが多くなり、ストレージ装置１の性能が向上しないおそれが生じる。
【００５５】
図９は、本実施形態のストレージ装置１におけるセキュリティコマンドを含むコマンドの実行に関する動作手順の一例を示すフローチャートである。
セキュリティ設定変更制御部１１３Ｂは、コマンドキュー部１１２にキューイングされているコマンドの中から読み出されたコマンドを調べ（ステップＳ１１）、セキュリティコマンドか否かを判定する（ステップＳ１２）。セキュリティコマンドではない場合（ステップＳ１２：ＮＯ）、コマンド処理制御部１１３の制御の下、そのコマンドが即時的に実行される（ステップＳ１５）。
【００５６】
一方、セキュリティコマンドである場合（ステップＳ１２：ＹＥＳ）、セキュリティ設定変更制御部１１３Ｂは、そのセキュリティコマンドによる変更箇所に対するアクセス有無を調べる（ステップＳ１３）。その変更箇所に対するアクセスが無い場合（ステップＳ１４：ＮＯ）、セキュリティ設定変更制御部１１３Ｂは、形式的には完了したことになっているセキュリティコマンドの実行をアクセス可否チェック部１１４に指示する（ステップＳ１５）。その変更箇所に対するアクセスがある場合（ステップＳ１４：ＹＥＳ）、セキュリティ設定変更制御部１１３Ｂは、ステップＳ１３に戻り、その変更箇所に対するアクセスの監視を継続する。
【００５７】
以上のように、本実施形態のストレージ装置１においても、セキュリティコマンドに起因するレイテンシの悪化を防止し、レイテンシを改善することを実現する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５８】
１…ストレージ装置、１１…コントローラ、１２…バッファメモリ、１３…ストレージ、１１１…ホストインタフェース部、１１２…コマンドキュー部、１１３…コマンド処理制御部、１１３Ａ…リオーダリング部、１１３Ｂ…セキュリティ設定変更処理部、１１４…アクセス可否チェック部、１１５…暗号化部、１１６…書き込み／読み出し部。
【図１】
2020115250.tif 000003
【図２】
2020115250.tif 000004
【図３】
2020115250.tif 000005
【図４】
2020115250.tif 000006
【図５】
2020115250.tif 000007
【図６】
2020115250.tif 000008
【図７】
2020115250.tif 000009
【図８】
2020115250.tif 000010
【図９】
2020115250.tif 000011