(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023141128
(43)【公開日】2023-10-05
(54)【発明の名称】RAIDコントローラ及び製造装置
(51)【国際特許分類】
G06F 3/06 20060101AFI20230928BHJP
【FI】
G06F3/06 540
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022047278
(22)【出願日】2022-03-23
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(74)【代理人】
【識別番号】100091487
【弁理士】
【氏名又は名称】中村 行孝
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118843
【弁理士】
【氏名又は名称】赤岡 明
(74)【代理人】
【識別番号】100118876
【弁理士】
【氏名又は名称】鈴木 順生
(72)【発明者】
【氏名】柳瀬 康雄
(57)【要約】
【課題】記憶装置を導入することに伴う作業負荷を軽減可能にする。
【解決手段】本実施形態に係るRAIDコントローラは、第2の設定に変更する設定プログラムを格納した記憶装置が接続されたときに、前記記憶装置から前記設定プログラムを読み出し、前記設定プログラムを実行し、前記記憶装置を取り扱う第1の設定を前記第2の設定に変更する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第2の設定に変更する設定プログラムを格納した記憶装置が接続されたときに、前記記憶装置から前記設定プログラムを読み出し、前記設定プログラムを実行し、前記記憶装置を取り扱う第1の設定を前記第2の設定に変更するRAIDコントローラ。
【請求項2】
前記記憶装置は、第1の鍵により符号化されたデジタル署名を格納しており、
前記RAIDコントローラは、
前記記憶装置からデジタル署名を読み出し、
前記デジタル署名を前記第1の鍵に対応する第2の鍵により復号し、
前記デジタル署名の復号値と、読み出した前記設定プログラムのデータに基づく計算値とに基づき、前記デジタル署名を検証し、
前記デジタル署名の検証結果に応じて、前記設定プログラムを実行する
請求項1に記載のRAIDコントローラ。
【請求項3】
前記RAIDコントローラは、制御プログラムを実行することにより第1乃至第nの前記記憶装置を制御し、
第1乃至第nの前記設定プログラムは、前記第1乃至第nの記憶装置に固有の処理を行う固有プログラムを含み、
前記RAIDコントローラは、前記第1乃至第nの記憶装置に共通する処理を前記制御プログラムに基づき行い、第1乃至第nの前記記憶装置に固有の処理を第1乃至第nの前記設定プログラムの前記固有プログラムに基づき行う
請求項1又は2に記載のRAIDコントローラ。
【請求項4】
前記第2の設定は、前記第1の設定よりも前記記憶装置の容量又は性能を制限する設定である
請求項1乃至3のいずれか一項に記載のRAIDコントローラ。
【請求項5】
前記RAIDコントローラは、前記記憶装置を起動し、起動した前記記憶装置から前記設定プログラムを読み出す
請求項1乃至4のいずれか一項に記載のRAIDコントローラ。
【請求項6】
顧客から注文された記憶装置の装置識別情報と、前記記憶装置を取り扱う第1の設定から変更する第2の設定の内容を識別する設定識別情報とを含む第1テーブルと、前記設定識別情報と、前記第1の設定を前記第2の設定に変更する設定プログラムのプログラム識別情報とを含む第2テーブルと、を管理する管理部と、
前記第2テーブルに含まれる前記プログラム識別情報によって識別される前記設定プログラムを格納した第1記憶部と、
前記顧客から注文された前記記憶装置への前記設定プログラムの書き込み指示を受ける入力部と、
前記書き込み指示で指示された前記記憶装置に対して設定の変更を行う設定プログラムのプログラム識別情報を前記管理部から取得し、取得した前記プログラム識別情報により識別される前記設定プログラムを前記第1記憶部から取得する処理部と、
前記処理部によって取得された前記設定プログラムを前記顧客から注文された記憶装置に書き込むコントローラと、
を備えた製造装置。
【請求項7】
前記第2テーブルに含まれる前記プログラム識別情報によって識別される前記設定プログラムのデジタル署名を格納した第2記憶部をさらに備え、
前記処理部は、取得した前記プログラム識別情報により識別される前記設定プログラムのデジタル署名を前記第2記憶部から取得し、
前記コントローラは、前記処理部によって取得された前記デジタル署名を、前記記憶装置に書き込む
請求項6に記載の製造装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、RAIDコントローラ及び製造装置に関する。
【背景技術】
【0002】
HDD(Hard Disk Drive)及びSDD(Solid State Drive)などの複数の記憶装置を組み合わせることで仮想的な1台の記憶装置として運用の信頼性及び可用性を向上させる技術としてRAID(Redundant Arrays of Inexpensive Disks)が知られている。RAIDは、RAIDファームウェアを実行するコントローラ(RAIDコントローラ)の制御によって実現される。RAIDファームウェアは、RAIDコントローラ内のフラッシュメモリに書き込まれている。RAIDを構成する記憶装置群に新たに記憶装置を導入する場合、RAIDファームウェアを、新たな記憶装置に対応するように更新する必要がある。しかし、RAIDファームウェアを更新するためには作業員が現地に赴き、アップデートツールを使用して手動でRAIDファームウェアを更新する必要があった。
【0003】
また新たに記憶装置を導入する際、RAIDコントローラとの互換性及び信頼性の確保のため、記憶装置における設定(初期設定)を別の設定に変更する必要がある場合がある。この場合、記憶装置メーカー側において記憶装置の設定を変更する作業が必要になり、記憶装置が高価になるという問題があった。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008-217326号公報
【特許文献2】特開2005-038411号公報
【特許文献3】特開2004-038448号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施形態は、記憶装置を導入することに伴う作業負荷を軽減可能にするRAIDコントローラ及び製造装置を提供する。
【課題を解決するための手段】
【0006】
本実施形態に係るRAIDコントローラは、第2の設定に変更する設定プログラムを格納した記憶装置が接続されたときに、前記記憶装置から前記設定プログラムを読み出し、前記設定プログラムを実行し、前記記憶装置を取り扱う第1の設定を前記第2の設定に変更する。
【図面の簡単な説明】
【0007】
【
図1】第1実施形態に係るホスト計算機システムの一例のブロック図。
【
図2】第1実施形態に係るRAIDコントローラの一例のブロック図。
【
図3】第1実施形態に係るRAIDコントローラにおけるフラッシュメモリの領域の例を示す図。
【
図4】第1実施形態に係る記憶装置に格納される各種データ例を示す図。
【
図5】第1実施形態に係る記憶装置の初期化処理の一例のフローチャート。
【
図6】第1実施形態に係る設定プログラムの動作の一例のフローチャート。
【
図8】第2実施形態に係る受注管理テーブルの一例を示す図。
【
図9】第2実施形態に係る設定プログラムテーブルの一例を示す図。
【
図10】第2実施形態に係る製造画面の一例を示す図。
【
図11】第2実施形態に係る書き込み準備処理の一例のフローチャート。
【
図12】第2実施形態に係る書き込み処理の一例のフローチャート。
【発明を実施するための形態】
【0008】
以下、図面を参照しながら、本発明の実施形態について説明する。
【0009】
(第1実施形態)
図1は、第1実施形態に係るホスト計算機システム1のブロック図である。
ホスト計算機システム1は、ホスト計算機10と、RAID(Redundant Arrays of Inexpensive Disks)コントローラ20と、複数の記憶装置30-1乃至30―n(以下、30-1~30-nと記載する)を備える。
【0010】
記憶装置30-1~30-nは、RAIDを構成する記憶装置群300に相当する。RAIDは、複数の記憶装置を組み合わせることで仮想的な1台の記憶装置として運用の信頼性及び可用性を向上させる技術である。RAIDの種類(レベル)として、仕組みの違いによりRAID0からRAID6までのレベルがあるが、本実施形態ではRAIDの種類は問わない。記憶装置30-1~30-nは、HDD(Hard Disk Drive)又はSSD(Solid State Drive)等である。任意の1つの記憶装置を記憶装置30と記載する場合がある。各記憶装置には、記憶装置を識別する番号である記憶装置番号が与えられている。
【0011】
ホスト計算機10は、操作者であるユーザーとの入出力インターフェイス装置及びCPU(Central Processing Unit)等の演算装置を含む。ホスト計算機10は、RAIDコントローラ20に記憶装置群300に対するデータの読み出し要求及びデータの書き込み要求を出力する。入出力インターフェイス装置は、キーボード、マウス等の入力インターフェイス及び表示装置等の出力インターフェイスを含む。ホスト計算機10は、記憶装置30-1~30-nと接続するための複数のスロットB_1~B_nを備えている。スロットB_1~B_nは、記憶装置を接続するための接続ポートの一例である。記憶装置30-1~30-nはスロットB_1~B_nに挿抜できるようになっている。それぞれのスロットB_1~B_nに1番~n番のスロット番号が与えられている。
【0012】
記憶装置番号は、RAIDコントローラ20と各記憶装置30-1~30-nとを接続するケーブルA_1~A_nに割り当てられた固定の番号(ケーブル番号)に一致する。また、記憶装置番号(又はケーブル番号)は、ホスト計算機10のスロット番号と対応している。例えば、記憶装置30-1は、1番の記憶装置番号を有し、1番のスロットに挿入されている。
【0013】
スロットB_1~B_nのそれぞれは、ホスト計算機システム1のユーザーによって識別できるようになっていてもよい。例えば、スロットB_1~B_nのそれぞれには、ケーブル番号に対応するシールが貼られていてもよい。
【0014】
RAIDコントローラ20は、ホスト計算機10からの要求を受け、記憶装置群300に対してデータの読み出し及びデータの書き込みを行う。RAIDコントローラ20は、RAIDファームウェア(プログラム)を実行することにより、記憶装置30-1~30-nを制御する。RAIDコントローラ20は、RAIDファームウェアを実行するプロセッサーを含む。
【0015】
図2は、RAIDコントローラ20のブロック図である。RAIDコントローラ20は、RAID技術によって、複数の記憶装置30-1~30-nから論理的なボリュームを構成し、運用の性能及び耐障害性を向上させる。RAIDコントローラ20は、入出力(I/O)プロセッサー210と、主記憶メモリ220と、フラッシュメモリ230と、記憶装置インターフェイス240と、ホストインターフェイス250とを備える。
【0016】
I/Oプロセッサー210は、RAIDコントローラ20全体の制御を行う。
【0017】
記憶装置インターフェイス240は、RAIDコントローラ20が記憶装置30と接続するためのインターフェイスである。
【0018】
ホストインターフェイス250は、RAIDコントローラ20がホスト計算機10と接続するためのインターフェイスである。
【0019】
主記憶メモリ220は、SRAM又はDRAM等の揮発性メモリにより構成される。但し、主記憶メモリ220が不揮発性メモリにより構成されてもよい。主記憶メモリ220は、例えばI/Oプロセッサー210の作業領域として用いられる。フラッシュメモリ230は、不揮発性メモリから構成される。フラッシュメモリ230は後述する各種プログラムを記憶している。
【0020】
主記憶メモリ220とフラッシュメモリ230は、I/Oプロセッサー210によって仮想アドレス空間にマップされる。これにより、I/Oプロセッサー210は、フラッシュメモリ230に格納されているプログラムを直接実行することができる。
【0021】
図3及び
図4を参照して、ホスト計算機10が扱うデータ及びプログラムについて説明する。
【0022】
図3は、フラッシュメモリ230における各種領域の配置を示す図である。フラッシュメモリ230は、ファームウェア領域231と、設定プログラム領域232-1~232―nとを備える。任意の1つの設定プログラム領域を設定プログラム領域232と記載する場合がある。
【0023】
ファームウェア領域231には、RAIDファームウェア241が予め格納されている。RAIDファームウェア241は、RAIDコントローラ20を制御するための制御プログラムである。RAIDコントローラ20は制御プログラムを実行することにより複数の記憶装置30-1~30―n、又は記憶装置群300を制御する。したがって、RAIDファームウェア241は複数の記憶装置30-1~30―n又は記憶装置群300を制御するための制御プログラムである。
【0024】
設定プログラム領域232-1~232―nは、記憶装置30-1~30―nにそれぞれ格納されている設定プログラム(
図4参照)をロードして格納するための領域である。RAIDコントローラ20が記憶装置30-1~30―nから設定プログラムをロードする前は、設定プログラム領域232-1~232―nは空の状態でよい。
【0025】
設定プログラム領域232は、一例として、RAIDコントローラ20に接続可能な記憶装置30の最大数と同数もしくは同数より多く存在する。それぞれの設定プログラム領域232-1~232―nには、1~nの領域番号が与えられている。また、領域番号と記憶装置番号は1対1に対応している。例えば、設定プログラム領域232-1は、記憶装置30-1が対応しており、設定プログラム領域232-1には、記憶装置30-1のための設定プログラムが格納される。
【0026】
図4は、記憶装置30が格納されている各種データの配置例を示す図である。記憶装置30には、ユーザーデータ310と、デジタル署名320と、設定プログラム330が格納されている。
図4では任意の1つの記憶装置30におけるデータの配置が示されている。より詳細には、記憶装置30-1~30-nにはそれぞれ、ユーザーデータ310-1~310―nと、デジタル署名320-1~320―nと、設定プログラム330-1~330―nと、が格納されている。
【0027】
ユーザーデータ310は、ホスト計算機10から読み出し及び書き込みされるデータである。
【0028】
デジタル署名320は、設定プログラム330のデータに基づく計算値を秘密鍵で暗号化したデータである。設定プログラム330のデータに基づく計算値は、一例として設定プログラム330のハッシュ値である。設定プログラム330のビット列又はバイト列(すなわち設定プログラムのファイルイメージ)をハッシュ関数に入力することによりハッシュ値が計算される。本実施形態の例では、設定プログラム330のデータに基づく計算値はハッシュ値であるが、設定プログラム330から不可逆に値を導出できる限り、他の値でもよい。RAIDファームウェア241には、秘密鍵とのペアとなる公開鍵が含まれている。公開鍵は、デジタル署名320の復号化に用いられる。設定プログラム330-1~330-nのハッシュ値は、それぞれ同じ秘密鍵で暗号化されており、各デジタル署名の復号に必要な公開鍵は同じである。秘密鍵は、設定プログラム330のデータに基づく計算値を暗号化(符号化)する第1の鍵に対応し、公開鍵は、第1の鍵で暗号化された計算値を復号する第2の鍵に対応する。
【0029】
設定プログラム330は、ホスト計算機10及びRAIDコントローラ20の少なくとも一方と、記憶装置30との互換性、信頼性及び接続性の少なくとも1つを確保する目的で、記憶装置30における固有の設定及び処理を行うためのプログラムである。
【0030】
より詳細には、設定プログラム330は、記憶装置30における初期設定を別の設定に変更するためのプログラムを含む。すなわち、設定プログラム330は、記憶装置30を取り扱う第1の設定を第2の設定に変更するためのプログラムを含む。一例として、第1の設定または初期設定は、記憶装置30に予め行われている設定であり、第2の設定に変更する直前の設定である。設定の変更は、例えば記憶装置30に格納されている対象パラメータを変更することで行われる。例えば記憶装置30の容量に関するパラメータ、リンクレート(通信速度)等の性能に関するパラメータ、記憶装置30の状態を表示するLED(Light-Emitting Diode)の発光制御に関するパラメータ(例えば発光パターンのパラメータ)などがある。変更後の設定である第2の設定は一例として、初期設定における記憶容量を制限、又は初期設定における記憶装置の性能(リンクレート等)を制限(クリッピング)する設定であってもよい。本実施形態では記憶装置30における設定の変更を、設定プログラム330を用いて実現することで、記憶装置メーカー等の作業員が記憶装置30の設定の変更する作業を不要とする。
【0031】
また、設定プログラム330は、記憶装置30に固有の処理(例えば変更後の設定に応じた機能、又は新たな機能等)を行うためのプログラムを含む。RAIDファームウェア241が記憶装置30―1~30-nに共通する処理を行うプログラムを含み、設定プログラム330-1~330―nが記憶装置30―1~30-nに固有の処理を行うプログラム(固有プログラム)を含む。固有プログラムは記憶装置30駆動用のドライバを含んでいてもよい。本実施形態では記憶装置30に固有の処理を、設定プログラム330を用いて実現することで、RAIDファームウェア241の更新を不要とする。なお、記憶装置30に固有の処理が存在しない場合は、記憶装置30に固有の処理を行うプログラム(固有プログラム)が設定プログラム330に含まれていなくてよい。
【0032】
記憶装置30においてデジタル署名320と設定プログラム330とが格納される領域は、記憶装置30において予め定められた領域である。一例として、当該領域は、記憶装置30の記憶領域において末尾部分に配置された固定サイズの領域である。デジタル署名320と設定プログラム330は、工場での製造時に記憶装置30に書き込まれるデータである。
【0033】
上記のように、記憶装置30は、記憶装置30自体の設定の変更及び固有の処理を行うための設定プログラム330を格納している。設定プログラム330は、RAIDコントローラ20の起動時に、RAIDファームウェア241(制御プログラム)を実行するRAIDコントローラ20によって記憶装置30から読み込まれ、I/Oプロセッサー210によって実行される。設定プログラム330は、RAIDファームウェア241によって呼び出されることにより実行されることで、記憶装置30における設定が変更(第1の設定から第2の設定に変更)される。また設定プログラム330に含まれる固有プログラムが実行されることで、記憶装置30に固有の処理が行われる。
【0034】
RAIDコントローラ20は、記憶装置30から設定プログラム330をフラッシュメモリ230の該当する設定プログラム領域232にロードし、ロードした設定プログラム330を実行することによって、記憶装置30の設定を変更する(記憶装置30の初期化処理)。より詳細には、ホスト計算機10の電源がONにされることで、RAIDコントローラ20が起動する。RAIDコントローラ20は、フラッシュメモリ230の領域242からRAIDファームウェア241を読み出し、実行する。RAIDコントローラ20は、RAIDファームウェア241によって、様々な初期化処理を実行する。初期化処理の一つとして、記憶装置30の初期化処理がある。
【0035】
図5は、RAIDファームウェア241に基づいて実行される記憶装置30の初期化処理の流れを表すフローチャートである。RAIDコントローラ20は、記憶装置30-1から記憶装置30-nまで順番に、記憶装置30の初期化処理2310を実行する。ホスト計算機10のスロットに記憶装置30が実装されていない場合は、その記憶装置30については初期化処理をスキップする。以下、本初期化処理2310について詳細に説明する。
【0036】
まず、RAIDコントローラ20は記憶装置30を起動する(ステップS2310-1)。例えば複数のスロットを順番に選択し、選択したスロットの記憶装置30を起動する。RAIDコントローラ20は、起動した記憶装置30と接続される。
【0037】
次に、RAIDコントローラ20は、記憶装置30の種類に依存しない基本的な初期化設定を行う(ステップS2310-2)。例えば基本的な初期化設定として、フォーマット処理を行ってもよい。
【0038】
次に、RAIDコントローラ20は、記憶装置30の予め定められた領域に格納されているデジタル署名320を読み込み、デジタル署名320を検証する(ステップS2310-3)。具体的には、デジタル署名320をRAIDファームウェアに含まれている公開鍵を用いて復号化して、ハッシュ値(復号ハッシュ値又はデジタル署名320の復号値)を取得する。またRAIDコントローラ20は、記憶装置30の予め定められた領域に格納されている設定プログラム330を主記憶メモリ220等に読み出し、設定プログラム330のハッシュ値を計算する。ハッシュ値の計算のアルゴリズムは予めRAIDファームウェアに格納されている。設定プログラム330から計算したハッシュ値(計算ハッシュ値又は設定プログラム330のデータに基づく計算値)と、復号ハッシュ値とを比較し、両者が一致するか検証する。
【0039】
復号ハッシュ値と計算ハッシュ値が一致することが検出された場合(ステップS2310-4のYES)、すなわち検証が成功した場合、記憶装置30に格納されている設定プログラム330が、正当であることが保証される。ここで、設定プログラム330が正当であるとは、設定プログラム330が改竄されていない状態、あるいは、破損していない状態であることを指す。
【0040】
設定プログラム330が正当であることが確認された場合は、設定プログラム330が、記憶装置30からフラッシュメモリ230の該当する設定プログラム領域にロードされる(ステップS2310-5)。より詳細には、当該記憶装置が有する記憶装置番号に対応する設定プログラム領域に設定プログラム330がロードされる。例えば、記憶装置30-1に格納されている設定プログラムは、設定プログラム領域232-1にロードされる。
【0041】
RAIDコントローラ20(I/Oプロセッサー210)が、設定プログラム領域232にロードされた設定プログラム330を実行する(ステップS2310-6)。これにより記憶装置30における設定が初期設定から別の設定に変更される。
【0042】
一方、復号ハッシュ値と計算ハッシュ値が一致しないことが検出された場合(ステップS2310-4のNO)、すなわち検証が失敗した場合、設定プログラム330はロードされない。この結果、記憶装置30における設定の変更は行われない。この場合、記憶装置30は、RAIDファームウェアにより制御され、RAIDファームウェア241で実装されている基本的な処理が行われるのみである。すなわち、設定プログラム330がロードされないため、記憶装置30に固有の処理は行われない。また、記憶装置30は初期設定のまま動作し得る。
【0043】
スロットに挿入されているすべての記憶装置30について上述の各ステップの処理が行われると、初期化処理2310は終了する。
【0044】
図6は、ステップS2310-6でI/Oプロセッサー210が設定プログラム330を実行することにより、記憶装置30の設定を変更する処理(設定処理3300)の例を示すフローチャートである。
【0045】
記憶装置30の容量を制限する設定が行われる(ステップS3300-1)。例えば記憶装置30における初期の設定が容量X[GB]である場合に、Xより小さいY[GB]に制限する。例えば、SSDの寿命を延ばすために、SSDの容量を制限して余剰領域を増やす目的の場合にこのような制限が行われる。あるいは、それぞれ容量が異なる旧タイプの記憶装置と新タイプの記憶装置とを組み合わせてRAIDを構成する場合において、新タイプの記憶装置の容量を旧タイプの記憶装置の容量と同じにする場合にこのような制限が行われる。なお、変更後の容量の値(上記の例ではYの値)は、設定プログラム330に格納されている。
【0046】
次に、記憶装置30のリンクレート(通信速度)を制限する設定が行われる(ステップS3300-2)。例えば、ホスト計算機10の推奨リンクレート(例えば6Gbps)が記憶装置30の最大リンクレート(例えば12Gbps)より低いとする。この場合に記憶装置30のリンクレートを記憶装置30に設定されている初期のリンクレートから、ホスト計算機10の推奨リンクレートに設定する。これにより、信頼性を確保する。なお、推奨リンクレートの値は設定プログラム330に格納されている。
【0047】
次に、記憶装置30におけるLEDの発光制御の設定が変更される(ステップS3300-3)。ホスト計算機10に複数の異なる種類の記憶装置30を実装する場合に、全ての記憶装置30でLED点滅方法を統一するために、LEDの発光制御の設定を変更する。なお、変更後のLEDの発光制御(例えば発光パターン)を示す情報は設定プログラム330に格納されている。発光パターンの例として、異常が検知された場合に、LEDを点灯させる場合に、点灯の周期及び点灯の色の少なくとも一方がある。
【0048】
なお、ここで示す設定はあくまで一例であり、他にも様々な設定が有りうる。また
図6の動作例では3つの設定を行ったが、いずれか1つ又は2つの設定を行うことも可能である。
【0049】
ここで、リビルドについて説明する。
リビルドとは、RAID1、RAID5又はRAID6のような冗長化されたRAIDレベルにおいて、故障した記憶装置を交換したときに、故障していない別の記憶装置から交換した新しい記憶装置にデータを復元(コピー)する処理のことである。
【0050】
本実施形態においては、リビルドの対象となるのはユーザーデータ310のみであり、デジタル署名320と設定プログラム330はリビルド対象外とする(
図4参照)。なぜならば、設定プログラム330は設定プログラム330自体を格納する記憶装置30の設定を行うプログラムであり、リビルドによって他の記憶装置30から設定プログラムをコピーすると、その前提が崩れてしまうためである。すなわち、デジタル署名320と設定プログラム330をコピーすると、RAIDコントローラ20を再起動したときにデジタル署名を用いた検証が失敗することになる。
【0051】
以上、記憶装置30における設定プログラム330を、RAIDコントローラ20の起動時に読み込み、実行することで、記憶装置30における設定を変更する処理及び記憶装置30に固有の処理を行うことを、作業員及び記憶装置メーカー等の作業負荷なく実現できる。
【0052】
本実施形態では複数の記憶装置はRAIDを構成していたが、複数の記憶装置がRAIDを構成していなくとも、例えばそれぞれ別個の単独の記憶装置として用いる場合も可能である。また記憶装置の個数は、複数でなく、1でもよい。
【0053】
第1実施形態によれば、HDDやSSD等の記憶装置に書き込まれた設定プログラムをRAIDコントローラが読み出して実行することで、記憶装置における設定を変更ができる。よって、記憶装置メーカー側での記憶装置側への設定変更作業が不要となり、低コストを実現できる。
【0054】
また、記憶装置に固有の処理を行う設定プログラムをRAIDファームウェアから独立させて用意するため、新たな記憶装置を導入する場合にも、新たな記憶装置の機能をサポートするためにRAIDファームウェアの更新が不要になる。よって、保守作業の低コスト化を実現できる。
【0055】
(第2実施形態)
第2実施形態では、ホスト計算機とRAIDコントローラと複数の記憶装置とをセットとしたホスト計算機システムを製造及び出荷する製造工場において、顧客の注文に応じた記憶装置を、受注管理システムと連携して、効率的に作成する。本実施形態において記憶装置を作成するとは、顧客の注文に応じた設定を記憶装置に行うための設定プログラムとデジタル署名とを当該記憶装置に書き込むことを意味する。具体的には記憶装置を取り扱う第1の設定を第2の設定に変更するための設定プログラムとデジタル署名とを記憶装置に書き込むことである。設定プログラム等が書き込まれた記憶装置はホスト計算機等と一緒にホスト計算機システムとして顧客に出荷された後、顧客側に設置され、第1実施形態に従って動作する。記憶装置における設定プログラムが実行され、記憶装置における第1の設定(初期設定)が顧客の注文に応じた設定に変更される。記憶装置は任意のメーカーから製造工場に納品されたものでもよい。本実施形態ではホスト計算機システムにおける記憶装置の個数は複数であるが、記憶装置の個数は1つでもよい。
【0056】
図7は、第2実施形態に係る製造装置2のブロック図である。製造装置2は、製造工場に設置される。
【0057】
製造装置2は、入出力インターフェイス装置40と、製造用ホスト計算機50(処理部)と、RAIDコントローラ60と、受注管理ホスト計算機80(受注管理システム)と、管理用記憶装置90と、を備える。製造装置2には、記憶装置70-1~70-nが製造用ホスト計算機50のスロットE_1~E_nを介して接続可能である。
【0058】
それぞれの記憶装置70-1~70-nには記憶装置番号1~nが与えられている。記憶装置70-1~70-nは、HDDやSSD等である。記憶装置70-1~70-nを纏めて記憶装置群700と記載する。また記憶装置70-1~70-nのうちの任意の1台を記憶装置70と記載する場合がある。
【0059】
入出力インターフェイス装置40は、製造装置2のユーザー(工場の製造担当者)が、製造用ホスト計算機50に指示を与える入力部である入力インターフェイスと、ユーザーにデータ又は情報を提示する出力部である出力インターフェイス(表示装置)とを含む。出力インターフェイスは一例として、液晶ディスプレイ、有機エレクトロルミネッセンスディスプレイ、又はその他の方式のディスプレイを含む。ディスプレイは、製造用ホスト計算機50上で動作するアプリケーションである製造用プログラム55の画面(
図10の製造画面51参照)を表示する。入力インターフェイスはキーボード又はマウス等の入力装置でもよいし、出力インターフェイスに設けられたタッチパネルでもよい。入出力インターフェイス装置40は、LAN(Local Area Network)等のネットワークで製造用ホスト計算機50と接続されていてもよいし、ケーブル又は近接無線により製造用ホスト計算機50と直接接続されていてもよい。
【0060】
製造用ホスト計算機50には記憶装置70-1~70―nを接続するためのn個のスロットE_1~E_nが設けられている。スロットE_1~E_nのうちの任意の1つのスロットをスロットEと記載する。記憶装置70はスロットEに挿抜できるようになっている。スロットEは、記憶装置70を製造用ホスト計算機50に接続するための接続ポートの一例である。それぞれのスロットにはスロット番号が与えられている。各スロットには、スロットのストット番号に対応する記憶装置番号(例えば同じ番号)の記憶装置が挿入される。
【0061】
スロットE_1~E_nはRAIDコントローラ60との間をそれぞれケーブルD_1~D_nによって1対1で接続されている。ケーブルD_1~D_nには1番からの連番のケーブル番号が与えられている。例えば、スロットの1番に記憶装置70-1を挿入すると、記憶装置70-1はケーブル1番を経由して、RAIDコントローラ60と接続される。スロットE_1~E_nのそれぞれには、ケーブル番号に対応するシールが貼られていてもよい。
【0062】
管理用記憶装置90は、受注管理テーブル81(
図8参照)と、設定プログラムテーブル82(
図9参照)と、設定プログラム83と、設定プログラムのデジタル署名84とを格納している。より詳細に、管理用記憶装置90は、設定プログラムテーブル82に登録されている全ての設定プログラムについて全てのレビジョンのファイル(設定プログラムイメージファイル)を格納している。設定プログラムのデジタル署名とは、具体的には、設定プログラムイメージファイルのデジタル署名のことである。管理用記憶装置90において設定プログラム83を格納する部分は、プログラム記憶部(第1記憶部)に対応する。管理用記憶装置90においてデジタル署名84を格納する部分は、デジタル署名記憶部(第2記憶部)に対応する。なお、本例では、受注管理テーブル81、設定プログラムテーブル82、設定プログラム83及びデジタル署名84は同じ記憶装置に格納されているが、別々の記憶装置に格納されていてもよい。
【0063】
管理用記憶装置90は、受注管理ホスト計算機80とLAN等のネットワークで接続されていてもよいし、ケーブル又は近接無線により直接接続されていてもよい。
【0064】
製造用ホスト計算機50は、RAIDコントローラ60及び受注管理ホスト計算機80を用いて、顧客から注文されたホスト計算機に搭載する記憶装置を作成するための処理を行う処理部である。製造用ホスト計算機50の機能は、プロセッサーが製造用プログラム55を実行することにより実現される。製造用ホスト計算機50は、受注管理ホスト計算機80にダウンロードを要求することによって、受注管理ホスト計算機80は管理用記憶装置90から、記憶装置70-1~70―n用に設定プログラムイメージファイルとそのデジタル署名をダウンロードする。
【0065】
製造用ホスト計算機50は、顧客への出荷用の記憶装置70に、設定プログラム83とデジタル署名84とを書き込むようにRAIDコントローラ60に要求する。より詳細には、製造用ホスト計算機50は、記憶装置70-1~70―nに対して、記憶装置70-1~70―n用の設定プログラム83-1~83-nとデジタル署名84-1~84-nとを書き込むようにRAIDコントローラ60に要求する。
【0066】
RAIDコントローラ60は、製造用ホスト計算機50からの要求を受けて、記憶装置70に設定プログラム83とデジタル署名84とを書き込む。より詳細には、製造用ホスト計算機50は、記憶装置70-1~70―nに、記憶装置70-1~70―n用の設定プログラム83-1~83-nとデジタル署名84-1~84-nとを書き込む。RAIDコントローラ60は、RAIDファームウェア61を実行することにより、記憶装置70への書き込みを制御する。RAIDファームウェア61は、RAIDコントローラ60のメーカーによって提供される。記憶装置70への書き込みを制御するコントローラとして、RAID以外のコントローラを用いてもよい。
【0067】
受注管理ホスト計算機80は、ホスト計算機の受注管理、より詳細にはホスト計算機、RAIDコントローラ及び複数の記憶装置を含むホスト計算機システム(
図1参照)の受注管理を行う。受注管理ホスト計算機80は、受注管理データベース88を備え、受注管理データベース88によって受注管理テーブル81及び設定プログラムテーブル82を管理する。受注管理ホスト計算機80は、受注管理テーブル81及び設定プログラムテーブル82を管理する管理部に対応する。受注管理ホスト計算機80は、製造用ホスト計算機50とLAN等のネットワークで接続されていてもよいし、ケーブル又は近接無線により直接接続されていてもよい。
【0068】
デジタル署名は、秘密鍵を保持するホスト計算機(秘密鍵管理ホスト計算機)において、設定プログラムイメージファイルのハッシュ値を(設定プログラムのハッシュ値)を秘密鍵で暗号化することで作成される。秘密鍵管理ホスト計算機は一般にネットワークから遮断されている。秘密鍵管理ホスト計算機は、出荷するホスト計算機とは別のホスト計算機である。秘密鍵管理ホスト計算機が、設定プログラムイメージファイルのハッシュ値を秘密鍵で暗号化(符号化)することによりデジタル署名が生成される。ハッシュ値の計算は、秘密鍵管理ホスト計算機で行ってもよいし、受注管理ホスト計算機80、製造用ホスト計算機50あるいは他の任意の装置で行ってもよい。生成されたデジタル署名は、秘密鍵管理ホスト計算機に外部接続されたUSBメモリ等の記録媒体に書き込まれる。記録媒体は受注管理ホスト計算機80に外部接続されることで、ネットワークを介さず受注管理ホスト計算機80にアップロードされる。秘密鍵とペアになる公開鍵は、出荷用のホスト計算機に保持されている。例えば出荷用のホスト計算機おけるRAIDファームウェア等に保持されている。秘密鍵は、設定プログラムのデータに基づく計算値(例えばハッシュ値)を暗号化(符号化)する第1の鍵に対応し、公開鍵は、第1の鍵で暗号化された計算値(例えばハッシュ値)を復号する第2の鍵に対応する。
【0069】
図8は、管理用記憶装置90における受注管理テーブル81の一例を示す図である。顧客からホスト計算機の注文(ホスト計算機システムの注文)を受けると、受注管理ホスト計算機80は、受注管理データベース88を介して、ユーザーから注文の入力を受ける。受注管理ホスト計算機80は、注文されたホスト計算機に関する部品構成及びの部品の設定を、受注管理テーブル81に格納する。ホスト計算機に関する部品の種類は多数あるが、本実施形態では、ホスト計算機の部品が記憶装置である場合を示す。
【0070】
受注管理テーブル81は、複数の項目(列)として、システムコード81-1と、顧客名81-2と、記憶装置型式81-3と、設定81-4とを含む。
【0071】
システムコード81-1は、ある顧客が注文したホスト計算機(又はホスト計算機システム)に一意に割り当てられた識別子(システムコード)を表す。
【0072】
顧客名81-2は、そのホスト計算機を注文した顧客の名称を表す。
【0073】
記憶装置型式81-3は、そのホスト計算機に搭載する複数の記憶装置70の型式を表す。記憶装置型式81-3の情報は、顧客から注文された記憶装置の装置識別情報(又は装置種別情報)の一例に対応する。
【0074】
設定81-4は、記憶装置70に対して実施する設定の変更内容を識別する情報を表す。すなわち、設定81-4は、記憶装置70を取り扱う第1の設定を第2の設定に変更するための当該第2の設定の内容を識別する設定識別情報に対応する。設定の変更は、第1実施形態と同様に、例えば、記憶装置の対象パラメータを変更することで行われる。一例として、記憶装置30の容量に関するパラメータ、通信速度等の性能に関するパラメータ、LEDの発光制御(発光パターン)に関するパラメータなどがある。変更後の設定である第2の設定は一例として、初期設定における記憶容量を制限、又は初期設定における記憶装置の性能(リンクレート等)を制限(クリッピング)する設定であってもよい。本実施形態では、記憶装置70の初期設定(容量又は性能等)を制限する場合を示すが、これに限定されない。
【0075】
一例として、
図8では、システムコード「XAB001」を含む行が3つ存在する。これら3行から、システムコード「XAB001」のホスト計算機が、顧客「ABC株式会社」が注文され、そのホスト計算機には型式「M1000000」の記憶装置70が3台搭載されており、その3台の記憶装置70のそれぞれに対して「容量を2TBに設定し、且つ、リンクレートを6Gbpsに設定する」というクリッピングが実施されること、が示される。
【0076】
受注管理テーブル81は、顧客から注文された記憶装置の装置識別情報(又は装置種別情報)と、前記記憶装置の第1の設定を第2の設定に変更するための当該第2の設定の内容を識別する設定識別情報とを含む第1テーブルの一例である。
【0077】
図9は、管理用記憶装置90における設定プログラムテーブル82の一例を示す図である。設定プログラムテーブル82は、複数の項目(列)として、レビジョン82-1と、記憶装置型式82-2と、設定82-3を含む。
【0078】
レビジョン82-1は、設定プログラムのレビジョンを表す。レビジョンは設定プログラムのプログラム識別情報(又はプログラム種別情報)の一例である。
【0079】
記憶装置型式82-2は、該当するレビジョンの設定プログラムが対応する記憶装置70の型式情報(記憶装置の装置種別情報又は装置識別情報)を表す。
【0080】
設定82-3は、レビジョン82-1に示されるレビジョンの設定プログラムによって、記憶装置型式82-2に示される型式の記憶装置70に行う設定変更の内容(すなわち記憶装置70を取り扱う第1の設定を第2の設定に変更するための当該第2の設定の内容)を識別する。
【0081】
一例として、
図9では、設定プログラム「A100」は型式「M1000000」である記憶装置70に対応しており、その記憶装置70に対して、「容量を2TBに設定し、リンクレートを6Gbpsに設定する」というクリッピングを実施すること、が示されている。
【0082】
設定プログラムテーブル82は、記憶装置の第1の設定を第2の設定に変更するための当該第2の設定の内容を識別する設定識別情報と、記憶装置の第1の設定を第2の設定に変更するため設定プログラムのプログラム識別情報とを含む第2テーブルの一例である。
【0083】
受注管理テーブル81及び設定プログラムテーブル82対しては、受注管理ホスト計算機80によって行の更新・追加・削除等が可能である。例えば、設定プログラムがリリースされた時点で、入出力インターフェイス装置40からのユーザーの指示に基づき、設定プログラムテーブル82への行の追加が行われる。設定プログラムテーブル82において、異なるレビジョンにおいて、記憶装置型式82-2と設定82-3との組が同じ値になることはない。
【0084】
同一の記憶装置型式を有する記憶装置が複数あり、かつ記憶装置間でレビジョンが異なる場合に、どのレビジョンの組み合わせ(行)を選択するかは、ユーザーが任意に決定してよい。例えば、ユーザーが、顧客のニーズを考慮してレビジョンの組み合わせを決定してもよい。
【0085】
図10は、入出力インターフェイス装置40のディスプレイに表示される製造画面51の一例を示す図である。製造装置2のユーザーは、製造画面51を使用して、顧客に出荷する記憶装置70に対して、設定プログラムおよびデジタル署名の書き込みを指示する。
【0086】
製造画面51は、システムコードを入力するための入力フォーム52と、記憶装置表53と、書き込み実行ボタン54を備える。記憶装置表53は、顧客に出荷する記憶装置70に関する情報を含む。記憶装置表53は、後述する書き込み準備処理により作成される。書き込み実行ボタン54は、ユーザーによって押下されることが可能であり、書き込み指示を受け付けるためのボタンである。書き込み実行ボタン54が押下されることで、記憶装置70への設定プログラムおよびデジタル署名の書き込みのための処理が実行される。
【0087】
図11は、製造装置2の動作例として、設定プログラムおよびデジタル署名の書き込み処理の前段階である、書き込み準備処理5000の流れを説明するフローチャートである。
【0088】
まず、製造装置2のユーザーから、製造画面51における入力フォーム52に、顧客へ出荷するホスト計算機のシステムコードが入力されたことを検知する(ステップS5000-1)。
【0089】
そして、製造用ホスト計算機50が、入力されたシステムコードをキーとして、受注管理ホスト計算機80(受注管理データベース88)を介して、受注管理テーブル81のシステムコード81-1を検索する(ステップS5000-2)。入力されたシステムコードに合致するシステムコードが存在しない場合は(S5000-3のNO)、本処理を終了する。入力されたシステムコードに合致するシステムコードが存在する場合は(ステップS5000-3のYES)、入力されたシステムコードと合致するシステムコードの行が特定される。
【0090】
次に、製造用ホスト計算機50は、特定された行に含まれる記憶装置型式81-3及び設定81-4の値をそれぞれ選択して、記憶装置表53の最初の行における記憶装置型式53-2および設定53-3にそれぞれ書き込む(ステップS5000-4)。製造用ホスト計算機50は、当該最初の行の記憶装置番号53-1に、1番の記憶装置番号を書き込む(同ステップS5000-4)。
【0091】
次に、製造用ホスト計算機50は、ステップS5000-3で書き込まれた記憶装置型式53-2と設定53-3の値をキーとして、設定プログラムテーブル82を検索する(ステップS5000-5)。記憶装置型式53-2と設定53-3の両方が一致する、設定プログラムテーブル82の行が特定される。
【0092】
次に、製造用ホスト計算機50は、設定プログラムテーブル82における特定された行から、レビジョン82-1の値を読み出し、記憶装置表53の1番目の行における設定プログラム53-4に書き込む(ステップS5000-6)。これにより、記憶装置表53の1行目に必要な情報が入力される。
【0093】
ステップS5000-2に戻る。入力されたシステムコードに合致するシステムコードが受注管理テーブル81からすべて検出されるまで、記憶装置型式53-2、設定53-3及び設定プログラム53-4の情報を書き込んだ行を記憶装置表53に追加する処理が繰り返される。行を追加するごとに、記憶装置番号53-1には1番から連続する記憶装置番号が書き込まれる。
【0094】
最後に、製造装置2のユーザーは、記憶装置表53を参照して、記憶装置型式53-2に表示された記憶装置70を用意し、記憶装置70を記憶装置番号53-1に表示された記憶装置番号に一致するスロット番号のスロットに挿入する(ステップS5000-6)。以上により、書き込み準備処理5000が完了する。
【0095】
書き込み準備処理5000が完了した後に、書き込み処理が行われることで、デジタル署名及び設定プログラムの書き込みが実行される。
【0096】
図12は、製造装置2の動作例として、書き込み処理6000の流れを説明するフローチャートである。
【0097】
まず、製造装置2のユーザーから、製造画面51における書き込み実行ボタン54が押下されたことを検知する(ステップS6000-1)。
【0098】
次に、製造用ホスト計算機50が、記憶装置表53において、記憶装置番号が1番の行から順番に行を選択する(ステップS6000-2)。製造用ホスト計算機50は、選択した行における設定プログラム53-4が示すレビジョンの設定プログラムと、当該設定プログラムのデジタル署名とを、管理用記憶装置90からダウンロードする(同ステップS6000-2)。より詳細には、製造用ホスト計算機50が、受注管理ホスト計算機80に、設定プログラム53-4に表示されるレビジョンの設定プログラムと当該設定プログラムのデジタル署名とのダウンロードを指示する信号を出力する。製造用ホスト計算機50は、受注管理ホスト計算機80からダウンロードされた設定プログラム及びデジタル署名を取得する。このように製造用ホスト計算機50は、ユーザーの書き込み指示で特定される記憶装置に対して設定の変更を行うための設定プログラムのレビジョンを受注管理テーブル(第1テーブル)及び設定プログラムテーブル(第2テーブル)に基づき特定する処理部を含む。そして、製造用ホスト計算機50の当該処理部は、特定したレビジョンにより識別される設定プログラム及び当該設定プログラムのデジタル署名を管理用記憶装置90から取得する。
【0099】
次に、製造用ホスト計算機50は、ダウンロードした設定プログラム及びデジタル署名を、当該記憶装置番号に対応する記憶装置70に書き込むことを要求する書き込み要求をRAIDコントローラ60に送信する(ステップS6000-3)。
【0100】
RAIDコントローラ60は、書き込み要求を受けると、受信した設定プログラムおよびデジタル署名を、当該記憶装置番号に対応するスロット番号のスロットに挿入された記憶装置70に書き込む(ステップS6000-4)。設定プログラムおよびデジタル署名を書き込む位置は、第1実施形態と同様、記憶装置70の予め定められた領域である。一例として、記憶装置70の記憶領域の末尾部分に配置された固定サイズの領域である。製造用ホスト計算機50は、スロットに記憶装置が挿入されているかを検査し、挿入されている場合のみ書き込みを行ってもよい。スロットに記憶装置が挿入されていない場合は、書き込みを省略してもよい。
【0101】
製造用ホスト計算機50は、記憶装置表53において、まだ選択されていない記憶装置番号の行が存在する場合は(S6000-5のYES)、次の行を選択する。そして、選択した行における当該記憶装置番号の記憶装置に、設定プログラム及びデジタル署名の書き込みを行う(S6000-2~S6000-4)。すべての記憶装置番号の行が選択され、ステップS6000-2~S6000-4の処理が行われた場合は(S6000-5のNO)、書き込み処理6000を終了する。
【0102】
書き込み処理6000が完了すると、ポップアップ画面等で書き込み完了を製造装置2のユーザーに通知される。その後、製造装置2のユーザーは、製造用ホスト計算機50の各スロットから記憶装置70を抜き出す。抜き出した記憶装置70をシステムコードに対応するホスト計算機及びRAIDコントローラと一緒にセットとして顧客へ出荷する。
【0103】
図12の例では、書き込み実行ボタン54が押下されると、記憶装置表53のすべての行がすべて順番に処理されたが、処理すべき行をユーザーが選択できるようにし、選択された行についてのみ、書き込みが行われるようにしてもよい。これにより例えば全ての記憶装置をスロットに一度に挿入できない状況があっても(例えば一部の記憶装置がまだメーカーから納品されていない場合など)、効率的な書き込みが可能となる。
【0104】
以上、第2実施形態によれば、受注管理ホスト計算機80と製造用ホスト計算機50とを連携させることで、顧客の注文に応じて、設定プログラムを正しく記憶装置に書き込むことができる。すなわち、人手によらず書き込みを行うことができるため、記憶装置に書き込む設定プログラムを間違えることを防止できる。また、記憶装置の種類及び設定プログラムの種類が増え、記憶装置と設定プログラムとの組み合わせが複雑になった場合でも、失敗することなく記憶装置への書き込みを行うことができる。さらに、顧客が使用する記憶装置が故障し、記憶装置の交換が必要になった場合も、製造装置2を使用することで、交換用の記憶装置(設定プログラム及びデジタル署名を書き込んだ記憶装置)のみを速やかに作成することができる。
【0105】
なお、本発明は上記実施形態および各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
【符号の説明】
【0106】
1 ホスト計算機システム
2 製造装置
10 ホスト計算機
20 RAIDコントローラ
210 I/Oプロセッサー
220 主記憶メモリ
230 フラッシュメモリ
231 ファームウェア領域
241 RAIDファームウェア
232-1 設定プログラム領域
240 記憶装置インターフェイス
250 ホストインターフェイス
30-1~30-n 記憶装置
300 記憶装置群
310 ユーザーデータ
320 デジタル署名
330 設定プログラム
40 入出力インターフェイス装置(入力部及び出力部)
50 製造用ホスト計算機(処理部)
51 製造画面
52 入力フォーム
53 記憶装置表
54 実行ボタン
55 製造用プログラム
60 RAIDコントローラ
61 RAIDファームウェア
70-1~70-n,70 記憶装置
80 受注管理ホスト計算機(管理部)
81 受注管理テーブル(第1テーブル)
81-1 システムコード
81-2 顧客名
81-3 記憶装置型式(記憶装置の装置識別情報)
81-4 設定(設定識別情報)
82 設定プログラムテーブル(第2テーブル)
82-1 レビジョン(プログラム識別情報)
82-2 記憶装置型式(記憶装置の装置識別情報)
82-3 設定(設定識別情報)
83 設定プログラム
84 デジタル署名
88 受注管理データベース
90 管理用記憶装置(第1記憶部、第2記憶部)