(57)【特許請求の範囲】
【請求項１】
第１及び第２のプロセッサを有するストレージコントローラと、
ハードディスクドライブまたは複数ポートのソリッドステートドライブが挿入される少なくとも１つ以上のドライブスロットと、
Downstream  Port  Containment（DPC）をサポートするポートを備えるPCI-Expressスイッチで構成され、前記ソリッドステートドライブを前記ポートを介して、前記第１のプロセッサに接続する第１のスイッチ及び前記第２のプロセッサに接続する第２のスイッチと、
前記ドライブスロットに挿入された前記ハードディスクドライブまたは前記ソリッドステートドライブの取り外し可否を表示する表示手段と、
を備え、
前記ドライブスロットに前記ハードディスクドライブが挿入されている場合には、
前記ハードディスクドライブへの給電が停止されると、前記表示手段は前記ハードディスクドライブが取り外し可能であることを表示し、
前記ドライブスロットに前記ソリッドステートドライブが挿入されている場合には、
前記ソリッドステートドライブを接続した前記第１のスイッチの前記ポート及び前記第２のスイッチの前記ポートの両方においてDPCが起動されると、前記表示手段は前記ソリッドステートドライブが取り外し可能であることを表示する
ことを特徴とするストレージ装置。
【請求項２】
請求項１記載のストレージ装置であって、
前記ソリッドステートドライブを前記ドライブスロットから取り外す場合には、
前記第１及び第２のプロセッサにより前記ソリッドステートドライブに関連する入出力動作を停止させた状態で、取り外し対象の前記ソリッドステートドライブに接続された前記第１及び第２のスイッチは、それぞれが備える前記ポートにおいてDPCを起動させることにより前記第１及び第２のプロセッサへ割り込みを送信し、
前記第１及び第２のプロセッサは、前記第１及び第２のスイッチから送信される前記割り込みに応答して、前記表示手段に前記ソリッドステートドライブが取り外し可能であることを表示させる
ことを特徴とするストレージ装置。
【請求項３】
請求項１記載のストレージ装置であって、
前記ソリッドステートドライブを前記ドライブスロットから取り外す場合には、
前記第１及び第２のプロセッサは、前記ソリッドステートドライブに関連する入出力動作を停止させて、前記表示手段に前記ソリッドステートドライブが取り外し可能であることを表示させ、
取り外し対象の前記ソリッドステートドライブを接続した前記第１及び第２のスイッチは、前記ドライブスロットからの前記ソリッドステートドライブの取り外しに伴い、それぞれが備える前記ポートにおいてDPCを起動させることにより前記第１及び第２のプロセッサへ割り込みを送信する
ことを特徴とするストレージ装置。
【請求項４】
請求項１記載のストレージ装置であって、
前記ソリッドステートドライブを前記ドライブスロットから取り外す場合には、
前記第１及び第２のプロセッサは、
前記ソリッドステートドライブに関連する入出力動作を停止させて、前記第１及び第２のスイッチからのDPC起動による割り込み送信を無効化し、
取り外し対象の前記ソリッドステートドライブを接続した前記第１及び第２のスイッチのそれぞれが備える前記ポートにおいてDPCが起動されると、前記表示手段に前記ソリッドステートドライブが取り外し可能であることを表示させる
ことを特徴とするストレージ装置。
【請求項５】
請求項１記載のストレージ装置であって、更に、
前記ソリッドステートドライブを前記ドライブスロットに取り付ける場合には、
前記第１及び第２のプロセッサは、前記ドライブスロットに挿入された前記ソリッドステートドライブに接続される前記第１のスイッチのポート及び前記第２のスイッチのポートの両方においてDPCを解除した後に、前記表示手段に前記ソリッドステートドライブが取り外し不可能であることを表示させる
ことを特徴とするストレージ装置。
【請求項６】
請求項１記載のストレージ装置であって、
前記ストレージ装置は、前記ハードディスクドライブまたは前記ソリッドステートドライブを収容するエンクロージャを備え、
前記ストレージコントローラは、前記第１のスイッチのアップストリーム側に位置し前記第１のスイッチを接続する第１のダウンストリームポートを備え、
前記第１のスイッチは、ダウンストリーム側にDPCをサポートする別のスイッチを接続するための第２のダウンストリームポートを備え、
前記エンクロージャは、前記第１のダウンストリームポートにおけるDPC起動有無を表示する表示手段と、前記第２のダウンストリームポートにおけるDPC起動有無を表示する表示手段を備える
ことを特徴とするストレージ装置。
【請求項７】
第１及び第２のプロセッサを有するストレージコントローラと、
ハードディスクドライブまたは単一ポートのソリッドステートドライブが挿入される少なくとも１つ以上のドライブスロットと、
Downstream  Port  Containment（DPC）をサポートするポートを備えるPCI-Expressスイッチで構成され、前記ソリッドステートドライブを前記ポートを介して、前記第１のプロセッサに接続する第１のスイッチ及び前記第２のプロセッサに接続する第２のスイッチと、
前記ハードディスクドライブまたは前記ソリッドステートドライブが挿入された前記ドライブスロットに対応して、当該挿入されたドライブの取り外し可否を表示する表示手段と、
を備え、
前記ドライブスロットに前記ハードディスクドライブが挿入されている場合には、前記ハードディスクドライブへの給電が停止されると、前記表示手段は前記ハードディスクドライブが取り外し可能であることを表示し、
前記ドライブスロットに前記単一ポートのソリッドステートドライブが挿入されている場合には、前記ソリッドステートドライブを接続した前記第１のスイッチの前記ポートまたは前記第２のスイッチの前記ポートにおいてDPCが起動されている場合に、前記表示手段は前記ソリッドステートドライブが取り外し可能であることを表示し、更に、
前記第１のスイッチのダウンストリームポートと前記第２のスイッチのダウンストリームポートを第１のリンクで接続し、
前記第１のスイッチのアップストリーム側の接続または前記第２のスイッチのアップストリーム側の接続のどちらか一方に障害が発生した場合に、他方の正常な接続側にある前記第１または第２のスイッチの前記ダウンストリームポートにおいてDPCを起動し、障害が発生した接続側にある前記第１または第２のスイッチの前記ダウンストリームポートをアップストリームポートに変更し、正常な接続側にある前記第１または第２のスイッチの前記ダウンストリームポートのDPCを解除し、前記第１のリンクを経由して前記ドライブへのアクセスを可能にする
ことを特徴とするストレージ装置。
【請求項８】
請求項７記載のストレージ装置であって、
前記単一ポートのソリッドステートドライブを収容するエンクロージャを備え、
前記エンクロージャに前記第１のスイッチ及び前記第２のスイッチを配置して前記ストレージコントローラと接続する
ことを特徴とするストレージ装置。
【請求項９】
請求項８記載のストレージ装置であって、
前記エンクロージャを前記ストレージコントローラに対してｎ段（ｎは２以上の整数）縦続して接続する
ことを特徴とするストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置に係わり、特に、記憶媒体としてPCI-Express接続ソリッドステートドライブを適用したストレージ装置に関する。
【背景技術】
【０００２】
ストレージ装置は、一般的に、ランダムアクセス可能な不揮発性記憶媒体を備える。ランダムアクセス可能な不揮発性記憶媒体は、例えば、磁気ディスクドライブ、光ディスクドライブ等である。また、現在主流のストレージ装置は、ハードディスクドライブ（HDD）を複数備える。【０００３】
また、半導体技術の進歩に伴って、ストレージ装置の記憶媒体として使用可能な不揮発性半導体メモリが開発されている。このような不揮発性半導体メモリには、例えば、フラッシュメモリがある。フラッシュメモリは、リードオンリーメモリ（ROM）のように不揮発性でありながら、リードだけでなく、ランダムアクセスメモリのようにライトも可能な半導体メモリである。フラッシュメモリを記憶媒体とするソリッドステートドライブ（SSD）を備えるストレージ装置は、HDDのみを備えるストレージ装置に比べ、寿命、省電力、アクセス時間等に優れている。【０００４】
ストレージ装置は、ストレージ装置に接続したホストシステム及びストレージ装置内の記憶媒体との間のデータ転送を制御するストレージコントローラを備える。ストレージコントローラは、ホストシステムを接続するフロントエンドインターフェース、記憶媒体として多数のドライブを接続するバックエンドインターフェース、ストレージ装置を制御するためのプロセッサ及びプロセッサに接続されたメモリ等を備える。また、プロセッサ、フロントエンドインターフェース及びバックエンドインターフェース等を接続するための通信ネットワークの標準規格として、「PCI-Express」（以下「PCIe」とも記す、何れも登録商標）が知られている。【０００５】
従来のストレージ装置において、バックエンドインターフェースと複数のHDDは、例えば、Serial  Attached  SCSI（SAS）プロトコルによって接続される。また、SASインターフェースを備えるSSD（SAS-SSD）も、バックエンドネットインターフェースに接続される。
また最近、SSDの高性能化を目的として、ストレージコントローラにPCIeで接続するSSDが登場している。PCIeインターフェースを備えるPCIe接続SSD（PCIe-SSD）は、SASプロトコル変換オーバーヘッド無しにデータ転送を行えるので、SAS-SSDに比べてデータ転送の高速化が可能である。【０００６】
さらに、SASインターフェースを備えるHDDとPCIe接続SSDのコネクタを共通化し、ストレージ装置内における両種ドライブの混載や、同じスロットに対するHDDとPCIe接続SSDの差し替えを可能にするフォームファクタが、規格化されている。【０００７】
HDDをドライブエンクロージャのスロットから取り外す場合、ディスク媒体破損を避けるため、ディスク回転を停止させた後にスロットからHDDを取り外す必要があった。そのためドライブエンクロージャは、例えば、HDDを挿入する各スロットに対応させてHDDへの給電状態を示すLEDを備える。ストレージ装置のオペレーターは、LEDが給電停止を示しドライブの回転停止が確実になった場合に、スロットからHDDを取り外すことができる。【０００８】
一方のPCIe接続SSDでは、非同期取り外しが検討されている。非同期取り外しとは、例えば、ストレージコントローラへの事前通知無しに、ドライブエンクロージャのスロットからPCIe接続SSDを取り外すことである。非同期取り外しは、突然の取り外しとも呼ばれる。【０００９】
非特許文献１には、HDDとPCIe接続SSDの差し替えを可能にするフォームファクタ及びPCIe接続SSDの突然の取り外しに関する技術が開示されている。
また、非特許文献２及び非特許文献３には、PCIe接続SSDの非同期取り外しに関する技術が開示されている。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】「Enterprise  SSD  Form  Factor  Version  1.0」、2011年発行、著者SSDForm  Factor  Working  Group、第14頁及び第31頁〜38頁
【非特許文献２】「PCI-SIG  ENGINEERING  CHANGE  NOTICE、Downstream  Port  Containment（DPC）」、2012年発行、著者PCI-SIG、第1頁〜20頁
【非特許文献３】「PCI-SIG  ENGINEERING  CHANGE  NOTICE、Enhanced  DPC（eDPC）」、2012年発行、著者PCI-SIG、第1頁〜34頁
【発明の概要】
【発明が解決しようとする課題】
【００１１】
非同期取り外しに際し、SSDへのデータ書き込みが進行中であった場合、そのSSDへのデータ書き込みは失敗するので障害発生となる。
また、非同期取り外しでは、SSDにおける障害発生と正常な取り外し処理の区別ができない。つまり、SSDが突然故障してデータ転送ができなくなる現象と、非同期取り外し処理によりデータ転送ができなくなる現象を、ストレージコントローラは区別できない。
従って、SSDの非同期取り外しを実行するたびに、ストレージコントローラが障害処理プログラムを実行しなければならない、という課題がある。【００１２】
さらに、HDDとPCIe接続SSDで取り外し方法が異なる課題がある。つまり、スロットにHDDが挿入されている場合は、HDDへの給電停止が表示されるのを待って、オペレーターはHDDを取り外す。それ対して、スロットにSSDが挿入されている場合は、ストレージコントローラへの事前通知無しに、オペレーターはSSDを取り外す。このように、ストレージ装置のオペレーターがスロットに挿入されているドライブ種別を考慮しながら取り外し方法を選択しなければならない、という課題が生じる。【００１３】
本発明は、以上のような問題に鑑みてなされたものであり、その主な目的は、記憶媒体としてHDDとPCIe接続SSDを適用したストレージ装置において、安全且つ容易なPCIe接続SSDの取り外し方法を提供することである。
【課題を解決するための手段】
【００１４】
前記目的を達成するために、スロットに挿入されたHDDまたはPCIe接続SSDの取り外し可否を表示する表示手段が、スロットにHDDが挿入されている場合には、そのHDDへの給電が停止された時にHDDが取り外し可能であることを表示し、スロットにSSDが挿入されている場合には、そのスロットに挿入されているSSDを接続したPCI-Expressスイッチ（以下、「PCIeスイッチ」という）のダウンストリームポートにおいてDownstream  Port  Containment（DPC）が起動されている時に、前記SSDが取り外し可能であることを表示する。
【発明の効果】
【００１５】
本発明によれば、HDDとPCIe接続SSDの取り外し手順を共通化でき、且つPCIe接続SSDを安全に取り外すことができ、ストレージ装置のオペレーターは、取り外し対象となるドライブ種別を格別意識することなしに取り外し可否を表示する表示手段に従った取り外しが可能となり、簡便かつ安心して作業を遂行することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施例１に係るSSD取り外しのフローチャートである。
【図２】図２は、実施例１に係るSSD取り外しフロー内で実行されるサブプログラムのフローチャートである。
【図３】図３は、実施例１に係るSSD取り外しフロー内で起動される割り込みハンドラのフローチャートである。
【図４】図４は、DPCの機能を説明する図である。
【図５】図５は、DPCコントロールレジスタを示す図である。
【図６】図６は、DPCステータスレジスタを示す図である。
【図７】図７は、実施例１に係るストレージ装置の構成を示す図である。
【図８】図８は、実施例１に係るドライブエンクロージャ内コンポーネントの接続を示す図である。
【図９】図９は、ドライブ識別方法を示す図である。
【図１０】図１０は、実施例１に係るシャットダウンLEDの表示内容を示す図である。
【図１１】図１１は、実施例１に係るドライブエンクロージャを前面から示す図である。
【図１２】図１２は、実施例１に係るドライブエンクロージャを裏面から示す図である。
【図１３】図１３は、実施例１に係るドライブエンクロージャを上面から見た断面を示す図である。
【図１４】図１４は、実施例１に係るストレージコントローラユニットを裏面から示す図である。
【図１５】図１５は、実施例１に係るドライブ管理テーブルを示す図である。
【図１６】図１６は、実施例１に係るドライブスロット管理テーブルを示す図である。
【図１７】図１７は、スロットケイパビリティーレジスタを示す図である。
【図１８】図１８は、実施例１に係るケーブルスロット管理テーブルを示す図である。
【図１９】図１９は、実施例１に係るオペレーターから見たドライブ取り外し手順を示す図である。
【図２０】図２０は、実施例２に係るSSD取り付けのフローチャートである。
【図２１】図２１は、実施例２に係るSSD取り付けフロー内で実行されるサブプログラムのフローチャートである。
【図２２】図２２は、実施例２に係るオペレーターから見たドライブ取り付け手順を示す図である。
【図２３】図２３は、実施例３に係るSSD取り外しのフローチャートである。
【図２４】図２４は、実施例３に係るSSD取り外しフロー内で実行されるサブプログラムのフローチャートである。
【図２５】図２５は、実施例３に係るSSD取り外しフロー内で起動される割り込みハンドラのフローチャートである。
【図２６】図２６は、実施例４に係るケーブル取り外しのフローチャートである。
【図２７】図２７は、実施例４に係るケーブル取り外しフロー内で起動される割り込みハンドラのフローチャートである。
【図２８】図２８は、実施例５に係るケーブル取り外しのフローチャートである。
【図２９】図２９は、実施例５に係るケーブル取り外しフロー内で起動される割り込みハンドラのフローチャートである。
【図３０】図３０は、実施例６に係るSSD取り外しのフローチャートである。
【図３１】図３１は、実施例６に係るSSD取り外しフロー内で実行されるサブプログラムのフローチャートである。
【図３２】図３２は、実施例７に係るケーブル取り外しのフローチャートである。
【図３３】図３３は、従来技術におけるSSD取り外しのフローチャートである。
【図３４】図３４は、従来技術におけるSSD取り外しフロー内で起動される割り込みハンドラのフローチャートである。
【図３５】図３５は、実施例８に係るドライブエンクロージャを示す図である。
【図３６】図３６は、実施例８に係るフェールオーバー後のドライブエンクロージャを示す図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照しながら、本発明の幾つかの実施例を説明する。なお、全ての実施例を通して、同一符号が付されている構成要素は、実質的に同じものである。
なお、以下の説明において、PCIeスイッチを単に「スイッチ」、取り外し対象のSSD、ケーブルを、それぞれ「対象SSD」、「対象ケーブル」と呼ぶ。また、取り外し対象のSSD、またはケーブルのアップストリーム側が、接続されているスイッチのポートを「対象スイッチポート」と呼ぶ。デュアルポートSSDの場合には、対象スイッチポートは２個ある。さらに、対象SSD、ケーブルのアップストリーム側が、挿入されているスロットを、それぞれ「対象ドライブスロット」、「対象ケーブルスロット」と呼ぶ。また、割り込みハンドラとは、DPC起動に伴い送信される割り込みにより実行される割り込みハンドラを指す。
また、以下の説明において、SSDはPCIeインターフェースを備えるPCIe接続SSDであり、HDDはSASインターフェースを備えるSAS-HDDである。
【実施例１】
【００１８】
図１から図１９を用いて、本発明の実施例１に係るストレージ装置の構成及びそれに搭載されるSSDの取り外し方法について説明する。その後比較のために、図３３及び図３を用いて従来技術におけるSSD取り外し方法についても説明する。
始めに、それに先立って、本発明において使用するスイッチ（PCIeスイッチ）において提供されるDPC（Downstream  Port  Containment）について説明する。【００１９】
＜DPCの説明＞
図４は、非特許文献２及び非特許文献３に記載されているDPCの機能を説明する図である。図４において、スイッチ４０１のダウンストリームポート４０２〜４０５は、それぞれSSD４０６〜４０９を接続している。また、スイッチ４０１と接続するルートコンプレックス４００のダウンストリームポート４１１は、SSD４１０を接続している。【００２０】
ここにおいて、DPCの第１の機能は、一つのSSDの障害が他のPCIe接続コンポーネントに影響しないようにすることである。また、DPCの第２の機能は、SSDの非同期取り外しを実現することである。【００２１】
上記DPCの第１の機能に関し、DPCは、スイッチ４０１及びルートコンプレックス４００のダウンストリームポート（４０２〜４０５及び４１１）に、アンコレクタブル・エラーを検出すると自動的にリンクをダウンさせる機能を追加する。例えば、SSD４０８に障害が発生し、エラーを含むパケットをスイッチ４０１のダウンストリームポート４０４へ送信したとする。エラーを検出したダウンストリームポート４０４は、ダウンストリームポート４０４とSSD４０８との間のリンクをダウンさせる。その結果、DPCは、エラーに後続する全てのトランザクションパケットが、スイッチ４０１のアップストリームポートまたはダウンストリームポートへ伝播するのを防ぐことができ、データ破損が広がる可能性を防ぐことができる。【００２２】
上記DPCの第２の機能は、システムへの事前の通知無しに取り外しを実行する、いわゆる非同期取り外しに適用される。例えば、SSD４０６に対して非同期取り外しを実行すると、ダウンストリームポート４０２とSSD４０６とを接続していたリンクが、DL_ActiveからDL_Downへ遷移する。この遷移はSurprise  Downエラーを招く。そして、Surprise  DownエラーはDPCを引き起こす。DPCは、システムに対してSurprise  Downエラーを隠蔽する。その結果、SSDの非同期取り外しに伴うリンクダウンを、システムは障害として扱わないようにすることができる。【００２３】
図５は、非特許文献３に記載されている、DPC機能を利用可能なスイッチのポートが備えるDPCコントローラレジスタ５００を示す図である。
DPCコントロールレジスタのビット１と０（５０１）は、DPCの起動可否を設定する「DPC  Trigger  Enableフィールド」である。このフィールドを、“００”に設定することによりDPC機能を無効化できる。このフィールドを、“０１”または“１０”に設定することにより、DPC機能を有効化することができる。【００２４】
DPCコントロールレジスタのビット３（５０２）は、DPCの起動による割り込み送信可否を設定する「DPC  Interrupt  Enableビット」である。このビットを、“０”に設定することによりDPCによる割り込み送信を無効化できる。このビットを、“１”に設定することによりDPCによる割り込み送信を有効化することができる。【００２５】
DPCコントロールレジスタのビット６（５０３）は、ソフトウェアによるDPC起動を可能にする「DPC  Software  Triggerビット」である。このビットを“０”から“１”に設定することにより、ソフトウェアがDPCを起動することができる。【００２６】
図６は、非特許文献３に記載されている、DPC機能を利用可能なスイッチのポートが備えるDPCステータスレジスタ６００を示す図である。
DPCステータスレジスタのビット０（６０１）は、DPCの起動有無を表示する「DPC  Trigger  Statusビット」である。このビットが、“０”の場合、DPCは未起動であることを示し、“１”の場合、DPCは起動済であることを示す。DPC起動済の場合、ソフトウェアがこのフィールドをクリアすることにより、DPCは正常動作に復帰する。【００２７】
次に、実施例１に係るストレージ装置の構成について説明する。
図７は、そのストレージ装置の構成例を示す図である。
ストレージ装置７００は、ストレージコントローラ７０１及びドライブエンクロージャ７２１、７５１で構成される。
ストレージコントローラ７０１は、プロセッサ７０２、７０８、フロントエンドインターフェース７０３、７０９、メモリ７０５、７１１及びバックエンドインターフェース７０６、７１２を備える。【００２８】
フロントエンドインターフェース７０３、７０９は、それぞれチャネル７０４、７１０を介してホストシステム（図示せず）を接続する。また、フロントエンドインターフェース７０３、７０９は、ホストシステムとストレージコントローラ７０１間のデータ転送プロトコルと、ストレージコントローラ７０１内のデータ転送プロトコルを変換する。【００２９】
バックエンドインターフェース７０６、７１２は、ストレージコントローラ７０１とドライブエンクロージャ７２１を接続する。また、バックエンドインターフェース７０６、７１２は、ストレージコントローラ７０１内のデータ転送プロトコルと、ストレージコントローラ７０１とドライブエンクロージャ７２１、７５１間のデータ転送プロトコルを変換する。【００３０】
バックエンドインターフェース７０６、７１２は、エクスパンダを介してHDDを接続するためのSASのポートと、PCIe接続SSDを接続するためのダウンストリームポート７０７、７１３を備える。
ダウンストリームポート７０７、７１３は、バックエンドインターフェース７０６、７１２内に備えられたスイッチの一部であってもよいし、プロセッサ７０２、７０８の一部であってもよい。【００３１】
メモリ７０５は、プロセッサ７０２の主記憶であり、プロセッサ７０２が実行するプログラム（ストレージ制御プログラム等）や、プロセッサ７０２が参照する管理テーブル等が格納される。
メモリ７１１は、プロセッサ７０８の主記憶であり、プロセッサ７０８が実行するプログラム（ストレージ制御プログラム等）や、プロセッサ７０８が参照する管理テーブル等が格納される。
また、メモリ７０５、７１１は、ストレージコントローラ７０１のキャッシュメモリとしても使用される。【００３２】
プロセッサ７０２、７０８は、フロントエンドインターフェース７０３、７０９を介して接続したホストシステムと、バックエンドインターフェースを介して接続したHDDまたはSSDとの間の、データ転送を制御する。
プロセッサ７０２と７０８は、信号線７１９で接続されている。これにより、プロセッサ７０２はメモリ７１１を、プロセッサ７０８はメモリ７０５をアクセス可能である。【００３３】
管理インターフェース７１４は、ストレージ装置のオペレーターがストレージコントローラ７０１に対して設定情報を入力するための入力装置を備える。また、管理インターフェース７１４は、ストレージコントローラ７０１がストレージ装置のオペレーターに対してストレージ装置の情報を表示するための表示装置を備える。【００３４】
ドライブエンクロージャ７２１は、スイッチ７２２、７２７、エクスパンダ７２４、７２９、エンクロージャ制御部７２３、７２８及びコネクタ７４１〜７４４を備える。コネクタ７４１〜７４４は、デュアルポートを備えるSSDまたはHDDを接続可能である。スイッチ７２２とコネクタ７４１〜７４４は、信号線７２５を介して接続される。スイッチ７２７とコネクタ７４１〜７４４は、信号線７３０を介して接続される。エクスパンダ７２４とコネクタ７４１〜７４４は、信号線７２６を介して接続される。エクスパンダ７２９とコネクタ７４１〜７４４は、信号線７３１を介して接続される。
なお、ストレージ装置７００内のスイッチは、全てのダウンストリームポートにおいてDPCがサポートされている。【００３５】
ドライブエンクロージャ７５１は、ドライブエンクロージャ７２１と同様に、スイッチ７５２、７５７、エクスパンダ７５４、７５９、エンクロージャ制御部７５３、７５８及びコネクタ７７１〜７７４を備える。コネクタ７７１〜７７４は、単一ポートを備えるSSDまたはデュアルポートを備えるHDDを接続可能である。スイッチ７５２とコネクタ７７１、７７２は、信号線７５５を介して接続される。スイッチ７５７とコネクタ７７３、７７４は、信号線７６０を介して接続される。エクスパンダ７５４とコネクタ７７１〜７７４は、信号線７５６を介して接続される。エクスパンダ７５９とコネクタ７７１〜７７４は、信号線７６１を介して接続される。さらに、スイッチ７５２のDPCをサポートするダウンストリームポートは、スイッチ７５７のDPCをサポートするダウンストリームポートと、信号線７６２で接続される。【００３６】
ストレージコントローラ７０１内のダウンストリームポート７０７とドライブエンクロージャ７２１内のスイッチ７２２は、ケーブル７１６で接続される。ストレージコントローラ７０１内のダウンストリームポート７１３とドライブエンクロージャ７２１内のスイッチ７２７は、ケーブル７１７で接続される。ストレージコントローラ７０１内のバックエンドインターフェース７０６とドライブエンクロージャ７２１内のエクスパンダ７２４は、ケーブル７１５で接続される。ストレージコントローラ７０１内のバックエンドインターフェース７１２とドライブエンクロージャ７２１内のエクスパンダ７２９は、ケーブル７１８で接続される。【００３７】
ドライブエンクロージャ７２１内のスイッチ７２２とドライブエンクロージャ７５１内のスイッチ７５２は、ケーブル７３３で接続される。ドライブエンクロージャ７２１内のスイッチ７２７とドライブエンクロージャ７５１内のスイッチ７５７は、ケーブル７３４で接続される。ドライブエンクロージャ７２１内のエクスパンダ７２４とドライブエンクロージャ７５１内のエクスパンダ７５４は、ケーブル７３２で接続される。ドライブエンクロージャ７２１内のエクスパンダ７２９とドライブエンクロージャ７５１内のエクスパンダ７５９は、ケーブル７３５で接続される。【００３８】
ストレージ装置７００は、図７では２個のドライブエンクロージャ（７２１及び７５１）を備えているが、３個以上のドライブエンクロージャを備えることもできる。その場合、増設するドライブエンクロージャ内のスイッチのアップストリームを、既設ドライブエンクロージャ内スイッチのダウンストリームポートに接続することにより、ドライブエンクロージャを多段に接続する。例えば、ドライブエンクロージャ７５１内スイッチ７５２、７５７のダウンストリームポートに、増設するドライブエンクロージャ内スイッチのアップストリームポートをケーブル等で接続する。増設するドライブエンクロージャ内スイッチのダウンストリームポートも、既設のドライブエンクロージャ内スイッチと同様に、DPCをサポートする。また、ドライブエンクロージャ７５１内エクスパンダ７５４、７５９のポートに、増設するドライブエンクロージャ内エクスパンダのポートをケーブル等で接続する。このように、同じドライブエンクロージャ内に備えられる２個のスイッチの、ストレージコントローラ７０１からのスイッチ接続段数が同じになるように、ドライブエンクロージャを多段に接続する。ストレージ装置７００は、ドライブエンクロージャ７２１のみを１個以上備えても、あるいは、ドライブエンクロージャ７５１のみを１個以上備えてもよい。また、ストレージ装置７００は、１個以上のドライブエンクロージャ７２１及び７５１を、任意の順でストレージコントローラ７０１に接続してもよい。【００３９】
図８は、実施例１に係るドライブエンクロージャ内コンポーネントの接続を示す図である。図８では、エンクロージャ制御部７２３、LED８０１〜８０３、コネクタ７４１及び電源ユニット８１７、８２０との間の接続、また、エンクロージャ制御部７２８、LED８０１〜８０３、コネクタ７４１及び電源ユニット８１７、８２０との間の接続、を示す。なお、説明を簡単にするため、スイッチ７２２とコネクタ７４１間の接続、スイッチ７２７とコネクタ７４１間の接続及びHDD用の信号接続は、省略している。【００４０】
シャットダウンLED８０２は、図１０に従い、コネクタ７４１へ接続されたドライブへの給電状態等を表示する。
エンクロージャ制御部７２３は、LED駆動回路８０４と、信号線８０５を介して接続される。エンクロージャ制御部７２８は、LED駆動回路８０８と、信号線８０９を介して接続される。LED駆動回路８０４と８０８は、共にシャットダウンLED８０２を駆動する。つまり、ストレージコントローラ７０１は、エンクロージャ制御部７２３または７２８を介して、シャットダウンLED８０２の点灯と消灯を制御できる。【００４１】
ロケーションLED８０１は、コネクタ７４１に対応するドライブスロットが操作対象であるか否かを表示する。例えば、複数のドライブに対する操作が必要な場合に、ストレージコントローラが各ドライブに対応するロケーションＬＥＤ８０１を逐次点灯させることにより、オペレーターが操作対象ドライブを逐次操作する。
エンクロージャ制御部７２３は、LED駆動回路８０６と、信号線８０７を介して接続される。エンクロージャ制御部７２８は、LED駆動回路８１０と、信号線８１１を介して接続される。LED駆動回路８０６と８１０は、共にロケーションLED８０１を駆動する。つまり、ストレージコントローラ７０１は、エンクロージャ制御部７２３または７２８を介して、ロケーションLED８０１の点灯と消灯を制御できる。【００４２】
コネクタ７４１から出力されるIfDet#信号は、プルアップされた信号線８１２を介してエンクロージャ制御部７２３、７２８に入力される。コネクタ７４１から出力されるPRSNT#信号も、プルアップされた信号線８１３を介してエンクロージャ制御部７２３、７２８に入力される。ストレージコントローラ７０１は、IfDet#信号とPRSNT#信号に基づき、図９の通り、コネクタ７４１に接続されたドライブの種別を判別することができる。【００４３】
アクティビティLED８０３は、コネクタ７４１に接続されたドライブの動作状態を表示する。
コネクタ７４１から出力されるActivity信号は、信号線８１５を介してLED駆動回路８１４に入力される。LED駆動回路８１４は、入力されたActivity信号に従い、アクティビティLED８０３の点灯と消灯を制御する。
ストレージコントローラ７０１は、ドライブを接続するコネクタ毎に、電源ユニット８１７及び８２０の出力を制御する。【００４４】
電源ユニット８１７は、電源配線８１６を介してコネクタ７４１に接続され、コネクタ７４１に接続されたドライブに電力を供給する。ストレージコントローラ７０１は、エンクロージャ制御部７２３と信号線８１８を介して、電源ユニット８１７の出力を制御する。また、ストレージコントローラ７０１は、エンクロージャ制御部７２８と信号線８１９を介して電源ユニット８１７の出力を制御する。【００４５】
電源ユニット８２０は、電源配線８１６を介してコネクタ７４１に接続され、コネクタ７４１に接続されたドライブに電力を供給する。ストレージコントローラ７０１は、エンクロージャ制御部７２３と信号線８２１を介して電源ユニット８２０の出力を制御する。また、ストレージコントローラ７０１は、エンクロージャ制御部７２８と信号線８２２を介して電源ユニット８２０の出力を制御する。【００４６】
電源ユニット８１７、８２０の出力は、適切に分圧された後、信号線８０４を介して、エンクロージャ制御部７２３、７２８に入力される。ストレージコントローラ７０１は、エンクロージャ制御部７２３、７２８に入力された信号に従い、電源ユニット８１７、８２０の出力状態を判別することができる。【００４７】
図９は、非特許文献１の記載に基づくドライブ識別方法を示す図である。
HDD（SAS  HDD）とSSD（PCIe  SSD）は、PRSNT#信号（９０４）とIfDet#信号（９０５）を出力する。ここで、これらの信号は、図８に示すようにプルアップされているとする。PRSNT#信号（９０４）とIfDet#信号（９０５）が共にLowである場合、コネクタ７４１に接続されているドライブはHDDである（９０１）。PRSNT#信号（９０４）がHighであり、IfDet#信号（９０５）がLowである場合、コネクタ７４１に接続されているドライブはSSDである（９０２）。PRSNT#信号（９０４）とIfDet#信号（９０５）が共にHighである場合、コネクタ７４１にドライブは接続されていない（９０３）。【００４８】
図１０は、実施例１に係るシャットダウンLEDの表示内容を示す図である。
シャットダウンLEDは、ドライブスロットに挿入されているドライブの種類によって、点灯する条件が異なる。HDD（SAS  HDD）がドライブスロットに挿入されている場合（１００１）は、HDDへの電源供給がない場合にシャットダウンLEDが点灯し（１００３）、HDDへの電源供給がある場合にはシャットダウンLEDが消灯する（１００４）。
SSD（PCIe  SSD）がドライブスロットに挿入されている場合（１００２）は、デュアルポートSSDを接続しているスイッチのポートの両方においてDPCが起動している場合に、シャットダウンLEDが点灯する（１００３）。デュアルポートSSDを接続しているスイッチのポートの何れかがDPCを起動していない場合は、シャットダウンLEDは消灯する（１００４）。
なお、ドライブスロットにドライブが挿入されていない場合は、給電は停止し、且つスイッチポートにおいてDPCを起動させることにする。従って、その場合、シャットダウンＬＥＤは点灯する。【００４９】
図１１は、実施例１に係るドライブエンクロージャを前面から示す図である。
ドライブエンクロージャ７２１は、HDDまたはSSD（１１００）を挿入するドライブスロット１１０１〜１１０４を備える。また、ドライブエンクロージャ７２１は、ドライブスロット１１０１〜１１０４のそれぞれに対応した、ロケーションLED８０１、シャットダウンLED８０２及びアクティビティLED８０３を備える。これらのLED表示により、オペレーターは、各ドライブスロットに挿入されているドライブの状態を知ることができる。【００５０】
図１２は、実施例１に係るドライブエンクロージャを裏面から示す図である。
ドライブエンクロージャ７２１の裏面には、スイッチパッケージ１２１０、１２３０、エクスパンダパッケージ１２２０、１２４０、電源ユニット８１７、８２０、エンクロージャ番号表示部１２０１及びエンクロージャ番号設定部１２０２が配置される。【００５１】
エンクロージャ番号設定部１２０２は、プッシュボタンによりエンクロージャ番号を設定可能であり、設定されたエンクロージャ番号はエンクロージャ番号表示部１２０１に表示される。また、設定されたエンクロージャ番号は、図１７に示すレジスタの「Physical  Slot  Numberフィールド」の上位部１７０３に格納される。【００５２】
スイッチパッケージ１２１０は、スイッチ７２２、エンクロージャ制御部７２３、ケーブル７１６を接続するケーブルスロット１２１２、ケーブル７３３を接続するケーブルスロット１２１３及びLED１２１１、１２１４〜１２１６を備える。LED１２１１は、ダウンストリームポート７０７におけるDPC起動の有無を表示するためのスイッチLEDである。LED１２１４は、スイッチパッケージ１２１０が操作対象であるか否かを表示するためのロケーションLEDである。LED１２１５は、ケーブルスロット１２１３に対応するダウンストリームポートにおけるDPC起動の有無を表示するためのスイッチLEDである。LED１２１６は、ケーブル７３３に対応するリンク状態を表示するためのアクティビティLEDである。
エクスパンダパッケージ１２２０は、エクスパンダ７２４、ケーブル７１５を接続するスロット１２２１及びケーブル７３２を接続するスロット１２２２を備える。【００５３】
スイッチパッケージ１２３０は、スイッチ７２７、エンクロージャ制御部７２８、ケーブル７１７を接続するケーブルスロット１２３２、ケーブル７３４を接続するケーブルスロット１２３３及びLED１２３１、１２３４〜１２３６を備える。LED１２３１は、ダウンストリームポート７１３におけるDPC起動の有無を表示するためのスイッチLEDである。LED１２３４は、スイッチパッケージ１２３０が操作対象であるか否かを表示するためのロケーションLEDである。LED１２３５は、ケーブルスロット１２３３に対応するダウンストリームポートにおけるDPC起動の有無を表示するためのスイッチLEDである。LED１２３６は、ケーブル７３４に対応するリンク状態を表示するためのアクティビティLEDである。【００５４】
スイッチパッケージ１２１０のLED１２１１、１２１４〜１２１６及びスイッチパッケージ１２３０のLED１２３１、１２３４〜１２３６は、図８のLED８０１〜８０３と同様に、ストレージコントローラ７０１がエンクロージャ制御部を介して、その点灯と消灯が制御される。
また、スイッチLED（１２１１、１２１５、１２３１、１２３５）は、各LEDに対応するスイッチポートのDPCステータスを表示することに加えて、リンクダウンの有無を表示する。つまり、ストレージコントローラ７０１は、DPCが有効であるスイッチポートにおいて、DPCステータスに関わらず、リンクダウンを契機にスイッチLEDを点灯させる。【００５５】
スイッチパッケージ１２１０において、スイッチLED１２１１が点灯する場合、PCIe基本仕様に基づきスイッチ７２２の全てのダウンストリームポートにおいてリンクがダウンすることになる。つまり、スイッチLED１２１５も点灯する。スイッチLED１２１１と１２１５が両方とも点灯した場合、ドライブエンクロージャ７２１からスイッチパッケージ１２１０を取り外すことができる。
同様に、スイッチパッケージ１２３０において、スイッチLED１２３１が点灯する場合、PCIe基本仕様に基づきスイッチ７２７の全てのダウンストリームにおいてリンクがダウンすることになる。つまり、スイッチLED１２３５も点灯する。スイッチLED１２３１と１２３５が両方とも点灯した場合、ドライブエンクロージャ７２１からスイッチパッケージ１２３０を取り外すことができる。
エクスパンダパッケージ１２４０は、エクスパンダ７２９、ケーブル７１８を接続するスロット１２４１及びケーブル７３５を接続するスロット１２４２を備える。【００５６】
図１３は、実施例１に係るドライブエンクロージャを上面から見た断面を示す図である。
ドライブエンクロージャ７２１は、内部に配線基板であるミッドプレーン１３００を備える。ミッドプレーン１３００の裏面には、スイッチパッケージ１２１０、１２３０、エクスパンダパッケージ１２２０、１２４０及び電源ユニット８１７、８２０が接続される。ミッドプレーン１３００はそれらを相互に接続する。ミッドプレーン１３００の表面には、コネクタ７４１〜７４４が接続される。ドライブスロット１１０１〜１１０４に挿入されたHDDまたはSSDは、コネクタ７４１〜７４４を介して、ミッドプレーン１３００裏面に接続されたスイッチパッケージ等のコンポーネントと接続される。【００５７】
図１４は、実施例１に係るストレージコントローラユニットを裏面から示す図である。
ストレージコントローラ７０１の裏面には、バックエンドパッケージ１４１０、１４３０、プロセッサパッケージ１４０１、１４０２、フロントエンドパッケージ１４０３、１４０４及び電源ユニット１４０７、１４０８が配置される。
プロセッサパッケージ１４０１は、プロセッサ７０２とメモリ７０５を備える。プロセッサパッケージ１４０２は、プロセッサ７０８とメモリ７１１を備える。【００５８】
フロントエンドパッケージ１４０３は、フロントエンドインターフェース７０３と、ホストシステムとケーブル接続するためのスロット１４０５を備える。フロントエンドパッケージ１４０４は、フロントエンドインターフェース７０９と、ホストシステムとケーブル接続するためのスロット１４０６を備える。【００５９】
バックエンドパッケージ１４１０は、バックエンドインターフェース７０６、ダウンストリームポート７０７、ケーブル７１６を接続するケーブルスロット１４１１、ケーブル７１５を接続するスロット１４２１及びLED１４１２〜１４１４を備える。LED１４１２は、バックエンドパッケージ１４１０が操作対象であるか否かを表示するためのロケーションLEDである。LED１４１３は、スロット１４１１に対応するダウンストリームポート（７０７）におけるDPC起動の有無を表示するためのスイッチLEDである。LED１４１４は、ケーブル７１６に対応するリンク状態を表示するためのアクティビティLEDである。【００６０】
バックエンドパッケージ１４３０は、バックエンドインターフェース７１２、ダウンストリームポート７１３、ケーブル７１７を接続するケーブルスロット１４３１、ケーブル７１８を接続するスロット１４４１及びLED１４３２〜１４３４を備える。LED１４３２は、バックエンドパッケージ１４３０が操作対象であるか否かを表示するためのロケーションLEDである。LED１４３３は、スロット１４３１に対応するダウンストリームポート（７１３）におけるDPC起動の有無を表示するためのスイッチLEDである。LED１４３４は、ケーブル７１７に対応するリンク状態を表示するためのアクティビティLEDである。【００６１】
図１５は、実施例１に係るドライブ管理テーブル１５００を示す図である。
ドライブ管理テーブル１５００は、ストレージコントローラ７０１内のメモリ７０５とメモリ７１１の２カ所に格納される。プロセッサ７０２はメモリ７０５内のドライブ管理テーブル１５００を、プロセッサ７０８はメモリ７１１内のドライブ管理テーブル１５００を、それぞれ参照する。
ドライブ管理テーブル１５００は、論理スロット番号１５０１、論理ドライブ番号１５０２、ドライブ（媒体）種別情報１５０３、ポート１識別情報１５０４、ポート２識別情報１５０５及びドライブ識別情報１５０６を格納する。【００６２】
論理スロット番号１５０１は、プロセッサ７０２と７０８が使用するドライブスロットの識別情報である。
論理ドライブ番号１５０２は、プロセッサ７０２と７０８が使用するHDDまたはSSDの識別情報である。
ドライブ（媒体）種別１５０３は、ドライブスロットに挿入されているドライブ（媒体）がHDDかSSDか、あるいはドライブ未挿入かを示す情報である。【００６３】
ポート１識別情報１５０４とポート２識別情報１５０５は、ドライブ種別がSSDの場合、SSDを接続するスイッチポート（対象スイッチポート）の物理スロット番号である。また、ポート１識別情報１５０４とポート２識別情報１５０５は、ドライブ（媒体）種別がHDDの場合、HDDのPort  IDである。ポート１識別情報１５０４とポート２識別情報１５０５を使うことにより、ストレージコントローラ７０１は、２個のドライブポートが同じドライブに属するか否かを判別することができる。【００６４】
ドライブ識別情報１５０６は、ドライブ（媒体）種別がSSDの場合、ネームスペースのEUI64（IEEE  Extended  Unique  Identifier）であり、ドライブ（媒体）種別がHDDの場合、論理ユニットのWorld-Wide  Nameである。ドライブ識別情報１５０６を使うことにより、ストレージコントローラ７０１は、異なるスロット間でドライブを差し替えた場合でも、特定のドライブを識別することができる。【００６５】
図１６は、実施例１に係るドライブスロット管理テーブル１６００を示す図である。
ドライブスロット管理テーブル１６００は、ストレージコントローラ７０１内のメモリ７０５とメモリ７１１の２カ所に格納される。プロセッサ７０２はメモリ７０５内のドライブスロット管理テーブル１６００を、プロセッサ７０８はメモリ７１１内のドライブスロット管理テーブル１６００を、それぞれ参照する。
論理スロット番号１６０１は、図１５の１５０１に同じ、プロセッサ７０２と７０８が使用するドライブスロットの識別情報である。
DPCステータス１６０２は、２ビットの情報であり、両ビットともDPC起動の有無を示すもので、その下位１ビットは、取り外し対象SSDのポートを接続する、プロセッサ７０２側からアクセス可能なスイッチポートの状態を示し、その上位１ビットは、取り外し対象SSDのポートを接続する、プロセッサ７０８側からアクセス可能なスイッチポートの状態を示す。【００６６】
ホットリムーブ制御情報１６０３は、「ON」の場合、正常なSSD取り外し手順の一部として割り込みハンドラが動作する。「OFF」の場合、障害処理の一部として割り込みハンドラが動作する。
シャットダウンLED制御情報１６０４は、シャットダウンLEDの点灯または消灯を制御すると共に、現在のシャットダウンLEDの状態を示す。
ロケーションLED制御情報１６０５は、ロケーションLEDの点灯または消灯を制御すると共に、現在のロケーションLEDの状態を示す。【００６７】
図１７は、PCIe基本仕様で定められている、スイッチのスロットケイパビリティー（Slot  Capabilities）レジスタ（１７００）を示す図である。
スロットケイパビリティーレジスタ（１７００）の「フィジカルスロットナンバー（Physical  Slot  Number）フィールド」（１７０１）は、スイッチ起動時に設定される情報を格納する。例えば、このフィールドの上位部１７０３にはドライブエンクロージャの識別情報を格納する。そして、このフィールドの下位部１７０２にはドライブエンクロージャ内のスロット識別情報を格納する。ソフトウェアは、このフィールドに格納された情報を、スロット識別情報として使用することができる。【００６８】
図１８は、実施例１に係るケーブルスロット管理テーブル１８００を示す図である。
ケーブルスロット管理テーブル１８００は、ストレージコントローラ７０１内のメモリ７０５とメモリ７１１の２カ所に格納される。プロセッサ７０２はメモリ７０５内のケーブルスロット管理テーブル１８００を、プロセッサ７０８はメモリ７１１内のケーブルスロット管理テーブル１８００を、それぞれ参照する。
論理スロット番号１８０１は、プロセッサ７０２と７０８が使用するケーブルスロットの識別情報である。
物理スロット番号１８０２は、図１７のフィジカルスロットナンバー（１７０１）の値が格納される。【００６９】
バックエンドインターフェース情報１８０３は、そのケーブルスロットがプロセッサ７０２とプロセッサ７０８のどちら側で使用されかを示す。プロセッサ７０２側の場合は「１」、プロセッサ７０８側の場合は「２」が設定される。
DPCステータス１８０４は、対象ケーブルのアップストリーム側を接続したスイッチポートにおける、DPC起動有無を示す。DPC未起動の場合は「０」、DPC起動済の場合は「１」が設定される。【００７０】
ホットリムーブ制御情報１８０５は、「ON」の場合、正常なケーブル取り外し手順の一部として割り込みハンドラが動作する。「OFF」の場合、障害処理の一部として割り込みハンドラが動作する。
シャットダウンLED制御情報１８０６は、シャットダウンLEDの点灯または消灯を制御すると共に、現在のシャットダウンLEDの状態を示す。
ロケーションLED制御情報１８０７は、ロケーションLEDの点灯または消灯を制御すると共に、現在のロケーションLEDの状態を示す。【００７１】
＜取り外しフローの説明＞
次に、本発明の実施例１に係るSSD取り外し方法について説明する。
まず、ドライブスロットからSSDを取り外す際のフローの概要を示す。
１）対象SSDに関連するI/O動作を停止させる。
２）割り込みハンドラの動作を、取り外しに設定する。
３）対象スイッチポートにおいて、ソフトウェアによりDPCを起動させる。
４）対象ドライブスロットに対応して備えられたLEDが、SSD取り外し準備完了を示す状態を表示する。【００７２】
図１は、本発明の実施例１に係るSSD取り外しのフローチャートである。
ステップ１０１において、ストレージ装置７００のオペレーターは、管理インターフェース７１４を介してストレージコントローラ７０１に、対象SSDを指定する。ストレージコントローラ７０１は、対象ドライブスロットに対応するロケーションLEDを点灯させる。【００７３】
ステップ１０２において、ストレージコントローラ７０１は、プロセッサ７０２によりサブプログラム１を実行する。ここで、先にサブプログラム１のフローチャート及びサブプログラム１内で実行される割り込みハンドラのフローチャートを説明した後、再び図１のフローチャートに戻って説明する。【００７４】
図２は、図１のフロー内で実行されるサブプログラム１のフローチャートである。
ステップ２０１において、サブプログラム１は、管理テーブル１６００から、取り外し対象のSSDが接続されているスイッチポートのDPCステータス１６０２のエントリを読み出す。
ステップ２０２において、サブプログラム１は、サブプログラム１が実行されているプロセッサ７０２からアクセス可能な対象スイッチポートにおいて、DPCが未起動であった場合（Ｎ）はステップ２０３へ進み、DPCが起動済みであった場合（Ｙ）はサブプログラム１を終了する。【００７５】
DPCが未起動であった場合（Ｎ）、ステップ２０３において、サブプログラム１は対象SSDに関連するI/Oを停止させる。
ステップ２０４において、サブプログラム１は、割り込みハンドラの動作を、「ホットリムーブ」に設定する。つまり、管理テーブル１６００において、対象ドライブスロットに対応するホットリムーブ制御１６０３のエントリを「OFF」から「ON」に書き換える。
ステップ２０５において、サブプログラム１は、サブプログラム１が実行されているプロセッサ７０２からアクセス可能な対象スイッチポートの「DPC  Software  Triggerビット」をセットする。その結果、DPCが起動し、スイッチからプロセッサ７０２へ割り込みが送信される。割り込みを受信したプロセッサ７０２は、割り込みハンドラを実行する。
以上で、サブプログラム１は終了する。【００７６】
図３は、割り込みハンドラのフローチャートである。
ステップ３０１において、割り込みハンドラは、ドライブスロット管理テーブル１６００において、対象スイッチポートのDPCステータス１６０２を更新する。プロセッサ７０２が割り込みハンドラを実行している場合は、DPCステータスの下位１ビットを「１」にセットする。また、プロセッサ７０８が割り込みハンドラを実行している場合は、DPCステータスの上位１ビットを「１」にセットする。【００７７】
ステップ３０２において、割り込みハンドラは、ドライブスロット管理テーブル１６００から、対象ドライブスロットに対応するホットリムーブ制御１６０３のエントリを読み出す。
ステップ３０３において、読み出した結果が「ON（ホットリムーブ）」の場合（Ｙ）は、ステップ３０７へ進む。読み出した結果が「OFF（ホットリムーブではない）」の場合（Ｎ）は、ステップ３０４へ進む。【００７８】
ステップ３０４から３０６は、ストレージコントローラ７０１に対する事前通知無しにDPCが起動した場合、つまり障害発生時の処理である。
ステップ３０４において、割り込みハンドラは、割り込み送信元スイッチポートに関連する新規I/Oの発行を停止させる。
ステップ３０５において、割り込みハンドラは、割り込み送信元スイッチポートに関連する未完了I/Oの処理を中止させる。
ステップ３０６において、割り込みハンドラは、割り込み送信元スイッチポートにおいて障害が検出されたことを、管理インターフェース７１４に表示する。【００７９】
ステップ３０７において、割り込みハンドラは、ドライブスロット管理テーブル１６００から、対象スイッチポートのDPCステータス１６０２を読み出す。
SSDがデュアルポートSSDの場合は、２個の対象スイッチポートがあることになる。
ステップ３０８において、割り込みハンドラは、その２個の対象スイッチポートにおいて、両ポート共にDPCを起動済か否かを判断する。つまり、読み出したDPCステータスが「３」（２ビットの各ビットが「１」「１」）の場合（Ｙ）はステップ３０９へ進み、それ以外の場合（Ｎ）は割り込みハンドラは終了する。
ステップ３０９において、割り込みハンドラは、対象ドライブスロットに対応するシャットダウンLEDを点灯させる。
以上で、割り込みハンドラが終了する。【００８０】
次に、図１のフローチャートの説明に戻る。
ステップ１０３において、ストレージコントローラ７０１は、プロセッサ７０８によりサブプログラム１を実行する。サブプログラム１の内容は前述したとおりであるので、説明を省略する。
ステップ１０４において、オペレーターは、ロケーションLEDとシャットダウンLEDが点灯しているドライブスロットから、対象SSDを取り外す。【００８１】
ステップ１０５において、ストレージコントローラ７０１は、ドライブ管理テーブル１５００及びドライブスロット管理テーブル１６００から、対象SSDに関連するエントリを削除する。
さらに、ストレージコントローラ７０１は、対象ドライブスロットに対応するロケーションLEDを消灯させる。
以上で、実施例１におけるSSDの取り外しが完了する。【００８２】
＜実施例１の効果の説明＞
図１９は、実施例１に係るオペレーターから見たドライブ取り外し手順を示す図である。
先ず、ドライブエンクロージャのスロットからHDDを取り外す場合の手順（１９０４）を説明する。【００８３】
第１のステップ（１９０１）において、オペレーターは管理インターフェース７１４を使って、対象HDDをストレージコントローラ７０１に指示する。
指示を受けたストレージコントローラ７０１は、対象HDDが挿入されているドライブスロット（対象ドライブスロット）において対象HDDへの給電を停止する。その結果、対象ドライブスロットに対応するシャットダウンLEDは点灯する。【００８４】
第２のステップ（１９０２）において、オペレーターは、対象ドライブスロットにおけるシャットダウンLEDの点灯により、対象HDDへの給電停止を確認できる。
第３のステップ（１９０３）において、オペレーターは対象ドライブスロットから対象HDDを取り外す。【００８５】
次に、ドライブエンクロージャのスロットからSSDを取り外す場合の手順（１９０５）を説明する。
第１のステップ（１９０１）において、オペレーターは管理インターフェース７１４を使って、対象SSDをストレージコントローラ７０１に指示する。
指示を受けたストレージコントローラ７０１は、対象SSDを接続する２個のスイッチポート（対象スイッチポート）においてDPCを起動する。その結果、対象SSDが挿入されているドライブスロット（対象ドライブスロット）に対応するシャットダウンLEDは点灯する。【００８６】
第２のステップ（１９０２）において、オペレーターは、対象ドライブスロットにおけるシャットダウンLEDの点灯により、対象SSDの対象スイッチポートにおけるDPC起動を確認できる。
第３のステップ（１９０３）において、オペレーターは対象ドライブスロットから対象SSDを取り外す。【００８７】
このように実施例１によれば、オペレーターは、ドライブの種別に関わらず、HDDとSSDを同様の手順でドライブエンクロージャのスロットから取り外すことができる。
なお、SSDを取り外す際にSSDへの給電を停止するか否かは、任意である。対象スイッチポートにおけるDPC起動操作に加えて、SSDへの給電を停止させてからシャットダウンLEDを点灯させてもよい。あるいは、SSDが対象ドライブスロットから取り外された後に、給電を停止させてもよい。【００８８】
＜実施例１を使用しない、従来技術の例＞
図３３と図３４は、実施例１で説明した方法を使用しない従来技術による場合の、SSD取り外し方法を説明する図である。
取り外しを行う装置構成は、図７、８等で説明した実施例１と同じであるが、取り外し以前に取り外し対象SSDに関連するI/Oを停止しない点と、取り外しに伴い割り込みハンドラの動作を変更しない点が、実施例１の取り外し方法とは異なる。【００８９】
図３３は、従来技術におけるSSD取り外しのフローチャートである。
ステップ３３０１において、ストレージ装置のオペレーターが、ストレージコントローラ７０１への事前通知無しに、対象ドライブスロットから対象SSDを取り外す。つまり、非同期取り外しを行う。
ステップ３３０2において、対象SSDの非同期取り外しの結果、対象スイッチポートにおいてDPCが起動し、プロッセッサ７０２、７０８へ割り込みが送信される。割り込みを受信したプロセッサ７０２，７０８は、割り込みハンドラを実行する。【００９０】
次に、割り込みハンドラのフローチャートを説明した後、再び図３３のフローチャートに戻って説明する。
図３４は、従来技術におけるSSD取り外しフロー内で起動される割り込みハンドラのフローチャートである。【００９１】
ステップ３４０１において、ストレージコントローラ７０１は、対象SSDに関連する新規I/Oの発行を停止する。
ステップ３４０２において、ストレージコントローラ７０１は、対象SSDに関連する未完了I/Oを中止させる。【００９２】
ステップ３４０３において、ストレージコントローラ７０１は、対象SSDにおける障害発生を管理インターフェース７１４に表示する。
ステップ３４０４において、ストレージコントローラ７０１は、ドライブスロット管理テーブル１６００から、対象スイッチポートのDPCステータスを読み出してDPC起動状況を調べる。【００９３】
ステップ３４０５において、２個の対象スイッチポートにおいてDPCが起動済であった場合（Ｙ）は、ステップ３４０６へ進む。それ以外（Ｎ）は割り込みハンドラを終了する。
ステップ３４０６において、ストレージコントローラ７０１は、対象ドライブスロットに対応するシャットダウンLEDを点灯させる。
以上で、図３４の割り込みハンドラが終了する。【００９４】
図３３のフローチャートの説明に戻る。
ステップ３３０３において、オペレーターは、シャットダウンLEDの点灯により、対象スイッチポートにおけるDPC起動を確認する。
以上で、従来技術によるSSD取り外しが終了する。【００９５】
以上のように、従来技術によるSSD取り外し方法では、SSD取り外しを障害として扱わなくてはならない。それに対して、実施例１のSSD取り外し方法は、障害処理を実施する必要はなく、SSDを安全に取り外すことができる。また、SSD取り外しに伴うプロセッサ７０２、７０８の負荷を低減することができる。
【実施例２】
【００９６】
以下、図２０から図２２を参照して、実施例２に係るSSDの取り付け方法を説明する。
始めに、実施例２において、SSDを取り付ける際のフローの概要を示す。
１）ドライブスロットへのSSDの挿入後、先ず取り付け先ドライブスロットに対応するスイッチポートの「DPC  Trigger  Enable」を無効化する。
２）そのスイッチポートの「DPC  Trigger  Status」をクリアする。
３）ドライブスロット対応してに備えられたLEDが、SSD取り外し不可能を示す状態を表示する。
なお、実施例２の説明において、ドライブスロットへ挿入するSSDまたはHDDを、それぞれ「対象SSD」、「対象HDD」と呼ぶ。また、対象SSDまたは対象HDDが挿入されるドライブスロットを「対象ドライブスロット」と呼ぶ。【００９７】
図２０は、実施例２に係るSSD取り付けのフローチャートである。
ステップ２００１において、ストレージ装置のオペレーターが、空いているスロット（対象ドライブスロット）へ対象SSDを挿入する。ストレージコントローラ７０１は、エンクロージャ制御部を介して、SSDの挿入を検出する。
ステップ２００２において、ストレージコントローラ７０１は、プロセッサ７０２によりサブプログラム２を実行する。ここで、先にサブプログラム２のフローチャートを説明した後、再び図２０のフローチャートに戻って説明する。【００９８】
図２１は、実施例２に係るSSD取り付けフロー内で実行されるサブプログラム２のフローチャートである。
ステップ２１０１において、サブプログラム２は、サブプログラム２を実行しているプロセッサ７０２からアクセス可能な対象スイッチポートにおいて、「DPC  Trigger  Enable」を無効化する。この設定をした対象スイッチポートにおいて、DPCは起動不可となる。
ステップ２１０２において，サブプログラム２は、サブプログラム２を実行しているプロセッサ７０２からアクセス可能な対象スイッチポートにおいて、「DPC  Trigger  Status」をクリアする。その結果、対象SSDが正常であれば、サブプログラム２を実行しているプロセッサからアクセス可能な対象スイッチポートと対象SSDの間がリンクアップする。【００９９】
ステップ２１０３において，サブプログラム２は、ドライブ管理テーブル１５００及びドライブスロット管理テーブル１６００に、対象SSDに関連するエントリを追加する。
ステップ２１０４において，サブプログラム２は、対象ドライブスロットに対応するシャットダウンLEDを消灯するように、LED駆動回路８０４または８０８を制御する。実際にシャットダウンLEDが消灯するのは、LED駆動回路８０４と８０８の両方がオフになった場合である。【０１００】
図２０のフローチャートの説明に戻る。
ステップ２００３において、ストレージコントローラ７０１は、プロセッサ７０８によりサブプログラム２を実行する。ここで、対象ドライブスロットに対応するシャットダウンLEDは消灯する。また、対象SSDが正常な場合、対象SSDは動作を開始する。【０１０１】
ステップ２００４において、ストレージコントローラ７０１は、２個の対象スイッチポートと対象SSDの間がリンクアップしたか否かを確認する。２個の対象スイッチポートに接続する２個のリンクが両方リンクアップした場合（Ｙ）は、ステップ２００５ヘ進む。それ以外（Ｎ）はステップ２００８ヘ進む。
ステップ２００５において、ストレージコントローラ７０１は、対象SSDのコンフィグレーションレジスタ等の設定を行う。【０１０２】
ステップ２００６において、ストレージコントローラ７０１は、対象SSDが正常起動したか否かを確認する。正常起動は、例えば、対象SSDのコンフィグレーションレジスタの特定のステータスを読み出すことにより、確認する。
次に、正常起動時（Ｙ）には、ステップ２００７においてストレージコントローラ７０１は、２個の対象スイッチポートにおいて、「DPC  Trigger  Enable」を有効化する。これ以降、対象スイッチポートにおいてエラーが検出された場合に、DPCが起動することになる。【０１０３】
ステップ２００８と２００９は、対象SSDに初期故障等があり、対象SSDの正常起動に失した場合（Ｎ）に実行する処理である。
ステップ２００８において、ストレージコントローラ７０１は、２個の対象スイッチポートにおいてDPCを起動する。
ステップ２００９において、ストレージコントローラ７０１は、対象ドライブスロットに対応するシャットダウンLED及びロケーションLEDを点灯させる。また、ストレージコントローラ７０１は、対象SSDに故障があることを、管理インターフェース７１４に表示する。
そして、シャットダウンLED及びロケーションLEDが点灯したドライブスロットから、オペレーターは対象SSDを取り外し、新しいSSDに交換する。【０１０４】
図２２は、実施例２に係るオペレーターから見たドライブ取り付け手順を示す図である。
先ず、ドライブエンクロージャのドライブスロットへHDDを取り付ける場合の手順（２２０４）を説明する。
第１のステップ（２２０１）において、オペレーターは、空いているスロット（対象ドライブスロット）へ対象HDDを挿入する。
ストレージコントローラ７０１は、エンクロージャ制御部を介してHDDの挿入を検出する。そして、ストレージコントローラ７０１は、対象ドライブスロットにおいてHDDへの給電を開始する。その結果、対象ドライブスロットに対応するシャットダウンLEDは消灯する。【０１０５】
第２のステップ（２２０２）において、オペレーターは、対象ドライブスロットに対応するシャットダウンLEDの消灯により、対象HDDへの電源供給開始を確認できる。
第３のステップ（２２０３）において、オペレーターは、対象ドライブスロットに対応するアクティビティLEDの点滅開始により、HDDの動作開始を確認できる。【０１０６】
次に、ドライブエンクロージャのドライブスロットへSSDを取り付ける場合の手順（２２０５）を説明する。
第１のステップ（２２０１）において、オペレーターは、空いているスロット（対象ドライブスロット）へ対象SSDを挿入する。
ストレージコントローラ７０１は、エンクロージャ制御部を介して、SSDの挿入を検出する。対象ドライブスロットにおいて給電が停止されていた場合は、ストレージコントローラ７０１が電源８１７または８２０に給電開始を指示する。そして、ストレージコントローラ７０１は、２個の対象スイッチポートにおいて、DPCを解除する（「DPC  Trigger  Status」をクリアする）。その結果、対象ドライブスロットに対応するシャットダウンLEDは消灯する。【０１０７】
第２のステップ（２２０２）において、オペレーターは、対象ドライブスロットに対応するシャットダウンLEDの消灯により、対象SSDの対象スイッチポートにおけるDPC解除を確認できる。
第３のステップ（２２０３）において、オペレーターは、対象ドライブスロットに対応するアクティビティLEDの点滅開始により、SSDの動作開始を確認できる。【０１０８】
このように実施例２によれば、オペレーターは、ドライブの種別に関わらず、HDDとSSDを同様の手順でドライブエンクロージャのドライブスロットに取り付けることができる。
【実施例３】
【０１０９】
以下、図２３から図２５を参照して、実施例３に係るSSDの取り外し方法を説明する。
始めに、実施例３において、ドライブスロットからSSDを取り外す際のフローの概要は示す。
１）対象SSDに関連するI/O動作を停止させる。
２）割り込みハンドラの動作を、取り外しに設定する。
３）対象ドライブスロットに対応して備えられたLEDが、対象SSDの取り外し準備完了を示す状態を表示する。
４）対象ドライブスロットから対象SSDを取り外すことにより、対象スイッチポートにおいてDPCを起動させる。
５）対象ドライブスロット対応してに備えられたLEDが、SSD取り外し完了を示す状態を表示する。【０１１０】
図２３は、実施例３に係るSSD取り外しのフローチャートである。
ステップ２３０１において、ストレージ装置７００のオペレーターは、管理インターフェース７１４を介してストレージコントローラ７０１に、対象SSDを指定する。ストレージコントローラ７０１は、対象ドライブスロットに対応するロケーションLEDを点灯させる。
ステップ２３０２において、ストレージコントローラ７０１は、プロセッサ７０２によりサブプログラム３を実行する。ここで、先にサブプログラム３のフローチャートと、サブプログラム３内で実行される割り込みハンドラのフローチャートを説明した後、再び図２３のフローチャートの説明に戻る。【０１１１】
図２４は、図２３のフロー内で実行されるサブプログラム３のフローチャートである。
図２４のフローチャートは、図２のフローチャートからステップ２０５を除いたフローチャートと同様である。つまり、サブプログラム３は、対象スイッチポートの「DPC  Software  Triggerビット」をセットしない。つまり、実施例３では、ソフトウェアによるDPC起動を行わない。それ以外は、サブプログラム３はサブプログラム１と同様のフローチャートであるので、説明を省略する。【０１１２】
次に、図２３のフローチャートの説明に戻る。
ステップ２３０３において、ストレージコントローラ７０１は、プロセッサ７０８によりサブプログラム３を実行する。
ステップ２３０４において、ストレージコントローラ７０１は、ドライブスロット管理テーブル１６００から、対象スイッチポートのDPCステータスを読み出す。２個の対象スイッチポートにおいてDPC起動済み、つまりに対象ドライブスロットに対応するシャットダウンLEDが点灯している場合（Ｙ）は、ステップ２３０６へ進む。それ以外の場合（Ｎ）、つまりに対象ドライブスロットに対応するシャットダウンLEDが消灯している場合は、ステップ２３０５へ進む。【０１１３】
ステップ２３０５において、ストレージコントローラ７０１は、対象ドライブスロットに対応するシャットダウンLEDが点滅させる。
ステップ２３０６において、オペレーターは、ロケーションLEDが点灯し、シャットダウンLEDが点滅または点灯しているドライブスロットから、対象SSDを取り外す。この取り外しの結果、対象スイッチポートにおいてDPCが起動し、図２５の割り込みハンドラが実行される。つまり、実施例３では、対象SSDの取り外しを契機として、DPCを起動させる。【０１１４】
ステップ２３０７において、ストレージコントローラ７０１は、ドライブ管理テーブル１５００及びドライブスロット管理テーブル１６００から、対象SSDに関連するエントリを削除する。さらに、ストレージコントローラ７０１は、対象ドライブスロットに対応するロケーションLEDを消灯させる。【０１１５】
図２５は、実施例３に係る割り込みハンドラのフローチャートである。
図２５のフローチャートは、ステップ２５０３を除いて，図３のフローチャートと同じであるところ、このステップ２５０３において、割り込みハンドラの動作がホットリムーブに設定されている場合には、ステップ２５０９へ進む。対象SSDが取り外された結果割り込みハンドラが実行されているので、DPCステータスの確認を省略することができる。
図２５の残りのステップは、図３と同様なので説明を省略する。また、実施例３における割り込みハンドラの処理を、図２５のフローチャートに替えて図３のフローチャートとしても、実施例３は実施可能である。【０１１６】
以上で、実施例３におけるSSDの取り外しが完了する。
実施例３によれば、オペレーターは実施例１と同様に、シャットダウンLEDの表示に従って、安全にSSDを取り外すことができる。
【実施例４】
【０１１７】
以下、図２６から図２７を参照して、実施例４に係るケーブルの取り外し方法を説明する。
始めに、実施例４において、概要としては、ケーブルスロットからケーブルを取り外す際のフローの概要を示す。
１）対象ケーブルに関連するI/O動作を停止させる。
２）割り込みハンドラの動作を、取り外しに設定する。
３）対象スイッチポートにおいて、ソフトウェアによりDPCを起動させる。
４）対象ケーブルスロット対応してに備えられたLEDが、ケーブル取り外し準備完了を示す状態を表示する。【０１１８】
図２６は、本発明の実施例４に係るケーブル取り外しのフローチャートである。
ステップ２６０１において、ストレージ装置７００のオペレーターは、管理インターフェース７１４を介してストレージコントローラ７０１に、対象ケーブルを指定する。ストレージコントローラ７０１は、対象ケーブルスロットに対応するロケーションLEDを点灯させる。
ステップ２６０２において、ストレージコントローラ７０１は、管理テーブル１８００から、対象スイッチポートのDPCステータス１８０４のエントリを読み出す。【０１１９】
ステップ２６０３において、ストレージコントローラ７０１は、対象スイッチポートにおいて、DPC未起動であった場合（Ｎ）にはステップ２６０４へ進み、DPC起動済であった場合（Ｙ）はステップ２６０７へ進む。
ステップ２６０４において、ストレージコントローラ７０１は、対象ケーブルに関連するI/Oを停止させる。【０１２０】
ステップ２６０５において、ストレージコントローラ７０１は、割り込みハンドラの動作を、「ホットリムーブ」に設定する。つまり、ケーブルスロット管理テーブル１８００において、対象ケーブルスロットに対応するホットリムーブ制御１８０５のエントリを「OFF」から「ON」に書き換える。
ステップ２６０６において、ストレージコントローラ７０１は、対象スイッチポートの「DPC  Software  Triggerビット」をセットする。その結果DPCが起動し、スイッチからプロセッサ７０２またはプロセッサ７０８へ割り込みが送信される。割り込みを受信したプロセッサ７０２または７０８は、割り込みハンドラを実行する。
ここで割り込みハンドラのフローチャートを説明した後、再び図２６のフローチャートに戻って説明する。【０１２１】
図２７は、割り込みハンドラのフローチャートである。
ステップ２７０１において、割り込みハンドラは、ケーブルスロット管理テーブル１８００において、対象スイッチポートのDPCステータス１８０４を更新する。
ステップ２７０２において、割り込みハンドラは、ケーブルスロット管理テーブル１８００から、対象ケーブルスロットに対応するホットリムーブ制御１８０５のエントリを読み出す。【０１２２】
ステップ２７０３において、読み出した結果が「ON（ホットリムーブ）」の場合（Ｙ）は、ステップ２７０７へ進む。読み出した結果が「OFF（ホットリムーブではない）」の場合（Ｎ）は、ステップ２７０４へ進む。
ステップ２７０４から２７０６は、ストレージコントローラ７０１に対する事前通知無しにDPCが起動した場合、つまり障害発生時の処理である。【０１２３】
ステップ２７０４において、割り込みハンドラは、割り込み送信元スイッチポートに関連する新規I/Oの発行を停止させる。
ステップ２７０５において、割り込みハンドラは、割り込み送信元スイッチポートに関連する未完了I/Oの処理を中止させる。【０１２４】
ステップ２７０６において、割り込みハンドラは、割り込み送信元スイッチポートにおいて障害が検出されたことを、管理インターフェース７１４に表示する。
ステップ２７０７において、割り込みハンドラは、対象ケーブルスロットに対応するスイッチLEDを点灯させる。
以上で、割り込みハンドラが終了する。【０１２５】
次に、図２６のフローチャートの説明に戻る。
ステップ２６０７において、オペレーターは、ロケーションLEDとスイッチLEDが点灯しているケーブルスロットから、対象ケーブルを取り外す。
ステップ２６０８において、ストレージコントローラ７０１は、ケーブルスロット管理テーブル１８００から、対象ケーブルに関連するエントリを削除する。さらに、ストレージコントローラ７０１は、対象ケーブルスロットに対応するロケーションLEDを消灯させる。
以上で、実施例４におけるケーブルの取り外しが完了する。【０１２６】
実施例４によれば、オペレーターは、ケーブルのアップストリーム側が接続されたケーブルスロットに対応するスイッチLEDの表示に従って、安全にケーブルを取り外すことができる。
【実施例５】
【０１２７】
以下、図２８から図２９を参照して、実施例５に係るケーブルの取り外し方法を説明する。
始めに、実施例５において、ケーブルスロットからケーブルを取り外す際のフローの概要を示す。
１）対象ケーブルに関連するI/O動作を停止させる。
２）割り込みハンドラの動作を、取り外しに設定する。
３）対象ケーブルスロットに対応して備えられたLEDが、ケーブル取り外し準備完了を示す状態を表示する。
４）対象ケーブルスロットから対象ケーブルを取り外すことにより、対象スイッチポートにおいてDPCを起動させる。
５）対象ケーブルスロット対応してに備えられたLEDが、ケーブル取り外し完了を示す状態を表示する。【０１２８】
図２８は、実施例５に係るケーブル取り外しのフローチャートである。
図２８のフローチャートは、２つのステップ（２８０６、２８０７）を除いて図２６のフローチャートと同様である。
ステップ２８０６において、ストレージコントローラ７０１は、対象ケーブルスロットに対応するスイッチLEDを点滅させる。実施例５は実施例４とは異なり、ソフトウェアによるDPC起動を行わない。【０１２９】
ステップ２８０７おいて、ストレージ装置のオペレーターは、ロケーションLEDが点灯し、且つスイッチLEDが点滅あるいは点灯しているケーブルスロットから、対象ケーブルを取り外す。実施例５は実施例４とは異なり、ケーブルの取り外しを契機としてDPCを起動させる。
図２８の他のステップは図２６のフローチャートと同様であるので、説明を省略する。【０１３０】
図２９は、実施例５に係るケーブル取り外しフロー内で起動される割り込みハンドラのフローチャートである。図２９のフローチャートは、割り込みハンドラが起動される契機以外は図２７のフローチャートと同様であるので、説明を省略する。【０１３１】
実施例５によれば、オペレーターは実施例４と同様に、ケーブルのアップストリーム側が接続されたケーブルスロットに対応するスイッチLEDの表示に従って、安全にケーブルを取り外すことができる。
【実施例６】
【０１３２】
以下、図３０から図３１を参照して、実施例６に係るSSDの取り外し方法を説明する。
始めに、実施例６において、ドライブスロットからSSDを取り外す際のフローの概要を示す。
１）対象SSDに関連するI/O動作を停止させる。
２）DPC起動に伴う割り込み送信を無効化する。
３）対象スイッチポートにおいて、ソフトウェアによりDPCを起動させる。
４）対象ドライブスロット対応してに備えられたLEDが、SSD取り外し準備完了を示す状態を表示する。【０１３３】
図３０は、実施例６に係るSSD取り外しのフローチャートである。
図３０のフローチャートは、図１のフローチャートに対して、ステップ３００２と３００３で実行されるサブプログラムの内容と、ステップ３００４が追加されている点が異なる。【０１３４】
ステップ３００２において、ストレージコントローラ７０１は、プロセッサ７０２により図３１のサブプログラム４を実行する。
ステップ３００３において、ストレージコントローラ７０１は、プロセッサ７０８により図３１のサブプログラム４を実行する。
ステップ３００４において、ストレージコントローラ７０１は、対象ドライブスロットに対応するシャットダウンLEDを点灯させる。
図３０の他のステップは、図１のフローチャートと同様であるので説明を省略する。【０１３５】
図３１は、実施例６に係るSSD取り外しフロー内で実行されるサブプログラム４のフローチャートである。
図３１のフローチャートは、図２のフローチャートに対して、ステップ３１０４で実行される内容が異なる。【０１３６】
ステップ３１０４において、ストレージコントローラ７０１は、対象スイッチポートの「DPC  Interrupt  Enable」を無効化する。これにより、対象スイッチポートにおいてDPCが起動した場合でも、割り込みが送信されなくなる。つまり、実施例６は、実施例１とは異なり、DPC起動に伴って割り込みハンドラを実行しない。
図３１の他のステップは、図２のフローチャートと同様であるので、説明を省略する。【０１３７】
以上説明したように、実施例６では、DPC起動に伴い割り込みが送信されないので、割り込みハンドラが実行されない。つまり、実施例６のSSD取り外し方法では、割り込みハンドラ実行に伴うプロセッサ負荷を低減することができる。
【実施例７】
【０１３８】
以下、図３２を参照して、実施例７に係るケーブルの取り外し方法を説明する。
始めに、実施例７において、ケーブルスロットからケーブルを取り外す際のフローの概要を示す。
１）対象ケーブルに関連するI/O動作を停止させる。
２）DPC起動に伴う割り込み送信を無効化する。
３）対象スイッチポートにおいて、ソフトウェアによりDPCを起動させる。
４）対象ケーブルスロット対応してに備えられたLEDが、ケーブル取り外し準備完了を示す状態を表示する。【０１３９】
図３２は、実施例７に係るケーブル取り外しのフローチャートである。
図３２のフローチャートは、図２６のフローチャートに対して、ステップ２６０４、２６０５の替わりにステップ３２０５を実行することと、ステップ３２０７が追加されている点が異なる。【０１４０】
ステップ３２０５において、ストレージコントローラ７０１は、対象スイッチポートの「DPC  Interrupt  Enable」を無効化する。これにより、対象スイッチポートにおいてDPCが起動した場合でも、割り込みが送信されなくなる。つまり、実施例７は、実施例４とは異なり、DPC起動に伴って割り込みハンドラを実行しない。
ステップ３２０５において、ストレージコントローラ７０１は、対象ケーブルスロットに対応するスイッチLEDを点灯させる。
図３２の他のステップは、図２６のフローチャートと同様であるので、説明を省略する。【０１４１】
以上説明したように、実施例７では、DPC起動に伴い割り込みが送信されないので、割り込みハンドラが実行されない。つまり、実施例７のケーブル取り外し方法では、割り込みハンドラ実行に伴うプロセッサ負荷を低減することができる。
【実施例８】
【０１４２】
以下、図３５と図３６を参照して、実施例８に係るストレージ装置について説明する。
実施例８では、処理の概要として、ドライブエンクロージャ内の２個のスイッチの一方に障害が発生した場合に、２個のスイッチ間を接続したリンクによって、その障害を検出する。次に、障害が発生したスイッチを、前記リンクを用いて正常なスイッチのダウンストリーム側に接続されるように設定する。【０１４３】
図３５は、図７のドライブエンクロージャ７５１の詳細を示す図である。図７に対して図３５は、HDDに関する配線は省略し、コネクタ７７１〜７７４に接続する単一ポートSSD３５０１〜３５０４を追記している。【０１４４】
スイッチ７５２は、アップストリームポート７８１と、ダウンストリームポート７８２〜７８５と、管理ポート７８６を備える。アップストリームポート７８１と、ダウンストリームポート７８２〜７８５は、仮想PCIバス７８０で接続されている。正確には、仮想PCIバス７８０には仮想PCI-PCIブリッジが接続される。ここでは、アップストリームポート７８１及びダウンストリームポート７８２〜７８５が仮想PCI-PCIブリッジを備えている。また、管理ポート７８６は、プロセッサ７０８からスイッチ７５２の初期化時に設定情報を入出力可能なポートであり、例えば、各スイッチポートのアップストリームまたはダウンストリームの設定を変更することができる。スイッチ７５２の各ダウンストリームポートは、DPCを使用可能である。【０１４５】
スイッチ７５４は、アップストリームポート７９１と、ダウンストリームポート７９２〜７９５と、管理ポート７９６を備える。アップストリームポート７９１と、ダウンストリームポート７９２〜７９５は、仮想PCIバス７９０で接続されている。スイッチ７５２と同様に、アップストリームポート７９１及びダウンストリームポート７９２〜７９５は、仮想PCI-PCIブリッジを備えている。また、管理ポート７９６は、プロセッサ７０２からスイッチ７５４の初期化時に設定情報を入出力可能なポートであり、例えば、各スイッチポートのアップストリームまたはダウンストリームの設定を変更することができる。スイッチ７５４の各ダウンストリームポートは、DPCを使用可能である。【０１４６】
ストレージコントローラ７０１は、スイッチ７５２、エンクロージャ制御部７５３及び管理ポート７９６を介して、スイッチ７５４の設定情報の入力と基本リセット（Fundamental  Reset）が可能である。同様に、ストレージコントローラ７０１は、スイッチ７５４、エンクロージャ制御部７５８及び、管理ポート７８６を介して、スイッチ７５２の設定情報の入力と基本リセットが可能である。【０１４７】
信号線７６２は、ダウンストリームポート７８２とダウンストリームポート７９２を接続するクロスリンクである。ストレージ装置７００の正常動作時は、ダウンストリームポート７８２とダウンストリームポート７９２においてDPCを有効化し、且つ信号線７６２をリンクアップさせておく。
ストレージ装置７００において、ドライブエンクロージャ７５１をストレージコントローラ７０１に対してｎ段（ｎは１以上の整数）縦続して接続することが可能であり、同じドライブエンクロージャ内に備えられる２個のスイッチの、ストレージコントローラ７０１からのスイッチ接続段数（n段）は同じである。また、図３５に示すように、単一ポートSSDを収容するドライブエンクロージャ７５１では、n段目スイッチ７５２、７５４のDPCをサポートするダウンストリームポート７８２とダウンストリームポート７９２をクロスリンクで接続する。【０１４８】
次に、実施例８におけるフェールオーバー動作について、図３６を参照して説明する。
ここで、ケーブル７３３に関連するリンクがダウンする障害の発生を想定する。ただし、スイッチ７５２のハードウェアに故障は無いとし、ストレージコントローラ７０１は、管理ポート７８６を介して、スイッチ７５２の設定を変更できる、とする。アップストリームポート７８１に接続されているリンクのダウンにより、スイッチ７５２の全てのダウンストリームポート７８２〜７８５においてリンクダウンが発生する。これらの結果、ストレージコントローラ７０１は、単一ポートSSD３５０１と３５０２をアクセスできなくなる。【０１４９】
信号線７６２のリンクダウンは、スイッチ７５４のダウンストリームポート７９２においてDPCを起動させる。DPC起動に伴うスイッチ７５４からの割り込み送信により、ストレージコントローラ７０１は、スイッチ７５２に関連した障害が発生したことを検出することができる。
障害を検出したストレージコントローラ７０１は、管理ポート７８６を介してスイッチ７５２にアクセスし、スイッチポート７８１を仮想PCIバス７８０から切り離す。【０１５０】
次に、ストレージコントローラ７０１は、管理ポート７８６を介して、スイッチポート７８２をダウンストリームポートからアップストリームポートへ設定変更し、スイッチ７５２を基本リセットする。
次に、スイッチ７５４のダウンストリームポート７９２において、ストレージコントローラ７０１は、DPCステータスレジスタ６００の「DPC  Trigger  Statusビット」をクリアする。その結果、ダウンストリームポート７９２以下がリンクアップする。スイッチ７５２は、スイッチポート７８２をアップストリームポートとする新しい設定でホットリセット（Hot  Reset）される。【０１５１】
スイッチ７５２がホットリセットされた後、ストレージコントローラ７０１は、スイッチ７５４とスイッチ７５２を介して、単一ポートSSD３５０１と３５０２をアクセス可能になる。【０１５２】
ドライブエンクロージャ７５１は、図１１〜図１３のドライブエンクロージャ７２１と同様な構成である。ドライブエンクロージャ７５１のスイッチパッケージ１２１０は、スイッチ７５２、エンクロージャ制御７５３及びスイッチLED１２１１、１２１５を備える。ドライブエンクロージャ７５１のスイッチパッケージ１２３０は、スイッチ７５７、エンクロージャ制御７５８及びスイッチLED１２３１、１２３５を備える。【０１５３】
上記の通り、ドライブエンクロージャ７５１では、ケーブル７３３がリンクダウンしている場合でも、スイッチ７５２を使用中の場合がある。そこで、ケーブル７３３と信号線７６２の両方がリンクダウンしている場合に、ドライブエンクロージャ７５１のスイッチLED１２１１が点灯されることにする。ストレージ装置７００のオペレーターは、ドライブエンクロージャ７５１のスイッチLED１２１１が点灯している場合に、ドライブエンクロージャ７５１のスイッチパッケージ１２１０を取り外すことができる。【０１５４】
同様に、ケーブル７３４と信号線７６２の両方がリンクダウンしている場合に、ドライブエンクロージャ７５１のスイッチLED１２３１が点灯されることにする。ストレージ装置７００のオペレーターは、ドライブエンクロージャ７５１のスイッチLED１２３１が点灯している場合に、ドライブエンクロージャ７５１のスイッチパッケージ１２３０を取り外すことができる。【０１５５】
単一ポートSSD３５０１から３５０４の取り外し手順は、SSDを接続しているスイッチポートが１個になる点が異なるだけで、実施例１等におけるデュアルポートSSDの場合と同様である。【０１５６】
以上、本発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
例えば、ドライブエンクロージャにおいてHDDとSSDがコネクタを共用する場合について実施例を説明したが、SSD専用のドライブエンクロージャ等において、SSD専用のコネクタにSSDを接続している場合であっても、本発明のSSD取り外し方法は適用可能であることは言うまでもない。
【符号の説明】
【０１５７】
７００…ストレージ装置
７０１…ストレージコントローラ
７２１、７５１…ドライブエンクロージャ
７０２、７０８…プロセッサ
７０５、７１１…メモリ
７２２、７２７、７５２、７５７…（PCI-Express）スイッチ
７０３、７０９…フロントエンドインターフェース
７０６、７１２…バックエンドインターフェース
７２４、７２９、７５４、７５９…エクスパンダ
７０７、７１３…ダウンストリームポート
７２３、７２８、７５３、７５８…エンクロージャ制御部
７４１〜７４４、７７１〜７７４…コネクタ
７１４…管理インターフェース
【図１】
0005898790.tif 000002
【図２】
0005898790.tif 000003
【図３】
0005898790.tif 000004
【図４】
0005898790.tif 000005
【図５】
0005898790.tif 000006
【図６】
0005898790.tif 000007
【図７】
0005898790.tif 000008
【図８】
0005898790.tif 000009
【図９】
0005898790.tif 000010
【図１０】
0005898790.tif 000011
【図１１】
0005898790.tif 000012
【図１２】
0005898790.tif 000013
【図１３】
0005898790.tif 000014
【図１４】
0005898790.tif 000015
【図１５】
0005898790.tif 000016
【図１６】
0005898790.tif 000017
【図１７】
0005898790.tif 000018
【図１８】
0005898790.tif 000019
【図１９】
0005898790.tif 000020
【図２０】
0005898790.tif 000021
【図２１】
0005898790.tif 000022
【図２２】
0005898790.tif 000023
【図２３】
0005898790.tif 000024
【図２４】
0005898790.tif 000025
【図２５】
0005898790.tif 000026
【図２６】
0005898790.tif 000027
【図２７】
0005898790.tif 000028
【図２８】
0005898790.tif 000029
【図２９】
0005898790.tif 000030
【図３０】
0005898790.tif 000031
【図３１】
0005898790.tif 000032
【図３２】
0005898790.tif 000033
【図３３】
0005898790.tif 000034
【図３４】
0005898790.tif 000035
【図３５】
0005898790.tif 000036
【図３６】
0005898790.tif 000037