WO2016038714A1 - ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラム - Google Patents

ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラム Download PDF

Info

Publication number
WO2016038714A1
WO2016038714A1 PCT/JP2014/074045 JP2014074045W WO2016038714A1 WO 2016038714 A1 WO2016038714 A1 WO 2016038714A1 JP 2014074045 W JP2014074045 W JP 2014074045W WO 2016038714 A1 WO2016038714 A1 WO 2016038714A1
Authority
WO
WIPO (PCT)
Prior art keywords
data block
hash value
storage
file
block
Prior art date
Application number
PCT/JP2014/074045
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/JP2014/074045 priority Critical patent/WO2016038714A1/ja
Priority to CN201480081653.5A priority patent/CN106663052A/zh
Priority to JP2016514208A priority patent/JPWO2016038714A1/ja
Publication of WO2016038714A1 publication Critical patent/WO2016038714A1/ja
Priority to US15/405,953 priority patent/US20170147598A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Definitions

  • Embodiments described herein relate generally to a file system, a data deduplication method, and a program for the file system.
  • Deduplication technology is generally divided into two types depending on the subject that performs deduplication.
  • the first deduplication technique is applied in the file system, and the second deduplication technique is applied in the storage apparatus.
  • the first deduplication technique is known as a technique for recording all or part of files having the same contents in the same location of the storage apparatus.
  • the second deduplication technique is known as a technique in which blocks having the same contents are grouped together and stored in a storage apparatus, and the same block is referenced from different access paths.
  • the storage apparatus since the deduplication is executed by the file system, the storage apparatus does not need a special function for deduplication.
  • the second deduplication technique since the deduplication is performed by the storage apparatus (more specifically, the controller of the storage apparatus), the file system does not need a special function for deduplication.
  • the problem to be solved by the present invention is to provide a file system, a data deduplication method, and a program for the file system that can reduce the overhead and data transfer amount associated with deduplication.
  • the file system includes a hash value calculation unit, an access controller, and a deduplication controller.
  • the hash value calculation unit calculates a hash value of at least one data block constituting a file to be stored in the storage.
  • the access controller uses the first hash value as an identifier when the at least one data block includes a first data block and a first cache value of the first data block is calculated. , Storing the first data block in a first location of the storage determined based on the first hash value.
  • the deduplication controller inhibits the first data block from being stored in the first location when a valid second data block is already stored in the first location.
  • FIG. 1 is a block diagram illustrating a typical configuration of a computer system according to one embodiment.
  • FIG. 2 is a diagram for explaining an outline of main functions of the file system shown in FIG.
  • FIG. 3 is a diagram showing an example of an i-node structure used for managing a plurality of blocks constituting a file in the embodiment.
  • FIG. 4 is a diagram illustrating a data structure example of a block object applied in the embodiment.
  • FIG. 5 is a diagram showing an example of two i-nodes of type directory applied in the embodiment.
  • FIG. 6 is a flowchart showing a typical procedure of file writing processing applied in the embodiment.
  • FIG. 7 is a flowchart showing a typical procedure of file read processing applied in the embodiment.
  • FIG. 8 is a flowchart showing a typical procedure of file deletion processing applied in the embodiment.
  • FIG. 1 is a block diagram illustrating a typical configuration of a computer system according to one embodiment.
  • the computer system shown in FIG. 1 includes a host computer (hereinafter referred to as a host) 10 and a storage apparatus 20.
  • a host hereinafter referred to as a host
  • the host 10 and the storage apparatus 20 are connected via a network 30.
  • the host 10 includes a file system 11 and an object controller 12.
  • the file system 11 and the object controller 12 have a common hardware configuration including a CPU 101, a memory 102, and a local hard disk drive (HDD) 103.
  • the file system 11 and the object controller 12 may have unique hardware configurations including a CPU, a memory, and a local HDD, respectively.
  • the CPU 101 functions as a main controller of the file system 11 and the object controller 12 by executing the file system program and the object control program, for example, in a time-sharing manner.
  • the file system program and the object control program are stored in the local HDD 103 in advance.
  • an initial program loader (IPL) executed by the CPU 101 when the host 10 is activated, at least a part of both of the above-described programs is loaded into the memory 102 and used by the CPU 101.
  • IPL initial program loader
  • the IPL is stored in advance in a non-volatile memory such as a flash ROM.
  • the storage device 20 includes a storage 21 and a storage controller 22.
  • the storage 21 is composed of an HDD array, for example, a RAID (Redundant Arrays of Inexpensive Disks or Redundant Arrays of Independent Disks) array configured using a plurality of HDDs.
  • the storage 21 may be a flash array configured using a plurality of flash memories (that is, a flash array having an access speed higher than that of the HDD array).
  • the storage 21 may be a hierarchical storage composed of a low-speed storage (for example, an HDD array) and a high-speed storage (for example, a flash array).
  • the flash array may be composed of a plurality of solid state drives (SSD) having compatibility with the HDD.
  • SSD solid state drives
  • the storage controller 22 accesses the storage 21 in response to an access request from the host 10 (more specifically, the object controller 12 of the host 10).
  • the storage controller 22 also manages the area of the storage 21 in units of blocks called blocks.
  • the storage controller 22 further manages the correspondence between the logical address (logical block address) of each block and the physical address assigned to the logical block address.
  • FIG. 2 is a diagram for explaining an outline of main functions of the file system 11.
  • the storage 21 of the storage apparatus 20 is recognized as the object storage 210 from the file system 11.
  • the object storage 210 is a kind of logical storage, and is used to store data (for example, file data) in units of objects.
  • the object size (data length) is variable.
  • the object size may be a fixed length.
  • FIG. 2 assumes a case where an application operating on the host 10 requests the file system 11 to store the file F in the object storage 210.
  • the main controller (that is, the CPU 101) of the file system 11 converts the file F into a plurality of data blocks, for example, four data blocks (hereinafter simply referred to as blocks) B1, as indicated by an arrow A1 in FIG. , B2, B3 and B4.
  • the sizes of the blocks B1 to B4 are fixed lengths. However, as will be described later, the block size may be variable.
  • the CPU 101 uses a well-known hash function HF such as SHA-256, for example, as indicated by an arrow A2 in FIG. 2, and the hash values H1, H2, H3 of the blocks B1, B2, B3 and B4 to B4, respectively. And H4.
  • a well-known hash function HF such as SHA-256
  • the number of bits constituting each of the hash values H1, H2, H3, and H4 is 256.
  • the hash values H1, H2, H3, and H4 are 1334, 3456, 1234, and 5628, respectively. That is, the hash values H1 and H3 are the same.
  • the data is stored in the object storage 210 as indicated by A3 (more specifically, arrows A31, A32, and A34).
  • a technique in which object storage is used for storing blocks in this way is called object storage technique.
  • the above ID and block are processed as an object ID and an object, respectively.
  • This object is also called an object corresponding to a block, a block object, or a data object.
  • the feature of this embodiment is that the CPU 101 uses a hash value of a block as an object ID indicating the object of the block.
  • the CPU 101 treats blocks corresponding to the same ID (object ID) as the same object in order to eliminate duplication. That is, the CPU 101 prevents the blocks B1 and B3 having the same contents from being stored in the object storage 210 in duplicate.
  • object ID object ID
  • FIG. 2 it is assumed that storage of blocks in the object storage 210 starts from the first block B1 of the file F. In this case, the CPU 101 prevents the block B3 from being stored in the object storage 210. Thereby, duplication of the blocks B1 and B3 in the object storage 210 is eliminated.
  • each file is managed using an i-node in accordance with the Linux (registered trademark) virtual file system (VFS) format.
  • Linux registered trademark
  • VFS virtual file system
  • the i-node iNp is also managed as one object (that is, an object of the i-node iNp).
  • the i-node iNp includes a block table 310.
  • the i-node iNp further includes attribute information 320 representing attributes of the file Fp.
  • the attribute information 320 of the file Fp is also called metadata of the file Fp.
  • the attributes of the file Fp include the size of the file Fp, the authority to access the file Fp, and a time stamp.
  • the time stamp includes the date and time when the file Fp was last accessed, the date and time when the file Fp was last changed, and the date and time when the file Fp was created.
  • the block table 310 is used to record information indicating the location of the block Bq (hereinafter referred to as block location information).
  • block location information information indicating the location of the block Bq
  • the address of the block Bq is used as the block location information.
  • the hash value Hq of the block Bq is used as the block location information.
  • the storage controller 22 manages the correspondence between the logical address (for example, logical block address) of the small area in the logical volume and the physical address of the small area in the physical volume using the address management table.
  • the location of the object OBq in the object storage 210 is mapped to a small area column in the logical volume. As described above, this location is indicated by the object ID of the object OBq. Therefore, the object controller 12 manages the correspondence between the object ID of the object OBq and the logical block address LBAq of the first small area of the small area column in the logical volume using the object management table.
  • the object management table is stored in the local HDD 103 of the host 10, for example. It is assumed that the number of bits constituting the logical block address LBAq is 64.
  • the file system 11 reads (or writes) the object OBq of the block Bq through the object controller 12 as follows. First, the file system 11 requests the object controller 12 to read (or write) the object OBq using the hash value Hq of the block Bq as an object ID indicating the object OBq of the block Bq. In response to this request, the object controller 12 logically reads (or writes) the object OBq from (or into) the location of the object storage 210 that is uniquely determined by the hash value Hq (object ID).
  • the object controller 12 refers to the object management table based on the object ID of the object OBq of the block Bq (that is, the hash value Hq of the block Bq). As a result, the object controller 12 acquires the logical block address LBAq associated with the object ID of the object OBq. Then, the object controller 12 requests the storage controller 22 of the storage apparatus 20 to read (or write) the contents of the object OBq based on the acquired logical block address LBAq and the size of the object OBq.
  • the storage controller 22 In response to a request from the object controller 12, the storage controller 22 refers to the address management table based on the logical block address LBAq. As a result, the storage controller 22 obtains a physical address associated with the logical block address LBAq. Then, the storage controller 22 reads (or writes) the contents of the object OBq from (or into) the location in the storage 21 indicated by the acquired physical address and the size of the object OBq. In the following description, for the sake of simplicity, description relating to physical reading or writing of objects is omitted.
  • the size of the i-node iNp (more specifically, the object of the i-node iNp) is assumed to be variable. Therefore, in this embodiment, it is possible to record the hash values of all the blocks Bq (B0 to Bm ⁇ 1) constituting the file Fp in the block table 310 of the i-node iNp. That is, in FIG. 3, for example, the hash values H0, H1,..., Hm-2, Hm-1 of the blocks B0, B1,. In this case, the blocks B0, B1,..., Bm-2, Bm-1 are locations determined by using the hash values H0, H1,..., Hm-2, Hm-1 recorded in the block table 310 as IDs. Stored directly.
  • the size of the i-node iNp may be a fixed length.
  • the number of blocks Bq constituting the file Fp is expressed as Np
  • the number of hash values that can be recorded in the block table 310 is expressed as Nq.
  • the hash values Hn and Hn + 1 of the blocks Bn and Bn + 1 are recorded in the indirect block IBx, and the hash value Hx of the indirect block IBx is recorded in the block table 310.
  • the addresses of the blocks Bn and Bn + 1 are recorded in the indirect block IBx, and the addresses of the indirect block IBx are recorded in the block table 310.
  • the CPU 101 may use, for example, a two-stage indirect block or a three-stage indirect block. In this case, the CPU 101 records the hash value of the next-stage indirect block, not the address of the next-stage indirect block, in the 2-stage indirect block or the 3-stage indirect block.
  • FIG. 4 shows an example of the data structure of the object OBq of the block Bq described above, which is applied in the present embodiment.
  • the object OBq is stored in a data area in the object storage 210.
  • the data area is allocated to the file system 11 and used by the file system 11.
  • the host 10 includes a plurality of file systems including the file system 11, the data area may be shared by the plurality of file systems.
  • first and second data areas may be prepared in the object storage 210.
  • the first file system (or first set of file systems) uses the first data area
  • the second file system (or second set of file systems) uses the second data.
  • the area is used.
  • the hash value of the first object to be stored in the first data area is the same as the hash value of the second object already stored in the second data area.
  • the first file system (or each first file system) has the same hash value
  • the first object is processed as an object different from the second object. That is, even if the second object exists, the first object is excluded from the deduplication target.
  • the i-node iNp shown in FIG. 3 is also called an i-node object and is stored in the i-node area in the object storage 210.
  • the i-node area is allocated to the file system 11 and is used by the file system 11.
  • the host 10 includes a plurality of file systems including the file system 11, individual i-node areas may be used by the plurality of file systems.
  • the object OBq is composed of metadata 410 and actual data 420.
  • the actual data 420 of the object OBq is the entity of the object OBq.
  • the actual data 420 matches the content of the block Bq.
  • the metadata 410 of the object OBq indicates management information related to the object OBq and includes a duplication count DCNTq.
  • the duplicate count DCNTq is also called a reference count and indicates the number of blocks Bq that match the actual data 420. That is, the duplication count DCNTq indicates the number of blocks having the same hash value as the hash value Hq of the actual data 420 (block Bq).
  • the metadata 410 further includes an object ID unique to the object OBq, information indicating the size of the actual data 420, and an address (for example, a logical block address) indicating the storage destination of the actual data 420. As the object ID of the object OBq, the hash value Hq of the block Bq corresponding to the object OBq is used.
  • L Inodes are generally classified into multiple types.
  • a file more specifically, a normal file
  • File inodes are used to manage files.
  • the type of inode iNp shown in FIG. 3 is a file.
  • an i-node whose type is a file may be referred to as a file inode
  • an i-node whose type is a directory may be referred to as a directory inode.
  • An i-node has an i-node number unique to the i-node regardless of the type of the i-node.
  • the i-node number of the i-node (that is, i-node object) is used as the object ID of the i-node object.
  • FIG. 5 shows an example of an i-node 500 of a directory type applied in the present embodiment.
  • the size of the i-node 500 is assumed to be variable length like that of the i-node iNp.
  • the i-node 500 is also managed as one object (that is, an object of the i-node 500). For this reason, the i-node 500 may be referred to as an i-node object 500.
  • the i-node 500 has an i-node number iNdn, for example, and includes a directory entry table (hereinafter referred to as an entry table) 510 and attribute information 520.
  • an entry table hereinafter referred to as an entry table
  • the entry table 510 is used to record a set of i-node numbers and file names of all files included in the directory indicated by the i-node 500.
  • a combination of the i-node number of the i-node corresponding to the file and the file name of the file is added to the empty entry in the entry table 510 of the i-node 500 by the file system 11, for example. .
  • the file may be a directory instead of a normal file.
  • the i-node number and directory name of the directory type are recorded in the entry table 510.
  • the size of the i-node (directory i-node) 500 may be a fixed length.
  • the file system 11 CPU 101
  • the ID of the object (that is, the list of directory entries) may be recorded in the i-node 500.
  • the file system 11 uses a special block for managing the file system 11.
  • This special block is called a super block, and is generated when the file system 11 is generated.
  • the super block is used for recording management information of the file system 11 (hereinafter referred to as file system management information), and is stored in an i-node area in the object storage 210, for example.
  • file system management information management information of the file system 11
  • Super blocks are also managed as objects. For this reason, a special object ID is assigned to the super block.
  • the file system management information includes i-node list information.
  • the i-node list information includes information (hereinafter referred to as i-node management information) regarding the storage destination for each i-node reserved in advance in the i-node area of the object storage 210.
  • the i-node management information includes an i-node number unique to the corresponding i-node.
  • the file system 11 can identify an i-node having the target i-node number as an ID by referring to the i-node management information included in the file system management information.
  • FIG. 6 is a flowchart showing a typical procedure of file writing processing applied in the present embodiment.
  • the size of the file Fp is an integer multiple of 4 KB.
  • an application program executed in the host 10 requests the file system 11 to write the file Fp.
  • the CPU 101 of the file system 11 starts file writing processing.
  • the plurality of blocks Bq are stored in the memory 102, for example.
  • the number of blocks Bq is m.
  • the CPU 101 initializes variables q and Q to 0 and m, respectively (step S2).
  • the variable q indicates the relative position of the block Bq in the file Fp.
  • the variable Q indicates the number of divided blocks Bq.
  • the CPU 101 functions as a hash value calculation unit, and calculates the hash value Hq of the contents of the block Bq stored in the work area of the memory 102 (step S3). Then, the CPU 101 proceeds to step S4.
  • step S4 the CPU 101 functions as a file management unit, and the calculated hash value Hq is described in the block table 310 of the i-node iNp having the i-node number iNpn associated with the file name of the file Fp as described below.
  • the CPU 101 refers to the entry table 510a of the i-node 500a based on the file name of the file Fp.
  • the CPU 101 acquires the i-node number iNpn associated with the file name of the file Fp. That is, the CPU 101 searches the i-node number iNpn associated with the file name of the file Fp from the entry table 510a of the i-node 500a.
  • the CPU 101 reads out the i-node iNp having the i-node number iNpn from the i-node area of the object storage 210 via the object controller 12 by using the searched i-node number iNpn as an ID.
  • the CPU 101 stores the read i-node iNp in the work area of the memory 102.
  • the CPU 101 records the hash value Hq of the block Bq in the block table 310 of the i-node iNp stored in the work area of the memory 102.
  • the CPU 101 functions as a deduplication controller. Then, using the hash value Hq of the block Bq as the object ID, the CPU 101 confirms the presence of the object OBq having the same object ID as the object ID as follows (step S5). That is, the CPU 101 uses the hash value Hq of the block Bq as an object ID to read out an object from a location in the object storage 210 that is uniquely determined by the hash value Hq via the object controller 12. Then, the CPU 101 confirms that the target object OBq exists on the condition that a valid object is stored in the above location.
  • the CPU 101 determines the result of confirmation of the target object OBq. That is, the CPU 101 determines whether the target object OBq exists at the above-described location (step S6).
  • the target object OBq does not exist in the above-described location (No in step S6). That is, it is assumed that there is no valid block having the same contents as the block Bq at a location (first location) uniquely determined by the hash value Hq of the block Bq.
  • the CPU 101 determines that the block Bq does not overlap with any of the blocks stored in the data area in the object storage 210 used by the file system 11, and therefore deduplication regarding the block Bq is unnecessary. To do.
  • the CPU 101 functions again as a file access controller. Then, the CPU 101 writes the block Bq (first block) as the object OBq having the hash value Hq as the object ID in the above-described location (step S7). This writing is executed by the object controller 12 when the CPU 101 requests the object controller 12 to write the object OBq.
  • the object OBq includes metadata 410 and actual data 420 as shown in FIG.
  • the metadata 410 includes an object ID that matches the hash value Hq.
  • the metadata 410 of the object OBq further includes a duplication count DCNTq having a value of 0 (initial value).
  • the actual data 420 matches the contents of the block Bq.
  • the target object OBq (more specifically, an object having a block having the same content as the block Bq) exists in the above location (Yes in step S6). That is, it is assumed that a valid block (second block) having the same content as the block Bq already exists at a location uniquely determined by the hash value Hq of the block Bq.
  • the CPU 101 determines that the block Bq overlaps with a valid block existing at the above-described location, and therefore deduplication regarding the block Bq is necessary. Therefore, the CPU 101 functions as a deduplication controller, skips step S7 for deduplication, and then proceeds to step S8. That is, the CPU 101 suppresses writing of the block Bq as the object OBq in the above-described location for the purpose of deduplication, and proceeds to step S8.
  • step S8 the CPU 101 increases the duplication count DCNTq in the metadata 410 of the object OBq by 1.
  • the duplication count DCNTq 1 indicates that the number of blocks Bq matching the actual data 420 of the object OBq is 1.
  • the duplication count DCNTq is an integer equal to or greater than 1, so the duplication count DCNTq is updated to a value greater than or equal to 2.
  • step S10 the variable q increased by 1 becomes equal to the variable Q (Yes in step S10).
  • the CPU 101 determines that no block Bq to be processed remains. Then, the CPU 101 proceeds to step S11.
  • step S11 the CPU 101 functions as a file management unit, and records new attribute information 320 of the file Fp in the i-node iNp stored in the work area of the memory 102. That is, the CPU 101 updates the old attribute information 320 of the i-node iNp to new attribute information 320.
  • the CPU 101 writes a new i-node iNp including the new block table 310 and attribute information 320 as an object OiNp having the i-node number iNpn as an ID in the i-node area in the object storage 210 (step S12). That is, the CPU 101 updates the old i-node iNp (old object OiNp) to the new i-node iNp (new object OiNp). As a result, the file writing process ends. Note that the writing of the object OiNp in step S12 is executed by the object controller 12 when the CPU 101 requests the object controller 12 to write the object OiNp.
  • FIG. 7 is a flowchart showing a typical procedure of file read processing applied in the present embodiment.
  • the CPU 101 of the file system 11 starts a file reading process.
  • the CPU 101 functions as a file access controller, and reads the object OiNp of the i-node iNp from the object storage 210 using the i-node number iNpn associated with the file Fp as an ID (step S21). This reading is executed by the object controller 12 when the CPU 101 requests the object controller 12 to read the object OiNp.
  • the read object OiNp of the i-node iNp is stored in the work area of the memory 102.
  • the i-node number iNpn is acquired by the CPU 101 referring to the entry table 510a of the i-node 500a based on the file name of the file Fp, as in the above-described file writing process.
  • the CPU 101 selects the hash value Hq of the block Bq not yet selected from the block table 310 of the i-node iNp included in the read object OiNp (step S22).
  • the CPU 101 reads the object OBq of the block Bq from the object storage 210 using the selected hash value Hq as the object ID (step S23). That is, the CPU 101 reads out an object OBq having the selected hash value Hq as an object ID.
  • the read object OBq is stored in the work area of the memory 102.
  • the CPU 101 determines whether all hash values Hq recorded in the block table 310 of the i-node iNp included in the object OiNp read in step S21 have been selected (step S24). If the hash value Hq not yet selected exists in the block table 310 of the i-node iNp (No in step S24), the CPU 101 returns to step S22. And CPU101 performs step S22 thru
  • Steps S22 to S24 are repeatedly executed for all hash values Hq recorded in the block table 310 of the i-node iNp (Yes in Step S24). In this case, the CPU 101 proceeds to step S25.
  • step S25 the CPU 101 functions as a file management unit, and records new attribute information 320 of the file Fp in the i-node iNp included in the object OiNp stored in the work area of the memory 102. That is, the CPU 101 updates the old attribute information 320 of the i-node iNp to new attribute information 320.
  • the CPU 101 sets the new i-node iNp including the new block table 310 and attribute information 320 as an object OiNp having the i-node number iNpn as an ID, and enters the i-node area in the object storage 210 via the object controller 12.
  • Write step S26.
  • the old i-node iNp old object OiNp
  • new object OiNp new object OiNp
  • FIG. 8 is a flowchart showing a typical procedure of file deletion processing applied in this embodiment.
  • the application program requests the file system 11 to delete the file Fp.
  • the CPU 101 of the file system 11 starts file deletion processing.
  • the CPU 101 functions as a file access controller, and reads the object OiNp of the i-node iNp from the object storage 210 using the i-node number iNpn associated with the file Fp as an ID (step S31).
  • the read object OiNp of the i-node iNp is stored in the work area of the memory 102.
  • the CPU 101 selects the hash value Hq of the block Bq that has not yet been selected from the block table 310 of the i-node iNp included in the read object OiNp (step S32).
  • the CPU 101 reads out the metadata 410 of the object OBq of the block Bq from the object storage 210 using the selected hash value Hq as the object ID (step S33).
  • the read metadata 410 of the object OBq is stored in the work area of the memory 102.
  • the CPU 101 functions as a file deletion controller and decrements the duplicate count DCNTq in the metadata 410 included in the object OBq read in step S33 by 1 (step S34). Then, the CPU 101 determines whether or not the duplication count DCNTq decremented by 1 is equal to 0 (step S35).
  • step S35 If the duplication count DCNTq decremented by 1 is equal to 0 (Yes in step S35), the CPU 101 determines that the number of blocks Bq that match the actual data 420 included in the object OBq is equal to the deletion of the current file Fp. It is judged that it becomes zero. In this case, the CPU 101 deletes the object OBq from the object storage 210 (step S36). Then, the CPU 101 proceeds to step S37.
  • step S35 the CPU 101 determines that the number of blocks Bq matching the actual data 420 included in the object OBq is the current file. It is determined that deletion of Fp does not become zero. In this case, the CPU 101 skips step S36 and proceeds to step S37.
  • step S37 the CPU 101 determines whether all the hash values Hq recorded in the block table 310 of the i-node iNp included in the read object OiNp have been selected, as in step S24 in the file reading process described above. judge. If a hash value Hq that has not yet been selected exists in the block table 310 of the i-node iNp (No in step S37), the CPU 101 returns to step S32. And CPU101 performs step S32 thru
  • Steps S32 to S37, or Steps S32 to 35 and S3 are repeatedly executed for all hash values Hq recorded in the block table 310 of the i-node iNp (Yes in Step S37).
  • the CPU 101 deletes the object OiNp from the object storage 210 (step S38). Note that the deletion of the object OiNp in step S38 is executed by the object controller 12 when the CPU 101 requests the object controller 12 to delete the object OiNp.
  • the CPU 101 reads the i-node (i-node object) 500a using the i-node number iNdn of the i-node (directory i-node) 500a as an ID (S39).
  • the read i-node 500 a is stored in the work area of the memory 102.
  • the CPU 101 deletes the combination of the i-node number iNpn and the file name of the file Fp from the entry table 510a of the i-node 500a read in step S39 (step S40).
  • the CPU 101 uses the i-node 500a including the entry table 510a from which the pair of the i-node number iNpn and the file name of the file Fp is deleted as an object having the i-node number iNdn of the i-node 500a as an ID in the object storage 210. Is written in the i-node area (step S41). Thereby, the file deletion process ends.
  • the CPU 101 creates a file i-node iNp in the work area of the memory 102, and records the attribute information of the file Fp in the file i-node iNp.
  • the CPU 101 writes the file i-node iNp in which the attribute information of the file Fp is recorded in the i-node area of the object storage 210 using the i-node number iNpn as an ID.
  • the CPU 101 reads the i-node (i-node object) 500a using the i-node number iNdn of the i-node (directory i-node) 500a as an ID.
  • the CPU 101 adds a set of the i-node number iNpn and the file name of the file Fp to the entry table 510 of the read i-node 500a.
  • the CPU 101 sets the i-node 500a including the entry table 510a to which the combination of the i-node number iNpn and the file name of the file Fp is added as an object having the i-node number iNdn as an ID in the i-node area in the object storage 210. Write. Thereby, the file creation process ends.
  • the file system 11 uses the hash value of the block calculated from the contents (that is, data) of the block to be written in the object storage 210 as the ID (object ID). Determine (or identify) the location of Therefore, for example, when it is necessary to write the block Bq to the object storage 210, the file system 11 accesses the above-described location using the hash value Hq of the block Bq as an ID. Only by this access, the file system 11 can easily determine whether a block having the same ID as the hash value Hq is already stored in the storage apparatus 20.
  • the file system 11 calculates a hash value of the valid block for the above determination, and uses the calculated hash value as a hash of the block Bq. It is not always necessary to compare with the value Hq.
  • the storage controller 22 may store the block Bq in a location uniquely determined by the hash value Hq of the block Bq in response to a request from the file system 11 side, and determination of duplication is unnecessary. It is.
  • the size of each of the Q blocks Bq is indicated by the size information included in the metadata 410 of the object OBq of each block Bq. Therefore, each of the Q blocks Bq may have a variable length.
  • the file Fp may be divided into a plurality of blocks so as to include blocks having the same contents as the contents of the blocks already stored in the object storage 210.
  • each of the plurality of files includes a plurality of continuous blocks having the same contents, for example, two blocks Ba and Bb.
  • the objects OBa and OBb of the blocks Ba and Bb may be combined into one object OBab. That is, the blocks Ba and Bb may be combined into one block Bab.
  • the CPU 101 functions as a file management unit, and the block size is variable, so that the deduplication rate can be improved. Further, the access performance can be improved by collecting a plurality of continuous blocks.
  • the object OBq of the block Bq is read using the hash value Hq selected in step S22 or S32 as an ID (step S23 or S33).
  • the CPU 101 may calculate a hash value of the real data 420 in the read object OBq, that is, a hash value of the block Bq, and compare the calculated hash value with the selected hash value Hq. . Based on the result of this comparison, the CPU 101 detects an error in reading the object OBq of the block Bq. That is, when the calculated hash value is not equal to the hash value Hq, the CPU 101 determines that an error has occurred in reading the object OBq of the block Bq. According to such a configuration, an error check can be realized without increasing the amount of calculation.
  • the storage 21 of the storage device 20 is a hierarchical storage composed of two types of storage having different access performance, for example, a high-speed storage and a low-speed storage, unlike the embodiment.
  • the metadata 410 of each object OBq may include the number of accesses (access count) to each object OBq.
  • the CPU 101 may function as a hierarchization management unit, and for example, an object whose access count exceeds a threshold value may be stored in the high-speed storage, and an object whose access count is less than the threshold value may be stored in the low-speed storage.
  • each object can be hierarchized according to the access count (that is, access frequency).
  • the object OBq is generally copied and recorded on a plurality of storage media, for example, a plurality of HDD disks constituting the storage 21.
  • the number of copies of the object OBq may be determined based on the duplication count DCNTq in the metadata 410 of the object OBq. That is, the CPU 101 may function as a duplication controller, and an object OBq having a larger value of the duplication count DCNTq may generate more duplicates of the object OBq. In this way, the access performance can be improved by increasing the number of duplicates of the object having many overlapping objects.
  • the storage 21 of the storage apparatus 20 is recognized as the object storage 210 by the file system 11. That is, the above embodiment is based on the case where the file system 11 has a configuration that uses object storage. For this reason, the host 10 requires the object controller 12.
  • the storage 21 of the storage apparatus 20 is recognized as a block storage from the file system 11. That is, this modification is based on the assumption that the file system 11 has a configuration that uses block storage but does not use object storage.
  • the CPU 101 of the file system 11 needs to store the block Bq in the block storage.
  • the CPU 101 functions as a file access controller, and a set of metadata (hereinafter referred to as block management metadata) corresponding to the metadata 410 of the object OBq of the block Bq and the contents of the block Bq (hereinafter referred to as meta).
  • Data block set) may be stored in the block storage.
  • the block management metadata includes a duplication count DCNTq, similar to the metadata 410 of the object OBq.
  • the CPU 101 determines an address indicating the write destination of the metadata block set, for example, the logical block address LBAq as follows.
  • the number of bits constituting the hash value Hq is 256.
  • the number of bits constituting the logical block address LBAq is 64. That is, the length of the hash value Hq is longer than the length of the logical block address LBAq. Therefore, the CPU 101 determines a predetermined 64-bit portion of the hash value Hq, for example, the first 64 bits as the logical block address LBAq.
  • the CPU 101 requests the storage controller 22 of the storage apparatus 20 to write the metadata block set based on the determined logical block address LBAq and the size SZq of the metadata block set. As a result, the CPU 101 can write the metadata block set in an area having a size SZq starting from the logical block address LBAq (an area in the block storage).
  • the operation of the storage controller 22 is the same as in the above embodiment.
  • the CPU 101 stores the hash value of the block Bq.
  • a recalculation operation (so-called re-hash operation) is executed. Specifically, the CPU 101 calculates a hash value Hq ′ of the hash value Hq based on the hash value Hq, and uses this hash value Hq ′ as the hash value of the block Bq. Note that the CPU 101 may add a constant value (for example, 1) to the hash value Hq and use the addition result as the hash value of the block Bq.
  • the CPU 101 determines that deduplication is necessary. In this case, the CPU 101 increments the duplication count DCNTq in the block management metadata of the metadata block set already stored in the LBAq area by one.
  • the storage used by the file system 11 is not an object storage but a general block storage, a function equivalent to the case of using the object storage can be realized regarding deduplication.
  • the host 10 uses the storage device 20 via the network 30.
  • a plurality of hosts including the host 10 may be connected to the network 30, and the plurality of hosts may use the storage apparatus 20 via the network 30.
  • a plurality of storage devices including the storage device 20 may be connected to the network 30, and the host 10 or the plurality of hosts may use the plurality of storage devices.
  • the host 10 (or a plurality of hosts) is connected to the storage apparatus 20 (a plurality of storage devices 20 via a connection means other than the network 30 such as a fiber channel (FC), a serial attached SCSI (SAS), or a serial AT attachment (SATA)). May also be used.
  • FC fiber channel
  • SAS serial attached SCSI
  • SATA serial AT attachment
  • the storage 21 and the storage controller 22 are provided independently from the host 10. However, the storage 21 and the storage controller 22 may be built in the host 10.
  • each of the file access controller, hash value calculation unit, file management unit, deduplication controller, file deletion controller, hierarchization management unit, and replication controller (functional elements) described above is stored by the CPU 101 of the file system 11. It is a software module realized by executing a control program. However, at least one of these functional elements may be realized by a hardware module.

Landscapes

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

Abstract

 実施形態によれば、ファイルシステムは、ハッシュ値算出部とアクセスコントローラと重複排除コントローラとを備える。前記ハッシュ値算出部は、ストレージに格納されるべきファイルを構成する少なくとも1つのデータブロックのハッシュ値を算出する。前記アクセスコントローラは、前記少なくとも1つのデータブロックが第1のデータブロックを含み、且つ前記第1のデータブロックの第1のキャッシュ値が算出された場合、前記第1のハッシュ値を識別子として用いて、前記第1のハッシュ値に基づいて決定される前記ストレージの第1のロケーションに、前記第1のデータブロックを格納する。前記重複排除コントローラは、前記第1のロケーションに有効なデータブロックが既に格納されている場合、前記第1のデータブロックが前記第1のロケーションに格納されるのを抑止する。

Description

ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラム
 本発明の実施形態は、ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラムに関する。
 近年、ストレージ装置に格納されるべきデータの量は増大の一途をたどっている。このため、ストレージ装置の限られた記憶容量を有効に利用する技術が要求されている。このような技術の1つとして、重複排除技術が注目されている。重複排除技術によれば、同一内容のデータが重複してストレージ装置に格納されるのを防止する。
 重複排除技術は、一般に、重複排除を実行する主体の違いにより2つに大別される。第1の重複排除技術はファイルシステムで適用され、第2の重複排除技術はストレージ装置で適用される。第1の重複排除技術は、内容の一致するファイルの全体もしくは一部を、ストレージ装置の同一ロケーションに記録する手法として知られている。一方、第2の重複排除技術は、内容の一致するブロックを一つにまとめてストレージ装置内に格納し、異なるアクセスパスから同一のブロックを参照させる手法として知られている。
特開2009-251725号公報 特開2012-93827号公報
 第1の重複排除技術によれば、重複排除がファイルシステムによって実行されるため、ストレージ装置は重複排除のための特別な機能を必要としない。一方、第2の重複排除技術によれば、重複排除がストレージ装置(より詳細には、ストレージ装置のコントローラ)によって実行されるため、ファイルシステムは重複排除のための特別な機能を必要としない。
 しかし、第1の重複排除技術では、ファイルシステムにおいて重複排除のためのオーバヘッドが発生する。一方、第2の重複排除技術では、ストレージ装置において重複排除のためのオーバヘッドが発生する。しかも第2の重複排除技術では、ストレージ装置による重複の判定のために、全てのデータがファイルシステムによりストレージ装置に転送されることから、データ転送量は削減されない。
 本発明が解決しようとする課題は、重複排除に伴うオーバヘッドとデータ転送量とを減らすことができる、ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラムを提供することにある。
 実施形態によれば、ファイルシステムは、ハッシュ値算出部と、アクセスコントローラと、重複排除コントローラとを具備する。前記ハッシュ値算出部は、ストレージに格納されるべきファイルを構成する少なくとも1つのデータブロックのハッシュ値を算出する。前記アクセスコントローラは、前記少なくとも1つのデータブロックが第1のデータブロックを含み、且つ前記第1のデータブロックの第1のキャッシュ値が算出された場合、前記第1のハッシュ値を識別子として用いて、前記第1のハッシュ値に基づいて決定される前記ストレージの第1のロケーションに、前記第1のデータブロックを格納する。前記重複排除コントローラは、前記第1のロケーションに有効な第2のデータブロックが既に格納されている場合、前記第1のデータブロックが前記第1のロケーションに格納されるのを抑止する。
図1は、1つの実施形態に係るコンピュータシステムの典型的な構成を示すブロック図である。 図2は、図1に示されるファイルシステムの主要な機能の概要を説明するための図である。 図3は、同実施形態においてファイルを構成する複数のブロックの管理に用いられるiノードの構造の例を示す図である。 図4は、同実施形態で適用される、ブロックのオブジェクトのデータ構造例を示す図である。 図5は、同実施形態で適用される、タイプがディレクトリの2つのiノードの例を示す図である。 図6は、同実施形態で適用されるファイル書き込み処理の典型的な手順を示すフローチャートである。 図7は、同実施形態で適用されるファイル読み出し処理の典型的な手順を示すフローチャートである。 図8は、同実施形態で適用されるファイル削除処理の典型的な手順を示すフローチャートである。
 以下、種々の実施の形態につき図面を参照して説明する。 
 図1は、1つの実施形態に係るコンピュータシステムの典型的な構成を示すブロック図である。図1に示されるコンピュータシステムは、ホストコンピュータ(以下、ホストと称する)10と、ストレージ装置20とから構成される。本実施形態において、ホスト10及びストレージ装置20は、ネットワーク30を介して接続されている。
 ホスト10は、ファイルシステム11及びオブジェクトコントローラ12を備えている。本実施形態において、ファイルシステム11及びオブジェクトコントローラ12は、CPU101、メモリ102及びローカルハードディスクドライブ(HDD)103を含む共通のハードウェア構成を有している。しかし、ファイルシステム11及びオブジェクトコントローラ12が、それぞれ、CPU、メモリ及びローカルHDDを含む固有のハードウェア構成を有しても構わない。
 CPU101は、ファイルシステムプログラム及びオブジェクト制御プログラムを例えば時分割で実行することにより、ファイルシステム11及びオブジェクトコントローラ12それぞれの主コントローラとして機能する。ファイルシステムプログラム及びオブジェクト制御プログラムは予めローカルHDD103に格納されている。本実施形態では、ホスト10の起動時にCPU101によって実行されるイニシャルプログラムローダ(IPL)に従って、上述の両プログラムの少なくとも一部がメモリ102にロードされて、当該CPU101によって用いられる。図1では省略されているが、IPLは、フラッシュROMのような不揮発性メモリに予め格納されている。
 ストレージ装置20は、ストレージ21及びストレージコントローラ22を備えている。本実施形態においてストレージ21は、HDDアレイ、例えば複数のHDDを用いて構成されるRAID(Redundant Arrays of Inexpensive DisksまたはRedundant Arrays of Independent Disks)アレイから構成される。なお、ストレージ21が、複数のフラッシュメモリを用いて構成されるフラッシュアレイ(つまり、HDDアレイよりもアクセス速度が高速なフラッシュアレイ)であっても構わない。更にストレージ21が、低速ストレージ(例えば、HDDアレイ)及び高速ストレージ(例えば、フラッシュアレイ)から構成される階層化ストレージであっても構わない。また、フラッシュアレイが、HDDとの互換性を有する複数のソリッドステートドライブ(SSD)から構成されても構わない。更に、ストレージ21が、必ずしもアレイ構造を有していなくても構わない。
 ストレージコントローラ22は、ホスト10(より詳細には、ホスト10のオブジェクトコントローラ12)からのアクセス要求を受けて、ストレージ21にアクセスする。ストレージコントローラ22はまた、ストレージ21の領域をブロックと呼ばれる塊を単位に管理する。ストレージコントローラ22は更に、各ブロックの論理アドレス(論理ブロックアドレス)と、当該論理ブロックアドレスに割り当てられる物理アドレスとの対応を管理する。
 次に、図1に示されるファイルシステム11の主要な機能について、図2を参照して説明する。図2は、ファイルシステム11の主要な機能の概要を説明するための図である。本実施形態においてストレージ装置20のストレージ21は、ファイルシステム11からはオブジェクトストレージ210として認識されるものとする。オブジェクトストレージ210は一種の論理的なストレージであり、データ(例えば、ファイルのデータ)をオブジェクトを単位に格納するのに用いられる。本実施形態においてオブジェクトのサイズ(データ長)は可変長である。しかし、オブジェクトのサイズが固定長であっても構わない。
 図2は、ホスト10上で動作するアプリケーションからファイルシステム11に対して、ファイルFをオブジェクトストレージ210に格納することが要求された場合を前提とする。この場合、ファイルシステム11の主コントローラ(つまり、CPU101)は、ファイルFを、図2において矢印A1で示されるように、複数のデータブロック、例えば4つのデータブロック(以下、単にブロックと称する)B1,B2,B3及びB4に分割する。本実施形態においてブロックB1乃至B4のサイズは、固定長であるものとする。しかし後述のように、ブロックのサイズが可変長であっても構わない。
 次にCPU101は、例えばSHA-256のような周知のハッシュ関数HFを用いて、図2において矢印A2で示されるように、ブロックB1,B2,B3及び至B4それぞれのハッシュ値H1,H2,H3及びH4を算出する。ハッシュ関数HFがSHA-256である場合、ハッシュ値H1,H2,H3及びH4をそれぞれ構成するビットの数は256である。図2の例では、ハッシュ値H1,H2,H3及びH4は、それぞれ1234,3456,1234,及び5628である。つまり、ハッシュ値H1及びH3は同一である。
 ここで、ハッシュ値H1及びH3に対応するブロックB1及びB3の内容が異なっていると仮定する。この場合、ハッシュ値を構成するビットの数を本実施形態のように十分大きく取るならば、ブロックB1及びB3のハッシュ値が同一となるような、いわゆるハッシュ値の衝突の可能性を限りなくゼロに近づけることができる。つまり、ストレージ装置20の故障や当該ストレージ装置20内でのデータ化けが発生する可能性と比較して、ハッシュ値の衝突の可能性は無視できるほど小さくできる。そこでCPU101は、上述のようにハッシュ値H1及びH3が同一である場合、ブロックB1及びB3の内容は同一であり、データが重複していると判定する。
 CPU101は、重複判定の結果に基づき、ハッシュ値H1(=H3),H2及びH4をそれぞれ識別子(ID)として用いて、当該それぞれのIDに対応するブロックB1,B2及びB4を、図2において矢印A3(より詳細には、矢印A31,A32及びA34)に示されるように、オブジェクトストレージ210に格納する。このように、ブロックの格納にオブジェクトストレージが用いられる技術は、オブジェクトストレージ技術と呼ばれる。オブジェクトストレージ技術では、上述のID及びブロックは、それぞれ、オブジェクトID及びオブジェクトとして処理される。このオブジェクトは、ブロックに対応するオブジェクト、ブロックのオブジェクト、またはデータオブジェクトとも呼ばれる。本実施形態の特徴は、CPU101が、ブロックのハッシュ値を、当該ブロックのオブジェクトを指し示すオブジェクトIDとして用いる点にある。
 さて、上述のブロック格納においてCPU101は重複排除のために、同一ID(オブジェクトID)に対応するブロックを同一オブジェクトとして扱う。つまり、CPU101は、同一内容のブロックB1及びB3を重複してオブジェクトストレージ210に格納するのを抑止する。図2の例では、オブジェクトストレージ210へのブロックの格納が、ファイルFの先頭のブロックB1から開始されるものとする。この場合、CPU101は、ブロックB3をオブジェクトストレージ210に格納するのを抑止する。これにより、オブジェクトストレージ210内でのブロックB1及びB3の重複が排除される。
 次に、本実施形態で適用される、ファイルを構成するブロックを管理する仕組みについて説明する。本実施形態では、各ファイルは、Linux(登録商標)の仮想ファイルシステム(VFS)の形式に従い、iノードを用いて管理される。
 図3は、本実施形態において、ファイルFpを構成するm個のブロックBq(q=0,1,…,m-1)の管理に用いられるiノードiNpの構造の例を示す。説明の簡略化のために、ブロックBqそれぞれのサイズは一定であり、例えば4キロバイト(KB)であるものとする。iノードiNpも、1つのオブジェクト(つまり、iノードiNpのオブジェクト)として管理される。図3において、iノードiNpは、ブロック表310を含む。iノードiNpは更に、ファイルFpの属性を表す属性情報320を含む。ファイルFpの属性情報320は、ファイルFpのメタデータとも呼ばれる。ファイルFpの属性は、当該ファイルFpのサイズ、当該ファイルFpへのアクセスの権限、及びタイムスタンプを含む。タイムスタンプは、ファイルFpが最後にアクセスされた日時、ファイルFpが最後に変更された日時、及びファイルFpが作成された日時を含む。
 ブロック表310は、ブロックBqのロケーションを示す情報(以下、ブロックロケーション情報と称する)を記録するのに用いられる。従来技術では、ブロックロケーション情報としてブロックBqのアドレスが用いられる。これに対して本実施形態では、ブロックロケーション情報としてブロックBqのハッシュ値Hqが用いられる。
 このため、本実施形態においてブロックBqは、当該ブロックBqのハッシュ値HqをオブジェクトIDとして一意に決定される、オブジェクトストレージ210のロケーションに論理的に格納される。つまり本実施形態では、ブロックBqのハッシュ値Hqが、当該ブロックBqのオブジェクトOBqのオブジェクトIDとして用いられる。これにより、ブロックBqのオブジェクトOBqは、当該オブジェクトOBqのオブジェクトID(=当該ブロックBqのハッシュ値Hq)によって一意に決定されるロケーションに論理的に格納される。
 さて本実施形態では、ストレージ21の物理記憶領域の少なくとも一部(以下、物理ボリュームと称する)は、一定サイズの小領域を単位に、ホスト10によって認識される論理ボリュームにマッピングされる。そのためストレージコントローラ22は、論理ボリューム内の小領域の論理アドレス(例えば、論理ブロックアドレス)と物理ボリューム内の小領域の物理アドレスとの対応を、アドレス管理テーブルを用いて管理する。
 また本実施形態では、オブジェクトOBqのオブジェクトストレージ210におけるロケーションは、論理ボリューム内の小領域列にマッピングされる。上述のように、このロケーションは、オブジェクトOBqのオブジェクトIDによって指し示される。そのためオブジェクトコントローラ12は、オブジェクトOBqのオブジェクトIDと論理ボリューム内の小領域列の先頭小領域の論理ブロックアドレスLBAqとの対応を、オブジェクト管理テーブルを用いて管理する。オブジェクト管理テーブルは、例えばホスト10のローカルHDD103に格納されている。論理ブロックアドレスLBAqを構成するビットの数は64であるものとする。
 ファイルシステム11は、ブロックBqのオブジェクトOBqの読み出し(または書き込み)を、オブジェクトコントローラ12を介して次のように実行する。まずファイルシステム11は、ブロックBqのハッシュ値Hqを、当該ブロックBqのオブジェクトOBqを指し示すオブジェクトIDとして用いて、当該オブジェクトOBqの読み出し(または書き込み)をオブジェクトコントローラ12に要求する。この要求に応じて、オブジェクトコントローラ12は、ハッシュ値Hq(オブジェクトID)で一意に決定されるオブジェクトストレージ210のロケーションから(またはロケーションに)、オブジェクトOBqを論理的に読み出す(または書き込む)。
 但し、オブジェクトOBq(より詳細には、オブジェクトOBqの内容)は、物理的には、ストレージ装置20のストレージ21から読み出される(またはストレージ21に書き込まれる)必要がある。そこで、この物理的な読み出し(または書き込み)のために、オブジェクトコントローラ12は、ブロックBqのオブジェクトOBqのオブジェクトID(つまり、ブロックBqのハッシュ値Hq)に基づいてオブジェクト管理テーブルを参照する。これによりオブジェクトコントローラ12は、オブジェクトOBqのオブジェクトIDに対応付けられた論理ブロックアドレスLBAqを取得する。そしてオブジェクトコントローラ12は、取得された論理ブロックアドレスLBAqとオブジェクトOBqのサイズとに基づいて、当該オブジェクトOBqの内容の読み出し(または書き込み)を、ストレージ装置20のストレージコントローラ22に要求する。
 ストレージコントローラ22はオブジェクトコントローラ12からの要求に応じ、論理ブロックアドレスLBAqに基づいてアドレス管理テーブルを参照する。これによりストレージコントローラ22は、論理ブロックアドレスLBAqに対応付けられた物理アドレスを取得する。そしてストレージコントローラ22は、取得された物理アドレスとオブジェクトOBqのサイズとで示される、ストレージ21内のロケーションから(またはロケーションに)、当該オブジェクトOBqの内容を読み出す(または書き込む)。以降の説明では、簡略化のために、オブジェクトの物理的な読み出しまたは書き込みに関する記載は省略する。
 本実施形態において、iノードiNp(より詳細には、iノードiNpのオブジェクト)のサイズは可変長であるものとする。このため本実施形態では、ファイルFpを構成する全てのブロックBq(B0乃至Bm-1)のハッシュ値をiノードiNpのブロック表310に記録することが可能である。つまり図3では、例えばブロックB0,B1,…,Bm-2,Bm-1それぞれのハッシュ値H0,H1,…,Hm-2,Hm-1は、ブロック表310に記録される。この場合、ブロックB0,B1,…,Bm-2,Bm-1は、ブロック表310に記録されているハッシュ値H0,H1,…,Hm-2,Hm-1をIDとして決定されるロケーションに直接格納される。
 なお、iノードiNpのサイズが固定長であつても構わない。ここで、ファイルFpを構成するブロックBqの数をNp、ブロック表310に記録可能なハッシュ値の数をNqと表記するものとする。まず、Np≦Nqであるならば、CPU101は、全てのブロックBqを、ブロック表310を用いて直接管理することができる。これに対してNp>Nqであるならば、CPU101は、一部のブロックBqを、周知の間接ブロックを用いて管理すれば良い。ここで、ブロックBn及びBn+1のハッシュ値Hn及びHn+1が間接ブロックIBxを用いて管理されるものとする。この場合、ブロックBn及びBn+1のハッシュ値Hn及びHn+1は、間接ブロックIBxに記録され、ブロック表310には当該間接ブロックIBxのハッシュ値Hxが記録される。なお、従来技術では、ブロックBn及びBn+1のアドレスが間接ブロックIBxに記録され、当該間接ブロックIBxのアドレスがブロック表310に記録される。
 もし、間接ブロックIBxを用いても、iノードiNpのブロック表310で全てのブロックBqを管理できない場合、CPU101は、例えば2段間接ブロック、或いは3段間接ブロックを利用すれば良い。この場合、CPU101は、2段間接ブロック、或いは3段間接ブロックに、次段の間接ブロックのアドレスではなくて、次段の間接ブロックのハッシュ値を記録する。
 図4は、本実施形態で適用される、上述のブロックBqのオブジェクトOBqのデータ構造例を示す。オブジェクトOBqは、オブジェクトストレージ210内のデータ領域に格納される。本実施形態では、データ領域は、ファイルシステム11に割り当てられており、当該ファイルシステム11により使用される。ホスト10がファイルシステム11を含む複数のファイルシステムを備えている場合、データ領域が、当該複数のファイルシステムにより共有されても良い。
 なお、オブジェクトストレージ210内に複数のデータ領域、例えば、第1及び第2のデータ領域が用意されても良い。ここで、第1のファイルシステム(または、第1のファイルシステムの集合)が第1のデータ領域を利用し、第2のファイルシステム(または、第2のファイルシステムの集合)が第2のデータ領域を利用するものとする。また、第1のデータ領域に格納されるべき第1のオブジェクトのハッシュ値が、第2のデータ領域に既に格納されている第2のオブジェクトのハッシュ値と同一であるものとする。この場合、第1のファイルシステム(または各第1のファイルシステム)は、同一のハッシュ値であっても、第1のオブジェクトを第2のオブジェクトとは別のオブジェクトとして処理する。つまり、第2のオブジェクトが存在しても、第1のオブジェクトは重複排除の対象から外される。
 一方、例えば、図3に示されるiノードiNpは、iノードオブジェクトとも呼ばれ、オブジェクトストレージ210内のiノード領域に格納される。本実施形態では、iノード領域は、ファイルシステム11に割り当てられており、当該ファイルシステム11により使用される。ホスト10がファイルシステム11を含む複数のファイルシステムを備えている場合、当該複数のファイルシステムによりそれぞれ個別のiノード領域が使用されても良い。
 オブジェクトOBqは、メタデータ410と実データ420とから構成される。オブジェクトOBqの実データ420は、当該オブジェクトOBqの実体である。オブジェクトOBqが本実施形態のようにファイルFpのブロックBqに対応する場合、実データ420は、当該ブロックBqの内容に一致する。
 一方、オブジェクトOBqのメタデータ410は、当該オブジェクトOBqに関する管理情報を示し、重複カウントDCNTqを含む。重複カウントDCNTqは参照カウントとも呼ばれ、実データ420に一致するブロックBqの数を示す。つまり重複カウントDCNTqは、実データ420(ブロックBq)のハッシュ値Hqと同一のハッシュ値を持つブロックの数を示す。メタデータ410は更に、オブジェクトOBqに固有のオブジェクトID、実データ420のサイズを示す情報、及び実データ420の格納先を示すアドレス(例えば、論理ブロックアドレス)を含む。オブジェクトOBqのオブジェクトIDには、当該オブジェクトOBqに対応するブロックBqのハッシュ値Hqが用いられる。
 iノードは、一般に複数のタイプに分類される。iノードの代表的なタイプとして、ファイル(より詳細には、通常ファイル)、及びディレクトリが知られている。タイプがファイルのiノードは、ファイルを管理するのに用いられる。図3に示されるiノードiNpのタイプは、ファイルである。以下の説明では、タイプがファイルのiノードがファイルiノードと表記され、タイプがディレクトリのiノードがディレクトリiノードと表記されることもある。iノードは、当該iノードのタイプに無関係に、当該iノードに固有のiノード番号を持つ。iノード(つまり、iノードオブジェクト)のiノード番号は、当該iノードオブジェクトのオブジェクトIDとして用いられる。
 図5は、本実施形態で適用される、タイプがディレクトリのiノード500の例を示す。iノード500のサイズは、iノードiNpのそれと同様に可変長であるものとする。iノード500も、1つのオブジェクト(つまり、iノード500のオブジェクト)として管理される。このため、iノード500がiノードオブジェクト500と表記されることもある。iノード500は、例えばiノード番号iNdnを持ち、ディレクトリエントリ表(以下、エントリ表と称する)510及び属性情報520を含む。エントリ表510は、iノード500が指し示すディレクトリに含まれる全てのファイルの、iノード番号及びファイル名の組を記録するのに用いられる。ファイルが新規に作成される場合、当該ファイルが対応するiノードのiノード番号及び当該ファイルのファイル名の組が、ファイルシステム11によって、例えばiノード500のエントリ表510の空きエントリに追加される。
 なお、ファイルは通常のファイルではなく、ディレクトリであっても構わない。この場合、タイプがディレクトリのiノード番号とディレクトリ名とをエントリ表510に記録する。また、iノード(ディレクトリiノード)500のサイズが固定長であっても構わない。この場合、ファイルシステム11(CPU101)は、iノード500のエントリ表510に保持されるべきiノード番号及びファイル名の組の集合を別の複数のオブジェクトに分散して記録し、当該別の複数のオブジェクトのID(つまり、ディレクトリエントリのリスト)をiノード500に記録しても良い。
 ファイルシステム11は、当該ファイルシステム11の管理に特別のブロックを利用する。この特別のブロックは、スーパーブロックと呼ばれ、ファイルシステム11が生成された際に生成される。スーパーブロックは、ファイルシステム11の管理情報(以下、ファイルシステム管理情報と称する)を記録するのに用いられ、例えば、オブジェクトストレージ210内の、iノード領域に格納される。スーパーブロックも、オブジェクトとして管理される。このため、スーパーブロックには、特別のオブジェクトIDが割り当てられる。
 ファイルシステム管理情報は、iノードリスト情報を含む。iノードリスト情報は、オブジェクトストレージ210のiノード領域内に予め確保されるiノード毎の格納先に関する情報(以下、iノード管理情報と称する)を含む。iノード管理情報は、対応するiノードに固有のiノード番号を含む。ファイルシステム11は、ファイルシステム管理情報に含まれているiノード管理情報を参照することにより、目的のiノード番号をIDとして持つiノードを特定することができる。
 次に、本実施形態の動作について説明する。まず、ファイルシステム11のCPU101によって実行されるファイル書き込み処理について、ファイルFpの書き込みを例に、図6を参照して説明する。図6は、本実施形態で適用されるファイル書き込み処理の典型的な手順を示すフローチャートである。ここでは説明の簡略化のために、ファイルFpのサイズは、4KBの整数倍であるものとする。
 今、ホスト10内で実行されるアプリケーションプログラムからファイルシステム11に対して、ファイルFpの書き込みが要求されたものとする。するとファイルシステム11のCPU101は、ファイル書き込み処理を開始する。まずCPU101はファイルアクセスコントローラとして機能して、ファイルFpを、例えば4KBのサイズを有する複数のブロックBq(q=0,1,…)に分割する(ステップS1)。複数のブロックBqは、例えばメモリ102に格納される。ここでは、ブロックBqの数がmであるものとする。
 次にCPU101は、変数q及びQを、それぞれ0及びmに初期設定する(ステップS2)。変数qは、ファイルFpにおけるブロックBqの相対位置を示す。変数Qは、分割されたブロックBqの数を示す。次にCPU101は、変数q(=0)で示されるブロックBq(第1のブロック)をローカルHDD103から選択して、当該選択されたブロックBqをメモリ102のワーク領域に格納する。そしてCPU101はハッシュ値算出部として機能して、メモリ102のワーク領域に格納されたブロックBqの内容のハッシュ値Hqを算出する(ステップS3)。するとCPU101は、ステップS4に進む。
 ステップS4においてCPU101はファイル管理部として機能して、算出されたハッシュ値Hqを、ファイルFpのファイル名と対応付けられたiノード番号iNpnを持つiノードiNpのブロック表310に、以下に述べるように記録する。まずCPU101は、ファイルFpのファイル名に基づいて、iノード500aのエントリ表510aを参照する。これによりCPU101は、ファイルFpのファイル名と対応付けられたiノード番号iNpnを取得する。即ちCPU101は、ファイルFpのファイル名と対応付けられたiノード番号iNpnを、iノード500aのエントリ表510aから探索する。
 次にCPU101は、探索されたiノード番号iNpnをIDとして用いることにより、当該iノード番号iNpnを持つiノードiNpを、オブジェクトストレージ210のiノード領域から、オブジェクトコントローラ12を介して読み出す。CPU101は、読み出されたiノードiNpをメモリ102のワーク領域に格納する。そしてCPU101は、メモリ102のワーク領域に格納されたiノードiNpのブロック表310に、ブロックBqのハッシュ値Hqを記録する。
 次にCPU101は重複排除コントローラとして機能する。そしてCPU101は、ブロックBqのハッシュ値HqをオブジェクトIDとして用いて、当該オブジェクトIDと同一のオブジェクトIDを持つオブジェクトOBqの存在を次のように確認する(ステップS5)。即ちCPU101は、ブロックBqのハッシュ値HqをオブジェクトIDとして用いて、当該ハッシュ値Hqで一意に決まるオブジェクトストレージ210内のロケーションからのオブジェクトの読み出しを、オブジェクトコントローラ12を介して実行する。そしてCPU101は、上述のロケーションに有効なオブジェクトが格納されていることを条件に、目的のオブジェクトOBqが存在することを確認する。
 次にCPU101は、目的のオブジェクトOBqの確認の結果を判定する。即ちCPU101は、目的のオブジェクトOBqが上述のロケーションに存在するかを判定する(ステップS6)。ここでは、目的のオブジェクトOBqが上述のロケーションに存在しないものとする(ステップS6のNo)。つまり、ブロックBqのハッシュ値Hqで一意に決まるロケーション(第1のロケーション)に、当該ブロックBqと同一内容の有効なブロックが存在しないものとする。この場合、CPU101は、ファイルシステム11によって利用されるオブジェクトストレージ210内のデータ領域に格納されているブロックのいずれともブロックBqが重複しておらず、したがってブロックBqに関する重複排除は不要であると判断する。
 するとCPU101は再びファイルアクセスコントローラとして機能する。そしてCPU101は、ブロックBq(第1のブロック)を、ハッシュ値HqをオブジェクトIDとして持つオブジェクトOBqとして、上述のロケーションに書き込む(ステップS7)。この書き込みは、CPU101からオブジェクトコントローラ12にオブジェクトOBqの書き込みを要求することにより、当該オブジェクトコントローラ12によって実行される。
 オブジェクトOBqは、図4に示されるように、メタデータ410と実データ420とを含む。メタデータ410は、ハッシュ値Hqに一致するオブジェクトIDを含む。オブジェクトOBqのメタデータ410は更に、値が0(初期値)の重複カウントDCNTqを含む。実データ420は、ブロックBqの内容に一致する。CPU101は、ステップS7を実行すると重複排除コントローラとして機能して、ステップS8に進む。
 一方、上述の例とは異なって、目的のオブジェクトOBq(より詳細には、ブロックBqと同一内容のブロックを持つオブジェクト)が上述のロケーションに存在するものとする(ステップS6のYes)。つまり、ブロックBqのハッシュ値Hqで一意に決まるロケーションに、当該ブロックBqと同一内容の有効なブロック(第2のブロック)が既に存在しているものとする。この場合、CPU101は、ブロックBqが、上述のロケーションに存在する有効なブロックと重複しており、したがってブロックBqに関する重複排除が必要であると判断する。そこでCPU101は重複排除コントローラとして機能して、重複排除のためにステップS7をスキップし、しかる後にステップS8に進む。即ちCPU101は、ブロックBqがオブジェクトOBqとして上述のロケーションに書き込まれるのを、重複排除のために抑止して、ステップS8に進む。
 ステップS8においてCPU101は、オブジェクトOBqのメタデータ410中の重複カウントDCNTqを1増加する。これにより、目的のオブジェクトOBqが存在しないと判定された場合であるならば(ステップS6のNo)、重複カウントDCNTqは初期値0から1に更新される。重複カウントDCNTq=1は、オブジェクトOBqの実データ420に一致するブロックBqの数が1であることを示す。これに対し、目的のオブジェクトOBq存在すると判定された場合であるならば(ステップS6のYes)、重複カウントDCNTqは1以上の整数であることから、当該重複カウントDCNTqは2以上の値に更新される。
 次にCPU101はファイルアクセスコントローラとして機能して、変数qを1増加する(ステップS9)。そしてCPU101は、1増加された変数qが変数Q(=m)に等しいかを判定する(ステップS10)。もし、1増加された変数qが変数Qに等しくないならば(ステップS10のNo)、CPU101は、処理されるべきブロックBqが残っていると判断する。この場合、CPU101はステップS3に戻る。そしてCPU101は、ステップS3乃至S10、またはステップS3乃至S6及びS8乃至S10を、前述の場合と同様に実行する。なお、ステップS10において、1増加された変数qが、変数Q以上であるか、或いはQ-1を超えているかを判定しても構わない。
 さて、CPU101が上述の動作をQ(=m)回繰り返すと、1増加された変数qが変数Qに等しくなる(ステップS10のYes)。この場合、CPU101は、処理されるべきブロックBqは残っていないと判断する。すると、CPU101はステップS11に進む。
 ステップS11においてCPU101はファイル管理部として機能して、メモリ102のワーク領域に格納されているiノードiNpに、ファイルFpの新たな属性情報320を記録する。即ちCPU101は、iノードiNpの旧属性情報320を新たな属性情報320に更新する。
 次にCPU101は、新たなブロック表310及び属性情報320を含む新たなiノードiNpを、iノード番号iNpnをIDとして持つオブジェクトOiNpとして、オブジェクトストレージ210内のiノード領域に書き込む(ステップS12)。即ちCPU101は、旧iノードiNp(旧オブジェクトOiNp)を新たなiノードiNp(新たなオブジェクトOiNp)に更新する。これにより、ファイル書き込み処理は終了する。なお、ステップS12におけるオブジェクトOiNpの書き込みは、CPU101からオブジェクトコントローラ12にオブジェクトOiNpの書き込みを要求することにより、当該オブジェクトコントローラ12によって実行される。
 次に、ファイルシステム11のCPU101によって実行されるファイル読み出し処理について、ファイルFpの読み出しを例に、図7を参照して説明する。図7は、本実施形態で適用されるファイル読み出し処理の典型的な手順を示すフローチャートである。
 今、アプリケーションプログラムからファイルシステム11に対して、ファイルFpの読み出しが要求されたものとする。するとファイルシステム11のCPU101は、ファイル読み出し処理を開始する。まずCPU101はファイルアクセスコントローラとして機能して、ファイルFpに対応付けられたiノード番号iNpnをIDとして用いて、iノードiNpのオブジェクトOiNpをオブジェクトストレージ210から読み出す(ステップS21)。この読み出しは、CPU101からオブジェクトコントローラ12にオブジェクトOiNpの読み出しを要求することにより、当該オブジェクトコントローラ12によって実行される。
 読み出されたiノードiNpのオブジェクトOiNpは、メモリ102のワーク領域に格納される。iノード番号iNpnは、前述のファイル書き込み処理と同様に、CPU101が、ファイルFpのファイル名に基づいて、iノード500aのエントリ表510aを参照することにより取得される。
 次にCPU101は、読み出されたオブジェクトOiNpに含まれているiノードiNpのブロック表310から、未だ選択されていないブロックBqのハッシュ値Hqを選択する(ステップS22)。ここでは、ブロック表310のq(=0)番目のエントリから、ブロックBqのハッシュ値Hqが選択される。
 次にCPU101は、選択されたハッシュ値Hqを、オブジェクトIDとして用いて、ブロックBqのオブジェクトOBqをオブジェクトストレージ210から読み出す(ステップS23)。即ちCPU101は、選択されたハッシュ値HqをオブジェクトIDとして持つオブジェクトOBqを読み出す。読み出されたオブジェクトOBqは、メモリ102のワーク領域に格納される。
 次にCPU101は、ステップS21において読み出されたオブジェクトOiNpに含まれているiノードiNpのブロック表310に記録された全てのハッシュ値Hqが選択されたかを判定する(ステップS24)。もし、未だ選択されていないハッシュ値HqがiノードiNpのブロック表310に存在するならば(ステップS24のNo)、CPU101はステップS22に戻る。そしてCPU101は、ステップS22乃至S24を、前述の場合と同様に実行する。
 さて、iノードiNpのブロック表310に記録されている全てのハッシュ値Hqについて、ステップS22乃至S24が繰り返し実行されたものとする(ステップS24のYes)。この場合、CPU101はステップS25に進む。
 ステップS25においてCPU101はファイル管理部として機能して、メモリ102のワーク領域に格納されたオブジェクトOiNpに含まれているiノードiNpに、ファイルFpの新たな属性情報320を記録する。即ちCPU101は、iノードiNpの旧属性情報320を新たな属性情報320に更新する。
 次にCPU101は、新たなブロック表310及び属性情報320を含む新たなiノードiNpを、iノード番号iNpnをIDとして持つオブジェクトOiNpとして、オブジェクトストレージ210内のiノード領域にオブジェクトコントローラ12を介して書き込む(ステップS26)。これにより、旧iノードiNp(旧オブジェクトOiNp)は新たなiノードiNp(新たなオブジェクトOiNp)に更新され、ファイル読み出し処理は終了する。
 次に、ファイルシステム11のCPU101によって実行されるファイル削除処理について、ファイルFpの削除を例に、図8を参照して説明する。図8は、本実施形態で適用されるファイル削除処理の典型的な手順を示すフローチャートである。
 今、アプリケーションプログラムからファイルシステム11に対して、ファイルFpの削除が要求されたものとする。するとファイルシステム11のCPU101は、ファイル削除処理を開始する。まずCPU101はファイルアクセスコントローラとして機能して、ファイルFpに対応付けられたiノード番号iNpnをIDとして用いて、iノードiNpのオブジェクトOiNpをオブジェクトストレージ210から読み出す(ステップS31)。読み出されたiノードiNpのオブジェクトOiNpは、メモリ102のワーク領域に格納される。
 次にCPU101は、読み出されたオブジェクトOiNpに含まれているiノードiNpのブロック表310から、未だ選択されていないブロックBqのハッシュ値Hqを選択する(ステップS32)。ここでは、ブロック表310のq(=0)番目のエントリから、ブロックBqのハッシュ値Hqが選択される。
 次にCPU101は、選択されたハッシュ値Hqを、オブジェクトIDとして用いて、ブロックBqのオブジェクトOBqのメタデータ410をオブジェクトストレージ210から読み出す(ステップS33)。読み出されたオブジェクトOBqのメタデータ410は、メモリ102のワーク領域に格納される。
 次にCPU101はファイル削除コントローラとして機能して、ステップS33において読み出されたオブジェクトOBqに含まれているメタデータ410中の重複カウントDCNTqを1減らす(ステップS34)。そしてCPU101は、1減らされた重複カウントDCNTqが0に等しいかを判定する(ステップS35)。
 もし、1減らされた重複カウントDCNTqが0に等しいならば(ステップS35のYes)、CPU101は、オブジェクトOBqに含まれている実データ420に一致するブロックBqの数が、今回のファイルFpの削除でゼロになると判断する。この場合、CPU101は、オブジェクトストレージ210からオブジェクトOBqを削除する(ステップS36)。そしてCPU101は、ステップS37に進む。
 これに対し、1減らされた重複カウントDCNTqが0に等しくないならば(ステップS35のNo)、CPU101は、オブジェクトOBqに含まれている実データ420に一致するブロックBqの数は、今回のファイルFpの削除でもゼロにならないと判断する。この場合、CPU101はステップS36をスキップして、ステップS37に進む。
 ステップS37においてCPU101は、上述のファイル読み出し処理におけるステップS24と同様に、読み出されたオブジェクトOiNpに含まれているiノードiNpのブロック表310に記録された全てのハッシュ値Hqが選択されたかを判定する。もし、未だ選択されていないハッシュ値HqがiノードiNpのブロック表310に存在するならば(ステップS37のNo)、CPU101はステップS32に戻る。そしてCPU101は、ステップS32乃至S37、またはステップS32乃至35及びS37を、前述の場合と同様に実行する。
 さて、iノードiNpのブロック表310に記録されている全てのハッシュ値Hqについて、ステップS32乃至S37、またはステップS32乃至35及びS3が繰り返し実行されたものとする(ステップS37のYes)。この場合、CPU101は、オブジェクトストレージ210からオブジェクトOiNpを削除する(ステップS38)。なお、ステップS38におけるオブジェクトOiNpの削除は、CPU101からオブジェクトコントローラ12に当該オブジェクトOiNpの削除を要求することにより、当該オブジェクトコントローラ12によって実行される。
 次にCPU101は、iノード(ディレクトリiノード)500aのiノード番号iNdnをIDとして用いて、当該iノード(iノードオブジェクト)500aを読み出す(S39)。読み出されたiノード500aはメモリ102のワーク領域に格納される。
 次にCPU101は、ステップS39において読み出されたiノード500aのエントリ表510aから、iノード番号iNpnとファイルFpのファイル名との組を削除する(ステップS40)。CPU101は、iノード番号iNpnとファイルFpのファイル名との組が削除されたエントリ表510aを含むiノード500aを、当該iノード500aのiノード番号iNdnをIDとして持つオブジェクトとして、オブジェクトストレージ210内のiノード領域に書き込む(ステップS41)。これにより、ファイル削除処理は終了する。
 次に、本実施形態で適用される周知のファイル作成処理について簡単に説明する。今、ホスト10上で動作するアプリケーションからファイルシステム11に対して、ファイルFpを新規に作成することが要求されたものとする。この場合、ファイルシステム11のCPU101はファイル管理部として機能して、未使用のiノード番号を取得する。ここでは、iノード番号iNpnが取得されたものとする。
 次にCPU101は、メモリ102のワーク領域内にファイルiノードiNpを作成し、当該ファイルiノードiNpにファイルFpの属性情報を記録する。CPU101は、ファイルFpの属性情報が記録されたファイルiノードiNpを、iノード番号iNpnをIDとして用いて、オブジェクトストレージ210のiノード領域に書き込む。
 次にCPU101は、iノード(ディレクトリiノード)500aのiノード番号iNdnをIDとして用いて、当該iノード(iノードオブジェクト)500aを読み出す。CPU101は、読み出されたiノード500aのエントリ表510に、iノード番号iNpnとファイルFpのファイル名との組を追加する。CPU101は、iノード番号iNpnとファイルFpのファイル名との組が追加されたエントリ表510aを含むiノード500aを、iノード番号iNdnをIDとして持つオブジェクトとして、オブジェクトストレージ210内のiノード領域に書き込む。これにより、ファイル作成処理は終了する。
 上述のように、本実施形態においてファイルシステム11は、オブジェクトストレージ210に書き込まれるべきブロックの内容(つまり、データ)から算出された当該ブロックのハッシュ値をID(オブジェクトID)として用いて、当該ブロックのロケーションを決定(または特定)する。そこでファイルシステム11は、例えばブロックBqをオブジェクトストレージ210に書き込む必要がある場合に、当該ブロックBqのハッシュ値HqをIDとして用いて上述のロケーションにアクセスする。このアクセスだけで、ファイルシステム11は、ハッシュ値Hqと同一のIDを持つブロックが既にストレージ装置20に格納されているかを簡単に判定することができる。つまり、上述のロケーションに有効なブロックが格納されている場合、上述の判定のためにファイルシステム11が、当該有効なブロックのハッシュ値を算出して、当該算出されたハッシュ値をブロックBqのハッシュ値Hqと比較することは必ずしも必要ない。
 このように本実施形態によれば、ファイルシステム11側では、ブロックBqのロケーションを示す情報が、従来技術におけるアドレスから当該ブロックBqのハッシュ値Hqに変わるだけである。このため、重複排除のためのオーバヘッドを低減できる。またストレージ装置20側では、ストレージコントローラ22は、ブロックBqを、ファイルシステム11側からの要求に応じて、当該ブロックBqのハッシュ値Hqで一意に決まるロケーションに格納すれば良く、重複の判定は不要である。
 ところで前記実施形態では、ファイルFpを分割して得られるQ(=m)個のブロック(データブロック)Bqのサイズは固定長である。Q個のブロックBqそれぞれのサイズは、当該ブロックBqそれぞれのオブジェクトOBqのメタデータ410に含まれているサイズ情報により示される。このため、Q個のブロックBqそれぞれが可変長であっても構わない。また、オブジェクトストレージ210に既に格納されているブロックの内容と同一内容のブロックを含むように、ファイルFpが複数のブロックに分割されても構わない。
 ここで、複数のファイルがいずれも、内容が同一の連続する複数のブロック、例えば2つのブロックBa及びBbを含むものとする。このような場合に、ブロックBa及びBbのオブジェクトOBa及びOBbが、1つのオブジェクトOBabにまとめられても構わない。つまり、ブロックBa及びBbが1つのブロックBabにまとめられても構わない。
 このように、CPU101がファイル管理部として機能して、ブロックのサイズを可変長とすることで、重複排除率を向上することができる。また、連続する複数のブロックをまとめることで、アクセス性能を向上することができる。
 ここで、CPU101がファイルアクセスコントローラとして機能した結果、例えばステップS22またはS32で選択されたハッシュ値HqをIDとして、ブロックBqのオブジェクトOBqを読み出したものとする(ステップS23またはS33)。この場合に、CPU101が、読み出されたオブジェクトOBq中の実データ420のハッシュ値、つまりブロックBqのハッシュ値を算出し、算出されたハッシュ値を選択されたハッシュ値Hqと比較しても良い。CPU101は、この比較の結果に基づき、ブロックBqのオブジェクトOBqの読み出しにおけるエラーを検出する。つまりCPU101は、算出されたハッシュ値がハッシュ値Hqに等しくない場合、ブロックBqのオブジェクトOBqの読み出しでエラーが発生したと判断する。このような構成によれば、計算量を増やすことなく、エラーチェックを実現できる。
 また、ストレージ装置20のストレージ21が、前記実施形態と異なって、アクセス性能の異なる2種類のストレージ、例えば高速ストレージ及び低速ストレージから構成される階層化ストレージであるものとする。この場合、オブジェクトOBqそれぞれのメタデータ410が、当該オブジェクトOBqそれぞれへのアクセスの回数(アクセスカウント)を含んでも構わない。このような構成において、CPU101が階層化管理部として機能して、アクセスカウントが例えば閾値を超えるオブジェクトを高速ストレージに格納し、アクセスカウントが閾値以下のオブジェクトを低速ストレージ格納しても良い。これにより、各オブジェクトを、アクセスカウント(つまり、アクセス頻度)に応じて階層化することができる。
 ところで、オブジェクトストレージシステムでは、信頼性と性能の向上のために、オブジェクトOBqを複数の記憶媒体、例えばストレージ21を構成する複数のHDDのディスクに複製して記録することが一般的である。このようなオブジェクトOBqの複製を必要とするシステムでは、当該オブジェクトOBqのメタデータ410中の重複カウントDCNTqに基づいて、当該オブジェクトOBqの複製の数が決定されても良い。つまり、CPU101が複製コントローラとして機能して、重複カウントDCNTqの値が大きいオブジェクトOBqほど、当該オブジェクトOBqの複製を多く生成しても良い。このように、重複数の多いオブジェクトの複製数を増やすことでアクセス性能を向上できる。
 <変形例>
 次に前記実施形態の変形例について説明する。前記実施形態では、ストレージ装置20のストレージ21は、ファイルシステム11からはオブジェクトストレージ210として認識される。つまり前記実施形態は、ファイルシステム11がオブジェクトストレージを利用する構成を有している場合を前提としている。このためホスト10は、オブジェクトコントローラ12を必要とする。これに対して本変形例では、ストレージ装置20のストレージ21が、ファイルシステム11からブロックストレージとして認識される。つまり本変形例は、ファイルシステム11が、ブロックストレージを利用するものの、オブジェクトストレージを利用しない構成を有している場合を前提としている。
 このような構成において、ファイルシステム11のCPU101が、ブロックBqをブロックストレージに格納する必要があるものとする。この場合、CPU101はファイルアクセスコントローラとして機能して、ブロックBqのオブジェクトOBqのメタデータ410に相当するメタデータ(以下、ブロック管理メタデータと称する)と、ブロックBqの内容との組(以下、メタデータ・ブロック組と称する)を、ブロックストレージに格納すれば良い。ブロック管理メタデータは、オブジェクトOBqのメタデータ410と同様に、重複カウントDCNTqを含む。ブロック管理メタデータは、更に、ブロックBqのハッシュ値Hq(=オブジェクトOBqのオブジェクトID)、メタデータ・ブロック組全体のサイズSZqを示す情報を含む。
 CPU101は、ブロックBqの内容を含むメタデータ・ブロック組をブロックストレージに書き込むために、当該メタデータ・ブロック組の書き込み先を示すアドレス、例えば論理ブロックアドレスLBAqを次のように決定する。本実施形態では、ハッシュ値Hqを構成するビットの数は256である。一方、論理ブロックアドレスLBAqを構成するビットの数は64である。つまり、ハッシュ値Hqの長さは、論理ブロックアドレスLBAqの長さよりも長い。そこで、CPU101は、ハッシュ値Hqの予め定められた64ビットの部分、例えば先頭の64ビットを、論理ブロックアドレスLBAqとして決定する。
 CPU101は、決定された論理ブロックアドレスLBAqとメタデータ・ブロック組のサイズSZqとに基づいて、当該メタデータ・ブロック組の書き込みを、ストレージ装置20のストレージコントローラ22に要求する。これによりCPU101は、メタデータ・ブロック組を、論理ブロックアドレスLBAqから始まるサイズがSZqの領域(ブロックストレージ内の領域)に書くことができる。ここで、ストレージコントローラ22の動作は、前記実施形態と同様である。
 本変形例では、ハッシュ値Hqの一部が論理ブロックアドレスLBAqとして用いられる。このため論理ブロックアドレスLBAqが、ハッシュ値Hqとは異なるハッシュ値Hrに基づいて決定された論理ブロックアドレスLBArに一致する可能性がある。
 そこで、ハッシュ値Hrを持つメタデータ・ブロック組が、論理ブロックアドレスLBAq(=LBAr)から始まる領域(以下、LBAq領域と称する)に既に格納されている場合、CPU101は、ブロックBqのハッシュ値を算出し直す動作(いわゆる、再ハッシュ動作)を実行する。具体的には、CPU101は、ハッシュ値Hqに基づいて、当該ハッシュ値Hqのハッシュ値Hq’を算出し、このハッシュ値Hq’をブロックBqのハッシュ値として用いる。なお、CPU101がハッシュ値Hqに一定値(例えば1)を加算して、その加算結果を、ブロックBqのハッシュ値として用いても良い。またLBAq領域に既に格納されているメタデータ・ブロック組がハッシュ値Hqを持つ場合、CPU101は、重複排除が必要であると判定する。この場合、CPU101は、LBAq領域に既に格納されているメタデータ・ブロック組のブロック管理メタデータ中の重複カウントDCNTqを1増加する。
 本変形例によれば、ファイルシステム11が利用するストレージが、オブジェクトストレージではなくて、一般のブロックストレージである場合でも、重複排除に関し、オブジェクトストレージを利用する場合と同等の機能を実現できる。
 前記実施形態では、ホスト10がネットワーク30を介してストレージ装置20を利用する。しかし、ホスト10を含む複数のホストがネットワーク30に接続されていて、当該複数のホストがネットワーク30を介してストレージ装置20を利用しても良い。また、ストレージ装置20を含む複数のストレージ装置がネットワーク30に接続されていて、ホスト10、または複数のホストが、複数のストレージ装置を利用しても良い。また、ホスト10(または複数のホスト)が、ファイバチャネル(FC)、シリアルアタッチドSCSI(SAS)、或いはシリアルATアタッチメント(SATA)のようなネットワーク30以外の接続手段を介してストレージ装置20(複数のストレージ装置を)を利用しても良い。
 また前記実施形態では、ストレージ21及びストレージコントローラ22がホスト10から独立に設けられている。しかし、ストレージ21及びストレージコントローラ22がホスト10に内蔵されていても良い。
 また、前述の、ファイルアクセスコントローラ、ハッシュ値算出部、ファイル管理部、重複排除コントローラ、ファイル削除コントローラ、階層化管理部、及び複製コントローラのそれぞれ(機能要素)は、ファイルシステム11のCPU101が、ストレージ制御プログラムを実行することにより実現されるソフトウェアモジュールである。しかし、これらの機能要素の少なくとも1つがハードウェアモジュールによって実現されても構わない。
 以上説明した少なくとも1つの実施形態によれば、重複排除に伴うオーバヘッドとデータ転送量とを減らすことができる。
 本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。

Claims (12)

  1.  ストレージに格納されるべきファイルを構成する少なくとも1つのデータブロックのハッシュ値を算出するハッシュ値算出部と、
     前記少なくとも1つのデータブロックが第1のデータブロックを含み、且つ前記第1のデータブロックの第1のキャッシュ値が算出された場合、前記第1のハッシュ値を識別子として用いて、前記第1のハッシュ値に基づいて決定される前記ストレージの第1のロケーションに、前記第1のデータブロックを格納するアクセスコントローラと、
     前記第1のロケーションに有効な第2のデータブロックが既に格納されている場合、前記第1のデータブロックが前記第1のロケーションに格納されるのを抑止する重複排除コントローラと
     を具備するファイルシステム。
  2.  前記アクセスコントローラは、前記ファイルを、前記第1のデータブロックを含む複数のデータブロックに分割し、
     前記ハッシュ値算出部は、前記複数のデータブロックそれぞれのハッシュ値を算出し、
     前記重複排除コントローラは、前記複数のデータブロックそれぞれの算出されたハッシュ値に基づいて決定される前記ストレージのロケーションに、有効なデータブロックが格納されているかに基づいて、前記複数のデータブロックそれぞれの重複排除が必要であるかを判定し、
     前記アクセスコントローラは、前記第1のデータブロックの重複排除が必要でないと判定された場合、前記第1のロケーションに前記第1のデータブロックを格納する
     請求項1記載のファイルシステム。
  3.  前記ファイルの前記複数のデータブロックそれぞれが格納される前記ストレージのロケーションを、前記ファイルに対応付けられたiノードを用いて管理するファイル管理部を更に具備し、
     前記アクセスコントローラは、前記ファイルの読み出しが必要な場合、前記ファイルに対応付けられた前記iノードに基づいて前記ファイルの前記複数のデータブロックそれぞれが格納される前記ストレージのロケーションを特定することにより、前記ストレージから前記複数のデータブロックを読み出す
     請求項2記載のファイルシステム。
  4.  前記ファイルに対応付けられたiノードは、前記複数のデータブロックそれぞれの算出されたハッシュ値が記録されるブロック表を含む請求項3記載のファイルシステム。
  5.  前記ハッシュ値算出部は、前記第1のロケーションから前記第1のデータブロックが読み出された場合に、当該読み出された第1のデータブロックのハッシュ値を算出し、
     前記アクセスコントローラは、前記第1のデータブロックの前記重複排除が必要でないと判定された場合、前記第1のハッシュ値を含む前記第1のデータブロックのメタデータと前記第1のデータブロックとの組を前記第1のロケーションに格納し、前記第1のロケーションから前記第1のデータブロックが読み出され、且つ当該読み出された第1のデータブロックのハッシュ値が算出された場合、前記算出されたハッシュ値を前記第1のデータブロックの前記メタデータに含まれている前記第1のハッシュ値と比較することにより、前記第1のデータブロックの読み出しにおけるエラーを検出する
     請求項3記載のファイルシステム。
  6.  前記アクセスコントローラは、前記第2のデータブロックを前記第1のロケーションに格納する必要がある場合、前記第2のデータブロックのハッシュ値と同一のハッシュ値を持つデータブロックの数を示すのに用いられる重複カウントを含む前記第2のデータブロックのメタデータと前記第2のデータブロックとの組を前記第1のロケーションに格納し、
     前記重複排除コントローラは、前記第1のデータブロックの前記重複排除が必要であると判定された場合、前記第1のロケーションに格納されている前記第2のデータブロックの前記メタデータ中の前記重複カウントを1増加する
     請求項2記載のファイルシステム。
  7.  前記ストレージに格納されたデータブロックそれぞれの複製を生成する複製コントローラを更に具備し、
     前記複製コントローラは、前記第2のデータブロックの複製の数を、前記第2のデータブロックの前記メタデータ中の前記重複カウントに基づいて決定する請求項6記載のファイルシステム。
  8.  前記アクセスコントローラは、前記第1のデータブロックの前記重複排除が必要でないと判定された場合、前記第1のデータブロックのハッシュ値と同一のハッシュ値を持つデータブロックの数を示すのに用いられる重複カウントを含む前記第1のデータブロックのメタデータと前記第1のデータブロックとの組を前記第1のロケーションに格納する請求項2記載のファイルシステム。
  9.  前記ストレージはオブジェクトストレージであり、
     前記オブジェクトストレージの前記第1のロケーションは、前記第1のデータブロックのメタデータと前記第1のデータブロックとの組を含む第1のオブジェクトのオブジェクト識別子に基づいて決定され、
     前記アクセスコントローラは、前記第1のデータブロックの前記第1のハッシュ値を、前記第1のオブジェクトのオブジェクト識別子として用いて、前記第1のオブジェクトの前記オブジェクト識別子に基づいて決定される前記オブジェクトストレージの前記第1のロケーションに、前記第1のオブジェクトを格納する
     請求項1記載のファイルシステム。
  10.  前記ストレージはブロックストレージであり、
     前記ブロックストレージの前記第1のロケーションを指定する第1のアドレスは、前記第1のデータブロックの前記第1のハッシュ値の所定の一部を用いて表され、
     前記アクセスコントローラは、前記第1のデータブロックのメタデータと前記第1のデータブロックとの組を、前記第1のアドレスで指定される前記ブロックストレージの前記第1のロケーションに格納する
     請求項1記載のファイルシステム。
  11.  ファイルシステムに適用されるデータ重複排除方法であって、
     ストレージに格納されるべきファイルを構成する少なくとも1つのデータブロックのハッシュ値を算出することと、
     前記少なくとも1つのデータブロックが第1のデータブロックを含み、且つ前記第1のデータブロックの第1のキャッシュ値が算出された場合、前記第1のハッシュ値を識別子として用いて、前記第1のハッシュ値に基づいて決定される前記ストレージの第1のロケーションに、前記第1のデータブロックを格納することと、
     前記第1のロケーションに有効な第2のデータブロックが既に格納されている場合、前記第1のデータブロックが前記第1のロケーションに格納されるのを抑止することと
     を具備するデータ重複排除方法。
  12.  コンピュータに、
     ストレージに格納されるべきファイルを構成する少なくとも1つのデータブロックのハッシュ値を算出することと、
     前記少なくとも1つのデータブロックが第1のデータブロックを含み、且つ前記第1のデータブロックの第1のキャッシュ値が算出された場合、前記第1のハッシュ値を識別子として用いて、前記第1のハッシュ値に基づいて決定される前記ストレージの第1のロケーションに、前記第1のデータブロックを格納することと、
     前記第1のロケーションに有効な第2のデータブロックが既に格納されている場合、前記第1のデータブロックが前記第1のロケーションに格納されるのを抑止することと
     を実行させるためのファイルシステムのためのプログラム。
PCT/JP2014/074045 2014-09-11 2014-09-11 ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラム WO2016038714A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2014/074045 WO2016038714A1 (ja) 2014-09-11 2014-09-11 ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラム
CN201480081653.5A CN106663052A (zh) 2014-09-11 2014-09-11 文件***、数据重复排除方法以及用于文件***的程序
JP2016514208A JPWO2016038714A1 (ja) 2014-09-11 2014-09-11 ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラム
US15/405,953 US20170147598A1 (en) 2014-09-11 2017-01-13 File system, data deduplication method and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/074045 WO2016038714A1 (ja) 2014-09-11 2014-09-11 ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/405,953 Continuation US20170147598A1 (en) 2014-09-11 2017-01-13 File system, data deduplication method and storage medium

Publications (1)

Publication Number Publication Date
WO2016038714A1 true WO2016038714A1 (ja) 2016-03-17

Family

ID=55458502

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/074045 WO2016038714A1 (ja) 2014-09-11 2014-09-11 ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラム

Country Status (4)

Country Link
US (1) US20170147598A1 (ja)
JP (1) JPWO2016038714A1 (ja)
CN (1) CN106663052A (ja)
WO (1) WO2016038714A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018020593A1 (ja) * 2016-07-27 2018-02-01 株式会社日立製作所 計算機システムおよびデータ格納方法
JP2022533942A (ja) * 2019-05-17 2022-07-27 ヒタチ ヴァンタラ エルエルシー オブジェクトベースファイルシステムを管理するための装置、システム及び方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540323B2 (en) * 2017-05-30 2020-01-21 Western Digital Technologies, Inc. Managing I/O operations in a storage network
US20210056085A1 (en) * 2019-08-19 2021-02-25 Gsi Technology Inc. Deduplication of data via associative similarity search

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009543198A (ja) * 2006-06-29 2009-12-03 ネットアップ,インコーポレイテッド ブロック指紋を読み出し、ブロック指紋を使用してデータ重複を解消するシステム、及び方法
JP2013182476A (ja) * 2012-03-02 2013-09-12 Nec Corp ストレージシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5020673B2 (ja) * 2007-03-27 2012-09-05 株式会社日立製作所 重複したファイルの記憶を防ぐコンピュータシステム
US7870409B2 (en) * 2007-09-26 2011-01-11 Hitachi, Ltd. Power efficient data storage with data de-duplication
US9665304B2 (en) * 2011-09-07 2017-05-30 Nec Corporation Storage system with fast snapshot tree search
US9164688B2 (en) * 2012-07-03 2015-10-20 International Business Machines Corporation Sub-block partitioning for hash-based deduplication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009543198A (ja) * 2006-06-29 2009-12-03 ネットアップ,インコーポレイテッド ブロック指紋を読み出し、ブロック指紋を使用してデータ重複を解消するシステム、及び方法
JP2013182476A (ja) * 2012-03-02 2013-09-12 Nec Corp ストレージシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"OPEN Enterprise magazine", DATA BACKUP, vol. 5, no. 10, 1 October 2007 (2007-10-01), pages 32 - 39 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018020593A1 (ja) * 2016-07-27 2018-02-01 株式会社日立製作所 計算機システムおよびデータ格納方法
JPWO2018020593A1 (ja) * 2016-07-27 2018-12-06 株式会社日立製作所 計算機システムおよびデータ格納方法
JP2022533942A (ja) * 2019-05-17 2022-07-27 ヒタチ ヴァンタラ エルエルシー オブジェクトベースファイルシステムを管理するための装置、システム及び方法
JP7288085B2 (ja) 2019-05-17 2023-06-06 ヒタチ ヴァンタラ エルエルシー オブジェクトベースファイルシステムを管理するための装置、システム及び方法

Also Published As

Publication number Publication date
CN106663052A (zh) 2017-05-10
JPWO2016038714A1 (ja) 2017-04-27
US20170147598A1 (en) 2017-05-25

Similar Documents

Publication Publication Date Title
US7975115B2 (en) Method and apparatus for separating snapshot preserved and write data
JP6240071B2 (ja) ストレージシステムにおけるマッピングテーブルを効果的に管理するコンピューターシステムおよびその方法
JP6200886B2 (ja) フラッシュストレージアレイにおける論理セクタマッピング
JP5707540B1 (ja) 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法
US8478729B2 (en) System and method for controlling the storage of redundant electronic files to increase storage reliability and space efficiency
US11816093B2 (en) Storage tier verification checks
US9678672B2 (en) Selective erasure of expired files or extents in deduplicating virutal media for efficient file reclamation
US9933948B2 (en) Tiered storage system, computer using tiered storage device, and method of correcting count of accesses to file
US9075754B1 (en) Managing cache backup and restore
US9021222B1 (en) Managing incremental cache backup and restore
JP6677740B2 (ja) ストレージシステム
KR101369813B1 (ko) 광 디스크 저장 시스템에 저장된 미디어에의 액세스, 압축 및 추적
US20180307440A1 (en) Storage control apparatus and storage control method
US20170147598A1 (en) File system, data deduplication method and storage medium
WO2016013075A1 (ja) ストレージ、計算機およびその制御方法
JP2020086477A (ja) 大規模ストレージシステム及び大規模ストレージシステムにおけるデータ配置方法
JP6572775B2 (ja) 制御装置、ストレージ装置、データ管理プログラム及びデータ管理方法
JP6419662B2 (ja) ストレージシステム及びデータ重複検出方法
WO2019026221A1 (ja) ストレージシステム及びストレージ制御方法
US11803527B2 (en) Techniques for efficient data deduplication
JP5691234B2 (ja) ディスクアレイ装置、及び、ミラーリング制御方法
WO2017212515A1 (ja) ストレージシステム、計算機、およびストレージ制御方法
JP2022091062A (ja) 情報処理装置、重複除去方法及び重複除去プログラム
JP2016197357A (ja) データアーカイブシステム及びデータ記録方法

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2016514208

Country of ref document: JP

Kind code of ref document: A

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

Ref document number: 14901544

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14901544

Country of ref document: EP

Kind code of ref document: A1