(57)【要約】【課題】ログデータの保存に過不足のない記憶領域を確保してログデータをメモリに保存することができるログ保存装置およびログ保存プログラムを提供する。【解決手段】  ログデータの格納が指示されたときに、メモリ上にこのログデータを格納するログ領域を確保する確保部と、ログデータを、この確保されたログ領域に格納するログ格納部と、確保部で新たに確保されたログ領域よりも前に確保済のログ領域が存在する場合、新たに確保されたログ領域の場所を示す場所データを確保済みのログ領域と関連付けて格納する場所格納部とを備える。【選択図】図３
2012168852.tif 000002
【特許請求の範囲】
【請求項１】
ログデータの格納が指示されたときに、メモリ上に該ログデータを格納するログ領域を確保する確保部と、
前記ログデータを前記ログ領域に格納するログ格納部と、
前記確保部で新たに確保されたログ領域よりも前に確保済のログ領域が存在する場合、前記新たに確保されたログ領域の場所を示す場所データを前記確保済のログ領域と関連付けて格納する場所格納部とを備えたことを特徴とするログ保存装置。
【請求項２】
前記場所格納部は、前記確保部によって前記メモリ上に最初にログ領域が確保された場合には、前記最初に確保されたログ領域の場所を示す場所データを、該メモリ上に用意された、ログデータの格納には用いられない管理領域に格納するものであることを特徴とする請求項１記載のログ保存装置。
【請求項３】
前記ログ格納部は、前記ログ領域に、前記ログデータと共に、該ログデータの長さを表すログ長データも格納するものであることを特徴とする請求項１または２記載のログ保存装置。
【請求項４】
情報処理装置に組み込まれて該情報処理装置を、
ログデータの格納が指示されたときに、メモリ上に該ログデータを格納するログ領域を確保する確保部と、
前記ログデータを前記ログ領域に格納するログ格納部と、
前記確保部で新たに確保されたログ領域よりも前に確保済のログ領域が存在する場合、前記新たに確保されたログ領域の場所を示す場所データを前記確保済のログ領域と関連付けて格納する場所格納部とを備えたログ保存装置として動作させることを特徴とするログ保存プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件開示は、ログ保存装置およびログ保存プログラムに関する。
【背景技術】
【０００２】
一般的に情報処理システムなどにおいて、内部状態や動作進行状態などを把握するため、動作中の様々な情報がログデータとして保存される。そして、実行中または実行後にそれらログデータが参照されることで、プログラムの正常性の確認や、ハード異常時の原因調査等が行われている。
【０００３】
特に、ストレージ関連製品の場合は、他の一般的な装置に比べて、より構成が巨大となるので、保存するログデータも多量になる。例えば、数百台に渡るディスク装置の情報を取り扱う必要が生じる場合があり、しかも、各々のディスク装置について電圧マージン、温度、ファン回転数などといった各種の内部状態を保持しておく必要がある。
【０００４】
ここで、ログデータの保存先としては、一般的にはメモリと外部記憶装置（ＨＤＤ／ＭＯ／磁気テープ／ＣＤ−Ｒ／ＤＶＤ−Ｒ等）が存在する。しかし、外部記憶装置へデータを保存する場合には、オーバーヘッドと称される余分な時間が掛かる。この余分な時間はシステムの性能低下を生むので、高速にログを残すために、例えば１日分のログデータなどの保存先としてはメモリが一般的に用いられている。
【０００５】
また、ログデータをメモリに保存する一般的な方法としては、最初にログデータ用の領域をメモリに確保しておいて、その領域にログデータを順に格納して行く方法が用いられている。そして、確保された領域の空きが枯渇した場合には、その領域の先頭へ戻ってログデータを上書きするラップアラウンド制御が実行される。
【０００６】
このような一般的な保存方法の場合には、最初に確保しておく領域が大きすぎると、ログ保存のために余計なリソースが取られてしまい、その結果、システムが本来実行するべき処理のためのリソースが不足してしまう恐れがある。一方、最初に確保しておく領域が小さすぎると空き領域の枯渇が頻繁に生じてしまい、その結果、ログデータの上書きによって必要なデータが消えてしまう恐れがある。そして、ログデータ用の領域の適切な大きさは、ログデータの大きさや発生頻度、システムで実行される処理に要する負荷などのバランスで決まるので、領域の適切な大きさを最初に正しく予測することは難しい。
【０００７】
このような現状に対して、空き領域が枯渇する前にメモリ上のログデータを外部記憶装置に待避させることで、ラップアラウンド制御によるログデータの上書きを回避することが考えられる。
【０００８】
また、ログデータ用の領域をログデータのサイズに対応したサイズに分割することで余計な上書きを減らす技術も提案されている（例えば、特許文献１参照。）。
【０００９】
更に、ゲームなどにおける情報の記憶に関し、記憶領域が種々のサイズに分割された各断片に効率よく情報を割り当てるための技術が提案されている（例えば、特許文献２参照。）。この技術では、将来割り当てられる情報サイズの推定と、今回割り当てが指定された情報サイズとに基づいて、実際に割り当てられる断片が選ばれる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−３１０５７８号公報
【特許文献２】特開２００７−２１９８９０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、空き領域が枯渇する前にメモリ上のログデータを外部記憶装置に待避させる上記技術の場合、その待避に要する時間によってシステムのトータルな性能低下を招いてしまう。
【００１２】
また、上記特許文献１の技術は、余計な上書きは減らすことが出来るものの、ラップアラウンド制御によるログデータの上書きそのものを回避することにはならない。
【００１３】
更に、上記特許文献２の技術は、断片化された記憶領域を効率よく利用することは出来るものの、ログデータの保存にそのまま適用することは出来ない。
【００１４】
上記事情に鑑み、本件開示は、ログデータの保存に過不足のない記憶領域を確保してログデータをメモリに保存することができるログ保存装置およびログ保存プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するログ保存装置は、確保部とログ格納部と場所格納部とを備えている。
【００１６】
上記確保部は、ログデータの格納が指示されたときに、メモリ上にこのログデータを格納するログ領域を確保するものである。
【００１７】
上記ログ格納部は、上記ログデータを上記ログ領域に格納するものである。
【００１８】
上記場所格納部は、上記確保部で新たに確保されたログ領域よりも前に確保済のログ領域が存在する場合、上記新たに確保されたログ領域の場所を示す場所データを上記確保済のログ領域と関連付けて格納するものである。
【００１９】
上記目的を達成するログ保存プログラムは、情報処理装置に組み込まれて該情報処理装置を、上記確保部と上記ログ格納部と上記場所格納部とを備えたログ保存装置として動作させる。
【発明の効果】
【００２０】
本件開示によれば、ログデータの保存に過不足のない記憶領域を確保してログデータをメモリに保存することができる。
【図面の簡単な説明】
【００２１】
【図１】情報処理装置の一例に相当するストレージ装置を示す図である。
【図２】ＣＭの構造の詳細を示す図である。
【図３】ログ保存プログラムの構造を示す図である。
【図４】メモリ上に保存されたログデータのデータ構造を示す図である。
【図５】ログ保存プログラムの実行によって実現される機能を示す図である。
【図６】図５に示す機能の実行タイミングを示すタイミングチャートである。
【図７】ログデータの保存手順を表すフローチャートである。
【図８】図７のステップＳ１０１で確保された管理領域の具体例を示す図である。
【図９】最初のログ領域が確保された場合の具体例を示す図である。
【図１０】２回目以降のログ領域が確保された場合の具体例を示す図である。
【発明を実施するための形態】
【００２２】
上記説明したログ保存装置およびログ保存プログラムに対する具体的な実施形態を、以下図面を参照して説明する。
【００２３】
図１は、情報処理装置の一例に相当するストレージ装置を示す図である。このストレージ装置には、ログ保存プログラムの一実施形態が組み込まれて実行される。
【００２４】
図１に示すストレージ装置３００は、複数（図１の例では６つ）のディスク装置３１０を内蔵している。これらのディスク装置３１０は、それぞれがデータを記憶する装置である。なお、ディスク装置の種類としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）などが存在する。そして図１に示すディスク装置３１０にはどの種類のディスク装置も採用可能である。
【００２５】
また、ストレージ装置３００は、複数（図１の例では３つ）のコントローラモジュール（ＣＭ）３２０を備えている。
【００２６】
ＣＭ３２０には、チャネルアダプタ（ＣＡ）３３０とデバイスアダプタ（ＤＡ）３４０とダイレクトメモリアクセス（ＤＭＡ）コントローラ３５０が備えられている。更に後述するように、ＣＭ３２０には、ＣＰＵやメモリなども備えられているので、このＣＰＵで動作されるプログラムの内容によってＣＭ３２０は種々の処理を実行することができる。
【００２７】
ＣＡ３３０は、上位装置であるホスト４００に接続されている。そしてＣＭ３２０は、ＣＡ３３０を介してホスト４００から、書込み命令や、その書込み命令に従ってディスク装置３１０に書き込まれるデータを受け取る。また、ＣＭ３２０はＣＡ３３０を介してホスト４００から読出し命令を受け取り、その読出し命令に従ってディスク装置３１０から読み出されたデータをＣＡ３３０を介してホスト４００へ送る。
【００２８】
ＤＡ３４０はディスク装置３１０に接続されている。そしてＣＭ３２０はＤＡ３４０を介してディスク装置３１０にアクセスすることでデータをディスク装置３１０と遣り取りする。
【００２９】
ＤＭＡコントローラ３５０は、ＣＭ３２０の相互接続に用いられる装置である。即ち、各ＣＭ３２０はＤＭＡコントローラ３５０を介して、必要に応じてデータを相互に転送する。データの転送が必要になる場合とは、例えば、あるＣＭ３２０に接続されていないディスク装置３１０に対するアクセスの命令をこのＣＭ３２０が受け取った場合などである。
【００３０】
なお、図１に示す、ＣＭ３２０とホスト４００との１対１の接続関係、およびＣＭ３２０とディスク装置３１０との１対２の接続関係は単なる一例であって、ＣＡ３３０やＤＡ３４０で物理的に対応可能な範囲内であればＣＭ３２０の設定によって接続関係は変更可能である。
【００３１】
次に、ＣＭ３２０の構造の詳細について説明する。
【００３２】
図２は、ＣＭの構造の詳細を示す図である。
【００３３】
ＣＭ３２０は、構成要素として、上述したＣＡ３３０、ＤＡ３４０、ＤＭＡコントローラ３５０の他に、ＣＰＵ３６０、メモリ３７０、チップセット３８０、バスブリッジ３９０を備えている。チップセット３８０はノースブリッジ３８１とサウスブリッジ３８２を含んでいる。
【００３４】
メモリ３７０に展開（ローディング）されたプログラムに従ってＣＰＵ３６０が動作することによってＣＭ３２０は各種の機能を果たすことになる。
【００３５】
また、ＣＭ３２０は、構成要素の相互接続に用いられる複数のＰＣＩバス３９１も備えている。更に、ＣＭ３２０は、構成要素として、フラッシュＲＯＭ３９２、スーパーＩ／Ｏ３９３、コンパクトフラッシュ（登録商標）３９４、システム監視回路３９５、ＬＡＮコントローラ３９６も備えている。
【００３６】
フラッシュＲＯＭ３９２はＢＩＯＳを記憶した記憶素子である。スーパーＩ／Ｏ３９３は、このストレージ装置３００を外部から操作するための操作端末が接続されるインターフェースである。コンパクトフラッシュ（登録商標）３９４は、ＣＰＵ３６０に各種の動作を実行させるプログラムを記憶した記憶素子である。システム監視回路３９５は、ＣＭ３２０内に備えられている各構成要素で生じた状態情報や、ＣＭ３２０に接続されているディスク装置における各種の内部状態の情報を集めて出力するものである。
【００３７】
チップセット３８０にはＰＣＩバス３９１を介して、ＣＰＵ３６０、バスブリッジ３９０、システム監視回路３９５、ＬＡＮコントローラ３９６が接続されている。更に、バスブリッジ３９０にはＰＣＩバス３９１を介して、ＣＡ３３０、ＤＡ３４０、ＤＭＡコントローラ３５０が接続されている。
【００３８】
一方、メモリ３７０は、チップセット３８０のノースブリッジ３８１に、バスを介さず直接に接続されている。また、フラッシュＲＯＭ３９２、スーパーＩ／Ｏ３９３、コンパクトフラッシュ（登録商標）３９４は、チップセット３８０のサウスブリッジ３８２に、バスを介さず直接に接続されている。
【００３９】
図２には、メモリ３７０にローディングされたログ保存プログラム１００が示されている。このログ保存プログラム１００が、「課題を解決するための手段」で説明したログ保存プログラムの一実施形態に相当する。本実施形態では、メモリ３７０にローディングされる前のログ保存プログラム１００は、コンパクトフラッシュ（登録商標）３９４に記憶されている。そして、例えばストレージ装置３００の起動時などに例えばＢＩＯＳなどによって、このログ保存プログラム１００はコンパクトフラッシュ（登録商標）３９４からメモリ３７０へとローディングされる。このメモリ３７０にローディングされたログ保存プログラム１００がＣＰＵ３６０で実行されることにより、ＣＭ３２０はログ保存装置の一実施形態として機能する。従ってＣＭ３２０がログ保存装置の一実施形態に相当するのみならず、このＣＭ３２０を備えたストレージ装置３００もログ保存装置の一実施形態に相当する。
【００４０】
本実施形態では、システム監視回路３９５によって集められて出力される情報が、ＣＭ３２０およびストレージ装置３００におけるログ保存装置の一実施形態としての機能によってログデータにまとめられて保存される。本実施形態では、ログデータの保存先として、ログ保存プログラム１００が展開されているメモリ３７０が用いられるが、ログデータの保存先は、ログ保存プログラムの展開用とは別のメモリであっても良い。
【００４１】
以下、ログ保存プログラム１００の詳細について説明する。
【００４２】
図３は、ログ保存プログラムの構造を示す図である。
【００４３】
ログ保存プログラム１００は、構成要素として、保存要求部１１０とログ制御部１２０とメモリ管理部１３０とを備えている。また、ログ制御部１２０は、ログ保存部１２１とログ管理部１２２とを備えている。
【００４４】
ここでは、これらの構成要素がＣＰＵ３６０で実行されることによって実現される機能の概略を説明し、後で更に詳細な説明を行う。
【００４５】
保存要求部１１０は、システム監視回路３９５から情報を取得してログデータにまとめる。メモリ管理部１３０は、ログデータの格納領域をメモリ３７０上に確保する。ログ制御部１２０は、その確保された格納領域にログ保存部１２１でログデータを保存し、ログデータが保存された格納領域どうしをログ管理部１２２で保存順に連結する。
【００４６】
図３に示すログ保存プログラム１００の構造は、ログ保存プログラム１００の実行によってログ保存装置の一実施形態としてＣＭ３２０およびストレージ装置３００が動作するときの機能構造にも対応している。メモリ管理部１３０は、メモリ上に、ログデータを格納するログ領域を確保する確保部の一例に相当する。また、ログ保存部１２１は、ログデータをログ領域に格納するログ格納部の一例に相当する。更に、ログ管理部１２２は、新たに確保されたログ領域の場所を示す場所データを確保済のログ領域と関連付けてメモリに格納する場所格納部の一例に相当する。
【００４７】
次に、ログデータのデータ構造について説明する。
【００４８】
図４は、メモリ上に保存されたログデータのデータ構造を示す図である。
【００４９】
メモリの記憶領域３７１には、管理領域２１０と各ログ領域２２０，２３０が、一般に不連続に確保されている。そして、各ログ領域２２０，２３０には、ログデータが格納されるデータ部２２２，２３２と、次のログ領域のアドレスが格納される次アドレス部２２１，２３１が設けられている。各ログ領域２２０，２３０は、次アドレス部２２１，２３１に次のログ領域のアドレスが格納されることによって相互に連結されている。各データ部２２２，２３２は更に、ログデータのデータ長を表したレングス部２３３とログデータのデータ本体２３４とを含んでいる。
【００５０】
また、管理領域２１０には、最終アドレス保存部２１１と開始アドレス保存部２１２が設けられている。最終アドレス保存部２１１には、各ログ領域２２０，２３０のうちで、最後のログデータが保存されたログ領域の開始アドレスが格納される。そして開始アドレス保存部２１２には、各ログ領域２２０，２３０のうちで、最初のログデータが保存されたログ領域の開始アドレスが格納される。
【００５１】
このようなデータ構造でログデータを保存する機能について以下詳細に説明する。
【００５２】
図５は、ログ保存プログラムの実行によって実現される機能を示す図である。また、図６は、図５に示す機能の実行タイミングを示すタイミングチャートである。
【００５３】
保存要求部１１０は、システム監視回路３９５から情報を取得してログデータにまとめ、そのまとめたログデータをログ制御部１２０に送ってメモリ３７０への保存を要求する（図６の手順１）。ログ制御部１２０は、送られてきたログデータのデータ長を確認してメモリ管理部１３０に、そのデータ長に相応した格納領域（図４に示すログ領域）の確保を要求する（図６の手順２）。但し、最初のログデータが送られてきた場合には、ログ領域の確保の前に、図４に示す管理領域用の格納領域の確保を要求する。但し、この管理領域の容量は少ないので予め確保しておいてもよい。
【００５４】
メモリ管理部１３０は、メモリ３７０上で使用済みの領域を調べることで、要求された格納領域（ログ領域および管理領域）について、メモリ３７０上の具体的な箇所を決める。そして、メモリ管理部１３０は、その決めた箇所について所謂ｍａｌｌｏｃ関数で領域確保をメモリ３７０に要求する（図６の手順３）。メモリ３７０は、その箇所に格納領域を確保すると領域確保をメモリ管理部１３０に報告する（図６の手順４）。その報告を受けてメモリ管理部１３０はログ制御部１２０に、獲得された格納領域を通知する（図６の手順５）。
【００５５】
ログ制御部１２０は、最初に獲得されたログ領域については、管理領域の開始アドレス保存部に、その最初に獲得されたログ領域のアドレスを保存する（図６の手順６）。そして、アドレスの保存が完了するとメモリ３７０から保存の完了が報告される（図６の手順７）。また、ログ制御部１２０は、ログ保存部１２１によってログ領域に、ログデータと、そのログ領域が最終であることを示す最終識別コードを保存する（図６の手順８）。そして、ログデータの保存が完了するとメモリ３７０から保存の完了が報告される（図６の手順９）。
【００５６】
ログデータの保存完了がメモリ３７０から報告されると、ログ制御部１２０は、ログ管理部１２２によって、最終のログ領域のアドレスを、その最終のログ領域の１つ前のログ領域の次アドレス部と、管理領域の最終アドレス保存部との双方に保存する（図６の手順１０）。そして、アドレスの保存が完了するとメモリ３７０から保存の完了が報告される（図６の手順１１）。
【００５７】
このような機能および処理手順について、以下、フローチャートなどを参照して更に詳細に説明する。
【００５８】
図７は、ログデータの保存手順を表すフローチャートである。
【００５９】
最初のログデータの保存前に、まず、メモリ上にログ管理用の管理領域が確保される。そして、確保された管理領域の最終アドレス保存部と開始アドレス保存部は未使用コード(未使用を示すコード)で初期化される（ステップＳ１０１）。
【００６０】
図８は、図７のステップＳ１０１で確保された管理領域の具体例を示す図である。
【００６１】
ここでは、アドレス「０ｘ８００」に管理領域２１０が確保されている。また、ここでは３２ｂｉｔアーキテクチャが想定されていて、最終アドレス保存部２１１と開始アドレス保存部２１２とのそれぞれについて実効アドレス幅４Ｂｙｔｅとなっている。このため、管理領域２１０としては、４ｘ２＝８Ｂｙｔｅの領域が確保されている。以下、Ｂｙｔｅ数を表す数値はアドレス表記と同様に１６進数による表記とする。そして、最終アドレス保存部２１１と開始アドレス保存部２１２のそれぞれには、未使用コードの一例として「０ｘ０」が保存されている。
【００６２】
このように図７のステップＳ１０１で管理領域２１０が確保された後、ステップＳ１０２では、ログデータの格納指示が発生するまで待機状態となる。そして、格納指示が発生するとステップＳ１０３で、ｍａｌｌｏｃ関数によってログ領域のアドレスが獲得される。
【００６３】
図９は、最初のログ領域が確保された場合の具体例を示す図である。
【００６４】
ここでは１００Ｂｙｔｅのログデータ用にログ領域２２０が確保された様子が示されている。１００Ｂｙｔｅのログデータに対するログ領域２２０のメモリサイズ（ｓ）としては、次アドレス部用およびレングス部用のそれぞれに４Ｂｙｔｅずつが用いられるので、合計で１０８Ｂｙｔｅが要求される。そして、ｐ＝ｍａｌｌｏｃ（ｓ）により、メモリ領域上で使用可能な箇所を表したメモリアドレス（ｐ＝０ｘ１０００）が獲得される。即ち、最初のログ領域２２０として、アドレス「０ｘ１０００」から１０８Ｂｙｔｅ分が確保されたこととなる。
【００６５】
このように図７のステップＳ１０３でログ領域が確保されると、次にステップＳ１０４で、管理領域２１０の開始アドレス保存部２１２が未使用コードで初期化されたままであるか否かが確認される。最初のログ領域２２０が確保された時には開始アドレス保存部２１２には未使用コードが保存されているので、最初の１回だけステップＳ１０５に進み、開始アドレス保存部２１２に最初のログ領域２２０のアドレスが保存される。図９に示す例では、開始アドレス保存部２１２にアドレス「０ｘ１０００」が保存されている。
【００６６】
次に図７のステップＳ１０６では、ログ領域２２０のデータ部２２２にログ長（即ちログデータの長さ）を表す値（図９に示す例では「０ｘ１００」）とログデータが格納される。更に、ステップＳ１０７では、ログ領域２２０の次アドレス部２２１に最終識別コードが格納される。図９に示す例では、最終識別コードとして「０ｘｆｆｆｆｆｆ」が格納されている。
【００６７】
次に図７のステップＳ１０８で、管理領域２１０の最終アドレス保存部２１１が未使用コードで初期化されたままであるか否かが確認される。最終アドレス保存部２１１も、最初のログ領域２２０が確保された時には未使用コードが保存されているので、最初の１回だけはステップＳ１０９を飛ばしてステップＳ１１０に進む。このステップＳ１１０では、最終アドレス保存部２１１に、今回ステップＳ１０３で確保されたログ領域のアドレス（自アドレス）が格納される。図９に示す例では、最終アドレス保存部２１１にもアドレス「０ｘ１０００」が保存されている。
【００６８】
図７のステップＳ１０４およびステップＳ１１０の処理によって、管理領域２１０に対して、最初のログ領域２２０の位置が登録されたことになる。
【００６９】
このように最初のログ領域２２０について、ログデータの保存とログ領域の位置の登録が終わると、上述したステップＳ１０２に戻って処理が繰り返される。
【００７０】
ここで、２回目以降のログデータの保存に関する手順について、具体例を示しながら説明する。図７のステップＳ１０２で格納指示の発生が認識されると、ステップＳ１０３で、ｍａｌｌｏｃ関数によってログ領域のアドレスが獲得される。
【００７１】
図１０は、２回目以降のログ領域が確保された場合の具体例を示す図である。
【００７２】
ここでは２００Ｂｙｔｅのログデータ用にログ領域２３０が確保された様子が示されている。２００Ｂｙｔｅのログデータに対するログ領域２３０のメモリサイズ（ｓ）としては、上記のように次アドレス部用およびレングス部用のそれぞれに４Ｂｙｔｅずつが用いられるので、合計で２０８Ｂｙｔｅが要求される。そして、ｐ＝ｍａｌｌｏｃ（ｓ）により、メモリ領域上で使用可能な箇所を表したメモリアドレス（ｐ＝０ｘ２０００）が獲得される。即ち、ログ領域２３０として、アドレス「０ｘ２０００」から２０８Ｂｙｔｅ分が確保されたこととなる。
【００７３】
その後、図７のステップＳ１０４およびステップＳ１０５は、２回目以降であるのでスルーされてステップＳ１０６およびステップＳ１０７に進む。このステップＳ１０６およびステップＳ１０７では、最初の場合と同様に、データ部２３２にログ長を表す値とログデータが格納され、更に、次アドレス部２３１に最終識別コードが格納される。図１０に示す例では、ログ長を表す値として「０ｘ２００」、最終識別コードとして「０ｘｆｆｆｆｆｆ」が格納されている。
【００７４】
その後、図７のステップＳ１０８では、２回目以降であるので、管理領域２１０の最終アドレス保存部２１１には具体的なアドレスが格納されていると判断されてステップＳ１０９に進む。そして、ステップＳ１０９では、この最終アドレス保存部２１１に格納されているアドレスが示すログ領域の次アドレス部に、今回ステップＳ１０３で確保されたログ領域のアドレス（自アドレス）が格納される。図１０の例では、最終アドレス保存部２１１にアドレス「０ｘ１０００」が格納されているので、アドレス「０ｘ１０００」が示すログ領域２２０の次アドレス部２２１に自アドレス「０ｘ２０００」が格納される。
【００７５】
その後、図７のステップＳ１１０に進み、最終アドレス保存部２１１のアドレスが、今回ステップＳ１０３で確保されたログ領域のアドレス（自アドレス）に更新される。図１０の例では、アドレス「０ｘ１０００」が自アドレス「０ｘ２０００」に更新されている。
【００７６】
このように、２回目以降のログデータの保存では、ステップＳ１０９およびステップＳ１１０の処理によって、各ログ領域がいわば数珠繋ぎに連結されていくこととなる。
【００７７】
このような数珠繋ぎのログ領域からログデータが参照される場合は、管理領域の開始アドレスが示すログ領域から順に、各ログ領域の次アドレス部が示す次のログ領域へと次々に辿るように参照されることになる。そして、最後のログ領域では次アドレス部が最終識別コードになる。また、ログ領域を辿る順が即ちログデータの発生順ということになるので、ログデータの順番も容易に確認できる。
【００７８】
本実施形態によれば、ログ領域に対する上書きが行われないので、必要なログデータの消失も回避される。また、各ログ領域は、ログデータの発生時に逐次確保されるため、ログデータの記憶領域のサイズは常に、ログデータに対して過不足のないサイズとなる。このため、余計なリソースがログ領域に奪われることもない。
【００７９】
また、本実施形態の方式では、ログ領域は際限なく増えていくことになるので、例えば１日に１回などというように定期的にログデータをメモリから外部記憶装置へ待避させることが好ましい。また、障害が多発して他の処理に必要なリソースが奪われる可能性に備えて、閾値を用意しておいて、ログ領域の容量がこの閾値を越えたらログデータをメモリから外部記憶装置へ待避させてもよい。
【００８０】
なお、本実施形態では、管理領域２１０が設けられているので、ログデータの参照時には最初のログ領域を簡単かつ確実に見つけることが出来る。このことは、次のような応用形態が好適であることを意味する。
【００８１】
この応用形態では、上記場所格納部が、上記確保部によってメモリ上に最初にログ領域が確保された場合には、その最初に確保されたログ領域の場所を示す場所データを、このメモリ上に用意された、ログデータの格納には用いられない管理領域に格納する。図４などに示した管理領域２１０が、この応用形態における管理領域の一例に相当する。また、図３などに示すログ管理部１２２は、この応用形態における場所格納部の一例にも相当する。
【００８２】
また、本実施形態では、各ログ領域のレングス部にログ長が格納されているので、ログデータの参照時に各ログ領域を過不足無く参照することができる。このことは、次のような応用形態が好適であることを意味する。
【００８３】
この応用形態では、上記ログ格納部が、ログ領域に、ログデータと共に、このログデータの長さを表すログ長データも格納する。図３などに示すログ保存部１２１は、この応用形態におけるログ格納部の一例にも相当する。
【００８４】
なお、上記説明した実施形態では、ｍａｌｌｏｃ関数でログ領域を獲得する際には、特に獲得場所の限定などは行われていない。
【００８５】
以下、本件開示のログ保存装置およびログ保存プログラムにおける種々の形態に関し、更に以下の付記を開示する。
【００８６】
（付記１）
ログデータの格納が指示されたときに、メモリ上に該ログデータを格納するログ領域を確保する確保部と、
前記ログデータを前記ログ領域に格納するログ格納部と、
前記確保部で新たに確保されたログ領域よりも前に確保済のログ領域が存在する場合、前記新たに確保されたログ領域の場所を示す場所データを前記確保済のログ領域と関連付けて格納する場所格納部とを備えたことを特徴とするログ保存装置。
【００８７】
（付記２）
前記場所格納部は、前記確保部によって前記メモリ上に最初にログ領域が確保された場合には、前記最初に確保されたログ領域の場所を示す場所データを、該メモリ上に用意された、ログデータの格納には用いられない管理領域に格納するものであることを特徴とする請求項１記載のログ保存装置。
【００８８】
（付記３）
前記ログ格納部は、前記ログ領域に、前記ログデータと共に、該ログデータの長さを表すログ長データも格納するものであることを特徴とする請求項１または２記載のログ保存装置。
【００８９】
（付記４）
情報処理装置に組み込まれて該情報処理装置を、
ログデータの格納が指示されたときに、メモリ上に該ログデータを格納するログ領域を確保する確保部と、
前記ログデータを前記ログ領域に格納するログ格納部と、
前記確保部で新たに確保されたログ領域よりも前に確保済のログ領域が存在する場合、前記新たに確保されたログ領域の場所を示す場所データを前記確保済のログ領域と関連付けて格納する場所格納部とを備えたログ保存装置として動作させることを特徴とするログ保存プログラム。
【００９０】
（付記５）
前記場所格納部は、前記確保部によって前記メモリ上に最初にログ領域が確保された場合には、前記最初に確保されたログ領域の場所を示す場所データを、該メモリ上に用意された、ログデータの格納には用いられない管理領域に格納するものであることを特徴とする付記４記載のログ保存プログラム。
【００９１】
（付記６）
前記ログ格納部は、前記ログ領域に、前記ログデータと共に、該ログデータの長さを表すログ長データも格納するものであることを特徴とする付記４または５記載のログ保存プログラム。
【符号の説明】
【００９２】
１００    ログ保存プログラム
１１０    保存要求部
１２０    ログ制御部
１２１    ログ保存部
１２２    ログ管理部
１３０    メモリ管理部
２１０    管理領域
２１１    最終アドレス保存部
２１２    開始アドレス保存部
２２０，２３０    ログ領域
２２１，２３１    次アドレス部
２２２，２３２    データ部
２３３    レングス部
２３４    データ本体
【図１】
2012168852.tif 000003
【図２】
2012168852.tif 000004
【図３】
2012168852.tif 000005
【図４】
2012168852.tif 000006
【図５】
2012168852.tif 000007
【図６】
2012168852.tif 000008
【図７】
2012168852.tif 000009
【図８】
2012168852.tif 000010
【図９】
2012168852.tif 000011
【図１０】
2012168852.tif 000012