WO2017145214A1 - センタノードからエッジノードにデータを転送する計算機システム - Google Patents

センタノードからエッジノードにデータを転送する計算機システム Download PDF

Info

Publication number
WO2017145214A1
WO2017145214A1 PCT/JP2016/054970 JP2016054970W WO2017145214A1 WO 2017145214 A1 WO2017145214 A1 WO 2017145214A1 JP 2016054970 W JP2016054970 W JP 2016054970W WO 2017145214 A1 WO2017145214 A1 WO 2017145214A1
Authority
WO
WIPO (PCT)
Prior art keywords
file
client
data
snapshot
center
Prior art date
Application number
PCT/JP2016/054970
Other languages
English (en)
French (fr)
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
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/054970 priority Critical patent/WO2017145214A1/ja
Publication of WO2017145214A1 publication Critical patent/WO2017145214A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Definitions

  • the present invention generally relates to file management, for example, file backup or file sharing.
  • each of one or more edge nodes stores a file in the center node.
  • the edge node is a node on the front end side (client side), and the center node is a node on the back end side.
  • the node is a computer, and may be a storage server such as a file server, for example.
  • each primary file server provides an RW snapshot name space to a client, and a secondary file server provides an RO snapshot name space.
  • the namespace of the RW snapshot corresponds to the namespace of the RO snapshot.
  • RW and RO are examples of access restrictions, respectively.
  • RW means readable / writable.
  • RO means read-only (reading is possible among writing and reading).
  • each file is a stub file that points to a file on the secondary file server.
  • the primary file server When the primary file server receives a write request from the client, the primary file server acquires a file corresponding to the write destination stub file from the secondary file server, writes it to the RW snapshot, and writes the file overwritten with the write data according to the write request to the secondary file server. Transfer to file server.
  • the stub file being acquired from the secondary file server and the stub file being transferred to the secondary file server are It may be updated according to a write request from the client.
  • the primary file server is an example of an edge node
  • the secondary file server is an example of a center node.
  • the edge node executes at least the data transfer process of the recall process and the data transfer process.
  • the recall process is a process executed for each of one or more incomplete files, and is a process for acquiring existing data from the center name space.
  • the data transfer process is a process of transferring transfer data created using existing data and write data to the center node.
  • Each of the one or more incomplete files is one of an old file with data shortage and an update file with data shortage.
  • the old file is a file before being updated.
  • the update file is a file after the old file is updated using the write data.
  • the existing data is one of the old file and at least a part of the missing data.
  • the missing data is a difference from the write data in the old file.
  • the transfer data is either one of a complete update file that is an update file with no data shortage, and partial data that is a part of the complete update file and includes the write data and satisfies the size specified by the center node. is there.
  • the edge node executes collateral processing that ensures at least the second consistency among the first consistency of the file being recalled and the second consistency of the file being data transferred.
  • FIG. 1 shows a schematic configuration of an entire system according to an embodiment.
  • a configuration of NAS Network Attached Storage
  • the structure of CAS Content Addressed Storage
  • the structural example of a NAS object table is shown. Indicates the directory data of the root directory. Indicates the directory data of the directory “Share”.
  • the structure of a CAS object table is shown. It is a flowchart of a migration process.
  • 3 is a table showing an outline of collateral methods 1 to 5; The outline of collateral method 1 is shown.
  • An outline of collateral method 2 is shown.
  • the outline of collateral method 3 is shown.
  • An outline of collateral method 4 is shown.
  • An overview of collateral method 5 (with snapshot) is shown.
  • collateral method 5 non-snapshot use
  • It is a flowchart of a data transfer process. It is a flowchart of an object preservation
  • the “interface part” includes one or more interfaces.
  • the one or more interfaces may be one or more similar interface devices (for example, one or more NIC (Network Interface Card)) or two or more different interface devices (for example, NIC and HBA (Host Bus Adapter)). There may be.
  • NIC Network Interface Card
  • HBA Home Bus Adapter
  • the “storage unit” includes one or more memories.
  • the at least one memory may be a volatile memory or a non-volatile memory.
  • the storage unit may include one or more PDEVs in addition to one or more memories.
  • PDEV means a physical storage device and may typically be a non-volatile storage device (eg, an auxiliary storage device).
  • the PDEV may be, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • the “processor unit” includes one or more processors.
  • the at least one processor is typically a CPU (Central Processing Unit).
  • the processor may include a hardware circuit that performs part or all of the processing.
  • the process may be described using “program” as the subject, but the program is executed by the processor unit, so that the determined process can be appropriately performed in the storage unit and the interface unit.
  • the subject of processing may be a processor unit (or a computer or a computer system having a processor unit).
  • the program may be installed in the computer from a program source.
  • the program source may be, for example, a recording medium (for example, a non-transitory recording medium) that can be read by a program distribution server or a computer.
  • two or more programs may be realized as one program, or one program may be realized as two or more programs.
  • information may be described using an expression such as “xxx table”, but the information may be expressed in any data structure. That is, in order to show that the information does not depend on the data structure, the “xxx table” can be referred to as “xxx information”.
  • the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of the two or more tables may be a single table. Good.
  • a reference code (or a common part in the reference sign) is used, and when explaining the same kind of element separately, the element ID (or Element reference signs) may be used.
  • each of the edge node and the center node is a computer.
  • the “computer” is typically a server such as a file server.
  • the file data stored in the name space provided by each of the edge node and the center node is stored in one or more PDEVs.
  • the one or more PDEVs may be in or outside the computer. Good.
  • object is a file or a directory.
  • file may mean not only a file but also a directory, like a file server program or a file sharing protocol. That is, “object” may be called “file”, and “file” may mean both a file and a directory.
  • object is composed of content (object body) and metadata.
  • the object content is associated with the object metadata.
  • the content in the object may be data created by the client itself, for example, data written in a file, or the name of an object created under a directory (generally called “directory entry”).
  • Metadata in an object includes a time stamp (object creation time, object last update time, etc.), access control information (for example, object owner, ownership group, ACL (Access Control List) on Windows OS) (Windows is a registered trademark).
  • ACL Access Control List
  • the client is a UNIX client, for example, a permission may be adopted instead of the ACL in the access control information (UNIX is a registered trademark).
  • object path is a path to an object, and more specifically, an ID (character string) indicating the location of the object.
  • the object path is, for example, a character string delimited by slashes such as “dir / fileA” (this example shows a file “fileA” under the directory “dir”).
  • At least one term of “parent object”, “higher object”, “child object”, and “lower object” may be used to mean a relationship between objects.
  • Parent object means an object one level above the object.
  • Higher object means an object higher than the object. Therefore, the parent object is one of the upper objects.
  • Choild object means an object one level lower than the object.
  • Lower object means an object lower than the object. Therefore, the child object is one of the subordinate objects.
  • the child object is the directory “dirB”
  • the lower objects are the directory “dirB” and the file “fileC”. Since the relationship between objects is relative, it is natural to pay attention to whether each object is a “parent object”, “upper object”, “child object”, or “lower object”. It depends on the object.
  • FIG. 1 shows an example of an outline of a computer system according to an embodiment of the present invention.
  • the computer system is, for example, a distributed file system.
  • the computer system includes a NAS (Network Attached Storage) 300 that is an example of an edge node and a CAS (Content Addressed Storage) 400 that is an example of a center node.
  • the NAS 300 provides a client file system (an example of a local name space) 316 to the client 201.
  • the CAS 400 provides the NAS 300 with a file system (an example of a center name space) 413 corresponding to the client file system 316.
  • an object ID and an object are associated with each other.
  • the client 201 is connected to the NAS 300.
  • the client 201 is a computer that can communicate with the NAS 300, specifically, a stationary or mobile personal computer, or a smart device (for example, a tablet computer or a smartphone).
  • the client 201 may be a NAS 300 user (specifically, for example, a user who operates an input / output device (not shown) of the NAS 300) instead of such a computer.
  • the client 201 performs client access to the client file system 316 of the NAS 300.
  • the client access is an access to an object, and is at least one of a client read that is a read of the object and a client write that is a write of at least a part of the object (write data).
  • the NAS 300 executes at least the data transfer process of the recall process and the data transfer process when there is a client write (when a write request for writing write data is received from the client 201).
  • the “recall process” is a process executed for each of one or more incomplete files, and is a process for acquiring existing data from the file system 413.
  • the “data transfer process” is a process for transferring transfer data created using existing data and write data to the CAS 400.
  • the “incomplete file” is one of an old file with insufficient data and an update file with insufficient data. Specifically, for example, an incomplete file is a file having only metadata, or a file holding only a part of metadata and content.
  • the “old file” is a file before being updated.
  • the “update file” is a file after the old file is updated using write data (write target data accompanying a write request).
  • Existing data is one of an old file and at least a part of the missing data.
  • the “insufficient data” is a difference from the write data in the old file.
  • the “transfer data” is either one of the complete update file and the partial data.
  • the “complete update file” is an update file with no data shortage.
  • Partial data is a part of the complete update file and includes write data and satisfies the size specified by CAS 400.
  • NAS 300 there are a plurality of NAS 300, but one NAS 300 may be provided.
  • CAS 400 a plurality of CAS 400 may exist.
  • P The NAS 300 backs up data as at least a part of the file to the file system 413 of the CAS 400.
  • Q A file system 413 of the CAS 400 is provided to a plurality of NAS 300. In other words, files in the file system 413 of the CAS 400 are shared by a plurality of NAS 300.
  • the data structure in the CAS 400 is also described in a tree structure, but in reality, the data structure in the CAS 400 is It does not necessarily have a tree structure.
  • stub file means a file whose stub flag described later is “ON”.
  • a “stub file” is typically an example of an incomplete file, but a fully updated file may be a stub file.
  • the complete update file whose stub flag is “ON” is a stub file in this embodiment.
  • a file that is both a stub file and an update file is referred to as an “update stub file”.
  • the “migration process” includes at least a data transfer process.
  • the recall process includes a recall process in addition to the data transfer process.
  • the stub file 107 is stored in the client file system 316, and the complete file 110 associated with the stub file 107 is stored in the file system 413.
  • a “complete file” is a file with no data shortage.
  • the migration process may be started at any timing.
  • the NAS 300 receives a write request specifying the stub file 107A in the client file system 316 from the client 201.
  • the NAS 300 changes the stub file 107A to the updated stub file 108A in accordance with the write request. That is, the NAS 300 writes the write data according to the write request to the stub file 107A. As a result, the stub file 107A in the client file system 316 is replaced with the updated stub file 108A.
  • the NAS 300 returns a write request completion response to the client 201. That is, the NAS 300 returns a write request response to the client 201 before starting the recall process (without acquiring the existing data from the CAS 400). That is, the NAS 300 may return a response to the write request to the client 201 after executing the recall process.
  • the client 201 can receive a response to the write request without waiting for the completion of the recall process. For this reason, it can be expected that the write performance is maintained for the client 201.
  • S104 and S105 are processes executed before the data transfer process (process for transferring data to the CAS 400) in the migration process.
  • the NAS 300 creates the snapshot 111 of the client file system 316.
  • Client access restrictions and CAS access restrictions are associated with the snapshot 111 by the NAS 300.
  • the client access restriction is an access restriction for client access.
  • Client access is at least one of client read and client write as described above.
  • the CAS access restriction is an access restriction for CAS access.
  • the CAS access is at least one of CAS reading, which is to transfer data to the CAS 400, and CAS writing, which is to write data received from the CAS 400.
  • the client RO and the CAS RW are associated with the snapshot 111.
  • “Client RO” means that the client access restriction is “RO” (client readable and client writable (that is, read only)).
  • CAS RW” means that the CAS access restriction is “RW” (CAS reading and CAS writing are possible).
  • the NAS 300 executes a recall process.
  • the recall process is executed for the snapshot 111.
  • the NAS 300 acquires the missing data of the updated stub file 108 in the snapshot 111 from the complete file 110A in the file system 413 of the CAS 400.
  • the complete file 110A is a complete file associated with the update stub file 108A.
  • the NAS 300 combines the acquired missing data with the update stub file 108A in the snapshot 111. Thereby, the complete update file 109A is obtained. Since the CAS access restriction of the snapshot 111 is “CAS RW”, the insufficient data acquired from the CAS 400 can be written in the snapshot 111.
  • the complete update file 109A is an example of transfer data.
  • a complete file may be acquired from the CAS 400.
  • the data acquired from the CAS 400 in the recall process is only missing data (only the missing part of the file). For this reason, the network bandwidth between the NAS 300 and the CAS 400 can be saved in the recall process.
  • the CAS 400 Since the CAS 400 stores data in units of directories and files, it is necessary to create a complete file for the stub file and store it in the CAS 400, and S105 is necessary. Even if the CAS 400 can store an incomplete file, the minimum object size is defined in the CAS 400 and the size of the update stub file (for example, the write data) is less than the minimum object size. Requires acquisition of data from the CAS 400. For this reason, S105 is necessary even in this case. In this case, the above-described partial data (data that is a part of the complete update file and includes the write data and satisfies the size specified by CAS 400) is created using the data acquired from CAS 400. Is an example of transfer data (data transferred to the CAS 400 in the data transfer process).
  • the NAS 300 executes a data transfer process.
  • the data transfer process is also executed for the snapshot 111 as in the recall process.
  • the NAS 300 transfers the complete update file 109A in the snapshot 111 to the CAS 400.
  • the complete update file 109A is stored in the CAS 400.
  • the complete update file 109A may be overwritten on the complete file 110A in the file system 413, or a snapshot (not shown) of the file system 413 may be created, and the complete update file 109A may be stored in the snapshot. .
  • the stub file 107A which is an example of a file before update
  • the update stub file 108A which is an example of a file after update
  • a file corresponding to one of the stub file 107A and the updated stub file 108A is referred to as a “target file”.
  • client access is not substantially restricted for the target file in the client file system 316.
  • the client access restriction of the target file is “RW” (client readable and client writable) regardless of whether the target file is being recalled or data transferred.
  • RW client readable and client writable
  • both the recall process and the data transfer process are executed for the snapshot 111 of “client RO”. For this reason, the target file in the snapshot 111 is not updated by client writing. Therefore, the target file is not updated during the recall process or the data transfer process, and as a result, the consistency of the target file is ensured.
  • the creation of the snapshot 111 of “client RO” and “CAS RW” and the execution of both the recall process and the data transfer process on the snapshot 111 are the first of the target files being recalled.
  • This is a process included in the collateral process that ensures at least the second consistency among the consistency and the second consistency of the target file during the data transfer process.
  • the collateral process illustrated in FIG. 1 is a collateral process according to collateral method 3 among collateral methods 1 to 5 described later.
  • FIG. 2 shows a schematic configuration of the entire system according to this embodiment.
  • the base 200 and the data center 204 are connected via a WAN (Wide Area Network) 203.
  • the bases 200 are the base 200X and the base 200Y, but the number of bases may be any number.
  • the base 200X includes a client 201X, a NAS 300X, and a LAN (Local Area Network) 202X
  • the base 200Y includes a client 201Y, a NAS 300Y, and a LAN 202Y.
  • the client 201 is a computer used by a user (end user) (not shown) in order to use the file sharing service provided by the NAS 300.
  • a client program that communicates with the NAS 300 operates. Based on the user's operation, the client 201 issues a request for creating, deleting, moving, renaming, reading, writing, and the like to the NAS 300.
  • the LAN 202 is an example of a communication network that connects the client 201 and the NAS 300 to each other.
  • the communication network in the base 200 is not limited to a LAN, and other types of communication networks can be employed.
  • NAS 300 is a computer that provides a file sharing service to users. The configuration of the NAS 300 will be described later.
  • the WAN 203 is a communication network that connects the LAN 202 and the data center 204.
  • the NAS 300 and CAS 400 communicate via the WAN 203.
  • a communication protocol such as HTTP (Hypertext Transfer Protocol) or HTTPS (Hypertext Transfer Protocol Secure) can be used.
  • HTTP Hypertext Transfer Protocol
  • HTTPS Hypertext Transfer Protocol Secure
  • the communication network in the base 200 and the communication network between the NAS 300 and the CAS 400 are not limited to the WAN, and other types of communication networks can be adopted.
  • the data center 204 has a CAS 400.
  • the configuration of the CAS 400 will be described later.
  • the CAS 400 may be a node having a cluster configuration including a plurality of computers.
  • FIG. 3 shows the configuration of the NAS 300.
  • the base including the NAS 300 in FIG. 3 is referred to as “own base”, and the base not including the NAS 300 in FIG. 3 is referred to as “other base”.
  • one of the bases 200X and 200Y is “own base” and the other is “other base”.
  • the NAS 300 includes a storage device 318 and a NAS controller 301 connected to the storage device 318.
  • the NAS controller 301 includes an I / F (Interface) 302, a CPU 303, a network I / F 304, and a memory 305. Each unit of the NAS controller 301 is connected to each other by an internal communication path (for example, a bus).
  • an internal communication path for example, a bus
  • the I / F 302 is connected to the storage device 318.
  • the NAS controller 301 reads / writes data from / to the storage device 318 via the I / F 302.
  • the network I / F 304 is an example of an interface unit. Connected to client 201 and CAS 400. The NAS controller 301 communicates with the client 201 and the CAS 400 via the network I / F 304.
  • CPU 303 is an example of a processor unit.
  • the CPU 303 executes data read / write processing on the storage device 318 according to the program and data in the memory 305.
  • the memory 305 is an example of a storage unit.
  • the memory 305 stores a program and data for controlling the NAS 300.
  • the memory 305 stores an update list program 306, a migration program 307, a file sharing program 308, a file system program 309, a NAS object table 500, and CAS information 311.
  • the update list program 306 acquires the update list transmitted from the NAS 300 at another base from the CAS 400.
  • the update list program 306 displays a flag (not shown) indicating that the object (file or directory) whose path (object path) is described in the acquired update list has been updated at another base, the NAS object table 500. If there is no object at your site, create a dummy file (an example of a stub file) with no contents.
  • the update list program 306 acquires the data of the file specified by the read request from the CAS 400.
  • the migration program 307 executes migration processing (recall processing and data transfer processing). Specifically, for example, the migration program 307 saves the object updated in the client file system 316 and the update list describing the path name of the object in the CAS 400 by calling the object saving process. Note that the migration program 307 deletes an object corresponding to the object deleted on the client file system 316 (an object having the same object ID as the deleted object) from the CAS 400. Details of the object saving process will be described later.
  • the file sharing program 308 provides a file sharing service to the end user by disclosing a part or all of the client file system 316 as “shared” to the client 201.
  • a protocol such as CIFS (Common Internet File System) or NFS (Network File System) is used.
  • the file system program 309 is a program for managing the client file system 316 stored in the PDEV 315 in the storage device 318.
  • the file system program 309 operates objects in the client file system 316, for example, the root directory 600A, the file 317, and the directory 600B.
  • Each of the programs 306 to 308 can call the file system program 309 and operate the root directory 600A, the file 317, and the directory 600B created in the client file system 316.
  • the “root directory” is a name of the highest directory in the hierarchical directory structure.
  • the NAS object table 500 is a table for managing objects (files and directories) stored in the client file system 316. Details of the configuration example of the NAS object table 500 will be described later. Note that the NAS object table 500 may be stored in the PDEV 315.
  • CAS information 311 is information used for the NAS 300 to communicate with the CAS 400.
  • the CAS information 311 includes, for example, information indicating a URL (Uniform Resource Locator) of the CAS 400, a protocol used for communication with the CAS 400, and the like.
  • the CAS information 311 may be information on a plurality of CAS 400.
  • the CAS information 311 may be stored in the PDEV 317.
  • the storage device 318 includes an I / F 312, a memory 313, a CPU 314, and a PDEV 315. Each unit of the storage device 318 is connected to each other by an internal communication path (for example, a bus).
  • the storage device 318 may exist outside the NAS 300 (that is, it may be an external storage device of the NAS 300).
  • the I / F 312 is connected to the NAS controller 301 and communicates with the NAS controller 301.
  • the memory 313 stores a program and data for controlling the storage device 318.
  • the CPU 314 performs processing such as reading and writing on the PDEV 315 according to the program and data in the memory 313.
  • the PDEV 315 is a non-volatile storage device such as an HDD or an SSD.
  • a client file system 316 is constructed in the PDEV 315 by the file system program 309. As a result, the PDEV 315 stores objects (directories and files).
  • the storage device 318 may include a plurality of PDEVs 315, and the client file system 316 may be constructed in the plurality of PDEVs 315.
  • the client file system 316 is managed by the file system program 309, and stores files 317 and directories 600B created or updated by the end user via the client 201.
  • the client file system 316 has a hierarchical structure with the root directory 600A as the highest level. That is, a plurality of directories can be created under the directory. A plurality of client file systems 316 may be constructed.
  • FIG. 4 shows the configuration of the CAS 400.
  • the CAS 400 includes a storage device 402 and a CAS controller 401 connected to the storage device 402.
  • the CAS controller 401 includes a network I / F 403, an I / F (Interface) 404, a CPU 405, and a memory 406. Each part of the CAS controller 401 is connected to each other by an internal communication path (for example, a bus).
  • an internal communication path for example, a bus
  • the network I / F 403 is an example of an interface unit.
  • the network I / F 403 is connected to the NAS 300 via the WAN 203 and is used for communicating with the NAS 300.
  • the I / F 404 is connected to the storage device 402.
  • the CAS controller 401 reads / writes data from / to the storage device 402 via the I / F 404.
  • the CPU 405 is an example of a processor unit.
  • the CPU 405 executes processing of the object operation program 407 and the file system program 408 according to the program and data in the memory.
  • the memory 406 is an example of a storage unit.
  • the memory 406 stores programs and data for controlling the CAS 400.
  • the memory 406 includes an object operation program 407, a file system program 408, and a CAS object table 700.
  • the object operation program 407 executes processing such as reading and writing of files and directories stored in the file system 413 and acquisition of a version list in accordance with a request from the NAS 300, and returns the result to the NAS 300.
  • the object operation program 407 executes object storage processing. Details of the object storage process will be described later.
  • the file system program 408 is a program for managing the file system 413.
  • the file system program 408 reads and writes the objects stored in the file system 413 based on the request from the object operation program 407.
  • the CAS object table 700 is a table for managing objects (files and directories) saved in the file system 413 in response to a request from the NAS 300. Details of a configuration example of the CAS object table 700 will be described later. Note that the CAS object table 700 may be stored in the PDEV 412.
  • the storage device 402 includes an I / F 409, a memory 410, a CPU 411, and a PDEV 412. Each unit of the storage device 402 is connected to each other by an internal communication path (for example, a bus).
  • an internal communication path for example, a bus
  • the I / F 409 is connected to the CAS controller 401 and communicates with the CAS controller 401.
  • the memory 410 stores a program and data for controlling the storage device 402.
  • the CPU 411 performs processing such as writing to and reading from the PDEV 412 according to the program and data in the memory 406.
  • the PDEV 412 is a non-volatile storage device such as an HDD or an SSD.
  • a file system 413 managed by the file system program 408 is constructed in the PDEV 412. Thereby, the PDEV 412 stores directories and files.
  • the storage device 402 includes a plurality of PDEVs 412, and a file system 413 may be constructed in the plurality of PDEVs 412.
  • the file system 413 is managed by the file system program 408.
  • the file system 413 stores files and directories in response to requests from the NAS 300. Note that the file system 413 may be constructed.
  • FIG. 5 shows a configuration example of the NAS object table 500.
  • a base including the NAS 300 having the NAS object table 500 of FIG. 5 is referred to as “own base”, and a base not including the NAS 300 is referred to as “other base”.
  • other base a base not including the NAS 300
  • FIGS. 5 to 8 it is assumed that there is only the directory “Share” as a child object of the root directory, and that files “File1”, “File2”, and “File3” exist as child objects of the directory “Share”. To do.
  • the NAS object table 500 includes an entry for each object in the client file system 316. Each entry holds a path name 501, a type 502, an object ID 503, a MIG flag 504, and a stub flag 505.
  • the path name 501 is the path name of the object in the client file system 316.
  • Type 502 indicates the type of object (eg, file, directory).
  • the object ID 503 is an object ID (an identifier of the object on the CAS 400).
  • the object ID 503 is set when the migration program 307 newly stores an object in the CAS 400. Even when the path name is the same, when a file is deleted and a new file is created, another object ID is set.
  • the path name 501 and the object ID 503 may be the same.
  • the NAS object table 500 may not have the object ID 503.
  • the conversion processing processing for converting the path name 501 to the object ID 503 in the following description can be omitted based on the NAS object table 500.
  • the MIG flag 504 indicates whether migration processing from the NAS 300 to the CAS 400 is necessary. If the MIG flag 504 is “ON”, migration processing is required. If the MIG flag is “OFF”, the migration process is unnecessary.
  • the migration program 307 executes migration processing for the object corresponding to the MIG flag 504 “ON”. When an object for which migration processing has been performed is updated again, the MIG flag 504 is set to “ON” again for that object. Further, when a new object is created at the local site, the MIG flag 504 is set to “ON” for the object.
  • the directory data described later has information corresponding to the object ID of the object existing in the own directory. For this reason, when a new file or directory is created and the object ID 503 is set, it is necessary to update the information of the parent directory. Therefore, the parent directory is also subject to migration processing. That is, the MIG flag 504 of the parent directory is set to “ON”. For example, in FIG. 14, when the file 109B is a new file, the parent directory “Share” also needs to be migrated, and the MIG flag 504 is set to “ON” as in the entry 506.
  • the stub flag 505 indicates whether or not the file (object) is a stub file. If the stub flag 505 is “ON”, the file is a stub file. If the stub flag 505 is “OFF”, the file is not a stub file. In other words, even if it is a stub file (even if it is a file corresponding to stub flag 505 “ON”), all data blocks constituting the file (for example, content) exist in the client file system 316 (that is, , There is no lack of data). In the present embodiment, for example, a stub file exists in at least one of the following (J1) and (J2).
  • At least one of the programs 306 to 309 refers to the NAS object table 500 and converts the path name of the object into an object ID. Further, the migration program 307 refers to or updates the MIG flag 504 and the stub flag 505.
  • the client file system 316 may have an update list describing information related to objects to be migrated to the CAS 400, and the entry 509 in the NAS object table 500 may hold information related to the update list.
  • An entry indicating an update list may be added each time an operation is performed on an object in the client file system 316 (a format in which one or more update lists exist), and a plurality of update information may be added to one entry. (Form with one update list).
  • FIG. 6 shows the directory data of the root directory.
  • FIG. 7 shows the directory data of the directory “Share”.
  • the directory data 600 holds information on child objects of its own directory (directory corresponding to the data 600).
  • the directory data 600 has an entry for each child object. Each entry holds an object name 601, a type 602, an i-node number 603, and an object ID 604.
  • the object name 601 indicates the name of a child object (file or directory).
  • the type 602 indicates the type of child object (for example, file, directory).
  • the i-node number 603 indicates the number of an i-node that has a one-to-one correspondence with a file and stores file metadata (update time, etc.).
  • An object ID 604 indicates an object ID.
  • FIG. 8 shows the structure of the CAS object table 700.
  • the CAS object table 700 includes an entry for each object version pair in the file system 413.
  • An “object version pair” is a set of an object and its version. Each entry holds an object ID 701, a version 702, a creation time 703, and a path name 704.
  • the object ID 701 indicates an object ID that the CAS 400 provides to the NAS 300.
  • Version 702 indicates an identifier of the version of the object.
  • One or more versions 702 exist for one object ID 701.
  • the creation time 703 indicates the time when an object is created in the file system 413 in accordance with the request from the NAS 300.
  • a path name 704 is a path name of an object in the file system 413.
  • the object operation program 407 can recognize the latest version of the object specified from the NAS 300 based on the CAS object table 700 and add an entry to the CAS object table 700 in the object saving process.
  • FIG. 9 is a flowchart of the migration process.
  • the migration program 307 executes loop A (the processing of S802 and S803) for each of the objects with the MIG flag 504 “ON”.
  • loop A the processing of S802 and S803
  • the file is referred to as a “target file” in S802 and S803.
  • the migration program 307 determines whether or not the stub flag 505 is “ON” and the data is insufficient for the target file (S802).
  • the migration program 307 executes a recall process for the target file (S803).
  • the target file is an update stub file
  • the migration program 307 acquires the missing data (data block) of the target file from the file system 413 of the CAS 400.
  • the migration program 307 creates a complete update file, which is an example of transfer data, by combining the acquired insufficient data with the write data in the update stub file.
  • the process for creating transfer data is a process included in the recall process.
  • each of the files with the MIG flag 504 “ON” is a complete update file.
  • loop B (S805) is executed for each of the files with the MIG flag 504 “ON”.
  • one file is taken as an example.
  • the file is referred to as a “target file” in S805.
  • the migration program 307 executes data transfer processing for the target file (S805).
  • the target file (completely updated file) is transferred from the NAS 300 to the file system 413 of the CAS 400.
  • FIG. 10 is a table showing an outline of collateral methods 1 to 5.
  • the “collateralization method” is a collateral processing method that guarantees at least the second consistency among the first consistency of the target file during the recall process and the second consistency of the target file during the data transfer process.
  • the types of collateral methods are classified from the following viewpoints (K1) to (K3).
  • K1 Whether or not client access restriction is executed and whether or not backup is acquired. Specifically, the following (k11) and (k12).
  • K11 Whether to perform client access restriction on a file in the client file system that is at least one of a file being recalled and a file being data transferred.
  • K12 Whether to obtain a backup of at least a part of the local namespace.
  • K2 Recall destination That is, the place where the update stub file and the missing data acquired by the recall process are combined (in other words, the place where the complete update file exists).
  • K3 Data transfer source. That is, the place where the transfer data exists.
  • Execution of client access restriction is to disable at least one of client reading and client writing.
  • (k11) can be subdivided as follows. (A) Whether the file being recalled can be written to the client or not, and can the client be read or not. (B) Whether a file can be written to by a client and whether a client can be read from a file that is being transferred.
  • (k12) can be subdivided as follows.
  • At least one of CAS writing and CAS reading is CAS access as described above.
  • the execution of CAS access restriction is to disable at least one of CAS writing and CAS reading.
  • “Special directory” is a directory that is acquired in the client file system 316 and cannot be referred to by the client.
  • the special directory is a copy of at least one of the one or more files in the client file system 316 and includes a copy of the incomplete file.
  • the special directory may or may not contain a copy of the complete file, which is a file with no data shortage.
  • the executed collateral method among the plurality of types of collateral methods 1 to 5 may follow at least one of the following (a) to (c).
  • the NAS 300 (for example, the program 308 or 309) may measure the client access frequency for each predetermined range (for example, for each file or each directory).
  • the collateral methods 1 to 5 will be described with reference to FIGS. 11 to 15, respectively.
  • the client access restriction may be performed in units of files in the client file system 316 or may be performed in units of directories.
  • the CAS access restriction may be performed on a snapshot basis.
  • the type of collateral method employed may be common to all files or may be determined for each file.
  • Fig. 11 shows an overview of collateral method 1. The following is an overview of collateral method 1.
  • the migration program 307 performs a recall process (S2101) for the updated stub file 108A in the client file system 316. Further, the migration program 307 executes a recall process (S2101) and a data transfer process (S2102) for the update stub file 108A and the complete update file 109B in the client file system 316. That is, both the recall destination and the data transfer source are the client file system 316.
  • the client access restriction for the update stub file 108A is not readable to the client and not writable by the client. That is, during the recall process of the update stub file 108A, the NAS 300 (for example, the program 308 or 309) prohibits client reading and client writing for the update stub file 108A.
  • the client access restriction for the file in the data transfer process is RO, that is, the client cannot write and the client can read.
  • the NAS 300 can perform client reading for the target update stub file 108A or the complete update file 109B (for example, the update stub file 109B).
  • client access is restricted for the update stub file 108A during the recall process and the data transfer process.
  • client access is restricted for the update stub file 108A and the complete update file 109B during the data transfer process. This prevents the update stub file 108A from being updated during the recall process and the data transfer process. Further, it is possible to prevent the complete update file 109B from being updated during the data transfer process. As a result, the consistency between the update stub file 108A and the complete update file 109B is ensured.
  • the collateral method 1 can be employed, for example, in at least one of the following (1-1) and (1-2).
  • (1-1) When the allowable storage capacity is less than a predetermined threshold (for example, when the number of PDEVs of the NAS 300 and the PDEV capacity are small). This is because a snapshot of the client file system 316 is not created.
  • (11-2) When the target file has not been updated for a certain period of time after being updated. This is because it is not necessary to create a snapshot.
  • Fig. 12 shows the outline of collateral method 2. The following is an overview of collateral method 2.
  • the migration program 307 executes a recall process for the updated stub file 108A in the client file system 316 (S2201).
  • the migration program 307 creates the snapshot 111 of the client file system 316 after the recall process (S2201) (S2202).
  • the migration program 307 associates the client RO with the CAS RO for the snapshot 111.
  • “CAS RO” is not writable by CAS and can be read by CAS. Since it is the snapshot 111 after the recall process (S2201) is performed, all the update files are complete update files. Therefore, since it is not necessary to acquire the missing data from the CAS 400 and combine it with the updated stub file 108A, the CAS RO may be associated with the snapshot.
  • the migration program 307 executes data transfer processing for the update stub file 108A and the complete update file 109B in the snapshot 111 (S2203).
  • the client access restriction for the update stub file 108A is not readable to the client and not writable by the client.
  • the NAS 300 (for example, the program 308 or 309) responds to both the read request and the write request specifying the update stub file 108A and the complete update file 109B. .
  • client access is restricted for the updated stub file 108A during the recall process. For this reason, the consistency of the update stub file 108A during the recall process is ensured.
  • client access is not restricted for the update stub file 108A and complete update file 109B during the data transfer process, but since the data transfer source is the snapshot 111, the update stub file 108A in the client file system 316 or the like during the data transfer process Even if the complete update file 109B is updated, the consistency of the update stub file 108A and the complete update file 109B is ensured.
  • the collateral method 2 can be employed, for example, in at least one of the following (2-1) to (2-4).
  • (2-1) The storage capacity allowed for the client file system 316 is greater than or equal to the threshold value. This is because the client file system 316 is a recall destination.
  • (2-2) The client access frequency of the update stub file 108A is equal to or greater than a threshold value. This is because client access is not restricted during the data transfer process.
  • (2-3) The storage capacity allowed for the snapshot 111 is less than the threshold value. This is because the snapshot 111 is not a recall destination.
  • Fig. 13 shows an overview of collateral method 3. The following is an overview of collateral method 3.
  • the migration program 307 creates a snapshot 111 of the client file system 316 before the recall process (S2302) (S2301).
  • the migration program 307 associates the client RO with the CAS RW for the snapshot 111.
  • “CAS RW” allows CAS writing and CAS reading. Since CAS writing is possible, the recall destination can be the snapshot 111.
  • the migration program 307 executes a recall process for the updated stub file 108A in the client file system 316 (S2302).
  • the migration program 307 executes data transfer processing for the update stub file 108A and the complete update file 109B in the snapshot 111 (S2303).
  • the client access to the update stub file 108A is not restricted. Further, even if the complete update file 109B in the client file system 316 is undergoing data transfer processing, client access is not restricted for the complete update file 109B.
  • client access is not restricted for the updated stub file 108A during the recall process and the data transfer process. Further, during the data transfer process, client access is not restricted for the complete update file 109B.
  • both the recall destination and the data transfer source are snapshots 111 of the client RO. For this reason, even if the update stub file 108A in the client file system 316 is updated during the recall process or the data transfer process, the consistency of the update stub file 108A is ensured. Even if the complete update file 109B in the client file system 316 is updated during the data transfer process, the consistency of the complete update file 109B is ensured.
  • the collateral method 3 can be employed, for example, in at least one of the following (3-1) to (3-3).
  • (3-1) The storage capacity allowed for the client file system 316 is less than the threshold value. This is because the client file system 316 is not a recall destination.
  • (3-2) The storage capacity allowed for the snapshot 111 is greater than or equal to the threshold value. This is because the snapshot 111 is a recall destination.
  • (3-3) The client access frequency of the update stub file 108A is equal to or greater than a threshold value. This is because client access is not restricted during the recall process or the data transfer process.
  • FIG. 14 shows an outline of collateral method 4. The following is an overview of collateral method 4.
  • the migration program 307 creates the snapshot 111 of the client file system 316 before the recall process (S2402) (S2401).
  • the migration program 307 associates the client RO with the CAS RO for the snapshot 111.
  • the migration program 307 executes a recall process for the updated stub file 108A in the client file system 316 (S2402).
  • the migration program 307 executes data transfer processing for the update stub file 108A in the client file system 316 (S2403). That is, for the update stub file 108A, the data transfer source is the client file system 316.
  • the migration program 307 executes data transfer processing for the complete update file 109B in the snapshot 111 (S2403 ′). That is, for the complete update file 109B, the data transfer source is the snapshot 111.
  • the client access restriction for the update stub file 108A is not readable to the client and not writable by the client.
  • the client access restriction for the update stub file 108A is client readable and client writable. is there.
  • the client access is not restricted even if the complete update file 109B is in the process of data transfer.
  • client access is restricted for the updated stub file 108A during both the recall process and the data transfer process. Therefore, the consistency of the updated stub file 108A is ensured both during the recall process and the data transfer process.
  • the recall process is not performed for the complete update file 109B.
  • the client access is not restricted, but the data transfer source is the snapshot 111 of the client RO. Therefore, the consistency of the complete update file 109B is ensured both during the recall process and the data transfer process.
  • the collateral method 4 can be employed, for example, in at least one of the following (4-1) to (4-5).
  • (4-1) The storage capacity allowed for the client file system 316 is greater than or equal to the threshold value. This is because the client file system 316 is a recall destination.
  • (4-2) The storage capacity allowed for the snapshot 111 is less than the threshold. This is because the snapshot 111 is not a recall destination.
  • (4-3) For the updated stub file 108A, the client access frequency is less than the threshold. This is because client access is restricted during the recall process and the data transfer process.
  • the collateral method 4 may be adopted for the update stub file 108A, and another type of collateral method may be adopted for the complete update file 109B.
  • the collateral method 4 may be adopted for the client file system 316 including the update stub file 108A and the complete update file 109B. (4-4) For the complete update file 109B, the client access frequency is greater than or equal to the threshold value. This is because client access is not restricted during the data transfer process. In this case, the collateral method 4 may be adopted for the complete update file 109B, and another type of collateral method may be adopted for the updated stub file 108A.
  • the collateral method 4 may be adopted for the client file system 316 including the update stub file 108A and the complete update file 109B.
  • a predetermined type of application program updates a stub file (incomplete file).
  • the “predetermined type application program” is a type of application program that writes data to the entire file.
  • the stub file is a complete file. For this reason, recall processing is unnecessary, and it is useful to use a snapshot as a data transfer source for a complete file.
  • collateral method 3 and collateral method 4 may be dynamically switched. For example, while the collateral method 3 is adopted, the consumption capacity increases because data is written to the snapshot 111. However, when the consumption capacity exceeds a predetermined value, the migration program 307 selects the collateral method to be adopted. You may switch from 3 to collateral method 4. As a result, an increase in the consumption capacity of the snapshot 111 can be suppressed.
  • Fig. 15 shows an overview of collateral method 5 (with snapshot). The following is an overview of collateral method 5 (with snapshot).
  • the migration program 307 creates the snapshot 111 (client RO and CAS RO) of the client file system 316 (S2501) before the recall process (S2503), and the special directory 1500 (see FIG. 15) that is not referenced by the client 201.
  • a directory “.recall”) is created (S2502).
  • the special directory 1500 may be created as a directory at a predetermined position in the client file system 316, for example, a child directory of the root directory. Further, only the incomplete files among the files in the client file system 316 are copied to the special directory 1500 by the migration program 307 (S2502).
  • the migration program 307 executes a recall process for the updated stub file 108A in the client file system 316 (S2503).
  • the migration program 307 executes data transfer processing for the update stub file 108A in the special directory 1500 (S2504). That is, for the updated stub file 108A, the data transfer source is the special directory 1500.
  • the migration program 307 executes data transfer processing for the complete update file 109B in the snapshot 111 (S2504 '). That is, for the complete update file 109B, the data transfer source is the snapshot 111.
  • the client access to the update stub file 108A is not restricted.
  • client access is not restricted for the complete update file 109B.
  • client access is not restricted for any file, regardless of which file is being recalled or transferred.
  • the recall destination and the data transfer source for the update stub file 108A are both the special directory 1500
  • the data transfer source for the complete update file 109B is the snapshot 111.
  • the special directory 1500 is not referred to by the client 201
  • the snapshot 111 is the client RO. Therefore, regardless of whether the update stub file 108A or the complete update file 109B in the client file system 316 is updated during the recall process or the data transfer process, the consistency of either the update stub file 108A or the complete file 19B Is also secured.
  • the collateral method 5 can be employed, for example, in at least one of the following (5-1) to (5-4).
  • (5-1) The storage capacity allowed for the client file system 316 is greater than or equal to the threshold value. This is because a special directory 1500 serving as a copy destination of an incomplete file is created in the client file system 316, and the special directory 1500 is a recall destination.
  • (5-2) The storage capacity allowed for the snapshot 111 is less than the threshold value. This is because the snapshot 111 is not a recall destination.
  • the client access frequency is equal to or higher than a threshold value. This is because client access is not restricted during the recall process and the data transfer process.
  • (5-4) A predetermined type of application program updates a stub file (incomplete file). The reason is the same as (4-5).
  • FIG. 16 shows an outline of collateral method 5 (snapshot not used). The following is an overview of collateral method 5 (snapshot not used). Hereinafter, differences from the collateral method 5 (combined with snapshot) in FIG. 15 will be mainly described.
  • the migration program 307 creates a special directory 1500 before the recall process (S2602), and copies all the update files in the client file system 316 to the special directory (S2601). The migration program 307 does not create a snapshot of the client file system 316.
  • the migration program 307 executes a recall process (S2602) for the special directory 1500 for the updated stub file 108A.
  • the data transfer process (S2603) is executed for the special directory 1500. That is, both the recall destination and the data transfer source are the special directory 1500.
  • the collateral method 5 may be adopted.
  • FIG. 17 is a flowchart of data transfer processing.
  • the migration program 307 determines whether or not the transfer data is a new file.
  • the “new file” is typically a file newly written as write data (S1301).
  • the migration program 307 adds an entry corresponding to the new file to the NAS object table 500, and sets the object ID 503 in the entry (S1302). For example, in FIG. 5, if the file with the path name 501 “/ Share / File2” is a new file, there is no value as the object ID 503, and the object ID 503 “jkl” is set in S1302.
  • the migration program 307 sets the object ID set in S1302 to the object ID in the entry in the directory data 5600 of the parent directory of the file for which the object ID is set in S1302 (S1303).
  • the parent object of the file “File2” is the directory “Share”. Therefore, the migration program 307 sets the object ID 604 in the entry 605 of the directory data 5600B of the directory “Share” as S1302. Set the object ID “jkl” set in.
  • S1302 and S1303 are pre-processing for assigning an object ID to an object that has never been transferred to CAS. Since the directory data 600 holds information on objects stored in its own directory (a directory corresponding to the data 600), the i-node number 603 and the object ID 604 of the parent object of the new object are also stored. Registration process is required. The registration process is also performed in S1303.
  • the migration program 307 displays transfer data and attached information of the transfer data (for example, object ID 503 corresponding to the transfer data, update list, etc.) in CAS400. And the CAS 400 is requested to execute the object storage process (S1304). Details of the object storage process (S1305) will be described later.
  • the data transfer source is as shown in FIG.
  • FIG. 18 is a flowchart of the object storage process (S1305 in FIG. 17).
  • the object operation program 407 stores the transfer data received from the NAS 300 in the file system 413 (S1401).
  • the object operation program 407 searches the CAS object table 700 for an object ID that matches the object ID received from the NAS 300 (S1402).
  • the object operation program 407 sets the version of the transfer data from the NAS 300 to the next version of the latest version of the found object ID (S1404).
  • the “latest version” becomes one older version
  • the “next version” becomes the latest version. For example, consider a situation where there is an entry 705 but no entry 706 in FIG. In this case, since “1” is registered in the version 702 whose object ID 701 is “ghi”, the object operation program 407 adopts “2” which is the next version of the version “1”.
  • the object operation program 407 determines “1” as the version 702 registered in the entry corresponding to the transfer data (S1405).
  • the value determined as the version 702 at this time may be any value as long as it can be identified as the first version. For example, in FIG. 7, when there is no entry including the object ID 701 “mno”, the object operation program 407 sets “1” as the value of the version 702 registered in the entry 707 including the object ID 701 “mno”. To decide.
  • the object operation program 407 adds an entry to the CAS object table 700 (S1406). Specifically, for example, the following processing is performed. That is, the object operation program 407 registers the object ID received from the NAS 300 in the object ID 701 of the entry. The object operation program 407 registers the version value determined in S1404 or S1405 as the version 702 of the entry. The object operation program 407 registers the current time as the creation time 703 of the entry. The object operation program 407 registers the path name of the data stored in the file system 413 in S1401 as the path name 704 of the entry. The object operation program 407 returns the processing result to the NAS 300 that is the request source.
  • FIG. 19 is a flowchart of post-processing (S806 in FIG. 9).
  • the migration program 307 executes a loop C (S1502 to S1506) for each object in the client file system 316 and the MIG flag 504 “ON”.
  • a loop C S1502 to S1506
  • target file S1502 to S1506.
  • the migration program 307 determines whether or not the stub flag 505 corresponding to the target file is “ON” (S1502). If the determination result in S1502 is true (S1502: Yes), the migration program 307 determines whether the target file is a complete file (S1503). As described above, the “complete file” is a file with no data shortage, for example, a complete update file. If the determination result in S1503 is true (S1503: Yes), the migration program 307 changes the stub flag 505 corresponding to the target file to “OFF”.
  • S1504 is skipped. This is because the target file remains an incomplete file even after the data transfer process is completed, and the target file needs to be handled as a stub file continuously.
  • the collateral method adopted is any of collateral methods 1, 2, and 4
  • the recall destination is the client file system 316 (except for the special directory), so the target file is a complete file Therefore, the determination result in S1503 is true.
  • the collateral method employed is the collateral method 3 or 5
  • the recall destination is the snapshot 111 or a special directory, so the target file remains an incomplete file. Therefore, the determination result in S1503 is false. Become.
  • S1505 and S1506 are processes for changing the MIG flag 504 of the target file for which the data transfer process has ended to “OFF”. If the MIG flag 504 is set to “OFF” even though the target file during the data transfer process is updated in the client file system 316, the target file is not subjected to the migration process next time. In order to prevent this, the determination in S1505 is necessary.
  • the migration program 307 determines whether or not there is an update from the client 201 to the target file in the client file system 316 after creating a temporary area such as a snapshot or a special directory. For example, the migration program 307 determines whether any of the following (Condition 1) and (Condition 2) is satisfied.
  • (Condition 1) There is a change in the i-node number 603 corresponding to the target file in the client file system 316 before and after creating the temporary area.
  • (Condition 2) (the creation time of the target file in the temporary area) ⁇ (1 second) ⁇ (the last status change time of the target file in the client file system 316)
  • the reason for subtracting “1 second” in (Condition 2) is that “the creation time of the target file in the temporary area” and “the last state change time of the target file in the client file system 316” are simultaneously displayed in seconds. This is because the target file is the next migration target. Note that “the creation time of the target file in the temporary area” and “the last status change time of the target file in the client file system 316” can be specified from the metadata of the target file.
  • the value to be subtracted is not limited to “1 second” as long as the value is greater than 0.
  • the migration program 307 changes the MIG flag 504 corresponding to the target file to “OFF” and the corresponding entry in the update list 507 (corresponding to the target file). Entry) is deleted (S1506).
  • the migration program 307 deletes the temporary area (S1507). Note that S1507 is not necessary in the collateral method 1 in which the temporary area is not used.
  • a file being processed for data transfer is not writable, but if there is a client write during the data transfer process, it is retransmitted. As long as some data can be transferred, client writing may be permitted.
  • the file path of the client file system 316 is deleted and the name space does not match during the data transfer process after the temporary area such as the snapshot is created
  • an object becomes a different object by creating a file with the same name space after deleting the file but having the same name, or by renaming. Whether or not they are the same object can be determined by comparing the i-node numbers.
  • the following process may be executed before the data transfer process.
  • the migration program 307 does not perform the data transfer process when the path of the data transfer process target file does not match the “path in the temporary area” and the “path in the client file system 316”. Make the file the target of the next migration process.
  • Step B The migration program 307 matches the data transfer process target file path between the “path in the temporary area” and the “path in the client file system 316”. If there is a change in the i-node number in the client file system before the transfer process, the data transfer process is executed for the object in the temporary area using the object ID 503 of the client file system 316, and the file is transferred to the next time.
  • the target of migration That is, the object of CAS 400 temporarily becomes file data having a different latest version.
  • the recall process may be performed on a part of the missing data.
  • the migration program 307 executes the combination of the write data (data block) in the client file system 316 and the data block acquired from the CAS 400 (recall processing) to satisfy the object size defined by the CAS 400. It's okay.
  • flag types and flag change timings are examples, and other types of flags or change timings may be employed.
  • the stub flag may not be “OFF” at that timing, but the stub flag may be “OFF” after the data transfer process. .
  • the stub flag may be set to “OFF”.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

エッジノードは、リコール処理とデータ転送処理とのうちの少なくともデータ転送処理を実行する。リコール処理は、不完全ファイルについて実行される処理であって、既存データをセンタ名前空間から取得する処理である。データ転送処理は、既存データとライトデータとを用いて作成された転送データをセンタノードに転送する処理である。不完全ファイルは、データ不足のある旧ファイル又は更新ファイルである。旧ファイルは、更新される前のファイルである。更新ファイルは、旧ファイルがライトデータを用いて更新された後のファイルである。既存データは、旧ファイル(又は、不足データの少なくとも一部)である。不足データは、旧ファイルのうちのライトデータとの差分である。エッジノードは、リコール処理中のファイルの第1整合性とデータ転送処理中のファイルの第2整合性とのうちの少なくとも第2整合性を担保する担保処理を実行する。

Description

センタノードからエッジノードにデータを転送する計算機システム
 本発明は、概して、ファイル管理に関し、例えば、ファイルバックアップ又はファイル共有に関する。
 一般に、バックアップ又はファイル共有等を実現する計算機システムにおいて、1以上のエッジノードの各々が、ファイルをセンタノードに格納する。エッジノードは、フロントエンド側(クライアント側)のノードであり、センタノードは、バックエンド側のノードである。ノードは、計算機であり、例えば、ファイルサーバのようなストレージサーバでよい。
 特許文献1によれば、各プライマリファイルサーバが、RWスナップショットの名前空間をクライアントに提供し、セカンダリファイルサーバが、ROスナップショットの名前空間を提供する。RWスナップショットの名前空間は、ROスナップショットの名前空間に対応している。「RW」及び「RO」は、それぞれ、アクセス制限の一例である。「RW」は、リード/ライト可能を意味する。「RO」は、リードオンリー(書込み及び読出しのうち読出しのみ可能)を意味する。RWスナップショットの名前空間では、各ファイルは、セカンダリファイルサーバのファイルを指すスタブファイルである。プライマリファイルサーバは、クライアントからライト要求を受信した場合、ライト先スタブファイルに対応したファイルをセカンダリファイルサーバから取得してRWスナップショットに書き込み、且つ、ライト要求に従うライトデータが上書きされたファイルをセカンダリファイルサーバへ転送する。
US7,546,431
 特許文献1によれば、クライアントに提供される名前空間は、RWスナップショットの名前空間であるため、セカンダリファイルサーバからファイル取得中のスタブファイルや、セカンダリファイルサーバへファイル転送中のスタブファイルが、クライアントからのライト要求に従い更新されることがあり得る。
 この種の課題は、クライアントに提供される名前空間が、RWスナップショットの名前空間の場合に限られず、他種の名前空間の場合にもあり得る。なお、プライマリファイルサーバは、エッジノードの一例であり、セカンダリファイルサーバは、センタノードの一例である。
 エッジノードは、ローカル名前空間にライトデータを書込むライト要求をクライアントから受信した場合、リコール処理とデータ転送処理とのうちの少なくともデータ転送処理を実行する。リコール処理は、1以上の不完全ファイルの各々について実行される処理であって、既存データをセンタ名前空間から取得する処理である。データ転送処理は、既存データとライトデータとを用いて作成された転送データをセンタノードに転送する処理である。1以上の不完全ファイルの各々は、データ不足のある旧ファイルとデータ不足のある更新ファイルとのうちのいずれか一方である。旧ファイルは、更新される前のファイルである。更新ファイルは、旧ファイルがライトデータを用いて更新された後のファイルである。既存データは、旧ファイルと、不足データの少なくとも一部とのうちのいずれか一方である。不足データは、旧ファイルのうちのライトデータとの差分である。転送データは、データ不足の無い更新ファイルである完全更新ファイルと、完全更新ファイルの一部でありライトデータを含みセンタノードの規定するサイズを満たすデータである部分データとのうちのいずれか一方である。エッジノードは、リコール処理中のファイルの第1整合性とデータ転送処理中のファイルの第2整合性とのうちの少なくとも第2整合性を担保する担保処理を実行する。
 ファイルがデータ転送処理中に更新されてしまうことを防ぐことができる。また、リコール処理が実行される場合、ファイルがリコール処理中に更新されてしまうことも防ぐことができる。
実施形態に係る計算機システムの概要の一例を示す。 実施形態に係るシステム全体の概略構成を示す。 NAS(Network Attached Storage)の構成を示す。 CAS(Content Addressed Storage)の構成を示す。 NASオブジェクトテーブルの構成例を示す。 ルートディレクトリのディレクトリデータを示す。 ディレクトリ「Share」のディレクトリデータを示す。 CASオブジェクトテーブルの構成を示す。 マイグレーション処理のフローチャートである。 担保方式1~5の概要を示すテーブルである。 担保方式1の概要を示す。 担保方式2の概要を示す。 担保方式3の概要を示す。 担保方式4の概要を示す。 担保方式5(スナップショット併用)の概要を示す。 担保方式5(スナップショット不使用)の概要を示す。 データ転送処理のフローチャートである。 オブジェクト保存処理(図17のS1305)のフローチャートである。 後処理(図9のS806)のフローチャートである。
 以下、図面を参照して、本発明の一実施形態を説明する。但し、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
 以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
 また、以下の説明では、「記憶部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、1以上のメモリに加えて、1以上のPDEVを含んでもよい。「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。
 また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及びインターフェース部のうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ部(或いは、プロセッサ部を有する計算機又は計算機システム)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
 また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号(又は参照符号における共通部分)を使用し、同種の要素を区別して説明する場合は、要素のID(又は要素の参照符号)を使用することがある。
 また、以下の説明では、エッジノード及びセンタノードの各々は、計算機である。「計算機」は、典型的にはファイルサーバのようなサーバである。エッジノード及びセンタノードの各々が提供する名前空間に格納されたファイルのデータは、1以上のPDEVに格納されるが、その1以上のPDEVは、計算機の中にあっても外にあってもよい。
 また、以下の説明では、「オブジェクト」は、ファイル又はディレクトリである。但し、通念上、ファイルサーバプログラム又はファイル共有プロトコルのように、「ファイル」と呼ばれても、ファイルだけでなくディレクトリを意味することもある。つまり、「オブジェクト」を、「ファイル」と呼び、「ファイル」が、ファイルとディレクトリの両方を意味してもよい。
 また、以下の説明では、「オブジェクト」は、コンテンツ(オブジェクト本体)とメタデータとで構成される。オブジェクトのメタデータに、オブジェクトのコンテンツが関連付けられている。オブジェクトにおけるコンテンツは、クライアントにより作成されたデータそれ自体、例えば、ファイルに書き込まれたデータであってもよいし、ディレクトリ配下に作成されたオブジェクトの名前(一般に言う「ディレクトリエントリ」)であってもよい。オブジェクトにおけるメタデータは、タイムスタンプ(オブジェクトの作成時刻、オブジェクトの最終更新時刻など)や、アクセス制御情報(例えば、オブジェクトの所有者、所有グループ、Windows OSにおけるACL(Access Control List))等を含んでよい(Windowsは登録商標)。クライアントが、例えばUNIXクライアントの場合、アクセス制御情報中のACLに代えて、パーミッションが採用されてよい(UNIXは登録商標)。
 また、以下の説明では、「オブジェクトパス」は、オブジェクトへのパスであり、具体的には、オブジェクトの所在を示すID(文字列)である。オブジェクトパスは、例えば、「dir/fileA」のようなスラッシュ区切りの文字列である(この例は、ディレクトリ「dir」の下の「fileA」というファイルを示す)。
 また、以下の説明では、オブジェクト間の関係を意味するために、「親オブジェクト」、「上位オブジェクト」、「子オブジェクト」及び「下位オブジェクト」のうちの少なくとも1つの用語を使用することがある。「親オブジェクト」とは、オブジェクトの1つ上位のオブジェクトを意味する。「上位オブジェクト」とは、オブジェクトより上位のオブジェクトを意味する。従って、親オブジェクトは、上位オブジェクトのうちの1つである。「子オブジェクト」とは、オブジェクトの1つ下位のオブジェクトを意味する。「下位オブジェクト」とは、オブジェクトより下位のオブジェクトを意味する。従って、子オブジェクトは、下位オブジェクトのうちの1つである。オブジェクトパス「dirA/dirB/fileC」を例に取る。ファイル「fileC」にとって、親オブジェクトは、ディレクトリ「dirB」であり、上位オブジェクトは、ディレクトリ「dirA」及びディレクトリ「dirB」である。ディレクトリ「dirA」にとって、子オブジェクトは、ディレクトリ「dirB」であり、下位オブジェクトは、ディレクトリ「dirB」及びファイル「fileC」である。オブジェクト間の関係は、相対的なものであるため、各オブジェクトが、「親オブジェクト」、「上位オブジェクト」、「子オブジェクト」及び「下位オブジェクト」のいずれになるかは、当然に、着目されるオブジェクトによって変わる。
 図1は、本発明の一実施形態に係る計算機システムの概要の一例を示す。
 計算機システムは、例えば分散ファイルシステムである。計算機システムは、エッジノードの一例であるNAS(Network Attached Storage)300と、センタノードの一例であるCAS(Content Addressed Storage)400とを有する。NAS300は、クライアントファイルシステム(ローカル名前空間の一例)316をクライアント201に提供する。CAS400は、クライアントファイルシステム316に対応したファイルシステム(センタ名前空間の一例)413をNAS300に提供する。CAS400では、オブジェクトIDとオブジェクト(ファイルやディレクトリ)が紐付いている。
 NAS300にクライアント201が接続されている。クライアント201は、本実施形態では、NAS300と通信可能な計算機、具体的には、例えば、据置型又はモバイル型のパーソナルコンピュータ、又は、スマートデバイス(例えば、タブレット型のコンピュータ、スマートフォン))である。しかし、クライアント201は、そのような計算機に代えて、NAS300のユーザ(具体的には、例えば、NAS300の入出力デバイス(図示せず)を操作するユーザ)であってもよい。クライアント201は、NAS300のクライアントファイルシステム316に対してクライアントアクセスを実行する。クライアントアクセスは、オブジェクトについてのアクセスであり、オブジェクトの読出しであるクライアント読出しと、オブジェクトの少なくとも一部(ライトデータ)の書込みであるクライアント書込みとのうちの少なくとも1つである。
 NAS300は、クライアント書込みがあった場合(ライトデータを書込むライト要求をクライアント201から受信した場合)、リコール処理とデータ転送処理とのうちの少なくともデータ転送処理を実行する。「リコール処理」は、1以上の不完全ファイルの各々について実行される処理であって、既存データをファイルシステム413から取得する処理である。「データ転送処理」は、既存データとライトデータとを用いて作成された転送データをCAS400に転送する処理である。「不完全ファイル」は、データ不足のある旧ファイルとデータ不足のある更新ファイルとのうちのいずれか一方である。具体的には、例えば、不完全ファイルは、メタデータのみを有するファイル、又は、メタデータとコンテンツの一部のみを保持しているファイルである。「旧ファイル」は、更新される前のファイルである。「更新ファイル」は、旧ファイルがライトデータ(ライト要求に付随するライト対象のデータ)を用いて更新された後のファイルである。「既存データ」は、旧ファイルと、不足データの少なくとも一部とのうちのいずれか一方である。「不足データ」は、旧ファイルのうちのライトデータとの差分である。「転送データ」は、完全更新ファイルと部分データとのうちのいずれか一方である。「完全更新ファイル」は、データ不足の無い更新ファイルである。「部分データ」は、完全更新ファイルの一部であり、ライトデータを含み、CAS400の規定するサイズを満たすデータである。
 本実施形態では、複数のNAS300が存在するが、NAS300は1つでもよい。また、CAS400は1つであるが、複数のCAS400が存在してもよい。計算機システムでは、例えば、下記の(P)及び(Q)のうちの少なくとも1つが行われる。
(P)NAS300が、ファイルの少なくとも一部としてのデータをCAS400のファイルシステム413にバックアップする。
(Q)CAS400のファイルシステム413が複数のNAS300に提供される。言い換えれば、複数のNAS300に、CAS400のファイルシステム413内のファイルが共有される。
 クライアントファイルシステム316内のファイルとCAS400内のファイルが対応していることを示すため、図1では、CAS400内のデータ構造も木構造で記載しているが、実際は、CAS400内のデータ構造は、必ずしも木構造にはなっていないでよい。
 また、本実施形態では、「スタブファイル」は、後述のスタブフラグが「ON」のファイルを意味する。このため、「スタブファイル」は、典型的には、不完全ファイルの一例であるが、完全更新ファイルがスタブファイルであり得る。具体的には、スタブフラグが「ON」の完全更新ファイルは、本実施形態では、スタブファイルである。また、以下の説明では、スタブファイル且つ更新ファイルであるファイルを、「更新スタブファイル」と言う。
 図1を用いて、クライアント201のライト要求に従い更新されたファイルがNAS300からCAS400へ反映されるまでの処理の概要の一例を説明する。なお、本実施形態では、更新ファイルのNAS300からCAS400への反映をマイグレーションと呼称する。具体的には、本実施形態では、「マイグレーション処理」は、少なくともデータ転送処理を含む。リコール処理が行われる場合、マイグレーション処理は、データ転送処理の他にリコール処理を含む。また、本実施形態では、クライアントファイルシステム316に、スタブファイル107が格納されており、ファイルシステム413に、スタブファイル107に関連付けられた完全ファイル110が格納されている。「完全ファイル」は、データ不足の無いファイルである。なお、マイグレーション処理はいずれのタイミングで開始してもよい。
 S101で、NAS300が、クライアント201から、クライアントファイルシステム316内のスタブファイル107Aを指定したライト要求を受信する。
 S102で、NAS300が、そのライト要求に従い、スタブファイル107Aを更新スタブファイル108Aに変更する。すなわち、NAS300が、ライト要求に従うライトデータをスタブファイル107Aに書き込む。結果として、クライアントファイルシステム316におけるスタブファイル107Aが、更新スタブファイル108Aに置き換わる。
 S103で、NAS300が、ライト要求の完了応答を、クライアント201へ返す。すなわち、NAS300は、リコール処理の開始前に(既存データをCAS400から取得すること無しに)、クライアント201にライト要求の応答を返す。すなわち、NAS300は、リコール処理を実行してからライト要求の応答をクライアント201に返してもよいが、本実施形態によれば、NAS300のクライアントファイルシステム316でファイルのうちの一部のみ(一部のデータブロックのみ)を保持可能であるため、リコール処理の完了を待つこと無しに、クライアント201はライト要求の応答を受信できる。このため、クライアント201に対しライト性能を維持することが期待できる。
 以下、S104及びS105が、マイグレーション処理において、データ転送処理(CAS400へデータを転送する処理)の前に実行される処理である。
 S104で、NAS300は、クライアントファイルシステム316のスナップショット111を作成する。スナップショット111には、NAS300により、クライアントアクセス制限と、CASアクセス制限が関連付けられる。クライアントアクセス制限は、クライアントアクセスのアクセス制限である。クライアントアクセスは、上述したように、クライアント読出しとクライアント書込みのうちの少なくとも1つである。CASアクセス制限は、CASアクセスのアクセス制限である。CASアクセスは、CAS400へデータを転送することであるCAS読出しと、CAS400から受信したデータを書き込むことであるCAS書込みとのうちの少なくとも1つである。S104では、スナップショット111に、クライアントROとCAS RWとが関連付けられる。「クライアントRO」は、クライアントアクセス制限が「RO」(クライアント読出し可且つクライアント書込み不可(つまりリードオンリー))であることを意味する。「CAS RW」は、CASアクセス制限が「RW」(CAS読出し可且つCAS書込み可)であることを意味する。
 S105で、NAS300は、リコール処理を実行する。リコール処理は、スナップショット111について実行される。具体的には、NAS300は、スナップショット111内の更新スタブファイル108の不足データを、CAS400のファイルシステム413における完全ファイル110Aから取得する。完全ファイル110Aは、更新スタブファイル108Aに関連付いている完全ファイルである。NAS300は、取得された不足データを、スナップショット111内の更新スタブファイル108Aに結合する。これにより、完全更新ファイル109Aが得られる。スナップショット111のCASアクセス制限は「CAS RW」のため、スナップショット111に、CAS400から取得された不足データを書き込むことができる。完全更新ファイル109Aが、転送データの一例である。リコール処理では、完全ファイルがCAS400から取得されてもよいが、本実施形態では、リコール処理において、CAS400から取得されるデータは、不足データのみ(ファイルの不足部分のみ)である。このため、リコール処理において、NAS300とCAS400間のネットワーク帯域を節約することができる。
 CAS400は、ディレクトリやファイルのオブジェクト単位でデータを格納するため、スタブファイルに対しては、完全なファイルを作成してからCAS400へ格納する必要があり、S105が必要となる。また、CAS400が、不完全ファイルを格納できるようになっていたとしても、最小オブジェクトサイズがCAS400に規定されており且つ更新スタブファイル(例えばそのうちのライトデータ)のサイズが最小オブジェクトサイズに満たない場合は、CAS400からのデータの取得が必要である。このため、この場合でも、S105は必要となる。なお、この場合、CAS400から取得されたデータを用いて上述の部分データ(完全更新ファイルの一部であり、ライトデータを含み、CAS400の規定するサイズを満たすデータ)が作成されるが、部分データは、転送データ(データ転送処理においてCAS400へ転送されるデータ)の一例である。
 S106で、NAS300は、データ転送処理を実行する。データ転送処理も、リコール処理と同様、スナップショット111について実行される。具体的には、NAS300は、スナップショット111内の完全更新ファイル109AをCAS400へ転送する。完全更新ファイル109Aが、CAS400に格納される。完全更新ファイル109Aは、ファイルシステム413における完全ファイル110Aに上書きされてもよいし、ファイルシステム413のスナップショット(図示せず)が作成され、そのスナップショットに完全更新ファイル109Aが格納されてもよい。
 更新前のファイルの一例であるスタブファイル107Aと、更新後のファイルの一例である更新スタブファイル108Aは、同一のオブジェクトIDが関連付けられているファイルである。図1の説明において、スタブファイル107Aと更新スタブファイル108Aとのうちのいずれかに該当するファイルを「対象ファイル」と言う。図1を参照して説明した一連の流れにおいて、クライアントファイルシステム316内の対象ファイルについて、クライアントアクセスは実質的に制限されない。具体的には、対象ファイルのクライアントアクセス制限は、対象ファイルがリコール処理中であってもデータ転送処理中であっても「RW」(クライアント読出し可且つクライアント書込み可)である。しかし、リコール処理もデータ転送処理も、「クライアントRO」のスナップショット111について実行される。このため、スナップショット111内の対象ファイルも、クライアント書込みにより更新されるということはない。故に、対象ファイルがリコール処理中とデータ転送処理中のいずれにおいても更新されることはなく、結果として、対象ファイルの整合性が担保される。
 なお、図1では、「クライアントRO」且つ「CAS RW」のスナップショット111の作成と、リコール処理とデータ転送処理のいずれもスナップショット111について実行することが、リコール処理中の対象ファイルの第1整合性とデータ転送処理中の対象ファイルの第2整合性とのうちの少なくとも第2整合性を担保する担保処理に含まれる処理である。そして、図1に例示の担保処理は、後述する担保方式1~5のうちの担保方式3に従う担保処理である。
 以下、本実施形態を詳細に説明する。
 図2は、本実施形態に係るシステム全体の概略構成を示す。
 少なくとも1つの拠点200と、1つのデータセンタ204とがある。拠点200とデータセンタ204の間はWAN(Wide Area Network)203を介して接続されている。図2では、拠点200は、拠点200Xと拠点200Yであるが、拠点数はいくつであってもよい。拠点200Xは、クライアント201X、NAS300X及びLAN(Local Area Network)202Xを含み、拠点200Yは、クライアント201Y、NAS300Y及びLAN202Yを含む。
 クライアント201は、NAS300が提供するファイル共有サービスを利用するために、図示しないユーザ(エンドユーザ)が使用する計算機である。クライアント201上では、NAS300と通信するクライアントプログラムなどが動作する。ユーザの操作に基づき、クライアント201は、NAS300に対し、ファイルやディレクトリの作成、削除、移動、リネーム、リード及びライト等の要求を発行する。
 LAN202は、クライアント201とNAS300とを相互に接続する通信ネットワークの一例である。拠点200内の通信ネットワークはLANに限定されず、他種の通信ネットワークを採用することも可能である。
 NAS300は、ユーザに対してファイル共有サービスを提供する計算機である。NAS300の構成は後述する。
 WAN203は、LAN202とデータセンタ204とを接続する通信ネットワークである。NAS300とCAS400は、WAN203を介し通信する。この通信には、例えば、HTTP(Hypertext Transfer Protocol)、HTTPS(Hypertext Transfer Protocol Secure)等の通信プロトコルを用いることができる。拠点200内の通信ネットワーク、NAS300とCAS400間の通信ネットワークはWANに限定されず、他種の通信ネットワークを採用することも可能である。
 データセンタ204は、CAS400を有する。CAS400の構成は後述する。なお、CAS400は、複数の計算機からなるクラスタ構成を取ったノードであってもよい。
 図3は、NAS300の構成を示す。なお、図3の説明において、図3のNAS300を含んだ拠点を「自拠点」と言い、図3のNAS300を含まない拠点を「他拠点」と言う。図2の例によれば、拠点200X及び200Yの一方が「自拠点」であり他方が「他拠点」である。
 NAS300は、記憶装置318と、記憶装置318に接続されたNASコントローラ301とを含む。
 NASコントローラ301は、I/F(Interface)302と、CPU303と、ネットワークI/F304と、メモリ305とを含む。NASコントローラ301の各部は、内部的な通信路(例えば、バス)によって互いに接続されている。
 I/F302は、記憶装置318に接続される。NASコントローラ301は、I/F302を介して、記憶装置318に対してデータを読み書きする。
 ネットワークI/F304は、インターフェース部の一例である。クライアント201及びCAS400に接続される。NASコントローラ301は、ネットワークI/F304を介して、クライアント201やCAS400と通信する。
 CPU303は、プロセッサ部の一例である。CPU303は、メモリ305内のプログラム及びデータに従って、記憶装置318に対するデータの読み書き処理を実行する。
 メモリ305は、記憶部の一例である。メモリ305は、NAS300の制御のためのプログラム及びデータを格納する。メモリ305は、更新リストプログラム306と、マイグレーションプログラム307と、ファイル共有プログラム308と、ファイルシステムプログラム309と、NASオブジェクトテーブル500と、CAS情報311とを格納する。
 更新リストプログラム306は、他拠点のNAS300から送信された更新リストをCAS400から取得する。更新リストプログラム306は、取得した更新リストにパス(オブジェクトパス)が記載されたオブジェクト(ファイルやディレクトリ)に対し、他拠点で更新があったことを示すフラグ(図示せず)をNASオブジェクトテーブル500に設定したり、自拠点にオブジェクトが存在しない場合、中身のないダミーファイル(スタブファイルの一例)を作成したりする。NAS300が、上記フラグを設定したファイルやダミーファイルのリード要求をクライアント201から受信した場合、更新リストプログラム306は、CAS400から、リード要求で指定されたファイルのデータを取得する。
 マイグレーションプログラム307は、マイグレーション処理(リコール処理及びデータ転送処理)を実行する。具体的には、例えば、マイグレーションプログラム307は、クライアントファイルシステム316において更新されたオブジェクトと、そのオブジェクトのパス名を記載した更新リストとを、オブジェクト保存処理を呼び出すことによりCAS400に保存する。なお、マイグレーションプログラム307は、クライアントファイルシステム316上で削除されたオブジェクトに対応するオブジェクト(削除されたオブジェクトのオブジェクトIDと同じオブジェクトIDのオブジェクト)を、CAS400から削除する。なお、オブジェクト保存処理の詳細は後述する。
 ファイル共有プログラム308は、クライアントファイルシステム316の一部または全部を「共有」として、クライアント201に対して公開することで、エンドユーザにファイル共有サービスを提供する。ファイル共有サービスには、例えば、CIFS(Common Internet File System)やNFS(Network File System)等のプロトコルが用いられる。
 ファイルシステムプログラム309は、記憶装置318内のPDEV315に格納されたクライアントファイルシステム316を管理するプログラムである。ファイルシステムプログラム309は、クライアントファイルシステム316内のオブジェクト、例えば、ルートディレクトリ600A、ファイル317及びディレクトリ600Bを操作する。プログラム306~308の各々は、ファイルシステムプログラム309を呼び出し、クライアントファイルシステム316に作成されたルートディレクトリ600A、ファイル317及びディレクトリ600Bを操作することができる。なお、「ルートディレクトリ」とは、階層化されたディレクトリ構造の最上位のディレクトリの呼称である。
 NASオブジェクトテーブル500は、クライアントファイルシステム316に格納されたオブジェクト(ファイルやディレクトリ)を管理するためのテーブルである。NASオブジェクトテーブル500の構成例の詳細は、後述する。なお、NASオブジェクトテーブル500は、PDEV315に格納されていてもよい。
 CAS情報311は、NAS300がCAS400と通信するために使用される情報である。CAS情報311は、例えば、CAS400のURL(Uniform Resource Locator)や、CAS400との通信に用いるプロトコル等を示す情報を含む。CAS情報311は、複数のCAS400の情報であってもよい。また、CAS情報311は、PDEV317に格納されていてもよい。
 記憶装置318は、I/F312と、メモリ313と、CPU314と、PDEV315とを含む。記憶装置318の各部は、内部的な通信路(例えば、バス)によって互いに接続されている。記憶装置318は、NAS300の外に存在してもよい(つまり、NAS300の外部記憶装置であってもよい)。
 I/F312は、NASコントローラ301に接続され、NASコントローラ301と通信する。
 メモリ313は、記憶装置318の制御のためのプログラム及びデータを格納する。
 CPU314は、メモリ313内のプログラム及びデータに従って、PDEV315に対する読み書き等の処理を行う。
 PDEV315は、HDDやSSDのような不揮発記憶デバイスである。PDEV315には、ファイルシステムプログラム309によりクライアントファイルシステム316が構築される。これにより、PDEV315は、オブジェクト(ディレクトリやファイル)を格納する。記憶装置318は、複数のPDEV315を有し、複数のPDEV315に、クライアントファイルシステム316が構築されてもよい。
 クライアントファイルシステム316は、ファイルシステムプログラム309により管理され、クライアント201を介してエンドユーザが作成又は更新したファイル317やディレクトリ600Bが格納される。クライアントファイルシステム316は、ルートディレクトリ600Aを最上位とした階層構造を持つ。すなわち、ディレクトリの下には、さらに複数のディレクトリを作成することができる。なお、複数のクライアントファイルシステム316が構築されてもよい。
 図4は、CAS400の構成を示す。
 CAS400は、記憶装置402と、記憶装置402に接続されたCASコントローラ401とを含む。
 CASコントローラ401は、ネットワークI/F403と、I/F(Interface)404と、CPU405と、メモリ406とを含む。CASコントローラ401の各部は、内部的な通信路(例えば、バス)によって互いに接続されている。
 ネットワークI/F403は、インターフェース部の一例である。ネットワークI/F403は、WAN203を介して、NAS300に接続され、NAS300と通信するために使用される。
 I/F404は、記憶装置402に接続される。CASコントローラ401は、I/F404を介して、記憶装置402に対してデータを読み書きする。
 CPU405は、プロセッサ部の一例である。CPU405は、メモリ内のプログラム及びデータに従って、オブジェクト操作プログラム407とファイルシステムプログラム408の処理を実行する。
 メモリ406は、記憶部の一例である。メモリ406は、CAS400の制御のためのプログラム及びデータを格納する。メモリ406は、オブジェクト操作プログラム407と、ファイルシステムプログラム408と、CASオブジェクトテーブル700とを含む。
 オブジェクト操作プログラム407は、NAS300からの要求に従い、ファイルシステム413に格納されたファイルやディレクトリの読み書き、バージョン一覧取得等の処理を実行すると共に、その結果をNAS300に返却する。オブジェクト操作プログラム407は、オブジェクト保存処理を実行する。オブジェクト保存処理の詳細は、後述する。
 ファイルシステムプログラム408は、ファイルシステム413を管理するプログラムである。ファイルシステムプログラム408は、オブジェクト操作プログラム407の要求に基づき、ファイルシステム413に格納されたオブジェクトを読み書きする。
 CASオブジェクトテーブル700は、NAS300からの要求でファイルシステム413に保存したオブジェクト(ファイルやディレクトリ)を管理するためのテーブルである。CASオブジェクトテーブル700の構成例の詳細は、後述する。なお、CASオブジェクトテーブル700は、PDEV412に格納されていてもよい。
 記憶装置402は、I/F409と、メモリ410と、CPU411と、PDEV412とを含む。記憶装置402の各部は、内部的な通信路(例えば、バス)によって互いに接続されている。
 I/F409は、CASコントローラ401に接続され、CASコントローラ401と通信する。
 メモリ410は、記憶装置402の制御のためのプログラム及びデータを格納する。
 CPU411は、メモリ406内のプログラム及びデータに従って、PDEV412に対する書込みや読出し等の処理を行う。
 PDEV412は、HDDやSSDのような不揮発記憶デバイスである。PDEV412には、ファイルシステムプログラム408により管理されるファイルシステム413が構築される。これにより、PDEV412は、ディレクトリ及びファイルを格納する。記憶装置402は、複数のPDEV412を有し、複数のPDEV412に、ファイルシステム413が構築されてもよい。
 ファイルシステム413は、ファイルシステムプログラム408により管理される。ファイルシステム413には、NAS300からの要求で、ファイルやディレクトリが格納される。なお、なお、ファイルシステム413が構築されてもよい。
 図5は、NASオブジェクトテーブル500の構成例を示す。なお、図5の説明において、図5のNASオブジェクトテーブル500を有するNAS300を含んだ拠点を「自拠点」と言い、そのNAS300を含まない拠点を「他拠点」と言う。また、図5~図8の例では、ルートディレクトリの子オブジェクトとして、ディレクトリ「Share」のみがあり、ディレクトリ「Share」の子オブジェクトとして、ファイル「File1」「File2」及び「File3」が存在すると仮定する。
 NASオブジェクトテーブル500は、クライアントファイルシステム316におけるオブジェクト毎のエントリを含む。各エントリは、パス名501と、タイプ502と、オブジェクトID503と、MIGフラグ504と、スタブフラグ505とを保持する。
 パス名501は、クライアントファイルシステム316でのオブジェクトのパス名である。
 タイプ502は、オブジェクトのタイプ(例えば、ファイル、ディレクトリ)を示す。
 オブジェクトID503は、オブジェクトのID(オブジェクトのCAS400上での識別子)である。NAS300は、CAS400上のオブジェクトを操作するとき、そのオブジェクトのオブジェクトIDを指定することができる。例えば、オブジェクトID503は、マイグレーションプログラム307が新規にオブジェクトをCAS400に格納する時に、設定される。同じパス名であっても、ファイルを削除して新しいファイルを作成した時には、別のオブジェクトIDが設定される。なお、パス名501とオブジェクトID503は、同一でもよい。パス名501とオブジェクトID503が同一である場合、NASオブジェクトテーブル500は、オブジェクトID503を持たない構成であってもよい。また、パス名501とオブジェクトID503が同一の文字列である構成の場合、以降の説明における変換処理(パス名501をオブジェクトID503に変換する処理)をNASオブジェクトテーブル500に基づき省略できる。
 MIGフラグ504は、NAS300からCAS400へのマイグレーション処理が必要であるか否かを示す。MIGフラグ504が「ON」であれば、マイグレーション処理が必要である。MIGフラグが「OFF」であれば、マイグレーション処理が不要である。マイグレーションプログラム307は、MIGフラグ504「ON」に対応したオブジェクトについてマイグレーション処理を実行する。マイグレーション処理がなされたオブジェクトが再度更新された場合、そのオブジェクトについて、MIGフラグ504が再度「ON」とされる。また、自拠点で新規にオブジェクトが作成された場合、そのオブジェクトについて、MIGフラグ504が「ON」とされる。
 なお、後述のディレクトリデータが、自ディレクトリに存在するオブジェクトのオブジェクトIDに対応した情報を持つ。このため、ファイルやディレクトリを新規に作成してオブジェクトID503が設定された場合、その親ディレクトリの情報も更新する必要があり、故に、親ディレクトリもマイグレーション処理の対象となる。即ち、親ディレクトリのMIGフラグ504が「ON」とされる。例えば、図14において、ファイル109Bが新規ファイルの場合、その親ディレクトリ「Share」もマイグレーション処理が必要であり、エントリ506のように、MIGフラグ504が「ON」となる。
 スタブフラグ505は、ファイル(オブジェクト)がスタブファイルであるか否かを示す。スタブフラグ505が「ON」であれば、ファイルはスタブファイルである。スタブフラグ505が「OFF」であれば、ファイルはスタブファイルではない。言い換えれば、スタブファイルであっても(スタブフラグ505「ON」に対応したファイルであっても)、ファイル(例えばコンテンツ)を構成する全てのデータブロックがクライアントファイルシステム316に存在している(つまり、データ不足が無い)こともある。なお、本実施形態では、例えば、下記の(J1)及び(J2)のうちの少なくとも1つの場合、スタブファイルが存在する。
(J1)他拠点で作成されたファイルX(CAS400内のファイルX)を自拠点に反映させる際、自拠点のクライアント201からのデータ参照があるまでは、自拠点において、自拠点のNAS300により、ファイルXはスタブファイルとされる。また、ファイルXのデータ参照の際、ファイルXにおける必要なデータブロックのみ(ファイルXのうちのデータ参照対象のみ)がCAS400から取得される。
(J2)自拠点のNAS300が、長期間クライアントアクセスがされないファイルYを特定した場合、そのNAS300は、そのファイルYをスタブファイルに変更する。
 NAS300において、プログラム306~309のうちの少なくとも1つは、NASオブジェクトテーブル500を参照し、オブジェクトのパス名をオブジェクトIDに変換する。また、マイグレーションプログラム307は、MIGフラグ504とスタブフラグ505を参照又は更新する。
 また、クライアントファイルシステム316は、CAS400へマイグレーション処理するべきオブジェクトに関する情報を記載した更新リストを持ち、NASオブジェクトテーブル500内のエントリ509が、更新リストに関する情報を保持してよい。更新リストを示すエントリは、クライアントファイルシステム316におけるオブジェクトに対する操作の都度に追加されてもよいし(更新リストが1つ以上存在する形式)、1つのエントリに複数の更新情報を追記してもよい(更新リストが1つ存在する形式)。
 図6は、ルートディレクトリのディレクトリデータを示す。図7は、ディレクトリ「Share」のディレクトリデータを示す。
 ディレクトリデータ600は、自ディレクトリ(そのデータ600に対応したディレクトリ)の子オブジェクトの情報を保持する。ディレクトリデータ600は、子オブジェクト毎にエントリを有する。各エントリが、オブジェクト名601と、タイプ602と、iノード番号603と、オブジェクトID604とを保持する。
 オブジェクト名601は、子オブジェクト(ファイルやディレクトリ)の名前を示す。タイプ602は、子オブジェクトのタイプ(例えば、ファイル、ディレクトリ)を示す。iノード番号603は、ファイルと1対1に対応している、ファイルのメタデータ(更新時刻等)を格納しているiノードの番号を示す。オブジェクトID604は、オブジェクトのIDを示す。
 図8は、CASオブジェクトテーブル700の構成を示す。
 CASオブジェクトテーブル700は、ファイルシステム413におけるオブジェクトバージョンペア毎のエントリを含む。「オブジェクトバージョンペア」とは、オブジェクトとそのバージョンとの組である。各エントリは、オブジェクトID701と、バージョン702と、作成時刻703と、パス名704とを保持する。
 オブジェクトID701は、CAS400がNAS300に提供するオブジェクトIDを示す。バージョン702は、オブジェクトのバージョンの識別子を示す。1つのオブジェクトID701に対して、1以上のバージョン702が存在する。
 作成時刻703は、NAS300の要求に従いファイルシステム413にオブジェクトが作成された時刻を示す。パス名704は、ファイルシステム413でのオブジェクトのパス名である。
 オブジェクト操作プログラム407は、オブジェクト保存処理において、CASオブジェクトテーブル700を基に、NAS300から指定されたオブジェクトの最新バージョンを認識するとともに、CASオブジェクトテーブル700へエントリを追加することができる。
 図9は、マイグレーション処理のフローチャートである。
 マイグレーションプログラム307は、MIGフラグ504「ON」のオブジェクトの各々について、ループA(S802及びS803の処理)を実行する。以下、1つのファイルを例に取る。そのファイルを、S802及びS803において、「対象ファイル」と言う。
 マイグレーションプログラム307は、対象ファイルについて、スタブフラグ505が「ON」且つデータ不足であるか否かを判断する(S802)。
 S802の判断結果が真の場合(S802:Yes)、マイグレーションプログラム307は、対象ファイルについてリコール処理を実行する(S803)。ここでは、対象ファイルが更新スタブファイルであるので、マイグレーションプログラム307は、対象ファイルの不足データ(データブロック)をCAS400のファイルシステム413から取得する。マイグレーションプログラム307は、更新スタブファイル中のライトデータに、取得された不足データを結合することで、転送データの一例である完全更新ファイルを作成する。転送データを作成する処理は、本実施形態では、リコール処理に含まれる処理である。
 ループAが終了した場合、MIGフラグ504「ON」のファイルの各々が、完全更新ファイルとなっている。その後、MIGフラグ504「ON」のファイルの各々について、ループB(S805)が実行される。以下、1つのファイルを例に取る。そのファイルを、S805において、「対象ファイル」と言う。
 マイグレーションプログラム307は、対象ファイルについてデータ転送処理を実行する(S805)。データ転送処理では、対象ファイル(完全更新ファイル)が、NAS300からCAS400のファイルシステム413に転送される。
 ループBが終了した場合、MIGフラグ504「ON」のオブジェクトの各々についてCAS400へのデータ転送が終わった状態である。その後、マイグレーションプログラム307は、後処理を実行する(S806)。
 図10は、担保方式1~5の概要を示すテーブルである。
 「担保方式」とは、リコール処理中の対象ファイルの第1整合性とデータ転送処理中の対象ファイルの第2整合性とのうちの少なくとも第2整合性を担保する担保処理の方式である。このテーブルによれば、本実施形態では、5種類の担保方式1~5が存在する。担保方式の種類は、下記の観点(K1)~(K3)で分類される。
(K1)クライアントアクセス制限の実行の有無とバックアップ取得の有無。具体的には、下記(k11)及び(k12)。
(k11)リコール処理中のファイルとデータ転送処理中のファイルとのうちの少なくとも1つでありクライアントファイルシステム内のファイルについて、クライアントアクセス制限を実行するか否か。
(k12)ローカル名前空間の少なくとも一部のバックアップを取得するか否か。
(K2)リコール先。すなわち、更新スタブファイルとリコール処理により取得された不足データとが結合される場所(言い換えれば、完全更新ファイルが存在する場所)。
(K3)データ転送元。すなわち、転送データが存在する場所。
 クライアントアクセス制限の実行とは、クライアント読出しとクライアント書込みとのうちの少なくとも1つを不可とすることである。
 (k11)は、例えば、下記の細分化ができる。
(A)リコール処理中のファイルについて、クライアント書込みが可か不可か、且つ、クライアント読出しが可か不可か。
(B)データ転送処理中のファイルについて、クライアント書込みが可か不可か、且つ、クライアント読出しが可か不可か。
 (k12)は、例えば、下記の細分化ができる。
(C)クライアントファイルシステム316のスナップショット111の作成を、バックアップの取得として実行するか否か。
(D)スナップショット111について、CAS書込みが可か不可か、且つ、CAS読出しが可か不可か、
(E)特殊ディレクトリの取得を、バックアップの取得として実行するか否か。
 CAS書込み及びCAS読出しのうちの少なくとも1つが、上述したようにCASアクセスである。CASアクセス制限の実行とは、CAS書込み及びCAS読出しのうちの少なくとも1つを不可とすることである。
 「特殊ディレクトリ」は、クライアントファイルシステム316内に取得され、クライアント参照不可のディレクトリである。特殊ディレクトリは、クライアントファイルシステム316内の1以上のファイルのうちの少なくとも1つのファイルのコピーであって、不完全ファイルのコピーを含む。特殊ディレクトリは、データ不足が無いファイルである完全ファイルのコピーを含んでも含まないでもよい。
 複数種類の担保方式1~5のうちの実行される担保方式は、下記の(a)~(c)のうちの少なくとも1つに従ってよい。NAS300(例えばプログラム308又は309)が、クライアントアクセス頻度を、所定の範囲毎(例えば、ファイル毎又はディレクトリ毎)に測定してよい。
(a)クライアントファイルシステム316についての許容される記憶容量、
(b)スナップショット111についての許容される記憶容量、
(c)クライアントファイルシステム316における少なくとも1つのファイルについてのクライアントアクセスの頻度。
 以下、図11~図15を参照して、担保方式1~5をそれぞれ説明する。なお、担保方式1~5のいずれにおいても、リコール処理前にライト応答を返すこと、及び、リコール処理において取得するデータを不足データのみとすることを採用することができる。また、本実施形態において、クライアントアクセス制限は、クライアントファイルシステム316内のファイル単位で行われてもよいし、ディレクトリ単位で行われてもよい。一方、CASアクセス制限は、スナップショット単位で行われてもよい。また、本実施形態において、採用される担保方式の種類は、全てのファイルに共通であってもよいし、ファイル毎に決定されてもよい。
 図11は、担保方式1の概要を示す。下記が担保方式1の概要である。
 マイグレーションプログラム307は、クライアントファイルシステム316内の更新スタブファイル108Aについて、リコール処理(S2101)を実施する。また、マイグレーションプログラム307は、クライアントファイルシステム316内の更新スタブファイル108A及び完全更新ファイル109Bについて、リコール処理(S2101)とデータ転送処理(S2102)とを実行する。つまり、リコール先もデータ転送元もクライアントファイルシステム316である。
 クライアントファイルシステム316内の更新スタブファイル108Aがリコール処理中であれば、更新スタブファイル108Aについてのクライアントアクセス制限は、クライアント読出し不可且つクライアント書込み不可である。すなわち、更新スタブファイル108Aのリコール処理中、NAS300(例えばプログラム308又は309)は、更新スタブファイル108Aについてクライアント読出しもクライアント書込みも禁止する。
 クライアントファイルシステム316内の更新スタブファイル108Aまたは完全更新ファイル109Bがデータ転送処理中であれば、データ転送処理中のファイルについてのクライアントアクセス制限は、RO、すなわち、クライアント書込み不可且つクライアント読出し可である。すなわち、更新スタブファイル108Aまたは完全更新ファイル109Bのデータ転送処理中、NAS300(例えばプログラム308又は309)は、対象の更新スタブファイル108Aまたは完全更新ファイル109Bについてクライアント読出しを実行できるが(例えば、更新スタブファイル108Aを指定したリード要求を受信した場合にそのリード要求を処理するが)、対象の更新スタブファイル108Aまたは完全更新ファイル109Bについてクライアント書込みを禁止する(例えば、更新スタブファイル108Aを指定したライト要求を受信してもそのライト要求を処理しない)。
 担保方式1によれば、リコール処理中とデータ転送処理中に更新スタブファイル108Aについてクライアントアクセスが制限される。また、データ転送処理中に更新スタブファイル108Aと完全更新ファイル109Bについてクライアントアクセスが制限される。このため、リコール処理中とデータ転送処理中に更新スタブファイル108Aが更新されることが防がれる。また、データ転送処理中に完全更新ファイル109Bが更新されることが防がれる。結果として、更新スタブファイル108A及び完全更新ファイル109Bの整合性が担保される。
 担保方式1は、例えば下記の(1-1)及び(1-2)のうちの少なくとも1つの場合に採用することができる。
(1-1)許容される記憶容量が所定の閾値未満の場合(例えば、NAS300のPDEV数やPDEV容量が少ない場合)。クライアントファイルシステム316のスナップショットが作成されないためである。
(1-2)対象ファイルが更新されてから一定時間以上更新が無い場合。スナップショットの作成が不要のためである。
 図12は、担保方式2の概要を示す。下記が担保方式2の概要である。
 マイグレーションプログラム307は、クライアントファイルシステム316内の更新スタブファイル108Aについて、リコール処理を実行する(S2201)。
 マイグレーションプログラム307は、リコール処理(S2201)の後に、クライアントファイルシステム316のスナップショット111を作成する(S2202)。マイグレーションプログラム307は、スナップショット111について、クライアントROとCAS ROとを関連付ける。「CAS RO」は、CAS書込み不可且つCAS読出し可である。リコール処理(S2201)を実施した後のスナップショット111であるため、更新ファイルは、全て完全更新ファイルとなっている。そのため、CAS400から不足データを取得して更新スタブファイル108Aに結合することは不要であるため、スナップショットには、CAS ROを関連付ければよい。
 マイグレーションプログラム307は、スナップショット111内の更新スタブファイル108A及び完全更新ファイル109Bについてデータ転送処理を実行する(S2203)。
 クライアントファイルシステム316内の更新スタブファイル108Aがリコール処理中であれば、更新スタブファイル108Aについてのクライアントアクセス制限は、クライアント読出し不可且つクライアント書込み不可である。
 クライアントファイルシステム316内の更新スタブファイル108A及び完全更新ファイル109Bがデータ転送処理中であっても、更新スタブファイル108A及び完全更新ファイル109Bについてクライアントアクセスは制限されない。すなわち、更新スタブファイル108A及び完全更新ファイル109Bのデータ転送処理中、NAS300(例えばプログラム308又は309)は、更新スタブファイル108A、完全更新ファイル109Bを指定したリード要求及びライト要求のいずれにも応答する。
 担保方式2によれば、リコール処理中の更新スタブファイル108Aについてクライアントアクセスが制限される。このため、リコール処理中の更新スタブファイル108Aの整合性が担保される。また、データ転送処理中の更新スタブファイル108A及び完全更新ファイル109Bについてクライアントアクセスが制限されないが、データ転送元がスナップショット111のため、データ転送処理中にクライアントファイルシステム316内の更新スタブファイル108Aや完全更新ファイル109Bが更新されても、更新スタブファイル108Aや完全更新ファイル109Bの整合性は担保される。
 担保方式2は、例えば下記の(2-1)~(2-4)のうちの少なくとも1つの場合に採用することができる。
(2-1)クライアントファイルシステム316について許容される記憶容量が閾値以上である。クライアントファイルシステム316がリコール先のためである。
(2-2)更新スタブファイル108Aのクライアントアクセス頻度が閾値以上である。データ転送処理中にはクライアントアクセスが制限されないためである。
(2-3)スナップショット111について許容される記憶容量が閾値未満である。スナップショット111がリコール先ではないためである。
(2-4)少なくとも担保方式5よりも簡易に又は迅速に担保処理を実装したい。少なくとも担保方式5よりも担保処理の実装のための作業負担が低いためである。なお、担保方式5の方が効果としては好ましいと考えられ、故に、担保方式2を先に実装しての運用中に担保方式5がバックグラウンドで実装され、その後に、担保方式2から担保方式5への切り替えが行われてもよい。
 図13は、担保方式3の概要を示す。下記が担保方式3の概要である。
 マイグレーションプログラム307は、リコール処理(S2302)の前に、クライアントファイルシステム316のスナップショット111を作成する(S2301)。マイグレーションプログラム307は、スナップショット111について、クライアントROとCAS RWとを関連付ける。「CAS RW」は、上述したように、CAS書込み可且つCAS読出し可である。CAS書込み可のため、リコール先をスナップショット111にすることができる。
 マイグレーションプログラム307は、クライアントファイルシステム316内の更新スタブファイル108Aについて、リコール処理を実行する(S2302)。
 マイグレーションプログラム307は、スナップショット111内の更新スタブファイル108A及び完全更新ファイル109Bについてデータ転送処理を実行する(S2303)。
 クライアントファイルシステム316内の更新スタブファイル108Aがリコール処理中であってもデータ転送処理中であっても、更新スタブファイル108Aについてクライアントアクセスは制限されない。また、クライアントファイルシステム316内の完全更新ファイル109Bがデータ転送処理中であっても、完全更新ファイル109Bについてクライアントアクセスは制限されない。
 担保方式3によれば、リコール処理中もデータ転送処理中も更新スタブファイル108Aについてクライアントアクセスは制限されない。また、データ転送処理中、完全更新ファイル109Bについてクライアントアクセスは制限されない。しかし、リコール先もデータ転送元もクライアントROのスナップショット111である。このため、リコール処理中及びデータ転送処理中のいずれにおいてクライアントファイルシステム316内の更新スタブファイル108Aが更新されても、更新スタブファイル108Aの整合性は担保される。また、データ転送処理中にクライアントファイルシステム316内の完全更新ファイル109Bが更新されても、完全更新ファイル109Bの整合性は担保される。
 担保方式3は、例えば下記の(3-1)~(3-3)のうちの少なくとも1つの場合に採用することができる。
(3-1)クライアントファイルシステム316について許容される記憶容量が閾値未満である。クライアントファイルシステム316がリコール先ではないためである。
(3-2)スナップショット111について許容される記憶容量が閾値以上である。スナップショット111がリコール先のためである。
(3-3)更新スタブファイル108Aのクライアントアクセス頻度が閾値以上である。リコール処理中にもデータ転送処理中にもクライアントアクセスが制限されないためである。
 図14は、担保方式4の概要を示す。下記が担保方式4の概要である。
 マイグレーションプログラム307は、リコール処理(S2402)の前に、クライアントファイルシステム316のスナップショット111を作成する(S2401)。マイグレーションプログラム307は、スナップショット111について、クライアントROとCAS ROとを関連付ける。
 マイグレーションプログラム307は、クライアントファイルシステム316内の更新スタブファイル108Aについて、リコール処理を実行する(S2402)。
 マイグレーションプログラム307は、ファイルが更新スタブファイル108Aであれば、クライアントファイルシステム316内の更新スタブファイル108Aについてデータ転送処理を実行する(S2403)。つまり、更新スタブファイル108Aについては、データ転送元はクライアントファイルシステム316である。
 一方、マイグレーションプログラム307は、ファイルが完全更新ファイル109Bであれば、スナップショット111内の完全更新ファイル109Bについてデータ転送処理を実行する(S2403´)。つまり、完全更新ファイル109Bについては、データ転送元はスナップショット111である。
 クライアントファイルシステム316内の更新スタブファイル108Aがリコール処理中であれば、更新スタブファイル108Aについてのクライアントアクセス制限は、クライアント読出し不可且つクライアント書込み不可である。
 クライアントファイルシステム316内のファイルが、更新スタブファイル108Aであり、且つ、更新スタブファイル108Aがデータ転送処理中であれば、更新スタブファイル108Aについてのクライアントアクセス制限は、クライアント読出し可且つクライアント書込み不可である。
 一方、クライアントファイルシステム316内のファイルが、完全更新ファイル109Bであれば、完全更新ファイル109Bがデータ転送処理中であっても、クライアントアクセスは制限されない。
 担保方式4によれば、更新スタブファイル108Aについて、リコール処理中及びデータ転送処理中のいずれにおいてもクライアントアクセスが制限される。このため、更新スタブファイル108Aについて、リコール処理中及びデータ転送処理中のいずれにおいても整合性が担保される。一方、完全更新ファイル109Bについて、リコール処理は実施しない。データ転送処理中においてはクライアントアクセスが制限されないがデータ転送元がクライアントROのスナップショット111とされる。このため、完全更新ファイル109Bについても、リコール処理中及びデータ転送処理中のいずれにおいても整合性が担保される。
 担保方式4は、例えば下記の(4-1)~(4-5)のうちの少なくとも1つの場合に採用することができる。
(4-1)クライアントファイルシステム316について許容される記憶容量が閾値以上である。クライアントファイルシステム316がリコール先のためである。
(4-2)スナップショット111について許容される記憶容量が閾値未満である。スナップショット111がリコール先ではないためである。
(4-3)更新スタブファイル108Aについて、クライアントアクセス頻度が閾値未満である。リコール処理中にもデータ転送処理中にもクライアントアクセスが制限されるためである。なお、この場合、更新スタブファイル108Aについて、担保方式4が採用され、完全更新ファイル109Bについては、他種の担保方式が採用されてもよい。或いは、更新スタブファイル108Aが完全更新ファイル109Bよりも優先度が高い場合に、更新スタブファイル108A及び完全更新ファイル109Bを含んだクライアントファイルシステム316について担保方式4が採用されてもよい。
(4-4)完全更新ファイル109Bについて、クライアントアクセス頻度が閾値以上である。データ転送処理中にクライアントアクセスが制限されないためである。なお、この場合、完全更新ファイル109Bについて、担保方式4が採用され、更新スタブファイル108Aについては、他種の担保方式が採用されてもよい。或いは、完全更新ファイル109Bが更新スタブファイル108Aよりも優先度が高い場合に、更新スタブファイル108A及び完全更新ファイル109Bを含んだクライアントファイルシステム316について担保方式4が採用されてもよい。
(4-5)所定タイプのアプリケーションプログラムがスタブファイル(不完全ファイル)を更新する場合。本実施形態において、「所定タイプのアプリケーションプログラム」とは、ファイル全体にデータを書き込むタイプのアプリケーションプログラムである。この場合、スタブファイルは完全ファイルになる。このため、リコール処理が不要であり、完全ファイルについてはスナップショットをデータ転送元とすることは有用だからである。
 なお、少なくとも担保方式3及び担保方式4については、動的な切り替えが行われてもよい。例えば、担保方式3が採用されている間、スナップショット111にデータが書き込まれるため消費容量が増えるが、消費容量が所定値を超えた場合に、マイグレーションプログラム307が、採用する担保方式を担保方式3から担保方式4へ切り替えてよい。これにより、スナップショット111について消費容量が増えることを抑えることができる。
 図15は、担保方式5(スナップショット併用)の概要を示す。下記が担保方式5(スナップショット併用)の概要である。
 マイグレーションプログラム307が、リコール処理(S2503)の前に、クライアントファイルシステム316のスナップショット111(クライアントRO且つCAS RO)を作成し(S2501)、且つ、クライアント201から参照されない特殊ディレクトリ1500(図15の例ではディレクトリ「.recall」)を作成する(S2502)。特殊ディレクトリ1500は、クライアントファイルシステム316内の所定位置にあるディレクトリ、例えばルートディレクトリの子ディレクトリとして作成されてよい。また、特殊ディレクトリ1500には、マイグレーションプログラム307により、クライアントファイルシステム316内のファイルのうち不完全ファイルのみがコピーされる(S2502)。
 その後、マイグレーションプログラム307は、クライアントファイルシステム316内の更新スタブファイル108Aについて、リコール処理を実行する(S2503)。
 マイグレーションプログラム307は、ファイルが更新スタブファイル108Aであれば、特殊ディレクトリ1500内の更新スタブファイル108Aについてデータ転送処理を実行する(S2504)。つまり、更新スタブファイル108Aについては、データ転送元は特殊ディレクトリ1500である。
 一方、マイグレーションプログラム307は、ファイルが完全更新ファイル109Bであれば、スナップショット111内の完全更新ファイル109Bについてデータ転送処理を実行する(S2504´)。つまり、完全更新ファイル109Bについては、データ転送元はスナップショット111である。
 クライアントファイルシステム316内の更新スタブファイル108Aがリコール処理中であってもデータ転送処理中であっても、更新スタブファイル108Aについてクライアントアクセスは制限されない。同様に、クライアントファイルシステム316内の完全更新ファイル109Bがデータ転送処理中であっても、完全更新ファイル109Bについてもクライアントアクセスは制限されない。
 担保方式5によれば、いずれのファイルがリコール処理中及びデータ転送処理中のいずれであっても、いずれのファイルについてもクライアントアクセスは制限されない。しかし、更新スタブファイル108Aについてリコール先もデータ転送元も特殊ディレクトリ1500であり、完全更新ファイル109Bについてデータ転送元はスナップショット111である。特殊ディレクトリ1500はクライアント201に参照されず、スナップショット111はクライアントROである。このため、リコール処理中及びデータ転送処理中のいずれにおいてクライアントファイルシステム316内の更新スタブファイル108A及び完全更新ファイル109Bのいずれが更新されても、更新スタブファイル108A及び完全ファイル19Bのいずれの整合性も担保される。
 担保方式5は、例えば下記の(5-1)~(5-4)のうちの少なくとも1つの場合に採用することができる。
(5-1)クライアントファイルシステム316について許容される記憶容量が閾値以上である。クライアントファイルシステム316に、不完全ファイルのコピー先となる特殊ディレクトリ1500が作成され、且つ、特殊ディレクトリ1500がリコール先のためである。
(5-2)スナップショット111について許容される記憶容量が閾値未満である。スナップショット111がリコール先ではないためである。
(5-3)更新スタブファイル108A及び完全更新ファイル109Bの少なくとも1つについて、クライアントアクセス頻度が閾値以上である。リコール処理中及びデータ転送処理中のいずれについてもクライアントアクセスが制限されないためである。
(5-4)所定タイプのアプリケーションプログラムがスタブファイル(不完全ファイル)を更新する場合。理由は、(4-5)と同様である。
 図16は、担保方式5(スナップショット不使用)の概要を示す。下記が担保方式5(スナップショット不使用)の概要である。以下、図15の担保方式5(スナップショット併用)との相違点を主に説明する。
 マイグレーションプログラム307が、リコール処理(S2602)の前に、特殊ディレクトリ1500を作成し、クライアントファイルシステム316内の全ての更新ファイルを特殊ディレクトリにコピーする(S2601)。マイグレーションプログラム307は、クライアントファイルシステム316のスナップショットを作成しない。
 マイグレーションプログラム307は、更新スタブファイル108Aについて、特殊ディレクトリ1500に関してリコール処理(S2602)を実行する。また、更新スタブファイル108A及び完全更新ファイル109Bのいずれについても、特殊ディレクトリ1500に関してデータ転送処理(S2603)を実行する。つまり、リコール先もデータ転送元も特殊ディレクトリ1500である。
 クライアントファイルシステム316について許容される記憶容量がより大きな閾値以上の場合に、担保方式5(スナップショット不使用)が採用されてよい。
 図17は、データ転送処理のフローチャートである。
 マイグレーションプログラム307は、転送データが新規ファイルであるか否かを判断する。「新規ファイル」は、典型的には、ライトデータとして新たに書き込まれたファイルである(S1301)。
 S1301の判断結果が真の場合(S1301:Yes)、マイグレーションプログラム307は、NASオブジェクトテーブル500に、新規ファイルに対応したエントリを追加し、そのエントリに、オブジェクトID503を設定する(S1302)。例えば、図5において、パス名501「/Share/File2」のファイルが新規ファイルの場合、オブジェクトID503としての値は無い状態であり、S1302において、オブジェクトID503「jkl」が設定される。マイグレーションプログラム307は、S1302でオブジェクトIDを設定したファイルの親ディレクトリのディレクトリデータ5600において、該当エントリ内のオブジェクトIDに、S1302で設定したオブジェクトIDを設定する(S1303)。例えば、図5のエントリ508によれば、ファイル「File2」の親オブジェクトはディレクトリ「Share」であるため、マイグレーションプログラム307は、ディレクトリ「Share」のディレクトリデータ5600Bのエントリ605に、オブジェクトID604として、S1302で設定したオブジェクトID「jkl」を設定する。
 S1302及びS1303は、CASに一度も転送されていないオブジェクトに対してオブジェクトIDを振る前処理である。ディレクトリデータ600が、自ディレクトリ(そのデータ600に対応したディレクトリ)に保存されているオブジェクトの情報を保持していることから、新規オブジェクトの親オブジェクトに対しても、iノード番号603やオブジェクトID604の登録処理が必要である。その登録処理も、S1303で行われる。
 S1303の後、又は、S1301の判断結果が偽の場合(S1301:No)、マイグレーションプログラム307は、転送データと転送データの付属情報(例えば、転送データに対応したオブジェクトID503、更新リスト等)をCAS400へ転送し、オブジェクト保存処理の実行をCAS400に要求する(S1304)。オブジェクト保存処理(S1305)の詳細は後述する。データ転送元は、図10に示した通りである。
 図18は、オブジェクト保存処理(図17のS1305)のフローチャートである。
 オブジェクト操作プログラム407は、NAS300から受信した転送データを、ファイルシステム413に保存する(S1401)。
 オブジェクト操作プログラム407は、NAS300から受信したオブジェクトIDに一致するオブジェクトIDをCASオブジェクトテーブル700から検索する(S1402)。
 一致するオブジェクトIDが見つかった場合(S1403:Yes)、オブジェクト操作プログラム407は、NAS300からの転送データのバージョンを、見つかったオブジェクトIDの最新バージョンの次のバージョンとする(S1404)。これにより、「最新バージョン」が1つ古いバージョンとなり、「次のバージョン」が最新バージョンとなる。例えば、図8において、エントリ705があるがエントリ706が無い状況を考える。その場合、オブジェクト操作プログラム407は、オブジェクトID701が「ghi」のバージョン702に「1」が登録されているため、バージョン「1」の次のバージョンである「2」を採用する。
 一致するオブジェクトIDが見つからなかった場合(S1403:No)、オブジェクト操作プログラム407は、転送データに対応したエントリに登録されるバージョン702として「1」を決定する(S1405)。なお、この時にバージョン702として決定された値は、最初のバージョンであることが識別できるものであれば、どのような値でもよい。例えば、図7において、オブジェクトID701「mno」を含んだエントリが存在しない場合は、オブジェクトID701「mno」を含んだエントリ707に登録されるバージョン702の値として、オブジェクト操作プログラム407は、「1」を決定する。
 最後に、オブジェクト操作プログラム407は、CASオブジェクトテーブル700にエントリを追加する(S1406)。具体的には、例えば、次の処理が行われる。すなわち、オブジェクト操作プログラム407は、NAS300から受け取ったオブジェクトIDを当該エントリのオブジェクトID701へ登録する。オブジェクト操作プログラム407は、S1404又はS1405で決定したバージョン値を当該エントリのバージョン702として登録する。オブジェクト操作プログラム407は、現在時刻を当該エントリの作成時刻703として登録する。オブジェクト操作プログラム407は、S1401でファイルシステム413に保存したデータのパス名を当該エントリのパス名704として登録する。オブジェクト操作プログラム407は、処理結果を要求元であるNAS300に返信する。
 図19は、後処理(図9のS806)のフローチャートである。
 マイグレーションプログラム307は、クライアントファイルシステム316内のオブジェクトであってMIGフラグ504「ON」のオブジェクトの各々についてループC(S1502~S1506)を実行する。以下、1つのファイルを例に取る。そのファイルを、S1502~S1506において、「対象ファイル」と言う。
 マイグレーションプログラム307は、対象ファイルに対応したスタブフラグ505が「ON」か否かを判断する(S1502)。S1502の判断結果が真の場合(S1502:Yes)、マイグレーションプログラム307は、対象ファイルが完全ファイルか否かを判断する(S1503)。「完全ファイル」は、上述したように、データ不足が無いファイルであり、例えば、完全更新ファイルである。S1503の判断結果が真の場合(S1503:Yes)、マイグレーションプログラム307は、対象ファイルに対応したスタブフラグ505を「OFF」に変更する。
 S1502の判断結果が偽の場合(S1502:NO)、又は、S1503の判断結果が偽の場合(S1503:NO)、S1504がスキップされる。これは、データ転送処理が終わった場合でも、対象ファイルは不完全ファイルのままであるため、対象ファイルを、継続してスタブファイルとして扱う必要があるためである。具体的には、例えば、採用されている担保方式が担保方式1、2及び4のいずれかであれば、リコール先がクライアントファイルシステム316(特殊ディレクトリを除く)であるため、対象ファイルは完全ファイルになり、故に、S1503の判断結果は真となる。一方、採用されている担保方式が担保方式3又は5であれば、リコール先がスナップショット111又は特殊ディレクトリのため、対象ファイルは不完全ファイルのままであり、故に、S1503の判断結果は偽となる。
 S1505及びS1506は、データ転送処理が終わった対象ファイルのMIGフラグ504を「OFF」に変更する処理である。データ転送処理中の対象ファイルがクライアントファイルシステム316において更新されたにも関わらずMIGフラグ504が「OFF」にされると、対象ファイルが次回にマイグレーション処理の対象とならない。これを防ぐためにS1505の判断が必要となる。
 すなわち、マイグレーションプログラム307は、スナップショットや特殊ディレクトリのような一時領域の作成後にクライアント201からクライアントファイルシステム316内の対象ファイルへの更新があったか否かを、判断する。例えば、マイグレーションプログラム307は、以下の(条件1)及び(条件2)のいずれかが満たされているかを判断する。
(条件1)一時領域作成前後で、クライアントファイルシステム316内の対象ファイルに対応したiノード番号603に変化がある。
(条件2)(一時領域内の対象ファイルの作成時刻)-(1秒)<(クライアントファイルシステム316内の対象ファイルの最終状態変更時刻)
 (条件2)で、「1秒」を減算している理由は、「一時領域内の対象ファイルの作成時刻」と「クライアントファイルシステム316内の対象ファイルの最終状態変更時刻」が秒単位まで同時であった場合も、対象ファイルが次回マイグレーション対象とされるためである。なお、「一時領域内の対象ファイルの作成時刻」も「クライアントファイルシステム316内の対象ファイルの最終状態変更時刻」も、対象ファイルのメタデータから特定可能である。減算する値は、0より大きい値であれば、「1秒」に限らない。
 (条件1)を考慮する理由は、対象ファイルの削除やリネームにより対象ファイルが別のオブジェクトになったことを検出するためである。
 S1505の判断結果が偽の場合(S1505:No)、マイグレーションプログラム307は、対象ファイルに対応したMIGフラグ504を「OFF」に変更し、且つ、更新リスト507内の該当エントリ(対象ファイルに対応したエントリ)を削除する(S1506)。
 マイグレーションプログラム307は、一時領域を削除する(S1507)。なお、一時領域が使用されない担保方式1では、S1507は不要である。
 以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲を上記実施形態に限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
 例えば、担保方式1及び4の少なくとも1つにおいて、データ転送処理中のファイルが書込み不可とされるが、データ転送処理中にクライアント書込みがあった場合は再送する等、結果的に最新の整合性のあるデータを転送できていれば、クライアント書込みが許可されてもよい。
 また、例えば、担保方式2~5の少なくとも1つにおいて、スナップショットのような一時領域が作成されてからデータ転送処理の間に、クライアントファイルシステム316のファイルのパスが削除されて名前空間が不一致となったり、名前空間は等しいがファイルを削除した後同じ名前のファイルが作成されたり、リネームが行われたりすることにより、オブジェクトが別のオブジェクトとなっている場合がある。同一オブジェクトか否かはiノード番号の比較で判断可能である。これらに対処するため、データ転送処理の前に、次の処理が実行されてもよい。
(ステップA)マイグレーションプログラム307は、データ転送処理対象のファイルのパスが「一時領域内のパス」と「クライアントファイルシステム316内のパス」で一致していない場合、データ転送処理を行わず、そのファイルを次回のマイグレーション処理の対象とする。
(ステップB)マイグレーションプログラム307は、データ転送処理対象のファイルのパスが「一時領域内のパス」と「クライアントファイルシステム316内のパス」で一致しているが、一時領域を作成してからデータ転送処理までの間に、クライアントファイルシステムでiノード番号に変化があった場合、クライアントファイルシステム316のオブジェクトID503を利用して、一時領域内のオブジェクトについてデータ転送処理を実行し、そのファイルを次回のマイグレーションの対象とする。即ち、CAS400のオブジェクトは、一時的に最新バージョンが異なるファイルデータとなる。
 また、例えば、リコール処理は、不足データの一部について行われてもよい。例えば、マイグレーションプログラム307は、クライアントファイルシステム316内のライトデータ(データブロック)とCAS400から取得したデータブロックとを結合することを(リコール処理を)、CAS400の規定するオブジェクトサイズに満たすために実行してよい。
 また、例えば、フラグ種類やフラグ変更タイミングは一例であり、他種のフラグ又は変更タイミングが採用されてもよい。例えば、クライアントファイルシステム316をリコール先としたリコール処理が実行された場合でも、そのタイミングではスタブフラグが「OFF」にされずに、データ転送処理後に、スタブフラグが「OFF」にされてもよい。或いは、クライアントファイルシステム316をリコール先としたリコール処理が実行された場合に、スタブフラグが「OFF」にされてもよい。
 また、例えば、担保方式2~5の少なくとも1つにおいて、スナップショットからのデータ転送に失敗した場合(転送データの読出しに失敗した場合)、クライアントファイルシステム316から対象のファイルが読み出されてもよい。これにより、スナップショットのデータを格納するPDEVが故障した等にもデータ転送処理を実行することが可能である。
300:NAS 400:CAS

Claims (15)

  1.  クライアントにローカル名前空間を提供するノードであるエッジノードと、
     前記ローカル名前空間に対応したセンタ名前空間を前記エッジノードに提供するノードであるセンタノードと、
    を有し、
     前記ローカル名前空間にライトデータを書込むライト要求を前記エッジノードが前記クライアントから受信した場合、前記エッジノードは、リコール処理とデータ転送処理とのうちの少なくともデータ転送処理を実行し、
     前記リコール処理は、1以上の不完全ファイルの各々について実行される処理であって、既存データを前記センタ名前空間から取得する処理であり、
     前記データ転送処理は、前記既存データと前記ライトデータとを用いて作成された転送データを前記センタノードに転送する処理であり、
     前記1以上の不完全ファイルの各々は、データ不足のある旧ファイルとデータ不足のある更新ファイルとのうちのいずれか一方であり、
     前記旧ファイルは、更新される前のファイルであり、
     前記更新ファイルは、旧ファイルが前記ライトデータを用いて更新された後のファイルであり、
     前記既存データは、前記旧ファイルと、不足データの少なくとも一部とのうちのいずれか一方であり、
     前記不足データは、前記旧ファイルのうちの前記ライトデータとの差分であり、
     前記転送データは、データ不足の無い更新ファイルである完全更新ファイルと、前記完全更新ファイルの一部であり前記ライトデータを含み前記センタノードの規定するサイズを満たすデータである部分データとのうちのいずれか一方であり、
     前記エッジノードは、前記リコール処理中のファイルの第1整合性と前記データ転送処理中のファイルの第2整合性とのうちの少なくとも前記第2整合性を担保する担保処理を実行する、
    計算機システム。
  2.  前記担保処理は、
      前記リコール処理中のファイルと前記データ転送処理中のファイルとのうちの少なくとも1つであり前記ローカル名前空間内のファイルについて、クライアントアクセスのアクセス制限であるクライアントアクセス制限を実行することと、
      前記ローカル名前空間の少なくとも一部のバックアップを取得することと
    のうちの少なくとも1つを含み、
     前記クライアントアクセスは、いずれかのクライアントへデータを転送することであるクライアント読出しと、いずれかのクライアントから受信したデータを書き込むことであるクライアント書込みとのうちの少なくとも1つであり、
     前記クライアントアクセス制限の実行とは、前記クライアント読出しと前記クライアント書込みとのうちの少なくとも1つを不可とすることであり、
     前記エッジノードは、前記リコール処理と前記データ転送処理とのうちの少なくとも前記データ転送処理を、前記バックアップ内のファイルについて実行する、
    請求項1記載の計算機システム。
  3.  前記バックアップの取得は、前記ローカル名前空間のスナップショットの作成であり、
     前記担保処理は、前記スナップショットについて前記クライアントアクセス制限とセンタアクセス制限とのうちの少なくとも1つを実行することを含み、
     前記センタアクセス制限は、センタアクセスのアクセス制限であり、
     前記センタアクセスは、前記センタノードへデータを転送することであるセンタ読出しと、前記センタノードから受信したデータを書き込むことであるセンタ書込みとのうちの少なくとも1つであり、
     前記センタアクセス制限の実行とは、前記センタ読出しと前記センタ書込みとのうちの少なくとも1つを不可とすることである、
    請求項2記載の計算機システム。
  4.  前記スナップショットについての前記クライアントアクセス制限は、前記クライアント書込み不可且つ前記クライアント読出し可であり、
     前記スナップショットについての前記センタアクセス制限は、前記センタ書込み不可且つ前記センタ読出し可である、
    請求項3記載の計算機システム。
  5.  前記エッジノードは、前記リコール処理の前に、前記スナップショットを作成し、
     前記エッジノードは、前記ローカル名前空間内の第1対象ファイルについて、前記リコール処理を実行し、その後、前記ローカル名前空間内の前記第1対象ファイルについて、前記データ転送処理を実行し、
     前記第1対象ファイルは、スナップショットの作成前のいずれかの不完全ファイルであり、
     前記ローカル名前空間内の前記リコール処理中の前記第1対象ファイルについての前記クライアントアクセス制限は、前記クライアント読出し不可且つ前記クライアント書込み不可であり、
     前記ローカル名前空間内の前記データ転送処理中の前記第1対象ファイルについての前記クライアントアクセス制限は、前記クライアント書込み不可且つ前記クライアント読出し可であり、
     前記エッジノードは、前記スナップショット内の第2対象ファイルについて前記データ転送処理を実行し、
     前記第2対象ファイルは、前記スナップショットの作成前のいずれかの完全更新ファイルであり、
     前記ローカル名前空間内の前記データ転送処理中の前記第2対象ファイルについては、前記クライアント書込み可且つ前記クライアント読出し可である、
    請求項4記載の計算機システム。
  6.  前記エッジノードは、前記ローカル名前空間内の第1対象ファイルについて、前記リコール処理を実行し、
     前記第1対象ファイルは、前記スナップショットの作成前のいずれかの不完全ファイルであり、
     前記ローカル名前空間内の前記リコール処理中の前記第1対象ファイルについての前記クライアントアクセス制限は、前記クライアント読出し不可且つ前記クライアント書込み不可であり、
     前記エッジノードは、前記リコール処理の後に、前記スナップショットを作成し、
     前記エッジノードは、前記スナップショット内の前記第1対象ファイル及び第2対象ファイルについて前記データ転送処理を実行し、
     前記第2対象ファイルは、前記スナップショットの作成前のいずれかの完全更新ファイルであり、
     前記ローカル名前空間内の前記データ転送処理中の前記第1対象ファイル及び前記第2対象ファイルについては、前記クライアント書込み可且つ前記クライアント読出し可である、
    請求項4記載の計算機システム。
  7.  前記バックアップの取得は、前記スナップショットの作成と、クライアントに提供されないディレクトリである特殊ディレクトリを前記ローカル名前空間内に作成することであり、
     前記特殊ディレクトリは、前記ローカル名前空間内の1以上のファイルのうちの少なくとも1つのファイルのコピーであって、不完全ファイルのコピーを含み、データ不足が無いファイルである完全ファイルのコピーを含まず、
     前記エッジノードは、前記特殊ディレクトリ内の第1対象ファイルについて、前記リコール処理を実行し、その後、前記特殊ディレクトリ内の前記第1対象ファイルについて、前記データ転送処理を実行し、
     前記第1対象ファイルは、前記スナップショットの作成前のいずれかの不完全ファイルであり、
     前記エッジノードは、前記スナップショット内の第2対象ファイルについて前記データ転送処理を実行し、
     前記第2対象ファイルは、前記スナップショットの作成前のいずれかの完全更新ファイルであり、
     前記ローカル名前空間内のいずれのファイルについても、前記クライアント書込み可且つ前記クライアント読出し可である、
    請求項4記載の計算機システム。
  8.  前記スナップショットについての前記クライアントアクセス制限は、前記クライアント書込み不可且つ前記クライアント読出し可であり、
     前記スナップショットについては、前記センタ書込み可且つ前記センタ読出し可であり、
     前記エッジノードは、前記スナップショット内の第1対象ファイルについて、前記リコール処理を実行し、
     前記第1対象ファイルは、前記スナップショットの作成前のいずれかの不完全ファイルであり、
     前記エッジノードは、前記スナップショット内の前記第1対象ファイル及び第2対象ファイルについて、前記データ転送処理を実行し、
     前記第2対象ファイルは、前記スナップショットの作成前のいずれかの完全更新ファイルであり、
     前記ローカル名前空間内のいずれのファイルについても、前記クライアント書込み可且つ前記クライアント読出し可である、
    請求項3記載の計算機システム。
  9.  前記エッジノードは、前記ローカル名前空間内の第1対象ファイルについて、前記リコール処理を実行し、
     前記第1対象ファイルは、前記ローカル名前空間内のいずれかの不完全ファイルであり、
     前記エッジノードは、前記スナップショット内の前記第1対象ファイル及び第2対象ファイルについて、前記データ転送処理を実行し、
     前記第2対象ファイルは、前記スナップショットの作成前のいずれかの完全更新ファイルであり、
     前記ローカル名前空間内の前記リコール処理中の前記第1対象ファイルについての前記クライアントアクセス制限は、前記クライアント読出し不可且つ前記クライアント書込み不可であり、
     前記ローカル名前空間内の前記データ転送処理中の前記第1対象ファイル及び第2対象ファイルについての前記クライアントアクセス制限は、前記クライアント書込み不可且つ前記クライアント読出し可である、
    請求項2記載の計算機システム。
  10.  前記担保処理として、下記の(A)乃至(E)のうちの少なくとも1つに従う複数種類の担保処理があり、
      (A)前記リコール処理中のファイルについて、前記クライアント書込みが可か不可か、且つ、前記クライアント読出しが可か不可か、
      (B)前記データ転送処理中のファイルについて、前記クライアント書込みが可か不可か、且つ、前記クライアント読出しが可か不可か、
      (C)前記ローカル名前空間のスナップショットの作成を、前記バックアップの取得として実行するか否か、
      (D)前記スナップショットについて、前記センタ書込みが可か不可か、且つ、前記センタ読出しが可か不可か、
      (E)特殊ディレクトリの取得を、前記バックアップの取得として実行するか否か、
    前記特殊ディレクトリは、前記ローカル名前空間内に取得され、いずれのクライアントも参照不可のディレクトリであり、前記特殊ディレクトリは、前記ローカル名前空間内の1以上のファイルのうちの少なくとも1つのファイルのコピーであって、不完全ファイルのコピーを含み、
     前記複数種類の担保処理のうちの実行される担保処理は、下記の(a)乃至(b)のうちの少なくとも1つに従う、
      (a)前記ローカル名前空間についての許容される記憶容量、
      (b)前記スナップショットについての許容される記憶容量、
      (c)前記ローカル名前空間における少なくとも1つのファイルについてのクライアントアクセスの頻度、
    請求項3記載の計算機システム。
  11.  前記バックアップの取得は、クライアントに提供されないディレクトリである特殊ディレクトリを前記ローカル名前空間内に作成することであり、
     前記特殊ディレクトリは、前記ローカル名前空間内の1以上のファイルのうちの少なくとも1つのファイルのコピーであって、不完全ファイルのコピーと、完全更新ファイルのコピーとを含み、
     前記エッジノードは、前記特殊ディレクトリ内のいずれかのファイルである対象ファイルについて、前記データ転送処理を実行し、
     前記対象ファイルが不完全ファイルであれば、前記エッジノードは、前記特殊ディレクトリ内の前記対象ファイルについて、前記リコール処理を実行し、
     前記ローカル名前空間内のいずれのファイルについての前記クライアントアクセス制限も、前記クライアント書込み可且つ前記クライアント読出し可である、
    請求項2記載の計算機システム。
  12.  前記エッジノードは、前記リコール処理の前に前記更新ファイルを作成し、且つ、前記ライト要求に対する応答を前記クライアントに返し、
     前記更新ファイルの作成後に前記バックアップが取得される、
    請求項2記載の計算機システム。
  13.  前記既存データは、前記不足データの少なくとも一部である、
    請求項2記載の計算機システム。
  14.  クライアントにローカル名前空間を提供するノードである計算機であって、
     クライアントと前記ローカル名前空間に対応したセンタ名前空間を提供するノードであるセンタノードとに接続された1以上のインターフェースを含んだインターフェース部と、
     前記インターフェース部に接続された1以上のプロセッサを含んだプロセッサ部と
    を有し、
     前記ローカル名前空間にライトデータを書込むライト要求を前記クライアントから受信した場合、前記プロセッサ部は、リコール処理とデータ転送処理とのうちの少なくともデータ転送処理を実行し、
     前記リコール処理は、1以上の不完全ファイルの各々について実行される処理であって、既存データを前記センタ名前空間から取得する処理であり、
     前記データ転送処理は、前記既存データと前記ライトデータとを用いて作成された転送データを前記センタノードに転送する処理であり、
     前記1以上の不完全ファイルの各々は、データ不足のある旧ファイルとデータ不足のある更新ファイルとのうちのいずれか一方であり、
     前記旧ファイルは、更新される前のファイルであり、
     前記更新ファイルは、旧ファイルが前記ライトデータを用いて更新された後のファイルであり、
     前記既存データは、前記旧ファイルと、不足データの少なくとも一部とのうちのいずれか一方であり、
     前記不足データは、前記旧ファイルのうちの前記ライトデータとの差分であり、
     前記転送データは、データ不足の無い更新ファイルである完全更新ファイルと、前記完全更新ファイルの一部であり前記ライトデータを含み前記センタノードの規定するサイズを満たすデータである部分データとのうちのいずれか一方であり、
     前記プロセッサ部は、前記リコール処理中のファイルの第1整合性と前記データ転送処理中のファイルの第2整合性とのうちの少なくとも前記第2整合性を担保する担保処理を実行する、
    計算機。
  15.  クライアントにローカル名前空間を提供するノードである計算機に、
     (A)ローカル名前空間にライトデータを書込むライト要求をクライアントから受信した場合、リコール処理とデータ転送処理とのうちの少なくともデータ転送処理を実行することと、
      前記リコール処理は、1以上の不完全ファイルの各々について実行される処理であって、前記ローカル名前空間に対応し前記ノードに接続されたセンタノードが提供するセンタ名前空間から既存データを取得する処理であり、
      前記データ転送処理は、前記既存データと前記ライトデータとを用いて作成された転送データを前記センタノードに転送する処理であり、
      前記1以上の不完全ファイルの各々は、データ不足のある旧ファイルとデータ不足のある更新ファイルとのうちのいずれか一方であり、
      前記旧ファイルは、更新される前のファイルであり、
      前記更新ファイルは、旧ファイルが前記ライトデータを用いて更新された後のファイルであり、
     前記既存データは、前記旧ファイルと、不足データの少なくとも一部とのうちのいずれか一方であり、
      前記不足データは、前記旧ファイルのうちの前記ライトデータとの差分であり、
      前記転送データは、データ不足の無い更新ファイルである完全更新ファイルと、前記完全更新ファイルの一部であり前記ライトデータを含み前記センタノードの規定するサイズを満たすデータである部分データとのうちのいずれか一方であり、
     (B)前記リコール処理中のファイルの第1整合性と前記データ転送処理中のファイルの第2整合性とのうちの少なくとも前記第2整合性を担保する担保処理を実行することと
    を実行させるコンピュータプログラムを記録したコンピュータ読取り可能な記録媒体。
PCT/JP2016/054970 2016-02-22 2016-02-22 センタノードからエッジノードにデータを転送する計算機システム WO2017145214A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/054970 WO2017145214A1 (ja) 2016-02-22 2016-02-22 センタノードからエッジノードにデータを転送する計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/054970 WO2017145214A1 (ja) 2016-02-22 2016-02-22 センタノードからエッジノードにデータを転送する計算機システム

Publications (1)

Publication Number Publication Date
WO2017145214A1 true WO2017145214A1 (ja) 2017-08-31

Family

ID=59686012

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/054970 WO2017145214A1 (ja) 2016-02-22 2016-02-22 センタノードからエッジノードにデータを転送する計算機システム

Country Status (1)

Country Link
WO (1) WO2017145214A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110504002A (zh) * 2019-08-01 2019-11-26 苏州浪潮智能科技有限公司 一种硬盘数据一致性测试方法与装置
JP2022112094A (ja) * 2021-01-21 2022-08-02 株式会社日立製作所 ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法
WO2023093079A1 (zh) * 2021-11-26 2023-06-01 浪潮通信信息系统有限公司 一种分布式边缘云边节点的一致性核查方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301809A (ja) * 2004-04-14 2005-10-27 Olympus Corp データ転送装置、データ転送ソフトウェア、及び、データ転送方法
JP2008197779A (ja) * 2007-02-09 2008-08-28 Fujitsu Ltd 階層型ストレージ管理システム、階層制御装置、階層間ファイル移動方法、及びプログラム
WO2015049747A1 (ja) * 2013-10-02 2015-04-09 株式会社日立製作所 データ管理システム、及び、データ管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301809A (ja) * 2004-04-14 2005-10-27 Olympus Corp データ転送装置、データ転送ソフトウェア、及び、データ転送方法
JP2008197779A (ja) * 2007-02-09 2008-08-28 Fujitsu Ltd 階層型ストレージ管理システム、階層制御装置、階層間ファイル移動方法、及びプログラム
WO2015049747A1 (ja) * 2013-10-02 2015-04-09 株式会社日立製作所 データ管理システム、及び、データ管理方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110504002A (zh) * 2019-08-01 2019-11-26 苏州浪潮智能科技有限公司 一种硬盘数据一致性测试方法与装置
JP2022112094A (ja) * 2021-01-21 2022-08-02 株式会社日立製作所 ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法
JP7241105B2 (ja) 2021-01-21 2023-03-16 株式会社日立製作所 ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法
WO2023093079A1 (zh) * 2021-11-26 2023-06-01 浪潮通信信息系统有限公司 一种分布式边缘云边节点的一致性核查方法及装置

Similar Documents

Publication Publication Date Title
US9460111B2 (en) Method and apparatus for virtualization of a file system, data storage system for virtualization of a file system, and file server for use in a data storage system
JP5183300B2 (ja) ファイルシステムの移行方法、移行計算機及びプログラム
JP5343166B2 (ja) 通信ネットワークを介してリモートのファイルサーバにファイルを転送するローカルのファイルサーバ、及び、それらのファイルサーバを有するストレージシステム
US9558205B2 (en) Method for creating clone file, and file system adopting the same
US9946716B2 (en) Distributed file system snapshot
US10853242B2 (en) Deduplication and garbage collection across logical databases
US8307019B2 (en) File management method and storage system
US9116913B2 (en) File storage system and file cloning method
US8762344B2 (en) Method for managing information processing system and data management computer system
US8538924B2 (en) Computer system and data access control method for recalling the stubbed file on snapshot
US10852996B2 (en) System and method for provisioning slave storage including copying a master reference to slave storage and updating a slave reference
JP2008234570A (ja) データ移行処理装置
JP2015530629A (ja) 移行先ファイルサーバ及びファイルシステム移行方法
US9904482B1 (en) Method and system to protect applications configured on cluster-shared volumes seamlessly
KR102133840B1 (ko) 라이브 서비스를 위한 분산 파일 시스템 및 데이터 처리 방법
WO2017145214A1 (ja) センタノードからエッジノードにデータを転送する計算機システム
WO2014064740A1 (en) Computer system and file server migration method
US10496493B1 (en) Method and system for restoring applications of particular point in time
WO2014174578A1 (ja) エッジサーバ及び記憶制御方法
JP2022125253A (ja) ファイルストレージシステム及びファイルストレージシステムの管理方法
US11989159B2 (en) Hybrid snapshot of a global namespace
Hammoud et al. An Architecture for Distributed Electronic Documents Storage in Decentralized Blockchain B2B Applications. Computers 2021, 10, 142
CN117290298A (zh) 数据处理方法及相关装置

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16891373

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 16891373

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP