(57)【要約】      （修正有）【課題】ＨＤＤファームウエアのアップデート時にデータを消失するリスクを低減するバックアップ方法、プログラム及び情報処理装置を提供する。【解決手段】コンピュータがアクセス可能な複数の記憶装置の各々からデータを読み出し、読み出した当該データからパリティデータを生成し、コンピュータに接続された可搬記憶媒体１０であって、ローデバイスとしてアクセスされる第１の領域１０２を有する可搬記憶媒体の第１の領域に、生成されたパリティデータを格納する処理を含む。【選択図】図２
2017027356.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
前記コンピュータがアクセス可能な複数の記憶装置の各々からデータを読み出し、読み出した当該データからパリティデータを生成し、
前記コンピュータに接続された可搬記憶媒体であって、ローデバイスとしてアクセスされる第１の領域を有する前記可搬記憶媒体の前記第１の領域に、生成された前記パリティデータを格納する、
処理を実行させるバックアッププログラム。
【請求項２】
前記パリティデータを生成する処理において、
前記複数の記憶装置の各々から、同じ通し番号を有するセクタに格納されたデータを読み出し、読み出した当該データの排他的論理和によってパリティデータを生成する、
請求項１記載のバックアッププログラム。
【請求項３】
前記コンピュータに、
前記コンピュータに接続された前記可搬記憶媒体の領域の一部を前記第１の領域に設定する、
処理をさらに実行させる請求項１又は２記載のバックアッププログラム。
【請求項４】
前記コンピュータに、
前記複数の記憶装置の各々のファームウエアを更新し、
前記ファームウエアを更新したことを示す情報を、前記可搬記憶媒体の前記第１の領域以外の領域である第２の領域に格納し、
前記コンピュータの再起動を促すメッセージを表示させる、
処理をさらに実行させる請求項１乃至３のいずれか１つ記載のバックアッププログラム。
【請求項５】
前記コンピュータに、
前記コンピュータが再起動した後、前記ファームウエアを更新したことを示す情報が前記可搬記憶媒体に格納されているか判定し、
前記ファームウエアを更新したことを示す情報が前記可搬記憶媒体の前記第２の領域に格納されている場合、前記複数の記憶装置の各々の診断を行う、
処理をさらに実行させる請求項４記載のバックアッププログラム。
【請求項６】
コンピュータが、
前記コンピュータがアクセス可能な複数の記憶装置の各々からデータを読み出し、読み出した当該データからパリティデータを生成し、
前記コンピュータに接続された可搬記憶媒体であって、ローデバイスとしてアクセスされる第１の領域を有する前記可搬記憶媒体の前記第１の領域に、生成された前記パリティデータを格納する、
処理を実行するバックアップ方法。
【請求項７】
情報処理装置であって、
前記情報処理装置がアクセス可能な複数の記憶装置の各々からデータを読み出し、読み出した当該データからパリティデータを生成する生成部と、
前記情報処理装置に接続された可搬記憶媒体であって、ローデバイスとしてアクセスされる第１の領域を有する前記可搬記憶媒体の前記第１の領域に、生成された前記パリティデータを格納する格納処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バックアップ技術に関する。
【背景技術】
【０００２】
ＨＤＤ（Hard Disk Drive）ファームウエアのアップデートには、ＨＤＤに格納されたデータが破壊されるリスクやＨＤＤが動作不能になるリスクが伴う。そこで、ＨＤＤファームウエアをアップデートする際には、ＨＤＤに保存されたデータをテープデバイス又は外部ストレージデバイス等に一時的にバックアップとして保存する。或いは、コンピュータにＲＡＩＤ（Redundant Arrays of Inexpensive Disks）コントローラが搭載されている場合には、ＲＡＩＤ機能によってＨＤＤを冗長化することで上記のようなリスクを低減することができる。
【０００３】
但し、コンピュータの使用者がＨＤＤファームウエアのアップデート時に高価なテープデバイス又は外部ストレージデバイス等を用意できない場合があり、また、コンピュータにＲＡＩＤコントローラが搭載されていない場合もある。このような場合、もしＨＤＤファームウエアのアップデート中にデータが破壊されたりＨＤＤが故障すると、ＨＤＤ内のデータを復旧することができない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２１１２９５号公報
【特許文献２】特開２００８−１６５４５０号公報
【特許文献３】特開平６−２４２８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って、本発明の目的は、１つの側面では、ＨＤＤファームウエアのアップデート時にデータを消失するリスクを低減するための新規な技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明に係るバックアップ方法は、コンピュータが実行する。そして、本バックアップ方法は、コンピュータがアクセス可能な複数の記憶装置の各々からデータを読み出し、読み出した当該データからパリティデータを生成し、コンピュータに接続された可搬記憶媒体であって、ローデバイスとしてアクセスされる第１の領域を有する可搬記憶媒体の第１の領域に、生成されたパリティデータを格納する処理を含む。
【発明の効果】
【０００７】
１つの側面では、ＨＤＤファームウエアのアップデート時にデータを消失するリスクを低減できるようになる。
【図面の簡単な説明】
【０００８】
【図１】図１は、サーバのハードウエア構成図である。
【図２】図２は、ＵＳＢフラッシュドライブの構成図である。
【図３】図３は、本実施の形態におけるバックアップの概要を示す図である。
【図４】図４は、本実施の形態におけるパリティデータの生成方法を模式的に示す図である。
【図５】図５は、各ＨＤＤのサイズを示す図である。
【図６】図６は、メインの処理フローを示す図である。
【図７】図７は、ＨＤＤ構成情報テーブルの一例を示す図である。
【図８】図８は、ＨＤＤ構成情報テーブルの一例を示す図である。
【図９】図９は、メインの処理フローを示す図である。
【図１０】図１０は、ＨＤＤ構成情報テーブルの一例を示す図である。
【図１１】図１１は、パリティデータ生成処理の処理フローを示す図である。
【図１２】図１２は、パリティデータ生成方法を説明するための図である。
【図１３】図１３は、パリティデータ生成方法を説明するための図である。
【図１４】図１４は、パリティデータ生成方法を説明するための図である。
【図１５】図１５は、パリティデータ生成方法を説明するための図である。
【図１６】図１６は、メインの処理フローを示す図である。
【図１７】図１７は、診断処理の処理フローを示す図である。
【図１８】図１８は、データのリカバリについて説明するための図である。
【図１９】図１９は、テープデバイス又は外部ストレージデバイスを使用したバックアップの方法について説明するための図である。
【図２０】図２０は、ＨＤＤファームウエアのアップデート方法について具体的に説明するための図である。
【図２１】図２１は、パリティデータを使用したデータのリカバリについて説明するための図である。
【図２２】図２２は、パリティデータの生成例を示す図である。
【図２３】図２３は、パリティデータの生成例を示す図である。
【図２４】図２４は、データのリカバリ例を示す図である。
【発明を実施するための形態】
【０００９】
図１に、本実施の形態におけるサーバ１のハードウエア構成図を示す。サーバ１は、ＵＳＢバス１１と、ＣＰＵ（Central Processing Unit）１２と、メモリバス１３と、例えばメインメモリであるシステムメモリ１４と、ＰＣＩ（Peripheral Component Interconnect）バス１５と、例えばＳＡＳ（Serial Attached SCSI(Small Computer System Interface)）コントローラ又はＳＡＴＡ（Serial ATA(Advanced Technology Attachment)）コントローラであるコントローラ１６と、ＨＤＤ＃０乃至＃２とを有する。システムメモリ１４はメモリバス１３によってＣＰＵ１２に接続され、コントローラ１６はＰＣＩバス１５によってＣＰＵ１２に接続される。ＨＤＤファームウエアが更新される場合、サーバ１のＵＳＢ（Universal Serial Bus）ポートにはＵＳＢフラッシュドライブ１０が接続される。ＵＳＢフラッシュドライブ１０はＵＳＢバス１１によってＣＰＵ１２に接続される。なお、図１においてＨＤＤの数は３であるが、数に限定は無い。また、図１においてはサーバ１がＨＤＤ＃０乃至＃２を有しているが、ＨＤＤ＃０乃至＃２がサーバ１の外部に設置され且つサーバ１に接続されていてもよい。
【００１０】
図２に、ＵＳＢフラッシュドライブ１０の構成図を示す。ＵＳＢフラッシュドライブ１０における所定サイズの領域は、プライマリパーティションのファイルアクセスエリア１０１として予め設定される。ファイルアクセスエリア１０１が設定されたＵＳＢフラッシュドライブ１０がサーバ１に接続されると、後述の処理によって、ファイルアクセスエリア１０１以外の領域がＲＡＷ（ロー）デバイスに関連付けられる。本実施の形態においては、ＲＡＷデバイスに関連付けられた領域をＲＡＷアクセスエリア１０２と呼ぶ。一般的にはＲＡＷパーティションとも呼ばれる。ＲＡＷアクセスエリア１０２に対しては、ソフトウエアはファイルシステムを使用せずに直接アクセスすることができる。これに対し、ファイルアクセスエリア１０１に対しては、ソフトウエアはファイルシステムを使用してアクセスを行う。
【００１１】
ファイルアクセスエリア１０１は、ＯＳ（Operating System）１０１０のプログラムと、バックアッププログラム１０１１と、ファームウエアアップデートプログラム１０１２と、診断プログラム１０１３と、リカバリプログラム１０１４とを格納する。
【００１２】
ＵＳＢフラッシュドライブ１０がサーバ１に接続されている状態において、ＯＳ１０１０のプログラムは、ＣＰＵ１２に読み出されて実行される。バックアッププログラム１０１１、ファームウエアアップデートプログラム１０１２、診断プログラム１０１３、及びリカバリプログラム１０１４は、ＣＰＵ１２により読み出されてＯＳ１０１０上で実行される。ＯＳ１０１０のプログラムと、バックアッププログラム１０１１と、ファームウエアアップデートプログラム１０１２と、診断プログラム１０１３と、リカバリプログラム１０１４とは、予めファイルアクセスエリア１０１に格納され、ＣＰＵ１２に実行される際にはシステムメモリ１４に展開される。
【００１３】
バックアッププログラム１０１１は、本実施の形態のバックアップを実行するためのプログラムである。ファームウエアアップデートプログラム１０１２は、ＨＤＤファームウエアをアップデートするためのプログラムであり、ファームウエアイメージデータを含む。診断プログラム１０１３は、ファームウエアがアップデートされたＨＤＤの診断（具体的には、異常の検出など）を行うためのプログラムである。リカバリプログラム１０１４は、診断によって異常が検出された場合にデータのリカバリを行うためのプログラムである。
【００１４】
ＵＳＢフラッシュドライブ１０がサーバ１に接続されている状態において、ＲＡＷアクセスエリア１０２にはパリティデータが格納される。
【００１５】
図３に、本実施の形態におけるバックアップの概要を示す。本実施の形態においては、ＣＰＵ１２が、ファームウエアがアップデート対象であるＨＤＤ（以下、対象ＨＤＤと呼ぶ）からデータを読み出し、システムメモリ１４に展開する（図３における矢印３０１）。ＣＰＵ１２は、システムメモリ１４に読み出されたデータからパリティデータを生成し、パリティデータをＵＳＢフラッシュドライブ１０のＲＡＷアクセスエリア１０２に格納する（図３における矢印３０２）。
【００１６】
このようにすれば、全対象ＨＤＤ内のデータをバックアップしなくてもよいので、バックアップされるデータサイズが小さくなる。よって、ＵＳＢフラッシュドライブ１０が大容量でなくてもよく、また、データサイズが小さいのでバックアップに要する時間が短い。さらに、パリティデータをＲＡＷアクセスエリア１０２に格納するので、サーバ１のＯＳの種類にかかわらずバックアップを行うことができる。
【００１７】
図４に、本実施の形態におけるパリティデータの生成方法を模式的に示す。図４に示すように、各対象ＨＤＤから、同一のＬＢＡ（Logical Block Addressing）値を有するセクタに格納されたデータについて排他的論理和が演算され、演算結果であるパリティデータがＵＳＢフラッシュドライブ１０のＲＡＷアクセスエリア１０２に格納される。例えばＨＤＤ＃０乃至＃２が対象ＨＤＤである場合、ＨＤＤ＃０乃至＃２の各々から、ＬＢＡ値が０ｘ００００００００であるセクタにおける５１２バイト分のデータが読み出され、読み出されたデータの排他的論理和が演算される。そして、演算結果である５１２バイト分のパリティデータが、ＵＳＢフラッシュドライブ１０のＲＡＷアクセスエリア１０２の領域のうちＬＢＡ値がｘ＋１である領域に格納される（ここでは、ファイルアクセスエリア１０１の最終ＬＢＡ値をｘとする）。このような処理が繰り返されることによって、全体のパリティデータが完成する。
【００１８】
このようにパリティデータを格納すれば、ＵＳＢフラッシュドライブ１０に格納されるデータはオリジナルのデータではないので、仮にＵＳＢフラッシュドライブ１０が第三者に譲渡されたとしても、ＵＳＢフラッシュドライブ１０だけではオリジナルデータの内容を復元できない。よって、セキュリティが確保される。なお、２台以上のＨＤＤが同時に故障した場合にはデータを復元することはできないが、そのような状況が発生する確率は低い。
【００１９】
次に、図５乃至図１８を用いて、サーバ１が実行する処理について説明する。
【００２０】
説明をわかりやすくするため、以下のような前提を設ける。まず、ＵＳＢフラッシュドライブ１０の容量は５１２ＧＢ（ギガバイト）であり、ファイルアクセスエリア１０１のサイズは１ＧＢであるとする。ファイルアクセスエリア１０１の最終ＬＢＡ値は０ｘ１ＦＦＦＦであるとする。ＨＤＤファームウエアのアップデートは、ＨＤＤモデル「Ａ」について版数１（以下、Ｒｅｖ．１というように表す）又はＲｅｖ．２からＲｅｖ．３に変更するアップデートであるとする。また、各ＨＤＤのサイズは図５に示すとおりであるとする。すなわち、ＨＤＤ＃０のサイズは３００ＧＢであり、ＨＤＤ＃１のサイズは３００ＧＢであり、ＨＤＤ＃２のサイズは１４６ＧＢであるとする。但し、以上のような前提条件でなければ本実施の形態の処理を実行できないというわけではない。
【００２１】
まず、ＨＤＤファームウエアのアップデート及びデータのバックアップを担当する作業者は、ＵＳＢフラッシュドライブ１０を、作業者が操作する端末（例えばノートＰＣ（Personal Computer））に接続する。そして、作業者は、ＵＳＢフラッシュドライブ１０のプライマリパーティションを端末に生成させる。なお、この時点においてはＲＡＷアクセスエリア１０２は設定されていない。なお、ＵＳＢフラッシュドライブ１０の準備を行うための専用の端末ではなくサーバ１を使用してもよい。
【００２２】
作業者は、端末に、ＯＳ１０１０のプログラムと、バックアッププログラム１０１１と、ファームウエアアップデートプログラム１０１２と、診断プログラム１０１３と、リカバリプログラム１０１４とをＵＳＢフラッシュドライブ１０のファイルアクセスエリア１０１にコピーさせる。そして、作業者は端末をパワーオフし、ＵＳＢフラッシュドライブ１０を端末から取り外す。
【００２３】
そして、作業者はサーバ１をパワーオフし（図６：ステップＳ１）、ＵＳＢフラッシュドライブ１０をサーバ１のＵＳＢポートに接続する（ステップＳ３）。これは、ＵＳＢフラッシュドライブ１０に格納されたＯＳ１０１０のプログラムを起動するためである。なお、ステップＳ１及びＳ３はサーバ１の処理ではなく作業者の作業であるので、図６においてステップＳ１及びＳ３のブロックは破線で示されている。
【００２４】
ＣＰＵ１２は、ＯＳ１０１０のプログラムをシステムメモリ１４に展開し、ＯＳ１０１０を起動する（ステップＳ５）。そして、ＣＰＵ１２は、例えばＲＡＷコマンドによって、ＵＳＢフラッシュドライブ１０のうちファイルアクセスエリア１０１以外の領域をＲＡＷデバイスに関連付ける（ステップＳ７）。ステップＳ７の処理により、ＲＡＷアクセスエリア１０２を設定する。
【００２５】
ＣＰＵ１２は、バックアッププログラム１０１１をシステムメモリ１４に展開してＯＳ１０１０上で実行することにより、以下のような処理を実行する。具体的には、ＣＰＵ１２は、ＨＤＤのモデル名、ファームウエア版数、及びＯＳ上でのアドレス（すなわちＳＣＳＩデバイス名）を、例えばＳＣＳＩ Ｓｇコマンド（例えばｓｇ＿ｍａｐ −ｉ）によって取得する（ステップＳ９）。
【００２６】
ＣＰＵ１２は、ステップＳ９において取得した情報を含むＨＤＤ構成情報テーブルを、サーバ１のシステムメモリ１４に展開する（ステップＳ１１）。図７に、ステップＳ１１が終了した時点におけるＨＤＤ構成情報テーブルの一例を示す。図７の例では、各ＨＤＤについて、ＨＤＤモデル名と、ＨＤＤファームウエアの版数と、ＯＳ上でのアドレスとが格納される。
【００２７】
ＣＰＵ１２は、対象ＨＤＤを、ＨＤＤモデル名及びファームウエアの版数によってＨＤＤ構成情報テーブルから特定する（ステップＳ１３）。本実施の形態においては、ＨＤＤモデル名が「Ａ」であり且つ版数が「３」未満であるＨＤＤ＃０及びＨＤＤ＃１が特定される。
【００２８】
ＣＰＵ１２は、ＨＤＤ構成情報テーブルにおいて、対象ＨＤＤにアップデートフラグ「１」を設定し、対象ＨＤＤではないＨＤＤにアップデートフラグ「０」を設定する（ステップＳ１５）。処理は端子Ａを介して図９のステップＳ１７に移行する。
【００２９】
図８に、ステップＳ１５の時点におけるＨＤＤ構成情報テーブルの一例を示す。図８の例では、ＨＤＤ＃０及びＨＤＤ＃１にアップデートフラグ「１」が設定されており、ＨＤＤ＃２にアップデートフラグ「０」が設定されている。
【００３０】
図９の説明に移行し、ＣＰＵ１２は、アップデートフラグが「１」であるＨＤＤがＨＤＤ構成情報テーブルに有るか判定する（ステップＳ１７）。アップデートフラグが「１」であるＨＤＤがＨＤＤ構成情報テーブルに無い場合（ステップＳ１７：Ｎｏルート）、ＨＤＤファームウエアのアップデートが完了したか又は対象ＨＤＤが無いので、処理は端子Ｂを介して図１６のステップＳ３３に移行する。図１６のステップＳ３３の処理については後で説明する。
【００３１】
一方、アップデートフラグが「１」であるＨＤＤがＨＤＤ構成情報テーブルに有る場合（ステップＳ１７：Ｙｅｓルート）、ＣＰＵ１２は、対象ＨＤＤの最終ＬＢＡ値を、例えばＳＣＳＩ Ｒｅａｄ Ｃａｐａｃｉｔｙコマンドを使用して読み出す。そして、ＣＰＵ１２は、読み出した最終ＬＢＡ値をＨＤＤ構成情報テーブルに付加する（ステップＳ１９）。
【００３２】
図１０に、ステップＳ１９の時点におけるＨＤＤ構成情報テーブルの一例を示す。図１０の例では、対象ＨＤＤであるＨＤＤ＃０及びＨＤＤ＃１について、最終ＬＢＡ値が付加されている。ＨＤＤ＃２は対象ＨＤＤではないので、最終ＬＢＡ値は付加されていない。
【００３３】
そして、ＣＰＵ１２は、引き続きバックアッププログラム１０１１を実行することで、パリティデータ生成処理を実行する（ステップＳ２１）。パリティデータ生成処理については、図１１乃至図１５を用いて説明する。
【００３４】
まず、ＣＰＵ１２は、処理対象のセクタのＬＢＡ値を表す変数Ｌを０に設定する（図１１：ステップＳ４１）。
【００３５】
ＣＰＵ１２は、各対象ＨＤＤから、例えばＳＣＳＩ Ｓｇコマンド（例えばＲｅａｄコマンド）によって、ＬＢＡ値がＬであるセクタ内のデータを読み出し、システムメモリ１４に展開する（ステップＳ４３）。
【００３６】
ＣＰＵ１２は、ステップＳ４３においてシステムメモリ１４に展開されたデータの排他的論理和を演算することによってパリティデータを生成する（ステップＳ４５）。図１２を用いて、本実施の形態におけるパリティデータの生成方法を説明する。図１２に示すように、本実施の形態においては、対象ＨＤＤはＨＤＤ＃０及びＨＤＤ＃１であるので、ＨＤＤ＃０におけるＬＢＡ値「Ｌ」のセクタ内の５１２バイト分のデータと、ＨＤＤ＃１におけるＬＢＡ値「Ｌ」のセクタ内の５１２バイト分のデータとの排他的論理和とが演算され、５１２バイト分のパリティデータが生成される。なお、パリティデータの生成については、巻末の付録も参考にされたい。
【００３７】
ＣＰＵ１２は、ステップＳ４５において生成されたパリティデータを、例えばＳＣＳＩ Ｓｇコマンド（例えばＷｒｉｔｅコマンド）によって、ＲＡＷアクセスエリア１０２内の領域のうちＬＢＡ値が０ｘ２００００＋Ｌである領域に書き込む（ステップＳ４７）。図１３に示すように、０ｘ２００００は、ＲＡＷアクセスエリア１０２の先頭ＬＢＡ値であり、ファイルアクセスエリア１０１の最終ＬＢＡ値（０ｘ１ＦＦＦＦ）＋１に相当する。
【００３８】
ＣＰＵ１２は、Ｌを１インクリメントし（ステップＳ４９）、Ｌが対象ＨＤＤの最終ＬＢＡ値＋１に相当するか判定する（ステップＳ５１）。なお、本実施の形態においてはＨＤＤ＃０の容量とＨＤＤ＃１の容量とは同じであるので問題は無いが、各対象ＨＤＤの容量が異なる場合、ＨＤＤ間で最終ＬＢＡ値が異なることになる。その場合、ステップＳ５１においてＮｏと判定された対象ＨＤＤについてのみステップＳ４３の処理に戻り、パリティデータの生成を継続する。この点については、付録も参照されたい。
【００３９】
本実施の形態において、Ｌ＝０及びＬ＝１について処理が完了した段階においては、図１４に示すようにパリティデータが生成される。具体的には、ＨＤＤ＃０内の位置がＬＢＡ ０であるセクタから読み出された「０１０１・・・」というデータとＨＤＤ＃１内の位置がＬＢＡ ０であるセクタから読み出された「１０１１・・・」というデータとから、排他的論理和の演算によって「１１１０・・・」というデータが生成され、ＲＡＷアクセスエリア１０２内の位置がＬＢＡ ０ｘ２００００である領域に格納される。また、ＨＤＤ＃０内の位置がＬＢＡ １であるセクタから読み出された「１０１１・・・」というデータとＨＤＤ＃１内の位置がＬＢＡ １であるセクタから読み出された「１０００・・・」というデータとから、排他的論理和の演算によって「００１１・・・」というデータが生成され、ＲＡＷアクセスエリア１０２内の位置がＬＢＡ ０ｘ２０００１である領域に格納される。
【００４０】
その後、Ｌ＝２以降についてもパリティデータが生成され、最終的には、図１５に示すようにＬ＝０ｘ２２ＥＣＢ２５Ｂについてパリティデータを生成するとパリティデータの生成が完了する。より具体的には、ＨＤＤ＃０内の位置がＬＢＡ ０ｘ２２ＥＣＢ２５Ｂであるセクタから読み出された「１１０１・・・」というデータとＨＤＤ＃１内の位置がＬＢＡ ０ｘ２２ＥＣＢ２５Ｂであるセクタから読み出された「０００１・・・」というデータとから、排他的論理和の演算によって「１１１０・・・」というデータが生成される。そして、ＲＡＷアクセスエリア１０２内の位置がＬＢＡ ０ｘ２２ＥＥＢ２５Ｂである領域に格納される。
【００４１】
図１１の説明に戻り、Ｌが対象ＨＤＤの最終ＬＢＡ値＋１に相当しない場合（ステップＳ５１：Ｎｏルート）、ステップＳ４３の処理に戻る。一方、Ｌが対象ＨＤＤの最終ＬＢＡ値＋１に相当する場合（ステップＳ５１：Ｙｅｓルート）、呼び出し元の処理に戻る。
【００４２】
以上のように、パリティデータをＲＡＷアクセスエリア１０２に格納しておけば、サーバ１のＯＳの種別にかかわらずバックアップを行えるようになる。
【００４３】
例えば、Ｌｉｎｕｘ（登録商標）の場合、ＦＡＴ（File Allocation Table）３２やＨＦＳ（Hierarchical File System）といったファイルシステムには対応しているが、ｅｘＦＡＴ（extended FAT）やＮＴＦＳ（NT File System）といったファイルシステムには対応していない。一方、Ｗｉｎｄｏｗｓ（登録商標） Ｖｉｓｔａであれば、ｅｘＦＡＴやＮＴＦＳといったファイルシステムには対応しているが、ＨＦＳ等のファイルシステムには対応していない。このように、対応可能なファイルシステムはＯＳ毎に異なるが、本実施の形態のようにＲＡＷアクセスエリアを利用すれば、ＯＳについての制約を受けることが無くなる。
【００４４】
図９の説明に戻り、ＣＰＵ１２は、ファームウエアアップデートプログラム１０１２をシステムメモリ１４に展開し、ＯＳ１０１０上で実行することによって、ステップＳ２３の処理を実行する。具体的には、ＣＰＵ１２は、例えばＳＣＳＩ Ｗｒｉｔｅ Ｂｕｆｆｅｒコマンドによって、Ｒｅｖ．３のファームウエアイメージデータを、対象ＨＤＤ（ここでは、ＨＤＤ＃０及びＨＤＤ＃１）の各々に転送する。転送が完了すると、各対象ＨＤＤにおいてアップデートのための処理が実行され、ＨＤＤファームウエアのアップデートが完了する（ステップＳ２３）。
【００４５】
ＣＰＵ１２は、バックアッププログラム１０１１の実行によって、ＨＤＤ構成情報テーブルに含まれる情報を、ＵＳＢフラッシュドライブ１０のファイルアクセスエリア１０１にＨＤＤ構成情報ファイルとして保存する（ステップＳ２５）。
【００４６】
ＣＰＵ１２は、アップデートが完了したことを示すアップデート完了メッセージを表示するための表示データを生成し、サーバ１の表示装置に表示させる（ステップＳ２７）。さらに、ＣＰＵ１２は、サーバ１の再起動を促すためのメッセージを生成し、サーバ１の表示装置に表示させる（ステップＳ２９）。
【００４７】
作業者は、表示装置に表示されたメッセージを確認すると、サーバ１をパワーオフし、その後サーバ１をパワーオンする（ステップＳ３１）。すなわち、サーバ１の再起動が行われる。処理は端子Ｃを介して図６のステップＳ５に戻る。
【００４８】
なお、ステップＳ９からステップＳ２９までの処理は、ステップＳ２３の処理を除き、バックアッププログラム１０１１の実行によって行われる。
【００４９】
次に、図１６の端子Ｂ以降の処理について説明する。ＣＰＵ１２は、診断プログラム１０１３をシステムメモリ１４に展開してＯＳ１０１０上で実行することで、以下の処理を実行する。具体的には、ＣＰＵ１２は、ＨＤＤ構成情報ファイルがＵＳＢフラッシュドライブ１０のファイルアクセスエリア１０１に有るか判定する（ステップＳ３３）。
【００５０】
ＨＤＤ構成情報ファイルがＵＳＢフラッシュドライブ１０に無い場合（ステップＳ３５：Ｎｏルート）、ステップＳ３９に移行する。ＨＤＤ構成情報ファイルがＵＳＢフラッシュドライブ１０に有る場合（ステップＳ３５：Ｙｅｓルート）、ＨＤＤファームウエアのアップデータが行われたので、ＣＰＵ１２は診断処理を実行する（ステップＳ３７）。診断処理については、図１７及び図１８を用いて説明する。
【００５１】
まず、ＣＰＵ１２は、診断対象のＨＤＤを、ＵＳＢフラッシュドライブ１０に保存されたＨＤＤ構成情報ファイルから特定する（図１７：ステップＳ６１）。診断対象のＨＤＤとは、ファームウエアがアップデートされたＨＤＤであるので、アップデートフラグが「１」に設定されている。
【００５２】
ＣＰＵ１２は、診断対象のＨＤＤに対して、例えばＳＣＳＩ Ｖｅｒｉｆｙコマンド又はＲｅａｄコマンドを実行することで、診断対象のＨＤＤの診断を行う（ステップＳ６３）。
【００５３】
ＣＰＵ１２は、コマンドの実行が正常に終了したか判定する（ステップＳ６５）。コマンドの実行が正常に終了した場合（ステップＳ６５：Ｙｅｓルート）、ＣＰＵ１２は、診断の正常終了を示すメッセージを生成し、サーバ１の表示装置に表示させる（ステップＳ６７）。そして、ＣＰＵ１２は、サーバ１のパワーオフ及びＵＳＢメモリの取り出しを促すメッセージを生成し、サーバ１の表示装置に表示させる（ステップＳ６９）。そして呼び出し元の処理に戻る。
【００５４】
一方、コマンドの実行が正常に終了しない場合（ステップＳ６５：Ｙｅｓルート）、ＣＰＵ１２は、異常が検出されたＨＤＤのＨＤＤモデル名及びＯＳ上でのアドレス（すなわちＳＣＳＩデバイス名）を表示するための表示データを生成し、サーバ１の表示装置に表示させる（ステップＳ７１）。
【００５５】
ＣＰＵ１２は、サーバ１のパワーオフ、異常が検出されたＨＤＤの交換、及びリカバリプログラム１０１４の実行を促すメッセージを生成し、サーバ１の表示装置に表示させる（ステップＳ７３）。
【００５６】
表示を確認した作業者は、サーバ１をパワーオフする。そして、作業者は、異常が検出されたＨＤＤを新しいＨＤＤに交換する（ステップＳ７５）。そして、作業者は、サーバ１をパワーオンする。パワーオンされたサーバ１は、ＯＳ１０１０を起動する。
【００５７】
そして、サーバ１のＣＰＵ１２は、リカバリプログラム１０１４をＯＳ１０１０上で実行することで、異常が検出されたＨＤＤに格納されたデータのリカバリを実行する（ステップＳ７７）。そして呼び出し元の処理に戻る。
【００５８】
図１８を用いて、データのリカバリについて説明する。図１８においては、ＨＤＤ＃０乃至＃２のファームウエアが更新され且つＨＤＤ＃０の異常が検出された場合におけるデータのリカバリ方法が示されている。図１８に示すように、ＨＤＤ＃１及びＨＤＤ＃２から、同一のＬＢＡ値を有するセクタに格納されたデータが読み出され、また、そのＬＢＡ値にｘが加算されたＬＢＡ値を有する領域に格納されたパリティデータが、ＵＳＢフラッシュドライブ１０から読み出される。そして、読み出されたデータとパリティデータとの排他的論理和が演算され、演算結果のデータが、新しいＨＤＤであるＨＤＤ＃３に格納される。例えば、ＨＤＤ＃１及びＨＤＤ＃２から、ＬＢＡ値が０ｘ００００００００であるセクタにおける５１２バイトのデータが読み出され、ＲＡＷアクセスエリア１０２から、ＬＢＡ値がｘ＋１である領域における５１２バイトのパリティデータが読み出される。そして、読み出されたデータ及びパリティデータの排他的論理和が演算され、演算結果が、ＬＢＡ値が０ｘ００００００００であるセクタに格納される。このような処理が繰り返されることによって、リカバリすべきデータの全体が完成する。
【００５９】
以上のようにすれば、ファームウエアが更新されたことを確認したうえで漏れなく診断を行えるようになる。また、異常が検出されたＨＤＤのデータを復元できるようになる。
【００６０】
図１６の説明に戻り、作業者は、サーバ１をパワーオフし、ＵＳＢフラッシュドライブ１０をサーバ１から取り外す（ステップＳ３９）。そして処理は終了する。
【００６１】
なお、一般的なサーバにおいては複数のＨＤＤが搭載されていることが多いため、１つのＵＳＢフラッシュドライブ１０に全ＨＤＤのデータをそのまま保存することは容量の観点から難しい。しかし、本実施の形態の方法であれば、ＵＳＢフラッシュドライブ１０に保存するデータの量を減らすことができる。それに伴い、バックアップに要する時間を短縮できるようになる。
【００６２】
また、ＵＳＢフラッシュドライブ１０のような可搬記憶媒体にデータを一時的に格納することはセキュリティ上の問題を発生させる可能性があるが、本実施の形態においてはオリジナルデータではなくパリティデータを保存するのでそのような問題は生じない。そして、ＨＤＤ１台の故障であれば、パリティデータを使用してデータをリカバリすることができる。なお、対象ＨＤＤが１台である場合には対象ＨＤＤ内のデータと同じデータがＲＡＷアクセスエリア１０２に格納されることになるが、ＲＡＷアクセスエリア１０２内のデータを通常の手段では読み出すことができないので問題は無い。
【００６３】
また、ＵＳＢフラッシュドライブ１０から起動するＯＳ１０１０とサーバ１のＯＳとが異なる場合、ファイル構造の違いが原因でバックアップすることができなくなることがある。しかし、本実施の形態においてはＲＡＷアクセスエリア１０２にデータを保存するので、そのような問題は生じない。
【００６４】
また、１回のオンラインセッションにおいてバックアップ及びアップデートをシーケンシャルに行うことができるようになる。すなわち、バックアップ及びアップデートが完了するまではサーバ１の再起動を行うことが無い。
【００６５】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したＵＳＢフラッシュドライブ１０の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００６６】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００６７】
また、ＵＳＢフラッシュドライブ１０の代わりに他の可搬記憶媒体（例えば、外付型のＵＳＢＨＤＤ等）を使用してもよい。
【００６８】
また、サーバ１ではなく一般のＰＣであっても本実施の形態を適用することが可能である。また、ＨＤＤではなく他の記憶装置（例えばＳＳＤ(Solid State Drive)）について本実施の形態を適用することも可能である。
【００６９】
［付録］
本付録においては、本実施の形態に関連する事項について説明を追加する。
【００７０】
１．テープデバイス又は外部ストレージデバイスを使用したバックアップ
図１９を用いて、テープデバイス又は外部ストレージデバイスを使用したバックアップの方法について説明する。この方法においては、ＣＰＵが実行するバックアップ用のソフトウエアによってバックアップが行われる。まず、ＣＰＵによって、ＨＤＤファームウエアのアップデートが行われるＨＤＤから、データがＳＡＳコントローラ又はＳＡＴＡコントローラを介して読み出され、読み出されたデータはシステムメモリに一次展開される（図１９の矢印１９０１）。そして、システムメモリに一次展開されたデータは、ＣＰＵにより読み出され、ＳＡＳコントローラを介してバックアップ用のテープデバイス又は外部ストレージデバイスに転送される（図１９の矢印１９０２）。また、図１９に示したように、サーバにＲＡＩＤコントローラが搭載されている場合には、ＲＡＩＤ機能によってＨＤＤが冗長化され、データが消失する可能性が低くなる。破線１９０３内のＨＤＤは、冗長化されたＨＤＤである。
【００７１】
２．ＨＤＤファームウエアのアップデート
ＨＤＤファームウエアの改版は、パフォーマンスの向上及び問題の解決などを目的としてしばしば行われる。しかし、ＨＤＤファームウエアのアップデート時にはデータが破壊されたり、ＨＤＤが動作しなくなったりすることがある。そのため、ＨＤＤベンダ及びサーバベンダからは、ＨＤＤファームウエアのアップデート前に前もってデータをバックアップすることが推奨されている。
【００７２】
通常、ＨＤＤファームウエアをアップデートする場合、まずＨＤＤベンダのウェブサイト等からダウンロードしたファームウエアイメージデータ及びファームウエアアップデートプログラムをＵＳＢフラッシュドライブ等の可搬記憶媒体に格納し、ファームウエア更新メディアを作成する。そして、ファームウエア更新メディアからサーバを起動し、予め定められた手順に従ってアップデートを実行する。アップデートは、サーバのＯＳをシャットダウンした後にＵＳＢフラッシュドライブから独立したＯＳを起動し、そのＯＳ上でファームウエアアップデートプログラムを実行することによって行われる。
【００７３】
図２０を用いて、ＨＤＤファームウエアのアップデート方法についてより具体的に説明する。ファームウエアアップデートプログラムがＣＰＵにより実行されると、ＵＳＢフラッシュドライブから、読み出されたファームウエアイメージデータがシステムメモリに展開される（図２０の矢印２００１）。システムメモリに展開されたファームウエアイメージデータは、ＳＡＳコントローラ又はＳＡＴＡコントローラを介してＨＤＤに転送される（図２０の矢印２００２）。ＵＳＢフラッシュドライブは、ＨＤＤファームウエアのアップデート時にのみサーバに接続され、アップデート完了後は取り外される。
【００７４】
よって、リカバリ用データのバックアップ及びＨＤＤファームウエアのアップデート時には、アップデート対象のＨＤＤ、ＲＡＩＤコントローラ又はバックアップ用ストレージデバイス（例えばテープデバイス又は外部ストレージデバイス）、及びＵＳＢフラッシュドライブ等の可搬記憶媒体が使用される。
【００７５】
３．排他的論理和の演算とパリティデータ
或る１台のＨＤＤが故障した場合、図２１に示すように、残りのＨＤＤに格納されたデータと生成されたパリティデータとを使った排他的論理和の演算により、故障したＨＤＤのデータを算出することができる。例えばＨＤＤ＃０が故障した場合、ＨＤＤ＃１に格納されたデータと、ＨＤＤ＃２に格納されたデータと、生成したパリティデータとの排他的論理和の演算結果が、ＨＤＤ＃０に格納されたデータに相当する。
【００７６】
図２２及び図２３に、パリティデータの生成例を示す。図２２は、各ＨＤＤの容量が同じである場合におけるパリティデータの生成例である。図２２の例では、ＬＢＡ ０ｘ１、ＬＢＡ ０ｘ２、及びＬＢＡ ０ｘ３の各々について、ＨＤＤ＃０乃至＃２の各々のデータを使用して排他的論理和によってパリティデータが生成される。図２３は、各ＨＤＤの容量が同じではない場合におけるパリティデータの生成例である。図２３の例では、ＬＢＡ ０ｘ１、ＬＢＡ ０ｘ２、及びＬＢＡ ０ｘ３の各々について、ＨＤＤ＃０乃至＃２の各々のデータを使用して排他的論理和によってパリティデータが生成される。ＬＢＡ ０ｘ４及びＬＢＡ ０ｘ５の各々について、ＨＤＤ＃１及び＃２の各々のデータを使用して排他的論理和によってパリティデータが生成される。ＬＢＡ ０ｘ６については、ＨＤＤ＃２のデータと同じデータが生成される。
【００７７】
図２４に、パリティデータを使用したデータの復旧例を示す。図２４においては、ＨＤＤ＃２に故障が発生している。そこで、ＵＳＢフラッシュドライブに格納されたパリティデータと、ＨＤＤ＃０に格納されたデータと、ＨＤＤ＃１に格納されたデータとの排他的論理和を計算することによってＨＤＤ＃２に格納されていたデータを復元し、交換後のＨＤＤであるＨＤＤ＃３に格納する。
【００７８】
以上で付録を終了する。
【００７９】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００８０】
本実施の形態に係るバックアップ方法は、コンピュータが実行する。そして、本バックアップ方法は、（Ａ）コンピュータがアクセス可能な複数の記憶装置の各々からデータを読み出し、読み出した当該データからパリティデータを生成し、（Ｂ）コンピュータに接続された可搬記憶媒体であって、ローデバイスとしてアクセスされる第１の領域を有する可搬記憶媒体の第１の領域に、生成されたパリティデータを格納する処理を含む。
【００８１】
このようにすれば、保存すべきデータ量を抑えつつ、且つ、コンピュータのＯＳについて制限を受けることなく、データが消失するリスクを低減できるようになる。
【００８２】
また、上で述べたパリティデータを生成する処理において、（ａ１）複数の記憶装置の各々から、同じ通し番号を有するセクタに格納されたデータを読み出し、読み出した当該データの排他的論理和によってパリティデータを生成してもよい。このようにすれば、パリティデータの生成を適切に行えるようになる。
【００８３】
また、本バックアップ方法は、（Ｃ）コンピュータに接続された可搬記憶媒体の領域の一部を第１の領域に設定する処理をさらに含んでもよい。これにより、コンピュータのＯＳの種類について制約を受けることが無くなる。
【００８４】
また、本バックアップ方法は、（Ｄ）複数の記憶装置の各々のファームウエアを更新し、（Ｅ）ファームウエアを更新したことを示す情報を、可搬記憶媒体の第１の領域以外の領域である第２の領域に格納し、（Ｆ）コンピュータの再起動を促すメッセージを表示させる処理をさらに含んでもよい。このようにすれば、ファームウエアの更新後に再起動をし忘れることを防止できるようになる。また、再起動後に、既にファームウエアの更新が行われたことを知ることができるようになる。
【００８５】
また、本バックアップ方法は、（Ｇ）コンピュータが再起動した後、ファームウエアを更新したことを示す情報が可搬記憶媒体に格納されているか判定し、（Ｈ）ファームウエアを更新したことを示す情報が可搬記憶媒体の第２の領域に格納されている場合、複数の記憶装置の各々の診断を行う処理をさらに含んでもよい。このようにすれば、ファームウエアの更新後に行うべき診断を漏れなく実行できるようになる。
【００８６】
また、バックアッププログラムは可搬記憶媒体の第２の領域に格納されていてもよい。このようにすれば、可搬記憶媒体上からバックアッププログラムを起動できるようになる。
【００８７】
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００８８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８９】
（付記１）
コンピュータに、
前記コンピュータがアクセス可能な複数の記憶装置の各々からデータを読み出し、読み出した当該データからパリティデータを生成し、
前記コンピュータに接続された可搬記憶媒体であって、ローデバイスとしてアクセスされる第１の領域を有する前記可搬記憶媒体の前記第１の領域に、生成された前記パリティデータを格納する、
処理を実行させるバックアッププログラム。
【００９０】
（付記２）
前記パリティデータを生成する処理において、
前記複数の記憶装置の各々から、同じ通し番号を有するセクタに格納されたデータを読み出し、読み出した当該データの排他的論理和によってパリティデータを生成する、
付記１記載のバックアッププログラム。
【００９１】
（付記３）
前記コンピュータに、
前記コンピュータに接続された前記可搬記憶媒体の領域の一部を前記第１の領域に設定する、
処理をさらに実行させる付記１又は２記載のバックアッププログラム。
【００９２】
（付記４）
前記コンピュータに、
前記複数の記憶装置の各々のファームウエアを更新し、
前記ファームウエアを更新したことを示す情報を、前記可搬記憶媒体の前記第１の領域以外の領域である第２の領域に格納し、
前記コンピュータの再起動を促すメッセージを表示させる、
処理をさらに実行させる付記１乃至３のいずれか１つ記載のバックアッププログラム。
【００９３】
（付記５）
前記コンピュータに、
前記コンピュータが再起動した後、前記ファームウエアを更新したことを示す情報が前記可搬記憶媒体に格納されているか判定し、
前記ファームウエアを更新したことを示す情報が前記可搬記憶媒体の前記第２の領域に格納されている場合、前記複数の記憶装置の各々の診断を行う、
処理をさらに実行させる付記４記載のバックアッププログラム。
【００９４】
（付記６）
前記バックアッププログラムは前記可搬記憶媒体の前記第２の領域に格納されている、
付記１乃至５のいずれか１つ記載の情報処理装置。
【００９５】
（付記７）
コンピュータが、
前記コンピュータがアクセス可能な複数の記憶装置の各々からデータを読み出し、読み出した当該データからパリティデータを生成し、
前記コンピュータに接続された可搬記憶媒体であって、ローデバイスとしてアクセスされる第１の領域を有する前記可搬記憶媒体の前記第１の領域に、生成された前記パリティデータを格納する、
処理を実行するバックアップ方法。
【００９６】
（付記８）
情報処理装置であって、
前記情報処理装置がアクセス可能な複数の記憶装置の各々からデータを読み出し、読み出した当該データからパリティデータを生成する生成部と、
前記情報処理装置に接続された可搬記憶媒体であって、ローデバイスとしてアクセスされる第１の領域を有する前記可搬記憶媒体の前記第１の領域に、生成された前記パリティデータを格納する格納処理部と、
を有する情報処理装置。
【符号の説明】
【００９７】
１  サーバ    １０  ＵＳＢフラッシュドライブ
１１  ＵＳＢバス    １２  ＣＰＵ
１３  メモリバス    １４  システムメモリ
１５  ＰＣＩバス    １６  コントローラ
１０１  ファイルアクセスエリア    １０２  ＲＡＷアクセスエリア
１０１０  ＯＳ    １０１１  バックアッププログラム
１０１２  ファームウエアアップデートプログラム    １０１３  診断プログラム
１０１４  リカバリプログラム
【図１】
2017027356.tif 000003
【図２】
2017027356.tif 000004
【図３】
2017027356.tif 000005
【図４】
2017027356.tif 000006
【図５】
2017027356.tif 000007
【図６】
2017027356.tif 000008
【図７】
2017027356.tif 000009
【図８】
2017027356.tif 000010
【図９】
2017027356.tif 000011
【図１０】
2017027356.tif 000012
【図１１】
2017027356.tif 000013
【図１２】
2017027356.tif 000014
【図１３】
2017027356.tif 000015
【図１４】
2017027356.tif 000016
【図１５】
2017027356.tif 000017
【図１６】
2017027356.tif 000018
【図１７】
2017027356.tif 000019
【図１８】
2017027356.tif 000020
【図１９】
2017027356.tif 000021
【図２０】
2017027356.tif 000022
【図２１】
2017027356.tif 000023
【図２２】
2017027356.tif 000024
【図２３】
2017027356.tif 000025
【図２４】
2017027356.tif 000026