JP2001060147A - 遅延ライトの障害制御方法 - Google Patents

遅延ライトの障害制御方法

Info

Publication number
JP2001060147A
JP2001060147A JP11236519A JP23651999A JP2001060147A JP 2001060147 A JP2001060147 A JP 2001060147A JP 11236519 A JP11236519 A JP 11236519A JP 23651999 A JP23651999 A JP 23651999A JP 2001060147 A JP2001060147 A JP 2001060147A
Authority
JP
Japan
Prior art keywords
error
file
user program
storage device
auxiliary storage
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
JP11236519A
Other languages
English (en)
Inventor
Masakazu Saito
雅和 斉藤
Yasuaki Nishimura
泰明 西村
Masahiro Komatsu
雅浩 小松
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP11236519A priority Critical patent/JP2001060147A/ja
Publication of JP2001060147A publication Critical patent/JP2001060147A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】オペレーティングシステムで行われる補助記憶
装置の遅延ライトはユーザプログラムがI/Oが正常に
完了したかどうかを知る方法がない。 【解決手段】I/Oのエラーログを保存するテーブルを
作成し、I/O完了処理にてエラーが報告されると、こ
のテーブルに障害情報を蓄積しておく。ユーザプログラ
ムはこのテーブルを参照するためのシステムコールを呼
び出し、障害情報を取り出すことで、ライトしたデータ
が補助記憶装置に正常にライトできたかどうかを知るこ
とができるようになる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はユーザプログラムが
補助記憶装置への遅延ライトで発生したエラーを検知す
ることができるようにする為のオペレーティングシステ
ムの障害制御方法に関する。
【0002】
【従来の技術】遅延ライトをサポートしたオペレーティ
ングシステムでは、補助記憶装置へのアクセスはバッフ
ァキャッシュと呼ばれる一群のデータバッファを用いる
ことで、速度の遅い補助記憶装置へのアクセスを少なく
している。このバッファキャッシュは最近使用された補
助記憶装置上のデータを保持しているものである。
【0003】図2はユーザプログラムが補助記憶装置の
ファイルにデータをライトする場合の処理の流れを示し
ている。オペレーティングシステムはライトしようとす
るデータをバッファキャッシュにコピーし、後で書き出
しが必要であるという印をバッファキャッシュにつけた
時点でライト処理を終了する。ユーザプログラムは補助
記憶装置とのI/O処理を行わないで、次の処理へと移
れる。実際の補助記憶装置へのライトは、ユーザプログ
ラムとは無関係な事象を契機に行われる。このようにラ
イト要求よりも実際のライトを遅らせて行うことを遅延
ライトと呼ぶ。遅延ライトをおこなうことで、補助記憶
装置へのライトの結果を待たずに処理が終了するためユ
ーザプログラムから見たI/O時間が短縮され、ライト
後の処理に素早く移ることができる。同じ領域に何度も
ライト要求が来たときの実際の補助記憶装置への出力回
数を減らす事ができるといった効果がある。
【0004】
【発明が解決しようとする課題】従来技術では、遅延ラ
イトを行うと実際のライトの終了を待たずに次の処理に
移ってしまうため、障害の報告をユーザプログラムに返
すことは考慮されていない(図3)。このため、ユーザ
プログラムには補助記憶装置への出力が正常に行えたか
どうかを知る方法がない。補助記憶装置へのライトの結
果を正確に返すために同期ライトモードを設定できるオ
ペレーティングシステムも存在するが、ユーザデータの
ほかにそのファイルに関する管理情報のライトの終了ま
で待つ必要があり、ユーザプログラムから見た性能が大
幅に劣化する(図4)。
【0005】また、POSIXで規定されている非同期
I/Oにはライト要求後にI/Oの結果を後で確認する
方法がある。しかし、POSIXの非同期I/Oは要求
を発行してから終了を確認するまで資源(ファイルの識
別子、I/O開始のオフセット、I/Oのサイズ、I/
Oの対象となる領域)を確保し続ける必要がある。この
ために、同時に行える非同期I/Oの数は制限されるこ
とになり、ユーザプログラムは複雑な資源の管理処理を
行う必要がある。また、既存のプログラムをPOSIX
非同期I/Oに対応させるには大幅な修正が必要にな
る。
【0006】本発明の目的は、遅延ライトのI/O結果
をユーザプログラムに通知する方法を提供することで、
遅延ライトと同程度の性能とライトが正常に完了したか
を確認できる信頼性のあるユーザプログラムを簡単に作
る事ができる手段を提供することである。
【0007】
【課題を解決するための手段】上記の目的はオペレーテ
ィングシステム内に補助記憶装置で発生した障害のログ
情報を蓄積し、このログ情報を参照するインタフェイス
を提供することによって達成される。
【0008】
【発明の実施の形態】以下、本発明の実施例を図面によ
り説明する。
【0009】図1はユーザプログラム(0101)とU
NIXオペレーティングシステム(0102)と補助記
憶装置(0103)の関係を示している。ユーザプログ
ラムはopenシステムコール(0104)で得られた
ファイル識別子を用いて、ファイルに対してアクセスを
行う。データをファイルにライトする場合ユーザプログ
ラムは、writeシステムコール(0105)を用い
る。0107はバッファキャッシュ、(0108)は本
発明で新たにオペレーティングシステム内に設置するエ
ラーログテーブルである。
【0010】エラーログテーブルの構造を図5に示す。
エラーログテーブルはファイルシステムがマウントされ
たときに生成され、アンマウントしたときに削除され
る。0501はファイルIDが入る列である。ファイル
IDはオペレーティングシステムがファイルを管理する
ための識別子で、ファイルごとに何個目の登録かを示す
番号がふられている。0502はエラーIDでファイル
毎のエラーが発生した順番が格納される。0503のエ
ラー種別には主にI/Oエラー発生(EIO)が入る
が、ファイルシステムの不正によって存在しないアドレ
スへI/Oを行おうとした(ENXIO)などの要因が
そのまま格納される。0504の領域とは障害の発生し
たバッファキャッシュがファイルのどの範囲に存在する
かを示すもので、バッファキャッシュの最初のオフセッ
ト位置とそのサイズから構成されている。
【0011】図6は本発明の処理の流れを示している。
縦方向は時刻の経過で、下に行くほど時刻が新しい事を
示している。ユーザプログラム(0601)がwrit
eシステムコールを発行(0604)すると処理はオペ
レーティングシステム(0602)に移る。オペレーテ
ィングシステムでのwriteシステムコールの処理
(0605)はライトする領域に応じたバッファキャッ
シュを探し、ライトするべきデータをバッファにコピー
し、writeシステムコールを終了(0606)す
る。このため、ユーザプログラムはI/Oの終了待ちを
行わずに次の処理に移ることができる。
【0012】バッファキャッシュにコピーされたデータ
はsyncer(一定期間ごとに遅延ライトのデータを
補助記憶装置に出力させるプロセス)や、バッファキャ
ッシュが足りなくなったことを契機に補助記憶装置へ出
力要求(0608)が出される。補助記憶装置の処理の
完了はI/O完了割り込み(0609)でオペレーティ
ングシステムに報告される。
【0013】図7は補助記憶装置から完了報告を受けた
ときのオペレーティングシステムの処理を示す。オペレ
ーティングシステムは完了報告を受けるとI/Oが正常
に完了したかを調べ(0701)、正常に行えていたら
直接バッファキャッシュにI/O処理完了の印をつけ
(0703)、正常に行えていなかったらエラーログテ
ーブルにエラー情報を追加(0702)した後にI/O
処理完了の印をバッファキャッシュにつける。テーブル
への登録はテーブルの最後にバッファキャッシュに追記
していく。ファイルID・エラー種別・領域はバッファ
に格納されているのでそれをコピーし、エラーIDは同
じファイルIDを持つエントリで最後に登録されたもの
を探し、そのエラーIDに1を加えたものを格納する。
エラーログはファイルシステムをアンマウントするまで
蓄積され続ける(図6の0611)。
【0014】ユーザプログラムは今までのI/Oで障害
が起きたかどうかを知るために、オペレーティングシス
テムにエラーログテーブルを参照のためのシステムコー
ルを呼び出し(図6の0612)、1エントリづつ参照
することができる(図6の0613)。このシステムコ
ールはファイル識別子、前回どこまで参照したかを示す
ファイルID、エラー情報を受け取るたためのユーザ領
域へのポインタを引数に持つ。ファイルIDはオペレー
ティングシステム内でファイルIDに変換する。初めて
エラーログを参照するときはファイルIDに0を指定
し、2回目からは前回取得したエラーログのエラーID
をシステムコールを指定する。
【0015】図8はユーザプログラムからエラーログテ
ーブルの参照要求が来たときのフローチャートである。
最初にエラーログテーブルの着目点を最初の行に設定
(0801)する。着目行にエラーログが格納されてい
るか調べ(0802)、格納されていなければ、エラー
ログが残っていないことを指定された領域に設定(08
06)し、システムコールの処理を終了する。格納され
ていれば、着目しているエラーログが指定されたのと同
じファイルIDで、かつ指定されたエラーIDより大き
いことを調べる。条件があっている場合はそのエラーロ
グ情報のエラーID、エラー種別、発生した領域をユー
ザの指定した領域にコピー(0805)し、処理を終了
する。条件が成立しないときは次の行へ着目点を移し
(0804),(0802)の判定に戻る。
【0016】ユーザプログラムはこれ以上エントリはな
いという報告を受けるまで繰り返しエラーログを参照す
ることで、目的のファイルにすでに行われたI/Oの全
てのエラーを知ることができる。fsyncシステムコ
ールを用いて全てのバッファキャッシュのライトを行っ
てから、上記操作をおこなうとライトした全ての結果を
知ることができる。
【0017】本発明の別の実施例を説明する。図5で示
したファイルIDごとの発生順序番号をエラーIDにし
ていたのをエラー発生時の時刻にしたものが、図9であ
る。全体構成・処理の流れ・テーブルの追加までの処理
・テーブルを参照するシステムコールの処理は、図1,
図6,図7,図8と同じである。テーブルへの登録(図
7の0702)も同様にテーブルの最後に追記し、ファ
イルID・エラー種別・領域はバッファキャッシュに格
納されているので、それをコピーする。エラーIDはエ
ラーの発生時の時刻をマイクロ秒単位で記録する。この
とき、一つ前のエントリのIDと等しい、若しくは前の
エントリが未来の時刻を刺している場合は、時刻が重複
しないように前のエントリに1マイクロ秒加えた値にす
る。
【0018】ユーザプログラムは先の実施例と同じ方法
で参照することができる。初めてエラーログを参照する
ときにファイルIDに0を指定すると、ファイルシステ
ムをマウントしてからの全てのエラーログを、open
したときの時刻を設定することで、open以降に発生
したエラーログを参照することができる。
【0019】本発明の別の実施例を説明する。全体構成
・エラーログテーブルの構成・処理の流れ・テーブルの
追加の処理は図1,図5,図6,図7と同じである。図
10はファイルに対するリード、もしくはライトの行う
前処理を示している。前処理では実際にファイルに対す
るI/Oを行う前にファイルログテーブル中に記録され
ているエラーが発生した領域と、これからI/Oを行う
領域を比較して重複する部分が有るかをチェックしてい
る。最初にエラーログの最初に着目し(1001)、エ
ラーログ情報が格納されているかどうかをチェックする
(1002)。エラーログが格納されていれば、そのエ
ラーの発生した領域とこれからI/Oを行おうとしてい
る領域が重なっているかどうかをチェックする(100
3)。
【0020】重なっていないなら、次のエラーログに着
目点を移し(1004)、(1002)のエラー情報が
格納されているかどうかをチェックを繰り返す。最後の
エラーログまでチェックし終わると実際のI/O処理を
行い(1007)、処理を終了する(1008)。これ
から行うI/Oと領域が重なるエラーログが存在した場
合は、エラーログテーブルからエラー情報を取り出し
(1005)、I/Oは行わず即座にエラー終了する
(1006)。この前処理を実現することで、実際のI
/Oの結果を待たずにエラーを検出する事ができるよう
になる。
【0021】
【発明の効果】本発明によれば、非同期ライトモードで
の補助記憶装置へのライト結果を参照することができる
ようになるため、非同期ライトモードでの性能を維持し
つつライトデータが確実にライトできなかったときの障
害処理を行えるプログラムを作成する為の手段を提供す
ることができるようになる。
【図面の簡単な説明】
【図1】本発明の実施例であるユーザプログラムが補助
記憶装置への遅延ライトで発生したエラーを検知するシ
ステムの全体構成図である。
【図2】図1の遅延ライトの処理の流れを示す図であ
る。
【図3】遅延ライトでエラーが発生した時の処理の流れ
を示す図である。
【図4】同期ライトの処理の流れを示す図である。
【図5】ファイルID、エラーID、エラー種別、エラ
ーの発生した範囲を含むエラーログテーブルを示す図で
ある。
【図6】実施例でのI/Oエラー発生時の処理の流れを
示す図である。
【図7】I/O完了割り込みのオペレーティングシステ
ムの処理を示すフローチャートである。
【図8】ユーザプログラムがエラーログを参照しようと
したときの処理をしめすフローチャートである。
【図9】ファイルID、エラー発生時刻、エラー種別、
エラーの発生した範囲を含むエラーログテーブルを示す
図である。
【図10】ユーザプログラムによって要求されたI/O
を行う前にエラーログテーブルからエラー情報を引き出
す処理を示すフローチャートである。
【符号の説明】
0101…ユーザプログラム、0102…UNIXオペ
レータシステム、0103…補助記憶装置。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 小松 雅浩 神奈川県横浜市戸塚区戸塚町5030番地 株 式会社日立製作所ソフトウェア事業部内 Fターム(参考) 5B065 EA39 EK05 5B082 FA02 FA12

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 補助記憶装置への出力にバッファキャッ
    シュを用いた遅延ライト機能を有するオペレーティング
    システムにおいて、I/O完了処理で検出した障害を記
    録・蓄積する手段と、記録・蓄積された障害情報を参照
    する手段を有することにより、ユーザプログラムに遅延
    ライトのI/O結果を調べる手段を提供することを特徴
    とする遅延ライトの障害制御方法。
  2. 【請求項2】 補助記憶装置への出力にバッファキャッ
    シュを用いた遅延ライト機能を有するオペレーティング
    システムにおいて、I/O完了処理で検出した障害を記
    録・蓄積する手段を有することにより、記録された障害
    情報からI/Oを行う前にエラーを検知・報告すること
    ができることを特徴とする請求項1に記載の遅延ライト
    の障害制御方法。
JP11236519A 1999-08-24 1999-08-24 遅延ライトの障害制御方法 Pending JP2001060147A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11236519A JP2001060147A (ja) 1999-08-24 1999-08-24 遅延ライトの障害制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11236519A JP2001060147A (ja) 1999-08-24 1999-08-24 遅延ライトの障害制御方法

Publications (1)

Publication Number Publication Date
JP2001060147A true JP2001060147A (ja) 2001-03-06

Family

ID=17001913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11236519A Pending JP2001060147A (ja) 1999-08-24 1999-08-24 遅延ライトの障害制御方法

Country Status (1)

Country Link
JP (1) JP2001060147A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012215948A (ja) * 2011-03-31 2012-11-08 Brother Ind Ltd デバイス制御システム、及びプログラム
JP2013008220A (ja) * 2011-06-24 2013-01-10 Brother Ind Ltd デバイス制御システム及びプログラム
JP2013235384A (ja) * 2012-05-08 2013-11-21 Brother Ind Ltd デバイス制御システム及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012215948A (ja) * 2011-03-31 2012-11-08 Brother Ind Ltd デバイス制御システム、及びプログラム
JP2013008220A (ja) * 2011-06-24 2013-01-10 Brother Ind Ltd デバイス制御システム及びプログラム
JP2013235384A (ja) * 2012-05-08 2013-11-21 Brother Ind Ltd デバイス制御システム及びプログラム

Similar Documents

Publication Publication Date Title
US7493450B2 (en) Method of triggering read cache pre-fetch to increase host read throughput
US6581142B1 (en) Computer program product and method for partial paging and eviction of microprocessor instructions in an embedded computer
JP3490256B2 (ja) エージェント方式
US4523275A (en) Cache/disk subsystem with floating entry
US20020059324A1 (en) Computer system and a database access method thereof
US9003106B1 (en) Crash consistency
US9335941B1 (en) Crash consistency
KR100243461B1 (ko) 프로세스 전환 장치 및 프로세스 전환 방법
JP2001060147A (ja) 遅延ライトの障害制御方法
US20080109607A1 (en) Method, system and article for managing memory
US7934067B2 (en) Data update history storage apparatus and data update history storage method
JPH07114444A (ja) ファイル移動制御方式
US7770054B2 (en) Apparatus, system, and method to prevent queue stalling
JP3683831B2 (ja) データ処理システムにおけるチャネル回復のためのチェックポイント指定方法、装置およびプログラム記録媒体
JPH1185594A (ja) リモートコピー用情報処理システム
CN117851133B (zh) Xen半虚拟化的无代理实时备份方法、系统及恢复方法
RU2155373C2 (ru) Компьютерная дублирующая система, действующая с открытыми файлами
CN114816277B (zh) 文件数据块顺序性保障的控制方法及控制系统
CN111722805B (zh) 一种高效获取磁盘读写io数据信息的系统及其方法
JP2919457B1 (ja) 二重化装置i/o制御方式およびそのプログラム記録媒体
JPS62245347A (ja) データベースシステムおよびその処理方法
JP2776608B2 (ja) 補助記憶装置のリフォーマット処理方式
JPS64727B2 (ja)
JPS6138504B2 (ja)
JP2933011B2 (ja) ファイルの排他制御システム