JP5236129B2 - Storage service providing apparatus, system, service providing method and service providing program - Google Patents

Storage service providing apparatus, system, service providing method and service providing program Download PDF

Info

Publication number
JP5236129B2
JP5236129B2 JP2013019173A JP2013019173A JP5236129B2 JP 5236129 B2 JP5236129 B2 JP 5236129B2 JP 2013019173 A JP2013019173 A JP 2013019173A JP 2013019173 A JP2013019173 A JP 2013019173A JP 5236129 B2 JP5236129 B2 JP 5236129B2
Authority
JP
Grant status
Grant
Patent type
Prior art keywords
object
file
identification information
storage
object identification
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.)
Active
Application number
JP2013019173A
Other languages
Japanese (ja)
Other versions
JP2013093050A (en )
Inventor
郁夫 中川
Original Assignee
株式会社インテック
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
Grant date

Links

Images

Description

本発明は、多数のコンピュータを用いて大量のファイルを保存することを可能にする分散ストレージ技術に関する。 The present invention relates to a distributed storage technique that allows to store a large number of files with a large number of computers.

従来のコンピュータ利用は、ユーザである企業や個人等が、コンピュータのハードウェア、ソフトウェア、データ等を、自分自身で保有し、管理していたが、近年普及してきたクラウド・コンピューティングでは、ユーザは、自身の手元の機器が接続したネットワークの向こう側(データセンタ等)からサービスを受ける。 Use conventional computers, companies and individuals, such as a user, computer hardware, software, data, etc., held on their own, but had managed, with cloud computing, which have become popular in recent years, user , served by the other side of the network to which hand instrument itself connected (data center or the like). このようなクラウド・サービスは、クラウド・サービス提供事業者から企業又は個人に対して提供されたり、企業内ネットワークにおいて社員等に対して提供されたりする。 Such a cloud service is, or is provided for companies or individuals from the cloud-service provider, or is provided to employees, such as in the corporate network.

クラウド・サービスのうち、ユーザのデータをネットワーク上のサーバに保存するストレージサービスとして、アマゾンS3(Simple Storage Service)や、マイクロソフトWindows(登録商標)Azure等が知られている。 Of the cloud services, as a storage service to store user data to a server on the network, and Amazon S3 (Simple Storage Service), Microsoft Windows (registered trademark) Azure, and the like are known. 特に、データを多数のストレージに分散して格納することができ、GB(ギガバイト)単位の大きなデータと小さなサイズのデータが大量に混在しても、これらを効率よく扱うことのできる分散ファイルシステムとしては、グーグルファイルシステム(GFS)が知られている(例えば、非特許文献1を参照)。 In particular, the data can be distributed and stored in a number of storage and even GB (gigabytes) large data and a small size of the data unit is a large amount mixed, as a distributed file system that can handle these efficiently is Google file system (GFS) is known (for example, see non-Patent Document 1).

GFSでは、ファイルを64MB(メガバイト)のチャンクと呼ばれるブロックに分割して、複数のチャンクサーバに分散して配置することにより、一つのファイルの書き込みや読み出しを複数のサーバで並列に実行して、ファイルの入出力を高速化しており、多数のサーバがあれば、大きなファイルサイズを扱うことも可能である。 In GFS, by dividing the file into blocks called chunks 64MB (megabytes), by arranging the dispersed into chunks servers, writing and reading of a file on multiple servers running in parallel, the input and output of the file has been faster, if there is a large number of servers, it is also possible to handle the large file size. また、全てのチャンクが3つ以上の複製を異なるサーバに有するように制御する仕組みによって、あるチャンクサーバに障害が発生しても別のチャンクサーバに保存された複製を使うことで耐故障性を高めるとともに、チャンクの複数の複製のうちの選択された一つにアクセスすることで負荷分散を実現することも可能にしている。 Moreover, the mechanism for controlled to have all chunks are three or more replicas on different servers, enhanced fault tolerance by using a replica to a chunk server failure is stored in a separate chunk server be generated together, it is also possible to realize the load distribution by accessing a selected one of a plurality of copies of the chunk.

上述したGFSでは、一つのファイルを構成する複数のチャンクのそれぞれ(さらに、各チャンクにつき3つ以上の複製のそれぞれ)がどのチャンクサーバに保存されているかというマッピングを管理するための管理情報が、マスタサーバに保存される。 In the above-described GFS, the management information for managing one of the plurality of chunks that constitute the file (and each of the three or more replication per chunk) mapping that are either saved to which chunk server, It is maintained in the master server. よって、ファイルを読み出すときは、読み出すべきチャンクを特定し、特定されたチャンクを保存しているサーバのアドレスをマスタサーバに問い合せ、返答に示されたアドレスのチャンクサーバにアクセスするという処理が行われ、ファイルを書き込むときは、書き込むべきチャンクを特定し、特定されたチャンクを保存すべきサーバのアドレスをマスタサーバに問い合せ、返答に示されたアドレスのチャンクサーバにアクセスするという処理が行われる。 Therefore, when reading a file, to identify the chunk to be read, to query the address of the server that stores the identified chunk to the master server, is performed processing for accessing the chunk server address indicated by the response , when writing files to identify the chunk to be written, query the address of the server should store a particular chunk in the master server, the process of accessing the chunk server address indicated by the reply is performed. 障害発生時のチャンクサーバの切り替えや複製の再作成、チャンクサーバへのアクセスの負荷分散や複製の追加作成等も、管理情報を有するマスタサーバが全て指示することにより行われる。 Recreate switching and chunk copy server when a failure occurs, creating additional such load balancing and replication of access to the chunk server also performed by instructing all the master server having the management information.

このような機構では、管理情報を有するマスタサーバが、分散ストレージシステムにおける単一障害点となり、マスタサーバに障害が発生した場合は、システム全体が動作しなくなってしまうという問題がある。 In such a mechanism, the master server having management information, a single point of failure in a distributed storage system, if the master server fails, there is a problem that the entire system becomes inoperable. また、マスタサーバに負荷が集中するため、そこがボトルネックとなって、スケーラビリティや性能上の限界が出てきてしまうという問題もある。 In addition, in order to concentrate the load on the master server, there is a bottleneck, there is also a problem that the limit on the scalability and performance will come out.

GFSの場合は、マスタサーバの冗長化を行うための特別な仕組みを別途有しており、マスタサーバの障害時には、一定の操作を経てバックアップのサーバにその機能を引き継ぐ処理が行われるようにして、単一障害点を意識させないようにしているが、これは、GFSが、インターネットにおけるWebページの蓄積及び検索サービスという用途に特化しているからできることであると考えられる。 For GFS is separately have a special mechanism for performing redundancy master server, the failure of the master server, as the process is carried out to take over its function to the backup server through certain operations Although so as not aware of the single point of failure, which, GFS is considered that it can be because they specialized applications that storage and retrieval services for the Web page on the Internet. 分散ストレージ技術には、広く様々な用途があり、単一障害点のないシステムを実現して耐故障性をさらに向上させることが望ましい。 The distributed storage technique, there are a wide variety of applications, it is desirable to further improve the fault tolerance to achieve no single point of failure systems.

また、GFSでは、チャンクが固定長であることもあり、ファイルのサイズ(ファイルのデータの長さ)が巨大になれば、各チャンクと各サーバとのマッピングを示す管理情報のサイズも膨大になる。 Also, sometimes the GFS, chunks are a fixed length, if the huge size of the file (the length of the file data), also becomes enormous size of the management information indicating a mapping between each chunk and each server . そうすると、その大きな管理情報の中から、部分的にアクセスしたいチャンクを、高速に探し出すことが難しくなるため、ランダムアクセスに弱いという問題もある。 Then, from among the large management information, the chunk to be partially accessible, because to find quickly becomes difficult, a problem of being susceptible to random access.

さらに、GFSにしろ、アマゾンS3にしろ、既存のストレージサービスでは、サービスを提供するための設備の全てを、一つのサービス提供事業者が管理し運用しなければならない。 In addition, white to GFS, white to Amazon S3, in the existing storage services, all the facilities in order to provide the service, one of the service provider must operate management. ストレージサービスの利用者からみれば、一つのサービス提供事業者を選択してサービスを受けるしかなく、ストレージサービスを利用して行いたい処理の全体が、選択した事業者の信頼性やサービスの質に依存することになってしまう。 From the perspective of the user of the storage service, not only receive the service by selecting one of the service provider, the entire process to be performed with use of the storage service, the quality of reliability and service for the selected operator it becomes that dependent.

本発明は、上記の事情に鑑み、多数のコンピュータを用いて様々なサイズの大量のファイルを保存可能にするとともに、システムにおいて単一障害点となる要素を低減することが可能な分散ストレージ技術を提供することを目的とする。 In view of the above circumstances, and allows saving a large number of files of various sizes using a number of computers, the distributed storage technology capable of reducing the element as a single point of failure in the system an object of the present invention is to provide. 本発明はまた、この分散ストレージ技術において、ファイルに対するアクセスの高速化、ランダムアクセス等の高性能化を可能にすることや、複数の事業者から提供されるストレージサービスを利用して一つのストレージサービスを構成可能にすることを目的とする。 The present invention also provides, in the distributed storage technique, high-speed access to files, allowing high performance, such as random access and one using the storage service provided by a plurality of operators storage service and an object thereof is to enable configure.

本発明の原理に従う一つのストレージサービス提供装置は、複数のストレージ装置とネットワークを介して接続され、これらのストレージ装置を利用してファイルを保存するサービスを提供する。 One storage service providing apparatus in accordance with the principles of the present invention is connected via a plurality of storage devices and network, providing service to save the file by using these storage devices. そして、書き込むべきファイルを一つ以上のデータに分解し、該ファイルを構成するデータをブロックオブジェクトとして、各ブロックオブジェクトにオブジェクト識別情報を付与する手段と、前記各ブロックオブジェクトのデータから前記ファイルを構築するための情報を作成し、該情報を管理情報オブジェクトとして、管理情報オブジェクトにオブジェクト識別情報を付与する手段と、オブジェクト識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段と、前記各ブロックオブジェクト及び前記管理情報オブジェクトを、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれのストレージ装置へ送信して保存させる手段とを備える。 Then, to decompose the file to be written to one or more data, the data constituting the file as a block object, and means for applying the object identification information to each block object, the file from the data of the respective blocks object construction generates information for, the information as the management information object, and means for imparting object identification information to the management information object, means for identifying at least one of the plurality of storage devices based on the object identification information When, and means for the storage of each block object and the management information objects, and transmitted to each storage apparatus specified based on the respective object identification information.

この構成により、複数のストレージ装置を利用した仮想ストレージが実現され、ストレージサービスが提供可能になる。 With this configuration, the virtual storage using a plurality of storage devices is achieved, the storage service is possible provided. この構成では、ファイルを構成するデータ(ブロックオブジェクト)だけでなく、分解されたデータからファイルを構築するための情報(管理情報オブジェクト)も、いずれもオブジェクトとして、複数のストレージ装置に分散して保存されるため、本ストレージサービス提供装置が、多数のファイルの全てのブロックについての管理情報を集中して保存することはなく、システムにおいて単一障害点となる要素を低減することが可能となる。 In this configuration, not only the data (block objects) constituting a file, information for building the files from degradation data (management information object), either as an object, dispersed in a plurality of storage devices store to be, the storage service providing apparatus, not be stored in a concentrated management information for all the blocks of the large number of files, it is possible to reduce the a single point of failure components in the system.

なお、本ストレージサービス提供装置は、例えば、クラウド・サービス提供事業者が、自身が管理する複数のストレージ装置(ストレージサーバでもストレージデバイスでもよい)もしくは他のサービス提供事業者が管理する複数のストレージ装置(ストレージサービスとして認識されてもよい)のフロントエンドに設置して、自身のサービスの利用者であるエンドユーザからのネットワークを介した要求に応じてファイルの読み書きを行うものとしてもよい。 The present storage service providing apparatus, for example, cloud service provider is, (may be a storage device in the storage server) a plurality of storage device that manages itself or a plurality of storage devices other service provider managed and disposed to the front end of the (storage may be recognized as a service), may be performed to read and write files on demand over the network from the end user who is a user of its services. 別の例として、本ストレージサービス提供装置を、企業内ネットワークの内部に設置し、同一企業内ネットワークにある複数のストレージ装置を利用してファイルの読み書きを行うものとしてもよいし、企業内ネットワークに設置した本ストレージサービス提供装置を、企業外のストレージサービス提供事業者のデータセンタ等に接続し、企業外の複数のストレージ装置を利用するファイルの読み書きを行うものとしてもよい。 As another example, the present storage service providing apparatus, and installed inside the corporate network, by using a plurality of storage devices in the same corporate network may as reading and writing files, the corporate network the installation was present storage service providing apparatus connected to the data center or the like of the non-enterprise storage service provider, may be performed to read or write a file to use a plurality of storage devices companies outside.

上記のストレージサービス提供装置が、読み出すべきファイルに対応する先頭オブジェクト識別情報を求め、当該先頭オブジェクト識別情報に基づいて特定されるストレージ装置にアクセスして、前記管理情報オブジェクトを取得する手段と、取得された管理情報オブジェクトに含まれている前記ファイルを構築するための情報を用いて、前記ファイルを構成するデータを有するブロックオブジェクトのオブジェクト識別情報を求め、当該オブジェクト識別情報に基づいて特定されるストレージ装置にアクセスして、前記ブロックオブジェクトを取得する手段と、取得されたブロックオブジェクトが有するデータを、前記ファイルを構築するための情報に従って並べることにより、前記ファイルを取得する手段とをさらに備えるようにしても Additional storage service providing apparatus obtains the top object identification information corresponding to the file to be read, accesses the storage apparatus specified on the basis of the top object identification information, and means for acquiring the management information object, obtaining using information for constructing the file included in the management information objects, obtains object identification information of the block objects having data constituting the file, storage specified based on the object identification information accessing the device, and means for acquiring the block object, the data included in the acquired block objects, by arranging according to the information for constructing the file, further comprise a means for acquiring the file even if い。 There.

これにより、複数のストレージ装置に分散して保存された管理情報オブジェクト及びブロックオブジェクトにアクセスして、元のファイルを取得することが可能になる。 Thus, by accessing the management information objects and block objects stored distributed across multiple storage devices, it is possible to obtain the original file.

上記のストレージサービス提供装置において、あるファイルに対応する管理情報オブジェクトと、別のファイルに対応する管理情報オブジェクトとが、前記複数のストレージ装置のうちの別々のストレージ装置に保存されるように、ストレージ装置を特定するためのオブジェクト識別情報が割り当てられるようにしてもよい。 In the storage service providing apparatus, as the management information objects corresponding to a file, the management information objects corresponding to another file is stored in a separate storage device of the plurality of storage devices, storage object identification information for identifying the device may be is assigned.

これにより、オブジェクト識別情報の割り当てによって、管理情報を複数のストレージ装置に分散して保存することが可能になり、単一障害点となる要素の低減を効率的に実現することが可能となる。 Thus, the assignment of object identification information, it is possible to store in a distributed management information to a plurality of storage devices, it is possible to effectively realize a reduction in a single point of failure element.

上記のストレージサービス提供装置における前記オブジェクト識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段を、特定されたストレージ装置に適合するアクセス方法をも特定するものとし、前記特定されたアクセス方法に従い、前記特定されたストレージ装置に対して、前記オブジェクト識別情報の付与されたオブジェクトの保存又は取得を要求することにより、前記ネットワークを介して接続されたストレージ装置の利用が行われるようにしてもよい。 Means for identifying at least one of said storage service providing device in the object identification information of the plurality of storage devices based on, shall also be specified compatible access method to the identified storage device, the specific Following the access method, the relative identified storage device, by requiring storage or acquisition of the applied objects of the object identification information, the use of the connected storage device via the network takes place it may be so.

これにより、異なるアクセス方法が採用されているストレージ装置を混在させて、仮想ストレージを実現することが可能になる。 Thus, a mix of storage devices having different access methods have been employed, it is possible to realize a virtual storage. 例えば、多数の物理デバイスをストレージ装置と見立てて仮想ストレージを実現したい場合、iSCSI、SAN等の種々の方式があり得るが、これらの物理デバイスが混在しても、各物理デバイスに適合した方式でアクセスすることが可能になる。 For example, a number of physical devices want to achieve virtual storage while regarding the storage device, iSCSI, although there may be various methods such as SAN, even if these physical devices are mixed, in a manner adapted to the respective physical device it is possible to access.

また別の例として、ネットワーク上の多数のサーバをストレージ装置と見立てて仮想ストレージを実現したい場合は、各サーバへのアクセス方法としてhttp、nfs、ftp、cifs、rpc等の種々のプロトコルがあり得るが、これらのサーバが混在しても、各サーバに適合したプロトコルでアクセスすることが可能になる。 As another example, if a large number of servers on the network want to achieve virtual storage while regarding the storage device, http as how to access each server, nfs, ftp, cifs, there may be various protocols rpc, etc. but even if these servers are mixed, it is possible to access a protocol compatible with each server.

この場合、上記のストレージサービス提供装置と接続される前記複数のストレージ装置は、それぞれ、前記ストレージサービス提供装置をクライアントとし、任意のアクセスプロトコルにて動作することが可能な、ストレージサーバとすることができる。 In this case, the storage service providing device and the plurality of storage devices are connected, respectively, the storage service providing apparatus and a client, capable of operating at any of the access protocols, be a storage server it can.

さらに別の例として、クラウド・サービス提供事業者等が提供する様々なサービスをストレージ装置と見立てて仮想ストレージを実現したい場合は、各サービスへのアクセス方法として、Webサービスや、HTTPを用いた独自プロトコル、あるいは、NFS等の種々の体系があり得るが、これらのサービスが混在しても、各サービスに適合した体系でアクセスすることが可能になる。 As yet another example, if you want to implement a virtual storage a variety of services to resemble a storage device that cloud service provider or the like is provided, own that as how to access each service, using Web services and, the HTTP protocol or, although there may be various systems of NFS, etc., even if these services are mixed, it is possible to access a systematic adapted to each service.

この場合、上記のストレージサービス提供装置と接続される前記複数のストレージ装置のうち、ある一部のストレージ装置と他の一部のストレージ装置とが、異なるサービス提供事業者により提供されるストレージサービスに係るものとすることができる。 In this case, among the storage service providing device and the plurality of storage devices connected, a part of the storage device with the other part of the storage device, the storage service provided by the different service provider it can be made of.

これにより、複数の事業者から提供されるストレージサービスを利用して一つのストレージサービスを構成することが可能になる。 Thus, it is possible to form one storage services using the storage service provided by a plurality of operators.

以上のように構成すると、本ストレージサービス提供装置が実現する仮想ストレージによるストレージサービスの利用者から見れば、複数の異なる物理デバイスや、複数の異なるサーバ、複数の異なるサービス等が混在して構成される仮想ストレージであっても、その内部構造はユーザインタフェースから隠蔽されるため、エンドユーザに対しては透過的に一つのファイルシステムに見せることが可能になる。 With the configuration described above, when viewed from the user of the storage service by a virtual storage to implement the present storage service providing apparatus, and a plurality of different physical devices, a plurality of different servers, services, etc. a plurality of different is configured in a mixed be a virtual storage that, its internal structure is because it is hidden from the user interface, it is possible to appear transparent to one file system to the end user.

上記のストレージサービス提供装置が、前記複数のストレージ装置を利用して保存されるファイルに対する書き込み要求又は読み出し要求を、ユーザ端末から受信する手段をさらに備え、前記書き込み要求又は読み出し要求を、汎用のファイルシステムで用いられる形式の要求としてもよい。 Additional storage service providing apparatus, a write request or a read request for a file that is saved by using the plurality of storage devices, further comprising means for receiving from the user terminal, said write request or read request, the general purpose of the file it may form a request used in the system.

これにより、本ストレージサービス提供装置が提供するストレージサービスの利用者のコンピュータ(ユーザ端末)に対しては、本ストレージサービス提供装置が実現する仮想ストレージを、NFSやiSCSI等のネイティブ・ファイルシステム(標準的に用いられている汎用ファイルシステム)として見せることが可能になる。 Thus, for the storage service of the user's computer that provides the present storage service providing apparatus (user terminal), the virtual storage to implement the present storage service providing apparatus, native file system (standard such as NFS or iSCSI it is possible to show as a general-purpose file system) that is used in manner.

上記のストレージサービス提供装置において、前記管理情報オブジェクトを、前記ファイルのそれぞれ別の部分を構成するデータを有する複数のブロックオブジェクトのオブジェクト識別情報と、各ブロックオブジェクトのデータが前記ファイル中のどの部分に並ぶべきかを示すオフセット情報とを含むものとしてもよい。 In the storage service providing apparatus, the management information objects, and object identification information of the plurality of blocks objects with data constituting the separate portion of the file, to which part of the data is the file for each block objects or as including offset information indicating whether to line up.

このような管理情報を用いることにより、各オブジェクト識別情報に基づいてそれぞれ独立に複数のストレージ装置のいずれかにアクセスして取得したブロックオブジェクトから、オフセット情報に従ってファイルを構築することができるため、ファイルのデータを保存する一連のストレージ装置に順にアクセスするのではなく、複数のストレージ装置を並列でアクセスすることが可能になり、高性能なファイルアクセスが可能になる。 By using such management information, from the block objects obtained independently by accessing any one of a plurality of storage devices based on the object identification information, it is possible to construct a file according to the offset information, file data rather than accessing sequentially to a series of storage device that stores, it is possible to access a plurality of storage devices in parallel, it is possible to high-performance file access.

上記のストレージサービス提供装置において、前記管理情報オブジェクトに、前記ファイル内のある領域におけるそれぞれ別の部分を構成するデータを有する複数のブロックオブジェクトのオブジェクト識別情報と、各ブロックオブジェクトのデータが前記ある領域中のどの部分に並ぶべきかを示す領域内オフセット情報とを含む第1の管理情報オブジェクトと、前記第1の管理情報オブジェクトのオブジェクト識別情報と、該第1の管理情報オブジェクトが情報を有する前記ある領域が前記ファイル内でどこに位置するものかを示すファイル内オフセット情報とを含む第2の管理情報オブジェクトとがあるようにしてもよい。 In the storage service providing apparatus, the management information object, and the object identification information of the plurality of blocks objects with data constituting the separate portion in the region of the file, the data of each block object is the region wherein with the first management information object containing the region offset information indicating whether to align any part in, the object identification information of the first management information object, the first management information object information a region is may be a certain second and a management information objects, including a file in offset information indicating whether one located anywhere in the file.

これにより、ファイルに対応する先頭オブジェクト識別情報から、ファイルを構成するデータを有するブロックオブジェクトまでの間に、複数の管理情報オブジェクトを仮想的に配置して、2つ以上の階層を有する再帰構造をとらせることができる。 Thus, from the head object identification information corresponding to the file, until the block objects having data constituting the file, place a plurality of the management information objects virtually, a recursive structure with two or more hierarchies it can be taken. ファイルのサイズが巨大になった場合、階層が一つしかないと、管理情報(本例では、各ブロックオブジェクトのオブジェクト識別情報とオフセット情報のリスト)の量が増加して、管理情報の全体を読み出すのにも、アクセスしたいブロックオブジェクトの情報を検索して選択的に読み出すのにも、時間がかかってしまうが、この膨大な管理情報を複数に分割して複数の管理情報オブジェクト(上記でいう第1の管理情報オブジェクト)を生成し、各管理情報オブジェクトのオブジェクト識別情報とオフセット情報のリストを新たな管理情報オブジェクト(上記でいう第2の管理情報オブジェクト)を設ければ、これら複数の管理情報オブジェクトも複数のストレージ装置に分散して保存され、並列でアクセスすることが可能になる。 If the size of the file becomes huge, the hierarchy has only one (in this example, a list of object identification information and the offset information of each block objects) management information increases the amount of the entire management information also for reading, even for reading selectively searching for information of the block object to be accessed, but it takes time, say in a plurality of management information objects (the dividing this enormous management information into a plurality generating a first management information object), by providing a list of object identification information and the offset information of each management information objects new management information object (second management information objects mentioned above), the management of the plurality information objects are also stored distributed across multiple storage devices, it is possible to access in parallel.

このように、管理情報を複数に分割して、2つ以上の階層を有する再帰構造をとらせることにより、単一障害点となる要素をさらに低減することができるとともに、より高性能なファイルアクセスが可能になる。 Thus, by dividing the management information into a plurality by assume a recursive structure with two or more layers, it is possible to further reduce the element as a single point of failure, higher performance file access It becomes possible. そうすると、保存可能なファイルのサイズを、デバイスの物理容量や地理的空間の制限を超えて、論理的に上限なく大きくできるというだけでなく、どれだけ大容量のファイルであっても、実用上の問題が生じないようにできるため、真にスケーラブルな仮想ストレージを実現することが可能になる。 Then, the size of available storage file, beyond the limits of physical capacity and geographical space of the device, not only a logical can be increased without limit, no matter how a file of a large capacity, practical because it so problems do not occur, it is possible to realize a truly scalable virtual storage.

上記のストレージサービス提供装置において、前記管理情報オブジェクトを、再帰構造を有する複数の管理情報オブジェクトから構成されることが可能なものとし、前記ブロックオブジェクトの数が所定数より多い場合には、前記再帰構造の階層を増加させて、複数の管理情報オブジェクトを生成するようにしてもよい。 In the storage service providing apparatus, the management information object, if it is assumed that can be composed of a plurality of management information objects having a recursive structure, the number of the block object is larger than the predetermined number, the recursive increasing the hierarchical structure, it may be generated a plurality of management information objects.

これにより、ブロックオブジェクトの数(ひいてはファイルのサイズ)に応じて、管理情報の再帰構造の階層を増加することができ、さらにスケーラビリティを向上することが可能になる。 Thus, according to the number (and hence the file size) of the block object, it is possible to increase the hierarchy of recursive structure of the management information, it is possible to further improve the scalability.

上記のストレージサービス提供装置において、前記管理情報オブジェクトが、複数のオブジェクト識別情報を含み、前記複数のオブジェクト識別情報のうちある一つに基づいて特定されるストレージ装置に対して、該ある一つのオブジェクトの保存又は取得を要求する処理と、前記複数のオブジェクト識別情報のうち別の一つに基づいて特定されるストレージ装置に対して、該別の一つのオブジェクトの保存又は取得を要求する処理とを、並行して行うようにしてもよい。 In the storage service providing apparatus, the management information object comprises a plurality of object identification information, the storage device specified based on one certain of the plurality of object identification information, said certain one object of the process of requesting a stored or acquired, the storage device specified based on one another among the plurality of object identification information, and a process of requesting a stored or acquisition of one object of said another , it may be performed in parallel.

これにより、並列処理が可能になるため、ファイルに対するアクセスを高速化することが可能となる。 Thus, since it is possible to parallel processing, it is possible to speed up access to files.

上記のストレージサービス提供装置において、保存されているファイルのデータの一部を更新する場合、データが書き換わるブロックオブジェクトに新たなオブジェクト識別情報を付与し、当該ブロックオブジェクトのデータから前記ファイルを構築するための情報を含む管理情報オブジェクトにも新たなオブジェクト識別情報を付与し、前記管理情報オブジェクトの新たなオブジェクト識別情報が前記ファイルに対応する先頭オブジェクト識別情報として求められるように設定することにより、同一のオブジェクト識別情報を有するオブジェクトの内容を不変とする管理を行ってもよい。 In the storage service providing apparatus, when updating a portion of the data files stored, impart new object identification information to the data rewritten block objects, constructing the file from the data of the block objects by also applying a new object identification information in the management information object that contains information for the new object identification information of the management information object set as required as the first object identification information corresponding to the file, the same object identification information content of the object with the may be performed administration to unchanged.

これにより、ファイルの内容の更新は、先頭オブジェクト識別情報のアトミックな書き換え(途中の状態が存在しない不可分な書き換え処理)で確定することになり、一旦生成されオブジェクト識別情報が付与された各管理情報オブジェクト及び各ブロックオブジェクトの内容が書き換えられることは一切ないから、ファイルは常に完全な状態で保存されていると見ることができる。 Thus, updating the contents of the file will be determined by atomic rewriting the head object identification information (atomic rewriting process there are no intermediate state), once the management information object identification information is generated is assigned since not all the objects and contents of each block object is rewritten, the file can be viewed and is always conserved in perfect condition. つまり、更新後のファイル内容を示す新たなブロックオブジェクトや新たな管理情報オブジェクトが生成されている間であっても、先頭オブジェクト識別情報が書き換わる直前までは、更新前のファイル内容が取得され、先頭オブジェクト識別情報が書き換わった直後から、更新後のファイル内容が取得されるようになる。 That is, even while the new block objects and new management information object indicating the contents of a file after updating is generated, just before the top object identification information rewritten, the file content before the update is obtained, immediately after the beginning object identification information is rewritten, file content after update is to be acquired.

したがって、ファイルの書き込み中であっても、同じファイル(更新前の内容)の読み出しが自由にできるし、同一のオブジェクト識別情報を有するオブジェクトの内容は不変であるから、各管理情報オブジェクト及び各ブロックオブジェクトの複製をそれぞれ独立に作成しても矛盾が起きることがなく、システム内に複製を準備することが容易に実現できる。 Thus, even during the writing of the file, the same file to read the (content before updating) can be freely, because the contents of the object having the same object identification information is invariable, the management information objects and each block When you create a duplicate of the object independently without conflict occurs, it is prepared to replicate in the system can be easily realized. また、更新前の先頭オブジェクト識別情報とファイルとの対応を履歴として蓄積しておくことにより、各時点のスナップショット(その時点の状態を保存したファイル)を提供することも容易に実現できる。 Further, by previously storing the correspondence between the update before the first object identification information and files as a history can be easily realized by providing a snapshot of each time point (file saved the state of the time).

上記のストレージサービス提供装置におけるオブジェクト識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段を、二つ以上のストレージ装置を特定可能なものとし、前記各ブロックオブジェクト及び前記管理情報オブジェクトを、複製して、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれの前記二つ以上のストレージ装置へ送信して保存させる手段をさらに備えるようにしてもよい。 At least one means for identifying the two or more storage devices and capable particular, each block object and the management of the plurality of storage devices based on the object identification information in the storage service providing apparatus an information object, and replication, may further comprise a means for saving and transmitting to each of the two or more storage apparatus specified based on the respective object identification information.

これにより、ファイルの書き込み時に、各オブジェクトの複製が作成され、これらの複製が複数のストレージ装置に分散して保存された状態にすることが可能になる。 Thus, when writing the file, copies of the objects are created, these replication is possible to state that was saved distributed across multiple storage devices.

上記のストレージサービス提供装置が、読み出すべきファイルに対応する管理情報オブジェクト及び各ブロックオブジェクトのそれぞれのオブジェクト識別情報に基づいて、前記複数のストレージ装置のうち該当するオブジェクト又はその複製を保存している二つ以上を特定する手段と、特定された一つのストレージ装置にアクセスして応答がなかった場合に、特定された別のストレージ装置にアクセスしてオブジェクト又はその複製を取得する手段とをさらに備えるようにしてもよい。 Additional storage service providing apparatus, based on the respective object identification information of the management information objects and each block object corresponding to the file should read, and store the corresponding object or a replica of the plurality of storage devices two one or more means for identifying, when no response to access a storage device identified, further comprising as the means for obtaining an object or a duplicate access to another storage device identified it may be.

これにより、いずれかのストレージ装置に障害が発生しても、そこから取得すべきオブジェクトの複製を他のストレージ装置から取得することができるため、本ストレージサービス提供装置が提供するサービスの利用者は、ストレージサービスを継続利用することができ、耐障害性を向上させることが可能となる。 Accordingly, even if failure of one storage device occurs, it is possible to obtain a copy of the object to be obtained from it from other storage devices, the user of the services to which this storage service providing device provides the , it is possible to continue to use the storage service, it is possible to improve the fault tolerance. 例えば、複数の事業者から提供されるストレージサービスを複数のストレージ装置と見立てて利用する場合、ある事業者のサービスがダウンしても、他の事業者のサービスを利用して、ストレージサービスを継続的に提供することが、自動的にできるようになる。 For example, when using likened the storage service provided by a plurality of operators and a plurality of storage devices, even down services of a certain operator, by using the other operators of the service, continuing the storage service providing manner is, it becomes possible automatically.

上記のストレージサービス提供装置が、読み出すべきファイルに対応する管理情報オブジェクト及び各ブロックオブジェクトのそれぞれのオブジェクト識別情報に基づいて、前記複数のストレージ装置のうち該当するオブジェクト又はその複製を保存している二つ以上を特定する手段と、特定された二つ以上のストレージ装置に並行してアクセスし、応答の早かったストレージ装置からオブジェクト又はその複製を取得する手段とさらに備えるようにしてもよい。 Additional storage service providing apparatus, based on the respective object identification information of the management information objects and each block object corresponding to the file should read, and store the corresponding object or a replica of the plurality of storage devices two one or more means for identifying, accessing in parallel in two or more storage devices that are identified may be from early had a storage device response to further include an object or means for obtaining the duplicate.

これにより、システムの冗長性を活用して、ファイルに対するアクセスをより高速化することが可能になる。 Thus, by utilizing the redundancy of the system, it is possible to further speed up the access to the file.

上記のストレージサービス提供装置において、保存されているファイルに対し部分的にデータを書き込む場合、書き込み対象のデータが前記ファイル中のどの部分に並ぶべきものかが指定され、前記ファイルに属する全てのブロックオブジェクト及び管理情報オブジェクトのうち前記指定された部分に関係するものを選択して又は新たにオブジェクトを生成して、この選択又は新たに生成された各オブジェクトのオブジェクト識別情報に基づいてそれぞれ特定されるストレージ装置にアクセスし、残りのオブジェクトについてはストレージ装置へのアクセスを行わないようにしてもよい。 In the storage service providing apparatus, when writing partially data to files stored, whether the data to be written is should line up to which part in the file is specified, all the blocks belonging to the file generates the object and select and or newly objects relate to the specified portion of the management information objects, are respectively specified based on the object identification information for each object the selected or newly generated It accesses the storage device may not be performed to access the storage device for the remaining objects.

これにより、ファイル中の任意の場所のデータを部分的に書き込むことが可能になり、ランダムアクセスが可能となる。 This makes it possible to write data anywhere in the file partially, it is possible to random access.

上記のストレージサービス提供装置において、保存されているファイルからデータを部分的に読み出す場合、読み出し対象のデータが前記ファイル中のどの部分に並んでいるものかが指定され、前記ファイルに属する全てのブロックオブジェクト及び管理情報オブジェクトのうち前記指定された部分に関係するものを選択して、この選択された各オブジェクトのオブジェクト識別情報に基づいてそれぞれ特定されるストレージ装置にアクセスし、残りのオブジェクトについてはストレージ装置へのアクセスを行わないようにしてもよい。 In the storage service providing apparatus, if the data from a file stored partially read, or not read target data is arranged in any part in the file is specified, all the blocks belonging to the file select the one related to the designated portion of the object and the management information objects, it accesses the storage apparatus specified respectively based on the object identification information for each object the selected storage for the remaining objects may not be performed access to the device.

これにより、ファイル中の任意の場所のデータを部分的に読み出すことが可能になり、ランダムアクセスが可能となる。 This makes it possible to read any location of the data in a file in part, it is possible to random access.

上記のストレージサービス提供装置において、前記書き込むべきファイルが、ユーザにより元のファイルの全体が暗号化されたものであって、複数のデータに分割され、前記複数のデータのうちあるデータを有するブロックオブジェクトと、別のデータを有するブロックオブジェクトとが、前記複数のストレージ装置のうちの別々のストレージ装置に保存されるように、ストレージ装置を特定するためのオブジェクト識別情報が割り当てられるようにしてもよい。 In the storage service providing apparatus, said file to be written, the entire original file by the user be one that is encrypted is divided into a plurality of data blocks objects with the data in the plurality of data When a block objects having different data so as to be stored in a separate storage device of the plurality of storage devices, may be the object identification information for specifying the storage device is allocated.

これにより、ファイルを利用者から預かって保存するサービスを、高いセキュリティで提供することが可能になる。 As a result, the service to save keep my files from the user, it is possible to provide a high security. つまり、分割されたデータを暗号化して保存するのではなく、ファイル全体が暗号化されたデータを分割して保存するため、そのようなデータの一部だけを悪意者が取得しても、部分的な復号すら不能にすることができる。 That is, rather than a divided data of storing encrypted, the entire file is saved by dividing the encrypted data, retrieving only part of such data malicious person, part it can be specific decoding even impossible. 特に、複数の事業者から提供されるストレージサービスを複数のストレージ装置と見立てて利用する場合、事業者毎に設備も利用にあたっての認証等も異なることが多いから、一つの事業者のセキュリティが破られても他の事業者までは影響が及ばず、データの全体を悪意者に取得される可能性を極めて低くすることが可能である。 In particular, when using likened the storage service provided by a plurality of operators and a plurality of storage devices, since with facilities for each operator authentication, etc. it may often differ in in use, broken One business security are affected to other operators not reach even, it is possible to extremely reduce the possibility of acquiring the entire data to STS.

上記のストレージサービス提供装置において、前記書き込むべきファイルが、ユーザにより元のファイルの全体が暗号化されたものであって、複数のデータに分割され、前記複数のデータのうちあるデータを有するブロックオブジェクトと、前記管理情報オブジェクトとが、前記複数のストレージ装置のうちの別々のストレージ装置に保存されるように、ストレージ装置を特定するためのオブジェクト識別情報が割り当てられるものであるようにしてもよい。 In the storage service providing apparatus, said file to be written, the entire original file by the user be one that is encrypted is divided into a plurality of data blocks objects with the data in the plurality of data When the management information objects, as will be stored in a separate storage device of the plurality of storage devices, it may be those object identification information for identifying the storage device is allocated.

これによっても、ファイルを利用者から預かって保存するサービスを、高いセキュリティで提供することが可能になる。 This also, the service to save keep my files from the user, it is possible to provide a high security. 悪意者が管理情報オブジェクトを取得できなければ、取得したブロックオブジェクトからファイルを構築することができず、同一ファイルに属する他のブロックオブジェクトがどれかも分からないため、復号不能となるからである。 If you can get malicious user management information objects, it is not possible to construct a file from the retrieved block objects, since the other blocks objects belonging to the same file does not even know any, because becomes impossible decoding.

上記のストレージサービス提供装置において、前記管理情報オブジェクトが、前記ファイルの部分を構成するデータを有するブロックオブジェクトのオブジェクト識別情報と、当該ブロックオブジェクトのデータが前記ファイル中のどの部分に並ぶべきかを示すオフセット情報とを含み、前記ファイル内にデータが存在しない部分がある場合、該データが存在しない部分に対応するブロックオブジェクトは生成せずに、存在するデータを有するブロックオブジェクト及び前記管理情報オブジェクトを保存させ、ファイルを読み出す際に、前記管理情報オブジェクトにより、前記ファイル中のある部分に対応するオブジェクト識別情報が存在しないことが示されると、該ある部分にNULデータを並べることにより、前記ファイルを取得するよ In the storage service providing apparatus, showing the management information objects, and object identification information of the block objects having data constituting part of the file, what should data of the block objects are arranged in any part in the file and a offset information, if there is a portion where no data exists in the file, without generating the block object corresponding to the portion where the data does not exist, save the block object and the management information objects having data present When reading allowed, the file is, by the management information object, the object identification information corresponding to a portion of in the file indicated the absence, by arranging the NUL data to the certain portion, obtains the file I will do it にしてもよい。 It may be.

これにより、ファイル中のデータのない部分についてはブロックの実体を保存しなくて済むため、ストレージ装置における保存に用いる容量は実際にデータがある分だけとすることができ、スパースファイルを容易に実現することが可能となる。 Thus, since the there is no portion of the data in the file need not save the substance of the block, the capacity used for the storage in the storage device may be a only actually data minute, easily realize a sparse file it is possible to become. ストレージサービスでは、使った容量に比例して課金されることがあるため、データのない分の容量まで料金を支払わずに済むことは、利用者にとっても好ましい。 The storage service, because it can be charged in proportion to volume with, you need not pay the fee to the minute volume no data is preferable for the user.

このように、ファイルの構造を管理情報オブジェクトだけで表現できれば、例えば、実際に書き込むデータの容量に関わらず巨大なサイズのファイルを作成しておき、後からそのファイル中のデータのない部分にデータを書き込んで、その時に初めてブロックオブジェクトを生成するような使い方も可能になる。 In this way, if you can represent the structure of the file only in the management information objects, for example, leave actually create the writing of huge size, regardless of the capacity of the data file, data in no part of the data in the file at a later time by writing, it also becomes possible use, such as to generate a first block object at that time.

上記のストレージサービス提供装置において、前記管理情報オブジェクトが、前記ファイルの部分を構成するデータを有するブロックオブジェクトのオブジェクト識別情報と、当該ブロックオブジェクトのデータが前記ファイル中のどの部分に並ぶべきかを示すオフセット情報とを含み、前記ファイル内にデータが存在する部分に続けてデータが存在しない部分がある場合、存在するデータと該データの長さの情報とを有するブロックオブジェクト及び前記管理情報オブジェクトを保存させ、ファイルを読み出す際に、前記管理情報オブジェクトが示す前記ファイル中のある部分に並ぶべきデータの長さが、該ある部分に対応するブロックオブジェクトが有する長さの情報が示すデータの長さより長いならば、長さが足りない分NULデータ In the storage service providing apparatus, showing the management information objects, and object identification information of the block objects having data constituting part of the file, what should data of the block objects are arranged in any part in the file and a offset information, save the block object and the management information objects having said when the data following the file to partial data is present there is no part exists, the length of the data and the data present information is, when reading a file, the length of the data to line up in certain parts of the said in the file that the indicated management information object is greater than the length of the data indicated by the length information included in the block object corresponding to the certain portion If, it is not long enough minute NUL data 並べることにより、前記ファイルを取得するようにしてもよい。 By arranging, it may acquire the file.

このように、管理情報オブジェクト中のオフセット情報とブロックオブジェクト中のデータの長さ情報とを用いることによっても、ストレージ装置における保存に用いる容量は実際にデータがある分だけとすることができ、スパースファイル(データが存在しない部分はデータ書き込みを行わないファイル)を実現することが可能になる。 Thus, by using the length information of data in the offset information and the block objects in the management information objects, the capacity used for the storage in the storage device may be a only actually data minute, sparse file (partial data is not present file no data write) it is possible to realize.

上記のストレージサービス提供装置において、読み出すべきファイルに対応して求められる先頭オブジェクト識別情報が付与された管理情報オブジェクトは、該ファイルの全体の長さの情報と、該長さを有する前記ファイル内のどの部分にどのオブジェクト識別情報が付与されたオブジェクトが配置されるかを示す情報とを含み、前記オブジェクト識別情報が付与されたオブジェクトが再び管理情報オブジェクトである場合には、当該管理情報オブジェクトは、当該オブジェクトが前記ファイル内で配置される領域の長さの情報と、 In the storage service providing apparatus, management information object top object identification information required to correspond is assigned to be the file read is the overall length information of the file, the file having said length which object identification information which parts and a information indicating either disposed granted object, if the object the object identification information is given is again management information object, the management information object, and length information of the region where the object is placed in the file,
該長さを有する前記領域中のどの部分にどのオブジェクト識別情報が付与されたオブジェクトが配置されるかを示す情報とを含み、前記オブジェクト識別情報が付与されたオブジェクトがブロックオブジェクトである場合には、当該ブロックオブジェクトは、前記ファイルを構成するデータと、該データの長さの情報とを有するようにしてもよい。 Includes information indicating whether the object to which object identification information is given to any part in the region having said length is arranged, the object the object identification information is granted when a block objects , the block object, and data constituting the file, may have a length information of the data.

これにより、先頭オブジェクト識別情報から管理情報オブジェクトを辿ってブロックオブジェクトにアクセスする過程で、ファイル全体の長さ、ファイル内の各領域の長さ、各領域に入るブロックオブジェクトのデータの長さが分かるため、各ブロックのデータサイズを可変としても、分散させて保存させた複数のブロックから元のファイルを構築することが可能になる。 Thus, in the process of accessing the leading object identification information block objects following the management information object from the length of the entire file, the length of each space in the file, the length of the data block object is seen entering each region Therefore, even if the data size of each block as a variable, it is possible to construct the original file from a plurality of blocks obtained by conserved dispersed. このように、各ブロックのデータを固定長にしなくてよいことを、保存するファイルのサイズを大小様々にするために活用することも可能である。 Thus, that need not be the data of each block to a fixed length, it is also possible to utilize for the various large and small the size of the file to be saved.

上記のストレージサービス提供装置において、保存されているファイルのデータの一部を更新する場合、前記ファイルに属するブロックオブジェクト及び管理情報オブジェクトのうち、データが書き換わるブロックオブジェクト及び当該ブロックオブジェクトのオブジェクト識別情報を含む管理情報オブジェクトを、各オブジェクトを保存しているストレージ装置から取得し、取得された各オブジェクトの内容のうち、前記データの書き換えによって変更されない部分はそのまま残し、変更される部分にデータを書き込むことにより、新たな各オブジェクトを生成して、該新たな各オブジェクトのオブジェクト識別情報に基づいて特定されるストレージ装置に保存させるようにしてもよい。 In the storage service providing apparatus, when updating a portion of the data files stored, said within the block object and management information object belongs file, data rewritten block objects and object identification information of the block objects the management information object with a, obtained from the Save and are storage devices each object, among the contents of the object obtained not changed portion by rewriting the data leaves intact, writes data to a portion to be changed by generates a new each object may be caused to store in the storage apparatus specified based on the new object identity of the object.

これにより、ファイルの書き込みに係るオブジェクトの操作を、get(取得)とput(保存)という基本命令によって実現することが可能になる。 Thus, the operation of the object according to the writing of the file, it is possible to achieve by the basic instruction that get (retrieve) and put (save).

上記のストレージサービス提供装置における前記オブジェクト識別情報を付与する手段を、前記複数のストレージ装置に保存される全てのブロックオブジェクト及び管理情報オブジェクトの間で一意になるように、新たなオブジェクト識別情報を割り当てるものとしてもよい。 Means for applying the object identification information in the storage service providing apparatus, to be unique among all the blocks object and management information objects stored in said plurality of storage devices, allocates a new object identity it may be a thing.

これにより、オブジェクト識別情報として、例えば、UUID(Universal Unique Identifier)を付与することができ、オブジェクトの内容が更新される毎に新たにオブジェクト識別情報を付与することによって、上述したアトミックな更新、ファイルの書き込み中の読み出し、複製及びスナップショットの提供等も可能になる。 Thus, as the object identification information, for example, can impart UUID (Universal Unique Identifier), newly by grant object identification information for each of the contents of the object is updated, atomic updates described above, the file reading in writing, it becomes possible provision of replication and snapshot.

上記のストレージサービス提供装置における前記オブジェクト識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段が、前記オブジェクト識別情報の値に対して所定の計算を行った結果を前記複数のストレージ装置の数で割り算して得られる余りの値に従って、前記複数のストレージ装置のうちの一つを特定することを含むようにしてもよい。 Means for identifying at least one of the plurality of storage devices based on the object identification information in the storage service providing apparatus, said plurality of results of predetermined calculation with respect to the value of the object identifier information according to the value of the remainder obtained by dividing the number of storage devices, it may include identifying a one of the plurality of storage devices.

これにより、例えば、ストレージ装置(物理デバイス、ストレージサーバ、又はストレージサービス)の個数がS個であった場合、オブジェクト識別情報から計算される余りの値が0〜(S−1)のいずれになるかによって、そのオブジェクトが保存されるストレージ装置を特定することができる。 Thus, for example, when the number of storage devices (physical devices, the storage server, or storage service) was the S, becomes any value of the remainder calculated from the object identification information 0 of (S-1) or, it is possible to identify the storage device in which the object is saved.

このように、各オブジェクトがどのストレージ装置に保存されるかについては、オブジェクト識別情報に対して計算を行うだけで求めることができ、システム内に管理情報を保持する必要がない構成にすると、単一障害点となる要素をさらに低減することが可能になる。 Thus, for either the object is stored in which storage system, it can be obtained only by performing calculations on the object identification information, when the configuration is not necessary to hold the management information in the system, a single it is possible to further reduce the element which is one point of failure. 例えば、ストレージ装置によってアクセス方法が異なる場合は、ストレージ装置とアクセス方法との対応を示す情報をシステム内に保持することになるが、この情報の量は、ストレージ装置の数の分だけに限られ、上述した管理情報のようにファイルの数及びそれを構成するオブジェクトの数によって爆発的に増加するものではないため、単一障害点となる要素を極めて少なくできる。 For example, if the access method by the storage system are different, but will retain the information indicating the correspondence between the storage device and access method in the system, the amount of this information is limited to the partial number of storage devices , because it is not intended to exploding the number of objects that constitute the number and its file as management information described above, it can be very small elements a single point of failure.

別の例として、各ストレージ装置が担当する値の範囲を割り振っておき(ストレージ装置Bは35以上49未満、ストレージ装置Cは49以上60未満、…等)、オブジェクト識別情報から計算される値(例えば、ハッシュ値)が、どの範囲に入るかによって、そのオブジェクトが保存されるストレージ装置を特定するようにしてもよい。 As another example, each storage device is previously assigned a range of values ​​in charge (storage device B is less than 35 to 49, the storage device C is less than 60 49 or more, ..., etc.), the value calculated from the object identification information ( for example, a hash value) is, depending fall which range, may identify the storage device in which the object is saved.

この場合、上記のストレージサービス提供装置における前記オブジェクト識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段が、前記複数のストレージ装置のそれぞれに該装置の担当する値の範囲を割り振り、前記オブジェクト識別情報の値に対して所定の計算を行った結果と各装置の担当する値の範囲とを比較することにより、前記複数のストレージ装置のうちの一つを特定することを含むようにしてもよい。 In this case, at least one means for specifying a range of charge values ​​of the device to each of the plurality of storage devices of the plurality of storage devices based on the object identification information in the storage service providing apparatus allocation, by comparing the range of charge values ​​of the result and the device performing the predetermined calculation with respect to the value of the object identification information, that identifies one of said plurality of storage devices it may include.

これによっても、各オブジェクトがどのストレージ装置に保存されるかについては、オブジェクト識別情報に対して計算を行うだけで求めることができるため、単一障害点となる要素を低減することが可能になる。 This also for whether each object is stored in which storage system, it is possible to determine only by performing calculations on the object identification information, it is possible to reduce the element as a single point of failure . 上述した余りの値を使う方法は、ストレージ装置の個数が固定的となるため、静的な方法であるが、こちらの担当範囲の値を使う方法は、担当範囲を動的に変更することができるため、ストレージ装置の動的な追加や削除に対応することができる。 How to use the value of the remainder described above, since the number of the storage device is fixed, is a static method, a method of using a value here assigned range may be changed dynamically assigned range since it can correspond to a dynamic addition or deletion of the storage device.

その場合、すなわち、前記ネットワークを介して接続されるストレージ装置が追加又は削除される場合、上記のストレージサービス提供装置において、前記オブジェクト識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段を、複数のオブジェクト識別情報のうちの一部について追加されたストレージ装置が特定されるように、又は、いずれのオブジェクト識別情報についても削除されたストレージ装置が特定されないように、特定の処理方法を変更するものとしてもよい。 In this case, i.e., when the storage device connected via the network is added or deleted, in the storage service providing apparatus, at least one of the plurality of storage devices based on the object identification information means for specifying, as added storage device about a portion of the plurality of object identification information is specified, or to not be identified deleted storage device for any object identification information, the specific processing method may alternatively change the.

なお、上記のストレージサービス提供装置においては、ファイルと先頭オブジェクト識別情報との対応が、ファイルの数によって増加する管理情報になり得る。 In the above storage service providing apparatus, correspondence between a file and the top object identification information may be the management information to increase the number of files. このファイルと先頭オブジェクト識別情報との対応をどこに保持するかについては、例えば、次の3つの方法があり得る。 Whether to hold the correspondence between the file and the top object identification information where, for example, there may be three ways. 先頭オブジェクト識別情報は、例えば、最初にファイルを作成する時には、内容が空であることを示す特別なIDがどのファイルについても割り振られ、ファイルの内容が書き込まれると、システム全体で一意なオブジェクトIDが付与され、ファイルの内容がその後更新されると、新たに一意なオブジェクトIDに書き換えられる。 Top object identification information is, for example, when creating a first file, the contents are also allocated for any file special ID indicative of the empty, the contents of the file is written, a unique object ID for the entire system There is granted, and the contents of the file is then updated, rewritten to the newly unique object ID. なお、オブジェクトIDは、そのオブジェクトがテーブルであるかブロックであるかを示す情報を含んでもよい。 Incidentally, the object ID, the object may include information indicating whether the block is a table.

第1の方法は、ストレージサービス提供装置自身によって保持する方法であり、例えば、上述したストレージ装置とアクセス方法との対応を示す情報と共通の管理下で記憶しておくようにしてもよい。 The first method is a method of holding by the storage service providing apparatus itself, for example, it may be stored in a common managed and information indicating the correspondence between the storage device and access method described above. この場合、上記のストレージサービス提供装置が、読み出すべきファイルに対応する先頭オブジェクト識別情報を記憶する手段をさらに備え、前記記憶された先頭オブジェクト識別情報に基づいて、前記ファイルについて最初にアクセスするストレージ装置を特定するようにしてもよい。 In this case, the storage service providing apparatus, further comprising a means for storing the first object identification information corresponding to the file to be read, on the basis of the stored first object identification information, the storage device to initially access the said file it may be identify.

第2の方法は、複数のストレージ装置のうち、そのファイルのファイル識別情報に基づいて特定されるストレージ装置に保存させる方法である。 The second method, out of the plurality of storage devices, a method of saving the storage apparatus specified based on the file identification information of the file. この場合、上記のストレージサービス提供装置が、読み出すべきファイルの識別情報に基づいて前記複数のストレージ装置のうちの少なくとも一つを特定する手段をさらに備え、ここで特定されるストレージ装置が、読み出すべきファイルに対応する先頭オブジェクト識別情報を、管理情報オブジェクトの一種として保存するようにしてもよい。 In this case, the storage service providing apparatus, further comprising a means for identifying at least one of the file identification information of the plurality of storage devices based on the to be read, the storage device specified here, to be read the head object identification information corresponding to the file may be stored as a kind of management information objects.

第3の方法は、ストレージサービス提供装置に接続されるデータベース等によって保持する方法であり、例えば、各ファイルの属性情報(所有者、作成日時、更新日時、タイトル、パスワード等)を保存するデータベースに、属性情報のうちの一つの要素として、そのファイルの先頭オブジェクト識別情報を記入しておいてもよい。 The third method is a method of holding by a database or the like connected to the storage service providing apparatus, for example, attribute information of each file (owner, creation date, modification date, title, passwords etc.) in a database that stores , as one of the elements of the attribute information, it may be allowed to fill in the top object identification information of the file. この場合、上記のストレージサービス提供装置が、各ファイルに対応する先頭オブジェクト識別情報をファイルの属性情報とともに記憶する属性管理装置とネットワークを介して接続する手段をさらに備え、読み出すべきファイルに対応する先頭オブジェクト識別情報を前記属性管理装置から取得し、取得した先頭オブジェクト識別情報に基づいて、前記ファイルについて最初にアクセスするストレージ装置を特定するようにしてもよい。 Top case, the above storage service providing apparatus, corresponding to each file in further comprising means for connecting through the attribute management device and the network for storing a first object identification information together with the file attribute information of the corresponding read to the file It gets an object identification information from the attribute management unit, based on the acquired first object identification information, may identify the storage device to initially access the said file.

本発明の原理に従う一つのストレージサービス提供システムは、クライアント装置及び該クライアント装置にネットワークを介して接続された複数のストレージ装置を備え、該クライアント装置がユーザに対してファイルのストレージサービスを提供する。 One storage service providing system in accordance with the principles of the present invention comprises a plurality of storage devices connected via the network to the client device and the client device, the client device provides the storage services of the file to the user. そして、前記複数のストレージ装置は、一つのファイルにつき、それぞれオブジェクト識別情報が付与された複数のブロックオブジェクト及び一つ以上の管理情報オブジェクトを保存する手段を備え、前記複数のブロックオブジェクトのそれぞれは、複数のデータに分解された前記ファイルを構成する各データを有し、前記管理情報オブジェクトは、前記各ブロックオブジェクトのデータから前記ファイルを構築するための情報を有するものであり、前記クライアント装置は、読み出すべきファイルに対応する先頭オブジェクト識別情報を求め、当該先頭オブジェクト識別情報に基づいて特定されるストレージ装置にアクセスして、前記管理情報オブジェクトを取得する手段と、取得された管理情報オブジェクトに含まれている前記ファイル Then, the plurality of storage devices, per one file, each provided with means for object identification information stores the granted plurality of blocks objects and one or more management information objects, each of the plurality of blocks objects, having respective data constituting the file that is decomposed into a plurality of data, the management information objects, which has information for building the files from the data of each block object, the client device, obtaining the first object identification information corresponding to the file to be read, accesses the storage apparatus specified on the basis of the top object identification information, and means for acquiring the management information objects, included in the obtained management information object the files are 構築するための情報を用いて、前記ファイルを構成するデータを有するブロックオブジェクトのオブジェクト識別情報を求め、当該オブジェクト識別情報に基づいて特定されるストレージ装置にアクセスして、前記ブロックオブジェクトを取得する手段と、取得されたブロックオブジェクトが有するデータを、前記ファイルを構築するための情報に従って並べることにより、前記ファイルを取得する手段とを備える。 Using information for constructing the sought object identification information of the block objects having data constituting the file, it accesses the storage apparatus specified based on the object identification information, means for acquiring the block object When the data included in the acquired block objects, by arranging according to the information for constructing the file, and a means for acquiring the file.

このシステムにおけるクライアント装置は、上述したストレージサービス提供装置のうちのファイルの読み出しに係る機能を有するものであるが、ファイルの書き込みに係る機能を付加したものとしてもよい。 The client device in this system, but has a function of the reading of the file of the above-mentioned storage service providing apparatus may be obtained by adding a function of the write file.

上記のストレージサービス提供システムにおいて、複数の前記クライアント装置を備えるようにし、前記管理情報オブジェクトが、複数のオブジェクト識別情報を含み、前記複数のクライアント装置のそれぞれが、前記読み出すべきファイルに対応する先頭オブジェクト識別情報を求めることができるように設定され、前記先頭オブジェクト識別情報に基づいて前記管理情報オブジェクトの取得を要求する処理及び前記複数のオブジェクト識別情報に基づいて各オブジェクトの取得を要求する処理を、他のクライアント装置から独立して行うようにしてもよい。 In the storage service providing system, so as to comprise a plurality of said client device, the management information object comprises a plurality of object identification information, the beginning objects, each of said plurality of client devices, corresponding to the read to file is set so as to be able to obtain the identification information, the process of requesting the acquisition of each object based on the processing and the plurality of object identification information for requesting acquisition of the management information object based on the first object identification information, it may be performed independently of the other client devices.

これにより、特定のファイルに多数のアクセスが集中するような場合、エンドユーザからのアクセスを受け付けるクライアント装置を複数設けて、フロントエンドでアクセス処理を分散することができ、バックエンドの複数のストレージ装置にファイルが分散して保存されているという利点を、さらに効果的に引き出すことが可能になる。 Thus, if such a large number of access to a particular file concentrates, by providing a plurality of client devices for accepting an access from the end user, it is possible to distribute the access processing in the front end, a plurality of storage devices backend file the advantage that is stored in a distributed, it is possible to further draw effective in.

上述したストレージサービス提供装置の各発明は、ストレージサービス提供システムの発明としても成立し、上述したストレージサービス提供システムの各発明は、そこでクライアント装置として動作するストレージサービス提供装置の発明としても成立するものである。 Those inventions of the above-mentioned storage service providing apparatus, also an invention of the storage service providing system, the invention of the above-mentioned storage service providing system, which where also an invention of the storage service providing apparatus that operates as a client device it is.

さらに、上述したストレージサービス提供装置又はシステムの各発明は、ストレージサービス提供装置が行う方法の発明としても、システム全体が行う方法の発明としても、汎用のコンピュータを本ストレージサービス提供装置として動作させるためのプログラム(又はそのプログラムを記録した記録媒体)の発明としても、汎用のコンピュータシステムを本システムとして動作させるためのプログラム(又はそのプログラムを記録した記録媒体)の発明としても、勿論成立するものである。 Further, the invention of the above-mentioned storage service providing apparatus or system, also as an invention of a method of storage service providing apparatus performs, also as an invention of a method of the whole system is carried out, for operating a general-purpose computer as the storage service providing apparatus programs (or the program recorded recording medium) as the invention of also as an invention of a program for operating a general-purpose computer system as the system (or a recording medium recording the program), one that holds course is there.

例えば、本発明の原理に従う一つのストレージサービス提供方法(ファイルの書き込みに係る)は、複数のストレージ装置とネットワークを介して接続されたコンピュータにより、これらのストレージ装置を利用してファイルを保存するサービスを提供する方法であって、書き込むべきファイルを一つ以上のデータに分解し、該ファイルを構成するデータをブロックオブジェクトとして、各ブロックオブジェクトにオブジェクト識別情報を付与し、前記各ブロックオブジェクトのデータから前記ファイルを構築するための情報を作成し、該情報を管理情報オブジェクトとして、管理情報オブジェクトにオブジェクト識別情報を付与し、前記各ブロックオブジェクト及び前記管理情報オブジェクトを、前記複数のストレージ装置のうち、それぞ For example, one storage service providing method in accordance with the principles of the present invention (according to the writing of the file), by a computer connected via a plurality of storage devices and network, to save the file by using these storage devices Service a method of providing a file to be written to decompose into one or more data, the data constituting the file as a block object, the object identification information assigned to each block object, from said data of the block object the create information to build a file, the information as the management information object, grant object identification information to the management information object, wherein each block object and the management information objects among the plurality of storage devices, that のオブジェクト識別情報に基づいて特定されるそれぞれのストレージ装置へ、送信して保存させる。 To each identified based on the object identification information of the storage device to store and transmit.

本発明の原理に従う別のストレージサービス提供方法(ファイルの読み出しに係る)は、複数のストレージ装置とネットワークを介して接続されたコンピュータにより、これらのストレージ装置を利用して保存されているファイルを取得するサービスを提供する方法であって、一つのファイルにつき、それぞれオブジェクト識別情報が付与された複数のブロックオブジェクト及び一つ以上の管理情報オブジェクトが保存されており、前記複数のブロックオブジェクトのそれぞれは、複数のデータに分解された前記ファイルを構成する各データを有し、前記管理情報オブジェクトは、前記各ブロックオブジェクトのデータから前記ファイルを構築するための情報を有するものであり、読み出すべきファイルに対応する先頭オブジェクト識別情報 Another storage service providing method in accordance with the principles of the present invention (according to the reading of the file), by a computer connected via a plurality of storage devices and a network, acquires a file stored utilizing these storage devices a method of providing a service to, per one file, and a plurality of blocks objects and one or more management information object the object identification information is given respectively stored, each of the plurality of blocks objects, having respective data constituting the file that is decomposed into a plurality of data, the management information objects, which has information for building the files from the data of each block object, corresponding to the file to be read top object identification information 求め、当該先頭オブジェクト識別情報に基づいて特定されるストレージ装置にアクセスして、前記管理情報オブジェクトを取得し、取得された管理情報オブジェクトに含まれている前記ファイルを構築するための情報を用いて、前記ファイルを構成するデータを有するブロックオブジェクトのオブジェクト識別情報を求め、当該オブジェクト識別情報に基づいて特定されるストレージ装置にアクセスして、前記ブロックオブジェクトを取得し、取得されたブロックオブジェクトが有するデータを、前記ファイルを構築するための情報に従って並べることにより、前記ファイルを取得する。 Determined, by accessing the storage apparatus specified on the basis of the top object identification information, acquires the management information objects, using the information for constructing the file that is included in the obtained management information object to obtain the object identification information of the block objects having data constituting the file, the access to the storage apparatus specified based on the object identification information, acquires the block object, data included in the acquired block objects and by arranging in accordance with the information for constructing the file, it acquires the file.

また例えば、本発明の原理に従う一つのストレージサービス提供プログラム(ファイルの書き込みに係る)は、複数のストレージ装置とネットワークを介して接続されたコンピュータを、これらのストレージ装置を利用してファイルを保存するサービスを提供する装置として動作させるためのプログラムであって、書き込むべきファイルを一つ以上のデータに分解し、該ファイルを構成するデータをブロックオブジェクトとして、各ブロックオブジェクトにオブジェクト識別情報を付与するためのプログラムコードと、前記各ブロックオブジェクトのデータから前記ファイルを構築するための情報を作成し、該情報を管理情報オブジェクトとして、管理情報オブジェクトにオブジェクト識別情報を付与するためのプログラムコードと、前記各 Further, for example, one of the storage service providing program in accordance with the principles of the present invention (according to the writing of the file), a computer connected via a plurality of storage devices and network, to save the file by using these storage devices a program for operating as a device for providing services to decompose the file to be written to one or more data, the data constituting the file as a block object, for providing object identification information to each block object program code, the created information to build the file from the data of each block object, the information as the management information object, and the program code for providing object identification information to the management information objects, each ロックオブジェクト及び前記管理情報オブジェクトを、前記複数のストレージ装置のうち、それぞれのオブジェクト識別情報に基づいて特定されるそれぞれのストレージ装置へ、送信して保存させるためのプログラムコードとを備える。 The lock object and the management information objects among the plurality of storage devices, comprising the respective storage apparatus specified based on the respective object identification information, and program code for causing the stored transmitted.

本発明の原理に従う別のストレージサービス提供プログラム(ファイルの読み出しに係る)は、複数のストレージ装置とネットワークを介して接続されたコンピュータを、これらのストレージ装置を利用して保存されているファイルを取得するサービスを提供する装置として動作させるためのプログラムであって、一つのファイルにつき、それぞれオブジェクト識別情報が付与された複数のブロックオブジェクト及び一つ以上の管理情報オブジェクトが保存されており、前記複数のブロックオブジェクトのそれぞれは、複数のデータに分解された前記ファイルを構成する各データを有し、前記管理情報オブジェクトは、前記各ブロックオブジェクトのデータから前記ファイルを構築するための情報を有するものであり、読み出すべきファイル Another storage service providing program in accordance with the principles of the present invention (according to the reading of the file), acquires a computer connected via a plurality of storage devices and network are stored by using these storage devices file to a program for operating as a device for providing a service, per one file, a plurality of blocks objects and one or more managed object identification information it is given respectively information object is stored, said plurality of each block object, having respective data constituting the file that is decomposed into a plurality of data, the management information objects, which has information for building the files from the data of the respective blocks object , read to file 対応する先頭オブジェクト識別情報を求め、当該先頭オブジェクト識別情報に基づいて特定されるストレージ装置にアクセスして、前記管理情報オブジェクトを取得するためのプログラムコードと、取得された管理情報オブジェクトに含まれている前記ファイルを構築するための情報を用いて、前記ファイルを構成するデータを有するブロックオブジェクトのオブジェクト識別情報を求め、当該オブジェクト識別情報に基づいて特定されるストレージ装置にアクセスして、前記ブロックオブジェクトを取得するためのプログラムコードと、取得されたブロックオブジェクトが有するデータを、前記ファイルを構築するための情報に従って並べることにより、前記ファイルを取得するためのプログラムコードとを備える。 Obtaining the first object identification information corresponding accesses the storage apparatus specified on the basis of the top object identification information, and program code for acquiring the management information objects contained in the obtained management information object using information for constructing the file you are asked object identification information of the block objects having data constituting the file, it accesses the storage apparatus specified based on the object identification information, the block object and program code for obtaining the data included in the acquired block objects, by arranging according to the information for constructing the file, and a program code for acquiring the file.

以上のとおり、本発明によれば、多数のストレージ装置を利用し様々なサイズの大量のファイルを保存して提供するストレージサービスを、システムにおいて単一障害点となる要素を低減しスケーラビリティを向上させた仮想ストレージとして実現することが可能になる。 As described above, according to the present invention, saved storage services provided by a large number of files of various sizes using a number of storage devices, to reduce the element as a single point of failure is scalability in the system and it is possible to realize a virtual storage.

本発明の実施の形態における分散型ストレージサービス提供システム(本システム)の説明図 Illustration of a distributed storage service providing system according to an embodiment of the present invention (the system) 本システムのクライアント装置の構成を示すブロック図 Block diagram showing the configuration of a client device of the system 本システムのストレージ装置の構成を示すブロック図 Block diagram showing the configuration of a storage device of the system 本システムの機能の説明図 Illustration of the functionality of the system 本システムのファイル構造の概念図 Conceptual view of the file structure of the system 本システムのファイル構造の概念図 Conceptual view of the file structure of the system 本システムのファイル構造を説明するための具体例を示す図 It illustrates a specific example for explaining the file structure of the system 本システムの仕組みの説明図 Illustration of the mechanism of this system 本システムにおけるファイル読み出しアクセスの例を示す図 Shows an example of a file read access in the system 本システムにおけるファイル書き込みアクセスの例を示す図 It shows an example of file write access in the system 本システムにおけるファイル書き込みアクセスの例を示す図 It shows an example of file write access in the system 本システムにおけるファイル書き込みアクセスの例を示す図 It shows an example of file write access in the system 本システムにおけるファイル書き込みアクセスの例を示す図 It shows an example of file write access in the system 本システムにおけるファイル書き込みアクセスの例を示す図 It shows an example of file write access in the system 本システムにおける静的なサービステーブルの例を示す図 It illustrates an example of a static service table in the present system 本システムにおける動的なサービステーブルの例を示す図 It illustrates an example of a dynamic service table in the present system 本システムにおいて動的なサービステーブルを実現する手法の例を説明するための図 Diagram for explaining an example of a method for realizing dynamic service table in the system 本システムにおけるクライアント装置の分散処理の説明図 Illustration of the distributed processing of the client device in this system 本システムにおけるクラス情報の共有の説明図 Illustration of a shared class information in the present system 本システムにおける並列分散処理によるファイル書き込み処理の説明図 Illustration of file write processing by parallel distributed processing in the system 本システムの特徴の説明図 Illustration of the features of the system

以下、本発明の実施の形態のシステムについて、図面を用いて説明する。 Hereinafter, the system of the embodiment of the present invention will be described with reference to the drawings. 本実施の形態では、例えば、ストレージサービス(ユーザのデータをネットワーク上の多数のストレージ装置に保存するサービス)等のクラウドサービスに用いられる分散型ストレージサービス提供システムの場合を例示する。 In this embodiment, for example, it illustrates the case of a storage service (service stores the user data to multiple storage devices on the network) or the like distributed storage service providing system for use in cloud services.

まず、本実施の形態の分散型ストレージサービス提供システム(本システム)の構成を、図面を参照して説明する。 First, the configuration of the distributed storage service providing system of the present embodiment (the present system) will be described with reference to the drawings. 図1は、本システムの構成を示す説明図である。 Figure 1 is an explanatory view showing a configuration of the present system. 図1に示すように、本システム1は、エンドユーザが使用するユーザ端末2と、本システム1の利用者(サービス提供者)が使用するクライアント装置3と、クライアント装置3にネットワークを介して接続された複数のストレージ装置4で構成されている。 As shown in FIG. 1, the system 1 includes, connected to the user terminal 2, the client device 3 to use the user of the system 1 (service provider) is, via a network to the client device 3 used by end users It is composed of a plurality of storage device 4. 本システムでは、クライアント装置3を介してストレージサービスがエンドユーザに提供される。 In this system, the storage service is provided to the end user via the client device 3. したがって、クライアント装置3は、ストレージサービス提供装置と呼ぶこともできる。 Thus, the client device 3 can also be referred to as a storage service providing apparatus. ここで、ユーザ端末2やクライアント装置3は、例えばコンピュータなどであり、ストレージ装置4は、例えば事業者やデータセンターなどに設置されたサーバなどである。 Here, the user terminal 2 and the client apparatus 3 is, for example a computer, etc., the storage apparatus 4, for example, operators and data centers, etc., such as installation servers.

図1(a)は、複数の事業者(例えば、事業者A〜C)のストレージサービスを仮想デバイスに見立てた場合の説明図である。 1 (a) is a plurality of carriers (e.g., carrier A through C) is an explanatory view when regarded storage services of the virtual device. また、図1(b)は、複数のサーバ(サーバA〜E)のストレージ機能を仮想デバイスに見立てた場合の説明図である。 1 (b) is an explanatory view when regarded a storage function of the plurality of servers (server A-E) to the virtual device. 図1(a)および(b)に示すように、本システムでは、仮想デバイスを多数たばねることにより、論理的に容量が無制限の仮想的なファイルとして扱うことができる。 As shown in FIGS. 1 (a) and (b), in this system, by bundling a large number of virtual devices can be logically capacity handled as unlimited virtual file. この場合、エンドユーザが使用するユーザ端末からは、ネイティブファイルシステムとして見えるようになる。 In this case, from the user terminal used by an end user, it becomes visible as a native file system.

図2は、本システムのクライアント装置3の構成を示すブロック図である。 Figure 2 is a block diagram showing the configuration of the client apparatus 3 of the present system. 図2に示すように、クライアント装置3は、ストレージ装置4との通信を行う通信部5と、ユーザ端末2からの要求に応じてファイルの書き込み処理や読み出し処理を実行する書き込み・読み出し処理部6と、ストレージ装置4へのアクセス方法を定めるためのサービステーブル記憶部7を備えている。 As shown in FIG. 2, the client device 3, a communication unit 5 for communicating with the storage device 4, the writing and reading processing unit 6 for executing writing processing and reading processing of the file in response to a request from the user terminal 2 When, and a service table storage unit 7 for determining how to access the storage device 4.

図3は、本システムのストレージ装置4の構成を示すブロック図である。 Figure 3 is a block diagram showing the configuration of the system storage unit 4. 図2に示すように、ストレージ装置4は、クライアント装置3との通信を行う通信部8と、ファイルやオブジェクトが保存されるファイル・オブジェクト保存部9と、保存されているファイルやオブジェクトの管理を行うファイル・オブジェクト管理部10を備えている。 As shown in FIG. 2, the storage apparatus 4 includes a communication unit 8 for communicating with the client device 3, a file object storage unit 9 which files and objects are stored, the management of files and objects stored It has a file object management unit 10 for performing.

次に、本システムの機能について説明する。 Next, a description will be given of the function of the system. 図4は、本システムの機能の説明図である。 Figure 4 is an illustration of the functionality of the system. 上述のように、本システムは、エンドユーザが使用するユーザ端末からは、標準的なNFS(ネットワークファイルシステム)サーバ(例えば、RFC1813サーバ)などとして使うことができる。 As described above, the system from the user terminal used by an end user, the standard NFS (Network File System) server (e.g., RFC1813 server) can be used as such. そのため、本システムは、ファイルへの操作に関して、以下のような種々の機能を備えている。 Therefore, this system, with respect to the operation to the file is provided with various functions as follows.

まず、図4(a)に示すように、本システムは、ファイルを作成するための「CREATE」という機能と、ファイルを削除するための「DELETE」という機能を備えている。 First, as shown in FIG. 4 (a), the system includes a feature called "CREATE" to create a file, the function of "DELETE" for deleting a file. 「CREATE」の機能では、特にパラメータなどは用いられない。 In the function of the "CREATE", no particular parameters, such as is used. 「DELETE」の機能では、「file-id In the function of the "DELETE", "file-id
」がパラメータとして用いられる。 "It is used as a parameter. ここで、「file-id」は、ファイルを識別するための識別情報である。 Here, the "file-id" is identification information for identifying the file.

また、図4(b)に示すように、本システムは、ファイルからデータを読み出すための「READ」という機能と、ファイルへデータを書き込むための「WRITE」という機能を備えている。 Further, as shown in FIG. 4 (b), the system includes a feature called "READ" to read data from a file, a feature called "WRITE" to write data to a file. 「READ」の機能では、「file-id」、「offset」、「data」などがパラメータとして用いられる。 In the function of the "READ", "file-id", "offset", such as "data" is used as a parameter. 「WRITE」の機能では、「file-id」、「offset」、「データ領域」などがパラメータとして用いられる。 The function of the "WRITE", "file-id" and "offset", "data area" is used as a parameter. ここで、「offset」は、データがデータ領域内でどの部分に配置されるべきかを示す情報である。 Here, "offset" is information indicating whether the data should be placed in any part in the data area. 「data」は、文字列や数値などのデータの情報であり、データの長さ(length)の情報も含まれる。 "Data" is information of data, such as strings or numbers, also includes information of the length of the data (length). 「データ領域」は、データが書き込まれる領域の情報であり、その領域に書き込むことができるデータの長さ(length)の情報も含まれる。 "Data area" is information of a region where the data is written, includes information of the length of data that can be written in the area (length).

次に、本システムのファイル構造について説明する。 It will now be described file structure of this system. および図は、本システムのファイル構造の概念図である。 5 and 6 is a conceptual diagram of a file structure of the system. 本システムでは、図に示すようなデータ構造でファイルが表現される。 In this system, the file is represented by a data structure as shown in FIG. ユーザ端末からアクセスされるファイルは、「ファイルオブジェクト(単にファイルともいう)」、「テーブルオブジェクト(単にテーブルともいう)」、「ブロックオブジェクト(単にブロックともいう)」により構成される階層構造を有している。 Files accessed from the user terminal, "(also referred to simply file) file object", "(also referred to simply as table) Table objects", has a hierarchical structure composed of a "block object (also simply referred to as blocks)" ing. この場合、「ファイルオブジェクト」の中に「テーブルオブジェクト」が含まれ、「テーブルオブジェクト」の中に「ブロックオブジェクト」が含まれる。 In this case, it includes a "table objects" in the "file object" includes "block objects" in the "table object". に示すように、「テーブルオブジェクト」の中に「テーブルオブジェクト」が含まれてもよい。 As shown in FIG. 5, it may include "table object" in the "table object". なお、この概念図は、本システムのファイル構造を抽象的に表現したものである(データの実体やデータの保存場所については後述する)。 Incidentally, this concept diagram (will be described later location of the entity or data of the data) abstract is a representation of the file structure of the present system.

この場合、ユーザ端末からのファイルへのアクセスは、利用するプロトコルに依存する。 In this case, access to the file from the user terminal is dependent on the available protocols. 例えば、ファイルシステムでは、ファイルへのアクセスに「パス名」が用いられる。 For example, in the file system, "path name" is used to access the file. また、NFSの場合には「パス名」から対応する「file handle」を検索し、それ以降は「file handle」を用いてファイルへのアクセスが行われる。 In addition, in the case of NFS is to search for "file handle" corresponding from the "path name", subsequent access to the file using the "file handle" is performed. また、HTTPの場合には「URL」がファイルへのアクセスに用いられる。 In addition, it used to access the "URL" file in the case of HTTP.

本システムでは、ファイルは「file-id」によって表現される。 In this system, the file is represented by a "file-id". 上述のように「file-id」は、ファイルに対して一意なID(識別情報)である。 As mentioned above, "file-id" is a unique ID (identification information) for the file. 本システムでは、ファイルの実体はテーブルであり、テーブルは、ファイルの長さ(length)やデータの配置(offset)などの情報を持っている。 In this system, the entity of the file is a table, the table has information such as file length (length) and the arrangement of data (offset). なお、上述のように、テーブルは、再帰的に配置が可能なテーブルを表現することができ、テーブルの中にテーブルを配置することが可能である。 As described above, the table may be expressed a table that can be recursively arrangement, it is possible to place the table in the table. テーブルは、テーブルを構成する要素のオブジェクト(テーブルまたはブロック)のリスト(<offset,object-id>のリスト)を取得するインターフェースを備えている。 Table, and an interface to retrieve an object of elements of the list of tables (tables or blocks) (<offset, object-id> list). 本システムでは、ブロックがデータの実体を表現している。 In this system, the block is to represent actual data. ブロックは、実データ(仮想デバイス上に存在するデータ)にアクセスするためのインターフェースを備えている。 Block has an interface for accessing the actual data (data present on the virtual device).

図6では、本システムのファイル構造が「木構造」として表現されている。 In Figure 6, the file structure of the system is represented as a "tree structure". 本システムでは、ファイルを表現するためのデータ構造は、再帰構造をとることが可能である。 In this system, data structures for representing file can take recursive structure. したがって、本システムのファイル構造は、図6に示すように木構造(ツリー構造)として表現することもでき、ブロックは、木構造のリーフに位置することになる。 Therefore, the file structure of the system, also can be expressed as a tree structure (tree structure) as shown in FIG. 6, block, will be located in the leaf of the tree structure. この場合、オブジェクト(テーブルまたはブロック)は、「object-id(table-idまたはblock-id)」と「length」の情報を持つ「箱」として表現することができる。 In this case, the object (a table or block) can be expressed as a "box" with the information of "length" and "object-id (table-id or block-id)".

図7は、本システムのファイル構造を説明するための具体例を示した図である。 Figure 7 is a diagram showing a specific example for explaining the file structure of the present system. 図7の例では、ファイルオブジェクト(file-id)により特定されたテーブル(先頭テーブル) In the example of FIG. 7, the identified table by file object (file-id) (top table)
は、「table-1」というテーブルIDのテーブルであり、「950」という「length」の情報と、「<0,block-20>、<100,table-3>、<600,block-12>、<750,table-10>」というリストの情報を持っている。 Is a table of "table-1" hereinafter table ID, the information of the "length" of "950", "<0, block-20>, <100, table-3>, <600, block-12> , has the information of the list of <750, table-10> ".

この「table-1」のテーブルを「readAt」すると、オフセット0の位置に配置された1 The "readAt" tables "table-1" Then, disposed at offset 0 1
00バイトの長さの「block-20」のデータと、オフセット100の位置に配置された「table-3」のテーブル(リスト)と、オフセット600の位置に配置された150バイトの長さの「block-12」のデータと、オフセット750の位置に配置された「table-10」のテーブル(リスト)が読み出される。 00 and byte length of the "block-20" data, which is disposed at a position offset 100 as "table-3" in the table (list), 150 bytes arranged at a position offset 600 length of the " and data block-12 ", a table (list) is read in is arranged at a position offset 750" table-10. " なお、「readAt」は、データの読み出しをするための命令(インターフェース)である。 Incidentally, "readAt" is an instruction for reading data (interface). なお、上述のように、「オフセット」は、ファイル内での位置(そのファイルの先頭からの位置)を表す情報である。 As described above, "offset" is information indicating the position in the file (the position from the beginning of the file).

「table-3」と「table-10」のテーブル(リスト)は、さらに「readAt」できる。 Table (list) of the "table-3", "table-10" can further "readAt". この場合、「table-3」のテーブルは、「500」という「length」の情報と、「<0,block-120> In this case, the table of "table-3", and the information of "length" of "500", "<0, block-120>
、<300,block-130>」というリストの情報を持っている。 , Has the information of the list of <300, block-130> ". したがって、この「table-3」のテーブルを「readAt」すると、領域オフセット0の位置に配置された100バイトの長さの「block-120」のデータと、領域オフセット300の位置に配置された200バイトの長さの「block-130」のデータが読み出される。 Therefore, the data of this table a "table-3", "readAt" Then, 100 bytes arranged at the position of the area offset 0 length of the "block-120", arranged at a position of a region offset 300 200 data bytes of the length of the "block-130" is read. また、「table-10」のテーブルは、「200」という「length」の情報と、「<0,block-800>、<50,block-900>」というリストの情報を持っている。 In addition, the table of "table-10" is, have the information of "length" of "200", "<0, block-800>, <50, block-900>" the information of the list called. したがって、この「table-10」のテーブルを「readAt」すると、領域オフセット0の位置に配置された50バイトの長さの「block-800」のデータと、領域オフセット50の位置に配置された150バイトの長さの「block-900」のデータが読み出される。 Therefore, the data of this table a "table-10", "readAt" Then, 50 bytes is disposed at a position of a region offset 0 length of the "block-800", arranged at a position of a region offset 50 150 data bytes of the length of the "block-900" is read. なお、「領域オフセット」は、そのテーブルが示す領域内でのオフセット(そのテーブルが示す領域の先頭からの相対位置)を表す情報である。 Incidentally, "region offset" is information indicating an offset (relative to the start of the area indicated by the table) in the region indicated by the table.

結果として、「table-1」のテーブルからは、オフセット0の位置に配置された100 As a result, from the table of "table-1" is arranged at a position offset 0 100
バイトの長さの「block-20」のデータと、オフセット100(領域オフセット0)の位置に配置された100バイトの長さの「block-120」のデータと、オフセット400(領域オフセット300)の位置に配置された200バイトの長さの「block-130」のデータと、オフセット600の位置に配置された150バイトの長さの「block-12」のデータと、オフセット750(領域オフセット0)の位置に配置された50バイトの長さの「block-800」のデータと、オフセット800(領域オフセット50)の位置に配置された150 And data of "block-20" in length byte, a length of 100 bytes disposed at offset 100 (area offset 0) and the data of "block-120", the offset 400 (area offset 300) and data of "block-130" length of the deployed 200 byte positions, data of "block-12" length of 150 bytes disposed at a position offset 600, the offset 750 (area offset 0) a data length of 50 bytes arranged at the position of the "block-800", which is located at a position offset 800 (area offset 50) 150
バイトの長さの「block-900」のデータが、読み出されることになる。 Data of "block-900" length byte will be the read. なお、オフセット200から400までの間のデータがない領域は「nul」で埋められている。 The area data is not between the offset 200 to 400 are filled with "nul".

次に、図8を参照しながら、本システムの仕組みについて説明する。 Next, referring to FIG. 8, a description about how this system. 図8に示すように、本システムでは、テーブルやブロックに関連する情報を、抽象化されたオブジェクトとして扱い、その内容をネットワーク上の仮想デバイス(サーバやサービス)上に持つようにしている。 As shown in FIG. 8, in the present system, information related to the table or block, handled, and to have the contents on the virtual device on the network (server or service) are as abstracted objects. そして、本システムでは、ネットワーク上の仮想デバイス(サーバやサービス)上に必要な情報を分散配置することによって、特定のサーバや特定の領域に管理情報を保存する必要性をなくすようにしている。 Then, in the present system, by the necessary information on the virtual device on the network (server or service), distributing, and to eliminate the need to store the management information to a particular server or a particular region.

続いて、ファイルに関するデータ構造について説明する。 Next, a description will be given of a data structure for the file. ファイルは、そのファイルを示す一意な「file-id」を持っている。 Files, has a "file-id" unique indicating the file. また、ファイルは、そのファイルの内容を表現するためのテーブル(先頭テーブル)の「table-id」に対応付けされている。 In addition, the file is associated with a "table-id" in the table (top table) for representing the contents of the file. 本システムにおいて、ファイルの内容に関する情報は、先頭テーブルに書き込まれた「table-id」のみであり、詳細な内容は「table-id」から再帰的にデータを取得することにより得られるようになっている。 In this system, information about the contents of the file is only written to the beginning table "table-id", details are now obtained by recursively grabbing data from "table-id" ing. なお、実装上は、「file-id」と先頭テーブルの「table-id」の対応表もネットワーク上にオブジェクトとして保存されていてよい。 It should be noted that, on the implementation, may have been saved as an object correspondence table also on the network of "table-id" in the top table with the "file-id". ファイルの長さ(length)は、先頭テーブルに対して「getLength」して取得できるの長さ(length)と同じである。 The length of the file (length) is the same length can be obtained by "getLength" to the top table with the (length). すなわち、「getLength(ファイルオブジェクト) = getLength(該当ファイルの先頭テーブル)」である。 In other words, is a "getLength (file object) = getLength (top table of the file)". なお、ファイルは、属性情報(所有者、アクセス権限、更新日時)や管理情報を持っていてもよい。 In addition, file, attribute information (owner, access permissions, update date and time) may have a and management information.

次に、本システムにおけるオブジェクトの定義について説明する。 Next, a description for the definition of the object in the system. オブジェクトは、そのオブジェクトを識別するために一意性を有する識別子(object-id)と、データの長さ(length)の情報を持っている。 Objects have an identifier (object-id) having uniqueness in order to identify the object, the length of the data information (length). 「object-id」としては、例えば、64ビットの整数、 The "object-id", for example, of 64-bit integers,
UUID、任意の文字列などが使用される。 UUID, such as any of the string is used. また、「length」は、負でない整数であり、 In addition, the "length" is a non-negative integer,
例えば64ビットの整数などで表現される。 For example, represented by such as 64-bit integers. オブジェクトの「length」は、「getLength "Length" is the object, "getLength
」で取得することができる。 It can be obtained in ". 本システムのオブジェクトには、ブロックとデータが含まれる。 The object of the present system includes a block data.

ブロックは、オブジェクトの一種であり、「block-id」と「length」の情報を持っている。 Block is a kind of object, has information of "length" and "block-id". ブロックは、コンテンツと呼ぶこともできる。 Block, can also be referred to as content. ブロック(コンテンツ)のデータは、「getContent」で取得することができる。 Data blocks (content) can be obtained by "getContent". また、ブロックは、「putContent(block-id, content, length)」で「block-id」と「content」と「length」を与えることにより、新規に生成することもできる。 Also, the blocks "putContent (block-id, content, length)" by providing in a "block-id" and "content" and "length" may be newly generated. なお、ブロックの上書きは不可である。 It should be noted that the override of the block is not allowed.

テーブルも、オブジェクトの一種であり、「table-id」と「length」の情報を持っている。 Table also, is a kind of object, has information of "length" and "table-id". また、テーブルは、「<offset,object-id>のリスト」を持っている。 In addition, the table has a "<offset, object-id> list of". ここで、「object-id」は、「block-id」または「table-id」である。 Here, the "object-id" is "block-id" or "table-id". テーブルのデータは、「getTable Data in the table, "getTable
」で取得することができる。 It can be obtained in ". また、テーブルは、「putTable(table-id,<offset,object-id>)」で「table-id」と「<offset,object-id>」を与えることにより、新規に生成することもできる。 The table is "putTable (table-id, <offset, object-id>)" in the "table-id" and "<offset, object-id>" by providing, may be newly generated. なお、テーブルの上書きは不可である。 It should be noted that the override of the table is not allowed. また、<offset0,object0>というエントリについては、「offset0 ≧ 0(「offset」の値が0以上であること)」、「object0.getLength() > 0(そのオブジェクトの「length」の値が0より大きいこと)」、「offset0 + object0.getlength() ≦ table.getLength()(「offset」の値にそのオブジェクトの「length」の値を加えた値が、テーブルの「length」の値以下であること)」が、すべて成り立つことが条件とされる。 In addition, the entry of <offset0, object0> is, the value of the "offset0 ≧ 0 (that the value of" offset "is equal to or greater than zero)", "object0.getLength ()> 0 (" length "of the object 0 more greater) "," offset0 + object0.getlength () ≦ table.getLength () ( "offset" value a value obtained by adding the "length" value to the object is below the value of the "length" of the table sometimes) "is, that all holds are conditions.

本システムにおいて、「block-id」は、仮想デバイス上のデータに対応しており、ブロックオブジェクトへのアクセスでは、「サービステーブル(後述する)」を用いて仮想デバイスへのアクセスに必要な情報を求め、「block-id」に対応付けられているデータ(と長さの情報)を取得する。 In the present system, "block-id" corresponds to the data on the virtual device, the access to the block object, the information needed to access the virtual device using the "service table (to be described later)" calculated, to obtain the data associated with the "block-id" (and length information). また、本システムにおいて、「table-id」は、仮想デバイス上の情報に対応しており、テーブルオブジェクトへのアクセスでは、ブロックの場合と同様にして、仮想デバイスから情報を取得することができる。 Further, in this system, "table-id" corresponds to information on the virtual device, the access to the table object, as in the case of the block, it is possible to obtain information from the virtual device. ただし、この場合に取得できる情報の中身は、テーブルの情報(すなわち、テーブルが表現するファイル内の領域の長さ(length)と<offset,object-id>のリスト)である。 However, contents of information that can be acquired in this case is information table (i.e., the length of the region in the file table is represented (length) and <offset, object-id> list).

上記データのアクセスで利用されるサービステーブルは、「一意の(ユニークな)ID番号」と「アクセス手段」の情報を含んでいる。 Service table used in the access of the data includes a "unique (unique) ID number" information "access unit". 事業者が提供するサービスの場合のアクセス手段は、例えば「http://jigyousya.com/storage/%s」などである。 Access means in the case of service operators to provide, for example, "http://jigyousya.com/storage/%s" and the like. また、ネットワークサーバへのアクセス手段は、例えば「10.0.50.11:/users/isi(NFSの場合)」や「samba://10.0.60.1/public(CIFSの場合)」などであり、物理デバイスへのアクセス手段は、例えば「/dev/sd0a」などである。 The access means to the network server, for example, "For 10.0.50.11:/Users/isi(NFS)" or "samba: //10.0.60.1/public (For CIFS)" and the like, to the physical device the access means, for example, "/ dev / sd0a" and the like. なお、サービステーブルの詳細については後述する。 It should be noted, will be described in detail later in the service table.

ここで、ブロック(コンテンツ)の保存や取得をする場合に用いられる命令(インターフェース)について説明する。 Here, the instruction for (interface) is described which is used in the case of the storage and retrieval of blocks (content). ブロックの保存(新規作成)をする場合には「putContent(block-id, length, content)」が用いられる。 If you want to save the block (New) is "putContent (block-id, length, content)" is used. この場合、「block-id」から仮想デバイスが特定され、その「block-id」に対応するデータを保存する。 In this case, the virtual device from "block-id" is specified, and stores the data corresponding to the "block-id". このとき、「HTTP PUT」や「NFS WRITE」など、仮想デバイスに応じたデータ保存の仕組みを利用してもよい。 In this case, such as "HTTP PUT" and "NFS WRITE", it may be used a mechanism of data storage in response to the virtual device. なお、上述のとおり、本システムでは、ブロックの新規保存のみ可能であり、ブロックの上書きは不可である。 Incidentally, as described above, in the present system is only possible new storage block, overwrite blocks is impossible.

ブロックの取得(データの取得)をする場合には「getContent(block-id)」が用いられる。 When the acquisition of the block (acquisition data) is "getContent (block-id)" is used. この場合、「block-id」から仮想デバイスが特定され、その「block-id」に対応するデータを取得する。 In this case, the virtual device from "block-id" is specified, it acquires data corresponding to the "block-id". このとき、「HTTP GET」や「NFS READ」など、仮想デバイスに応じたデータ保存の仕組みを利用してもよい。 In this case, such as "HTTP GET" or "NFS READ", it may be used a mechanism of data storage in response to the virtual device. なお、その「block-id」に対応するデータがない場合には「エラー」となる。 In addition, the "error" if there is no data corresponding to the "block-id".

なお、上記の説明では、ブロックの保存や取得のためのインターフェースのみを定義したが、仮想デバイス(サービスやサーバなど)によって、実際の通信手法は、「block-id」に対応するデータが保存または取得できるものであれば、如何なる手法を用いてもよい。 In the above description, but only defines the interface for storing and retrieving the block, by a virtual device (such as a service or server), actual communication method, data corresponding to "block-id" is stored or as long as it can get, you may use any method. 例えば、一般的なウェブの場合には「http」を用いてもよく、ウェブサービスの場合には「rest」、「xml」、「xml−rpc」などを用いてもよい。 For example, in the case of general web may be using the "http", in the case of a web service is "rest", "xml", or the like may be used "xml-rpc". また、ネットワークサーバの場合には「nsf」、「webdav」、「cifs」、「ftp」などを用いてもよく、物理デバイスの場合には、「iSCSI」やその他の通常のストレージを用いてもよい。 In the case of the network server "nsf", "webdav", "cifs", may be used, such as "ftp", in the case of the physical device, even using the "iSCSI" or other conventional storage good.

次に、テーブルの保存や取得をする場合に用いられる命令(インターフェース)について説明する。 Next, the instruction for (interface) is described which is used in the case of the storage and retrieval of the table. テーブルの保存(新規作成)をする場合には「putTable(id, length, list of <offset,object-id>)」が用いられる。 In the case of the storage of the table (newly created) is "putTable (id, length, list of <offset, object-id>)" is used. これにより、「length」の情報と<offset,object-id>のリストがエンコードされる。 Thus, the list of the information of "length" <offset, object-id> is encoded. ここで、「object-id」は、「block-id」または「table-id」である。 Here, the "object-id" is "block-id" or "table-id". また、最も単純なエンコード手法は、文字列としてこの内容を書き出す方法である。 The simplest encoding technique is a method to write the contents as a string. エンコード手法の例としては、(1)可読文字列で表現する手法(例えば、「10」を、文字列の「10」で表現する手法)や、(2)バイト列で保存する手法(例えば、「int」は4バイト、「long」は8バイトの列で保存する手法)や、(3)「tuple(タイプ、長さ、データ)」の列としてデータを保存する手法などがある。 Examples of the encoding techniques, techniques expressed by (1) readable string (for example, "10", to approach expressed by "10" in the string) and a method of storing at (2) bytes (e.g., "int" is 4 bytes, "long" is and methods) to be saved in the 8 bytes of the column, there is such a method to save the data as a sequence of (3) "tuple (type, length, data)".

この場合、「table-id」から仮想デバイスが特定され、その「table-id」にエンコードしたデータを保存する。 In this case, the virtual device from the "table-id" is specified, and stores the data encoded in the "table-id". このとき、「HTTP PUT」や「NFS WRITE」など、仮想デバイスに応じたデータ保存の仕組みを利用してもよい。 In this case, such as "HTTP PUT" and "NFS WRITE", it may be used a mechanism of data storage in response to the virtual device. なお、実装上は、ブロックの保存のときに用いられる「putContent」を利用してもよい。 Note that the implementation may utilize "putContent" used at the time of storage blocks. また、上述のとおり、本システムでは、テーブルの新規保存のみ可能であり、テーブルの上書きは不可である。 Further, as described above, in the present system is only possible new storage table, overwriting the table is impossible.

テーブルの情報を取得する場合には「getTable(table-id)」が用いられる。 "GetTable (table-id)" is used to retrieve information in the table. この場合、「table-id」から仮想デバイスが特定され、その「table-id」に対応するデータを取得する。 In this case, the virtual device from the "table-id" is specified, it acquires data corresponding to the "table-id". このとき、「HTTP GET」や「NFS READ」など、仮想デバイスに応じたデータ保存の仕組みを利用してもよい。 In this case, such as "HTTP GET" or "NFS READ", it may be used a mechanism of data storage in response to the virtual device. なお、実装上は、ブロックの取得のときに用いられる「getContent」を利用してもよい。 Note that the implementation may utilize "getContent" used at the time of acquisition of the block. 取得したテーブルの情報をデコードすることによって、「length(長さ)」と「list of <offset,object-id>(<offset,object-id>のリスト)」を取得することができる。 By decoding the information of the obtained table, it is possible to obtain a "length (length)" a "list of <offset, object-id> (<offset, object-id> list)."

なお、この場合、「各「object-id」から取得した「(sub) length」は、次の「offset It should be noted that, in this case, was taken from the "each" object-id "," (sub) length "is the next" offset
」までに収まっていること」が条件とされる。 "Is within it before" is the condition. また、「最終の「offset」に位置する「object-id」の「length」については、「テーブルの「length」≧ 最終の「offset」+ (sub) length(最終の「offset」の値に「(sub) length」の値を加えた値が、テーブルの「length」の値以下であること)」が、成り立つことが条件とされる。 Further, the value of "position to the final," offset "," About "length" of the object-id "is" table "length" ≧ final "offset" + (sub) length (the last "offset", " value a value obtained by adding the (sub) length "is" is not more than the value of the length ")" in the table, it holds it is a condition.

続いて、ファイル、テーブル、ブロックのすべてに共通するインターフェース(共通インターフェース)について説明する。 Subsequently, files, tables, and interface (common interface) common to all blocks will be described. 書き込み用の共通インターフェースは「writeAt」 Common interface for writing "writeAt"
である。 It is. 「writeAt」は、「offset」と「length」と「データのバイト列」を受け取る。 "WriteAt" will receive the "offset" and "length", "byte string of data."
「writeAt (object-id, object_offset, buffer, bufoff, buflen)」は、「object-id」 "WriteAt (object-id, object_offset, buffer, bufoff, buflen)" is, "object-id"
と「object_offset」と「buffer」と「bufoff」と「buflen」を与えると、更新されたデータを持った新しい「object-id」を返す。 And and give a "object_offset" and "buffer" and "bufoff" and "buflen", returns a new "object-id," which has the updated data. 読み出し用の共通インターフェースは「readAt」である。 Common interface for reading is "readAt". 「readAt」は、「offset」と「length」と「読み出すデータ領域の情報」を受け取る。 "ReadAt" receives the "length" and "information read data area" and "offset". 「readAt (object-id, object_offset, buffer, bufoff, buflen)」は、「obj "ReadAt (object-id, object_offset, buffer, bufoff, buflen)" is, "obj
ect-id」と「object_offset」と「buffer」と「bufoff」と「buflen」を与えると、該当の領域のデータを読み出した内容を、「buffer」、「bufferoff」、「bufferlen」で示される領域にコピーし、読み出せたデータの長さ「length」を返す。 When ect-id "and" object_offset "and" buffer "and" bufoff "give" buflen "area the contents read out data of the corresponding region, indicated by" buffer "," bufferoff "," bufferlen " copy and return the "length" length of data that can be read to.

この場合、「object-id」は、「file-id」または「table-id」または「block-id」である。 In this case, "object-id" is a "file-id" or "table-id" or "block-id". また、「object-offset」は、そのオブジェクト内での相対位置(offset)を表現する情報である。 Moreover, "object-offset" is information representing the relative position in object (offset). また、「buffer」と「bufoff」と「buflen」は、「バッファ」を表現する情報である。 Further, the "buffer" and "bufoff" "buflen" is information representing the "buffer". 読み出しや書き込みの要求は、実際のデータの受け渡しを「buffer」というポインタで始まるデータ領域の「bufoff」で示される相対位置から、「buflen」という長さのバイト分のデータという形で表現する。 Read or write request, the transfer of actual data from the relative position indicated by "bufoff" of the data area starting at pointer called "buffer", expressed in the form of a length of bytes of data called "buflen". 「writeAt」で書き込みをするときには、上記のデータ領域(バッファ領域)から書き込むべきデータを取得して、データを書き込む。 When writing the "writeAt" acquires data to be written from said data area (buffer area), and writes the data. 「readAt」で読み出しをするときには、上記のデータ領域(バッファ領域)に読み出したデータをコピーすることにより、データが読み出される。 When reading in the "readAt" by copying the read data into said data area (buffer area), the data is read.

なお、上記の説明では、ファイル、テーブル、ブロックのすべてに共通するインターフェースのみを定義したが、実際の動作は、ファイル、テーブル、ブロックのそれぞれで定義してよい。 In the above description, a file, a table has been defined only interface that is common to all blocks, the actual operation, file, table, may be defined in each block.

次に、本システムの機能の実装例について説明する。 Next, a description will be given implementation of the functions of the system. ファイルの新規作成(CREATE)の機能は、「create」により実装される。 Function of the newly created (CREATE) of files is implemented by the "create". この「create」は、新規に長さがゼロのファイルを作るインターフェースである。 This "create" is an interface to new lengths to make the zero of the file. 「create」の内部処理は、まず「file-id」を新規に割り当て、その「file-id」の先頭テーブルを「EMPTY_TABLE」にセットし、その「file-id The internal processing of the "create", first assign a "file-id" to the new, to set the top table of the "file-id" to "EMPTY_TABLE", the "file-id
」を返すというものである。 "It is that returns a. ここで、「EMPTY_TABLE」は、長さがゼロであって、リストの要素数がゼロである特別なテーブルである。 Here, "EMPTY_TABLE" is a zero length, the number of elements in the list is a special table is zero. これは、実データを持たないため、仮想デバイス上に実態を持つ必要がなく、特別なオブジェクトID(空テーブルを示す全ファイルに共通のID)だけが存在する。 This is because no real data, there is no need to have the actual conditions on a virtual device, only a special object ID (common ID to all file indicating empty table) is present. 「create」は、「file-id」を割り当てるだけのものであるともいえる。 "Create" can be said to be of only assign the "file-id".

ファイル(ファイルオブジェクト)への書き込み(WRITE-1)の機能は、「writeAt (object-id, object_offset, buffer, bufoff, buflen)」により実装される。 Capabilities of the file writing to (file object) (WRITE-1) is "writeAt (object-id, object_offset, buffer, bufoff, buflen)" implemented by. この場合、「object-id」は「file-id」である。 In this case, "object-id" is "file-id". このファイルへの書き込みでは、「object_offset」が十分に大きい場合、例えば、現在の階層の深さdに対して「object_offset」が「4MB When writing to the file, if "object_offset" is sufficiently large, for example, "object_offset" is the depth d of the current hierarchy "4MB
×1000 」以上である場合に、階層構造をひとつ増やす(木構造を一段深くする)処理が行われる。 If × 1000 d "or more, (one step deeper the tree structure) in which one increases the hierarchy is performed. このとき、「現在のlength」と<0,先頭テーブルのtable-id>を持ったテーブルが新規に作成され、そのファイルの先頭テーブルの「tabale-id」が書き換えられる。 At this time, the table with the "current length" and <0, the top table table-id> is newly created, is rewritten "tabale-id" in the top table of the file. また、ファイルに対応づけられている「table-id」に対して「writeAt (table-id, object_offset, buffer, bufoff, buflen)」を実行すると、新しく割り当てられた「table-id」が先頭テーブルとして登録される。 Further, "writeAt (table-id, object_offset, buffer, bufoff, buflen)" for "table-id" associated with the file when you run, as newly allocated "table-id" is the top table be registered. これにより、特別なオブジェクトID又は以前の「table-id」が、新たな「table-id」に書き換えられる。 As a result, a special object ID or the previous "table-id", is rewritten to a new "table-id". 「writeAt」は、更新されたオブジェクトのIDを返す必要があるが、ファイルへの書き込みでは、先頭テーブルだけを書き換えて、自身の「file-id」を返すようになっている。 "WriteAt", it is necessary to return the ID of the updated object, in writing to the file, by rewriting the only top table, so that the return to "file-id" of its own.

テーブル(テーブルオブジェクト)への書き込み(WRITE-2)の機能は、「writeAt (object-id, object_offset, buffer, bufoff, buflen)」により実装される。 Function table writes to (table object) (WRITE-2) is "writeAt (object-id, object_offset, buffer, bufoff, buflen)" implemented by. この場合、「object-id」は「table-id」である。 In this case, "object-id" is "table-id". このテーブルへの書き込みでは、「buflen」>0の間、以下の(1)〜(4)の処理が繰り返される。 In writing to this table, "buflen"> 0 during, the process of the following (1) to (4) are repeated.

(1)の処理では、リストから「object_offset」に該当するサブ(下位の)オブジェクト(テーブルまたはブロック)を検索する。 (1) In the processing of searches the sub (subordinate) objects (tables or blocks) that from the list in the "object_offset". 例えば、「object_offset + bufoff」がテーブルの各要素の「offset + getLength()」に入る場合を検索する。 For example, "object_offset + bufoff" to search for when entering the "offset + getLength ()" of each element of the table.

(2)の処理では、該当するオブジェクトがなかった場合、「createId()」により「newId」を作成し、「putContent(newId, writelen, (buffer, bufoff, writelen))」により、その「newId」を「object_offset」に位置するサブオブジェクトとしてリストを更新する。 In the process (2), when there is no corresponding object, to create a "newId" by "createID ()", "putContent (newId, writelen, (buffer, bufoff, writelen))" by its "newId" to update the list as a sub-object is located in the "object_offset". ここで、「writelen」は、「Min(buflen,(次のオブジェクトのoffset − object_offset))」である。 Here, "writelen" is, "Min (buflen, (the next object offset - object_offset))" is.

(3)の処理では、該当オブジェクトの「child-id」に対して、「writeAt(child-id, object_offset − child-offset, buffer, bufoff, writelen)」を行うことにより、「newId」を「child-offset」に対応するサブオブジェクトとしてリストを更新する。 In the process of (3), to the "child-id" for the selected object, "writeAt (child-id, object_offset - child-offset, buffer, bufoff, writelen)" by performing the "newId" "child to update the list as a sub-object corresponding to the -offset ". ここで、「child-id」は、該当のサブオブジェクトを示すIDである。 Here, the "child-id" is an ID indicating the corresponding sub-objects. また、「child-length」は、そのサブオブジェクトの長さ(すなわち、getLength(child-id)で取得される長さ) Further, "child-length" is the length of the sub-object (i.e., getLength (length acquired in child-id))
であり、「child-offset」は、そのサブオブジェクトのoffsetの値である。 , And the "child-offset" is a value of the offset of the sub-object. また、「writelen」は、「Min(buflen, child-length)」である。 In addition, "writelen" is "Min (buflen, child-length)".

(4)の処理では、該当するオブジェクトがあった場合でも、該当するオブジェクトがなかった場合でも、「object_offset」を「object_offset + writelen」とし、「buflen In the process of (4), even if there is a corresponding object, even if there is no corresponding object, the "object_offset" and "object_offset + writelen", "buflen
」を「buflen − writelen」として、パラメータの更新を実行する。 "And" buflen - as writelen ", to perform the update of parameters.

このテーブルへの書き込みでは、現状の長さの「length」に対して、「length < object_offset + buflen」であれば、「length」を「object_offset + buflen」とする。 In writing to this table, the current length of the for the "length", if the "length <object_offset + buflen", the "length" and "object_offset + buflen". また、最終的に出来上がったリストである「list」と、上記の「length」に対して、「createId()」により「newId」を作成し、「putTable(newId, length, list)」を実行したうえで、「newId」を返すようにされている。 Moreover, it is finally finished list and "list", for the "length" of the above creates a "newId" by "createID ()" was performed "putTable (newId, length, list)" above, are to return to "newId".

ブロック(ブロックオブジェクト)への書き込み(WRITE-3)の機能は、「writeAt (object-id, object_offset, buffer, bufoff, buflen)」により実装される。 Function block write to (block objects) (WRITE-3) is "writeAt (object-id, object_offset, buffer, bufoff, buflen)" implemented by. この場合、「object-id」は「block-id」である。 In this case, "object-id" is "block-id". このブロックへの書き込みでは、該当ブロックの現在のデータを読み出す処理が行われる。 In writing to the block, processing for reading the current data of the corresponding block. 例えば、「getContent(object-id)」により「currentData」が読み出される。 For example, "currentData" is read by the "getContent (object-id)". 「currentLength」は、この「currentData」のバイト列(実データ)の長さである。 "CurrentLength" is the length of the byte sequence of this "currentData" (actual data). ブロックへの書き込みでは、「currentData」のバイト列について、「object_offset」から始まる部分に対して、「(buffer, bufoff, min(buflen, currentLength))」のデータを上書きする。 In writing to the block, the byte sequence of "currentData", for the portion beginning with "object_offset", overwrites the data of the "(buffer, bufoff, min (buflen, currentLength))". そして、最終的にできあがったデータと、上記の「currentLength」に対して、「createId()」により「newId」を作成し、「putContent(newId, currentLength, currentData)」を実行したうえで、「newId」を返すようにされている。 Then, the finally resulting data, for the "CurrentLength" above, to create a "newId" by "createID ()", after running the "putContent (newId, currentLength, currentData)", "newId They are to return. "

ファイル(ファイルオブジェクト)からの読み出し(READ-1)の機能は、「readAt (object-id, object_offset, buffer, bufoff, buflen)」により実装される。 Capabilities of the file read from the (file object) (READ-1) is "readAt (object-id, object_offset, buffer, bufoff, buflen)" implemented by. この場合、「object-id」は「file-id」である。 In this case, "object-id" is "file-id". このファイルからの読み出しにおいて、「object_offset」が現在の長さ「length」以上の場合には、読み込むべきデータがないので、「END-OF-FILE」を返す。 In reading from this file, "object_offset" is when the length "length" or the current, since there is no data to be read returns "END-OF-FILE". また、ファイルの先頭テーブルである「table-id」に対しては、「readAt (table-id, object_offset, buffer, bufoff, min(buflen, length − object_offset))」を実行する。 Also, for a head table of the file "table-id", "readAt (table-id, object_offset, buffer, bufoff, min (buflen, length - object_offset))" executes.

テーブル(テーブルオブジェクト)からの読み出し(READ-2)の機能は、「readAt (object-id, object_offset, buffer, bufoff, buflen)」により実装される。 Features table read from (table object) (READ-2) is "readAt (object-id, object_offset, buffer, bufoff, buflen)" implemented by. この場合、「object-id」は「table-id」である。 In this case, "object-id" is "table-id". このテーブルからの読み出しでは、「buflen」>0の間、以下の(1)〜(4)の処理が繰り返される。 The reading from the table, "buflen"> 0 during, the process of the following (1) to (4) are repeated.

(1)の処理では、リストから「object_offset」に該当するサブ(下位の)オブジェクト(テーブルまたはブロック)を検索する。 (1) In the processing of searches the sub (subordinate) objects (tables or blocks) that from the list in the "object_offset".

(2)の処理では、該当するオブジェクトがなかった場合、「readlen = Min(buflen, (次のオブジェクトの offset − object_offset))」に対して、「(buffer, bufoff, readlen)」の領域をnul文字で埋める。 In the process (2), when there is no corresponding object, "readlen = Min (buflen, (next object in offset - object_offset))" to "(buffer, bufoff, readlen)" the region of nul filled with character.

(3)の処理では、該当するオブジェクトがあった場合、その「child-id」に対して、「readAt(child-id, object_offset − child-offset, buffer, bufoff, readlen)」を実行する。 (3) In the process of, when there is a corresponding object, for the "child-id", "readAt (child-id, object_offset - child-offset, buffer, bufoff, readlen)" executes. ここで、「child-id」は、該当のサブオブジェクトを示すIDである。 Here, the "child-id" is an ID indicating the corresponding sub-objects. また、「child-length」は、そのサブオブジェクトの長さ(すなわち、getLength(child-id)で取得される長さ)であり、「child-offset」は、そのサブオブジェクトのoffsetの値である。 Further, "child-length" is the length of the sub-object (i.e., getLength (length acquired in child-id)) is "child-offset" is the value of the offset of the sub-objects . また、「readlen」は、「Min(buflen, child-length)」である。 In addition, "readlen" is "Min (buflen, child-length)".

(4)の処理では、該当するオブジェクトがあった場合でも、該当するオブジェクトがなかった場合でも、「object_offset」を「object_offset + readlen」とし、「buflen」を「buflen − readlen」とし、「bufoff」を「bufoff + readlen」として、パラメータの更新を実行する。 In the process of (4), even if there is a corresponding object, even if there is no corresponding object, the "object_offset" and "object_offset + readlen", the "buflen" - and "buflen readlen", "bufoff" as a "bufoff + readlen", to perform the update of parameters.

ブロック(ブロックオブジェクト)からの読み出し(READ-3)の機能は、「readAt (object-id, object_offset, buffer, bufoff, buflen)」により実装される。 Function blocks read from (block objects) (READ-3) is "readAt (object-id, object_offset, buffer, bufoff, buflen)" implemented by. この場合、「object-id」は「object-id」である。 In this case, "object-id" is "object-id". このブロックからの読み出しでは、該当ブロックの現在のデータを読み出す処理が行われる。 The reading from the block, processing for reading the current data of the corresponding block. 例えば、「getContent(object-id)」により「currentData」が読み出される。 For example, "currentData" is read by the "getContent (object-id)". 「currentLength」は、この「currentData」のバイト列(実データ)の長さである。 "CurrentLength" is the length of the byte sequence of this "currentData" (actual data). ブロックからの読み出しでは、「currentData」のバイト列に対して、「object_offset」から始まる「readlen」バイト分のデータを、「(buffer, bufoff, readlen)」にロードして、「readlen」を返す。 In the reading from the block, on a byte string of "currentData", the "readlen" bytes of data starting from "object_offset", and loaded into the "(buffer, bufoff, readlen)" returns "readlen". ここで、「readlen」は、「min(buflen, currentLength) 」である。 Here, "readlen" is "min (buflen, currentLength)".

次に、ファイルの読み出しと書き込みの具体例について説明する。 Next, a specific example of reading and writing files. 図9には、本システムにおけるファイルの読み出しアクセスの一例が示されている。 Figure 9 is an example of a read access of a file in this system is shown. 図9に示すように、ユーザ端末からファイルを読み出すアクセスがあると、まず、ファイルオブジェクトを特定するための「file-id」が算出される。 As shown in FIG. 9, it is accessed to read a file from the user terminal, first, "file-id" for identifying the file object is calculated. 次に、「file-id」と「table-id」の対応表を用いて、「file-id」に対応する「table-id」を取得する。 Then, to get the "file-id" and using the corresponding table of "table-id", corresponding to the "file-id", "table-id". ここでは、例えば「table-1」というテーブルIDが取得される。 Here, the table ID is obtained of, for example, "table-1". なお、上述のように、実装上は、「file-id」と「table-id It should be noted that, as described above, on the implementation, the "file-id", "table-id
」の対応表も一つのオブジェクトとしてネットワーク上に保存されていてもよい。 Correspondence table "also may be stored on the network as a single object.

そして、「table-1」の内容を、仮想デバイスの選択アルゴリズム(後述する)を用いて、事業者Aから取得する。 Then, the contents of the "table-1", using the selection algorithm of the virtual device (to be described later), obtained from the operators A. ここでは、例えば「650,<0,table-2>,<300,table-3>」という内容が取得される。 Here, for example, "650, <0, table-2>, <300, table-3>" is acquired stating. 以下、「table-2」と「table-3」の内容が再帰的に取得される。 Below, the contents of the "table-2" and "table-3" is acquired recursively. 図9の例では、「table-2」の内容が「300,<0,block-a>,<100,block-b>,<200,block-c>」であり、「table-3」の内容が「200,<0,block-d>,<100,block-e>」である。 In the example of FIG. 9, the contents of the "table-2" is "300, <0, block-a>, <100, block-b>, <200, block-c>" a, a "table-3" content is "200, <0, block-d>, <100, block-e>" is. そうすると、これらのテーブルの内容に従って、オフセット0の位置に配置された100バイトの長さの「block-a」のデータと、オフセット100の位置に配置された100バイトの長さの「block-b」のデータと、オフセット200の位置に配置された100バイトの長さの「block-c」のデータと、オフセット300(領域オフセット0)の位置に配置された250バイトの長さの「block-d」のデータと、オフセット550(領域オフセット250)の位置に配置された100バイトの長さの「block-e」のデータが読み出される。 Then, according to the contents of these tables, the 100 bytes arranged at the position of the offset 0 length of the "block-a" and data of 100 bytes is disposed at a position offset 100 length of the "block-b and data ", the length of 100 bytes disposed at a position offset 200" and block-c "of the data, the offset 300 of 250 bytes arranged at the position of (area offset 0) length of" block- and data d ", data of" block-e "of the length of 100 bytes disposed at offset 550 (area offset 250) is read.

図10〜図14には、本システムにおけるファイルの書き込みアクセスの一例が示されている。 In FIGS. 10 to 14 is an example of a write access to the file in the system is shown. ここでは、まず、新規ファイルの作成について説明する。 Here, first, a description will be given of the creation of a new file. 図10に示すように、ユーザ端末からファイルを書き込むアクセスがあると、まず、「CREATE」の機能により、新規ファイルが作成される。 As shown in FIG. 10, it is accessed to write the file from the user terminal, first, by the function of the "CREATE", a new file is created. このとき、先頭テーブルに「EMPTY_TABLE」がセットされる。 In this case, "EMPTY_TABLE" is set at the head table.

次に、先頭から100バイトのデータ(data)を書き込む処理について説明する。 Next, a description will be given first write 100 bytes of data (data) from the process. この場合、「WRITE-1」の機能により、ファイルへの書き込みが実行される。 In this case, the function of the "WRITE-1", writing to the file is executed. 例えば、先頭テーブルの「EMPTY_TABLE」に対して、「writeAt(EMPTY_TABLE, 0, data, 0, 100)」が実行される。 For example, for the "EMPTY_TABLE" on top table, "writeAt (EMPTY_TABLE, 0, data, 0, 100)" is executed. その後、「WRITE-2」の機能により、テーブルへの書き込みが実行される。 Then, by the function of the "WRITE-2", write to the table is executed. この場合、「offset」に該当するブロックが存在しないため、ブロックを作成する。 In this case, since the block corresponding to "offset" does not exist, to create a block. 例えば、「block-a = createId()」、「putContent(block-a, 0 − 0, data, 0, 100)」により「block-a」のブロックを作成して、リストを更新する。 For example, "block-a = createId ()", "putContent (block-a, 0 - 0, data, 0, 100)" to create a block of "block-a" by, to update the list. 次いで、「writeAt」内のメインループを抜けて、「length」を「100」に更新した後、「table-x = createId()」、「putTable(table-x, 100, <0, block-a>)」を実行し、「table-x」を返す。 Then, leaves the main loop in the "writeAt", after updating the "length" to "100", "table-x = createId ()", "putTable (table-x, 100, <0, block-a >) "is executed, returns a" table-x ". そして、上記「table-x」を先頭テーブルにセットし、処理を終了する。 Then, set at the top table of the above-mentioned "table-x", and the process ends.

続いて、図11および図12を参照しながら、「offset」が「50から150バイト」のデータ(data)を書き込む処理について説明する。 Subsequently, with reference to FIGS. 11 and 12, "offset" will be described processing of writing data (data) of "50 to 150 bytes". 図11に示すように、まず、「WRITE-1」の機能により、ファイルへの書き込みが実行される。 As shown in FIG. 11, first, the function of "WRITE-1", the writing to the file is executed. この場合、先頭テーブルの「table-x」に対し、「writeAt(table-x, 50, data, 0, 150) 」が実行される。 In this case, with respect to "table-x" of the top table, "writeAt (table-x, 50, data, 0, 150)" is executed. 次に、「WRITE-2」の機能により、テーブルへの書き込みが行われる。 Next, the function of the "WRITE-2", write to the table is performed. この場合、第1のループ「loop-1」として、「offset」が「50」であるブロック「block-a」に対して、「wiriteAt(block-a, 50 − 0, data, 0, 50) 」が実行される。 In this case, as the first loop "loop-1", for the "offset" is "50" in which block "block-a", "wiriteAt (block-a, 50 - 0, data, 0, 50) "it is executed. 続いて、「WRITE-3」の機能により、「block-a」の現在のデータである100バイト分の「orig」をロードし、「orig」の「offset=50」に「(data, 0, 50) 」を上書きする。 Then, by the "WRITE-3" feature, "block-a" to load the "orig" of 100 bytes, which is the current data, "offset = 50" to "(data, 0 of" orig " to override the 50). " その後、「block-b = createId()」、「putContent(block-b, 100, orig)」で新規ブロックを作成する。 After that, "block-b = createId ()", to create a new block in the "putContent (block-b, 100, orig)". そして、上記の「block-b And, of the "block-b
」を、新たなブロックとして、リストを更新する。 A ", as a new block, to update the list. その結果、新しいリストは<0,block-b>になる。 As a result, the new list will be <0, block-b>. その後、「object_offset 」に「50 + 50 = 100」をセットし、「buflen」に「150 − 50 = 100」をセットし、「bufoff」に「0 + 50 = 50」をセットして、次のループへ進む。 Then, set the "50 + 50 = 100" to "object_offset", to "buflen" - is set to "150 50 = 100", to "bufoff" is set to "0 + 50 = 50", the following advance to the loop.

図12に示すように、第2のループ「loop-2」では、「offset」が「100」に該当するブロックがないため、「block-c = createId()」、「putContent(block-c, 100, (data, 50, 100))」を実行し、新規ブロックを作成する。 As shown in FIG. 12, in the second loop "loop-2", because there is no block "offset" corresponds to "100", "block-c = createId ()", "putContent (block-c, 100, run the (data, 50, 100)) ", to create a new block. これにより、テーブルのリストが更新され、新しいリストは「<0,block-b>,<100,block-c>」になる。 As a result, the list of the table is updated, the new list is "<0, block-b>, <100, block-c>". このとき、「object_offset」に「100 + 100 = 200」をセットし、「buflen」に「100 − 100」をセットし、「bufoff」に「50 + 100 = 150」をセットする。 In this case, set to "100 + 100 = 200" to "object_offset", the "buflen" - set to "100 100" is set to "50 + 100 = 150" to "bufoff". この場合、「buflen」がゼロになるので、 In this case, since the "buflen" becomes zero,
ループを終了する。 To exit the loop. そして、「length」を「200」にセットしたうえで、「table-y = createId()」、「putTable(table-y, 200, <0,block-b>,<100,block-c>)」を実行して新規テーブルを作成し、「table-y」を返す。 Then, after you set the "length" to "200", "table-y = createId ()", "putTable (table-y, 200, <0, block-b>, <100, block-c>) running "to create a new table, returns a" table-y ". その後、ファイルの先頭テーブルを「table-y」にセットして処理を終了する。 After that, the top table of the file and ends the process is set to "table-y".

次に、図13および図14を参照して、「object_offset」が「10000から200 Next, with reference to FIGS. 13 and 14, "object_offset" from "10000 200
バイト」のデータ(data2)を書き込む処理について説明する。 The process of writing the data (data2) of bytes "will be explained. 図13に示すように、「WRITE-1」の機能により、ファイルへの書き込みが実行される。 As shown in FIG. 13, by the function of the "WRITE-1", the writing to the file is executed. この場合、「object_offset」が十分に大きいと判断され、階層を増やす処理が実行される。 In this case, the determination is "object_offset" is sufficiently large, the processing is performed to increase the hierarchies. つまり、現状の「table-y」を単一要素とする、新テーブルが作成される。 In other words, a single element of the "table-y" of the status quo, the new table is created. なお、このとき、テーブルの深さだけが変わるだけで、「getLength()」で取得できる値は「table-y」と同じである。 At this time, only by the depth of the table is changed, the value that can be obtained by "getLength ()" is the same as "table-y". 新しく作られたテーブルについては、「table-α = createId()」、「putTable(table-α, 200, <0,table-v>)」が実行される。 For the newly created table, "table-α = createId ()", "putTable (table-α, 200, <0, table-v>)" is executed. そして、この新しく作られたテーブル「table-α」に対して「writeAt(table-α, 10000, data2, 0, 200)」が実行される。 Then, "writeAt (table-α, 10000, data2, 0, 200)" for the newly created table "table-alpha" is executed.

続いて、「WRITE-2」の機能により、「table-α」に対する書き込みが行われる。 Then, by the function of the "WRITE-2", writing for the "table-α" it is performed. この場合、「object_offset = 10000」に既存の要素が存在しないので、「block-d = createId()」、「putContent(block-d, 200, (data2, 0, 200))」を実行し、新規ブロックを作成する。 In this case, since the existing elements does not exist in the "object_offset = 10000", "block-d = createId ()", run the "putContent (block-d, 200, (data2, 0, 200))", the new to create a block. その後、各種パラメータを更新する。 Then, to update the various parameters. この場合、「object_offset」を「10000 + 200 = 10200 」にセットし、「buflen」を「200 - 200」にセットし、「bufoff」を「0 + 200= 200 」にセットして、ループを終了する。 In this case, set to "object_offset" to "10000 + 200 = 10200", the "buflen" - set to "200 200", is set to "bufoff" to "0 + 200 = 200", exit the loop to.

図14に示すように、この場合、「length < object_offset + len」であるので、「length」に「 10200 」をセットして、長さを更新する。 As shown in FIG. 14, in this case, since it is "length <object_offset + len" is set to "10200" to "length", and updates the length. さらに、テーブルのリストを更新する。 In addition, to update the list of tables. 新しいテーブルは、「table-z = createId()」、「putTable(table-z, 10200, <0,table-y>,<10000,block-d>)」によって与えられる。 The new table, "table-z = createId ()", "putTable (table-z, 10200, <0, table-y>, <10000, block-d>)" it is given by. 最後に、ファイルの先頭テーブルを「table-z」にセットして、処理を終了する。 Finally, set the top table of the file to the "table-z", the process is terminated.

ここで、本システムにおける新規IDの割当について簡単に説明する。 Here, briefly described assignment of the new ID in the system. 本システムでは、「createId」で新規のオブジェクトIDを作る。 In the present system, create a new object ID in the "createId". このとき、オブジェクトIDの一意性を保証することが必要である。 In this case, it is necessary to ensure the uniqueness of the object ID. オブジェクトIDの一意性は、サービステーブルで利用される。 Uniqueness of object ID is utilized in the service table. 例えば、UUIDを用いる場合には、RFCに記述されている手法で、一意な128ビットの値が生成される。 For example, in the case of using the UUID is the technique described in RFC, the value of the unique 128 bits are generated. また、64ビットの整数を用いる場合には、「64 bit long generator (original)」を利用してもよい。 In the case of using a 64-bit integer can be used to "64 bit long generator (original)".

次に、本システムで利用する「サービステーブル」について説明する。 Next, a description will be given of "service table" to be used in the present system. 本システムにおいて、オブジェクトID(テーブルID、ブロックIDなど)から、その内容を取得する際には、「内容を保存してあるサービス(もしくはサーバ)」を特定するアルゴリズムが用いられる。 In the present system, from the object ID (table ID, block ID, etc.), when acquiring the contents of the algorithm to identify the "service that is to save the contents (or server)" it is used. したがって、本システムでは、データベースや膨大な管理テーブルを準備する必要がない。 Accordingly, in the present system, there is no need to prepare the database and enormous management table. すなわち、本システムでは、サービスを特定しようとするときに、アルゴリズムで「計算」できるため、特別な管理サーバや管理情報のための領域が不要になる。 That is, in this system, when attempting to identify the service, since it "calculated" in the algorithm, the area for special management server and management information is not required.

サービステーブルは、オブジェクトIDからオブジェクトを取得する方法を示すテーブルである。 Service table is a table that shows how to get the object from the object ID. 本システムでは、上述したように「アルゴリズム」によって、オブジェクトIDからサービス(もしくはサーバ)を特定できるようになっており、サービステーブルは、各サービス(もしくはサーバ)への「アクセス手段」についての情報を得るために用いられる。 In this system, the "algorithm" as described above, and to be able to identify the service (or server) from the object ID, the service table, the information about the "Access unit" to each service (or server) It used to obtain. サービステーブルには、実装と運用が簡単な「静的」なものと、サービステーブルの更新(サービスの追加・変更・削除)が容易な「動的」なものがある。 The service table, implementation and to those operation is simple "static", the update of the service table (add, change or delete the service) and there is a thing easy to "dynamic".

静的なサービステーブルでは、N個のサービスがあるとして、オブジェクトIDから「hash code」を計算し、その計算結果をNで割った余りでサービスを特定できるようになっている。 The static service table, as there are N service, calculate the "hash code" from the object ID, which is the calculation result to be able identify the service in modulo N. 動的なサービステーブルでは、各サービス名称(一意な名称)がハッシュ値に変換されて、オブジェクトIDがそのハッシュ値に一番近いサービスが特定されるようになっている。 The dynamic service table, each service name (unique name) is converted to a hash value, so that the object ID is identified closest service to the hash value.

本システムでは、このようなサービステーブル(静的なサービステーブルまたは動的なサービステーブル)を利用することにより、特別な管理用テーブルが不要になり、システムにおける単一障害点をなくすことが可能になり、バックアップが容易になる。 In this system, by utilizing such a service table (static service table or dynamic service table), becomes a special management table unnecessary, so it is possible to eliminate single points of failure in the system now, it is easy to backup. また、オブジェクトIDごとに異なるサービスを割り当てることによって、分散処理が可能となる。 Further, by assigning different service for each object ID, and enables distributed processing. また、サービスを特定するためのアルゴリズムは計算が早い(例えば、処理時間が「O(1)」のオーダーである)。 Further, the algorithm for specifying the service is quick calculations (e.g., processing time is on the order of "O (1)").

サービステーブルに含まれる情報には、サービス提供事業者の情報、URIなどの「lo The information included in the service table, the service provider of information, URI such as "lo
cation」の情報、サービスを利用するための認証情報、その他、サービスに依存する付加情報がある。 cation information ", authentication information for using the service, the other, there is additional information that depends on the service. サービス提供事業者の情報は、自ネットワークの場合には「local」の情報であってよい。 Information of the service provider, in the case of its own network may be the information of the "local". 「location」の情報には、「http,nfs,cifs,ftp,webdav」などのプロトコルの情報や、「%o(オブジェクトIDに置き換え)」や「%u(ユーザIDに置き換え)」などのパス情報(必要に応じてパラメータ変換を行うための情報)が含まれる。 The information of the "location", "http, nfs, cifs, ftp, webdav" information and protocols such as, "% o (replaced by the object ID)" and "% u (replaced by the user ID)" path, such as information (information for performing parameter conversion if necessary) are included. また、サービスを利用するための認証情報には、ユーザID、パスワード、必要に応じて認証鍵情報などが含まれる。 In addition, the authentication information for using the service, user ID, password, and the like authentication key information as needed. また、サービスに依存する付加情報には、ウェイト、暗号化手法、各種のパラメータ(ブロックサイズ、並列度、待ち行列のサイズなど)が含まれる。 Also, the additional information depending on the service, weight, encryption techniques, various parameters (block size, parallelism, such as the size of the queue) are included.

図15は、静的なサービステーブルの一例を示す図である。 Figure 15 is a diagram showing an example of a static service table. この場合、S個のサービスに対して、0〜(S−1)の番号を持つサービステーブルを作成する。 In this case, with respect to the S service, to create a service table with a number of 0~ (S-1). オブジェクトIDからサービスを決定する場合には、まず、オブジェクトID(例えば、0a12cd−05201a−・・・−ab00fa)からハッシュ値(例えば、13562)を計算する。 When determining the service from the object ID, first, the object ID (e.g., 0a12cd-05201a- ··· -ab00fa) hash value from (e.g., 13562) is calculated. このハッシュ値をサービス数Sで割った余りからサービスを特定する。 To identify the service from the remainder obtained by dividing the hash value by the number of services S. 例えば、 サービス数が3(つまり、S=3)である場合には、13562÷3=2となり、サービス提供者は、「事業者C」に決定される。 For example, if the number of services is 3 (i.e., S = 3) is 13562 ÷ 3 = 2, and the service provider is determined to be "service provider C". そして、アクセス方法について前述のパラメータ変換を行った後に、この事業者Cのサービスにアクセスする。 Then, after the above-mentioned parameter conversion for access method to access the services of the company C.

図16は、動的なサービステーブルの一例を示す図である。 Figure 16 is a diagram showing an example of a dynamic service table. この場合、サービスごとにSHA1ハッシュを計算し、サービステーブルを作成する。 In this case, the SHA1 hash calculated for each service, to create a service table. オブジェクトIDからサービスを決定する場合には、まず、オブジェクトID(例えば、0a12cd−05201a−・・・−ab00fa)からSHA1ハッシュ値(例えば、60ab)を計算する。 When determining the service from the object ID, first, the object ID (e.g., 0a12cd-05201a- ··· -ab00fa) from SHA1 hash value (e.g., 60ab) is calculated. そして、このSHA1ハッシュ値が担当範囲として割り当てられているサービスが選択される。 The service that the SHA1 hash value is assigned as the assigned range is selected. そして、図15の場合と同様に、アクセス方法について前述のパラメータ変換を行った後に、そのサービスにアクセスする。 Then, as in the case of FIG. 15, after performing the above parameter conversion how to access and accesses the service.

本システムでは、サービスを動的に追加、削除するための一つの手法として、DHT(Distributed Hash Table)を利用することができる。 In this system, dynamically add a service, it can be as one method for removing utilizes a DHT (Distributed Hash Table). 例えば、図17に示すように、サービスを提供する8つのサーバ(サーバA〜H)にそれぞれキー情報(ID)が割り当てられており、それぞれのサーバの担当範囲がIDに基づいて決められていたとする。 For example, as shown in FIG. 17, the service and the respective key information (ID) is assigned to eight servers providing (server A to H), and the responsibility of each server has been determined based on the ID to. 各サーバのIDは、そのサーバの一意な名称から計算したSHA1ハッシュ値の一部(例えば、先頭の二桁)をとって決めてもよい。 ID of each server, part of the SHA1 hash value calculated from a unique name of the server (e.g., the head of two digits) may be determined taking. 例えば、サーバAの担当範囲が「08〜34」、サーバBの担当範囲が「35〜48」・・・に設定されていたとする。 For example, "08 to 34" in charge of a range of server A, in charge of a range of server B is assumed to have been set to "35 to 48" .... そうすると、上記のオブジェクトIDについては、SHA1ハッシュ値の一部(例えば、先頭の二桁)の「60」から、サービスを提供するサーバは、「サーバD」(担当範囲「60〜90」)に決定される。 Then, for the object ID of the, SHA1 part of the hash value (e.g., the head of two digits) from the "60", the server that provides the service, the "Server D" (assigned range "60 to 90") It is determined.

以下、本システムの特徴について説明する。 The following describes features of the present system. 本システムの特徴の一つとして、ランダムアクセス(Random Access I/O)が可能であることが挙げられる。 One of the features of this system include that it is possible random access (Random Access I / O) is. 本システムでは、ツリー構造によるデータアクセスが可能であり、任意の場所のデータを「O(log N)」のオーダーの処理時間で更新、追加、削除可能である(N=ファイルサイズ)。 This system is capable of data access by a tree structure, updated data anywhere on the order of the processing time of the "O (log N)", added, can be deleted (N = file size). なお、固定配列にすると、保存できるファイルのサイズに制限ができてしまい、リスト構造にすると「O(N)」のオーダーの処理時間が必要になってしまう。 It should be noted that, when the fixed array, will be able to limit the size of files that can be stored, and to list the structure processing time of the order of "O (N)" becomes necessary. そして、本システムでは、書き込み時に、オフセットと領域を指定して更新を行う。 Then, in the present system, at the time of write, to update by specifying an offset and region. そのため、更新が必要なブロック、及び、上位のテーブルのみ更新すればよいという利点がある。 Therefore, an update is required block, and has the advantage that it is sufficient only updated upper table. また、本システムでは、読み込み時には、オフセットと領域を指定して読み出しを行う。 Further, in the present system, when reading, to read by specifying an offset and region. そのため、読み出しが必要なテーブルとブロックだけ読み出せばよいという利点がある。 Therefore, there is an advantage that reading may be read only the necessary tables and blocks.

また、本システムには、ファイルサイズが事実上無限であるという特徴がある。 Further, the present system has a feature that the file size is virtually unlimited. すなわち、固定長配列をもたないためファイルサイズは事実上無制限であり、例えば、ブロックサイズ4MB、テーブルあたりの要素数が1024の場合には、深さ4で「4MB×1024×1024×1024×1024=4EB」を表現できる。 That is, the file size for no fixed array is virtually unlimited, for example, the block size 4MB, if the number of elements per table 1024 is "4MB × 1024 × 1024 × 1024 × depth 4 1024 = 4EB "can be expressed. また、データ構造がツリー型の再帰構造をとるため、ファイルサイズNに対し、データの検索、追加、削除の処理時間は「O(log N)」のオーダーであり、実用的な速度(十分な速度)でアクセスできる。 Moreover, since taking a recursive structure of the data structure tree, to the file size N, of the data retrieval, additional processing time of the deletion in the order of "O (log N)", a practical speed (sufficient It can be accessed at a speed).

また、本システムは、必要最小限の管理情報が「file-id」と「table-id」の対のみであるという点に特徴がある。 Further, the system is characterized in that the management information of the minimum required is only a pair of a "file-id", "table-id". つまり、本システムでは、ファイルを示す「file-id」とその先頭の「table-id」のみが必要であり、実装上は、「file-id」と「table-id」の対もネットワーク上のオブジェクトとして保存することができる。 That is, in this system indicates a file "file-id" and the beginning of the only "table-id" is necessary, on mounting, "file-id" and "table-id" pairs also on the network it can be stored as an object. 例えば、「file-id」をキーに単一の値を持つオブジェクトとして分散配置することができる。 For example, it can be distributed as an object with a single value to "file-id" as a key. なお、「file-id」 It should be noted that the "file-id"
と「table-id」の対は、テーブルやブロックとは異なり、上書き可能なオブジェクトである。 A pair of "table-id", unlike the table or block, which is a possible override object. また、サービステーブルは、別途管理すればよく、ファイルやデータの「量に依存しない」参照情報のみを含めるようにすることができる。 In addition, service table, it is possible to ensure that it is sufficient to separate management, "it does not depend on the amount" of files and data reference information only to include.

また、本システムの特徴には、スパースファイル(sparse file)を容易に実現できることがある。 Further, the feature of the present system may be easily realized sparse files (sparse file). スパースファイルでは、使ってないところが「nul埋め」される。 In the sparse file, where you're not using it is "nul filled". したがって、例えば、「readAt」を実行した場合、データがないところは「nul」データとして読み出される。 Thus, for example, when the "readAt", where no data is read as a "nul" data. これにより、物理容量を使わずに論理的なファイルサイズが大きくできる。 Accordingly, the logical file size without physical capacity can be increased. スパースファイルの第1のメリットとして、論理的には事実上無限サイズのファイルを作成可能であることが挙げられる。 As a first advantage of sparse files, and it is logically possible to create a file of virtually unlimited size. ファイルの構造は、テーブルだけで表現することが可能であり、データのないところは「nul」データとして読み出される。 The structure of the file, it is possible to express only in the table, the absence of data is read as "nul" data. スパースファイルの第2のメリットとして、実際にデータを書き込んだときに初めてブロックが作成されることが挙げられる。 As a second advantage of sparse files, first block and the like that are created when writing the actual data. データを書き込まない部分は、必要な容量は最小限(テーブル情報のみ)で済む。 Portion not write data, the required capacitance is minimal (table information only).

また、本システムは、暗号化との組み合わせで安全なデータ書き込みを実現できる点に特徴がある。 Further, the system is characterized in that it can realize the combination in a secure data write encryption. 事前にユーザがファイル全体を暗号化することにより、安全なデータ書き込みが実現される。 By the user to encrypt the entire file in advance, safe data writing is realized. 暗号化方式は任意である。 Encryption scheme is optional. 本システムでは、暗号化されたファイルを多数のブロックに分割し、複数の仮想デバイス(例えば、サービス事業者)に分散して保存する。 In this system, it divides the encrypted file into a number of blocks, the plurality of virtual devices (e.g., service provider) to save dispersed. ファイルの復号化は、仮想デバイスから各断片を集めてきてファイルを再構成し、ファイルを再構成後、ユーザ側で復号化すればよい。 Decrypt files reconstructs the file have attracted each fragment from the virtual device, after reconstruction of the file may be decrypted on the user side. この特徴により、暗号化されたデータを、より安全に保存することができる。 This feature allows the encrypted data, stores more safely. この場合、各仮想デバイスは「暗号化されたファイル」の断片のみを持つことになるので、仮想デバイスがサービス事業者である場合、特定のサービス事業者のデータだけでは、元ファイルを生成することはできない。 In this case, since the virtual device will have only a fragment of the "encrypted file", if the virtual device is a service company, only the data for a particular service provider, generating a source file can not.

また、本システムの特徴の一つには、アトミックな更新(途中の状態が存在しない不可分な更新処理)が可能であることが挙げられる。 Also, with one aspect of the present system include that atomic updates (atomic update process there is no intermediate state) is possible. ファイルの更新は、先頭テーブルの「table-id」のアトミックな書き換えで確定する。 Update of the file will be determined at the atomic rewriting of the "table-id" in the top table. ファイルを構成する「object-id」は、毎回新規作成され、「table-id」と「block-id」は、いずれも「更新」するたびに新しいIDが割り当てられる。 The make up "object-id" is the file, is every time create a new, as "table-id", "block-id" is, both of which are assigned a new ID every time you "update". すなわち、「table-id」が決められると、それ以降、その中身は同一であり変更されることがない。 In other words, when the "table-id" is determined, later, its contents can not be changed is the same. このような特徴を備えることにより、本システムでは「書き込み中の読み込みが可能である」というメリットが得られる。 By providing such a feature, an advantage that "read during programming is possible" is obtained in this system. ファイルは常に「完全な状態」であるため、先頭テーブルの「table-id」が書き換えられるまでは、以前のファイルのままであり、先頭テーブルの「table-id」が書き換えられると、即座に、更新されたファイルの内容になる。 Because the file is always "perfect condition", until the top table is "table-id" is rewritten, it remains of the previous file, and "table-id" of the top table is rewritten, immediately, made to the contents of the updated file. したがって、ファイルのロックをしなくても「書き込み中に読み込みも実行できる」ようになる。 Thus, even without the lock of the file so that "reading can also be performed during the writing." また、本システムでは「コピー、スナップショットが容易である」というメリットも得られる。 Further, in this system benefits can be obtained as "copy, snapshot is easy." コピーやスナップショットの方法としては、例えば、新しい「file-id」に対して、既存ファイルの「table-id」をコピーする方法がある。 As a method of copy or snapshot, for example, for a new "file-id", there is a method to copy the "table-id" in the existing file. これにより、同一の「table-id」の内容の同一性が保証される。 As a result, the identity of the identity of the contents of the "table-id" is guaranteed.

また、本システムは、クライアントの分散処理が容易であるという特徴を備えている。 The system also includes a feature that the dispersion process of the client is easy. 図18において破線で示すように、例えば、人気のVOD(ビデオ・オン・デマンド)やイベント時のホームページなど、または、大容量のデータの分析を「分散処理」で行う場合など、一つのクライアント装置にアクセスが集中してしまうことがある。 As shown by the broken line in FIG. 18, for example, such as the popular VOD (video on demand) or when an event homepage, or the like when performing an analysis of large amounts of data "distributed processing", a client apparatus there is that access is concentrated on. そのような場合に、集中アクセスの分散して処理することが望まれる。 In such a case, it is desired to distributed processing centralized access. また、非同期に多数のアクセスがある場合にも、負荷分散をすることが望まれる。 Further, even when there are many accesses asynchronously, it is desired to load balancing.

本システムでは、仮想ストレージ(上述した「クライアント装置」)を複数(多数)並べて、必要なファイルの情報(file-idとtable-idの対)を各仮想ストレージで取得するようにしている。 In this system, by arranging a plurality of virtual storage (described above "client device") (number), and the necessary file information (a pair of file-id and table-id) to be obtained in each virtual storage. したがって、図18において実線で示すように、各仮想ストレージが独立に仮想デバイスにアクセスすることで分散処理を実現することができる。 Therefore, as shown by the solid line in FIG. 18, it is possible to realize the distributed processing by the virtual storage access virtual device independently. 例えば、仮想デバイスがサービス事業者である場合には、事業者間の負荷分散が可能になる。 For example, if the virtual device is a service operator, allowing load distribution between carriers. また、仮想デバイスがサーバである場合には、サーバ間での負荷分散が可能になる。 Further, when the virtual device is a server, it is possible to load balancing between servers. いずれの場合にも、フロントエンドの個々の仮想ストレージはお互いに干渉しない。 In either case, each virtual storage frontend do not interfere with each other. また、本システムでは、特に大容量ファイルの場合に負荷分散が容易である。 Further, in the present system, it is easy to load distribution particularly in the case of large files. その場合、構成するテーブル、ブロック数が多くなるため、統計的にアクセスが分散することになる。 In this case, table structure, the number of blocks is increased, so that the statistical access dispersed. 結果として、本システムでは、極めてスケーラビリティが高い「アクセス分散」の仕組みが実現できる。 As a result, the present system can be implemented a mechanism of extremely high scalability "access distribution".

例えば、本システムで保存管理するファイルは、オブジェクト指向プログラムのクラス情報であってもよく、本システムの利用者が指定したプログラムをサーバ上で実行できるようにしてもよい。 For example, the file to be stored and managed in the present system may be a class information object oriented program, a program that the user of the system has specified may be able to run on the server. その場合、本システムの利用者(クライアント装置)とサーバで、プログラムの定義であるクラス情報を共有してもよい。 In that case, a user of the system (the client device) server, may share class information is the definition of the program. クラス情報を共有する場合には、例えば、図19に示すように、利用者は、本システムのサーバにクラス情報を登録し、各サーバにファイルIDを教えてから、プログラムの実行を指示する。 When sharing class information, for example, as shown in FIG. 19, the user registers the class information to the server of the system, from the teaching file ID to each server, and instructs the execution of the program. 各サーバでは、ファイルIDを用いて本システムからプログラムの実行に必要なクラス情報を取得することができる。 Each server can acquire the class information needed to execute the program from the system by using the file ID.

また、本システムの特徴には、並列分散処理により高スループットが得られるという点がある。 Further, the feature of the present system, there is a point that high throughput can be obtained by parallel distributed processing. 図20は、本システムにおける並列分散処理の説明図である。 Figure 20 is an explanatory diagram of a parallel distributed processing in the system. 図20に示すように、例えば、テーブルへの書き込み時には、テーブルが持つリスト内の各オブジェクト(テーブルまたはブロック)毎の書き込み処理の並列分散処理が可能である。 As shown in FIG. 20, for example, at the time of writing to the table, it is possible parallel distributed processing of the writing process for each object (table or block) in the list with the table. また、テーブルからの読み出し時には、テーブルが持つリスト内の各オブジェクト(テーブルまたはブロック)毎の読み出し処理の並列分散処理が可能である。 Also, when reading from the table can be parallel distributed processing of the reading process for each object (table or block) in the list of table has the. このように、例えば、ひとつのテーブルの書き込み/読み出しのいずれの場合にも、該テーブルの処理において、テーブル内のリストの要素数N(例えば、1024)に対して並列分散処理が可能である。 Thus, for example, in either case of the write / read of one table, in the processing of the table, the number of elements in the list in the table N (e.g., 1024) can parallel distributed processing to. 結果として、本システムでは、サイズの大きなファイルほど、並列分散処理が有効に機能することになり、高スループットを実現できる。 As a result, in this system, as the large files, will be parallel distributed processing to function effectively, it is possible to realize a high throughput.

また、本システムは、複製や冗長化の実現の仕方に特徴がある。 Further, the system is characterized by the way of realization of replication and redundancy. 本システムにおける冗長化の方式は「複数の仮想デバイスに複製を作成する」というものである。 Method of redundancy in the system is that "to create a duplicate into multiple virtual devices". つまり、書き込み時には、オブジェクト(テーブルまたはブロック)を複数の仮想デバイスにコピーし、読み込み時には、オブジェクトを上記のいずれかの仮想デバイスから読み出すようにしている。 In other words, at the time of writing, copying the objects (tables or blocks) a plurality of virtual devices, at the time of reading, so that reading from one of the virtual devices of the object. 複製を作成する仮想デバイスの選択では、サービステーブルが利用できる。 The selection of the virtual device to create a replication service table is available. 本システムでは、本来、オブジェクトを保存すべき仮想デバイスの「隣の仮想デバイス」が選択される。 In this system, originally, "next to the virtual device" of the virtual device to be saving the object is selected. この場合、冗長度(=多重度=複製の数)に応じて、複数の仮想デバイスが選択される。 In this case, redundancy in accordance with (= multiplicity = replication number), a plurality of virtual devices are selected. 静的なサービステーブルの場合には、Nで割った余りをもとに「隣の仮想デバイス」を決定する。 In the case of a static service table, to determine the "next to the virtual device" on the basis of the remainder divided by N. 例えば、「(n÷N)の余り、((n−1)÷N)の余り、((n−2)÷N)の余り、・・・」が、該当の仮想デバイスとして決定される。 For example, "remainder (n ÷ N), the remainder of ((n-1) ÷ N), the remainder, ... of ((n-2) ÷ N)" is determined as the virtual device corresponding. 動的なサービステーブルの場合には、該当の仮想デバイスの一つ前のサーバが、該当の仮想デバイスとして決定される。 In the case of dynamic service table, before one of the affected virtual device server is determined as appropriate for the virtual device. なお、書き込み時の処理は、該当の仮想デバイスすべてに対して同じオブジェクトのデータを書き込む。 The processing at the time of writing, writes the data of the same object to the virtual device all applicable. また、読み出し時の処理は、該当の仮想デバイスに対して順次読み込みを行い、最初にレスポンスが返ってきた時点で、それを読み込みデータとして用いる、または、該当の仮想デバイスに対して並列読み込みを行い、最もレスポンスが早かったものを読み込みデータとして用いる。 The processing at the time of reading sequentially attempts to read the corresponding virtual devices, after the first response is returned, using it as the read data, or performs a parallel read for the relevant virtual device , used as a data read what most response was early.

図21は、本システムの特徴の説明図である。 Figure 21 is an illustration of the features of this system. 図21に示すように、本システムでは、ファイルを多数のブロックとして保存し、並列にアクセスすることで、ストレージ装置の台数に比例したアクセス性能とストレージ容量を実現できる。 As shown in FIG. 21, in the present system, it saves the file as a plurality of blocks, by accessing them in parallel, it is possible to realize access performance and storage capacity which is proportional to the number of storage devices. この場合、クライアント装置(アクセスノードと呼ぶこともできる)は、アクセス性能に応じて台数を増やすことができる。 In this case, (which may also be referred to as an access node) client device may increase the number according to the access performance. また、ストレージ装置(コアノードと呼ぶこともできる)は、容量に応じてスケーラブルに追加が可能である。 Further, (may also be referred to as a core node) storage device may add scalable according to the capacity. つまり、本システムは、高度な分散コンピューティング技術を応用することにより、性能/容量とも台数に比例し、容易に拡張(スケールアウト)が可能であるともいえる。 That is, the system, by applying a highly distributed computing technologies, proportional to the number both performance / capacity, easily expanded also say (scale-out) is possible.

以上、本発明の実施形態について説明したが、上述の実施形態を本発明の範囲内で当業者が種々に変形、応用して実施できることは勿論である。 Having described embodiments of the present invention, those skilled in the art that various modifications and equivalent arrangements included within the scope of the present invention the embodiments described above can of course be implemented by applying.

以上のように、本発明にかかるストレージサービス提供装置は、例えば、ストレージサービス等のクラウドサービスに利用することができ、有用である。 As described above, the storage service providing apparatus according to the present invention, for example, can be utilized to cloud services such as storage services, useful.

1 分散型ストレージサービス提供システム(本システム) 1 distributed storage service providing system (the system)
2 ユーザ端末 3 クライアント装置(ストレージサービス提供装置) 2 the user terminal 3 a client device (a storage service providing apparatus)
4 ストレージ装置 5 通信部 6 書き込み・読み出し処理部 7 サービステーブル記憶部 8 通信部 9 ファイル・オブジェクト保存部 10 ファイル・オブジェクト管理部 4 storage device 5 communication unit 6 writing and reading processing unit 7 service table storage unit 8 communicating portion 9 file object storage section 10 file object manager

Claims (13)

  1. 複数のストレージ装置とネットワークを介して接続され、これらのストレージ装置を利用してファイルのストレージサービスを提供するストレージサービス提供装置であって、 Are connected via a plurality of storage devices and network, a storage service providing apparatus for providing storage services file using these storage devices,
    前記ストレージサービスにおいて、前記ファイルは、複数の領域に分割され、分散して複数のストレージ装置に保存され、 In the storage service, the file is divided into a plurality of regions, it is stored dispersed in a plurality of storage devices,
    前記複数のストレージ装置の各々は、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置から受信して保存する手段と、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置からの要求に応じて返送する手段とを備えるものであり、 Each of the plurality of storage devices, means for receiving and storing objects identified by the object identification information from the storage service providing apparatus, the objects identified by the object identification information to the request from the storage service providing apparatus is intended and means for returning in response,
    前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの領域を構成するデータを有するブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの領域に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、 The objects stored in said plurality of storage devices, the block objects having data constituting a region of the file, whether those objects identified by the object identification information corresponds to which region in the file There is a management information objects having a management information indicating,
    前記ストレージサービス提供装置は、 The storage service providing apparatus,
    保存されているファイル中の指定された部分に対するデータの書き込み命令を受け取る手段と、 It means for receiving a data write instruction for the specified portion of the file that is stored,
    前記書き込み命令の対象ファイルに対応する第1のオブジェクト識別情報に基づいて特定されるストレージ装置に要求して、前記第1のオブジェクト識別情報により識別される管理情報オブジェクトを取得する手段と、 It means for requesting the storage apparatus specified based on the first object identification information, acquires the management information object identified by the first object identification information corresponding to the target file of the write command,
    取得された管理情報オブジェクトの管理情報が示す第2のオブジェクト識別情報のうち前記書き込み命令の指定する部分に関係しないものについてはそのままとし、前記書き込み命令により書き込まれるデータを含むブロックオブジェクトに新たな第2のオブジェクト識別情報を付与し、前記書き込み命令の指定する部分に関係するものについては前記新たな第2のオブジェクト識別情報により識別される前記ブロックオブジェクトが前記ファイル中のどの領域に対応するものであるかを示すように前記管理情報を更新し、更新された前記管理情報を有する管理情報オブジェクトに新たな第1のオブジェクト識別情報を付与する手段と、 For those not related to the specified portion of the write command of the second object identification information indicated by the management information of the acquired management information object as it is, the new block object containing the data to be written by the write command grant second object identification information, for those relating to the specified portion of the write command is intended the block object identified by the second object identification information the new corresponds to which region in the file It means for applying a first object identification information new to some or to update the management information to indicate management information object with the updated management information,
    前記新たな第1のオブジェクト識別情報により識別される前記管理情報オブジェクト及び前記新たな第2のオブジェクト識別情報により識別される前記ブロックオブジェクトを、各々のオブジェクト識別情報に基づいて特定されるストレージ装置に送信して保存させ、前記書き込み命令により部分的にデータが更新された前記ファイルの全体を読み出し可能とする手段とを備えることを特徴とするストレージサービス提供装置。 The block object identified by the management information objects and the second object identification information the new identified by the new first object identification information, the storage device specified based on each object identifier transmitted by saving the storage service providing apparatus characterized by comprising a means for enabling reading the whole of the file partially data is updated by the write command.
  2. 前記書き込み命令により部分的にデータが更新された前記ファイルは、該ファイルに対応して前記新たな第1のオブジェクト識別情報が求められるように設定することにより、前記更新に伴ってストレージ装置に送信され保存されたオブジェクト及び前記書き込み命令の指定する部分に関係せずそのままとされたオブジェクトを含むファイル全体が、読み出し可能となるものであることを特徴とする請求項1に記載のストレージサービス提供装置。 Wherein said file partially data is updated by the write instruction, by setting such that the first object identification information the new corresponding to the file is required, sent to the storage device in association with the update is the entire file that contains it and object not related to the specified portion of the stored object and the write command, the storage service providing apparatus according to claim 1, characterized in that as a readable .
  3. 前記管理情報オブジェクトの管理情報は、オブジェクト識別情報に基づいて特定されるストレージ装置に要求して、該オブジェクト識別情報により識別されるオブジェクトを取得する処理を、再帰的に行うことにより得られるものを含む、請求項1又は2に記載のストレージサービス提供装置。 Management information of the management information object, requests the storage apparatus specified based on the object identification information, the process of acquiring the object identified by the object identification information, those obtained by performing recursively including, storage service providing apparatus according to claim 1 or 2.
  4. 前記オブジェクト識別情報は、前記複数のストレージ装置に保存される全ての管理情報オブジェクト及びブロックオブジェクトの間で一意にオブジェクトを識別可能な情報であり、且つ、同一のオブジェクト識別情報を有するオブジェクトの内容は不変であることを特徴とする請求項1〜3のいずれか1項に記載のストレージサービス提供装置。 The object identification information, said a plurality of identifiable information uniquely objects between all management information objects and block objects stored in the storage device, and the contents of the object having the same object identification information storage service providing apparatus according to any one of claims 1 to 3, characterized in that it is unchanged.
  5. 前記書き込み命令の指定する部分に関係する前記第2のオブジェクト識別情報により識別されるブロックオブジェクトをストレージ装置から取得し、取得されたブロックオブジェクトが有するデータのうち前記書き込み命令の指定する部分を前記書き込み命令により書き込まれるデータで更新することにより、前記新たな第2のオブジェクト識別情報により識別される前記ブロックオブジェクトを生成する手段を更に備える、請求項1〜4のいずれか1項に記載のストレージサービス提供装置。 The block object identified by the second object identification information relating to the specified portion of the write command acquired from the storage device, the write part designated by the write command of the data included in the acquired block objects by updating the data to be written by the instruction, further comprising means for generating the block object identified by the new second object identification information, storage service according to any one of claims 1 to 4 providing apparatus.
  6. 前記管理情報オブジェクト及び前記ブロックオブジェクトを、各々のオブジェクト識別情報に基づいて特定されるストレージ装置に送信して保存させる手段は、各々のオブジェクト識別情報に基づいて前記複数のストレージ装置のうちの二つ以上のストレージ装置を特定する手段と、各々のオブジェクト識別情報により識別されるオブジェクトを複製し、前記二つ以上のストレージ装置へ送信して保存させる手段とを含む、請求項1〜5のいずれか1項に記載のストレージサービス提供装置。 The management information objects and the block object, means for saving and transmitted to the storage apparatus specified based on each of the object identification information, two of said plurality of storage devices based on each object identifier means for identifying the or more storage devices, to duplicate the object identified by each of the object identification information, and means for saving transmit to the two or more storage devices, any one of claims 1 to 5 storage service providing apparatus according to item 1.
  7. 保存されているファイル中の指定された部分に対するデータの読み出し命令を受け取る手段と、 Means for receiving a data read command for the specified portion of the file that is stored,
    前記読み出し命令の対象ファイルに属する管理情報オブジェクト及びブロックオブジェクトのうち前記読み出し命令の指定する部分に関係するものを選択し、選択された各オブジェクトのオブジェクト識別情報に基づいて特定されるストレージ装置に要求して、該オブジェクト識別情報により識別されるオブジェクトを取得する手段とを更に備える、請求項1〜6のいずれか1項に記載のストレージサービス提供装置。 Select the one associated with the specified portion of the read instruction of the management information objects and block objects belonging to the target file of the read command, request to the storage apparatus specified based on the object identification information for each selected object to, further comprising means for obtaining object identified by the object identification information, the storage service providing apparatus according to any one of claims 1-6.
  8. 前記各オブジェクトを、オブジェクト識別情報に基づいて特定されるストレージ装置に要求して取得する手段は、各々のオブジェクト識別情報に基づいて前記複数のストレージ装置のうちの二つ以上のストレージ装置を特定する手段と、特定された一つのストレージ装置にアクセスして応答がなかった場合に、特定された別のストレージ装置にアクセスしてオブジェクトを取得する手段とを含む、請求項7に記載のストレージサービス提供装置。 Each of said object, means for acquiring request to the storage apparatus specified based on the object identification information identifies two or more storage devices of the plurality of storage devices based on each object identifier and means, if no response to access a storage device identified, and means for obtaining the object by accessing to another storage device identified, provided storage service according to claim 7 apparatus.
  9. 前記各オブジェクトを、オブジェクト識別情報に基づいて特定されるストレージ装置に要求して取得する手段は、各々のオブジェクト識別情報に基づいて前記複数のストレージ装置のうちの二つ以上のストレージ装置を特定する手段と、特定された二つ以上のストレージ装置に並行してアクセスし、応答の早かったストレージ装置からのオブジェクトを取得する手段とを含む、請求項7に記載のストレージサービス提供装置。 Each of said object, means for acquiring request to the storage apparatus specified based on the object identification information identifies two or more storage devices of the plurality of storage devices based on each object identifier means and accesses in parallel in two or more storage devices that are identified, and means for obtaining the object from earlier was the storage device response, storage service providing apparatus according to claim 7.
  10. 前記複数のストレージ装置のうち、ある一部のストレージ装置と他の一部のストレージ装置とが、異なるサービス提供事業者により提供されるストレージサービスに係るものであり、 Among the plurality of storage devices, and some of the storage device with the other part of the storage device, which according to the storage service provided by different service providers,
    前記ストレージサービス提供装置がストレージ装置に対して行うオブジェクトの要求及び送信は、該ストレージ装置をサーバとし、前記ストレージサービス提供装置をクライアントとして、該ストレージ装置のサービス提供事業者が定めるアクセスプロトコルにて行われるものである、請求項1〜9のいずれか1項に記載のストレージサービス提供装置。 The storage service providing apparatus requests and transmission of the object to perform the storage device, the storage device and the server, the storage service providing device as a client, the line at the access protocol service provider of the storage device is determined it is intended to divide the storage service providing apparatus according to any one of claims 1-9.
  11. クライアント装置及び該クライアント装置にネットワークを介して接続された複数のストレージ装置を備え、該クライアント装置がユーザに対してファイルのストレージサービスを提供するシステムであって、 Comprising a client device and a plurality of storage devices connected via the network to the client device, the client device is a system for providing a storage service file to the user,
    前記ストレージサービスにおいて、前記ファイルは、複数の領域に分割され、分散して複数のストレージ装置に保存され、 In the storage service, the file is divided into a plurality of regions, it is stored dispersed in a plurality of storage devices,
    前記複数のストレージ装置の各々は、 Each of the plurality of storage devices,
    オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置から受信して保存する手段と、 It means for storing the objects identified by the object identification information received from the storage service providing apparatus,
    オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置からの要求に応じて返送する手段とを備え、 And means for returning in response to objects identified by the object identification information to the request from the storage service providing apparatus,
    前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの領域を構成するデータを有するブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの領域に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、 The objects stored in said plurality of storage devices, the block objects having data constituting a region of the file, whether those objects identified by the object identification information corresponds to which region in the file There is a management information objects having a management information indicating,
    前記クライアント装置は、 The client device,
    保存されているファイル中の指定された部分に対するデータの書き込み命令を受け取る手段と、 It means for receiving a data write instruction for the specified portion of the file that is stored,
    前記書き込み命令の対象ファイルに対応する第1のオブジェクト識別情報に基づいて特定されるストレージ装置に要求して、前記第1のオブジェクト識別情報により識別される管理情報オブジェクトを取得する手段と、 It means for requesting the storage apparatus specified based on the first object identification information, acquires the management information object identified by the first object identification information corresponding to the target file of the write command,
    取得された管理情報オブジェクトの管理情報が示す第2のオブジェクト識別情報のうち前記書き込み命令の指定する部分に関係しないものについてはそのままとし、前記書き込み命令により書き込まれるデータを含むブロックオブジェクトに新たな第2のオブジェクト識別情報を付与し、前記書き込み命令の指定する部分に関係するものについては前記新たな第2のオブジェクト識別情報により識別される前記ブロックオブジェクトが前記ファイル中のどの領域に対応するものであるかを示すように前記管理情報を更新し、更新された前記管理情報を有する管理情報オブジェクトに新たな第1のオブジェクト識別情報を付与する手段と、 For those not related to the specified portion of the write command of the second object identification information indicated by the management information of the acquired management information object as it is, the new block object containing the data to be written by the write command grant second object identification information, for those relating to the specified portion of the write command is intended the block object identified by the second object identification information the new corresponds to which region in the file It means for applying a first object identification information new to some or to update the management information to indicate management information object with the updated management information,
    前記新たな第1のオブジェクト識別情報により識別される前記管理情報オブジェクト及び前記新たな第2のオブジェクト識別情報により識別される前記ブロックオブジェクトを、各々のオブジェクト識別情報に基づいて特定されるストレージ装置に送信して保存させ、前記書き込み命令により部分的にデータが更新された前記ファイルの全体を読み出し可能とする手段とを備えることを特徴とするシステム。 The block object identified by the management information objects and the second object identification information the new identified by the new first object identification information, the storage device specified based on each object identifier transmitted by saving system characterized by comprising a means for enabling reading the whole of the file partially data is updated by the write command.
  12. 複数のストレージ装置とネットワークを介して接続されたコンピュータにより、これらのストレージ装置を利用してファイルのストレージサービスを提供する方法であって、 A plurality of storage devices and computers connected via a network, a utilizing these storage devices method of providing storage service file,
    前記ストレージサービスにおいて、前記ファイルは、複数の領域に分割され、分散して複数のストレージ装置に保存され、 In the storage service, the file is divided into a plurality of regions, it is stored dispersed in a plurality of storage devices,
    前記複数のストレージ装置の各々は、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置から受信して保存する手段と、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置からの要求に応じて返送する手段とを備えるものであり、 Each of the plurality of storage devices, means for receiving and storing objects identified by the object identification information from the storage service providing apparatus, the objects identified by the object identification information to the request from the storage service providing apparatus is intended and means for returning in response,
    前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの領域を構成するデータを有するブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの領域に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、 The objects stored in said plurality of storage devices, the block objects having data constituting a region of the file, whether those objects identified by the object identification information corresponds to which region in the file There is a management information objects having a management information indicating,
    前記方法は、 The method,
    保存されているファイル中の指定された部分に対するデータの書き込み命令を受け取り、 Receiving a write instruction of data for the specified portion of the file that is stored,
    前記書き込み命令の対象ファイルに対応する第1のオブジェクト識別情報に基づいて特定されるストレージ装置に要求して、前記第1のオブジェクト識別情報により識別される管理情報オブジェクトを取得し、 The request to the storage apparatus specified based on the first object identification information corresponding to the target file of the write command, and acquires the management information object identified by the first object identification information,
    取得された管理情報オブジェクトの管理情報が示す第2のオブジェクト識別情報のうち前記書き込み命令の指定する部分に関係しないものについてはそのままとし、前記書き込み命令により書き込まれるデータを含むブロックオブジェクトに新たな第2のオブジェクト識別情報を付与し、前記書き込み命令の指定する部分に関係するものについては前記新たな第2のオブジェクト識別情報により識別される前記ブロックオブジェクトが前記ファイル中のどの領域に対応するものであるかを示すように前記管理情報を更新し、更新された前記管理情報を有する管理情報オブジェクトに新たな第1のオブジェクト識別情報を付与し、 For those not related to the specified portion of the write command of the second object identification information indicated by the management information of the acquired management information object as it is, the new block object containing the data to be written by the write command grant second object identification information, for those relating to the specified portion of the write command is intended the block object identified by the second object identification information the new corresponds to which region in the file wherein updating the management information, to grant the first object identification information new management information object with the updated management information to indicate whether,
    前記新たな第1のオブジェクト識別情報により識別される前記管理情報オブジェクト及び前記新たな第2のオブジェクト識別情報により識別される前記ブロックオブジェクトを、各々のオブジェクト識別情報に基づいて特定されるストレージ装置に送信して保存させ、前記書き込み命令により部分的にデータが更新された前記ファイルの全体を読み出し可能とすることを特徴とするサービス提供方法。 The block object identified by the management information objects and the second object identification information the new identified by the new first object identification information, the storage device specified based on each object identifier transmitted by stored, a service providing method characterized in that to enable reading the whole of the file partially data is updated by the write command.
  13. 複数のストレージ装置とネットワークを介して接続されたコンピュータを、これらのストレージ装置を利用してファイルのストレージサービスを提供する装置として動作させるためのプログラムであって、 The connected computer through a plurality of storage devices and network, a program for utilizing these storage devices to operate as an apparatus for providing a storage service file,
    前記ストレージサービスにおいて、前記ファイルは、複数の領域に分割され、分散して複数のストレージ装置に保存され、 In the storage service, the file is divided into a plurality of regions, it is stored dispersed in a plurality of storage devices,
    前記複数のストレージ装置の各々は、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置から受信して保存する手段と、オブジェクト識別情報により識別されるオブジェクトを前記ストレージサービス提供装置からの要求に応じて返送する手段とを備えるものであり、 Each of the plurality of storage devices, means for receiving and storing objects identified by the object identification information from the storage service providing apparatus, the objects identified by the object identification information to the request from the storage service providing apparatus is intended and means for returning in response,
    前記複数のストレージ装置に保存されるオブジェクトには、前記ファイルの領域を構成するデータを有するブロックオブジェクトと、オブジェクト識別情報により識別されるオブジェクトが前記ファイル中のどの領域に対応するものであるかを示す管理情報を有する管理情報オブジェクトとがあり、 The objects stored in said plurality of storage devices, the block objects having data constituting a region of the file, whether those objects identified by the object identification information corresponds to which region in the file There is a management information objects having a management information indicating,
    前記プログラムは、 The program,
    保存されているファイル中の指定された部分に対するデータの書き込み命令を受け取るためのプログラムコードと、 And program code for receiving a data write instruction for the specified portion of the file that is stored,
    前記書き込み命令の対象ファイルに対応する第1のオブジェクト識別情報に基づいて特定されるストレージ装置に要求して、前記第1のオブジェクト識別情報により識別される管理情報オブジェクトを取得するためのプログラムコードと、 Request the storage apparatus specified based on the first object identification information corresponding to the target file of the write command, the program code for retrieving management information object identified by the first object identification information ,
    取得された管理情報オブジェクトの管理情報が示す第2のオブジェクト識別情報のうち前記書き込み命令の指定する部分に関係しないものについてはそのままとし、前記書き込み命令により書き込まれるデータを含むブロックオブジェクトに新たな第2のオブジェクト識別情報を付与し、前記書き込み命令の指定する部分に関係するものについては前記新たな第2のオブジェクト識別情報により識別される前記ブロックオブジェクトが前記ファイル中のどの領域に対応するものであるかを示すように前記管理情報を更新し、更新された前記管理情報を有する管理情報オブジェクトに新たな第1のオブジェクト識別情報を付与するためのプログラムコードと、 For those not related to the specified portion of the write command of the second object identification information indicated by the management information of the acquired management information object as it is, the new block object containing the data to be written by the write command grant second object identification information, for those relating to the specified portion of the write command is intended the block object identified by the second object identification information the new corresponds to which region in the file or to update the management information to indicate certain, and program code for providing a first object identification information new management information object having the management information updated,
    前記新たな第1のオブジェクト識別情報により識別される前記管理情報オブジェクト及び前記新たな第2のオブジェクト識別情報により識別される前記ブロックオブジェクトを、各々のオブジェクト識別情報に基づいて特定されるストレージ装置に送信して保存させ、前記書き込み命令により部分的にデータが更新された前記ファイルの全体を読み出し可能とするためのプログラムコードとを備えることを特徴とするサービス提供プログラム。 The block object identified by the management information objects and the second object identification information the new identified by the new first object identification information, the storage device specified based on each object identifier transmitted by stored, a service providing program characterized by comprising a program code for enabling reading the whole of the said file partially data is updated by the write command.
JP2013019173A 2013-02-04 2013-02-04 Storage service providing apparatus, system, service providing method and service providing program Active JP5236129B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013019173A JP5236129B2 (en) 2013-02-04 2013-02-04 Storage service providing apparatus, system, service providing method and service providing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013019173A JP5236129B2 (en) 2013-02-04 2013-02-04 Storage service providing apparatus, system, service providing method and service providing program

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010237828 Division 2010-10-22

Publications (2)

Publication Number Publication Date
JP2013093050A true JP2013093050A (en) 2013-05-16
JP5236129B2 true JP5236129B2 (en) 2013-07-17

Family

ID=48616077

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013019173A Active JP5236129B2 (en) 2013-02-04 2013-02-04 Storage service providing apparatus, system, service providing method and service providing program

Country Status (1)

Country Link
JP (1) JP5236129B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101489587B1 (en) 2013-08-16 2015-02-06 한양대학교 에리카산학협력단 Virtual framework for media cloud service
WO2016088258A1 (en) * 2014-12-05 2016-06-09 株式会社日立製作所 Storage system, backup program, and data management method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3817339B2 (en) * 1997-06-26 2006-09-06 株式会社日立製作所 File input and output control method
US6029168A (en) * 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
JP2000207370A (en) * 1999-01-20 2000-07-28 Matsushita Electric Ind Co Ltd Distributed file management device and distributed file management system
JP2003280962A (en) * 2002-03-22 2003-10-03 Seiko Epson Corp Data protection system by distributed device and method thereof, as well as computer program
JP2004280283A (en) * 2003-03-13 2004-10-07 Hitachi Ltd Distributed file system, distributed file system server, and access method to distributed file system
JP4601969B2 (en) * 2004-01-27 2010-12-22 株式会社日立製作所 File input and output control unit
JP4784854B2 (en) * 2005-06-13 2011-10-05 独立行政法人産業技術総合研究所 Data management apparatus and method
JP2009064189A (en) * 2007-09-05 2009-03-26 Nippon Telegr & Teleph Corp <Ntt> File writing system and method

Also Published As

Publication number Publication date Type
JP2013093050A (en) 2013-05-16 application

Similar Documents

Publication Publication Date Title
US6029168A (en) Decentralized file mapping in a striped network file system in a distributed computing environment
Liu et al. Implementing WebGIS on Hadoop: A case study of improving small file I/O performance on HDFS
US5857203A (en) Method and apparatus for dividing, mapping and storing large digital objects in a client/server library system
US20110022566A1 (en) File system
US20140025770A1 (en) Systems, methods and devices for integrating end-host and network resources in distributed memory
US9043567B1 (en) Methods and systems for replicating an expandable storage volume
US20100088349A1 (en) Virtual file system stack for data deduplication
US20110137966A1 (en) Methods and systems for providing a unified namespace for multiple network protocols
US7007024B2 (en) Hashing objects into multiple directories for better concurrency and manageability
US20130238641A1 (en) Managing tenant-specific data sets in a multi-tenant environment
US20130218840A1 (en) System and method for building a point-in-time snapshot of an eventually-consistent data store
US7743038B1 (en) Inode based policy identifiers in a filing system
US7469260B2 (en) File storage service system, file management device, file management method, ID denotative NAS server and file reading method
US20080005145A1 (en) Data processing
US20110066668A1 (en) Method and System for Providing On-Demand Services Through a Virtual File System at a Computing Device
US20130311612A1 (en) Indirection Objects in a Cloud Storage System
US20120330903A1 (en) Deduplication in an extent-based architecture
US20100169415A1 (en) Systems, methods, and apparatus for identifying accessible dispersed digital storage vaults utilizing a centralized registry
US20100070515A1 (en) Shared namespace for storage clusters
US20100169391A1 (en) Object interface to a dispersed data storage network
Nicolae et al. BlobSeer: Bringing high throughput under heavy concurrency to Hadoop Map-Reduce applications
US7702640B1 (en) Stratified unbalanced trees for indexing of data items within a computer system
US8266136B1 (en) Mechanism for performing fast directory lookup in a server system
US20110196822A1 (en) Method and System For Uploading Data Into A Distributed Storage System
US8484259B1 (en) Metadata subsystem for a distributed object store in a network storage system

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20130222

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130326

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160405

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250