JP2021179730A - 情報処理装置、その制御方法、およびプログラム - Google Patents

情報処理装置、その制御方法、およびプログラム Download PDF

Info

Publication number
JP2021179730A
JP2021179730A JP2020084024A JP2020084024A JP2021179730A JP 2021179730 A JP2021179730 A JP 2021179730A JP 2020084024 A JP2020084024 A JP 2020084024A JP 2020084024 A JP2020084024 A JP 2020084024A JP 2021179730 A JP2021179730 A JP 2021179730A
Authority
JP
Japan
Prior art keywords
command
data
storage
storage device
raid
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020084024A
Other languages
English (en)
Inventor
昌弘 滝澤
Masahiro Takizawa
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2020084024A priority Critical patent/JP2021179730A/ja
Publication of JP2021179730A publication Critical patent/JP2021179730A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

【課題】情報処理装置では、リビルド処理中での電源遮断などに起因する記憶装置でのデータの消失や破損を抑制する。【解決手段】複数の記憶装置113,114が接続可能であり、中央演算装置101からのデータを、接続されている記憶装置113,114に対して書き込むミラーリング制御部を有する情報処理装置は、接続されている複数の記憶装置113,114へのデータ書き込みを制御するために設けられ、接続されている複数の記憶装置113,114の間でのデータの書き込みを制御する制御部306と、中央演算装置101がデータを書き込む際にコマンドを発行した場合に、コマンドの直前のアドレスを記憶する記憶手段305と、を有する。制御部306は、接続されている複数の記憶装置113,114の中の1つの記憶装置113のデータを他の記憶装置114へ書き込む処理において、記憶手段305に記憶されているアドレスについての書き込みを実行した場合にはコマンドを発行する。【選択図】図3

Description

本発明は、情報処理装置、その制御方法、およびプログラムに関する。
MFPといった情報処理装置では、そのデータを記憶するためにハードディスク装置(HDD)またはソリッドステートドライブ(SSD)などの記憶装置を使用する(特許文献1)。
また、情報処理装置では、そのミラーリング制御部に複数の記憶装置を接続して、中央演算装置からのデータを、接続されている複数の記憶装置に対して書き込むものがある。ただし、情報処理装置で使用する記憶装置は、それを複数化したとしても故障することがある。この場合、情報処理装置のミラーリング制御部は、故障により交換された記憶装置に対して、故障していない記憶装置のデータを書き込むリビルド処理を実行する。データを冗長化して記録することにより、中央演算装置からのデータについての破損や消失が起き難くなる。
特許第5279634号広報
しかしながら、情報処理装置では、このようなリビルド処理中において電源遮断などが起きる可能性がある。リビルド処理中において電源遮断などが起きると、ミラーリング制御部は、交換された記憶装置に対して、故障していない記憶装置のデータを正しく書き込むことができなくなる可能性がある。たとえばHDDやSSDでは、中央演算装置からのデータを一時記憶するキャッシュメモリを使用する。この場合、交換されたHDDやSSDは、リビルド処理に係るデータをキャッシュメモリに一次記録し、その後にキャッシュメモリから不揮発性の磁気ディスクやNANDフラッシュへ記録する。不揮発性の磁気ディスクやNANDフラッシュへの記録が完了する前に電源遮断などが起きると、交換されたHDDやSSDへ書き込んだはずのリビルド処理に係るデータが消失してしまうことになる。特に、SSDのキャッシュメモリの記憶容量は、HDDのキャッシュメモリの記憶容量よりも大容量となる傾向にあり、データが消失が甚大となり易いと考えられる。
このように情報処理装置では、リビルド処理中での電源遮断などに起因する記憶装置でのデータの消失や破損を抑制することが望まれる。
本発明に係る情報処理装置は、複数の記憶装置が接続可能であり、中央演算装置からのデータを、接続されている前記記憶装置に対して書き込むミラーリング制御部を有する情報処理装置であって、接続されている複数の前記記憶装置へのデータ書き込みを制御するために設けられ、接続されている複数の前記記憶装置の間でのデータの書き込みを制御する制御部と、前記中央演算装置がデータを書き込む際にコマンドを発行した場合に、前記コマンドの直前のアドレスを記憶する記憶手段と、を有し、前記制御部は、接続されている複数の前記記憶装置の中の1つの記憶装置のデータを他の記憶装置へ書き込む処理において、前記記憶手段に記憶されているアドレスについての書き込みを実行した場合には前記コマンドを発行する。
本発明では、情報処理装置のミラーリング制御部に接続されている複数の記憶装置の中の1つの記憶装置のデータを他の記憶装置へ書き込むリビルド処理中において電源遮断などが生じても、記憶装置でのデータ消失や破損を抑制し得る。
本発明の実施形態に係る情報処理装置としての画像形成装置を含む情報処理システムの模式的なブロック図である。 図1の記憶装置の一例を示す模式的なブロック図である。 図1のミラーリング制御部の模式的なブロック図である。 図1の中央処理装置としてのメインCPUが記憶装置へアクセスする通常時におけるコマンド処理を示すフローチャートである。 図1のMFPのミラーリング制御部に新たな記憶装置が接続されている情報処理システムの模式的なブロック図である。 新たな記憶装置が接続された場合においてミラーリング制御部が実行するリビルド処理を示すフローチャートである。 メインCPUが記憶装置に書込みをする通常時の場合での書込処理と、それに対応するミラーリング制御部によるリビルド処理とを説明するタイミングチャートである。 図7(A)の処理に対応してミラーリング制御部の記憶部に記録されるコマンド履歴リストの一例の説明図である。
以下、本発明の実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は実施形態に記載されている構成によって限定されることはない。
図1は、本発明の実施形態に係る情報処理装置としての画像形成装置を含む情報処理システム1の模式的なブロック図である。図1の情報処理システム1は、画像形成装置してのMFP100、コンピュータ端末によるホストコンピュータ107、および、これらが接続されるローカル・エリア・ネットワーク106、を有する。MFP100は、メインコントローラ120、を有する。メインコントローラ120は、メインCPU101、メインRAM102、メインROM103、および、メインバス119、を有する。メインバス119には、さらに、LAN−I/F制御部105、Reader‐I/F制御部108、画像処理部110、ミラーリング制御部111、操作部IF部115、ビデオ出力I/F部117、が接続される。メインバス119は、バスコントローラを含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。メインバス119は、たとえば、PCI Express、ASICによる内部バス、がある。
LAN−I/F制御部105は、ローカル・エリア・ネットワーク106が接続される。LAN−I/F制御部105は、ローカル・エリア・ネットワーク106を通じて、ローカル・エリア・ネットワーク106に接続される他の装置、たとえば図1のホストコンピュータ107との間で、データを送受する。このような通信のプロトコルには、たとえばTCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルがある。ホストコンピュータ107は、プリント用の画像データをネットワーク106経由でMFP100へ送信する。Reader‐I/F制御部108には、MFP100のスキャナ装置109に接続される。Reader‐I/F制御部108は、スキャナ装置109によるスキャン動作を制御する。スキャナ装置109は、原稿をスキャンする。Reader‐I/F制御部108は、スキャンデータを読取画像データへ変換する。画像処理部110は、画像データを処理する。画像処理部110は、たとえばLAN−I/F制御部105またはReader‐I/F制御部108が取得する画像データを処理して、印刷用の画像データを生成する。ビデオ出力I/F部117は、印字部118に接続される。印字部118は、ここでは図示しないが印刷装置本体と給紙系及び排紙系から構成され、印刷用の画像データに基づく画像を用紙に印刷する。ビデオ出力I/F部117は、印刷のためのコマンド/ステータスの通信を制御し、印刷用の画像データを転送する。操作部IF部115は、MFP100の操作部116が接続される。操作部116は、たとえば液晶デバイス、タッチパネル、ボタン、を有する。タッチパネルは、液晶デバイスの上に重ねられる。操作部116は、たとえばMFP100の上部に設けられ、MFP100のユーザ・インターフェイスとして機能する。ユーザが、液晶デバイスに表示される操作画面に対応する操作をタッチパネルに対して実行する。操作部IF部115は、ユーザ操作を検出する。
ミラーリング制御部111は、MFP100の記憶装置113が接続される。記憶装置113には、たとえばハードディスク装置(HDD)、ソリッドステートドライブ(SSD)がある。ミラーリング制御部111は、MFP100で用いる画像データ、その他のデータを、接続されている記憶装置113に書込む。また、ミラーリング制御部111は、記憶装置113からデータを読み出す。ミラーリング制御部111は、記憶装置113とのデータ入出力を制御する。ミラーリング制御部111には、複数の記憶装置113を接続可能である。複数の記憶装置113が接続されている場合、ミラーリング制御部111は、複数の記憶装置113に対して同じデータを書込むミラーリング処理を実行する。また、新たな記憶装置113が接続された場合、ミラーリング制御部111は、前から接続されている記憶装置113のデータを、新たな記憶装置113に書込むリビルド処理を実行する。これにより、ミラーリング制御部111は、接続されている複数の記憶装置113に同じデータを書込んだ状態にすることができる。ここで、ミラーリング制御部111と記憶装置113とは、たとえばSATA(Serial Advanced Technology Attachment)規格に準拠したI/F用のバスで接続されてよい。I/F用のバスには、この他にもたとえばSAS、SATA Express、PCI Express、NVM Express、M.2、eMMC、USBなどがある。
メインRAM102は、揮発性の書き換え可能なメモリである。メインRAM102は、たとえばDDR(Double−Data−Rate)メモリによるランダム・アクセス・メモリでよい。メインRAM102は、作業領域、印刷データの格納領域、各種テーブル、などが割り当てられ、それらのデータを記憶する。メインROM103は、不揮発性メモリである。メインROM103は、Flashメモリなど書き換え可能なものでも、マスクROMのように書き換え不可能なものでもよい。メインROM103は、制御プログラム、制御パラメータを記憶する。メインCPU101は、中央処理装置である。メインCPU101は、メインROM103に記憶されているプログラムをメインRAM102に展開して実行する。これにより、メインCPU101は、MFP100の全体を制御する制御部として機能する。メインCPU101は、また、各種の演算処理を実行する。これにより、メインCPU101は、MFP100を制御するための制御装置として機能する。メインCPU101は、MFP100全体の制御を行う。
図2は、図1の記憶装置113の一例を示す模式的なブロック図である。図2の記憶装置113は、記憶媒体231、記憶装置キャッシュメモリ232、および、これらが接続される記憶装置コントローラ230、を有する。記憶媒体231は、不揮発性のメモリである。記憶装置113がHDDである場合、記憶媒体231は磁気ディスクである。記憶装置113がSSDである場合、記憶媒体231は、半導体メモリである。記憶装置キャッシュメモリ232は、記憶装置コントローラ230が制御する揮発性の記憶素子である。記憶装置キャッシュメモリ232は、たとえば、DRAM(ダイナミック・ランダム・アクセス・メモリ)、SRAM(スタティック・ランダム・アクセス・メモリ)である。記憶装置キャッシュメモリ232は、記憶媒体231と比べて書込み速度が速い。記憶装置コントローラ230は、接続されるミラーリング制御部111と通信し、記憶媒体231および記憶装置キャッシュメモリ232のデータアクセスを制御する。たとえばミラーリング制御部111による記憶装置113への書込データを取得すると、記憶装置コントローラ230は、そのデータを一時的に記憶装置キャッシュメモリ232へ記憶する。その後、記憶装置コントローラ230は、記憶装置キャッシュメモリ232に一時的に記憶させているデータを、記憶媒体231へ書込む。これにより、ミラーリング制御部111による記憶装置113への書込データは、記憶装置113の記憶媒体231に不揮発的に記憶される。記憶装置113を含むMFP100の電源が切られても、ミラーリング制御部111が記憶装置113へ書込んだデータは消失しない。ただし、リビルド処理中に記憶装置113を含むMFP100の電源が切られると、ミラーリング制御部111による記憶装置113への書込データは消失する可能性がある。
図3は、図1のミラーリング制御部111の模式的なブロック図である。図3のミラーリング制御部111は、複数の記憶装置113を接続可能なインターフェースであり、メインバス119に接続される。図3のミラーリング制御部111は、メインバスI/F301、第一インターフェース303、第二インターフェース304、コマンド選択部302、レイド記憶部305、レイドRAM307、レイドCPU306、を有する。メインバスI/F301は、メインバス119に接続される。メインバスI/F301は、メインCPU101との通信インターフェイスである。第一インターフェース303には、記憶装置113が接続可能である。第一インターフェース303は、接続されている記憶装置113についてのホストインターフェースである。第二インターフェース304には、後述するように他の記憶装置114が接続可能である。第二インターフェース304は、接続されている他の記憶装置114についてのホストインターフェースである。コマンド選択部302は、メインバスI/F301、第一インターフェース303、第二インターフェース304、および、レイドCPU306、に接続される。コマンド選択部302は、レイドCPU306の制御下で、メインバスI/F301、第一インターフェース303、第二インターフェース304の間でのデータフローを制御する。コマンド選択部302は、たとえばメインバスI/F301と第一インターフェース303または第二インターフェース304との間で入出力する通信データについて、コマンド変換やプロトコル変換を実行する。
レイド記憶部305は、たとえばEEPROM、FlashROMといった不揮発性の記憶素子である。レイド記憶部305は、SRAM、DRAMなど揮発性の記憶素子に不図示のバッテリ給電を接続したものでもよい。レイド記憶部305は、レイドCPU306により実行されるたとえばミラーリング処理やリビルド処理のためのプログラム、およびそれに使用するデータを記憶する。レイドRAM307は、揮発性の書き換え可能なメモリである。レイドRAM307には、レイドCPU306がプログラム実行の際に使用する作業領域、コマンドやデータの一時格納領域、などが割り当てられる。レイドCPU306は、レイド記憶部305に記憶されているプログラムを読み込んでレイドRAM307に展開して実行する。これにより、レイドCPU306は、ミラーリング処理やリビルド処理を実行するレイド制御部として機能する。レイド制御部としてのレイドCPU306は、コマンド選択部302によるルーティング制御を実行する。
たとえば、レイドCPU306は、コマンド選択部302が取得したコマンドなどを判別し、コマンドなどの経路を選択してコマンド選択部302に指示する。メインバス119からミラーリング制御部111へWriteコマンドを発行すると、レイドCPU306は、そのコマンドを変換して第一インターフェース303および第二インターフェース304から出力することを、コマンド選択部302へ指示する。メインバス119からミラーリング制御部111へReadコマンドを発行すると、レイドCPU306は、そのコマンドを変換して第一インターフェース303または第二インターフェース304へ出力することを、コマンド選択部302へ指示する。その後、コマンド選択部302がたとえば第一インターフェース303からReadデータを取得すると、レイドCPU306は、そのデータを変換してメインバス119へ出力することを、コマンド選択部302へ指示する。この他にもたとえば、レイドCPU306は、コマンド記憶手段として、通常時に、コマンド選択部302がメインバスI/F301から取得したFlush Cacheコマンドについてコマンド履歴リストを生成し、レイド記憶部305に記録する。レイドCPU306は、リビルド処理時には、記憶手段としてのレイド記憶部305に記憶させたコマンド履歴リストを参照してリビルド処理を実行する。
図4は、図1のメインCPU101が記憶装置113へアクセスする通常時におけるコマンド処理を示すフローチャートである。レイドCPU306は、メインCPU101が記憶装置113へアクセスする場合に、図4の処理を繰り返し実行する。図4では、一般的なコマンド処理について省略している。ステップS401において、レイドCPU306は、メインCPU101からのコマンドを待つ。たとえば、メインCPU101は、記憶装置113にアクセスを開始する際にコマンドを発行する。ミラーリング制御部111のメインバスI/F301は、このコマンドを受信する。レイドCPU306は、コマンド選択部302を通じて、メインバスI/F301が受信したコマンドを取得する。コマンド選択部302を通じて取得したデータがコマンドでない場合、レイドCPU306は、本処理を繰り返す。コマンド選択部302を通じて取得したデータがコマンドである場合、レイドCPU306は、処理をステップS402へ進める。ステップS402において、レイドCPU306は、取得したコマンドがWriteコマンドであるか否かを判断する。Writeコマンドである場合、レイドCPU306は、処理をステップS403へ進める。Writeコマンドでない場合、レイドCPU306は、ステップS403からステップS406を処理することなく、処理をステップS407へ進める。ステップS403において、レイドCPU306は、WriteコマンドのLBA(論理ブロック・アドレス)を、一時記憶する。レイドCPU306は、WriteコマンドのLBA(論理ブロック・アドレス)を、レイドCPU306の非図示のレジスタ記憶する。レイドCPU306は、WriteコマンドのLBA(論理ブロック・アドレス)を、レイド記憶部305に記憶してよい。ステップS404において、レイドCPU306は、再び、メインCPU101からのコマンドを待つ。ここでは、ライトアクセス中のコマンドを待つことになる。コマンド選択部302を通じて取得したデータがコマンドでない場合、レイドCPU306は、本処理を繰り返す。コマンド選択部302を通じて取得したデータがコマンドである場合、レイドCPU306は、処理をステップS405へ進める。ステップS405において、レイドCPU306は、取得したコマンドがFlush Cacheコマンドであるか否かを判断する。Flush Cacheコマンドである場合、レイドCPU306は、処理をステップS406へ進める。Flush Cacheコマンドでない場合、レイドCPU306は、処理をステップS402へ戻す。ステップS406において、レイドCPU306は、ステップS403で一時記憶したLBAを、レイド記憶部305に記憶する。ステップS407において、レイドCPU306は、記憶装置113を含むミラーリング制御部111のシャットダウンを判断する。メインCPU101は、たとえばMFP100をアイドル状態にしたり停止したりする場合に、その通知をミラーリング制御部111へ送信する。具体的にはたとえば、メインCPU101は、Flush Cacheコマンドと、Standby Immediateコマンドとをミラーリング制御部111へ送信することにより、ミラーリング制御部111にシャットダウンを通知する。シャットダウンをしない場合、メインCPU101は、処理をステップS401へ戻す。シャットダウンをする場合、メインCPU101は、本処理を終了する。
この通常時のコマンド処理により、レイド記憶部305には、Flush Cacheコマンドが発行される直前のWriteコマンドの複数のLBAが蓄積して記憶される。レイド記憶部305は、メインCPU101がデータを書込む際にコマンドを発行した場合に、コマンドの直前のアドレスを、記憶手段としてのレイド記憶部305に記憶する。レイド記憶部305には、複数のLBAのリストによるコマンド履歴リストが生成される。レイド記憶部305は、記憶手段として、メインCPU101がデータを書込む際にFlush Cacheコマンドを発行した場合に、コマンドの直前のアドレスを記憶する。レイドCPU306は、図4と同様の処理により、Flush Cacheコマンド以外のコマンドが発行される直前のWriteコマンドのLBAを記録してよい。このようなコマンドには、たとえば、Write DMA FUA EXTコマンド、Write DMA Queued FUA EXTコマンド、Write Multiple FUA EXTコマンド、がある。
図5は、図1のMFP100のミラーリング制御部111に新たな記憶装置113が接続されている情報処理システム1の模式的なブロック図である。図5のミラーリング制御部111には、図1の際に接続されている記憶装置113と、新たに接続された他の記憶装置114との、複数の記憶装置113が接続されている。複数の記憶装置113,114は、ミラーリングなどのレイド機能に利用できる。データを複数の記憶装置113,114に冗長化して記録することにより、1つの記憶装置113が故障しても、他の記憶装置114に記録されているデータを使用してMFP100は動作することができる。この場合、レイドCPU306は、たとえばメインCPU101からデータを取得した場合、取得したデータを、ミラーリング処理により、接続されている複数の記憶装置113,114に対して書込む。また、レイドCPU306は、図1において接続されている一方の記憶装置113のデータを、新たに接続された他の記憶装置114へコピーするためのリビルド処理を実行する。レイドCPU306は、接続されている複数の記憶装置113,114の間でのデータの書込みを制御する。
図6は、新たな記憶装置113が接続された場合においてミラーリング制御部111が実行するリビルド処理を示すフローチャートである。レイドCPU306は、リビルド処理のために、図6の処理を実行する。ステップS601において、レイドCPU306は、リビルド処理のための初期化処理を実行する。ここでは、レイドCPU306は、リビルド処理のLBAを管理する変数nを0に初期化する。ステップS602において、レイドCPU306は、LBA nをリビルドする。レイドCPU306は、コマンド選択部302を通じて第一インターフェース303から一方の記憶装置113へReadコマンドを送る。一方の記憶装置113は、Readコマンドに係るLBAのデータを返す。レイドCPU306は、第一インターフェース303およびコマンド選択部302を通じて、一方の記憶装置113のデータを取得する。レイドCPU306は、コマンド選択部302を通じて第二インターフェース304から他方の記憶装置113へWriteコマンドを送る。他方の記憶装置113は、Writeコマンドのデータを、一時的に記憶装置キャッシュメモリ232へ記憶する。LBA nのデータは、一方の記憶装置113から読み出されて、他方の記憶装置114の記憶装置キャッシュメモリ232に一時的に記録された状態となる。ステップS603において、レイドCPU306は、ステップS602の処理に係るLBA nが、ファイルシステムからのアクセス時においてFlush Cacheコマンドが発行されたLBAかどうかを判断する。レイドCPU306は、コマンド履歴リストを参照して、Flush Cacheコマンドが発行されたLBAかどうかを判断する。Flush Cacheコマンドが発行されたLBAである場合、レイドCPU306は、処理をステップS604へ進める。Flush Cacheコマンドが発行されたLBAでない場合、レイドCPU306は、ステップS604を飛ばして、処理をステップS605へ進める。ステップS604において、レイドCPU306は、Flush Cacheコマンドを発行する。レイドCPU306は、第二インターフェース304から他方の記憶装置113へFlush Cacheコマンドを送る。他方の記憶装置113の記憶装置コントローラ230は、記憶装置キャッシュメモリ232に一時的に記憶させているデータを、記憶媒体231へ書込む。これにより、LBA nのデータは、双方の記憶装置113に不揮発的に記録される。ステップS605において、レイドCPU306は、変数nをカウントアップする。レイドCPU306は、ステップS602でリビルドしたセクタ数で、変数nを増やす。たとえば、ステップS602において1セクタをリビルドしている場合、レイドCPU306は、変数nを1つインクリメントする。ステップS606において、レイドCPU306は、一方の記憶装置113すべてのLBAについてのリビルドが完了したかどうかを判断する。リビルドが完了していない場合、レイドCPU306は、処理をステップS602へ戻す。レイドCPU306は、インクリメントされた新たなLBA nについてのコピー処理を実行する。レイドCPU306は、一方の記憶装置113のデータを他方の記憶装置113へ書込み終えるまで、上述した処理を繰り返す。リビルドが完了している場合、レイドCPU306は、本処理を終了する。本処理の終了時点では、一方の記憶装置113のデータは、他方の記憶装置113へ書込まれる。新たに接続された他の記憶装置114には、図1において接続されている一方の記憶装置113のデータがコピーされる。
このように、レイドCPU306は、リビルド処理において、メインCPU101が制御するファイルシステムがFlush Cacheコマンドを発行するタイミングと同じLBAについてFlush Cacheコマンドを発行する。記憶装置113は、Flush Cacheコマンドを受けると、記憶装置キャッシュメモリ232のすべてのデータを記憶媒体231へ書込む。これにより、電源が突然にOFFしてもデータが消失し難くなる。レイドCPU306は、制御部として、リビルド処理において、記憶手段に記憶されているアドレスについての書込みを実行した場合にはコマンドを発行する。レイドCPU306は、複数の記憶装置の中の1つの記憶装置113のデータを他の記憶装置114へ書込むレイド処理中に記憶手段を参照して、コマンドを発行する。なお、本実施形態では、レイドCPU306は、コマンド履歴リストに記憶しているLBAと一致する場合にのみ、Flush Cacheコマンドを発行している。レイドCPU306は、これ以外のLBAについても、Flush Cacheコマンドを発行してよい。たとえばレイドCPU306は、リビルド処理中にWriteコマンドの直後に常にFlush Cacheコマンドを発行してもよい。
図7は、メインCPU101が記憶装置113に書込をする通常時の場合での書込処理と、それに対応するミラーリング制御部111によるリビルド処理とを説明するタイミングチャートである。図7(A)は、メインCPU101が記憶装置113に書込をする通常時の場合での書込処理のタイミングチャートである。横軸は時間である。縦軸はWriteコマンドに係るLBAである。図7(A)において、レイドCPU306は、メインCPU101のデータを書込む。レイドCPU306は、まずタイミング701において、LBA 0x1234_5678_9ABCにデータを書込む。次に、レイドCPU306は、タイミング702において、LBA 0x1234_5678_9ABEに付加情報を書込む。付加情報は、LBA 0x1234_5678_9ABCなどに書込んだデータについての管理情報を含む。ファイルシステムは、通常、メインCPU101のデータを書込んでから数秒から数十秒の後に付加情報を書込む。その後、レイドCPU306は、タイミング703において、メインCPU101からのFlush Cacheコマンドを取得して、Flush Cacheコマンドを発行する。また、レイドCPU306は、Flush Cacheコマンドを発行した直前のLBA 0x1234_5678_9ABEを、コマンド履歴リストに記録する。
図7(B)は、図7(A)に対応するリビルド処理のタイミングチャートである。図7(B)のリビルト処理において、レイドCPU306は、一方の記憶装置113のデータを他方の記憶装置113へ書込む。レイドCPU306は、タイミング711において、一方の記憶装置113のLBA 0x1234_5678_9ABCのデータを他方の記憶装置113へ書込む。次に、タイミング713において、レイドCPU306は、一方の記憶装置113のLBA 0x1234_5678_9ABCのデータを他方の記憶装置113へ書込む。これらの書込みのたびに、レイドCPU306は、図6の処理によりコマンド履歴リストを参照する。LBA 0x1234_5678_9ABEは、コマンド履歴リストに記憶されている。このため、タイミング714において、レイドCPU306は、Flush Cacheコマンドを発行する。他方の記憶装置113では、これまで書込まれたデータを記憶媒体231に不揮発的に記憶する。引き続き、タイミング715において、レイドCPU306は、一方の記憶装置113のLBA 0x1234_5678_9ABFのデータを他方の記憶装置113へ書込む。このように、レイドCPU306は、リビルト処理において、メインCPU101のデータを書込む場合と同様のデータ書込みを実現できる。レイドCPU306は、制御部としてリビルド処理において、記憶手段に記憶されているLBAについての書込みを実行した場合にはFlush Cacheコマンドを発行することができる。リビルト処理中に電源が突然OFFになっても、データが消失しない。特に、メインCPU101が付加情報を書込んだタイミングでFlush Cacheコマンドを発行することができ、データとその付加情報とをまとめて書込むことができる。
図8は、図7(A)の処理に対応してミラーリング制御部111の記憶部に記録されるコマンド履歴リストの一例の説明図である。図8のコマンド履歴リストには、メインCPU101が通常時に記憶装置113へ書込みをしたLBAごとのレコードを有する。各レコードには、LBAの値と、Flush Cacheコマンドの発行の有無を示すフラグとが含まれる。なお、ステップS406の処理によるコマンド履歴リストでは、Flush Cacheコマンドが発行されたLBAのみがコマンド履歴リストに含まれる。レイドCPU306は、メインCPU101が記憶装置113に書込をする通常時において、メインCPU101からFlush Cacheコマンドを取得すると、そのLBAの値を有するレコードのフラグを立てる。レイドCPU306は、メインCPU101からFlush Cacheコマンドを取得していない場合には、そのLBAの値を有するレコードのフラグを立てない。これにより、レイドCPU306は、図8のコマンド履歴リストを生成する。図8では、LBA 0x1234_5678_9ABEのレコードにおいて、フラグが立っている。また、レイドCPU306は、リビルド処理においてデータを書込むたびに、図8のコマンド履歴リストを参照する。そして、書込みに係るLBAのレコードにおいてフラグが立っている場合、レイドCPU306は、Flush Cacheコマンドを発行する。書込みに係るLBAのレコードにおいてフラグが立っていない場合、レイドCPU306は、Flush Cacheコマンドを発行しない。レイドCPU306は、次のデータの書込みを実行する。
以上のように、本実施形態では、メインCPU101が発行したFlush Cacheコマンドを発行する直前にWriteコマンドを発行したLBAをミラーリング制御部111が記憶し、リビルド処理時に記憶内容を参照する。そして、本実施形態では、LBAでFlush Cacheコマンドを発行する。そして、リビルド処理時においても、記録装置のキャッシュメモリの内容を不揮発性メディアにすぐに書込むことで、情報処理システム1の電源が突然OFFしてもデータ消失しにくくなる。本実施形態では、リビルド処理中において電源遮断などが生じても、記憶装置113でのデータ消失や破損を抑制し得る。このように情報処理装置では、複数の記憶装置の中の1つの記憶装置113のデータを他の記憶装置114へ書込むリビルド処理中での電源遮断などに起因する、記憶装置113でのリビルド処理に係るデータの消失や破損を抑制することができる。
1 情報処理システム
100 MFP(情報処理装置)
101 メインCPU
102 メインRAM
103 メインROM
111 ミラーリング制御部
113,114 記憶装置
230 記憶装置コントローラ
231 記憶媒体
232 記憶装置キャッシュメモリ
302 コマンド選択部
305 レイド記憶部(コマンド記憶手段)
306 レイドCPU
307 レイドRAM

Claims (6)

  1. 複数の記憶装置が接続可能であり、中央演算装置からのデータを、接続されている前記記憶装置に対して書き込むミラーリング制御部を有する情報処理装置であって、
    接続されている複数の前記記憶装置へのデータ書き込みを制御するために設けられ、接続されている複数の前記記憶装置の間でのデータの書き込みを制御する制御部と、
    前記中央演算装置がデータを書き込む際にコマンドを発行した場合に、前記コマンドの直前のアドレスを記憶する記憶手段と、
    を有し、
    前記制御部は、接続されている複数の前記記憶装置の中の1つの記憶装置のデータを他の記憶装置へ書き込む処理において、前記記憶手段に記憶されているアドレスについての書き込みを実行した場合には前記コマンドを発行する、
    情報処理装置。
  2. 前記制御部は、前記中央演算装置がデータを書き込んだ後にコマンドを発行したか否かを判断し、前記コマンドを発行している場合には直前のアドレスを前記記憶手段に記憶する、
    請求項1記載の情報処理装置。
  3. 前記記憶手段は、中央演算装置がデータを書き込む際にFlush Cacheコマンドを発行した場合に、前記コマンドの直前のアドレスを記憶し、
    前記制御部は、複数の前記記憶装置の中の1つの記憶装置のデータを他の記憶装置へ書き込む処理において、前記記憶手段に記憶されているアドレスについての書き込みを実行した場合には前記Flush Cacheコマンドを発行する、
    請求項1または2記載の情報処理装置。
  4. 前記制御部は、
    複数の前記記憶装置の中の1つの記憶装置のデータを他の記憶装置へ書き込む処理中に前記記憶手段を参照し、
    前記記憶手段に記憶されているアドレスについての書き込みを実行した場合には前記Flush Cacheコマンドを発行する、
    請求項3記載の情報処理装置。
  5. 複数の記憶装置が接続可能であり、中央演算装置からのデータを、接続されている前記記憶装置に対して書き込むミラーリング制御部を有する情報処理装置の制御方法であって、
    前記中央演算装置がデータを書き込んだ後においてコマンドの発行の有無を判断する判断工程と、
    前記中央演算装置が前記コマンドを発行している場合には直前のアドレスを前記記憶手段に記憶させるコマンド記憶工程と、
    接続されている複数の前記記憶装置の中の1つの記憶装置のデータを他の記憶装置へ書き込む処理において、前記記憶手段に記憶されているアドレスについての書き込みを実行した場合には前記コマンドを発行するリビルド工程と、
    を有する、情報処理装置の制御方法。
  6. 複数の記憶装置が接続可能であり、中央演算装置からのデータを、接続されている前記記憶装置に対して書き込むミラーリング制御部を有する情報処理装置の制御方法をコンピュータに実行させるプログラムであって、
    前記情報処理装置の制御方法は、
    前記中央演算装置がデータを書き込んだ後においてコマンドの発行の有無を判断する判断工程と、
    前記中央演算装置が前記コマンドを発行している場合には直前のアドレスを前記記憶手段に記憶させるコマンド記憶工程と、
    接続されている複数の前記記憶装置の中の1つの記憶装置のデータを他の記憶装置へ書き込む処理において、前記記憶手段に記憶されているアドレスについての書き込みを実行した場合には前記コマンドを発行するリビルド工程と、
    を有する、プログラム。
JP2020084024A 2020-05-12 2020-05-12 情報処理装置、その制御方法、およびプログラム Pending JP2021179730A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020084024A JP2021179730A (ja) 2020-05-12 2020-05-12 情報処理装置、その制御方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020084024A JP2021179730A (ja) 2020-05-12 2020-05-12 情報処理装置、その制御方法、およびプログラム

Publications (1)

Publication Number Publication Date
JP2021179730A true JP2021179730A (ja) 2021-11-18

Family

ID=78511468

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020084024A Pending JP2021179730A (ja) 2020-05-12 2020-05-12 情報処理装置、その制御方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP2021179730A (ja)

Similar Documents

Publication Publication Date Title
US8826066B2 (en) Information processing apparatus, control method of the information processing apparatus, and recording medium
JP5721344B2 (ja) システム、システムの制御方法、及び、プログラム
TWI502594B (zh) 用於快閃儲存裝置之半區塊管理
JP2008204041A (ja) ストレージ装置及びデータ配置制御方法
US8312313B2 (en) Information processing apparatus, method for controlling the information processing apparatus, and storage medium
US8296531B2 (en) Storage system, control unit, image forming apparatus, image forming method, and computer readable medium
US11194481B2 (en) Information processing apparatus and method for controlling information processing apparatus
US8924669B2 (en) Information processing apparatus, control method, and program
JP4491330B2 (ja) ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム
JP2007011872A (ja) メモリカードとその制御方法
JP2021179730A (ja) 情報処理装置、その制御方法、およびプログラム
JP7263067B2 (ja) 情報処理装置および情報処理装置の制御方法
JP6175566B2 (ja) ストレージシステム及び記憶制御方法
JP7214381B2 (ja) 画像形成装置、画像形成装置の制御方法及びプログラム
JP2018063676A (ja) 情報処理装置及びその制御方法、並びにプログラム
JP7246869B2 (ja) 画像形成装置、画像形成装置の制御方法及びプログラム
CN106569908B (zh) 资料备份系统
JP2014138265A (ja) 画像形成装置
JP5350077B2 (ja) 情報処理装置及びこれを備えた画像形成装置
US10853205B2 (en) Information processing apparatus, method of controlling the same and storage medium
US11630586B2 (en) Information processing apparatus and method for controlling the same
JP2018142274A (ja) 情報処理装置とその制御方法、及びプログラム
JP2008217469A (ja) コピー装置、データ転送制御装置、情報処理装置及びプログラム
JP2021089524A (ja) 情報処理装置、その制御方法、及びプログラム
JP2021072016A (ja) 画像形成装置、その制御方法、及びプログラム