JPS63201864A - 分散型データ処理システム - Google Patents

分散型データ処理システム

Info

Publication number
JPS63201864A
JPS63201864A JP62315454A JP31545487A JPS63201864A JP S63201864 A JPS63201864 A JP S63201864A JP 62315454 A JP62315454 A JP 62315454A JP 31545487 A JP31545487 A JP 31545487A JP S63201864 A JPS63201864 A JP S63201864A
Authority
JP
Japan
Prior art keywords
file
node
server
inode
lock
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.)
Granted
Application number
JP62315454A
Other languages
English (en)
Other versions
JPH058455B2 (ja
Inventor
ドナボン・ウイリアム・ジヨンソン
アメール・アメツド・シヤーンーゴーダ
トツド・アレン・スミス
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS63201864A publication Critical patent/JPS63201864A/ja
Publication of JPH058455B2 publication Critical patent/JPH058455B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 以下にしたがって本発明を説明する。
A、産業上の利用分野 B、従来技術 C0発明が解決しようとする問題点 り0問題点を解決するための手段 E、実施例 El、はじめに(第2図〜第7図) E2.分散ファイル・システムにおける操作(第1図、
第8図〜第12図) E3.ファイル・アクセスの同期モード(第13図、第
14図) E4.ロッキング(第15図〜第19図)UNIXファ
イル・ロッキング ロック・テーブル ロック待ち デッドロック 分散型ファイル・サポート・ロック制御ファイル・ロッ
キング構造 内部の詳細 ファイル・アクセス構造ロック(第17図、第18図) 一例(第19図) F0発明の効果 A、産業上の利用分野 本発明は、一般に分散データ処理システム用のオペレー
ティング・システムの改良に関し、さらに具体的には、
ローカル・エリア・ネットワーク(LAN)または広域
ネットワーク(WAN)で相互接続された多重プロセッ
サ・システム用のオペレーティング・システムに関する
ものである。
LANまたはWANを構成するため、18M社のシステ
ム・ネットワーク・アーキテクチャ(SNA)を使用す
ることができる。本発明にもとづくオペレーティング・
システムを使うと、ファイルがシステム中のどこにあろ
うと、システム中のプロセッサによってそれらのファイ
ルにアクセスできるようになる。本発明の好ましい実施
例をここではUNIX (ATTの商標)オペレーティ
ング・システムの1バージヨンで実施された好ましい実
施例の形で開示するが、本発明は他の様々なオペレーテ
ィング・システム中でも実施できる。
B、従来技術 1台の実計算機を複数台の計算機に見せる仮想計算機オ
ペレーティング・システムが、従来技術で知られている
。こうした計算機は、それを載せる実計算機に非常に類
似することもあり、また非常に異なることもある。多数
の仮想計算機オペレーティング・システムが開発されて
いるが、その中で恐らく最も広く使われているのは、I
BMシステム/370上で走行するVM/370である
と思われる。VM/370オペレーティング・システム
は、端末から操作する複数のユーザが、様々なディスク
の量と記憶容量をもつ完璧なシステム/370を有する
かのような錯覚を生み出す。
物理的ディスク装置は、VM/370オペレーティング
・システムによって管理される。ディスク上に存在する
物理的ボリュームが様々なサイズの仮想ボリュームに分
割され、ユーザが行なうマウントと呼ばれる処理によっ
て割り振られアクセスされる。マウントとは、物理的ボ
リュームを定義してVM/370オペレーティング・シ
ステムに付加し、ボリュームの仮想特性、たとえばサイ
ズ、セキュリティ、所有権などを定義することである。
さらに、VM/370の下では、ユーザは同じローカル
・プロセッサ上でまたは遠隔の別のプロセッサ上でVM
/370の下で走行する、他のどのオペレーティング・
システムにもアクセスしそれを使用することができる。
オースチンにいるユーザが、VM/370の「パススル
ー」と呼ばれる機能を使って同じプロセッサ上、または
、たとえば、同じSNAネットワークに接続されたフラ
ンスのパリにあるプロセッサ上の別のVM/370マタ
はMV/370オペレーティング・システムにアクセス
することができる。ユーザが一度この機能を使うと、そ
のユーザはその別のオペレーティング・システムに接続
されたファイルを処理のために使用することができる。
この手法にはいくつかの大きな欠点がある。第一に、ユ
ーザが「パススルー」特性を使ってローカルなまたは遠
隔の別のオペレーティング・システムにアクセスすると
き、以前使用されていたファイルと操作環境とが、新し
いセツションが終了するまで使えなくなる。他のセツシ
ョンからのファイルを処理する唯一の方法は、それらの
ファイルヲ他のオペレーティング・システムに送って、
両方のディスク上で実際にコピーを複製することである
第二に、ユーザは、アクセスしようとするすべてのシス
テムに別々に「ログ・オン」しなければならない。こう
することで、システムの保全性を保護するために必要な
セキュリティがもたらされるが、そのことはまたユーザ
にとっては大変な負担となる。その他の背景知識につい
ては、H,M。
ディチル(Harvey M、 Dsitel)著の教
科書「オペレーティング・システム入門(An Int
roductionto Operating Sys
tems) J N Addison−Wesley刊
(1984年)、とくにその第22章rVM:仮想計算
機オペレーティング・システム(VM :A6一 Virtual Machine Operating
 System) Jを参照されたい。より詳しい考察
については、H,ローリン(Harold Lorin
)とH,M、ディチル共著の教科書「オペレーティング
・システム(Operat ingSystems) 
J N Addison−IJesley刊(1981
年)、特にその第10章[仮想計算機(Virtual
Machines ) Jを参照されたい。
以下では、UNIXオペレーティング・システムの1バ
ージヨンで本発明を実施した場合について説明するが、
本発明はUNIXオペレーティング・システムに類似す
る特徴をもつ他のオペレーティング・システムでも使用
できる。UNIXオペレーティング・システムは、ベル
研究所(BellTelephone Laborat
ories、 Inc、)がディジタル0エクイツプメ
ント社(Digital EquipmentCorp
oration、 DEC)のミニコンピユータ用に開
発したものであるが、広範囲のミニコンピユータ用、そ
れに最近ではマイクロコンピュータ用のオペレーティン
グ・システムとして広く使われている。この普及の一因
は、UNIXオペレーティング・システムがアセンブリ
言語ではなく、やはりベル研究所で開発されたCプログ
ラミング言語で書かれており、したがって、プロセッサ
の種類を問わないことである。したがって、様々な計算
機用にそれにC能力を与えるために書かれたコンパイラ
を使うと、UNIXオペレーティング・システムをある
計算機から別の計算機に移すことが可能になる。すなわ
ち、UNIXオペレーティング・システム環境用に書か
れたアプリケーション・プログラムも、計算機間で移植
可能である。UNIXオペレーティング・システムの詳
細については、rUNIXTMシステム、ユーザーズ・
マニュアル、システムV (U N I XTMSys
tem、 User’s Manual。
System V) J z Western Ele
ctric Co、、 1983年1月刊を参照された
い。UNIXオペレーティング・システムについての秀
れた概説が、B、W。
カーニガン(Brian tJ、 Kernighan
)とロブ・バイツ(Rob Pike)の共著「ユニッ
クス・プログラミング環境(The Unix Pro
grammingEnvironment) J 、P
rentice−Halls 1984年刊に出ている
。UNIXオペレーティング・システムの設計の詳細に
ついては、M、J、バッハ(Haurice J、Ba
ch)著「ユニックス・オペレーティング・システムの
設計(Design of the Unix Ope
rating System) J 、Prentic
e−Hall、1986年刊に出ている。
ATTのベル研究所は、多数の団体にUNIXオペレー
ティング・システム使用のライセンスを供与しており、
現在いくつかのバージョンがある。
ATTから出た最新のバージョンは、バージョン5.2
である。バークレイ・バージロンとして知られるUNI
Xオペレーティング・システムの別のバージロンが、カ
リフォルニア州立大学ハーク14校で開発された。広く
使われているMS−DO8(マイクロソフト社の商標)
およびパーソナル・コンピュータ用のPC−DO8(I
BM社の商標)オペレーティング・システムを開発した
マイクロソフト社(旧crosoft )は、XENI
Xの商標で知られるバージョンを出している。IBMR
T  PC(RISC(縮小命令セット・コンピユータ
)技術パーソナル・コンピュータ、RTとRTPCはI
BM社の商標)を1985年に発表したのに伴って、I
BM社はAIX (拡張対話型エグゼクティブ、AIX
はIBM社の商標)と呼ばれる新しいオペレーティング
・システムを公開した。AIXは、アプリケーション・
インターフェース・レベルでATTのUNIXオペレー
ティング・システム、バージョン5.2と互換性かあ)
)、UNIXオペレーティング・システム、バージョン
5.2に対する拡張機能を含んでいる。AIXオペレー
ティング・システムの詳細については、rAIXオペレ
ーティング・システム技術解説書(AIX Opera
ting System TechnicalRefe
rence ) J 、第1版、IBM Corpll
 985年11月刊を参照されたい。
本発明は、具体的には、複数のプロセッサがネットワー
ク内で相互接続されることを特徴とする、分散データ処
理システムに関係する。実際に実施された形では、本発
明は、IBMのシステムネットワーク・アーキテクチャ
(SNA) 、さらに具体向にはSNA  LU6.2
拡張プログラム間通信(APPC)で相互接続された複
数のIBMRT  PC上で機能する。SNAでは、そ
のリンク・レベルとして、ゼロックス社が開発したロー
カル・エリア・ネットワーク(LAN)であるイーサネ
ット(Ethernetはゼロックス社の商標)または
5DLC(同期データ・リンク制御)を使う。
イーサネット・ローカル・エリア・ネットワークを含め
てローカル・エリア・ネットワークの簡単な説明は、L
、E、ジョーダン(Larry E。
Jordan )とB、チャーチル(Bruce Ch
urchill)の共著rIBM  PC用の通信ネッ
トワーキング(Communications and
 Networking for the IBMPC
) J N Robert J、Brady (Pre
ntice−Hal1社)、1983年刊に出ている。
コンピュータ用通信システム、特にSNAとSDI、C
についてのより明確な説明は、R,J、シプサー(Cy
pser )著「分散システム用通信アーキテクチャ (Communications Architect
ure forDistributed System
s) J 、Addison−IJesleyll 9
78年刊に出ている。ただし、本発明は、イーサネット
・ローカル・エリア・ネットワークやIBM  SNA
以外のネットワークで相互接続された、IBM  RT
  PC以外の様々なコンピータを用いても実施できる
ことを了解されたい。
前述のように、以下では、通信ネットワーク中の分散デ
ータ処理システムを対象として本発明を説明する。この
環境では、ネットワークのあるノードにある各プロセッ
サは、どのノードにファイルがあろうと、潜在的にその
ネットワーク内のすべてのファイルにアクセスすること
ができる。
第2図に示すように、分散ネットワーク環境1は、通信
リンクまたは通信ネットワーク3を介して接続された2
つ以上のノードA1B、Cから構成される。ネットワー
ク3は上記のようなローカル・エリア・ネットワーク(
LAN)でも広域ネットワーク(WAN)でもよい。後
者は、システムの他のノードまたはSNAネットワーク
への交換回線または専用回線テレプロセッシング(TP
)接続を含む。ノードA、B1Cのどこにも、上記のI
BM  RT  PCのような処理システム10A、l
08110Gがあり得る。こうした処理システムIOA
、l08110Gはそれぞれ単一ユーザ・システムでも
複数ユーザ・システムでもよく、ネットワーク3を使っ
てネットワーク内の遠隔ノードにあるファイルにアクセ
スする能力をもつ。たとえば、ローカル・ノードAにあ
る処理システム10Aは、遠隔ノードBおよびCにある
ファイル5Bと50にアクセスできる。
遠隔ノードにアクセスする際にぶつかる問題は、まずス
タンドアロン・システムがどのようにしてファイルにア
クセスするかを検討すると、よく理解できる。第3図に
符号10で示すようなスタンドアロン・システム内では
、オペレーティング・システム11中のローカル・バッ
ファ12を使って永久記憶装置2、たとえばハード・フ
ァイルやパーソナル・コンピュータ中のディスクとユー
ザ・アドレス空間との間で転送されるデータを緩衝記憶
する。オペレーティング・システム11内のローカル・
バッファ12は、ローカル・キャッシュあるいはカーネ
ル・バッファとも呼ばれる。UNIXオペレーティング
・システムのカーネルの詳細については、上記のカーニ
ガン等の著書およびバッハの著書を参照されたい。
ローカル・キャッシュは、メモリ常駐ディスクとして理
解すると最も理解しやすい。データはディスク上で持っ
ていた物理的特性を保持するが、情報は今や媒体内に存
在し、主システム記憶装置で達成される速度に非常に近
いより速いデータ転送速度の実現に貢献している。
スタンドアロン・システム内で、カーネル・バッファ1
2はブロック15により識別される。この番号は装置番
号であり、またその装置内の論理ブロック番号でもある
。読取りシステム・コール16が発行されるとき、その
コールは、第4図のステップ101に示すように、ファ
イル5のファイル記述子およびファイル5内のバイト範
囲と一緒に発行される。オペレーティング・システム1
1はこの情報を取り出し、ステップ102でそれを装置
番号および装置内の論理ブロック番号に変換−14= する。次に、オペレーティング・システム11は、ステ
ップ103で、装置番号および論理ブロック番号にもと
づいてキャッシュ12を読み取る。
ディスク2から読み取られたデータは、キャッシュ・ブ
ロック15が必要となるまでキャッシュ・ブロック15
に保管される。その結果、処理システム10上で走行中
のアプリケーション・プログラム4からディスク2から
以前に読み取られたものと同じデータに対する読取りが
続けて要求されると、それはディスク2からではなくて
キャッシュ12からアクセスされる。キャッシュ12か
ら読み取るのは、ディスクへのアクセスはど時間がかか
らない。したがって、キャッシュから読み取ることによ
り、アプリケーション・プログラム4のパフォーマンス
が向上する。明らかに、アクセスしようとするデータが
キャッシュに入ってない場合は、ディスクにアクセスし
なければならないが、それが必要となるのは稀である。
同様に、アプリケーション・プログラム4から書き込ま
れたデータは、直接ディスク2には書き込まれず、キャ
ッシュ12に書き込まれる。このことによっても時間が
節減され、アプリケーション・プログラムのパフォーマ
ンスが向上する。
キャッシュ12内の修正されたデータ・ブロックハ、オ
ペレーティング・システム11の制御下で周期的にディ
スク2に保管される。
本発明を実施した環境であるAIXオペレーティング拳
システムを使ったスタンドアロン・システムでキャッシ
ュを使うと、連続する読取りおよび書込みディスク操作
の必要がなくなるので、システム・ディスクの全体的パ
フォーマンスが向上し、アクセス時間が減少する。
第2図に示したような分散ネットワーキング環境では、
ローカル・ノードCにある処理システム10Gがノード
Aからファイル5Aを読み取る方式が2通りある。1つ
の方式では、処理システム10Cがファイル5Aの全体
を複写し、それがノードCにあるローカル・ファイル5
Cであるかのように読み取ることができる。このやり方
でファイルを読み取ると、ノードCでファイル5Aが複
写された後で、たとえばノードBにある別の処理システ
ムIOBがファイル5Aを修正する場合に問題が生じる
。処理システム10Gは、ファイル5Aに対する最近の
修正にアクセスできないことになる。
処理システム10CがノードAにあるファイル5Aにア
クセスするもう一つの方式は、ノードCにある処理シス
テム10Cが要求したとき、一度に1つのブロックを読
み取るものである。この方式に伴う問題は、読取りのた
びにネットワーク通信リンク3を介してファイルがある
ノードAまで行かなければならないことである。連続す
る読取りのたびにデータを送るのは時間の浪費である。
ネットワークを介してファイルにアクセスする場合、」
1記の2つの競合する問題が生じる。一つの問題は、連
続する読取りと書込みのためにネ・ソトワークを介して
データを送信するのに時間がかかることである。他方、
ネットワークのトラフィックを減らすためにファイル・
データをノードに記憶する場合、ファイルの整合性が失
われるおそれがある。たとえば、いくつかのノードのう
ちの一つがファイルに書込みを行なっている場合、その
ファイルにアクセスしている他のノードが、令書き込ま
れたばかりの最近の更新済みファイルにアクセスしてい
ないことがある。したがって、ファイルの整合性が失わ
れ、ノードがアクセスしているファイルが正しくない古
くなったものであることがある。本明細書中では、ファ
イルを永久的に記憶している処理システムを指すのに「
サーバ」という言葉を使い、そのファイルにアクセスす
るプロセスを有する他の任意の処理システムを指すのに
「クライエント」の語を使うことにする。以下で説明す
る本発明は、分散情報管理の問題に解決策を与える、オ
ペレーティング・システムの一部分である。
UNIXオペレーティングシステム環境内で分散データ
処理システムをサポートする方法は、他にも知られてい
る。たとえば、Sun Microsystemsはネ
ットワーク・ファイル・システム(NFS)を発表し、
ベル研究所は遠隔ファイル・ンステム(RFS)を開発
した。Sun旧crosystemsのNFSは一連の
刊行物に記載されている。たとえば、S、R,クレイマ
ン(Kleiman) r Vノード: 5unUNI
Xにおける多重ファイル・システム・タイプ用アーキテ
クチ+ (Vnodes: An Architect
urefor Multip]e File Syst
em Types in Sun UNIX) JUS
ENIX  198e年夏季国際技術会議・展示会議事
録、238−247ページ;R,サンドバーブ(Rus
sel Sandberg)等のrSunネットワーク
・ファイル・システムの設計と実施(Des fgna
nd Implementation of the 
Sun Network FileSystem)J、
UNENIX  1985年会議議事録、119−13
0ページ;D、ウオールシュ(Dan Walsh)等
のrSunネットワーク・ファイル・システムの概要(
Overview of the Sun Netwo
rkFile System) J 117〜124ペ
ージ;ジロメイ・チャン(Jomei Chang)の
「状況モニタがNFSに対するネットワーク・ロッキン
グ・サービスをもたらす(Status Mon1to
r Provides NetworkLocking
 5ervice for NFS)J ;ジョメイ・
チャンの「サンネット(Sunnet)J 、71−7
5ページ;B、ティラー(Bradley Taylo
r)のrSun環境における安全なネットワーキング(
SecureNetworking in the S
un Environment) J 28−36ペー
ジ。AT&TのRFSも一連の刊行物に記載されている
。たとえば、A、P、  リフキン(Andrew P
、 Rifkin)等のrRFsアーキテクチャの概要
(RFS Arcchitectural Overv
iew) J U S ENIX会ii議事録、ジョー
シア州アトランタ(1986年8月)、1−12ページ
;R,ハミルトン(Richard Hamilton
)等の「遠隔ファイル共用に対する管理者の意見J、1
−9ページ;T。
ヒユートン(Tom Houghton )等の「ファ
イル・システム・スイッチ(File Systems
 5w1tch) J、1−2ページ;D、J、オラン
ダ−(David J。
01ander)等の「システムVにおけるネットワー
キング用フレームワーク(A Framework f
orHetworking in System V)
 J、1−8ページ。
本発明をその中で実施する分散サービス・システムの、
たとえばSun MicrosystemsのNFSと
は区別される一つの特徴は、Sunの方法が基本的に非
保存型マシーンを設計するためのものであったというこ
とである。もっと具体的に言うと、分散システム内のサ
ーバを無状態に設計することができる。すなわち、サー
バは、どのクライエント・ノードがサーバ・ファイルを
オープンしたか、クライエント・プロセスが読取り専用
モードでファイルをオープンしたのかそれとも読取り/
書込みモードでファイルをオープンしたのか、あるいは
クライエントがそのファイルのバイト範囲にロックをか
けているかどうかを含めて、クライエント・ノードに関
する情報を何も記憶しない。このような実施形態をとる
と、クライエント・ノードが故障したり、あるいはサー
バ資源に対する要求を解除したとサーバにきちんと知ら
せずにオフラインになったときに生じる、誤り回復状況
をサーバが処理する必要がないので、サーバの設計が簡
単になる。
本発明をその中で実施する分散サービス・システムの設
計では、全く異なる方法が取られた。もつと具体的に言
うと、この分散サービス・システムは、「状態保存型イ
ンプリメーション」であると特徴づけることができる。
本明細書に記載する「状態保存型」サーバは、誰がその
ファイルを使っているか、およびファイルがどのように
使われているかに関する情報を保持する。それには、サ
ーバが何らかの方法であるクライエントとの接触の喪失
を検出して、そのクライエントに関する蓄積された状態
情報を廃棄できるようにする必要がある。しかし、本明
、細書に記載するキャッシュ管理戦略は、サーバがそう
した状態情報を保持しない限り実施できない。キャッシ
ュの管理は、下記で説明するように、サーバ・ファイル
をオープンせよとの要求を発行しているクライエント・
ノードの数およびそうしたオープンが読取りモードであ
るかそれとも書込みモードであるかによって影響を受け
る。
C0発明が解決しようとする問題点 したがって、ネットワーク内でのファイルの位置および
パフォーマンスに関してユーザ透過性を〜22− もたらす、通信ネットワーク内で相互接続された多重プ
ロセッサ式データ処理システムをサポートするオペレー
ティング・システム用の分散サービス・システムを提供
することが、本発明の一般的目的である。
本発明の第二のより具体的な目的は、デッドロックの問
題を防ぐためのファイル・アクセス制御構造ロック(f
asロック)を備えた分散型ファイル管理システム(D
FS)をもたらす手法を提供することである。
D2問題点を解決するための手段 本発明によれば、これらの目的は、遠隔システムからア
クセスされる各ファイルごとにfasロックを作成する
ことにより達成される。fasロックは、ファイルのi
ノード(インデックス・ノード、ファイルの保護ビット
、種別、ポインタ等を含むファイル領域)をロックする
代わりにロックするのに使用される。こうすると、DF
Sがファイルに対するアクセスを制御し、デッドロック
の問題の発生を回避することができる。
E、実施例 El、はじめに 下記の開示では、物理的には異なる複数の計算機内に存
在するファイルが、ローカル計算機のファイル・システ
ムの一部分に見えるように、計算機のファイルを管理す
る論理が変更されるという分散ファイル・システムを構
築するときにぶつかる問題に対する解決策について説明
する。ここで説明するインプリメンテーションは、AI
Xオペレーティング・システムのファイル・システムの
拡張である。このAIXオペレーティング・システムの
詳細については、前記で参照した技術解説書を参照され
たい。木構造ファイル・システム、ディレクトリ、およ
びiノードを含むファイル・システム構成などのAIX
ファイル・システムに関する特定の知識があるものと仮
定する。UNIXオペレーティング・システムでは、個
々のディスク(またはディスケット、またはディスクの
区画)にファイル・システムが含まれる。この議論に関
係のあるファイル・システムの基本的態様を下記に列挙
する。
a)個別のファイル・システム上の各ファイルが、その
iノード番号によって一義的に識別される。
b)ディレクトリもファイルであり、したがってディレ
クトリもそのiノード番号によって一義的に識別できる
C)ディレクトリは、次の形式の項目の列を含む。
名前 −iノード番号 ただし、iノード番号は、単純ファイルのiノード番号
でも別のディレクトリのiノード番号でもよい。
d)規約により、ファイル・システムのルート・ディレ
クトリのiノード番号は、iノード番号2とする。
したがって、ある装置のファイル・システム内のパス”
 /dir 1 /dir 2 /file ”をたど
るには、次のようなステップをとる。
1、iノード番号2で識別されるファイル(その装置の
ルート・ディレクトリ)を読み取る。
2、そのディレクトリを探索して、name=dir 
1の項目を見つける。
3、dirlに関連するiノード番号で識別されるファ
イル(これはパス中の次のディレクトリである)を読み
取る。
4、そのディレクトリを探索して、name =dir
 2の項目を見つける。
5、dir2に関連するiノード番号で識別されるファ
イル(これはパス中の次のディレクトリである)を読み
取る。
6、そのディレクトリを探索して、name=file
の項目を見つける。
7、このディレクトリ内のファイルに関連するiノード
番号が、パス” /dir 1 /dir 2 /fi
le ”で識別される単純ファイルのiノード番号であ
る。
個別のファイル・システム上に存在するファイル・ツリ
ーは、あるノードの集合ファイル・ツリーを構築するた
めの構成要素である。あるノードのルート・ファイル・
システムを含む特定の装置(たとえば、ハード・ファイ
ル区画)を装置と呼ぶ。マウント操作の実行により、別
の装置」二にあるファイル・ツリーをノードのファイル
・ツリーに付加することができる。マウント操作の2つ
の主要パラメータは、(1)マウントされるファイル・
ツリーを保持する装置の名前と(2)装置のファイル・
ツリーをマウントするディレクトリへのパスである。こ
のディレクトリは、すてにノードのファイル・ツリーの
一部分でなければならない。すなわち、ルート・ファイ
ル・システム内のディレクトリ、または(マウント操作
によって)ノードのファイル・ツリーにすでに付加され
たファイル・システム内のディレクトリでなければなら
ない。
マウントの実行後は、普通ならr上にマウントされた」
ディレクトリを通って流れるはずのパスが、マウントさ
れたファイル・システムのルートiノードを通って流れ
る。マウント操作は、次のように進行する。
1、マウント点までパスをたどり、マウントされる装置
がカバーするディレクトリのiノード番号と装置番号を
入手する。
2、基本的に次のものを含むデータ構造を作成する。
a)カバーされるディレクトリの装置番号とiノード番
号 b)マウントされる装置の装置名 ノーどの集合ファイル・ツリー内でのパスのたどり方は
、(a)上にマウントされたiノード(またはもちろん
パスの終点)にぶつかるまで、装置ファイル・ツリー内
のパスをたどること、(b)マウント点にぶつかるとマ
ウント・データ構造を使って、パス中で次にどの装置が
あるか判定すること、および(C)マウント構造内で指
示される装置中のiノード2(ルートiノード)からパ
スをたどり始めることからなる。
マウント・データ構造は揮発性である。すなわちディス
ク上に記録されない。初期プログラム・ロード(rPL
)の一部として計算機が電源投入されるたびに、所期の
マウントのリストを再発行しなければならない。以上の
議論では、従来のUNIXオペレーティング・システム
がファイル・システム全体のマウントをどのように使っ
てファイル・ツリーを作成し、またそのようなファイル
・ツリー内でどのようにパスをたどるか説明した。
こうしたインプリメンテーションは、ある装置上に存在
するファイル・システム全体をマウントすることに限定
されている。本明細書に記載する仮想ファイル・システ
ム・コンセプトは、(1)装置をマウントできる土にデ
ィレクトリもマウントできるようにすることにより、あ
る装置上に存在するファイル・システムの一部分をマウ
ントすること、および(2)すでにファイル・ツリーの
一部分になっているディレクトリ上に、遠隔ディレクト
リまたはローカル・ディレクトリをマウントすること、
さらに(3)すでにファイル・ツリーの一部分になって
いるファイルの上に(遠隔またはローカル)ファイルを
マウントすることができるという、仮想ファイル・シス
テム・コンセプトの改良である。
仮想ファイル・システムでは、特定の装置ファイル・シ
ステム上で実行される操作が、ノードの集合ファイル・
ツリーの構築および使用に関する操作からはっきり分離
される。ノードの仮想ファイル・システムは、ローカル
・ファイルおよび遠隔ファイルの両方に対するアクセス
を可能にする。
ローカル・ファイルの管理は、遠隔ファイルの管理より
も簡単な問題である。このため、仮想ファイル・システ
ムの考察を2つの部分に分ける。第1の部分では、ロー
カル操作のみについて説明する。この部分は、遠隔操作
を考察するための基礎となる。遠隔操作にもローカル操
作にも同じデータ構造と操作が使われる。ローカル操作
の考察では、データおよび手順のうちスタンドアロン操
作にとって重要な態様について説明する。遠隔操作の考
察では、遠隔操作に関連する情報を付は加えるが、ロー
カル操作の部で考察したことは繰り返さない。
第5図は、仮想ファイル・システムのデータ構造間に存
在する関係を示したものである。各マウント操作で、新
しい仮想ファイル・システム(vfs)データ構造が作
成される。この構造中の基本要素は、(a)この仮想フ
ァイル・システムのルートVノード(仮想ノード)を指
すポインタ(たとえば、ブロック21からブロック23
への矢印)、および(b)この仮想ファイル・システム
が作成されたときに上にマウントされたVノードを指す
ポインタ(たとえば、ブロック25からブロック24へ
の矢印)である。
jノードをファイル・システムとは独立なシステム部分
で表わす必要がある場合、それはVノードで表わされる
。この構造の基本要素は、次のものである。
a)そのVノードを含む仮想ファイル・システムを指す
ポインタ(たとえば、ブロック22からブロック21へ
の矢印)。
b)このVノードの上にマウントされた仮想ファイル・
システムを指すポインタ(たとえば、ブロック24から
ブロック25への矢印)。ただし、すべてのVノードが
仮想ファイル・システムのマウント点なのではないこと
に留意されたい。すなわち、空白ポインタはこのVノー
ドがマウント点でないことを示す。
C)代理iノードまたは実iノードのどちらかを指すポ
インタ(たとえば、ブロック26からブロック32への
矢印)。
d)ノード・テーブル項目を指すポインタ(これはファ
イルが遠隔ファイルであるときだけ空白でない)。
AIXオペレーティング・システムは、他のUNIXt
ペレーティング・システム操作シく、システムが使用し
ている各1ノードについての情報を含むメモリ常駐テー
ブルを保持する。たとえば、あるファイルをオープンす
るとき、ディスクからそのiノードが読み取られ、この
iノード情報のサブセットが若干の追加情報と共にiノ
ード・チー′プルに記憶される。iノード・テーブル項
目の基本要素は、(a)ファイル・アクセス構造リスト
の先頭を指すポインタと、(b)ディスクiノードから
の情報(その詳細はここでは重要でない)である。
ファイル・アクセス構造は、どのノードでファイルがオ
ープンになっているか、およびそれらのオープンのモー
ド(読取り専用または読取り/書込み)に関する情報を
記録する。ファイルがオープンになっている各ノードご
とに別々のファイル・アクセス構造がある。この状態情
報を使うと、各タライエンドがサーバ・ファイルをどの
ように使っているかをサーバが知ることができる。
ファイル・システムは、その上で実行される1組の操作
をサポートする。次のようにファイル・システム操作を
実行することにより、プロセスがファイル・システムと
対話する。
1、ユーザが(おそらく)いくつかの入力パラメータを
もたらす操作の一つを呼び出す。
2、ファイル・システム論理が、ファイル・システムの
内部データ状態を変更し得る操作を実行する。
3、ファイル・システム論理が、おそらくは若干の戻り
パラメータを戻して、呼出し側ユーザに戻る。
ファイル・システム上で実行できる操作は、=33− 1“vn操作“と呼ばれる。いくつかのvn操作がある
が、この考察で重要なものについて下記で説明する。
三ヒお川は戊 vnルックアップ操作では、ファイル・システム内のパ
スをたどる際の基本的反復ステップは、ディレクトリ内
でパス構成要素の名前を探し出し、関連するiノード番
号を使ってチェーン中の次のファイルを探し出すという
ものである。vnルックアップ操作の擬似コードを下記
に示す。
ルックアップ機能 入カニディレクトリのVノード・ポインタ、ディレクト
リ中でルックアップすべき名前 出カニ指定されたファイル/ディレクトリを指すVノー
ド・ポインタ ディレクトリのVノード・ポインタをiノード・ポイン
タに変換するニ ーーVノード中でポインタを使うディレクトリのiノー
ドをロックする IF(ディレクトリ中で探索許可をもっていなければ) ディレクトリiノードをアンロックする;エラーを戻す
; ディレクトリモ名前を探索する; IF(見つかったなら) 名前に対するファイル・ハンドルを作 成する; m−ディレクトリ・エントリ中で見つかったiノードを
使う; ファイル・ハンドルに対するVノードを指すポインタを
得る; ディレクトリiノードをアンロックする;Vノードを指
すポインタを戻す; ELSE−一見つからなかった ディレクトリiノードをアンロックする;エラーを戻す
; ヱユーq且旦ユ vn open機能は、どのオープン・モード(読取り
/書込みまたは読取り専用モード)でファイルをオープ
ンするかを記録するファイル・アクセス構造を作成する
(または、既存のファイル・アクセス構造を修正する)
。vnオープン操作の擬似コードを下記に示す。
vnオープン機能 入カニオープンされるファイルに対するVノード・ポイ
ンタ オープン・フラグ(たとえば、読取り専用または読取り
/書込み) モード作成−一作成する場合はファイル・モード・ビッ
ト 出カニ成功または失敗を示す戻りコードファイルのiノ
ードを指すポインタをVノードがら得る: 1ノードをロックする; IF(アクセスを許可されないなら) iノードをアンロックする; (エラー)を返す; このタライエンドのためのファイル・アクセス構造を得
る; m−フアイル・アクセス構造がない場合は、一つ割り振
る IF(ファイル・アクセス構造を割り振ることができな
かったなら) iノードをアンロックする; (エラー)を返す; ファイル・アクセス構造読取り専用、読取り/書込み、
およびテキスト・カウントを更新する; IF(打切りモードがセットされているなら)ファイル
を打ち切る; 1ノードをアンロックする; 釦韮翌肚 1ookuppn操作とは、パスをたどる機能である。
その入力はパス(たとえば” /dir 1 /dir
 2 /file“’)で、l、その戻りコードはその
ファイルを表わすVノードを指すポインタである。
Iookuppnは−っのディレクトリを読み取るため
vn Iookupを呼び出し、次にvn 1ooku
pがら戻されたVノードがすでに上にマウントされてい
るがどうか検査する。Vノードが上にマウントされてい
ない場合、1ookuppnは同じファイル・システム
中のvn 1ookuρを呼び出す。Vノードがすでに
上にマウントされている場合は、1ookuppnは上
にマウントされたVノード(たとえば第5図のブロック
24)からマウントされたファイル・システムの仮想フ
ァイル・システム(たとえば第5図のブロック25)へ
とポインタをたどる。仮想ファイル・システムから、ル
ートVノード(たとえば第5図のブロック26)へとポ
インタをたどり、Vノードが単純ファイルではなくディ
レクトリである場合は、その仮想ファイル・システムの
ルートVノードとパス中の次の要素を構成する名前を入
力として与えて、新しいvn 1ookupを発行する
。1ookuppn機能の擬似コードを下記に示す。
1ookuppn機能 入カニパス名 出カニ指定されたファイルに対するVノードを指すポイ
ンタ IF(パスの最初の文字が“/°なら)探索すべき現V
ノードはユーザのルート・ディレクトリのVノードであ
る; LSE 探索すべき現Vノードはユーザの現ディレクトリのVノ
ードである; 繰り返す IF(パスの次の要素が“°0.″なら)WHILE(
現Vノードが仮想ファイル・システムのルートである間
) 現Vノードが、仮想ファイル・システ ムが上にマウントされるVノードと なる; IF(上にマウントされるVノードが ない場合) (エラー)を戻す;−−”0.“が ファイル・システムのルートラ通 過した vn Iookupを使って現Vノード中のパス構成要
素をルックアップする; I F (vn 1ookupが構成要素を見つけたな
ら); 現Vノードがvn 1ookupから戻されるVノード
になる; WHILE(現Vノードが上にマウントする間) マウントされる仮想ファイル・システ ムを表すvfs構造まで現Vノードを たどる; 現Vノードがマウントされるvfsのル−トvノードに
なる; E L S E −−vn 1ookupはファイル構
成要素を見つけられなかった (エラー)を戻す;−一探索は失敗したUNTIL(追
加のパス構成要素がなくなるまで); (現Vノード)を戻す; あるファイルへのパスをたどりディレクト1ノをマウン
トするというシナリオを用0て、その操作を説明するこ
とにする。まず、ファイルへのノくスをたどる際に、あ
るアプリケーション・プロセスがファイル” / u 
/ dept54 / 5tatus″に対するシステ
ム・コール(たとえばオープン)を発行するものと仮定
する。この要求は、第5図に関して下記のような形で、
オペレーティング・システムによって実行される(UN
 I Xオペレーティング・システムと基本的に異なら
ない操作については、ここでは詳しくは説明しない)。
次の仮定を設ける。第一に、ブロック21で表わされる
仮想ファイル・システムがルート仮想ファイル・システ
ムである。第二に、ファイル″/U″1はVノード・ブ
ロック24とiノード・ブロック31で表わされる。第
三に、以前のマウント操作で装置のファイル・システム
がディレクトリ“/u′1にマウントされている。この
マウントで、ブロック25で表わされる仮想ファイル・
システムが作成された。
第四に、関係するすべてのディレクトリとファイルが同
じ装置上にある。第五に、指示されたディレクトリ内に
次に示すディレクトリ項目が存在する。
ディレクトリ iノード番号   名前   iノード番号2    
  ”u”       1545    °’dep
t54°“7171     ”5tatus”   
   12システム・コールを実施するコールが、その
パスをたどるために1ookuppnを呼び出す。 1
ookuppnはルート仮想ファイル・システム(ブロ
ック21)のルートVノード(ブロック23)からスタ
ートし、このVノードで表わされるディレクトリ・ファ
イル中で名前7“uI+をルックアップするためにvn
−1ookupを呼び出す。vn 1ookupはその
ディレクトリ中で、名前“U“がブロック31のiノー
ド15と関連していることを見つける。vn Iook
upはiノード15と関連するVノードを指すポインタ
を戻さなければならない。そのために、まずiノード1
5をiノード・テーブルに入れる。次に、すでにこのV
ノードの親仮想ファイル・システム内にVノードがある
(入力Vノード(ブロック23)が親仮想ファイル・シ
ステムを指すポインタを有る)かどうか検査する。この
場合は存在する。vnlookupは次に、ルート仮想
ファイル・システム(ブロック21)内でそのVノード
(ブロック24)を見つけ、Vノードを指すポインタを
戻す。
1ookuppnは、戻されたVノードが親仮想ファイ
ル・システム内で上にマウントされていることを発見す
る。Iookuppnは、Vノード(ブロック24)か
らマウントされた仮想ファイル・システム(ブロック2
5)へと「上にマウントされた」そのポインタをたどる
。1ookuppnは、新しい仮想ファイル・システム
(ブロック25)のルートVノード(ブロック26)へ
と「ルートVノード」ポインタをたどる。次にIook
uppnは今度はルートVノード(ブロック26)を指
すポインタと名前”dept54゛を入力して、再びv
n 1ookupを呼び出す。前回と同様に、vn 1
ookupはディレクトリを読み取り、その名前と関連
しているiノードを見つけ、親仮想ファイル・システム
(ブロック25)内にこのiノードに対するVノードを
見つけまたは作成し、このVノードを指すポインタを戻
す。1ookuppnは、今見つけたばかりのディレク
トリのVノードと名前” 5tatus ”を入力して
、もう一度vn Iookupを呼び出す。vn 1o
okupはディレクトリを読み取り、その名前に関連す
るiノード(ブロック34)を見つけ、親仮想ファイル
・システム(ブロック25)内でこのiノードに対する
Vノード(ブロック28)を見つけまたは作成し、この
Vノードを指すポインタを戻す。システム・コールを実
施したコードは、次にファイル上で要求された操作を実
行する。
次に、アプリケーション・プロセスが、ファイル” /
 u / group ”をディレクトリ” / u 
/ foo ”の上にマウントするため、「マウント」
システム・コールを発行するものと仮定する。下記のシ
ナリオで、この要求がオペレーティング・システムによ
ってどのように実行されるかを説明する(この場合も、
UNIXオペレーティング・システムと基本的に異なら
ない操作は詳しくは説明しない)。
このシナリオでは、第6図と第7図を参照する。
第6図は初期状態を表わし、第7図は最終状態を表わし
たものである。次の仮定を設ける。まず、ブロック41
て表わされる仮想ファイル・ブロックがルート仮想ファ
イル・ブロックである。第二に、関係するディレクトリ
とファイルは、すべて同一装置上にある。第三に、下記
のディレクトリ項目が指示したディレクトリ内にある。
ディレクトリ iノード番号  名 前   iノード番号2    
“u”        152     ”etc“8
3 15    “’gorp”      9283  
   ”foo”       7575    °’
filel”      89マウント・システム・コ
ールヲ実施スルコードは、次の操作を実行する。上にマ
ウントされるファイル°“/etc/foo’“へのパ
スをたどるため、1ookuppnを呼び出す。この操
作が完了したとき、ルート仮想ファイル・システム(ブ
ロック41)は、“/etc/foo’“に対するVノ
ード(ブロック44)を含んでいる。このVノードは、
ルート仮想フアイル・システム(ブロック41)を指す
ポインタと、iノード75に対するiノード・テーブル
項目(ブロック45)を指すポインタを有する。マウン
トされるファイル“’ / etc / gorp“°
へのパスをたどるため、1ookuppnを呼び出す。
この操作が完了したとき、ルート仮想ファイル・システ
ム(ブロック41)は“’ / etc / garp
 ”に対するVノード(ブロック49)を含んでいる。
このVノードは、ルート仮想ファイル・システム(ブロ
ック41)を指すポインタと、iノード92に対するi
ノード・テーブル項目(ブロック48)を指すポインタ
を有する。ここでマウント論理は、新しい仮想ファイル
・システムを作成する。それには、まず新しい仮想ファ
イル・システム(ブロック46)を作成し、次に遡って
親仮想ファイル・システム(ブロック46)を指すポイ
ンタと、ルートiノード(iノード92、ブロック48
)を指すポインタとを有する、この仮想ファイル・シス
テムに対するルートVノード(ブロック47)を作成す
る。「上にマウントされる」ポインタが、ルート仮想フ
ァイル・システム(ブロック41)内のカバーされるV
ノード(ブロック44)に挿入され、上にマウントされ
るVノード(ブロック44)を指すポインタが新しい仮
想ファイル・システムに挿入される。
E2.分散ファイル・システムにおける操作以上、スタ
ンドアロン操作用のデータ構造について説明した。次に
第1図には、本発明をサポートするオペレーティング・
システムを実施した第2図のものと同様の分散システム
が示されている。
以下の説明では、ファイルが永久的に記憶されているノ
ードを指すのに「サーバ」という言葉を使い、そのファ
イルにアクセスするプロセスを有する他の任意のノード
を指すのに「クライエント」の語を使うことにする。た
だし、「サーバ」の語は、一部のローカル・エリア・ネ
ットワーク・システムで使われているような専用サーバ
を意味しないことを了解されたい。本発明をその中で実
施する分散サービス・システムは、システム内の様々な
ノードで走行しシステム内のどこにあるファイルにでも
アクセスする、広範なアプリケーションをサポートする
、真の分散システムである。
第1図に示した分散システム用のデータ構造を第8図に
示し、そのデータ構造の構成部分を第9A図ないし第9
F図に示す。第8図を参照すると、クライエント・ノー
ドは、遠隔サーバ・ノード内にあるファイルにアクセス
することができる。こうしたクライエントは、サーバの
1つのディレクトリをマウントすることによりサーバの
ファイルに対するアクセス権を得る。そのクライエント
・ノードでは、遠隔マウント操作によって作成されるデ
ータ構造が、ローカル・エンティティをマウントするこ
とによって作成されるデータ構造と同等である。ローカ
ルの場合と同じく、遠隔マウント操作で、クライエント
・ノード中に仮想ファイル・システム(vfsまたとえ
ばブロック54)が作成される。ローカルの場合と同じ
く、遠隔ファイルを含む仮想ファイル・システム中のフ
ァイルを使用すると、クライエント・ノード中にVノー
ド構造(たとえばブロック57)が作成される。
ローカルの場合と同じく、このVノード構造はiノード
・テーブル項目(たとえばブロック63)を指すポイン
タを何する。ただし、このiノード・テーブル項目は、
遠隔ファイルからのiノード情報を含まず、その代わり
に代理iノードを含む。
この代理iノードは、遠隔iノードの代理である。
サーバ・ノードでは、遠隔ノードがサーバのファイルを
どのように使用しているかに関する状態情報をサーバが
記録できるように、ある種のデータ構造が構築される。
もっと具体的に言うと、各サーバは、遠隔クライエント
によってオープンになっているファイルを保持するため
の仮想ファイル・システムとして「ダミー仮想ファイル
・システム」(たとえばブロック71)を有する。ダミ
ー仮想ファイル・シテスムは、サーバのファイル・ツリ
ーの一部ではない。遠隔ノードによってオープンになっ
ている各ファイルに対して、サーバのダミー仮想ファイ
ル・システム中にVノード(たとえばブロック74)が
ある。遠隔ノードによってオープンになっている各ファ
イルは、サーバのiノー−49= ド・テーブル中にiノード・テーブル項目(たとえばブ
ロック88)を有する。このiノード・テーブル項目は
、サーバにあるローカル・プロセスがファイルをオープ
ンしたために存在するテーブル項目と同じである。たと
えば、遠隔オープンのゆえにテーブル中に存在するブロ
ック84は、サーバでの操作のゆえにテーブル中に存在
するブロック88と同じ構造である。
あるクライエントとサーバがあるサーバ・ファイルに関
して通信するとき、ファイルを識別する方法が必要とな
る。これは、ファイル・ハンドルによっもたらされる。
クライエントの要求が出て、サーバが特定ファイルの指
定を伴って回答する(たとえば遠隔ルックアップ要求)
とき、そのファイルはファイル・ハンドルで識別される
。クライエントの要求が特定ファイルの指定を含む(た
とえば遠隔オープン要求)とき、そのファイルはファイ
ル・ハンドルで識別される。ファイル・ハンドルは、装
置番号、iノード番号、iノード世代番号の各フィール
ドを含んでいる。
−50= ファイル・ハンドルの必要性は、次のシナリオかられか
る。次のように仮定する。クライエントがサーバに要求
を出して、回答中でファイル・ハンドルを受は取る。ク
ライエントは、そのファイル・ハンドルを記憶し覚える
。サーバでの何らかの活動によってそのファイルが削除
され、iノード・スロットが別のファイル用に再使用さ
れる。
クライエントが記憶しているファイル・ハンドルを使っ
てサーバに要求を出す。サーバはファイル・ハンドルを
受は取り、新しいファイルで操作を実行する。そうなる
と、その操作は許容できないものとなるばすである。
この欠点は、iノード世代番号を使うことによっテ防止
される。iノード世代番号は、iノード中のフィールド
としてディスク上に記憶される。サーバがあるファイル
を削除するとき、そのiノード世代番号を増分する。要
求がサーバに届いたとき、ファイル・ハンドルは分離さ
れ、装置番号とiノード番号がiノードを探し出すのに
使われ、その後ファイル・ハンドルのiノード世代番号
がiノードのiノード世代番号と比較される。両者が異
なる場合、その要求は拒否される。
クライエントが遠隔サーバ上にあるファイルをオープン
したいとき、ネットワーク移送機構を使ってサーバとの
接続を確立する。このファイルに関する以後のトランザ
クション(たとえば、読取り、書込みなど)は、この接
続上を流れる。各ノードはノード・テーブルを含んでい
る。ノードはそのノード・テーブル内の項目(たとえば
ブロック70)を用いて、遠隔ノードに対する既存の接
続に関する情報を記録する。
ネットワーク内の1つのノードが別のノードに自分のた
めに実行を要求できる操作が少数ある。
こうした操作は、dfs操作と呼ばれる。あるノードが
別のノードに要求を出すとき、次の操作が行なわれる。
まず、要求側ノードは、どのdfs操作を要求している
か指定し、その要求に適したパラメータを運ぶメツセー
ジを送る。次に受取側ノードは要求を受は取って指定さ
れた操作を実行する。
最後に、受取側ノードは、そのdfs操作に適した回答
パラメータを運ぶメツセージを送る。
ローカル・ノード内でファイル・システムに対して発行
されるvn操作と、ネットワークを介して発行されるd
fs操作の間には、緊密な関係がある遠隔ファイルに対
する典型的な操作は次の通りである。まず、ローカル・
カーネルが、操作中のファイルが遠隔かそれともローカ
ルか知らずに、Vn操作を発行する。第二に、そのファ
イルが遠隔ノードにあるので、ファイル・システム・イ
ンプリメンテーション・コードが対応するdfs操作を
、そのファイルを保持するノードに送る。そのファイル
がローカル・ファイルであった場合、操作が実行され、
戻りパラメータが戻され、タスクが完了しているはずで
あることに留意されたい。第三に、そのファイルを保持
するノードがそのdfs操作要求を受は取り、そのロー
カル・ファイル・システムに対応するvn操作の実行を
要求する。このvn操作からの戻りパラメータを使って
、そのdfs操作に対する戻りパラメータが構築される
。第四に、要求側ノードがサーバ・ノードからdfs操
作回答を受は取り、dfs操作戻りパラメータを使って
、元のvn操作要求に対する戻りパラメータを構築する
ローカル・ファイルの上に遠隔ファイルをマウントし、
ファイルへのパスをたどるというシナリオを用いて、こ
の操作を説明することにする。第一のシナリオでは、ク
ライエント・ノード内のアプリケーション・プロセスが
、ローカル・クライエント・ファイル” /etc/f
oo″の上にサーバ・ノードのファイル”/u/gor
p“をマウントするため、「マウント」システム・コー
ルを発行するものとする。この要求がどのように実行さ
れるかは、次のシナリオかられかる。このシナリオでは
第10図および第11図を参照する。第11図は初期状
態を表わし、第11図は最終状態を表わす。
ブロック51で表わされる仮想ファイル・システム(v
fs)がサーバのファイル・ツリーのルート仮想ファイ
ル・システムであり、関係するサーバのディレクトリお
よびファイルはすべて同一装置上にある。指示されたデ
ィレクトリ中には次の項目が存在する。
サーバ・ノード ディレクトリ iノード番号  名 前   iノード番号2    
 ”U“      15 工5    ”gorp“      9292   
 ”file2”      87クライエント・ノー
ド ディレクトリ iノード番号  名 前   iノード番号2    
 ”’etc−83 83”foo”       75 マウント・システム・コールを実施するコードが、上に
マウントされるファイル″etc/foo″へのバスを
たどるためにIookuppnを呼び出す。この操作が
完了したとき、ルート仮想ファイル・システム(ブロッ
ク51)は、”etc/foo″に対するVノード(ブ
ロック53)を含んでいる。このVノードは、ルート仮
想ファイル・システム(ブロック51)を指すポインタ
と、iノード75に対するiノード・テーブル項目(ブ
ロック61)を指すポインタををする。マウントされる
ファイルは遠隔ノードにあるため、dfSマウント要求
が、マウントされる目的物へのバスとしてバス″/ u
 /gorp ”を通ってサーバ・ノードに発行される
dfsマウント要求を受は取ると、サーバ・ノードは、
マウントされるファイル″/u/gorp”へのバスを
たどるため、1ookuppnを呼び出す。このルック
アップ操作が完了したとき、サーバのルート仮想ファイ
ル・システム(ブロック71)は/υ/gorp″に対
するVノードを含んでいる。このVノードは、ルート仮
想ファイル・システムを指すポインタと、iノード92
に対するiノード・テーブル項目を指すポインタを有す
る。サーバはiノード中の情報(装[Ul tノード9
2)を用いて、ファイル″/u/gorp″に対するフ
ァイル・ノ\ンドルを構築する。サーバはclfsマウ
ント要求に対する回答中でこのファイル・ノーンドルを
戻し、次にVノードとiノードを解除する。最後に、ク
ライエントはdfsマウント要求に対する回答中でこの
ファイル・ハンドルを受は取り、次のような新しい仮想
ファイル・システムを作成するのに必要な操作を実行す
る。
a)ffrLい[想ファイル・システム(ブロー/ り
54)を作成する。
b)Jflって親仮想ファイル・システム(ブロック5
4)を指すポインタとルートiノード(ブロック62)
を指すポインタとを有する、この仮想ファイル・システ
ムに対するルートvノード(ブロック55)を作成する
。この仮想ファイル・システムのルートiノードは遠隔
ファイルであるため、ルートVノードから指されるiノ
ードは代理iノードである。この代理iノードは、クラ
イエントのdrsマウント要求に対してサーバが戻した
ファイル・ハンドルを含んでいる。
c)「上にマウントされる」ポインタを、ルート仮想フ
ァイル・システム(ブロック51)内のカバーされたV
ノード(ブロック53)に挿入する。
d)上にマウントされるVノード(ブロック53)を指
すポインタを新しい仮想ファイル・システム(ブロック
54)に挿入する。
次に、上記の遠隔マウント(クライエントの/etc/
Tooの上にサーバの/υ/gorpをマウントする)
を実行した後、クライエント・プロセスが、ファイル”
 /etc/foo/file 2 ”に対して操作す
るためのシステム・コールを発行すると仮定する。
下記のシナリオのブロック番号については第11図およ
び第12図を参照されたい。第11図は初期状態を表わ
し、第12図はオープン操作後のシステム状態を表わす
。まず、システム・コールを実施するフードが、バスを
たどうるために1ookuppnを呼び出す。1ook
uppnは、ルート仮想ファイル・システム(ブロック
51)のルートVノード(ブロック52)からスタート
し、このVノードで表わされるディレクトリ・ファイル
中で名前”U″′をルックアップするためにvn 1o
okuρを呼び出す。
vn Iookupはそのディレクトリ中で、名前″U
″がiノード15と関連していることを見つける。VQ
lookupは、iノード15に対するルート仮想ファ
イル・システム中にVノードとiノードを構築し、この
Vノードに対するポインタを1ookuppnに戻す。
1ookuppnは、今度はiノード15によって識別
されるディレクトリ中で名前“foo”をルックアップ
するために、再度vn 1ookupを呼び出′す。
vn 1ookupは指示されたディレクトリを読取り
、名前“’foo’“がブロック61中のiノード75
と関連していることを発見する。ルート仮想ファイル・
システム(ブロック51)中には既にこのiノード(ブ
ロック61)に対するVノード(ブロック53)が存在
し、したがってvn IookupはこのVノードを指
すポインタを戻す。Iookuppnは、そのVノード
が」二にマウントされていることを発見する(ブロック
53中の「上にマウントされた」ポインタはブロック5
4を指している)。したがって、1ookuppnは次
の仮想ファイル・システム(ブロック54)へと「上に
マウントされた」ポインタをたどり、その仮想ファイル
・システムのルートvノード(ブロック55)へとその
ルートVノード・ポインタをたどる。次にIookup
pnはパスの次の要素(”file 2 ” )を探す
ためにvn 1ookupを呼び出し、ブロック55を
指すポインタと名前”file2”をvn 1ooku
pに与える。探索すべきディレクトリは遠隔ノードにあ
り、クライエントの代理iノード(ブロック62)に記
憶されているファイル・ハンドルによって識別される。
vn 1ookupはそのファイルを保持するサーバに
dfs−1ookupを発行し、そのディレクトリを識
別するファイル・ハンドルとルックアップすべき名前(
”file2“′)を送る。サーバがdfs−1ook
upを受は取ると、ファイル・ハンドルを使って読み取
るべきディレクトリを識別し、このディレクトリ中で名
前II fi le 2 tlを探索するためにynl
ookupを発行する。vn 1ookupはディレク
トリを読み取り、名前”file2“に関連するiノー
ド番号が67であることを発見する。vn 1ooku
pはiノード67に対するダミー仮想ファイル・システ
ム中でVノードとiノードを構築し、このVノードを指
すポインタを1ookuppnに戻す。 dfs−1o
okupはvn 1ookupから戻されたデータ構造
中の情報を用いて、iノード67によって識別されるフ
ァイルに対するファイル・ハンドルを構築する。dfs
−1ookupは、dfs−1ookup要求に対する
回答としてこのファイル・ノAンドルをクライエントに
戻し、Vノードとiノードを解除する。クライエント中
で、見つかったファイルに対するVノード(ブロック5
5)と代理iノード(ブロック63)が作成される。
”file2”はこのパスの最後の要素なので、1oo
kuppnは見つかったVノード(プロ・ンク55)を
指すポインタをその呼出し側に戻す。システム・6cx
zコールを実施するコードは、次にそのファイルに対し
て要求された操作を実行する。
E3.ファイル・アクセスの同期モード本発明が実施さ
れる第1図に示すような分散型サービス・システムでは
、ローカル・キヤ、ソシュ12A、12Bおよび12C
がノードA1BおよびCごとに存在する。ファイル5が
ノードAのディスク2Aに永久的に存在する場合、サー
バ・ノードAで実行されるローカル・プロセス13Aに
よるキャッシュ12Aの使い方は、上述のスタンドアロ
ン・システムの場合と同じである。しかし、ノードBお
よびCでそれぞれ実行される遠隔プロセス13Bおよび
13Gは、第3図に示すようにサーバ・キャッシュおよ
びクライエント・キヤ・ソシュを使用する2ステツプ・
キャッシュ方式によってファイル5にアクセスする。サ
ーバ・ノードはディスク2Aからファイル・ブロック5
を得、それをサーバ・キャッシュ12Aに記憶する。ク
ライエント・ノードBはネットワーク3を介して出て行
き、サーバ・キャッシュ12Aからファイル5のブロッ
ク5を得る。クライエント・ノードBは、ファイル5の
ブロック5を、サーバ・キヤ・ソシュ12A内に存在し
ていた通りに、クライエント・キャッシュ12Bに記憶
する。クライエント・ノードBのユーザ・アドレス・ス
ペース14Bがファイル5の任意のブロックからデータ
をシークするとき、各アクセスごとにネットワーク3を
介して出て行く代わりに、クライエント・キヤ、ツシュ
12Bがアクセスされる。クライエント・キャッシュ1
2Bを使って遠隔ファイル5にアクセスナると、ネット
ワーク・トラフィックおよびオーバーヘッドを節約でき
るので、処理能力を大幅に向上させることができる。
本発明のシステムおよび方法は、アプリケーション・プ
ログラム・レベルでファイル・アクセス意味論を保持し
ながら高い処理能力を得るように、分散型環境でクライ
エント・キャッシュ12Bおよびサーバ・キャッシュ1
2Aの使用を管理するものである。これにより、スタン
ドアロン・システムで実行される既存のプログラムが、
何らの変更もなく分散型システムで実行することが可能
になる。ファイル・アクセス意味論は、ファイルにアク
セスしてそれを変更するために読取りおよび書込みシス
テム・コールを発行する様々な処理によってオープンさ
れるとき、ファイルの整合性を保持する。ファイル・ア
クセス意味論は、任意のバイト範囲で一度に一つの入出
力動作のみが許されることを要求し、−底入出力動作が
開始すると、ファイルの同じバイト範囲に対して他の入
出力動作が優先使用を行なうことはできない。
第13図を参照して上記の例を示す。プロセス131が
ファイル5のバイト範囲N 1−N2に書込みシステム
・コールを発行した場合、バイト範囲N1−N2全体が
プロセス131によるアクセスのために使用可能なとき
、その書込みシステム・コールだけが実行でき、バイト
範囲N1−N2に関する読取り動作は全く実行されない
。書込みシステム・コールの実行中、ファイル5のバイ
ト範囲N1−N2に関する他のすべての動作は、書込み
が終了するまで延期される。バイトがローカル・キャッ
シュ12Aに書き込まれるまで、書込みは終了しない。
書込み要求が終了すると、キヤ、ツシュ12Aに書き込
まれたデータは、他のプロセス131ないし13Nのい
ずれかによる後続の読取り動作に見えるようになる。
ファイル・アクセス意味論のもう一つの要件は、N1−
N2等のファイル・バイト範囲(同じ入出力動作によっ
てアクセスされるレコードまたは一組の関連レコードで
よい)が読取りプロセスから見えるとき、ファイル・バ
イト範囲N1−N2は常に、この範囲に対する最後の更
新を反映する一貫した一組のデータを含まなければなら
ないということである。この範囲は、書込み動作が実行
されている間、アクセスのために使用することができな
い。このようにして、プロセスによって発行される次の
読取りは書き込まれたばかりのデータを読み取り、古い
陳腐化したデータを読み取ることはない。
第1図に示す本発明の分散型ネットワーク環境では、異
なるアプリケーション・プログラム4Aおよび4B、プ
ロセス131ないし13Nおよび231ないし23Nか
らの読取りおよび書込みシステム・コールの実行が、前
述のファイル・アクセス意味論が保持されるように同期
される。本発明のシステムおよび方法では、種々のキャ
ッシュ同期モードを用いて同期を保証する。特定のファ
イル5に対して、入出力コールは、アクセスのためにフ
ァイル5をオープンするプロセス131ないし13Nま
たは231ないし23Nの位置および同期モードに応じ
て、クライエント13またはサーバAによって同期され
る。
3種類の同期モードを第14図に示し、第1図と関連し
て説明する。最初のモード104は非同期モードと呼ば
れる。第14図のブロック107に示すように、ただ一
つのクライエント遠隔ノードCで実行されるプロセス1
3Cによる読取り/書込みアクセスのためにファイル5
がオープンされる場合、ファイル5はこのモード104
で動作する。このモード104では、制御権はすべてク
ライエント・ノードCにある。サーバ・キャッシュ12
Aおよびクライエント・キャッシュ12Cがこれらの読
取り/書込み動作のため使用される。
読取りまたは書込み動作では、クライエント・キャッシ
ュ12Cから満足され得ない場合のみ、サーバ・キャッ
シュ12Aに対するアクセスが必要となる。ファイル5
がクライエント・ノードCのすべてのプロセス13Gに
よってクローズされるとき、または、クライエント・ノ
ードCで他のデータにもっと場所が必要とされるとき、
クライエント12Cにある修正されたブロックが周期的
−66= 同期動作によりサーバ12Aに書き込まれる。また、フ
ァイルが非同期モードから全同期モードに変わるとき、
修正されたブロックがサーバに書き込まれる。
第二のモード105は読取専用モードである。
読取専用モード105は、第14図のブロック108に
示すように、ただ一つのノードC内のプロセス13Cか
らの、または複数のノードBおよびC内のプロセス13
Bおよび13Gからの読取り専用アクセスのためにオー
プンされるファイル5に使用される。このモード105
では、サーバ・キャッシュ12Aおよびクライエント・
キャッシュ12Bまたは12Cあるいはその両方が使用
される。読取り要求は一度に1ブロツクまたは複数のブ
ロックに対して発行される。同じクライエントBまたは
Cからの特定のブロックに対する1回おきの読取り要求
はサーバ12に行かず、その代わりに、当該のクライエ
ント・キャッシュBまたはCから読み取られる。言い換
えると、読取り動作では、クライエント・キャッシュ1
2Cまたは12Bから満足される場合、サーバ12Aに
対するアクセスが必要でない。要するに、ノードA1B
またはCのいずれかにおけるプロセス13A113Bま
たは13Cのいずれかによる読取り専用アクセスのため
にファイル5がオープンされる場合は、ファイル5はモ
ード105で動作する。
第三のモード106は全同期モードである。全同期モー
ド106は複数のファイルA、Bでオープンされている
ファイル5のため使用され、少なくとも1つのノードが
書込みアクセスのためにファイルをオープンしている。
全同期モード10Bでは、クライエント・キャッシュ1
2Cまたは12Bは迂回され、サーバ・キャッシュ12
Aのみが使用される。読取りおよび書込み動作はすべて
サーバ12Aで実行される。
第1図に示す分散型環境1では、大部分のファイル5は
、第14図に示す読取専用モード105である複数のノ
ードA1BおよびCにおけるプロセス13A、13Bお
よび13Cによる読取りのみのためにオープンされたり
、非同期モード104にあるただ一つのノードでの更新
のためにオープンされる場合が多く、全同期モードにあ
る複数ノードで実行されるプロセスによる読取りおよび
書込みアクセスのためにオープンされることはそれほど
頻繁ではない。第13図に示すように、読取専用モード
105および非同期モード104でクライエント・キャ
ッシュ12Bを使用するため、ファイル5にアクセスす
る遠隔読取り/書込み応答時間が大幅に減少し、システ
ムの全体的処理能力が向上する。
第15図に示すように、全同期モードでは、クライエン
ト・キャッシュは使用されない。クライエント・ノード
Bは、各読取りおよび書込み動作ごとにネットワーク3
を介してサーバAからのファイル5にアクセスする。こ
のモードでは読取り/書込み応答時間は増加するが、ク
ライエントは、ローカル・キャッシュ中に、サーバに存
在している対応するファイルと共に更新されなかったフ
ァイル5を保持しないので、ファイル・アクセス意味論
は保持される。
3種類のモードを使用してクライエント・キヤ・ソシュ
の使用を管理すると、読取り/書込み応答速度が全体と
して平均的に増加することとファイルの整合性が組み合
わされて、システムの全体的処理能力が最適になる。あ
る場合にはクライエント・キャッシュの使用で読取り/
書込み応答時間が減少し、別の場合にはクライエント・
キヤ・ソシュを使用しないことでファイル・システムの
意味論が保持される。
ファイルの同期モードは、どのノードがファイルをオー
プンするか、およびファイルが読取りのためにオープン
されるのかそれとも書込みのためにオープンされるのか
だけでなく、ファイルが存在する装置が生アクセス・モ
ードでオープンされるかどうかによっても決まる。装置
に対する生アクセスとは、装置2A内の第13図に示す
データ・ブロックLBN1がアクセスされるという意味
である。したがって、装置2Aの読取りおよび書込みは
、装置2AのブロックLBN1に対する読取りおよび書
込みとなる。ブロックがどのファイルに属するかは関係
ない。サーバ・ノードAにある処理131ないし13N
からの生アクセスのために装置2Aをオープンすること
ができる。遠隔ノードBまたはCからの生アクセスのた
めに装置2Aをオープンすることはできない。
第13図では、第3図に関連して上述したスタンドアロ
ン・システムと同様に、キャッジユニ2Aは装置2人の
ブロックLBNIとして管理される。サーバAは、サー
バ・キャッシュ12Aを装置2A内の論理ブロックLB
NIとして見る。クライエントBは、ファイル5が装置
2Aのどこにあるか、全く知らない。クライエントBが
知っていることは、装置2A上のブロック番号N1にあ
るファイルにアクセスしていることだけである。
クライエント・キャッシュ12Bは、データをファイル
5の論理ブロックN1として処理する。サーバ・キャッ
シュ12Aでは、データは装置2Aの論理ブロックLB
N1として処理される。データをこのように処理する際
、データが主装置としての装置に書き込まれる場合、お
よび、装置に書き込まれたブロックと同じファイルのブ
ロックが次に読み取られる場合、この読取りで新たに書
き込まれたデータが見えることをサーバは保証すること
ができる。このため、ファイル・システムの意味論が保
持される。
第13図に示すように、ファイルがクライエント・ノー
ドBでアクセスされ、ファイルが非同期モードまたは読
取専用モードにある場合、クライエント・オペレーティ
ング・システム11Bは読取りシステム・コール16に
おけるファイル内のファイル記述子およびバイト範囲(
ファイル記述子、N1)を装置番号および装置内の論理
ブロック番号に変換しない。クライエントは、ファイル
記述子およびバイト範囲をファイル・ハンドル、ノード
識別子、およびファイル内の論理ブロック番号に変換す
る。クライエント・キャッシュ12Bでは、ファイル・
ハンドル、ノード識別子、およびファイル内の論理ブロ
ック番号によって指定されるブロック17がある。クラ
イエント・アプリケーション4Bから読取りコール16
が発行されると、読取り要求が、ファイル内のファイル
記述子およびバイト範囲と共にオペレーティング・シス
テムに送られる。オペレーティング・システムは次にク
ライエント・キャッシュ12Bを調べる。ファイル・ハ
ンドル、ノード識別子、およびファイル内の論理ブロッ
ク番号がそこにある場合は、キャッシュ12Bを読み取
り、そこにない場合は、その読取り要求がサーバに送ら
れる。サーバはそこでファイル・ハンドルおよびファイ
ル内の論理ブロック番号を取り出し、それを装置番号お
よび装置内の論理ブロック番号に変換する。この変換が
必要なのは、サーバ・キャッシュ12Aは、スタンドア
ロン・システムの場合と同様に、装置番号および装置内
のブロック番号によって管理されるためである。読取り
要求はサーバに送られた後、第3図と関連して説明した
スタンドアロン・システム内でそれ自体のアプリケーシ
ョンからきた場合上同様に処理される。
クローズされたファイルは同期モードを持たない。しか
し、一度フアイルがまずプロセスによっ−73〜 てオープンされると、ファイルの同期モードは、第16
図に示すように、以下に従って初期設定される。ファイ
ルが存在する装置がクローズされている(112)、す
なわち、特別な装置としてオープンされていす、かつフ
ァイルが1つの遠隔ノードでの書込みアクセスのために
オープンされている(113)場合は、ファイルの同期
モードは非同期104に初期設定される。ファイルが存
在する装置がクローズされており、かつファイルが一つ
または複数のノードでの読取り専用アクセスのためにオ
ープンされている(114)か、または、装置およびフ
ァイルの両方が読取専用アクセスのためにオープンされ
ている(115)場合は、ファイルの同期モードは読取
専用モード105である。
ファイルが存在する装置が読取り/書込みアクセスのた
めにブロック特別装置としてオープンされており(11
f3)、または、ファイルが複数のノードでオープンさ
れ、オープンの少な(とも1つは書込みのためである場
合は、ファイルの同期モードは全同期モード106に初
期設定される。ブロッり特別装置とは、装置に対して生
アクセスがあるという意味である。
一度フアイルがあるモードに初期設定されると、状態が
変化した場合、ファイル・モードが変わることがある。
第16図の線118ないし123に示すように、あるモ
ードから別のモードへの移行は以下の条件下で行なわれ
る。ファイルが現在非同期モード104にあり、ファイ
ルがオープンされているノードの数が2以上になる場合
(124)、同期モードは、線119で示すように、全
同期106に変わる。さらに、ファイルが存在するブロ
ック特別装置りがオープンされている場合(125)、
同期モードは非同期モード104がら全同期モード10
6に変わる。ファイルに対するクローズ動作では、その
クローズ動作がファイルの最後のクローズでなくして、
ファイルが書込みのため依然としてオープンされている
場合、モードの変化はない。しかし、クローズ動作が書
込みアクセスに対するファイルの最後のクローズであり
、残りのすべてのオープンが読取りアクセスのためであ
る場合(83)は、新しいモードは、線121で示すよ
うに読取専用モード105になる。
クローズ動作がファイルの最後のクローズである場合、
同期モードはない。
ファイルが現在読取専用同期モード105にあり、ファ
イル・オープン動作が行なわれる場合、そのオープンが
読取りのためであれば、モードの変化はない。しかし、
そのオープンが書込みのためである場合は、線120で
示すように、すべてのオープンが一つのクライエント・
ノードにある(127)なら、新しい同期モードは非同
期モード104である。さもなければ、同期モードは全
同期モードである。さらに、ファイルが存在する装置が
読取り/書込みアクセスのためにオープンである場合(
130)、そのファイルに対する新しい同期モードは全
同期モードエ06である。クローズ動作については、そ
のクローズがファイルの最後のクローズである場合、そ
のファイルに同期モードはない。クローズ動作後に、1
つまたは複数のノードでファイルが依然としてオープン
されている場合、同期モードは変わらない。
ファイルが現在全同期モード106にあり、そのファイ
ルに対して別のオープンがある場合、またはファイルが
存在する装置がオープンされる場合は、同期モードの変
更はない。ファイルのクローズ動作後、読取り/書込み
アクセスのためのオープンが遠隔ノードに残っており、
ファイルが存在するブロック特別装置がオープンされて
いない場合、線118を介してブロック141に示すよ
うに、同期モードは非同期モード104に変わる。
ファイルが存在するブロック特別装置がオープンされて
おらず、線122を介してブロック142で示すように
、ファイルが1つまたは複数のノードで読取り専用アク
セスのためにオープンされる場合、または、ファイルが
存在するブロック特別装置が読取り専用アクセスのため
にオープンされ、線122を介してブロック143で示
すように、ファイルが読取り専用アクセスのためにオー
プンされる場合は、同期モードは全同期モード106か
ら読取専用モード105に変わる。
7フー ファイルに対するすべてのオープンおよびクローズ動作
はサーバ・ノードで解決される。サーバは、モードを変
更する可能性がある動作を実行するとき、オープンの同
期モードを判定する。サーバはまた、同期モードの変更
を行なう。サーバがファイルに対する新しいオープンま
たはクローズを受は取るとき、ファイルに対する同期モ
ードの変更がトリガされることがある。必要とされる同
期モードが現在の同期モードでない場合、サーバは、フ
ァイルがオープンされているすべてのクライエントに「
同期モード変更」遠隔手順コールを送る。ファイルが初
めてオープンされた後で、そのファイルをオープンした
クライエントにファイルのモードが知らされる。モード
が非同期モードまたは読取専用モードのどちらかである
場合、クライエントは読取り用のクライエント・キャッ
シュを使って開始することができ、さらに、第13図に
示すように、モードが非同期モードの場合は、書込み用
のクライエント・キャッシュをも使って開始することが
できる。クライエントが通信リンクを介してサーバに対
して読取りまたは書込みを行なう必要はない。第15図
に示すようにモードが全同期モードである場合は、クラ
イエント・キャッシュは使用されず、クライエントは通
信リンク3を一介して読取りまたは書込みをサーバに送
らねばならない。
第15図でサーバAは常にファイル5のモード151を
セットする。ファイルのモードは、ファイルをオープン
したすべてのノードで同じである。
サーバAはまた、どのノードがファイルをオープンした
か、およびそれらのオープンが読取りのためかそれとも
書込みのためかを知っている。サーバAは、ノード内の
どの処理131ないし13N1231ないし23Nがフ
ァイルをオープンしたかを知っている必要はない。第1
5図に示すように、サーバは上記情報をすべてファイル
・アクセス構造リスト150に保持する。ファイル・ア
クセス構造リスト150の各要素は、ファイルをオープ
ンしたノード152、そのノードでの読取りのためのオ
ープンの数153、およびノードでの書込みのためのオ
ープンの数154を含んでいる。
E4.ロッキング UNIXファイル・ロッキング UNIXオペレーティング・システムでは、処理がファ
イル内のバイト範囲をロックして、他の処理がその範囲
にアクセスできないようにすることができる。ロックは
ファイルのバイト範囲に適用される。ファイルの全域に
渡るロックはファイルをロックし、ファイル・ロックと
呼ぶことができる。任意のバイト範囲に渡るロックは、
レコード・ロックと呼ばれることがある。ただし、この
開示では、レコード・ロックおよびファイル・ロックを
単にロックと呼ぶことにする。
このシステムでは2種類のロックがサポートされる。す
なわち、書込みロックおよび読取りロックである。書込
みロックは排他的ロックである。
ファイルのある範囲が書込みロックされた場合、他のロ
ックがその範囲に存在することはできない。
もう一つの種類のロック、すなわち、読取りロックは共
用ロックである。オーバーラツプする任意の数の読取り
ロックをファイルのあるセグメントに適用することがで
きる。既存の読取りロックは他の読取りロックを妨げな
いが、他の書込みロックを妨げることに留意されたい。
既存の書込みロックは特定の範囲に対する他のすべての
ロックを妨げる。書込みロックは、書込みアクセスでオ
ープンされたファイル記述子だけに適用できる。
ファイルは強制モードにあるか、または強制モードにな
いかのいずれかである。強制モードにないファイルに対
するロックは勧告ロックと呼ばれる。
勧告ロックはファイルまたはレコードに対する絶対的保
護をもたらさない。しかし、勧告ロックは、処理がロッ
クされたファイルまたはレコードの読取りまたは書込み
を行なうのを妨げる。勧告ロックは1ockf (2)
またはfcntl (2)に対するコールの結果に影響
を及ぼすだけである。1ockf (2)またはfcn
tl (2)を使って、勧告ロックを使わなければらな
いのは、協働して勧告ロックがアクセスしている共用フ
ァイルに対するロックの状況を照会中のプロセスである
。勧告ロックの利点は、それらが読取りまたは書込み動
作中にオペレーティング・システムのカーネルから問い
合わせる必要がないということである。強制ロックは、
勧告ロックと同様に、1ockf (2)およびfcn
tl (2)に対する後続のコールに影響を及1ボす。
さらにN read(2) )write (2) 1
open (2) )creat (2) Nfcle
ar (2) 、ftruncate (2) 、およ
びshmat (2)は、それぞれ、ファイルの読取り
ロックまたは書込みロックされた部分が変更されないこ
と、およびファイルの書込みロックされた部分がアクセ
スされないことを保証しなければならない。
fcntl (2)システム・コールの異なる3つのU
NIXオペレゎ−ティング・システム・コマンドがロッ
キングに関係する。
F−GETLK  fcntl(2)の引数によって記
述されるロックが呼出し側に許可されるのを妨げる最初
の既存のロックを見つける。
F−8ETLK  fcntl (2)の引数によって
記述されるロックを呼出し側に許可する。既存のロック
が要求とインターフェースするので、ロックを許可でき
ない場合は、この既存のロックの記述を戻す。
F−8ETLKW  fcntl (2)の引数によっ
て記述されるロックを呼出し側に許可する。既存のロッ
クが要求とインターフェースするので、ロックを許可で
きない場合は、デッドロックの有無を検査し、デッドロ
ックが生じない場合は、呼出し側を待たせる。妨害ロッ
クがクリアされる度に、カーネルは、再度妨害ロックの
有無を探索することにより、要求されたロックを確立し
ようと試みる。プロセスはいつまでも待つことができる
。単一ノード上でのファイル・ロックのみに関するデッ
ドロックが検出されるが、複数ノード上での複数ファイ
ル・ロックによるデッドロックが発生し得る。プロセス
は決してデッドロックにはならないが、交互にセットさ
れる種々のファイルに対する妨害ロックのためにライブ
・ロック(l 1ve−1ock )になる可能性はあ
る。
ロック・テーブル ロックはオープン・ファイルと関連するので、ロック情
報をオープン・ファイルに関する情報と一緒にファイル
のiノード構造に保持するのが自然である。iノード構
造はUNIXオペレーティング・システムでは固定サイ
ズなので、iノードにはロック構造が存在するアドレス
だけを入れて、ロック情報は別の構造に記憶されねばな
らなかった。ロックは、ロック・テーブルと呼ばれるカ
ーネル・データ構造からの一組の項目として、連係され
たリストに保持される。
UNIXオペレーティング・システムは、分散型ファイ
ル・システムに対するサポートを提供しなかった。分散
型システムでは、数個のノードが同じファイルを使用す
ることがあり得る。あるファイルに対するロック・テー
ブルは常に単一ノードにある。ファイルが非同期モード
にある場合、ロック・テーブルは(活動ノード情報と共
に)、ファイルがオープンされている単一ノードに保持
される。ファイルが読取専用モードまたは全同期モード
にある場合、ロック・テーブルはサーバに保持される。
このアーキテクチャには2つの重要な意味がある。第一
に、プロセスが遠隔手順コール(RPC)を使ってロッ
クをセットまたはテストしなければならないことがある
。これらのRPCはファイルのサーバで実行される。第
二に、ファイルの同期モードが変わるとき、ファイルの
ロック・テーブルをクライエントからサーバに、または
サーバからクライエントに移さなければならないことが
ある。iノード・ロック・テーブルの項目は、iノード
・ファイルのセグメントに対するロックに対応する。ロ
ックを表わすには、ロック・セット項目が、ロックされ
るバイトの範囲、ロックの種類(読取りまたは書込み)
、ロックの所有者を識別する情報を含まなければならな
い。
プロセスが項目のロックを待っているかどうかを示すフ
ラグをロック項目に記憶することにより、カーネル・デ
ータ構造の幾つかの探索が不要になる。このフラグは、
ロック・セット項目の実際のインプリメンテーションに
含まれる情報のもう185一 つの部分である。最後に、ロック・セット項目は多分、
同じファイルに属する項目を互いにリンクするために使
用されるポインタ・フィールドを含んでいる。ロック・
セットの要素を処理するための以下の動作を詳細に調べ
ることにより、インプリメンテーションの詳細について
考察する。
1)特定のiノードと関連するロック・セット中のロッ
クを繰り返す方法。
2)あるiノードに対するロック・セットにロックを追
加する機能。
3)あるiノードに対するロック・セットからロックを
除去する機能。
ロック・テーブルの項目は、ロックを、ロックされる最
小のバイト範囲とそのロックに対する所有者情報で表わ
す。ロックの以下の属性を戻す動作が必要である。  
  ′ 1)ロックされるセグメントの範囲 2)ロックの種類
(読取り、書込みまたは一時的) 3)ロック所有者 所有者があるロックと関連しているとき問題が86一 生じる。ロックの所有者は、所有者のprocテーブル
を指すポインタによって識別される。procテーブル
とは、システム内の各活動プロセスに関する管理情報の
集合である。procテーブルに対するデータ構造ソー
ス・コードを、各フィールドの目的を説明する情報と共
に下に示す。
5TRIICT  PROC( STRUCT SEG LIST   セグメントID
P 5EGS; INT   P FLAG;    テスト用フラッグ
CIIARP 5TAT;    プロセスの状況CH
ARP PRI;    優先順位、ネガティブ・ハイ CHARP  TIME;       常駐■寺間ス
ケジュールC1(ARP CP口:CP■使用法 CIIARP  NICE; USIIORT P UIDi     実ユーザID
USIIORT P 5UID:    実効ユーザI
D5HORT   P  PGRPi       プ
ロセス・グループ・リーグ5HORT  P PII)
;    固有プロセスID5HORT   P  P
PID;       ペアレントのプロセスIDLO
NG  P ADDR;    処理アドレス5IIO
RT  P 5IZE;    イメージのサイズ5T
RUCT USER”P UPTRi  このプロセス
に;対するUブロック ;の位置 CHARP CURSIGi INT   P 5IGi    保留信号IHT  
 P SIGMASKi  信号マスクINT   P
 5IGIGHORE;無視される信号INT   P
 5IGCATCH;  捕捉すべき信号INT   
  P  5IGACTIOHi  1=ベル・スタイ
ル;  0=4.2  スタイル Union  ( CADDRT P CAD; INT P IHT; ) P−■NW; #DEFIHE  P  W  CHAN  P−ロN
υ、P  CAD;  プロセスが待ってい; るロッ
ク・テーブルを指 ;すポインタ uDEFINE  P  ARG    P  UNW
、P  IHT;5TRUCT TEXT ”P TE
XTP; テキスト構造を;指すポインタ 5TRUCT PROC*P LINK ;  実行中
のプロセスの;連係リスト INT    P CLKTIM;  警報クロック信
号INT    P SMBEG;   共有メモリの
始まりI)IT    P SMEHI);   共有
メモリの終わりCADDRT   P  FREQi 
    空白またはレグセットLONG   P PF
LT;   ページ不在の数INT       P 
 EPIDi     ロッキングIDプロセスINT
       P  5YSID;    リモート・
ブl12tスのHID構造の終わり デッドロックの検出には各ロックの所有者用のproc
テーブルにアクセスする必要があるので、procテー
ブルはロック要素の所有者を識別するための有用な方法
である。分散型システムでは、所有者はローカル・プロ
セスではないかも知れない。
所有者が遠隔プロセスである場合、所有者情報には、所
有者が存在するノードに対するノードidを含める必要
がある。必要とされる情報は以下の通りである。
1)所有者のprocテーブルのアドレスを戻す動作。
−2)2人の所有者を比較し、これらの所有者が同じプ
ロセスである場合はTRUEを戻し、さもない場合はF
ALSEを戻す動作。
3)所有者のノードidを戻す動作。これらの動作は構
造内のフィールド参照を使って、指示された動作を実行
する。
ロック待ち スタンドアロン・オペレーティング・システムでは、ロ
ックを確立しようと試みるプロセスは、まず既存のロッ
クがクリアされるのを待たなければならないことがある
。待つ(休眠する)前に、そのプロセスはシステムのす
べてのiノードのロック・セットを調べて、待っても、
デッドロックが生じないことを確かめねばならない。待
機しているプロセスのprocテーブルが、procテ
ーブルのWCHANフィールドを使って、待っているロ
ック・テーブル項目を指す。
DFSでは、待つことは容易ではない。ブロッキング・
ロックを待つための2つの方法がある。
すなわち、1)ローカル・ロック・セット項目を直接待
つ方法と、2)サーバ・ロック・セット項目を間接に待
つ方法である。直接待機は上述のスタンドアロン待機と
同じである。直接待機は、ロック・テーブル内で局所的
に生じるロックをプロセスが待たねばならないときに使
用される。あるファイルに対するロック・テーブルは1
つのノードのみに存在することを思い起こされない。呼
出し側プロセスが同じノードにない場合、ロック・テー
ブルはサーバ内にある。ロック・テーブルが遠隔ノード
(サーバ)内にあるファイルのある領域をロックしよう
と試みるプロセスは、ロックを間接的に待つ。この間接
待機は、サーバ内のRPCがトランザクション・プログ
ラムを呼び出し、ロックを待つことによって行なわれる
。スタンドアロ7UNIXオペレーテイング・システム
では、ロックが許可されることが可能な場合、または、
待機がデッドロックを生じる可能性がある場合、プロセ
スは決して休眠状態に入らない。分散型システムでは、
ロック・テーブルと同じノードに存在しないロック要求
を実行するプロセスは常に(少なくとも一時的に)休眠
状態に入る。そのプロセスは、RPCが戻るのを待って
いる間、そうしなければならない。不必要なネットワー
ク通信を避けるために、ロックRPCを待つプロセスは
、RPCトランザクション・プログラムがブロッキング
・ロックを待っているので待つのか、それともブロッキ
ング・ロックが発見されなかったサーバでトランザクシ
ョン・プログラムが実行を終了していないので待つのか
を知らない。分散型システムでは、デッドロックは数ノ
ードにわたる可能性がある。
したがって、スタンドアロン環境と疑似のアーキテクチ
ャを使って、デッドロックがない場合にのみプロセスが
待つようにすることは、そのオーバーヘッドおよび検査
を行なわねばならないことのために、実用的ではない。
本発明は、スタンドアロン・デッドロック防止の分散型
バージョンに付随するオーバーヘッドおよび複雑性を伴
わずにそのような能力を提供するための方法である。
デッドロック 連鎖状のプロセスが実行され、それらのプロセスが、既
に使用中の資源を求めて競合するとき、デッドロックが
生じる。たとえば、プロセス2が支配する資源をプロセ
ス1が待ち、プロセス3が支配する資源をプロセス2が
待ち、以下同様に、プロセス1が支配する資源を最後の
プロセスが待つ場合である。スタンドアロ7UNIXオ
ペレーテイング・システムは、ファイルおよびレコード
のロッキングを伴うデッドロックが発生するのを防ぐ。
従来は1.UNIXオペレーティング・システムは分散
型システムをサポートせず、そのようなデッドロックの
発生を防ぐことができなかった。
防止したいデッドロックを形成する循環連鎖状プロセス
は2種類のリンクによってリンクされる。
すなわち、1)プロセスproテーブルのプロセスw 
chanフィールドを介してロックを指すプロセスと、
2)ロックの所有者フィールドを介してプロセスを指す
ロックである。これらのリンクをたどることにより、循
環の有無の探索を実行して、デッドロックが発生するか
どうか判定することができる。UNIXオペレーティン
グ・システムは1つのこと(単−wchan)を待つこ
とができるだけであり、ロックは1つのプロセスのみが
所有するので、連鎖の探索は難しくない。唯一の厄介な
点は間接待機の可能性である。別のノードに送られたR
PCからの応答をプロセスが待つとき、間接待機が生じ
る。間接待機を処理するには、RPCを実行する前にタ
イマーをセットして、デッドロックが生じた場合に警報
アプリケーションが必要とされる。
分散型ファイル・サポート・ロック制御UNIXオペレ
ーティング・システム環境におケルファイル・アクセス
・コールは、FLOCKと呼ばれるデータ構造を使用す
る。FLOCKの構造を下に示す。
5TRUCT FLOCK ( SHORT  L TYPEi SHORT  L WHENCEi LONG   L 5TART; LONG   L LEN; 5HORT   L PID; 5HORT   L HID; ]; 分散型ファイル・サボー) (DFS)を実施するため
のもう1つの重要な構造はファイル・アクセス構造であ
る。ファイル・アクセス構造のソース・フードを、詳細
な論理を示すための若干の説明情報と共に下に示す。
5TRUCT  FILE ACCESS[10 ファイル・アクセス構造ポインタ STI?tlCT  FILE ACCESS ”FA
 NEXT; ;    /”ファイル・アクセス構造
フラッグ 5RORT   FA FLAG;  /′ファイル・
アクセス構造全ユーザ 5HORT    FA C0UNT;  /”ファイ
ル・アクセス構造読取り/専用カウント5HORT  
 FA 0ROCNT; /”ファイル・アクセス構造
読取り/書込みカウント 5HORT   FA−0RWCNT;  /’ファイ
ル・アクセス構造実行プロセス ″/ 5IIORT   FA TXTCNT; /”ファイ
ル・アクセス構造ノード構造ポインタSTR[ICT 
 N0DE ”FA HID; /”ファイル・アクセ
ス構造ノードID INT    FA NID1 /” ファイル・アクセス構造S lN0DHポインタ5TR
UCT    lN0DE  ”FA  SIP;  
);DFSは分散型環境でファイルのロッキングを調整
するためのロック制御サブルーチンを提供する。
詳細な論理を示すため、サブルーチンのインターフェー
ス・ソース・コードヲ下に示ス。
5TRtlCT  FLOCK ( S110RT   L TYPE; 5HORT   L WHEHCE; LONG   L 5TART; LONG   L LEN; 5HORT   L PID; 5l(ORT   L HID; ); DFS LOCK C0NTR0L(FH,、LOCK
 INFO,CMD。
FAS FLAG) FILE  l!八へDLE  T  FH;5TRU
CT FLOCK ”LOCK INF□;5HORT
 CMD、 FAS FLAG;RETURN(ERR
NO,MODE、 5TAI?T、 LENGT)I、
 HID。
PID) DFSロック制御サブルーチンは、パラメータFH(フ
ァイル・ハンドル)、LOCK  INFO(FLOC
K構造のポインタ(アドレス))、CMD (実行すべ
きプロセス)およびFAS  FLAG (ファイル・
アクセス構造フラッグ))を有する。ファイル・ハンド
ルは、コマンドが実行される対象となるファイルを一義
的に識別するために必要である。LOCK  INFO
は、FLOCK構造と、その中に含まれるファイルに関
するシステム情報を識別するために必要である。CMD
は、すべてのロックが除去されるまで遠隔プロセスを待
たせ、それから指定されたCMDを処理するようにセッ
トされる。0MSフィールドは、アンロツタ、テスト、
セットまたはテスト/セット・コマンドを実行するよう
にセットすることができる。FLOCK構造の11en
および15tartフイールドは、コマンドが適用され
るロック範囲を指定するのに使われる。FAS−FLA
Gは、FULLSYNC同期モードにあるかどうか知る
ため、ファイル・アクセス構造ロック内の同期モードを
調べよとサーバに命令するようにセットされる。ファイ
ルがFULLSYNC同期モードにある場合、サーバは
コマンドを実行する。しかし、そうでない場合は、エラ
ーが戻される。ファイル・アクセス構造フラッグがセッ
トされていない場合は、ファイルは、実行を始める前に
、ファイル・アクセス構造ロックの獲得および検査を行
なわない。この検査によって処理の前に照会が可能とな
り、デッドロックの可能性が回避される。
ファイル・ロッキング構造 LOCKFサブルーチンは、書込み排他特権のためにフ
ァイルをロックまたはアンロックするのにアプリケーシ
ョンが使用する主なインターフェースである。その使用
法を例示するため、このサブルーチンのインターフェー
ス・ソース・コードを下に示す。
1include <SYS/LOCKF、t(>in
t 1ockf(fildes、 function、
 5ize);int filcles、 funct
ion;long 5ize; ロックは、UNIXオペレーティング・システムFCN
TL (2)によりLOCKFと同様の方法でセットま
たは解除するこ七ができる。アプリケーションとLOC
KFサブルーチンおよびFCNTLサブルーチンの間の
外部インターフェースは、UNIXオペレーティング・
システムと本発明で違いはない。ただ、分散型環境をサ
ポートするために間隔が修正されている。
内部の詳細 遠隔ファイルがロックされる場合は、UNIXオペレー
ティング・システムのLOCKFおよびFCNTLシス
テム・コールが中断され、RPCDFS  LOCK 
 C0NTR0Lが実行される。
サーバ・ノードは遠隔プロセス・コールを受は取り、ロ
ック要求を実行する。要求は単一レコード、−組のレコ
ードまたはファイル全体のロックを伴うことがある。次
に、サーバは、クライエント代理i/−FがDFS  
LOCK  C0NTR0LのRPCからの応答を待つ
間に、信号を送ることにより、クライエントが目を覚ま
すように命令する。クライエントはロックの受取りを確
認し、肯定応答を遠隔サーバに送る。サーバは、クライ
エント代理iノードから肯定応答を受は取った後、ロッ
ク・テーブルを更新する。サーバがDFS−LOCK 
 C0NTR0Lの肯定応答の受取りを確認しない場合
、DFS  LOCK  C0NTR0Lはそのロック
をロック・テーブルから除去する。
ファイル・アクセス構造ロック ファイル・アクセス構造ロック、fasロツタは、分散
型ファイル・システム(DFS)でオープン・ファイル
に対するjノードおよび代理iノードの使用を同期する
ために使われる。この同期はデッドロック状況を回避す
るために実行される。デッドロック状態は、iノードお
よび代理iノードがロックされた場合に発生し得る。
スタンドアロンAIXオペレーティング・システムでは
、ファイルFに対するアクセスを必要とするシステム・
コールの実行は、そのファイルに対するシステム・コー
ルの全実行時間中にFに対するiノードをロックするこ
とにより直列化される。DFSでは、ファイルFが遠隔
ノードCでオープンされている場合は、ファイルFを表
わす代理iノードがノードCで作成される。したがって
、2つの資源が関係する。すなわち、ファイルが存在す
るサーバ・ノードにおける特定のファイルに対するiノ
ードと、ファイルがオープンされているクライエント・
ノードにおける代理iノードでアル。クライエントCで
実行されるシステム・コールを直列化するため、各コー
ルの実行時間中ファイルFに対する代理iノードがロッ
クされる。クライエント・キャッシュで使用可能でない
データ・ブロックを読み取るためにサーバに対するアク
セスが必要な場合、ファイルFに対するiノードもロッ
クされる。
サーバにあるファイルFに対するiノードとクライエン
トにあるファイルFに対する代理jノードを各システム
・コールの全実行時間中ロックすると、2つの資源を獲
得する順序が常に同じ順序で実施されない場合、デッド
ロック状況をもたらす可能性がある。一般には、代理i
ノードが最初にロックされ、次に遠隔手順コール(RP
C)を介してサーバがアクセスされ、iノードがロック
される。しかし、上記の順序には幾つかの例外がある。
特定の条件の下で、サーバはiノードをロックし、次に
、代理iノードのロックを必要とするクライエントにR
PCを送ることができる。
第18図に示すように、2つの動作が現在01および0
2を実行している以下の状況のいずれか一方でデッドロ
ックが発生する可能性がある(01は読取り動作、02
はオープン動作である)。
a)01がクライエント・ノードで実行されている。0
1は代理iノードをロックし、読取り動作のためサーバ
でiノードをロックしようとする。
b)02がサーバで実行されている。02はiノードを
ロックし、ファイルをオープンするためにクライエント
・ノードに対してRPCを開始する。
クライエント・ノードでのRPC要求は代理iノードを
待って、それをロックしてから実行される。
両方の動作が実行されており、かつ2つの同じ資源を必
要とし、それぞれ1つの資源を獲得し、かつ他方のロッ
クされた資源を待っているので、デッドロック状態が存
在する。原因を調べるに当たっては、サーバからクライ
エントに対するRPCの実行中にデッドロックが発生す
ることに留意されたい。サーバ上のiノードがまずロッ
クされ、代理iノードをロックしようとする試みがなさ
れる。これは、代理iノードがまずロックされ、次にi
ノードをロックするためにRPCを送る大部分の場合と
は逆である。
上記問題の発生を防ぐため、サーバは、代理iノードを
ロックするためのRPCをクライエントに出す前に、i
ノードをアンロックすることかできる。オープン動作の
実行中にiノードをアンロックすると、上記の問題が解
決される。しかし、そうすると複数のオープン動作また
はクローズ動作あるいはその両方が同時にサーバで行な
われる可能性があるので、オープン・ファイルのための
同期モード変更の管理が複雑になる。第17図に示すよ
うなもう1つの問題が生じる可能性もある。    −
第17図では、10にあるファイルFが、20にあるク
ライエント・ノードC−1内でのただ1つの処理によっ
て、非同期モードでオープンされている。2つの動作が
進行中である。すなわち、20にあるC−1からのクロ
ーズ動作と、40にある別のクライエントC−2からの
、10でと同じファイルFに対する60でのオープン動
作である。
20にあるC−1からのクローズ動作は代理iノード(
使用カウント1を有する)をロックし、50でのrdf
sクローズJ RPCを30にあるサーバに送る。40
にあるC−2からのオープン動作は70でのrdfsオ
ープン」を30にあるサーバに送る。このRPCはサー
バに到着し、20にあるC−1からの50でのrdfs
クローズ」RPCの前に実行される。ファイルFに対す
る同期モードは非同期なので、サーバはiノードをアン
ロックし、80でのrdfs同期モード変更」RPCを
20にあるC−1に送り、10にあるファイルFが全同
期モードに変更されることを要求する。このRPCが2
0にあるC−tに到着し、代理iノードがアンロックさ
れるのを待つ。次に、50でのrdfsクローズJ R
PCがサーバに到着する。10にあるファイルFに対す
るiノードハサーバではロックされないので、クローズ
動作がサーバで実行され、90でのrdfsクローズ肯
定応答J RPCが20にあるC−1に送られる。
90でのrdfsクローズ肯定応答JRPCが20にあ
るC−1に到着すると、代理iノードに関する使用カウ
ントが減分され、使用カウントの値が0になったので、
代理iノードは100で解放される。これにより、同期
モード変更を20にあるC−1に適用するための代理i
ノードは残らない。
この問題に対する解決策は、それを待つ前に同期モード
変更手順に代理iノードの使用カウントを増分させるこ
とである。しかし、この時点では、ファイルFはC−1
でオープンされていす、その同期モードは全同期ではな
いので、この手法はファイル管理システムにとって一層
の管理上の問題をもたらす。それよりも望ましい手法は
新しいロック、すなわちファイルに対するアクセス・リ
ストをアクセスまたは変更する動作を直列化するための
ファイル・アクセス構造ロック(fasロック)を導入
することである。fasロックを使用することにより、
iノードは重要な資源ではなくなる。2つの重要な資源
はクライエント・ノードにある代理iノードとサーバに
あるfasロックである。デッドロックを防ぐには、f
asロックの保持を必要とするクライエント・ノードで
実行中の動作が、RPCがサーバに送られる前に、代理
iノードをアンロックしなければならない。
サーバからクライエントに対してRPCを発生する可能
性がある動作は、サーバでの実行を開始する前に、fa
sロックを獲得しなければならない。
UNIXオペレーティング・システムまたはAIXオペ
レーティング・システム環境における状況の例は以下の
通りである。
遠隔手順コール(RPC): * DFS SET ATTR*DFS l、0OKU
P: DFS CHNG 5YNCMODEサーバ処理
からのシステム・コール: ネ叶EN         : CLO3E*CREΔ
T         * 5TAT*FULLSTAT
       : CHMOD*EXIT 上記UNIXオペレーティング・システムおよびAIX
オペレーティング・システムの動作は以下のvn動作に
対応する。
* vn open        * vn cre
ate*vn close       * vn g
etattr* vn 5etattr      s
’; vn 1ookup二M vn動作実行の一例を以下に考察し、第19図に示す。
動作(オープン)はクライエント・ノードで実行され、
何らかのローカル処理が必要な場合は、通常通り代理i
ノードをロックする。上記に列挙したRPCの1つ(d
fsオーブン)がサーバに送られた場合、RPCが送ら
れる前に、代理iノードがアンロックされる。サーバで
は、RPC要求はfasロツタをロックするか、あるい
はfasロツタが使用中の場合はそれを待ち、次に、フ
ァイルFに対するiノードをロックする。RPC要求が
ローカル・サーバ動作である場合は、実行中のプロセス
はfasロツタを獲得し、次にiノードをロックする。
DFS  CHNG  5YNCMODEまたはDFS
  GET  ATTRRPCがサーバからクライエン
トに送られる場合、RPCが送られる前に、iノードが
アン口・ツクされる。
したがって、サーバは、RPCが送られた後で、読取り
および書込み動作を受諾することができる。
すべてのクライエントからの応答メ・ソセージを受は取
ると、サーバはiノードを口・ツクして、残りのローカ
ル・プロセスを終了する。動作がクライエント・ノード
て開始された場合は、そのクライエントに肯定応答が送
られる。iノードが次にアンロックされ、fasロック
が解除される。
fasロックは、iノードの使用を同期し、デ、ソドロ
ツタ動作を回避する手段を提供する。fas口、ソりは
、ファイルをオープンしているノードに関する情報を含
むファイル・アクセス構造リストに対するアクセスを同
期する。fasロックは、プロセスがファイルをオープ
ンまたはクローズするとき、またはファイル・アクセス
構造リストが照会されているとき、ロックされる。fa
sロックは、ファイルが全同期モードにあるときは、書
込み動作中もロックされる。
iノード・ロックはサーバにあるファイルのデータに対
するアクセスを同期する。iノード・ロックは、サーバ
にあるファイルに対する読取りまたは書込み動作中ロッ
クされる。遠隔手順コールが代理iノード・ロックに対
するロックを必要とする場合、サーバが遠隔手順コール
をクライエントに送る前に、iノード・ロックがアンロ
ックされる。
代理iノード・ロックはクライエント・プロセス内のフ
ァイル・アクセスを同期する。クライエントでの動作が
ファイルにアクセスしている場合、代理iノードはロッ
クされる。クライエントでの動作がfasロツタをロッ
クする場合は、代理iノードがアンロックされる。代理
iノードはまた、遠隔手順コールがクライエントからサ
ーバに送られる前にアンロックされる。
fasロックおよびiノード・ロックの両方がロックさ
れている場合は、iノード・ロックは、サーバがクライ
エントに対して遠隔手順コールを発生する前に、アンロ
ックされる。このため、fasロックおよび代理iノー
ド・ロックがロックできるようになる。これらのロック
は、ロックされたのと逆の順序でアンロックされる。
特定のオペレーティング・システム環境における好まし
い実施例に関して本発明を説明してきたが、当業者なら
気付くように、頭記の特許請求の範囲の精神および範囲
内で、変更を加えることにより、他の様々なオペレーテ
ィング・システムでも本発明を実施することができる。
F0発明の詳細 な説明したように本発明によればファイルに対するアク
セスのリストの変更をロックする構成を採用しているの
で分散型ファイル・アクセスにおけるデッドロックを解
消することができる。
【図面の簡単な説明】
第1図は、本発明による分散型データ処理システムを示
す、第1図と同様の構成図である。 第2図は、本発明をその中で機能するように設計した通
常の分散データ処理システムの構成図である。 第3図は、通常のスタンドアロン・プロセッサ・システ
ムの構成図である。 第4図は、プロセッサ上で走行するアプリケーション・
プログラムが読取りシステム・コールを行なうとき、オ
ペレーティング・システムが実行する各ステップの流れ
図である。 第5図は、本発明をサポートするオペレーティング・シ
ステムによって実行される、ローカル・ノードでファイ
ル操作へのパスをたどるためのシナリオを示す、データ
構造の構成図である。 第6図および第7図は、オペレーティング・システムに
よって実行される、ローカル・ノードでのファイル・マ
ウント操作のシナリオの前後条件を示す、データ構造の
構成図である。 第8図は、第7図に示す分散型ファイル・システム用の
データ構造の構成図である。 第9A図ないし第9F図は、第8図に示すデータ構造の
構成要素の構成図である。 第10図、第11図および第12図は、オペレーティン
グ・システムが実行する、分散型システムのローカル・
ノードおよび遠隔ノードでのファイル・マウント動作の
ための、およびファイルに至るパスをたどるためのシナ
リオを示す、データ構造の構成図である。 第13図は、第7図に示す分散型データ処理システムの
一部分をさらに詳細に示す構成図である。 第14図は、本発明をサポートするオペレーティング・
システムが使用する種々の同期モードを示す状態図であ
る。 第15図は、同期モード動作を示す第13図と同様な構
成図である。 第16図は、分散型ファイル・システムの同期モードの
一例を示す、第14図の状態図と同様な状態図である。 第17図は、2つのクライエント・ノードによるファイ
ルに対するアクセスの制御の流れを示すダイヤグラムで
ある。 第18図は、2つの動作が現在実行されているときのデ
ッドロックを示すダイヤグラムである。 第19図は、クライエントからのオープン要求の実行ス
テップを示すダイヤグラムである。 1・・・・分散型データ処理システム、2A、2B。 2C・・・・ディスク、3・・・・ネットワーク、4A
14B、4C・・・・アプリケーション・プログラム、
5A、5B、5C・・・・ファイル、10A110B1
10C・・・・処理装置、llA111B111C・・
・・オペレーティング・システム、12A112811
2C・・・・サーバ・キャッシュ。 第4図 クライエント サーノ、パ 第10図 ))−フイエンに 舟−八・・

Claims (1)

  1. 【特許請求の範囲】 サーバー・データ処理装置にファイル・データを常駐さ
    せ、複数のクライエント・データ処理装置の複数のプロ
    セスがそのファイル・データをアクセスできるようにし
    た分散型データ処理システムにおいて、 現に上記ファイル・データをアクセスしているデータ処
    理装置に関するリストへのアクセスに一貫性を付与する
    第1のロック手段と、 上記サーバー・データ処理装置上のファイル・データへ
    のアクセスに一貫性を付与する第2のロック手段と、 上記複数のクライエント・データ処理装置のうちの1つ
    におけるファイル・アクセスに一貫性を付与する第3の
    ロック手段とを有することを特徴とする分散型データ処
    理システム。
JP62315454A 1987-02-13 1987-12-15 分散型データ処理システム Granted JPS63201864A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US1490087A 1987-02-13 1987-02-13
US014900 1987-02-13

Publications (2)

Publication Number Publication Date
JPS63201864A true JPS63201864A (ja) 1988-08-19
JPH058455B2 JPH058455B2 (ja) 1993-02-02

Family

ID=21768447

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62315454A Granted JPS63201864A (ja) 1987-02-13 1987-12-15 分散型データ処理システム

Country Status (4)

Country Link
EP (1) EP0278313B1 (ja)
JP (1) JPS63201864A (ja)
BR (1) BR8800610A (ja)
DE (1) DE3850978T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02266461A (ja) * 1989-04-05 1990-10-31 Nec Corp データ引き渡し装置
JPH02309445A (ja) * 1989-05-15 1990-12-25 Internatl Business Mach Corp <Ibm> データ処理システムのクライエント装置のアクセス制御方法、装置およびコンピユータ・プログラム製品
JPH036751A (ja) * 1989-05-15 1991-01-14 Internatl Business Mach Corp <Ibm> フアイル・ロツク方法及び装置

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69032649T2 (de) * 1989-08-01 1999-05-06 Silicon Graphics Inc., Mountain View, Calif. 94039 Dateiveränderungsmonitor für rechner-, betriebs- und dateiverwaltungssysteme
DE10016337B4 (de) * 2000-03-31 2004-05-27 Dis Informationssysteme Gmbh Verfahren und Vorrichtung zur Erzeugung und Verarbeitung von Daten durch einen aktiven Strukturbaum
US7213103B2 (en) 2004-04-22 2007-05-01 Apple Inc. Accessing data storage systems without waiting for read errors
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US7797670B2 (en) 2006-04-14 2010-09-14 Apple Inc. Mirrored file system
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US7657769B2 (en) 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US10614039B2 (en) 2017-04-04 2020-04-07 International Business Machines Corporation Testing of lock managers in computing environments
WO2020231392A1 (en) * 2019-05-10 2020-11-19 Futurewei Technologies, Inc. Distributed virtual file system with shared page cache
US11740977B2 (en) * 2020-01-27 2023-08-29 EMC IP Holding Company LLC Efficient deduplication based file movement for load balancing in a scaled-out backup system
CN115292264B (zh) * 2022-07-27 2026-02-17 苏州元脑智能科技有限公司 一种文件的锁操作方法、装置、设备和存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02266461A (ja) * 1989-04-05 1990-10-31 Nec Corp データ引き渡し装置
JPH02309445A (ja) * 1989-05-15 1990-12-25 Internatl Business Mach Corp <Ibm> データ処理システムのクライエント装置のアクセス制御方法、装置およびコンピユータ・プログラム製品
JPH036751A (ja) * 1989-05-15 1991-01-14 Internatl Business Mach Corp <Ibm> フアイル・ロツク方法及び装置

Also Published As

Publication number Publication date
JPH058455B2 (ja) 1993-02-02
EP0278313A3 (en) 1990-10-31
EP0278313B1 (en) 1994-08-10
DE3850978T2 (de) 1995-03-09
BR8800610A (pt) 1988-09-27
DE3850978D1 (de) 1994-09-15
EP0278313A2 (en) 1988-08-17

Similar Documents

Publication Publication Date Title
US5175852A (en) Distributed file access structure lock
US4887204A (en) System and method for accessing remote files in a distributed networking environment
US5202971A (en) System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
EP0278312B1 (en) Distributed file and record locking
CN107045530B (zh) 一种将对象存储系统实现为本地文件系统的方法
US5001628A (en) Single system image uniquely defining an environment for each user in a data processing system
US5634122A (en) System and method for multi-level token management for distributed file systems
CN106874383B (zh) 一种分布式文件系统元数据的解耦合分布方法
KR101041319B1 (ko) 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한정보 단위의 피어 대 피어 동기화를 위해 충돌 처리를제공하는 시스템 및 방법
KR101120817B1 (ko) 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한 정보의 단위들에 대한 관계 및 계층적 동기화서비스를 제공하는 시스템 및 방법
CN101819577B (zh) 维护文件系统客户端目录高速缓存的方法、系统和装置
US6453354B1 (en) File server system using connection-oriented protocol and sharing data sets among data movers
HU219996B (hu) Kliens számítógép, valamint eljárás annak üzemeltetésére
JPS63201864A (ja) 分散型データ処理システム
US10133744B2 (en) Composite execution of rename operations in wide area file systems
WO2018157602A1 (zh) 一种同步活动事务表的方法及装置
US20140324925A1 (en) Efficient Rename in a Lock-Coupled Traversal of B+Tree
US10628391B1 (en) Method and system for reducing metadata overhead in a two-tier storage architecture
Chen et al. Federation in cloud data management: Challenges and opportunities
JP4580390B2 (ja) ハードウェア/ソフトウェアインターフェイスシステムによって管理可能な情報単位の拡張および継承のためのシステムおよび方法
Vaillant et al. CRDTs for truly concurrent file systems
JPH0991185A (ja) 分散コンピューティングシステム
EP0278314B1 (en) Single system image
Jelić et al. Implementation of Data Management Service Overlay in Distributed Cloud