JP2007018066A - ファイル提供方法、ストレージ装置及びファイル提供プログラム - Google Patents

ファイル提供方法、ストレージ装置及びファイル提供プログラム Download PDF

Info

Publication number
JP2007018066A
JP2007018066A JP2005196247A JP2005196247A JP2007018066A JP 2007018066 A JP2007018066 A JP 2007018066A JP 2005196247 A JP2005196247 A JP 2005196247A JP 2005196247 A JP2005196247 A JP 2005196247A JP 2007018066 A JP2007018066 A JP 2007018066A
Authority
JP
Japan
Prior art keywords
file
data
access
stream
access authority
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
JP2005196247A
Other languages
English (en)
Other versions
JP4659537B2 (ja
JP2007018066A5 (ja
Inventor
Takayoshi Nakamura
隆喜 中村
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 JP2005196247A priority Critical patent/JP4659537B2/ja
Priority to US11/212,665 priority patent/US20070011166A1/en
Publication of JP2007018066A publication Critical patent/JP2007018066A/ja
Publication of JP2007018066A5 publication Critical patent/JP2007018066A5/ja
Priority to US12/538,962 priority patent/US20090300029A1/en
Application granted granted Critical
Publication of JP4659537B2 publication Critical patent/JP4659537B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】
本発明は、アクセス権限に応じてファイルのビューを細かく変化できるファイルシステムを提供する。
【解決手段】
アクセス元のアクセス権限に対応するファイルデータを提供するファイル提供方法であって、ファイルの所定の領域にあるデータ毎にアクセス権限を設定し、アクセス元のアクセス権限を満たしているデータを、所定の組み合わせによって連結し、連結されたデータをアクセス元に提供する。
【選択図】 図1

Description

本発明は、アクセス権限に応じてファイルのビューを細かく変化できるファイルシステムを提供するファイル提供方法、ストレージ装置及びファイル提供プログラムに関するものである。
従来のファイルシステムやファイルサーバによるアクセス管理方法は、各ファイルにユーザのアクセス権限を設定し、そのアクセス権限に応じてファイルのコンテンツ全体のアクセスの可否を管理する。
ファイルのアクセス方法には様々な種類がある。例えば、従来のUNIX(登録商標。以下同じ)の「パーミッション」によるアクセス管理がある。パーミッションは、読み込み(R)、書き込み(W)、実行(X)の三種類のアクセス方法のそれぞれに、許可/拒否を設定する。さらに各アクセス方法に、ユーザアカウント/グループアカウント/その他アカウントを関連付ける。このようにすることによって、ユーザのアクセスが管理される。
また、アクセス方法をより細分化したアクセス管理方法に「ACL」(アクセスコントロールリスト)がある。ACLには様々な種類がある。主なACLには、POSIX ACL、NTFS ACL、NFS ACLがある。例えば、NFS ACLは、書き込み方法に、コンテンツの上書き(WRITE_DATA)、コンテンツの追記書き(APPEND_DATA)、名前つき属性の書き込み(WRITE_NAMED_ATTRS)、基本属性の書き込み(WRITE_ATTRIBUTES)、ACL情報の書き込み(WRITE_ACL)、所有者の権限変更(WRITE_OWNER)の6つの方法を持ち、アクセス権限を細分化して管理できる(非特許文献1参照。)。
また、前述の方法以外に、WORM(Write Once Read Many)がある。WORMは、一度書き込みを実行したらその後は二度と編集できない権限である。現在WORMは標準化されておらず、各社でプロプライエタリとなっている。
また、アクセス権限を、コンテンツ全体ではなくコンテンツの部分的な範囲に粒度を細分化する方法がある。例えば、文章をセキュリティーレベル単位で領域を分割し、領域毎にパスワードによって保護する文章内領域アクセス制御方式が開示されている(特許文献1参照。)。
また、XMLのような構造化言語を用いて、アクセス権限を細かく管理したりアクセス権限によってファイルの見せ方を変える方法が開示されている。具体的には、構造化文書データベースからその論理構造に基づき所望の構成要素を検索するための検索要求文を用いて検索した結果得られた複数の構成要素を含む検索結果文書を表示した表示画面上の任意の表示領域が指定されたとき、その指定された表示領域に表示されているデータに対応する検索結果文書中の第1の構成要素を特定し、この第1の構成要素に関連付けられた検索要求文中の第2の記述部分の記述に基づき、構造化文書データベース中の第1の構成要素に対応する第2の構成要素を検索して、この第2の構成要素に対し、少なくとも該第2の構成要素にアクセスが制限されるユーザの範囲を定めてアクセス権限を設定する(特許文献2参照。)。
また、ファイルの仮想化という意味では、ファイルを細かく分割し、それを一つのファイルと見せるためのメタファイルを記述する(特許文献3参照。)。具体的には、一つの論理ファイルを複数のI/Oノード上の二次記憶装置に分割して格納し、ファイルの入出力を並行して行う。この論理ファイルを表すメタファイルを用意し、これによって論理ファイルと各I/Oノード上に格納されているファイルの実体とを結び付ける。このメタファイルを、全ての計算ノードから参照可能な二次記憶装置上に設ける。論理ファイルの生成時に、分割する数、分割するデータ長を指定することができるようにする。
また、別のファイル仮想化方法としては、HP−UXの「cdf」(context dependent files)がある(非特許文献2参照。)。これによると、コンテキスト情報として登録された文字列とcdfとして生成されたディレクトリ下にあるファイルのファイル名とがマッチしたものを実体として選択することによって、ファイルの仮想化を実現している。
なお、データベースにもアクセス権限によってテーブルの見せ方を変えることができるビューという機能がある。
特開平1−243172号公報 特開2003−281149号公報 特開平10−214257号公報 http://www.ietf.org/rfc/rfc3530.txt?number=3530 http://www.informatik.uni-frankfurt.de/doc/man/hpux/cdf.4.html
個人情報保護法の制定や情報漏えいによる企業ブランドイメージ失墜などの社会的背景から情報セキュリティーに関する取り組みが重要となっている。一方、積極的に情報発信や情報共有をして企業を活性化させようという試みもある。これらはトレードオフの関係にあり、効果的な情報共有を実現しつつ機密情報へのアクセスを部外者から遮断するための取り組みが必要となる。
従来のファイルシステムでは、前述のパーミッションやACLによる管理方法を用いることによって、ファイル全体へのアクセスの可否を設定する。すなわち、アクセス制限はファイル単位程度の粒度である。従って、ファイルの中身(コンテンツ)の一部を部分的に公開(アクセス許可)したい場合には、オリジナルとは異なるファイルを作成する必要がある。すなわち、オリジナルのコンテンツを元に、情報を劣化させたコンテンツのファイルを作成し、それを公開する。この場合、コンテンツのメンテナンス性が非常に悪化してしまう。すなわち、オリジナルコンテンツのファイルに修正を加えた場合、情報を劣化させたコンテンツのファイルにも同様の修正を加える必要がある。また、ファイル数が公開レベルに応じて増えるため、ファイルの管理コストも増大する。
また、映像コンテンツにおいて、視聴者毎に異なった映像を提供したいという要求がある。この場合は、ファイルを分割して、視聴者毎に適切な分割ファイルを選択してそれを結合することによって実現できる。ただしこの場合は、上位のアプリケーションのプログラムやスクリプトによって、分割されたファイルをどのように選択するかを決定する必要がある。また、XML等の構造化言語によってファイルデータ内でのアクセス制限を実現する方式では、上位アプリケーションがXMLなどの構造化言語を理解する必要がある。そのため、従来環境からの移行性はよくない。
このように、アクセス権限に応じてコンテンツのビューを部分的又は全体的に変える方法は、ファイルの管理コストが増大する。また、コンテンツのメンテナンス性が低下する。また従来ファイルシステム環境からの移行性がよくないといった課題があった。
この問題について具体的に説明する。
図20及び図21は、従来のファイルシステムによるファイルの提供方法の一例を示す説明図である。
図20は、三種類のテキストファイルの例を示している。各々のファイルの内容は類似しているが一部分が異なっている。何れも今期の予算に関する内容である。ファイルAは予算の具体的な金額を含む。ファイルBは予算の具体的な金額ではなく、先記からの増減のみを含む。また、ファイルCは予算の内容は含まず、■でマスクされる。この例の場合、「○○部の今期の予算は、」という部分と「円です。」という部分は各ファイルで共通である。ファイルBの内容はファイルAの情報を劣化させたものである。同様にファイルCの内容はファイルA及びBの情報をさらに劣化させたものである。
図21は、図20に示す3つのファイルを従来のファイルシステムに格納したときのファイルシステムボリュームの構造を示す。
メタデータ301aはファイルAに関する情報を示す。なお、メタデータは、各種属性を格納する領域、及び、どのファイルシステムブロックにデータが格納されているかを示す領域(エクステント)を含む。このエクステントは、先頭オフセット、ブロック数、ブロック番号を含む。
ファイルAは、ファイルのデータ容量が少ないので一つのファイルシステムブロックに格納が可能である。そのため、ブロック数が1に設定されている。ブロック番号は0x122を指しており、ファイルAの実体であるユーザデータは、先頭オフセット0からブロック番号0x122に格納されていることを示す。ブロック番号0x122のユーザデータ302aには「○○部の今期の予算は、100M円です。」という文字列が格納されている。
同様に、ファイルBは、メタデータ301bの含む内容によって、ユーザデータ302bが示されている。同様に、ファイルCは、メタデータ301cの含む内容によって、ユーザデータ302cが示されている。
なお、メタデータ301a、301b、301cの各種属性は、そのファイルのアクセス権限を含む。例えば、ファイルAには会社役員に対応するユーザ又はグループのみアクセス可能である。また、ファイルBには管理職に対応するユーザ又はグループのみアクセス可能である。また、ファイルCには社員に対応するユーザ又はグループのみアクセス可能に設定する。
このように、従来のファイルシステムでは、ファイルの内容が類似していたとしても、アクセス権限毎にファイルの内容を異ならせるためには、ファイルの内容を異ならせる必要があった。この例では、三つのデータを作成して異なるファイルとして格納し、それぞれに適切なアクセス権限の情報を付与する。そのため、アクセス権限毎に異なるファイルを格納する必要がある。
本発明はこのような問題点に鑑みてなされたものであり、アクセス権限に応じてファイルのビューを細かく変化できるファイルシステムを提供するファイル提供方法、ストレージ装置及びファイル提供プログラムを提供することを目的とする。
本発明は、アクセス元のアクセス権限に対応するファイルデータを提供するファイル提供方法であって、ファイルの所定の領域にあるデータ毎にアクセス権限を設定し、アクセス元のアクセス権限を満たしている前記データを、所定の組み合わせによって連結し、前記連結されたデータをアクセス元に提供することを特徴とする。
本発明によると、高度なアクセス管理と柔軟な情報共有が両立できる。また、ファイルの管理コストを低減し、コンテンツのメンテナンス性を向上する。さらに、従来のファイルシステム環境からの移行性を保ったまま、ユーザに応じたファイルビューを提供することができる。
以下に、本発明の実施の形態を図面を参照して説明する。
図1は、本発明の第1の実施の形態の計算機システムによって実現されるファイルシステムの概要図である。
ファイルシステム101は、ホスト計算機10からの要求を受けてファイルシステムボリューム109に格納されているファイルへのアクセスを提供する。
ファイルシステム101は、要求受付部110、要求処理部111、ストリーム管理部102、カレントオフセット107、I/O発行部108を含む。
ファイルシステムボリューム109は、ユーザデータ405及びメタデータ410を格納する。
要求受付部110は、ホスト計算機10から要求を受信すると、その内容を解析して要求処理部111にシステムコールを発行する。要求処理部111は、要求受付部110からのシステムコールを処理する。要求処理部111の処理するシステムコールは、具体的には、従来のファイルシステムが備え、本発明によって改良されたシステムコールである「open」、「read」、「write」、「seek」と、本実施の形態のファイルシステムが備える「insert」、「cut」、「setracl」、「getracl」、「switch」、「attach_stream」、「detach_stream」とを含む。これらのシステムコールの処理の詳細は後述する。
なお、この他にも従来のファイルシステムでサポートされているclose等のシステムコール等をサポートするが、本発明の概要には関わらないため省略する。
ストリーム管理部102及びI/O処理部108は、ファイルシステムボリューム109とのインターフェースである。
カレントオフセット108は、現在ファイルのどの位置に対してアクセスするかを示す識別子である。これはファイルシステムの基本機能であるファイルディスクリプタによって設定される。カレントオフセット108はファイルのopenシステムコール単位で格納される。
なお、本実施の形態では、ファイルのopenシステムコール単位で格納する情報をさらに持つ。具体的には、ストリーム管理部102に、どのストリーム番号からアクセス権限をチェックするかを指定するデフォルトストリーム番号103と、どのストリーム番号に対して現在アクセスしようとしているかを示すカレントストリーム番号と、どのシーケンス番号とそのどのオフセットに対し現在アクセスしようとしているかを示すカレントシーケンス番号105とカレントシーケンスオフセット106を含む。
ファイルシステムボリューム109は、ファイルシステム101が操作するデータが格納されている。このデータは、メタデータ401及びユーザデータ405を含む。
メタデータ401は、ファイルの管理情報を含む。ユーザデータ405は、メタデータによって示されるファイルの実体である。なお、図1では簡単のためファイルシステムボリューム109に一つのファイルだけが格納されている状態を示す。なお、実際には複数のファイルを格納することができる。
図2は、ファイルシステム101を実現する計算機システムの構成ブロック図である。
ストレージ装置2007は外部ネットワーク2008を介してホスト計算機10と接続される。
ストレージ装置2007は、プロセッサ2001と、I/O制御部2003と、主記憶2005と、ネットワークコントローラ2002と、ディスクコントローラ2004と、補助記憶2006とを含む。これら各構成は一又は複数含まれていてもよい。
ネットワークコントローラ2002は、外部ネットワーク2008を介してホスト計算機10とデータを送受信する。
主記憶2005は各種プログラムを保持する。このプログラムをプロセッサ2001が読み込んで実行することによって、プログラムに規定された処理が実行される。より具体的には、プロセッサ2001がプログラムを実行することによって、ファイルシステム1/O発行部108の各処理が実現される。
また、主記憶2005は、要求受付部110、要求処理部111、ストリーム管理部102及びI/O発行部108によって処理される各種情報を保持する。例えば、カレントオフセット108が格納される。また、主記憶2005は、ファイルシステムボリューム109のデータのキャッシュメモリとして機能する。
I/O制御部2003は、ストレージ装置2007の各部の送受信するデータを仲介する。ディスクコントローラ2004は、補助記憶2006に格納されたデータを読み書きする。
補助記憶2006は、ファイルシステムボリューム109を保持する。補助記憶2006は、例えば一又は複数の磁気ディスク装置を含み、この一又は複数の磁気ディスク装置上にファイルシステムボリューム109が構成される。
次に、本実施の形態のファイルシステムについて説明する。
図3は、ファイルシステムボリューム109の具体的な内容の説明図である。
この図は、前述した図20に示したコンテンツを、本実施の形態のファイルシステムによって提供する場合の管理構造を示す。
本実施の形態では、クライアントに提供するファイルを「ストリーム」という単位で管理する。ストリームとは、ファイルをいくつかのブロック毎に分割し、それを所定の順序に従って連結したものである。このストリームに関する情報は、メタデータ401に格納される。
メタデータ401は、各種属性401a、範囲指定アクセス制御402、ストリームアクセスプライオリティ403、デフォルトストリームルール404及びエクステント420を含む。
各種情報401aは、従来のファイルシステムと同様に、ファイル単位のアクセス権限や、ファイル名、ファイル長さ等を保持する。
範囲限定アクセス制御402は、どのストリームのどの範囲にどのユーザのアクセスを許可するかを管理するための情報を保持する。
ストリームアクセスプライオリティ403は、アクセス権限を確認する場合に用いられる情報を保持する。具体的には、ファイルシステム101は、アクセス権限をチェックする際に、このストリームアクセスプライオリティ403を参照して、どのストリーム番号から権限をチェックするかを決定する。
デフォルトストリームルール404は、ストリームアクセスプライオリティ403によって優先して権限のチェックが実行されるデフォルトストリームを設定するための情報を保持する。
エクステント420は、そのメタデータ401によって示されるファイルの構造に関する情報を保持する。具体的には、エクステント420は、ファイルのストリーム番号、シーケンス番号、サブシーケンス番号、バイト数及びブロック番号を含む。シーケンス番号及びサブシーケンス番号は、メタデータ401によって示されるファイルの中のどの位置のデータであるかを相対的に示す指標である。
このメタデータ401によって、次のようにファイルが示される。
ストリーム番号が0のものをメインストリームと呼ぶ。ストリーム番号が1以上であるものをサブストリームと呼ぶ。メインストリームは、シーケンス番号及びサブシーケンス番号によって示されるデータの主となる構造を示す。サブストリームは、メインストリームのうちサブストリームに含まれる同一のシーケンス番号の代替となる。
より具体的には、[ストリーム番号−シーケンス番号−サブシーケンス番号]の組によって一つのデータが示される。そして、ストリーム番号が0のデータをシーケンス番号順に連結したものが、メインストリームに対応するビューとなる。
図3の例では、[0−1−1]と、[0−2−1]と、[0−3−1]とのデータを連結したものが、メインストリームに対応するビューとなる。これらは、それぞれブロック番号0xf01、ブロック番号0xf02及びブロック番号0xf11のデータに対応する。このデータを連結したものが、図20のファイルAに対応するビューとなる。
また、ストリーム番号が1の場合は、メインストリームと同じシーケンス番号であるシーケンス番号2とサブシーケンス番号1とによって示されるデータが、メインストリームの代替となる。従って、[0−1−1]と、[1−2−1]と、[0−3−1]と、のデータを連結したものが、サブストリーム1に対応するビューとなる。これは図20のファイルBに対応するビューとなる。
同様に、[0−1−1]と、[2−2−1]と、[0−3−1]と、のデータを連結したものが、サブストリーム2に対応するビューとなる。これは図20のファイルCに対応するビューとなる。
このようにすることによって、図20に示す三つのコンテンツは、ファイルとしては一つになる。このファイルは、メタデータ401と、断片化されたユーザデータ405a、405b、405c、405d、405eとから構成される。
図4は、範囲限定アクセス制御402の詳細の説明図である。
範囲限定アクセス制御402は、ID種別4021、ID番号4022、ストリーム番号4023、シーケンス番号4024及び権限種類4025の各フィールドを含む一又は複数のエントリから構成されるリストである。
ID種別4021は、ID番号フィールドの値がユーザIDのものかグループIDのものかを示す識別子である。
ID番号4022は、ユーザやグループ毎に割り振られたユニークな番号であり、その値でどのユーザ又はどのグループに対するアクセス制御なのかを示す。なお、ID番号4023は、番号ではなくユーザ名や、グループ名に相当する文字列等の識別子を格納してもよい。
ストリーム番号4023及びシーケンス番号4024は、そのエントリが、どの範囲、すなわち、どのストリーム番号とどのシーケンス番号とに対するアクセス制御であるかを示す。なお、範囲を示すために、シーケンス番号ではなくファイルオフセットを格納してもよい。
権限種類4025は、読み込み権限(R)や書き込み権限(W)等の権限の種類を示す識別子である。図4では簡単のため二種類の権限しか示していないが、これ以外の種々の権限、例えばWORM権限等を格納してもよい。
ファイルシステム101は、この範囲限定アクセス制御402を参照することによって、対応するストリームのアクセス権限を取得できる。
図5は、ストリームアクセスプライオリティ403の詳細の説明図である。
ストリームアクセスプライオリティ403は、エクステント420に示されるストリームを参照する際に、アクセス権限をチェックする順位を示す。
図5の例では、ファイルシステム101は、ストリーム0、ストリーム1、ストリーム2の順でアクセス権限をチェックする。
図6は、デフォルトストリームルール404の詳細の説明図である。
デフォルトストリームルール404は、条件4041とデフォルトストリーム4042とを含む。
ファイルシステム101は、このデフォルトストリームルール404を参照して、条件4041に合致する場合は、デフォルトストリーム4042に示されたストリームをアクセス対象ストリームに設定する。
図6の例において、第一番目のエントリは、「client1」というクライアント名からのアクセスがあった場合は、デフォルトストリームを「1」に設定する。また、第二番目のエントリは、アクセス時間が10時〜22時の間であった場合は、デフォルトストリームを「2」に設定する。また、第三番目のエントリは、「smbd」というプロセス名からのアクセスがあった場合は、デフォルトストリームを「2」に設定する。
次に、本実施の形態のファイルシステム101が提供するシステムコールを説明する。
図7は、attach_streamシステムコールの処理のフローチャートである。
attach_streamシステムコールは、既存のファイルに新しいストリームを追加(アタッチ)する。ファイルにストリームを追加することによって、アクセス権限に対応するビューが設定可能となる。
attach_streamシステムコールは、開始オフセット及び終了オフセットを引数にとる。正常終了の場合は、アタッチできたストリーム番号が戻り値となる。異常終了の場合は、負値のエラー番号が戻り値となる。
ホスト計算機10等からattach_stream要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にattach_streamシステムコールを発行する。要求処理部111が、このattach_streamシステムコールを処理する(S801)。
まず、要求処理部111は、引数によって指定された開始オフセットと終了オフセットとの差を算出し、その差が少なくとも1バイト以上離れているか否かを判定する(S802)。
開始オフセットと終了オフセットとの差が0バイト又は負値である場合は、ストリームを追加できない。そのため、S805に処理を移し、要求受付部110にエラーを発行して処理を終了する。
開始オフセットと終了オフセットとの差が少なくとも1バイト以上離れている場合は、要求処理部111は、アタッチしようとしている開始オフセットの直後のストリーム数をチェックする(S803)。
ストリーム数が2以上である場合は、S804に処理を移す。ストリーム数が1の場合はS806に処理を移す。
S804では、要求処理部111は、引数によって指定された開始オフセット及び終了オフセットが既にアタッチされている他のストリームのアタッチ開始ポイント及びアタッチ終了ポイントと一致しているかをチェックする。
既存のアタッチ開始ポイント及びアタッチ終了ポイントと一致していない場合は、S805に処理を移してエラーを要求受付部110に発行して処理を終了する。既存のアタッチ開始ポイント及びアタッチ終了ポイントと一致する場合は、S808に処理を移す。
S806では、要求処理部111は、引数の終了オフセットが次の他ストリームのアタッチ開始ポイントを超えたか否かをチェックする。
次の他のストリームのアタッチ開始ポイントを超えている場合は、S805に処理を移してエラーを要求受付部110に発行して処理を終了する。次の他のストリームのアタッチ開始ポイントを超えていない場合はS807に処理を移す。
以上の処理によって、ストリームをまたがったアタッチをエラーとする。また、ストリームの開始ポイント及び終了ポイントに一致していないアタッチもエラーとする。
S807では、要求処理部111は、メインストリーム、すなわち、ストリーム番号が0であるデータに対して次のような処理を実行する。
まず、要求処理部111は、メインストリームを、(1)開始オフセット以前の領域、(2)開始オフセットから終了オフセットまでの領域、(3)終了オフセット以降の領域、の三つにブロックを分割する。(1)及び(3)は、既にブロックが分割されている状況もあるので、その場合には領域は四つ以上に分割される。そして、分割されたそれぞれの領域に適切なシーケンス番号を割り振る。この処理によって(2)に新しくシーケンス番号が割り当てられる。そのため、(3)の領域に対するシーケンス番号のずれを補正する。そして、これらの変更をメタデータ401に反映する。そして、S808に処理を移す。
S808では、要求処理部111は、該当の領域に対する最も若い(小さい)ストリーム番号を取得する。そして、エクステント420にエントリを追加する。このエントリは、取得したストリーム番号、適切なシーケンス番号及び適切なシーケンス番号を含む。さらに、サブシーケンス番号が1、バイト数が0である。
次に、S809では、要求処理部111は、ストリーム番号を戻り値として戻し、attach_streamシステムコールを終了する。
図8は、detach_streamシステムコールの処理のフローチャートである。
detach_streamシステムコールは、ファイルに設定されたストリームを削除する。
detach_streamシステムコールは、ストリーム番号及びシーケンス番号を引数にとる。正常終了の場合は、アタッチできたストリーム番号が戻り値となる。異常終了の場合は、負値のエラー番号が戻り値となる。なお、シーケンス番号の代わりに開始オフセット及び終了オフセット引数としてもよい。
ホスト計算機10等からdetach_stream要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にdetach_streamシステムコールを発行する。要求処理部111が、このdetach_streamシステムコールを処理する(S901)。
まず、要求処理部111は、引数によって与えられたストリーム番号とシーケンス番号との組み合わせが、メタデータ401のエクステント420のエントリに存在するか否かをチェックする(S902)。
エクステント420に当該エントリが存在しない場合はS903に処理を移し、エラーを要求受付部110に発行して処理を終了する。
エクステント420に当該エントリが存在する場合は、S904に処理を移し、該当するシーケンス番号に対応する領域のデータブロックを開放する。
次に、要求処理部111は、該当するシーケンス番号に対応する範囲限定アクセス制御402のエントリを削除する(S905)。
次に、要求処理部111は、該当のシーケンス番号のエクステントエントリを削除する(S906)。
次に、要求処理部111は、エントリ削除後の該当の領域のストリーム数が1であるか否かをチェックする(S907)。
ストリーム数が1でない、すなわち2以上である場合は、処理を終了する(S909)。ストリーム数が1である場合は、S908に処理を移し、終了オフセット以降の領域に対するシーケンス番号のずれを補正する。すなわち、シーケンス番号が一つなくなった分のシーケンス番号を補正する。そしてこの変更をメタデータ401に反映する。ここでは、エクステント420と範囲限定アクセス制御402の両方に対して反映する。反映が終了すると、処理を終了する(S909)。
図9は、show_streamシステムコールの処理のフローチャートである。
show_streamシステムコールは、現在ファイルに設定されているストリームをクライアントに表示する。
ホスト計算機10等からshow_stream要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にshow_streamシステムコールを発行する。要求処理部111が、このshow_streamシステムコールを処理する(S1001)。
要求処理部111は、show_streamシステムコールを受けると、ストリーム番号、シーケンス番号、そのシーケンス番号のアタッチ先のメインストリームの開始オフセット及び終了オフセットを、全ての組み合わせについて戻り値として返す(S1002)。そして、処理を終了する(S1003)。
図10は、setraclシステムコールの処理のフローチャートである。
setraclシステムコールは、範囲限定アクセス制御402に新しい範囲限定アクセス制御情報エントリを追加する。
setraclシステムコールは、ストリーム番号、シーケンス番号、ユーザ若しくはグループID及び設定したいアクセス権限を引数にとる。正常終了の場合は、0が戻り値となる。異常終了の場合は、負値のエラー番号が戻り値となる。
なお、シーケンス番号の代わりに開始オフセット及び終了オフセットを引数としてもよい。
ホスト計算機10等からsetracl要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にsetraclシステムコールを発行する。要求処理部111が、このsetraclシステムコールを処理する(S1101)。
まず、要求処理部111は、引数によって指示されたストリーム番号とシーケンス番号との組み合わせが、メタデータ401のエクステント420に存在するか否かをチェックする(S1102)。
エクステント420に当該ストリームが存在しない場合は、S1103に処理を移し、エラーを要求受付部110に発行して処理を終了する。
エクステント420に当該ストリームが存在する場合は、S1104に処理を移し、引数で与えられた内容に従って、範囲限定アクセス制御402に新たに範囲限定アクセス制御情報のエントリを追加する。そして、処理を終了する(S1105)。
図11は、geraclシステムコールの処理のフローチャートである。
getrarcシステムコールは、範囲限定アクセス制御のエントリの内容を出力する。
ホスト計算機10等からgetracl要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にgetraclシステムコールを発行する。要求処理部111が、このgetraclシステムコールを処理する(S1201)。
要求処理部111は、getraclシステムコールを受けると範囲限定アクセス制御402の全てのエントリの内容を、戻り値として返す(S1202)。そして、処理を終了する(S1203)。
図12は、openシステムコールの処理を示すフローチャートである。
openシステムコールは、ファイルにアクセスする前段階の処理であり、そのファイルをアクセス可能状態に設定する。
本実施形態のopenシステムコールは、従来のファイルシステムに用いられるopenシステムコールに、アクセス権限に関する処理を追加したものである。そのため、従来のファイルシステムに用いられるopenシステムコールと互換性がある。
openシステムコールは、従来にもあったパス名、フラグに加え、デフォルトストリーム番号を引数にとる。ファイルディスクリプタ及びカレントストリーム番号が戻り値となる。
ホスト計算機10等からopen要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にopenシステムコールを発行する。要求処理部111が、このopenシステムコールを処理する(S1601)。
まず、要求処理部111は、従来のopen処理を実行する。具体的には、アクセス権限チェック、パス名検索、open毎に用意する必要のある構造体やファイルディスクリプタの生成などを実行する(S1602)。
次に、要求処理部111は、引数にデフォルトストリーム番号が指定されているか否をチェックする(S1603)。
デフォルトストリーム番号が指定されている場合は、S1604に処理を移し、引数に指定されたストリーム番号をデフォルトストリームに設定する。そして、S1608に処理を移す。
引数にデフォルトストリーム番号が指定されていない場合は、S1605に処理を移し、メタデータ401のデフォルトストリームルール404にルールの指定があるか否かをチェックする。
ルールの指定がある場合は、S1606に処理を移す。S1606では、要求処理部111は、デフォルトストリームルール404に指定された条件をチェックする。
図6に示したデフォルトストリームルール404の例では、特定のクライアント(client1)からのアクセスである場合はデフォルトストリームを1に設定する。また、ある特定の時間(10時〜22時)でのアクセスである場合はデフォルトストリームを2に設定する。また、ある特定のプロセス名(smbd)からのアクセスである場合はデフォルトストリームを2に設定する。
一方、ルールの指定がない場合は、S1607に処理を移す。S1607では、要求処理部111は、デフォルトストリーム番号を0に設定する。
以上の処理によって、要求処理部111は、デフォルトストリームルール404の条件に合致した場合は、その条件に指定されたデフォルトストリームを設定する。条件に合致するものがない場合は、デフォルトストリーム番号を0に設定する。すなわち、openシステムコールに係るファイルは、何れかのデフォルトストリーム番号が設定される。
次に、要求処理部111は、デフォルトストリーム、ストリームアクセスプライオリティの順に、オフセット0でのアクセス許可があるかを順次チェックする(S1608)。そして、アクセス許可のあるストリームがあるかを判定する(S1609)。
アクセス許可のあるストリームがある場合はS1611に処理を移し、アクセス許可のあるストリームがない場合は、S1610に処理を移して、エラーを要求受付部110に発行して処理を終了する。
S1611では、要求処理部111は、最初に見つかったアクセス許可のあるストリームをカレントストリームに設定する。また、このときカレントオフセット107、カレントシーケンス番号105、カレントシーケンスオフセット106を設定する。その後openシステムコールの処理終了する(S1612)。なお、処理の終了の際は、ファイルディスクリプタを戻り値として、カレントストリームを引数として戻す。
このS1608の処理を具体的に説明する。
デフォルトストリーム番号が1に設定されていて、ユーザIDが5、グループIDが2の属性を持つユーザからopen要求アクセスがあったとする。まず、要求処理部111は、範囲限定アクセス制御402を参照して、デフォルトストリームであるストリーム1にそのユーザのアクセス権限があるかどうかをチェックする。図4に示す範囲限定アクセス制御402では、そのユーザに対して、ストリーム番号1でオフセット0(すなわちシーケンス番号が1)を許可するエントリは存在しない。そのため、アクセスは拒否される。そこで、次に、要求処理部111は、ストリームアクセスプライオリティ403を参照して、アクセス権限をチェックする。図5に示すストリームアクセスプライオリティ403の先頭にはストリーム0が指定されている。そこで、要求処理部111は、そのユーザがストリーム0でオフセット0に対してアクセス権限があるかどうかを、範囲限定アクセス制御402を参照してチェックする。ここで、4エントリ目にグループIDが2のユーザは、ストリーム番号0、シーケンス番号1の権限は「R」、すなわち読み込みが許可されている。そこで、要求処理部111は、アクセス許可のあるカレントストリームを0に設定する。
なお、例えば、ユーザIDが6、グループIDが10の属性を持つユーザからopen要求があった場合は、オフセット0に対するアクセス権限がないためエラー終了する。
図13は、insertシステムコールの処理のフローチャートである、
insertシステムコールは、ファイルにデータを挿入する。insertシステムコールは、ファイルディスクリプタ、挿入するバッファ、そのバッファのサイズ、及び、挿入データがカレントオフセットの左であるか右であるかを示すフラグを引数にとる。なお、このフラグはシーケンス番号の切り替わりポイントでのみ有効となり、省略した場合はカレントオフセットの右に挿入される。正常終了の場合は、挿入できたサイズが戻り値となる。異常終了の場合は、負値のエラー番号が戻り値となる。
要求処理部111は、カレントストリーム番号とカレントシーケンス番号とカレントシーケンスオフセットが示す箇所とを用いて、データを挿入する。
ホスト計算機10等からinsert要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にinsertシステムコールを発行する。要求処理部111が、このinsertシステムコールを処理する(S1301)。
まず、要求処理部111は、データを挿入しようとしているオフセットがファイルシステムブロックのアラインに合致しているか否かをチェックする(S1302)。
データの挿入オフセットとアラインとが合致している場合はS1304に処理を移す。一方、アラインに合致していない場合、すなわち、異なるファイルシステムブロックをまたがった挿入である場合は、S1303に処理を移す。
S1303では、要求処理部111は、挿入オフセットを含んだエクステントエントリについて、領域を新しく確保し、挿入オフセットからそのエクステントエントリの終了オフセットまでのデータを新しく確保した領域にコピーする。この際、新しく確保した領域の先頭からコピーする、すなわちアラインを合わせてコピーする。そして、挿入オフセット以降にコピーされた部分に対応するエクステントエントリを追加する。
次に、要求処理部111は、挿入オフセットからその挿入オフセットを含むエクステントエントリの示すディスクブロックの最後まで、挿入データを上書きする(S1305)。
次に、要求処理部111は、挿入するデータが、全て、エクステントエントリによって示されるブロックに書き込めたか否かをチェックする(S1306)。全てのデータが書き込めた場合は、S1307に処理を移し、エクステントエントリによって示されるブロックのうち、未使用の領域を開放する。また、ブロックの開放の有無にかかわらず、エクステントエントリのバイト数を、現在保持している有効なデータのバイト数に更新する。
全てのデータが書き込めなかった場合は、S1308に処理を移し、書き込めなかった残りのデータに対応するブロックを新たに確保する。そして、新しく確保したブロックにデータを書き込む。そして、対応するエクステントエントリを追加する。
S1302において、データ挿入オフセットとファイルシステムブロックのアラインとが合致した場合は、S1304に処理を移す。S1304では、要求処理部111は、まず、挿入オフセットを含むエクステントエントリを二つのエントリに分割する。そして、挿入データのサイズに相当するブロックを新たに確保し、確保されたブロックにデータを書き込む。また、新たに確保したブロックに対応するエクステントエントリを追加する。
以上の処理によって挿入データが書き込まれる。
その後、要求処理部111は、挿入オフセット以降のエクステントエントリについて、サブシーケンス番号を適切に更新する(S1309)。例えば、エクステントエントリが一つ追加された場合は、以降のエクステントエントリのサブシーケンス番号を、各々1だけ加算する。
次に、要求処理部111は、カレントオフセットに挿入データのバイト数を加算する(S1310)。このとき、カレントシーケンスオフセットも同様に更新する。
その後、要求処理部111は、挿入に成功したバイト数を戻り値として返し、insertシステムコールの処理を終了する(S1311)。
図14は、cutシステムコールの処理のフローチャートである。
cutシステムコールは、ファイルデータの一部分を切り詰める。cutシステムコールは、ファイルディスクリプタ、切り詰める長さを引数にとる。戻り値は切り詰めに成功した長さである。
ホスト計算機10等からcut要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にcutシステムコールを発行する。要求処理部111が、このcutシステムコールを処理する(S1401)。
まず、要求処理部111は、切り詰め開始オフセット(カレントオフセット)と、切り詰め終了オフセット(カレントオフセットに切り詰める長さを加算した値)とが同じシーケンス番号であるかをチェックする(S1408)。
切り詰め開始オフセットと切り詰め終了オフセットとが同一のシーケンス番号でない場合は、そのような切り詰めは不可能であるので、S1409に処理を移し、エラーを要求受付部110に発行して処理を終了する。
切り詰め開始オフセットと切り詰め終了オフセットとが同一のシーケンス番号の場合は、S1402に処理を移す。
S1402では、要求処理部111は、切り詰め終了オフセット以降の同一エクステントエントリのデータを、切り詰め開始オフセット(カレントオフセット)以降のエクステントエントリのブロックにコピーする。
次に、要求処理部111は、全てのデータがコピーできたかをチェックする(S1403)。
全てのデータがコピーできた場合は、要求処理部111は、そのエクステントエントリのうち使用されていないディスクブロックを開放する(S1404)。このとき、ディスクブロックの開放の有無にかかわらず、エクステントエントリのバイト数を更新する。
一方、全てのデータがコピーできなかった場合は、要求処理部111は、書き込めなかった残りのデータに対応するブロックを新たに確保する。そして、新たに確保したブロックに残りのデータを書き込む(S1405)。このとき、新たに確保したブロックに対応するエクステントエントリを追加する。
S1404又はS1405の処理が終了した後、要求処理部111は、cut終了オフセット以降のエクステントエントリについて、次のシーケンス番号になるまでサブシーケンス番号を適切に更新する(S1406)。その後、切り詰めたバイト数を戻り値として返し、cutシステムコールの処理を終了する(S1407)。
図15は、writeシステムコールの処理のフローチャートである。
本実施の形態のwriteシステムコールの処理は、他のストリームとの連続性への影響を避けるため、シーケンス番号を超えた書き込みを実行しない。
writeシステムコールの引数は、従来のwriteシステムコールの引数と同様で、ファイルディスクリプタ、バッファ及び書き込みサイズを引数にとる。戻り値は、正常終了の場合は、成功した書き込みサイズが戻り、異常終了の場合は、負値のエラー番号が戻る。
ホスト計算機10等からwrite要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にwriteシステムコールを発行する。要求処理部111が、このwriteシステムコールを処理する(S1501)。
まず、要求処理部111は、書き込みの範囲が、シーケンス番号の切り替わる部分をまたがっているか否かをチェックする(S1502)。シーケンス番号をまたがっていない場合は、S1503に処理を移し、従来の上書きwrite処理を実行する。すなわち、この場合は、シーケンス番号に関する処理は実行しない。
一方、シーケンス番号をまたがっている場合には、要求処理部111は、まず、データの先頭からシーケンス番号の切り替わる部分までのデータを従来のwrite処理を実行してデータを上書きする(S1504)。
次に、要求処理部111は、シーケンス番号の切り替わる部分を越えたデータに関して、まず、新しくブロックを確保し、新しく確保したブロックに残りのデータを書き込む(S1505)。そして、新しく確保したブロックに対応するエクステントエントリを追加する。また、そのシーケンス番号は。シーケンス番号の切り替わる部分の前、すなわち、開始オフセットと同じシーケンス番号の値を設定する。また、サブシーケンス番号は、書き込み箇所に応じて適切な値を使用する。
S1503又はS1505の処理が終了した後、要求処理部111は、カレントオフセットを再計算する(S1506)。このとき、同時にカレントシーケンスオフセットも再計算する。
その後、戻り値として書き込みが成功したバイト数を返して、writeシステムコールの処理を終了する(S1507)。
図16は、switchシステムコールの処理のフローチャートである。
switchシステムコールは、デフォルトストリームを切り替える。
switchシステムコールは、ファイルディスクリプタ及び設定したいデフォルトストリーム番号を引数にとる。正常終了の場合は、カレントストリーム番号が戻り値となる。失敗の場合は、負値のエラー番号が戻り値となる。
ホスト計算機10等からswitch要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にswitchシステムコールを発行する。要求処理部111が、このswitchシステムコールを処理する(S1701)。
まず、要求処理部111は、引数によって指定されたストリーム番号をデフォルトストリームに設定する(S1702)。
次に、要求処理部は、デフォルトストリームの変更によってカレントストリームに変更が生じる場合は、カレントシーケンス番号及びカレントシーケンスオフセットを再計算する(S1703)。
その後、戻り値としてカレントストリーム番号を返して、switchシステムコールの処理を終了する(S1704)。
図17は、readシステムコールの処理のフローチャートである。
readシステムコールは、本実施の形態のストリームに対応したファイルデータの読み込み処理を実行する。readシステムコールは、従来のreadシステムコールと同様に、ファイルディスクリプタ、読み込み用バッファ及び読み込みサイズを引数にとる。
ホスト計算機10等からread要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にreadシステムコールを発行する。要求処理部111が、このreadシステムコールを処理する(S1801)。
まず、要求処理部111は、範囲限定アクセス制御402、ストリームアクセスプライオリティ403及びデフォルトストリームルール404を参照する。そして、ストリーム番号、シーケンス番号、開始オフセット、終了オフセットから構成されるエクステントのリストを取得する(S1802)。
次に、要求処理部111は、取得したリストを参照して、読み込み範囲の全てにアクセス可能なストリームがあるか否かをチェックする(S1807)。アクセス可能なストリームは前述のopenの処理で説明したのと同様である。この処理を、指定された全ての読み込み範囲で実行する。
読み込み範囲の少なくとも一部にアクセス許可がない領域がある場合は、S1808に処理を移し、エラーを要求受付部110に発行して処理を終了する。なお、エラー終了ではなく、アクセス可能な範囲のオフセットまでのデータの読み込みを実行してもよい。
読み込み範囲の全てにアクセスが可能なストリームがある場合は、S1803に処理を移す。S1803では、要求処理部111は、取得したエクステントのリストから、ブロック番号順に並び替えたリストに変換する。
次に、要求処理部111は、各ブロックに対して読み込み処理を実行する(S1804)。読み込みデータは要求元に送信される。
次に、要求処理部111は、カレントオフセットに読み込んだバイト数を加算する(S1805)。このとき、カレントストリーム、カレントシーケンス番号及びカレントシーケンスオフセットも、読み込んだバイト数に応じて変更する。
その後、読み込んだバイト数を戻り値として返し、readシステムコールを終了する(S1806)。
図18は、seekシステムコールの処理のフローチャートである。
seekシステムコールは、本実施形態のストリームに対応したカレントオフセットを変更する。seekシステムコールは、従来のseekシステムコールと同様に、ファイルディスクリプタ、オフセット及びフラグを引数にとる。戻り値はseek後のオフセットである。
ホスト計算機10等からseek要求が送信されると、要求受付部110がこの要求を受信して、要求処理部111にseekシステムコールを発行する。要求処理部111が、このseekシステムコールを処理する(S1901)。
まず、要求処理部111は、範囲限定アクセス制御402、ストリームアクセスプライオリティ403及びデフォルトストリームルール404を参照する。そして、seek後のオフセットのカレントストリームを設定する(S1902)。
次に、要求処理部111は、カレントオフセットに引数によって指示されたオフセット値を加算する。そして、カレントシーケンスオフセット及びカレントシーケンス番号を、シーク後の値に更新する(S1903)。
その後、オフセット値を戻り値として返し、seekシステムコールを終了する(S1904)。
以上のように、本発明の第1の実施の形態のファイルシステムは、ファイルデータをストリーム番号及びシーケンス番号によって管理する。また、各ストリームのアクセス権限を範囲限定アクセス制御402によって管理する。このようにすることによって、要求元のクライアントのアクセス権限に応じて、ファイルデータのビューを変更することが可能となる。
次に、本発明の第2の実施の形態について説明する。
前述のように、第1の実施の形態では、各々のストリームをファイルのエクステントによって管理した。これに対して、第2の実施の形態では、各々のストリームを一つのファイルとして管理する。なお、第1の実施の形態と同一の構成には同一の符号を付し、その説明は省略する。
図19は、本発明の第2の実施の形態の計算機システムによって実現されるファイルシステムの概要図である。
各ストリームを管理するファイルをメタファイルと呼ぶ。メタファイルはメタデータ2101とユーザデータ2102からなる。
メタデータ2102は、従来のファイルシステムの各種属性401aに加え、第1の実施の形態と同様に、範囲限定アクセス制御402、ストリームアクセスプライオリティ403、デフォルトストリームルール404を含む。
メタデータ2101はエクステント405を含む。このエクステント405はメタデータに対応するユーザデータ2102の格納領域を示す。図19の例では、エクステント405によって、ブロック番号0x10eeは示されている。このブロック番号0x10eeに格納されているユーザデータ2102には、ストリーム番号、シーケンス番号、サブシーケンス番号及びそれぞれに対応するファイル名がリスト形式で格納される。
このように構成された第2の実施の形態のファイルシステムの処理は、ストリームを構成するシーケンスの内容がファイル単位であることを除いては、前述の第1の実施の形態のファイルシステムの処理と同一である。
なお、第2の実施の形態では、範囲限定アクセス制御402をメタファイルのメタデータ2101が持つが、これを、メタファイルによって示される各ファイル固有のアクセス制限情報としてもよい。すなわち、ファイル固有のアクセス権限によってストリームのアクセス権限を決定するようにしてもよい。
以上のように、本発明の第2の実施の形態のファイルシステムは、前述の第1の実施の形態と同様に、要求元のクライアントのアクセス権限に応じて、ファイルデータのビューを変更することが可能となる。とくに、ストリームを構成する各シーケンスをファイルとして管理するので、各シーケンス毎のアクセス権限を設定することで、より細かなアクセス制御が可能となる。
本発明は、ファイルシステム、NAS等に適用可能である。本発明の対象となるコンテンツとしては、ビデオ映像ファイル、ドキュメント、実行モジュール等が考えられる。ビデオ映像ファイルでは、複数映像ストリームを保持し、年齢や国や嗜好に応じて再生するストリームを切り替える。ドキュメントは、役職や所属組織に応じて適切な機密情報レベルのストリームを表示する。実行モジュールは、複数のアーキテクチャに応じたバイナリを保持し、適切なアーキテクチャのバイナリを実行する。
本発明の第1の実施の形態の計算機システムによって実現されるファイルシステムの概要図である。 ファイルシステムを実現する計算機システムの構成ブロック図である。 ファイルシステムボリュームの具体的な内容の説明図である。 範囲限定アクセス制御の詳細の説明図である。 ストリームアクセスプライオリティの詳細の説明図である。 デフォルトストリームルールの詳細の説明図である。 attach_streamシステムコールの処理のフローチャートである。 detach_streamシステムコールの処理のフローチャートである。 show_streamシステムコールの処理のフローチャートである。 setraclシステムコールの処理のフローチャートである。 geraclシステムコールの処理のフローチャートである。 openシステムコールの処理を示すフローチャートである。 insertシステムコールの処理のフローチャートである、 cutシステムコールの処理のフローチャートである。 writeシステムコールの処理のフローチャートである。 switchシステムコールの処理のフローチャートである。 readシステムコールの処理のフローチャートである。 seekシステムコールの処理のフローチャートである。 本発明の第2の実施の形態の計算機システムによって実現されるファイルシステムの概要図である。 従来のファイルシステムによるファイルの提供方法の一例を示す説明図である。 従来のファイルシステムによるファイルの提供方法の一例を示す説明図である。
符号の説明
10 ホスト計算機
101 ファイルシステム
102 ストリーム管理部
105 カレントシーケンス番号
110 要求受付部
111 要求処理部
2001 プロセッサ
2002 ネットワークコントローラ
2003 I/O制御部
2004 ディスクコントローラ
2005 主記憶
2007 ストレージ装置
2008 外部ネットワーク
401 メタデータ
401a 各種属性
402 範囲限定アクセス制御
403 ストリームアクセスプライオリティ
404 デフォルトストリームルール
405a、405b、405c、405d、405e ユーザデータ

Claims (18)

  1. アクセス元のアクセス権限に対応するファイルデータを提供するファイル提供方法であって、
    ファイルの所定の領域にあるデータ毎にアクセス権限を設定し、
    アクセス元のアクセス権限を満たしている前記データを、所定の組み合わせによって連結し、
    前記連結されたデータをアクセス元に提供することを特徴とするファイル提供方法。
  2. 前記所定の組み合わせを指定する識別子と、前記識別子毎のアクセス権限と、を設定し、
    アクセス元のアクセス権限を満たしている前記識別子を選択し、
    前記識別子によって指定された組み合わせによってデータを連結し、
    前記連結されたデータをアクセス元に提供することを特徴とする請求項1に記載のファイル提供方法。
  3. 前記識別子は、
    前記データのファイル中のブロック位置と、
    前記データの連結順序を指定するシーケンス番号と、
    前記データの組み合わせを指定するストリーム番号と、
    を含むことを特徴とする請求項2に記載のファイル提供方法。
  4. 前記データのファイル中のブロック位置と、
    前記データの連結順序を指定するシーケンス番号と、
    前記データの組み合わせを指定するストリーム番号と、
    前記ストリーム番号毎のアクセス権限と、
    を設定し、
    アクセス元のアクセス権限を満たしている前記ストリーム番号を選択し、
    前記ストリーム番号によって指定された組み合わせによってデータを連結し、
    前記連結されたデータをアクセス元に提供することを特徴とする請求項1に記載のファイル提供方法。
  5. 基本となる第1のストリーム番号と、ストリーム番号の優先順序と、を設定し、
    アクセス元のアクセス権限が前記第1のストリーム番号のアクセス権限を満たしているか否かを判定し、
    その後、前記優先順序に従って、アクセス元のアクセス権限が各ストリーム番号のアクセス権限を満たしているか否かを判定することを特徴とする請求項4に記載のファイル提供方法。
  6. アクセス時間、アクセス元のクライアント、アクセス元プロセス名の少なくとも一つに基づいて、前記第1のストリーム番号を設定することを特徴とする請求項5に記載のファイル提供方法。
  7. 開始オフセット及び終了オフセット、又は、シーケンス番号を指定することによって、新たなストリーム番号を設定することを特徴とする請求項4に記載のファイル提供方法。
  8. ストリーム番号、開始オフセット及び終了オフセット、又は、シーケンス番号を指定することによって、前記ストリーム番号を削除することを特徴とする請求項4に記載のファイル提供方法。
  9. 基本となる第1のストリーム番号と、ストリーム番号の優先順序と、を設定し、
    アクセス元から基本となる第1のストリーム番号の指示があるかを判定し、
    前記第1のストリーム番号を、前記指示に係るストリーム番号に変更し、
    アクセス元のアクセス権限が前記第1のストリーム番号のアクセス権限を満たしているか否かを判定し、
    その後、前記優先順序に従って、アクセス元のアクセス権限が各ストリーム番号のアクセス権限を満たしているか否かを判定することを特徴とする請求項4に記載のファイル提供方法。
  10. ファイルを管理するメタデータに、前記ブロック位置、前記シーケンス番号、前記ストリーム番号、及び、前記ストリーム番号毎のアクセス権限を格納することを特徴とする請求項4に記載のファイル提供方法。
  11. オフセット及び挿入データを指定することによって前記挿入データをファイルに挿入し、
    前記オフセットの位置よりも後ろに格納されている既存データに対応するシーケンス番号を、前記挿入データの容量に従って変更することを特徴とする請求項4に記載のファイル提供方法。
  12. オフセット及びデータ長を指定することによってデータを削除し、
    前記オフセットと前記データ長との和を算出し、前記算出された和の位置よりも後ろに格納されている既存データのシーケンス番号を、前記データ長に従って変更することを特徴とする請求項4に記載のファイル提供方法。
  13. アクセス元のアクセス権限に対応するファイルデータを提供するファイル提供方法であって、
    ファイルの連結順序、ファイルの組み合わせ、及び、前記組み合わせ毎のアクセス権限を設定し、
    アクセス元のアクセス権限を満たしている前記組み合わせによって前記ファイルを連結し、
    前記連結されたファイルをアクセス元に提供することを特徴とするファイル提供方法。
  14. 前記ファイル毎のアクセス権限が設定され、
    アクセス元のアクセス権限を満たしている前記ファイルを前記組み合わせによって連結し、
    前記連結されたファイルをアクセス元に提供することを特徴とする請求項13に記載のファイル提供方法。
  15. ホスト計算機と通信するネットワークインターフェースと、ディスク装置と通信するディスクインターフェースと、制御部と、を備え、前記ホスト計算機からの要求に基づいて、前記ディスク装置に格納されたファイルデータを提供するストレージ装置であって、
    前記制御部は、
    前記ストレージ装置のファイルの所定の領域にあるデータ毎のアクセス権限を設定し、
    前記要求に係るアクセス権限を満たしている前記データを所定の組み合わせによって連結し、
    前記連結されたデータを要求元に提供することを特徴とするストレージ装置。
  16. 前記制御部は、
    前記データのファイル中のブロック位置と、
    前記データの連結順序を指定するシーケンス番号と、
    前記データの組み合わせを指定するストリーム番号と、
    前記ストリーム番号毎のアクセス権限と、
    を設定し、
    要求元のアクセス権限を満たしている前記ストリーム番号を選択し、
    前記ストリーム番号によって指定された組み合わせによってデータを連結し、
    前記連結されたデータを要求元に提供することを特徴とする請求項15に記載のストレージ装置。
  17. ホスト計算機と通信するネットワークインターフェースと、ディスク装置と通信するディスクインターフェースと、制御部と、を備えたストレージ装置において、前記ホスト計算機からの要求に基づいて、前記ディスク装置に格納されたファイルデータを提供するファイル提供プログラムであって、
    前記ストレージ装置のファイルの所定の領域にあるデータ毎のアクセス権限を設定する第1の手順と、
    前記要求に係るアクセス権限を満たしている前記データを、所定の組み合わせによって連結する第2の手順と、
    前記連結されたデータを要求元に提供する第3の手順と、を備えることを特徴とするファイル提供プログラム。
  18. 前記データのファイル中のブロック位置と、前記データの連結順序を指定するシーケンス番号と、前記データの組み合わせを指定するストリーム番号と、前記ストリーム番号毎のアクセス権限と、を設定する第4の手順と、
    要求元のアクセス権限を満たしている前記ストリーム番号を選択する第5の手順と、
    前記ストリーム番号によって指定された組み合わせによってデータを連結する第6の手順と、を備えることを特徴とする請求項17に記載のファイル提供プログラム。
JP2005196247A 2005-07-05 2005-07-05 ファイル提供方法、ストレージ装置及びファイル提供プログラム Expired - Fee Related JP4659537B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005196247A JP4659537B2 (ja) 2005-07-05 2005-07-05 ファイル提供方法、ストレージ装置及びファイル提供プログラム
US11/212,665 US20070011166A1 (en) 2005-07-05 2005-08-29 Method and apparatus for providing multi-view of files depending on authorization
US12/538,962 US20090300029A1 (en) 2005-07-05 2009-08-11 Method and apparatus for providing multi-view of files depending on authorization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005196247A JP4659537B2 (ja) 2005-07-05 2005-07-05 ファイル提供方法、ストレージ装置及びファイル提供プログラム

Publications (3)

Publication Number Publication Date
JP2007018066A true JP2007018066A (ja) 2007-01-25
JP2007018066A5 JP2007018066A5 (ja) 2007-11-29
JP4659537B2 JP4659537B2 (ja) 2011-03-30

Family

ID=37619410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005196247A Expired - Fee Related JP4659537B2 (ja) 2005-07-05 2005-07-05 ファイル提供方法、ストレージ装置及びファイル提供プログラム

Country Status (2)

Country Link
US (2) US20070011166A1 (ja)
JP (1) JP4659537B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022091A1 (en) * 2005-07-20 2007-01-25 Scriptlogic Corporation Access based file system directory enumeration
CN103617127B (zh) * 2013-12-04 2017-04-05 杭州华澜微电子股份有限公司 带分区的存储装置及存储器分区的方法
CN107766743B (zh) * 2017-11-09 2020-07-28 广州杰赛科技股份有限公司 文件访问权限的设置方法及装置、终端设备、存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02294855A (ja) * 1989-05-10 1990-12-05 Hokkaido Nippon Denki Software Kk サブファイル利用権管理方式
JPH06214862A (ja) * 1993-01-13 1994-08-05 Hitachi Ltd クライアント・サーバシステムにおける文書アクセス方法
JPH08161214A (ja) * 1994-10-06 1996-06-21 Ricoh Co Ltd 電子会議用資料アクセス制御システム
JPH09190369A (ja) * 1995-11-14 1997-07-22 Hewlett Packard Co <Hp> 更新データストリーム作成方法
JPH10116271A (ja) * 1996-10-09 1998-05-06 Tec Corp 文書管理装置及び文書管理処理のプログラムを記録した記憶媒体
JPH1125076A (ja) * 1997-06-30 1999-01-29 Fujitsu Ltd 文書管理装置および文書管理プログラム記憶媒体
JP2000235569A (ja) * 1999-02-17 2000-08-29 Ntt Data Corp 電子文書の管理方法及び文書管理システム
JP2001306558A (ja) * 2000-04-21 2001-11-02 Ntt Communications Kk 文書管理方法およびシステム
JP2001331373A (ja) * 2000-03-16 2001-11-30 Fujitsu Ltd アクセス制御情報を記録した媒体、方法、装置、およびプログラム
JP2002207637A (ja) * 2001-01-11 2002-07-26 Hitachi Ltd 情報開示方法、情報開示装置および情報サービス方法
JP2004287525A (ja) * 2003-03-19 2004-10-14 Ricoh Co Ltd 情報提供装置、情報提供方法、および情報提供プログラム

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4897781A (en) * 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US5008820A (en) * 1987-03-30 1991-04-16 International Business Machines Corporation Method of rapidly opening disk files identified by path names
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US4912637A (en) * 1988-04-26 1990-03-27 Tandem Computers Incorporated Version management tool
US5167035A (en) * 1988-09-08 1992-11-24 Digital Equipment Corporation Transferring messages between nodes in a network
US5479654A (en) * 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
US5155845A (en) * 1990-06-15 1992-10-13 Storage Technology Corporation Data storage system for providing redundant copies of data on different disk drives
US5278979A (en) * 1990-12-20 1994-01-11 International Business Machines Corp. Version management system using pointers shared by a plurality of versions for indicating active lines of a version
US5276871A (en) * 1991-03-18 1994-01-04 Bull Hn Information Systems Inc. Method of file shadowing among peer systems
US5347653A (en) * 1991-06-28 1994-09-13 Digital Equipment Corporation System for reconstructing prior versions of indexes using records indicating changes between successive versions of the indexes
EP0541281B1 (en) * 1991-11-04 1998-04-29 Commvault Systems, Inc. Incremental-computer-file backup using signatures
JPH05197734A (ja) * 1992-01-17 1993-08-06 Mitsui Eng & Shipbuild Co Ltd データ処理システム
US5611049A (en) * 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
US5592661A (en) * 1992-07-16 1997-01-07 International Business Machines Corporation Detection of independent changes via change identifiers in a versioned database management system
US5574902A (en) * 1994-05-02 1996-11-12 International Business Machines Corporation Efficient destaging of updated local cache pages for a transaction in a multisystem and multiprocess database management system with a high-speed shared electronic store
JPH09212397A (ja) * 1996-01-31 1997-08-15 Toshiba Corp ファイル読み出し方法
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6263348B1 (en) * 1998-07-01 2001-07-17 Serena Software International, Inc. Method and apparatus for identifying the existence of differences between two files
GB2343768A (en) * 1998-08-17 2000-05-17 Connected Place Limited Merging a sequence of delta files
US6349311B1 (en) * 1999-02-01 2002-02-19 Symantec Corporation Storage of reverse delta updates
US6807550B1 (en) * 1999-12-01 2004-10-19 Microsoft Corporation Methods and systems for providing random access to structured media content
US6195650B1 (en) * 2000-02-02 2001-02-27 Hewlett-Packard Company Method and apparatus for virtualizing file access operations and other I/O operations
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
EP1286349A1 (en) * 2001-08-21 2003-02-26 Canal+ Technologies Société Anonyme File and content management
US7184985B2 (en) * 2002-05-30 2007-02-27 Microsoft Corporation Method, system, and apparatus for providing secure access to a digital work
US6986019B1 (en) * 2003-04-21 2006-01-10 Maxtor Corporation Method and apparatus for detection and management of data streams
US20060015499A1 (en) * 2004-07-13 2006-01-19 International Business Machines Corporation Method, data processing system, and computer program product for sectional access privileges of plain text files
US20060248040A1 (en) * 2005-05-02 2006-11-02 Nokia Corporation System and method for adaptive remote file caching

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02294855A (ja) * 1989-05-10 1990-12-05 Hokkaido Nippon Denki Software Kk サブファイル利用権管理方式
JPH06214862A (ja) * 1993-01-13 1994-08-05 Hitachi Ltd クライアント・サーバシステムにおける文書アクセス方法
JPH08161214A (ja) * 1994-10-06 1996-06-21 Ricoh Co Ltd 電子会議用資料アクセス制御システム
JPH09190369A (ja) * 1995-11-14 1997-07-22 Hewlett Packard Co <Hp> 更新データストリーム作成方法
JPH10116271A (ja) * 1996-10-09 1998-05-06 Tec Corp 文書管理装置及び文書管理処理のプログラムを記録した記憶媒体
JPH1125076A (ja) * 1997-06-30 1999-01-29 Fujitsu Ltd 文書管理装置および文書管理プログラム記憶媒体
JP2000235569A (ja) * 1999-02-17 2000-08-29 Ntt Data Corp 電子文書の管理方法及び文書管理システム
JP2001331373A (ja) * 2000-03-16 2001-11-30 Fujitsu Ltd アクセス制御情報を記録した媒体、方法、装置、およびプログラム
JP2001306558A (ja) * 2000-04-21 2001-11-02 Ntt Communications Kk 文書管理方法およびシステム
JP2002207637A (ja) * 2001-01-11 2002-07-26 Hitachi Ltd 情報開示方法、情報開示装置および情報サービス方法
JP2004287525A (ja) * 2003-03-19 2004-10-14 Ricoh Co Ltd 情報提供装置、情報提供方法、および情報提供プログラム

Also Published As

Publication number Publication date
JP4659537B2 (ja) 2011-03-30
US20090300029A1 (en) 2009-12-03
US20070011166A1 (en) 2007-01-11

Similar Documents

Publication Publication Date Title
US7979478B2 (en) Data management method
CA2626844C (en) Managing relationships between resources stored within a repository
KR101120755B1 (ko) 정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목 공유 시스템 및 방법
US11948473B2 (en) Assignments for classrooms
JP5449524B2 (ja) 計算機とその処理方法および計算機システム
US20100306283A1 (en) Information object creation for a distributed computing system
WO2011033734A1 (en) File search system and program
WO2011111115A1 (ja) ストレージシステム及びそのファイルアクセス判定方法
US10476878B2 (en) Access permissions management system and method
JP2008003846A (ja) 文書利用管理システム及び方法、文書管理サーバ及びそのプログラム
JPH11134227A (ja) ファイルフォーマット変換方法とこれを用いたファイルシステム及び情報システム及び電子商取引システム
US11080344B2 (en) Cloud-native documents integrated with legacy tools
US10607498B2 (en) Releasing assignments to students
CN110308895A (zh) 项目开发平台及应用项目开发平台所进行的项目开发方法
EP3314457A1 (en) Metamorphic documents
JP4659537B2 (ja) ファイル提供方法、ストレージ装置及びファイル提供プログラム
US20100199174A1 (en) Extensible font file loading
JP5399114B2 (ja) ファイルサーバ運用支援装置、方法、プログラム及び記録媒体
JP2006031608A (ja) 計算機、ストレージシステム、計算機が行うファイル管理方法、およびプログラム
JP4909432B2 (ja) コンテンツマネジメントシステム
US20200167310A1 (en) Systems, methods, storage media, and computing platforms for managing data files
Langley et al. Embracing the open-source movement for managing spatial data: A case study of african trypanosomiasis in kenya
WO2023008092A1 (ja) 情報処理装置及びその制御方法
JP2013025389A (ja) インデックス管理プログラ及び検索システム
US20200210436A1 (en) Systems, methods, storage media, and computing platforms for context-based data retrieval

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071010

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071010

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101006

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101130

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101227

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140107

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees