WO2010070794A1 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
WO2010070794A1
WO2010070794A1 PCT/JP2009/005336 JP2009005336W WO2010070794A1 WO 2010070794 A1 WO2010070794 A1 WO 2010070794A1 JP 2009005336 W JP2009005336 W JP 2009005336W WO 2010070794 A1 WO2010070794 A1 WO 2010070794A1
Authority
WO
WIPO (PCT)
Prior art keywords
hash value
hash
acquired
data
stored
Prior art date
Application number
PCT/JP2009/005336
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 US13/129,757 priority Critical patent/US8396837B2/en
Priority to EP09833104.4A priority patent/EP2362317A4/en
Publication of WO2010070794A1 publication Critical patent/WO2010070794A1/ja

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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables

Definitions

  • the present invention relates to an information processing apparatus that stores data in a storage device.
  • the information processing apparatus described in Patent Document 1 acquires a hash value by inputting the data to a hash function when storing the data in a storage device. Then, when the same hash value as the acquired hash value is not stored in the storage device, the information processing device includes data, the hash value, and reference number information indicating the number of times the data is referred to. The data is stored in the storage device in association with each other.
  • the information processing device uses the reference count information stored in the storage device in association with the hash value as the reference count information. Is changed so that the number of times represented by 1 increases by one. According to this information processing apparatus, it is possible to avoid the same data from being stored in the storage device repeatedly, so that the amount of data stored in the storage device can be reduced.
  • the hash function may output the same hash value (hash value collision occurs) even if different data is input. Therefore, the information processing apparatus has a problem that when different hash values occur, two different data are erroneously recognized as the same data, and one of the data may be lost.
  • the information processing apparatus is configured to detect whether or not the data is the same by directly comparing at least a part of two pieces of data having the same hash value, the information processing apparatus There is a problem that the processing load of the system becomes excessive.
  • the object of the present invention is the above-described problem that “when hash value collision occurs, it is impossible to detect whether the data is the same without excessive processing load”.
  • An object of the present invention is to provide an information processing apparatus that can be solved.
  • an information processing apparatus provides: Write request receiving means for receiving a write request including data; When the write request is accepted, the first hash value is acquired by inputting the data included in the write request to the first hash function and the data is input to the second hash function.
  • Hash value acquisition processing means for performing processing for acquiring the second hash value by: When the first hash value that is the same as the acquired first hash value and the second hash value that is the same as the acquired second hash value are not stored in the storage device in association with each other, Reference count information representing data included in the write request, the acquired first hash value, the acquired second hash value, and a predetermined initial value as the number of times the data is referenced.
  • the reference number information represents the reference number information stored in association with the first hash value and the second hash value.
  • An information processing system A storage device, Write request receiving means for receiving a write request including data; When the write request is accepted, the first hash value is acquired by inputting the data included in the write request to the first hash function and the data is input to the second hash function.
  • Hash value acquisition processing means for performing processing for acquiring the second hash value by:
  • the number of references representing a predetermined initial value as the number of times the data included in the write request, the acquired first hash value, the acquired second hash value, and the data is referred to Information is newly stored in the storage device in association with each other, while the first hash value that is the same as the acquired first hash value and the second value that is the same as the acquired second hash value.
  • Is stored in the storage device in association with the first hash value, and the reference number information stored in association with the first hash value and the second hash value is represented by the reference number information.
  • an information processing method includes: Accept write requests containing data, When the write request is accepted, the first hash value is acquired by inputting the data included in the write request to the first hash function and the data is input to the second hash function.
  • the second hash value To obtain the second hash value by When the first hash value that is the same as the acquired first hash value and the second hash value that is the same as the acquired second hash value are not stored in the storage device in association with each other, Reference count information representing data included in the write request, the acquired first hash value, the acquired second hash value, and a predetermined initial value as the number of times the data is referenced.
  • the reference number information represents the reference number information stored in association with the first hash value and the second hash value. Increases by 1 It is a method to change.
  • the program which is the other form of this invention is:
  • Write request receiving means for receiving a write request including data
  • the first hash value is acquired by inputting the data included in the write request to the first hash function and the data is input to the second hash function.
  • Hash value acquisition processing means for performing processing for acquiring the second hash value by: When the first hash value that is the same as the acquired first hash value and the second hash value that is the same as the acquired second hash value are not stored in the storage device in association with each other, Reference count information representing data included in the write request, the acquired first hash value, the acquired second hash value, and a predetermined initial value as the number of times the data is referenced.
  • the reference number information represents the reference number information stored in association with the first hash value and the second hash value.
  • the present invention is configured as described above, and can detect whether or not the data is the same while preventing an excessive processing load when a hash value collision occurs.
  • FIG. 3 It is a figure showing the schematic structure of the information processing system which concerns on embodiment of this invention. It is a block diagram showing the outline of the function of the information processing system shown in FIG.
  • This is file system information stored in the information processing apparatus shown in FIG. 3 is a file meta information table stored in the information processing apparatus illustrated in FIG. 1.
  • 3 is a node relationship table stored in the information processing apparatus illustrated in FIG. 1.
  • 3 is a segment hash management table stored in the information processing apparatus illustrated in FIG. 1.
  • This is cell area information stored in the information processing apparatus shown in FIG. 2 is a hash function table stored in the information processing apparatus illustrated in FIG. 1.
  • 2 is a segment management table stored in the information processing apparatus illustrated in FIG. 1.
  • FIG. 2 is a flowchart showing a program executed by the information processing apparatus shown in FIG. 1 to manage a file system. It is the flowchart which showed the program which the information processing apparatus shown in FIG. 1 performs in order to produce
  • FIG. 3 is a flowchart showing a program executed by the information processing apparatus shown in FIG. 1 to write a file in response to a file write request. It is explanatory drawing which showed notionally the segment which comprises a file, and the hash value acquired for every segment. It is the flowchart which showed the program which the information processing apparatus shown in FIG. 1 performs in order to memorize
  • 2 is a flowchart showing a program executed by the information processing apparatus shown in FIG. 1 to read a file in response to a file read request. It is a block diagram showing the outline of the function of the information processing system which concerns on 2nd Embodiment of this invention.
  • the information processing system 1 includes an information processing device 100 and an external storage device (storage device) 110.
  • the information processing apparatus 100 includes a central processing unit (CPU; Central Processing Unit) (not shown) and an internal storage device (memory and hard disk drive (HDD)).
  • the information processing apparatus 100 is configured to realize functions to be described later when a CPU executes a program (for example, an operating system) stored in an internal storage device.
  • a program for example, an operating system
  • the external storage device 110 includes a storage medium for storing (holding) information.
  • the external storage device 110 stores information in a storage medium in response to a write instruction from the information processing device 100. Further, the external storage device 110 transmits information stored in the storage medium to the information processing device 100 in response to a read instruction from the information processing device 100.
  • FIG. 2 is a block diagram showing the functions of the information processing system 1 configured as described above. This function is realized by the CPU of the information processing apparatus 100 executing a program or the like stored in the internal storage device.
  • the functions of the information processing apparatus 100 are a file system control unit 11, a write request reception unit (write request reception unit) 12, a hash value acquisition processing unit (hash value acquisition processing unit) 13, and a storage processing unit ( Storage processing unit) 14, hash function change processing unit (hash function change processing unit, hash function change processing step) 15, cell region disappearance processing unit (cell region disappearance processing unit) 16, and cell region generation processing unit (cell An area generation processing unit) 17 and a read request receiving unit (read request receiving unit) 18.
  • the file system control unit 11 handles data stored in the external storage device 110 as a file by a program (for example, an application program) executed by the information processing apparatus 100 (for example, reads a file or writes a file) ) Provide functionality for.
  • a program for example, an application program
  • the information processing apparatus 100 for example, reads a file or writes a file
  • the file system control unit 11 stores the file system information D30 shown in FIG. 3 in the internal storage device.
  • the file system information D30 includes file management information D31, hash function information D32, and cell area information D33.
  • the file management information D31 includes file meta information.
  • the meta information includes information indicating the position (path) of each file in the file system, the access control right, the creation date, the update date, and the like.
  • the file management information D31 includes information for associating files with segments.
  • a segment is a data block obtained by dividing a series of data (data constituting a file) handled as a file into predetermined data sizes.
  • the file management information D31 includes the file meta information table shown in FIG. 4, the node relation table shown in FIG. 5, the file configuration segment table shown in FIG. 6, and the segment hash management table shown in FIG. ,including.
  • the file meta information table includes a plurality of pieces of information including a node (i-node) number, a head segment number, a directory flag, a file name, and a creation date.
  • the file meta information table may include other information such as update date and access right.
  • the node number is information for identifying the file in the file system for managing the file.
  • the file system has a hierarchical structure (in this example, a tree structure). That is, the file system has a file and a directory, and the directory is a special file for storing the file and / or the directory.
  • the directory da when the file fa is stored in the directory da, it is expressed as “da / fa”. In this case, the directory da is called “parent” and the file fa is called “child”.
  • the file meta information table includes information having node numbers “0”, “1”, “50”, and “300”. Note that the file identified by the node number “0” is a file (that is, a root file) located at the highest level in the file system (that is, the parent of all files).
  • the directory flag is information indicating whether the file is a directory as a special file. When the directory flag is “1”, it indicates that the file is a directory, and when it is “0”, it indicates that the file is a normal file (that is, represents data).
  • the head segment number is a segment number for identifying the segment located at the head in the file.
  • the segment number is information for identifying a segment.
  • the directory does not have a segment. Therefore, the head segment number for the directory is set to “0”. If the directory has data, a segment number other than “0” may be set.
  • the file name is information indicating the name of the file (or directory) identified by the node number.
  • a program for example, an application program executed by the information processing apparatus 100 accesses the file system (that is, reads a file or writes a file)
  • the file to be accessed is specified by the file name.
  • the node relationship table includes a plurality of pieces of information including a node number and a parent node number for identifying a file storing a file identified by the node number.
  • the node relationship table is information representing the hierarchical structure (parent-child relationship) of files. Since there is no file storing the root file, the parent node number associated with the node number of the root file is set to “0”.
  • a file identified by the node number “1” exists in the hierarchy immediately below the root file.
  • the hierarchical structure is represented by the node number, it can be represented as “0/1”, and when the hierarchical structure is represented by the file name, it can be represented as “/ home”.
  • the file configuration segment table includes a node number, a segment number, and a segment number for identifying a segment following the segment identified by the segment number in the file identified by the node number. And a plurality of pieces of information consisting of the following segment number.
  • the file identified by the node number “300” is composed of six segments. That is, this file includes data in which segments identified by segment numbers “101” to “106” are arranged in this order.
  • the segment hash management table includes a plurality of pieces of information including a segment number, a first hash value, a second hash value, and a third hash value.
  • Each of the first hash value to the third hash value is a value calculated using a hash function described later.
  • the hash function information D32 includes information representing each of a plurality of hash functions.
  • Each hash function is a function that outputs a hash value having a data size smaller than that data by converting the input data.
  • Each hash function is configured so that input data and output hash value correspond to n to 1 (n is an integer including 1).
  • the hash function HA (“hashA”) includes data input to a basic hash function (first basic hash function) that is a basic hash function, and predetermined first additional data. , The hash value output from the basic hash function is output.
  • the hash function HB (“hashB”) includes data input to the basic hash function (second basic hash function), second additional data that is predetermined and different from the first additional data, By inputting data consisting of, the hash value output from the basic hash function is output.
  • first basic hash function and the second basic hash function may be different basic hash functions. In this case, it is possible to reduce the possibility of collision of hash values with respect to certain data in both the first hash value and the second hash value.
  • the hash function HC (“hashC”) is different from the hash function HB only in that the third additional data different from both the first additional data and the second additional data is used instead of the second additional data. is doing.
  • the hash function HD (“hashD”) uses the fourth additional data, which is different from any of the first additional data, the second additional data, and the third additional data, instead of the third additional data. Is different from the hash function HC only in FIG.
  • the information processing apparatus 100 configures a plurality of hash functions by changing the additional data. According to this, a plurality of hash functions can be easily prepared.
  • hash functions HA to HD may be configured based on different algorithms.
  • the cell area information D33 includes area specifying information D81, hash function specifying information D82, and a segment management table D83 associated with each cell area.
  • the cell region information D33 includes information for specifying three cell regions including the first cell region to the third cell region.
  • the area specifying information D81 is information for specifying the external storage device 110 associated with each cell area, and information for specifying a storage area (storage location (address) range) in the external storage device 110. And including.
  • the hash function specifying information D82 includes information for specifying a hash function associated with each cell area.
  • the hash function specifying information D82 includes the hash function table shown in FIG.
  • the hash function table includes a plurality of pieces of information including information for specifying a hash function, a non-use flag, and information for specifying a cell area that uses the hash function.
  • the non-use flag is information indicating whether or not use of the hash function is prohibited. A value set in the non-use flag indicates that the use of the hash function is prohibited. On the other hand, the fact that no value is set in the non-use flag indicates that the use of the hash function is permitted.
  • the information processing apparatus 100 stores the segment management table D83 in the top area of each cell area.
  • the segment management table D83 is created when a cell area is newly set.
  • the segment management table D83 associated with the first cell area includes information including a first hash value, a second hash value, reference count information, and an address. Includes multiple.
  • Each piece of information in the segment management table D83 is associated with a segment number via the first hash value, the second hash value, the segment hash management table, and the hash function table.
  • the first hash value is a hash value output by inputting the segment to the first hash function associated with the cell area in the hash function table.
  • the second hash value is a hash value output by inputting a segment to the second hash function associated with the cell area in the hash function table.
  • the reference count information is information indicating the number of times the segment (data) is referred to.
  • the address is information representing a storage position where the segment is stored.
  • the segment management table D83 associated with the second cell area includes a plurality of pieces of information including a second hash value, a third hash value, reference count information, and an address.
  • the third hash value is a hash value output by inputting the segment to the third hash function associated with the cell area in the hash function table.
  • the segment management table D83 associated with the third cell area includes a plurality of pieces of information including a third hash value, a first hash value, reference count information, and an address.
  • the file system control unit 11 receives a file write request or a file read request from a program (for example, an application program) executed by the information processing apparatus 100.
  • the file write request includes data constituting the file and the path of the file.
  • the file read request includes a file name (file name including a path) in the file system.
  • the file system control unit 11 When the file system control unit 11 receives the file write request, the file system control unit 11 generates a segment by dividing the data included in the file included in the received file write request. The file system control unit 11 outputs a write request including the generated segment to the write request receiving unit 12.
  • the file system control unit 11 when the file system control unit 11 receives the file read request, the file system control unit 11 is specified by the file name based on the file name included in the received file read request and the tables shown in FIGS. A hash value (in this example, a first hash value to a third hash value) associated with a segment constituting the file is acquired. Then, the file system control unit 11 outputs a read request including the acquired hash value to the read request receiving unit 18.
  • a hash value in this example, a first hash value to a third hash value
  • the write request receiving unit 12 receives the write request output by the file system control unit 11.
  • the hash value acquisition processing unit 13 is set to be used for any cell area by referring to the hash function table when the write request is received by the write request receiving unit 12. A process of acquiring a hash value by inputting data included in the write request to each function is performed.
  • the hash function HA (“hashA”) and the hash function HB (“hashB”) are used for the first cell area (“cell1”), and the second cell area ( Using the hash function HB (“hashB”) and the hash function HC (“hashC”) for “cell2”), and the hash function HC (“hashC”) for the third cell region (“cell3”) and Use the hash function HA (“hashA”).
  • the hash value acquisition processing unit 13 acquires the first hash value by inputting the data included in the write request to the hash function HA (first hash function), and the hash function HB (first hash function).
  • the second hash value is acquired by inputting the data into the second hash function
  • the third hash value is acquired by inputting the data into the hash function HC (third hash function).
  • the hash value acquisition processing unit 13 performs processing for acquiring three hash values by inputting data included in the write request to each of three different hash functions HA to HC.
  • the storage processing unit 14 stores data included in the received write request in each of the plurality of cell regions set in the cell region information D33.
  • the storage processing unit 14 has the same first hash value as the first hash value acquired by the hash value acquisition processing unit 13 and the second hash value acquired by the hash value acquisition processing unit 13. It is determined whether or not the same second hash value is stored in the first cell area in association with each other.
  • the storage unit 14 acquires the segment included in the write request, the first hash value acquired by the hash value acquisition processing unit 13, and the hash value acquisition processing unit 13.
  • the second hash value is associated with the reference count information indicating a predetermined initial value (in this example, “1”) as the number of times the segment is referred to, and is newly added to the first cell area.
  • the number of times the reference number information represents the reference number information stored in association with the first hash value and the second hash value. Is changed to increase by 1.
  • the storage processing unit 14 includes a second hash value that is the same as the second hash value acquired by the hash value acquisition processing unit 13, and a third hash value acquired by the hash value acquisition processing unit 13. It is determined whether or not the same third hash value is associated with and stored in the second cell area.
  • the storage processing unit 14 determines that the segment is not stored, the storage processing unit 14 associates the segment, the second hash value, the third hash value, and the reference count information indicating the initial value with the second number.
  • the number of times the reference number information represents the reference number information stored in association with the second hash value and the third hash value when it is newly stored in the cell area and is determined to be stored. Is changed to increase by 1.
  • the storage processing unit 14 includes a third hash value that is the same as the third hash value acquired by the hash value acquisition processing unit 13, and a first hash value acquired by the hash value acquisition processing unit 13. It is determined whether or not the same first hash value is stored in the third cell area in association with each other.
  • the storage processing unit 14 determines that the segment is not stored, the storage processing unit 14 associates the segment, the third hash value, the first hash value, and the reference number information indicating the initial value with the third number.
  • the number of times the reference number information represents the reference number information stored in association with the third hash value and the first hash value when it is newly stored in the cell area and is determined to be stored. Is changed to increase by 1.
  • the storage processing unit 14 when determining whether or not the same hash value as the acquired hash value is stored, sequentially extracts the stored hash values one by one, and acquires the acquired hash value and the acquired hash value. The above determination is performed by comparing the hash value.
  • the storage processing unit 14 may use a method such as a binary search method when determining whether or not the same hash value as the acquired hash value is stored.
  • the hash function change processing unit 15 For each cell area, the hash function change processing unit 15 has the same hash as one of hash values based on the hash function used for the cell area among the hash values acquired by the hash value acquisition processing unit 13. When the value and a hash value different from the other are associated and stored in the cell area, the hash function used by the hash value acquisition processing unit 13 to acquire the other hash value is changed to another Process to change to hash function.
  • the hash function change processing unit 15 includes the same first hash value as the first hash value acquired by the hash value acquisition processing unit 13 and the second hash value acquired by the hash value acquisition processing unit 13.
  • the hash function used by the hash value acquisition processing unit 13 to acquire the first hash value thereafter Is changed from the first hash function to a fourth hash function different from the first hash function.
  • the hash function change processing unit 15 is a data capable of associating input data and output hash value with n to 1 (n is an integer including 1).
  • a hash function having a wider range than the first hash function may be selected as the fourth hash function. According to this, by changing the hash function, it is possible to further reduce the possibility of the hash value collision occurring thereafter.
  • the hash function change processing unit 15 sets a predetermined value representing true in the non-use flag associated with the hash function HA set as the first hash function in the hash function table. .
  • the cell area extinction processing unit 16 For each cell area, the cell area extinction processing unit 16 has the same hash as one of hash values based on the hash function used for the cell area among the hash values acquired by the hash value acquisition processing unit 13. When a value and a hash value different from the other are associated and stored in the cell area, the storage processing unit 14 performs a process of deleting the cell area from the cell area in which the segment is stored.
  • the cell region disappearance processing unit 16 includes the first hash value that is the same as the first hash value acquired by the hash value acquisition processing unit 13 and the second hash value acquired by the hash value acquisition processing unit 13.
  • the storage processing unit 14 performs a process of deleting the first cell area from the cell area in which the segment is stored. Do.
  • the cell area generation processing unit 17 can newly store data in the external storage device 110 when the number of cell areas in the external storage device 110 is smaller than a preset number (three in this example).
  • the storage processing unit 14 performs a process of increasing the number of cell regions in which the segment is stored.
  • the hash function change processing unit 15 determines that no value is set in the hash function table as a hash function to be used for the cell region.
  • a hash function (for example, a fourth hash function) associated with the use flag is set.
  • the read request receiving unit 18 receives a read request output by the file system control unit 11.
  • the read request receiving unit 18 reads a segment stored in each cell area based on the hash value included in the received read request and the segment management table shown in FIG. Then, the read request receiving unit 18 outputs the read segment to the file system control unit 11.
  • the file system control unit 11 generates a file from the segment output by the read request receiving unit 18, and outputs the generated file to the program that has output the file read request.
  • a cell area is formed in the storage area of the external storage device 110.
  • the information processing system 1 increases (generates) a cell area when the number of cell areas is insufficient, and decreases (disappears) the cell area when a hash value collision occurs. That is, when the amount of data that can be newly stored in the external storage device 110 is larger than a predetermined threshold amount, and there is a spare hash function for which no value is set in the unused flag, the external storage device
  • the storage area 110 is managed autonomously using the cell area.
  • the information processing apparatus 100 accepts a file system creation request based on an instruction from the user (step 1105).
  • the file system creation request includes information indicating the maximum number of active (used) cell areas and information indicating the number of hash functions used for one cell area. In this example, it is assumed that the maximum number of cell areas to be used is three and the number of hash functions to be used for one cell area is two.
  • the information processing apparatus 100 initializes the file system (step 1110). Specifically, the information processing system 1 erases data stored in the storage area of the external storage device 110, and sets the file system information D30 stored in the internal storage device to a preset initial value. .
  • step 1115 the information processing apparatus 100 proceeds to step 1205 in FIG. 12 in order to perform processing for setting (generating) one cell region.
  • the information processing apparatus 100 determines whether there is a cell region that has already been set.
  • the information processing apparatus 100 determines “No” and proceeds to step 1210. Then, the information processing apparatus 100 refers to the hash function table illustrated in FIG. 9 and uses two hash functions associated with the unused flag for which no value is set (here, the hash function HA and the hash function). HB) Select. Furthermore, the information processing apparatus 100 specifies a storage area to be allocated as a cell area (step 1210).
  • the information processing apparatus 100 creates (stores) a segment management table in the top area of the identified storage area (step 1215).
  • the information processing apparatus 100 proceeds to step 1120 and determines whether or not the number of set cell areas is equal to or less than the maximum number (three in this example). In this state, the information processing apparatus 100 determines “Yes”, proceeds to step 1125, and determines whether there are sufficient resources for generating a cell region.
  • the information processing apparatus 100 has a hash function (value that is not currently used because the amount of data that can be newly stored in the external storage device 110 is larger than a predetermined threshold amount, and the value is not set in the non-use flag. If there is a hash function associated with a non-use flag for which is not set, it is determined that the resources are sufficient.
  • step 1125 the information processing apparatus 100 proceeds to step 1130, and proceeds to step 1205 in FIG. 12 in order to perform processing for generating one cell area as in step 1115.
  • the information processing apparatus 100 determines whether or not a cell area that has already been set exists. In this state, since one cell area is set, the information processing apparatus 100 determines “Yes” and proceeds to step 1220.
  • the information processing apparatus 100 selects one hash function (here, the hash function HC) associated with the non-use flag for which no value is set while referring to the hash function table shown in FIG. Furthermore, the information processing apparatus 100 specifies a storage area to be allocated as a cell area.
  • the hash function HC the hash function associated with the non-use flag for which no value is set while referring to the hash function table shown in FIG.
  • the information processing apparatus 100 specifies a storage area to be allocated as a cell area.
  • the information processing apparatus 100 determines whether there is a discarded cell area (step 1225).
  • the discarded cell area is a cell area that has been extinguished due to the occurrence of a hash value collision.
  • the information processing apparatus 100 determines “No” and proceeds to step 1230 to select an arbitrary cell area from the already set cell areas. Then, a process of generating a new cell area based on the selected cell area is performed.
  • the information processing apparatus 100 includes data (segments) and segments stored in a cell area that has already been set (here, the first cell area).
  • the management table is stored in the newly generated cell area (second cell area).
  • the information processing apparatus 100 changes one of the hash functions used for the first cell area (here, the hash function HB) by changing the information of the hash function table shown in FIG. Inherit to cell area.
  • the information processing apparatus 100 uses the hash function (hash function HC) selected in step 1220 for the second cell area by changing the information in the hash function table shown in FIG. Set as a hash function.
  • step 1235 the information processing apparatus 100 outputs the hash output by inputting each segment stored in the second cell area to the hash function (hash function HC) selected in step 1220.
  • the corresponding hash value (third hash value) in the segment management table stored in the second cell area is replaced by the value.
  • step 1135 determines whether or not a hash value collision has occurred. Details of the hash value collision will be described later. In this state, since hash value collision does not occur, the information processing apparatus 100 determines “No” and returns to step 1120.
  • the third cell region is generated in the same manner as the second cell region.
  • the first cell region to the third cell region are formed in the external storage device 110 as conceptually shown in FIG.
  • a part of the hash function used for one of the extracted cell areas is the other cell area. It is the same as a part of the hash function used for the cell area, and the other part of the hash function used for one cell area is different from the other part of the hash function used for the other cell area. Thus, a hash function is assigned to each cell area.
  • the information processing apparatus 100 when the information processing apparatus 100 stores the data included in the write request in the storage device, the information processing apparatus 100 stores at least two hashes of the data and the acquired hash value in each of the plurality of cell areas. The values are stored in association with each other. At this time, the information processing apparatus 100 determines that one hash value stored in association with the data in the first cell area which is an arbitrary one of the plurality of cell areas is other than the first cell area. Another hash value stored in association with the data in the second cell region and stored in association with the data in the first cell region is the first cell region and the Data and a hash value are stored in each cell area so as to be stored in association with the data in a third cell area other than the second cell area.
  • the hash function HA and the hash function HB are set as the hash functions used for the first cell area, and the hash function HB is used as the hash function used for the second cell area.
  • the hash function HC and the hash function HA are set as the hash function used for the third cell area. That is, information is set in the hash function table as shown in FIG.
  • step 1135 the information processing apparatus 100 determines “Yes”, proceeds to step 1140, and obtains the hash function that is the basis for acquiring the hash value related to the generated collision.
  • the cell area to be used is eliminated.
  • the information processing apparatus 100 sets information indicating that the cell area is discarded in the information for specifying the cell area in the cell area information D33. Thereby, the information processing apparatus 100 handles this cell area as a discarded cell area thereafter.
  • the information processing apparatus 100 sets a value representing true to the unused flag associated with the hash function that is the basis for acquiring the hash value related to the collision that occurred in the hash function table illustrated in FIG. 9. Set. Thereby, the information processing apparatus 100 does not use this hash function thereafter.
  • the information processing apparatus 100 determines “Yes” and proceeds to step 1240 to select and select an arbitrary cell area from the discarded cell areas. A process for generating a new cell area is performed based on the cell area.
  • the information processing apparatus 100 stores the data (segment) and the segment management table stored in the discarded cell area in the newly generated cell area.
  • the information processing apparatus 100 changes one of the hash function table information shown in FIG. 9 to succeed one of the hash functions used for the discarded cell area to the newly generated cell area.
  • the information processing apparatus 100 sets the hash function selected in step 1220 as a hash function to be used for the newly generated cell area by changing the information in the hash function table shown in FIG. To do.
  • step 1235 the information processing apparatus 100 newly uses the hash value output by inputting each segment stored in the newly generated cell area to the hash function selected in step 1220.
  • the corresponding hash value in the segment management table stored in the generated cell area is replaced.
  • the processing load of the information processing apparatus 100 for generating the cell region can be reduced.
  • the information processing apparatus 100 is preferably configured to perform data synchronization with an active normal cell after hash value replacement.
  • the information processing apparatus 100 calculates a hash value based on the same hash function for each of a plurality of cell areas, the hash value calculated for one cell area is calculated for other cell areas. It may be configured to set.
  • the first hash value is obtained for the first cell area using the hash function HD, and the hash function HD is used for the third cell area. Assume that the first hash value is acquired.
  • the information processing apparatus 100 acquires the first hash value for the first half of the segments stored in the first cell area, and uses the acquired first hash value as the first Set for the cell area. Then, the information processing apparatus 100 sets the acquired first hash value for the third cell region.
  • the information processing apparatus 100 acquires the first hash value for the last half of the segments stored in the third cell area, and uses the acquired first hash value as the third Set for the cell area. Then, the information processing apparatus 100 sets the acquired first hash value for the first cell region.
  • the information processing apparatus 100 acquires the first hash value for all the segments stored in the first cell area, and the segment is stored in the third cell area. Compared to the case where the first hash value is obtained for all of the above, the processing load of the information processing apparatus 100 for obtaining the hash value can be reduced.
  • the information processing apparatus 100 receives a file write request (step 1605, write request receiving step). Then, the information processing apparatus 100 generates a segment by dividing data constituting the file included in the file write request. Next, the information processing apparatus 100 refers to the hash function table illustrated in FIG. 9 and inputs the generated segment to each of the hash functions that are set to be used for any cell region. Thus, a process for acquiring a hash value is performed (step 1610, hash value acquisition process step).
  • the information processing apparatus 100 divides a file into six segments S1 to S6, and uses each of three functions of a hash function HA, a hash function HB, and a hash function HC.
  • Hash values first hash value to third hash value
  • HA1 to HC6 are acquired.
  • the information processing apparatus 100 acquires a node number and a head segment number corresponding to the path based on the path included in the file write request, the file meta information table, and the node relation table. Furthermore, the information processing apparatus 100 acquires all the segment numbers constituting the file based on the acquired node number and head segment number and the file configuration segment table. Then, the information processing apparatus 100 acquires the hash value of the segment (segment already stored in the external storage device 110) specified by the segment number based on the acquired segment number and the segment hash management table. .
  • the information processing apparatus 100 uses, for each cell area, two hash values based on the hash function used for the cell area among the acquired hash values in the segment management table shown in FIG.
  • the reference count information associated with the same two hash values is changed so that the reference count represented by the reference count information is decreased by 1 (step 1615).
  • the information processing apparatus 100 deletes the segment associated with the reference count information representing the reference count of 1 or less from each cell area in the segment management table shown in FIG. 10 (step 1620).
  • the information processing apparatus 100 executes the storage process independently for each cell area (step 1625, storage process step).
  • the storage process for the first cell area will be described, but the storage process for other cell areas is performed in the same manner.
  • the information processing apparatus 100 proceeds to step 1805 to execute the storage process for the first cell area.
  • the information processing apparatus 100 uses the hash values (that is, the first hash value and the second hash value) based on the two hash functions set for the cell area among the hash values acquired in Step 1610. It is determined whether or not two hash values identical to (hash value) are stored in association with each other.
  • the information processing apparatus 100 uses the first hash value that is the same as the first hash value among the hash values acquired at Step 1610 and the first hash value acquired at Step 1610. It is determined whether or not the second hash value identical to the second hash value is stored in the first cell area in association with each other.
  • the first hash value that is the same as the first hash value acquired in step 1610 and the second hash value that is the same as the second hash value acquired in step 1610 correspond to each other.
  • the description will be continued assuming the case of being attached and stored in the first cell region.
  • the information processing apparatus 100 determines “Yes” and proceeds to step 1810 to display the reference count information associated with the two hash values in the segment management table shown in FIG. Is changed so that the number of times represented by 1 increases by one.
  • first hash value different from the first hash value acquired in step 1610 is stored in the first cell area, and is different from the second hash value acquired in step 1610. The description will be continued assuming that only the second hash value is stored in the first cell area.
  • the information processing apparatus 100 determines “No” in step 1805 and proceeds to step 1815. Then, the information processing apparatus 100 stores only the first hash value different from the first hash value acquired in step 1610 in the first cell area and acquires the first hash value acquired in step 1610. It is determined whether only a second hash value different from the hash value of 2 is stored in the first cell area.
  • the information processing apparatus 100 determines “Yes” and proceeds to step 1820, the segment generated in step 1610, the first hash value acquired in step 1610, and The second hash value acquired in step 1610 and the reference count information indicating the initial value are associated with each other and newly stored in the first cell area. Specifically, the information processing apparatus 100 adds information including an address indicating a location where a segment is stored, two hash values, and reference count information to the segment management table illustrated in FIG.
  • first hash value that is the same as the first hash value acquired in step 1610 is associated with the second hash value that is different from the second hash value acquired in step 1610. The description will be continued on the assumption that the data is stored in the first cell area.
  • the information processing apparatus 100 determines “No” in Step 1815, proceeds to Step 1825, and detects that a collision of the first hash value has occurred. As a result, when the information processing apparatus 100 proceeds to step 1135 in FIG. 11, the information processing apparatus 100 determines “Yes” and proceeds to step 1140 to eliminate the first cell region, and to obtain the hash function HA and A value indicating true is set in the associated non-use flag.
  • the information processing apparatus 100 accepts a file read request (step 1905). Then, the information processing apparatus 100 acquires a node number and a head segment number corresponding to the path based on the path included in the file read request, the file meta information table, and the node relation table.
  • the information processing apparatus 100 acquires all the segment numbers constituting the file based on the acquired node number and head segment number and the file configuration segment table. Then, the information processing apparatus 100 acquires the hash value of the segment (segment already stored in the external storage device 110) specified by the segment number based on the acquired segment number and the segment hash management table. .
  • the information processing apparatus 100 acquires the segment stored at the address associated with the same hash value as two of the acquired hash values in the segment management table shown in FIG. 1910).
  • the information processing apparatus 100 generates a file based on the acquired segment and the file configuration segment table, and outputs the generated file to the program that has output the file read request (step 1915).
  • the other is By comparing, it is possible to detect whether the data (segments) are the same. In other words, when hash value collisions occur, it is possible to detect whether or not the data is the same while preventing an excessive processing load. Accordingly, it is possible to avoid the same data from being duplicated and stored in the external storage device 110 (storage device) while avoiding erroneous recognition of two different data as the same data. As a result, the amount of data stored in the storage device can be reduced.
  • the information processing apparatus 100 includes a first hash value that is the same as the acquired first hash value, a second hash value that is different from the acquired second hash value, and Are stored in the storage device (first cell area) in association with each other, the hash function used to acquire the first hash value is referred to as the first hash function (hash function HA).
  • the first hash function (hash function HA)
  • a process of changing to a fourth hash function (hash function HD) different from the first hash function is performed.
  • the data on which the hash value collision occurs is stored in an empty area according to a predetermined rule, and the data is read according to the rule when the data is read. As described above, even when the information processing apparatus is configured, it is possible to prevent the time required for reading the data from becoming excessive.
  • each of the plurality of cell regions in the external storage device 110 includes: The data is stored.
  • the hash value is stored in common in a plurality of cell areas and has no collision. Two or more values can be secured.
  • the information processing apparatus is configured to update the hash value to a hash value based on another hash function when a hash value collision occurs, the hash value update process Even when a write request is accepted, the above-described effects can be obtained.
  • the information processing apparatus 100 can newly store data in the external storage device 110 when the number of cell areas in the external storage device 110 (storage device) is smaller than a preset number.
  • the amount of data is larger than the threshold amount, a process for increasing the number of cell regions for storing data is performed.
  • the number of cell regions can be increased to a preset number.
  • the data included in the write request is a segment as a data block obtained by dividing the data constituting the file for each predetermined data size. According to this, when only a part of the file is duplicated, the duplicated part can be prevented from being duplicated and stored in the external storage device 110 (storage device). As a result, the amount of data stored in the external storage device 110 can be further reduced.
  • the information processing apparatus 100A according to the second embodiment includes a write request receiving unit 12A, a hash value acquisition processing unit 13A, and a storage processing unit 14A.
  • the write request receiving unit 12A receives a write request including data.
  • the hash value acquisition processing unit 13A acquires the first hash value by inputting the data included in the write request to the first hash function.
  • the second hash value is obtained by inputting the data to the second hash function.
  • the storage processing unit 14A has the same first hash value as the first hash value acquired by the hash value acquisition processing unit 13A and the same second hash value acquired by the hash value acquisition processing unit 13A.
  • the hash value of 2 is not stored in association with the storage device 110A, the data included in the write request, the acquired first hash value, the acquired second hash value, Reference number information representing a predetermined initial value as the number of times data is referred to is associated with and newly stored in the storage device 110A.
  • the storage processing unit 14A is the same as the first hash value acquired by the hash value acquisition processing unit 13A and the second hash value acquired by the hash value acquisition processing unit 13A.
  • the reference count information stored in association with the first hash value and the second hash value is The number of times represented by the reference number information is changed so as to increase by 1.
  • the second embodiment as in the first embodiment, even if one of the first hash value and the second hash value collides, the other is compared. Whether or not the data is the same can be detected. In other words, when hash value collisions occur, it is possible to detect whether or not the data is the same while preventing an excessive processing load. Accordingly, it is possible to prevent the same data from being stored in the storage device repeatedly while avoiding erroneous recognition of two different data as the same data. As a result, the amount of data stored in the storage device can be reduced.
  • the information processing apparatus When the first hash value that is the same as the acquired first hash value and the second hash value that is different from the acquired second hash value are stored in the storage device in association with each other
  • a process for changing the hash function used by the hash value acquisition processing means to acquire the first hash value from the first hash function to a fourth hash function different from the first hash function It is preferable to include hash function change processing means for performing the above. That is, the hash function change processing means can replace a hash function in which a hash value collision has occurred with another hash function.
  • the data on which the hash value collision occurs is stored in an empty area according to a predetermined rule, and the data is read according to the rule when the data is read. As described above, even when the information processing apparatus is configured, it is possible to prevent the time required for reading the data from becoming excessive.
  • the first hash function is obtained by inputting data composed of the input data and predetermined first additional data into a first basic hash function that is a basic hash function.
  • the second hash function includes: a second basic hash function that is a basic hash function; the input data; and second additional data that is predetermined and different from the first additional data. It is preferable that the hash value output from the second basic hash function is output by inputting the following data.
  • the first basic hash function and the second basic hash function are the same basic hash function. According to this, a plurality of hash functions can be easily prepared by preparing only one basic hash function.
  • the first basic hash function and the second basic hash function are different basic hash functions. According to this, it is possible to reduce the possibility of collision of hash values with respect to certain data in both the first hash value and the second hash value.
  • the storage processing means is preferably configured to store the data in each of a plurality of cell regions in the storage device when storing the data included in the write request in the storage device. is there.
  • the hash value acquisition processing unit performs a process of acquiring a hash value by inputting data included in the write request to each of at least three different hash functions.
  • the storage processing unit stores at least two hash values of the data and the acquired hash value in each of the plurality of cell regions. Are stored in association with each other in the first cell area which is an arbitrary one of the plurality of cell areas. Another hash value stored in association with the data in the second cell area other than the area and stored in association with the data in the first cell area is the first cell. It is preferable that the third cell area other than the area and the second cell area is stored in association with the data.
  • the information processing apparatus When the number of cell regions in the storage device is smaller than a preset number, and the amount of data that can be newly stored in the storage device is larger than a predetermined threshold amount, the storage processing means stores the data. It is preferable to include a cell area generation processing unit that performs a process of increasing the number of cell areas to be stored.
  • the number of cell regions can be increased to a preset number.
  • the information processing apparatus The first hash value that is the same as the first hash value that is one of the acquired hash values, and the second hash value that is the other one of the acquired hash values are different. If the second hash value is stored in the first cell area in the storage device in association with the second hash value, the storage processing unit erases the first cell area from the cell area in which the data is stored. It is preferable to provide a cell region disappearance processing means for performing the processing.
  • the data included in the write request is preferably a segment as a data block obtained by dividing a series of data handled as a file for each predetermined data size.
  • the duplicated part when only a part of the file is duplicated, the duplicated part can be prevented from being duplicated and stored in the storage device. As a result, the amount of data stored in the storage device can be further reduced.
  • An information processing system A storage device, Write request receiving means for receiving a write request including data; When the write request is accepted, the first hash value is acquired by inputting the data included in the write request to the first hash function and the data is input to the second hash function.
  • Hash value acquisition processing means for performing processing for acquiring the second hash value by:
  • the number of references representing a predetermined initial value as the number of times the data included in the write request, the acquired first hash value, the acquired second hash value, and the data is referred to Information is newly stored in the storage device in association with each other, while the first hash value that is the same as the acquired first hash value and the second value that is the same as the acquired second hash value.
  • Is stored in the storage device in association with the first hash value, and the reference number information stored in association with the first hash value and the second hash value is represented by the reference number information.
  • the information processing system When the first hash value that is the same as the acquired first hash value and the second hash value that is different from the acquired second hash value are stored in the storage device in association with each other
  • a process for changing the hash function used by the hash value acquisition processing means to acquire the first hash value from the first hash function to a fourth hash function different from the first hash function It is preferable to include hash function change processing means for performing the above.
  • an information processing method includes: Accept write requests containing data, When the write request is accepted, the first hash value is acquired by inputting the data included in the write request to the first hash function and the data is input to the second hash function.
  • the second hash value To obtain the second hash value by When the first hash value that is the same as the acquired first hash value and the second hash value that is the same as the acquired second hash value are not stored in the storage device in association with each other, Reference count information representing data included in the write request, the acquired first hash value, the acquired second hash value, and a predetermined initial value as the number of times the data is referenced.
  • the reference number information represents the reference number information stored in association with the first hash value and the second hash value. Increases by 1 It is a method to change.
  • the information processing method is When the first hash value that is the same as the acquired first hash value and the second hash value that is different from the acquired second hash value are stored in the storage device in association with each other
  • the hash function used for acquiring the first hash value is changed from the first hash function to a fourth hash function different from the first hash function. Is preferred.
  • the program which is the other form of this invention is:
  • Write request receiving means for receiving a write request including data
  • the first hash value is acquired by inputting the data included in the write request to the first hash function and the data is input to the second hash function.
  • Hash value acquisition processing means for performing processing for acquiring the second hash value by: When the first hash value that is the same as the acquired first hash value and the second hash value that is the same as the acquired second hash value are not stored in the storage device in association with each other, Reference count information representing data included in the write request, the acquired first hash value, the acquired second hash value, and a predetermined initial value as the number of times the data is referenced.
  • the reference number information represents the reference number information stored in association with the first hash value and the second hash value.
  • the program is In addition to the information processing apparatus, When the first hash value that is the same as the acquired first hash value and the second hash value that is different from the acquired second hash value are stored in the storage device in association with each other In the following, a process for changing the hash function used by the hash value acquisition processing means to acquire the first hash value from the first hash function to a fourth hash function different from the first hash function. It is preferable that the program is for realizing a hash function change processing means for performing the above.
  • the information processing system 1 includes the information processing device 100 and the external storage device 110 as two devices independent of each other, but includes the information processing device 100 and the external storage device 110.
  • One device may be provided.
  • information stored in the internal storage device of the information processing apparatus 100 may be stored in the external storage device 110.
  • the information processing system 1 includes one external storage device 110, but may include a plurality of external storage devices 110.
  • the maximum number of cell regions to be used is three, but may be one or two, or may be four or more.
  • the number of hash functions used for one cell area may be three or more.
  • the program is stored in the storage device, but may be stored in a computer-readable recording medium.
  • the recording medium is a portable medium such as a flexible disk, an optical disk, a magneto-optical disk, and a semiconductor memory.
  • the present invention can be applied to a storage system having a plurality of storage devices for storing data.

Landscapes

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

Abstract

 この装置100Aは、データを含む書込要求が受け付けられた場合、第1のハッシュ関数に基づいて第1のハッシュ値を取得するとともに第2のハッシュ関数に基づいて第2のハッシュ値を取得する。装置は、取得された第1のハッシュ値及び第2のハッシュ値が対応付けて記憶装置110Aに記憶されていない場合、データと第1のハッシュ値と第2のハッシュ値と参照回数情報とを対応付けて記憶装置に記憶させる。一方、装置は、取得された第1のハッシュ値及び第2のハッシュ値が対応付けて記憶装置に記憶されている場合、第1のハッシュ値及び第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。

Description

情報処理装置
 本発明は、データを記憶装置に記憶させる情報処理装置に関する。
 データを含む書込要求を受け付けるとともに、受け付けた書込要求に含まれるデータを記憶装置に記憶させる情報処理装置が知られている。
 この種の情報処理装置の一つとして特許文献1に記載の情報処理装置は、データを記憶装置に記憶させる際、そのデータをハッシュ関数に入力することにより、ハッシュ値を取得する。そして、情報処理装置は、取得されたハッシュ値と同一のハッシュ値が記憶装置に記憶されていない場合、データと、ハッシュ値と、当該データが参照されている回数を表す参照回数情報と、を対応付けて記憶装置に記憶させる。
 一方、取得されたハッシュ値と同一のハッシュ値が記憶装置に記憶されている場合、情報処理装置は、そのハッシュ値と対応付けて記憶装置に記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
 この情報処理装置によれば、同一のデータが重複して記憶装置に記憶されることを回避することができるので、記憶装置に記憶されるデータ量を減少させることができる。
特開2007-234026号公報
 ところで、ハッシュ関数は、異なるデータが入力されても、同一のハッシュ値を出力する(ハッシュ値の衝突が発生する)場合がある。従って、上記情報処理装置においては、ハッシュ値の衝突が発生した場合に、2つの異なるデータが誤って同一のデータとして認識され、一方のデータを消失してしまう場合が生じるという問題があった。
 また、仮に、ハッシュ値が同一である2つのデータの少なくとも一部を直接比較することによりデータが同一であるか否かを検知するように上記情報処理装置を構成した場合には、情報処理装置の処理負荷が過大となってしまうという問題があった。
 このため、本発明の目的は、上述した課題である「ハッシュ値の衝突が発生した場合に、処理負荷が過大となることなくデータが同一であるか否かを検知することができないこと」を解決することが可能な情報処理装置を提供することにある。
 かかる目的を達成するため本発明の一形態である情報処理装置は、
 データを含む書込要求を受け付ける書込要求受付手段と、
 上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
 を備える。
 また、本発明の他の形態である情報処理システムは、
 記憶装置を備えるとともに、
 データを含む書込要求を受け付ける書込要求受付手段と、
 上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて上記記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
 を備える。
 また、本発明の他の形態である情報処理方法は、
 データを含む書込要求を受け付け、
 上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行い、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する方法である。
 また、本発明の他の形態であるプログラムは、
 情報処理装置に、
 データを含む書込要求を受け付ける書込要求受付手段と、
 上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
 を実現させるためのプログラムである。
 本発明は、以上のように構成されることにより、ハッシュ値の衝突が発生した場合に、処理負荷が過大となることを防止しながらデータが同一であるか否かを検知することができる。
本発明の実施形態に係る情報処理システムの概略構成を表す図である。 図1に示した情報処理システムの機能の概略を表すブロック図である。 図1に示した情報処理装置が記憶しているファイルシステム情報である。 図1に示した情報処理装置が記憶しているファイルメタ情報テーブルである。 図1に示した情報処理装置が記憶しているノード関係テーブルである。 図1に示した情報処理装置が記憶しているファイル構成セグメントテーブルである。 図1に示した情報処理装置が記憶しているセグメントハッシュ管理テーブルである。 図1に示した情報処理装置が記憶しているセル領域情報である。 図1に示した情報処理装置が記憶しているハッシュ関数テーブルである。 図1に示した情報処理装置が記憶しているセグメント管理テーブルである。 図1に示した情報処理装置が、ファイルシステムを管理するために実行するプログラムを示したフローチャートである。 図1に示した情報処理装置が、セル領域を生成するために実行するプログラムを示したフローチャートである。 第1のセル領域に基づいて第2のセル領域が生成される際に、セル領域間で継承される情報を概念的に示した説明図である。 生成されたセル領域を概念的に示した説明図である。 第1のセル領域及び第3のセル領域のそれぞれに対して、ハッシュ関数HDに基づく第1のハッシュ値を算出する場合における情報処理装置の作動を概念的に示した説明図である。 図1に示した情報処理装置が、ファイル書込要求に応じてファイルを書き込むために実行するプログラムを示したフローチャートである。 ファイルを構成するセグメントと、セグメント毎に取得されたハッシュ値と、を概念的に示した説明図である。 図1に示した情報処理装置が、セグメントを記憶装置に記憶させるために実行するプログラムを示したフローチャートである。 図1に示した情報処理装置が、ファイル読出要求に応じてファイルを読み出すために実行するプログラムを示したフローチャートである。 本発明の第2実施形態に係る情報処理システムの機能の概略を表すブロック図である。
 以下、本発明に係る、情報処理装置、情報処理システム、情報処理方法、及び、プログラム、の実施形態について図1~図20を参照しながら説明する。
<第1実施形態>
 図1に示したように、第1実施形態に係る情報処理システム1は、情報処理装置100と、外部記憶装置(記憶装置)110と、を含む。
 情報処理装置100は、図示しない中央処理装置(CPU;Central Processing Unit)、及び、内部記憶装置(メモリ及びハードディスク駆動装置(HDD))を備える。情報処理装置100は、内部記憶装置に記憶されているプログラム(例えば、オペレーティングシステム)をCPUが実行することにより、後述する機能を実現するように構成されている。
 外部記憶装置110は、情報を記憶(保持)するための記憶媒体を備える。外部記憶装置110は、情報処理装置100からの書込指示に応じて、情報を記憶媒体に記憶させる。また、外部記憶装置110は、情報処理装置100からの読出指示に応じて、記憶媒体に記憶されている情報を情報処理装置100へ伝達する。
 図2は、上記のように構成された情報処理システム1の機能を表すブロック図である。この機能は、情報処理装置100のCPUが内部記憶装置に記憶されているプログラム等を実行することにより、実現される。
 この情報処理装置100の機能は、ファイルシステム制御部11と、書込要求受付部(書込要求受付手段)12と、ハッシュ値取得処理部(ハッシュ値取得処理手段)13と、記憶処理部(記憶処理手段)14と、ハッシュ関数変更処理部(ハッシュ関数変更処理手段、ハッシュ関数変更処理工程)15と、セル領域消滅処理部(セル領域消滅処理手段)16と、セル領域生成処理部(セル領域生成処理手段)17と、読出要求受付部(読出要求受付手段)18と、を含む。
 ファイルシステム制御部11は、情報処理装置100が実行するプログラム(例えば、アプリケーションプログラム等)が、外部記憶装置110に記憶されているデータをファイルとして取り扱う(例えば、ファイルを読み出す、又は、ファイルを書き出す)ための機能を提供する。
 ファイルシステム制御部11は、図3に示したファイルシステム情報D30を内部記憶装置に記憶させている。ファイルシステム情報D30は、ファイル管理情報D31と、ハッシュ関数情報D32と、セル領域情報D33と、を含む。
 ファイル管理情報D31は、ファイルのメタ情報を含む。メタ情報は、各ファイルのファイルシステムにおける位置(パス)、アクセス制御権、作成日、及び、更新日等を表す情報を含む。また、ファイル管理情報D31は、ファイルとセグメントとを対応付けるための情報を含む。ここで、セグメントは、ファイルとして取り扱われる一連のデータ(ファイルを構成するデータ)を所定のデータサイズ毎に分割したデータブロックである。
 本例では、ファイル管理情報D31は、図4に示したファイルメタ情報テーブル、図5に示したノード関係テーブル、図6に示したファイル構成セグメントテーブル、及び、図7に示したセグメントハッシュ管理テーブル、を含む。
 ファイルメタ情報テーブルは、図4に示したように、ノード(i-node)番号と、先頭セグメント番号と、ディレクトリフラグと、ファイル名と、作成日と、からなる情報を複数含む。なお、ファイルメタ情報テーブルは、更新日、及び、アクセス権等の他の情報を含んでいてもよい。
 ノード番号は、ファイルを管理するためのファイルシステムにてファイルを識別するための情報である。ファイルシステムは、階層構造(本例では、木(ツリー)構造)を有している。即ち、ファイルシステムは、ファイルと、ディレクトリと、を有し、ディレクトリは、ファイル及び/又はディレクトリを格納するための特殊ファイルである。以下、本明細書においては、ファイルfaがディレクトリdaに格納されている場合、「da/fa」と表す。また、この場合、ディレクトリdaを「親」と呼び、ファイルfaを「子」と呼ぶ。
 本例では、ファイルメタ情報テーブルに、ノード番号として「0」、「1」、「50」、及び、「300」のそれぞれを有する情報を含んでいる状態とする。なお、ノード番号「0」により識別されるファイルは、ファイルシステムにおける最上階層に位置する(全てのファイルの親となる)ファイル(即ち、ルートファイル)である。
 ディレクトリフラグは、そのファイルが特殊ファイルとしてのディレクトリであるか否かを表す情報である。ディレクトリフラグは、「1」である場合にそのファイルがディレクトリであることを表し、「0」である場合にそのファイルが通常の(即ち、データを表す)ファイルであることを表す。
 先頭セグメント番号は、ファイル内の先頭に位置するセグメントを識別するためのセグメント番号である。セグメント番号は、セグメントを識別するための情報である。
 なお、本例では、ディレクトリは、セグメントを有しない。従って、ディレクトリに対する先頭セグメント番号は、「0」に設定されている。ディレクトリがデータを有する場合には、「0」以外のセグメント番号が設定されてもよい。
 ファイル名は、ノード番号により識別されるファイル(又は、ディレクトリ)の名称を表す情報である。情報処理装置100が実行するプログラム(例えば、アプリケーションプログラム等)がファイルシステムにアクセスする(即ち、ファイルを読み出す、又は、ファイルを書き込む)場合には、ファイル名によりアクセスの対象となるファイルが特定される。
 ノード関係テーブルは、図5に示したように、ノード番号と、そのノード番号により識別されるファイルを格納するファイルを識別するための親ノード番号と、からなる情報を複数含む。即ち、ノード関係テーブルは、ファイルの階層構造(親子関係)を表す情報である。ルートファイルを格納するファイルは存在しないため、ルートファイルのノード番号と対応付けられた親ノード番号は「0」に設定される。
 本例では、ルートファイルの直下の階層には、ノード番号「1」により識別されるファイルが存在している。ノード番号により階層構造を表すと、「0/1」と表すことができ、ファイル名により階層構造を表すと、「/home」と表すことができる。
 ファイル構成セグメントテーブルは、図6に示したように、ノード番号と、セグメント番号と、そのノード番号により識別されるファイルにおいてそのセグメント番号により識別されるセグメントに後続するセグメントを識別するためのセグメント番号である後続セグメント番号と、からなる情報を複数含む。
 本例では、ノード番号「300」により識別されるファイルは、6個のセグメントにより構成される。即ち、このファイルは、セグメント番号「101」~「106」により識別されるセグメントがこの順に並んだデータからなる。
 セグメントハッシュ管理テーブルは、図7に示したように、セグメント番号と、第1のハッシュ値と、第2のハッシュ値と、第3のハッシュ値と、からなる情報を複数含む。第1のハッシュ値~第3のハッシュ値のそれぞれは、後述するハッシュ関数を用いて算出された値である。
 ハッシュ関数情報D32は、複数のハッシュ関数のそれぞれを表す情報を含む。各ハッシュ関数は、入力されたデータを変換することにより、そのデータよりもデータサイズが小さいハッシュ値を出力する関数である。各ハッシュ関数は、入力されるデータと出力されるハッシュ値とをn対1(nは、1を含む整数)に対応させるように構成されている。
 本例では、ハッシュ関数HA(「hashA」)は、基本となるハッシュ関数である基本ハッシュ関数(第1の基本ハッシュ関数)に、入力されたデータと、予め定められた第1の付加データと、からなるデータを入力することにより、その基本ハッシュ関数から出力されたハッシュ値を出力するように構成される。
 同様に、ハッシュ関数HB(「hashB」)は、基本ハッシュ関数(第2の基本ハッシュ関数)に、入力されたデータと、予め定められ且つ第1の付加データと異なる第2の付加データと、からなるデータを入力することにより、その基本ハッシュ関数から出力されたハッシュ値を出力するように構成される。
 なお、第1の基本ハッシュ関数と第2の基本ハッシュ関数とは、異なる基本ハッシュ関数であってもよい。この場合、あるデータに対して、第1のハッシュ値及び第2のハッシュ値の両方においてハッシュ値の衝突が発生する可能性を低減することができる。
 また、ハッシュ関数HC(「hashC」)は、第1の付加データ及び第2の付加データのいずれとも異なる第3の付加データを第2の付加データに代えて用いる点においてのみハッシュ関数HBと相違している。同様に、ハッシュ関数HD(「hashD」)は、第1の付加データ、第2の付加データ及び第3の付加データのいずれとも異なる第4の付加データを第3の付加データに代えて用いる点においてのみハッシュ関数HCと相違している。
 このように、情報処理装置100は、付加データを変更することにより、複数のハッシュ関数を構成する。これによれば、容易に複数のハッシュ関数を用意することができる。
 なお、ハッシュ関数HA~HDは、互いに異なるアルゴリズムに基づいて構成されていてもよい。
 セル領域情報D33は、図8に示したように、領域特定情報D81と、ハッシュ関数特定情報D82と、各セル領域に対応付けられたセグメント管理テーブルD83と、を含む。
 本例では、セル領域情報D33は、第1のセル領域~第3のセル領域からなる3つのセル領域を特定するための情報を含む。
 領域特定情報D81は、各セル領域に対応付けられた、外部記憶装置110を特定するための情報と、外部記憶装置110内の記憶領域(記憶位置(アドレス)の範囲)を特定するための情報と、を含む。
 ハッシュ関数特定情報D82は、各セル領域に対応付けられた、ハッシュ関数を特定するための情報を含む。本例では、ハッシュ関数特定情報D82は、図9に示したハッシュ関数テーブルを含む。
 ハッシュ関数テーブルは、ハッシュ関数を特定するための情報と、不使用フラグと、そのハッシュ関数を使用するセル領域を特定するための情報と、からなる情報を複数含む。不使用フラグは、ハッシュ関数の使用を禁止するか否かを表す情報である。不使用フラグに値が設定されていることは、ハッシュ関数の使用が禁止されていることを表す。一方、不使用フラグに値が設定されていないことは、ハッシュ関数の使用が許可されていることを表す。
 本例では、情報処理装置100は、セグメント管理テーブルD83を、各セル領域の先頭の領域に記憶する。セグメント管理テーブルD83は、セル領域が新たに設定された場合に作成される。
 第1のセル領域に対応付けられたセグメント管理テーブルD83は、図10に示したように、第1のハッシュ値と、第2のハッシュ値と、参照回数情報と、アドレスと、からなる情報を複数含む。セグメント管理テーブルD83内の各情報は、第1のハッシュ値と、第2のハッシュ値と、セグメントハッシュ管理テーブルと、ハッシュ関数テーブルと、を介して、セグメント番号と対応付けられている。
 第1のハッシュ値は、セグメントを、ハッシュ関数テーブルにてセル領域と対応付けられた第1のハッシュ関数に入力することにより出力されたハッシュ値である。同様に、第2のハッシュ値は、セグメントを、ハッシュ関数テーブルにてセル領域と対応付けられた第2のハッシュ関数に入力することにより出力されたハッシュ値である。
 参照回数情報は、セグメント(データ)が参照されている回数を表す情報である。また、アドレスは、セグメントが記憶されている記憶位置を表す情報である。
 同様に、第2のセル領域に対応付けられたセグメント管理テーブルD83は、第2のハッシュ値と、第3のハッシュ値と、参照回数情報と、アドレスと、からなる情報を複数含む。第3のハッシュ値は、セグメントを、ハッシュ関数テーブルにてセル領域と対応付けられた第3のハッシュ関数に入力することにより出力されたハッシュ値である。同様に、第3のセル領域に対応付けられたセグメント管理テーブルD83は、第3のハッシュ値と、第1のハッシュ値と、参照回数情報と、アドレスと、からなる情報を複数含む。
 ファイルシステム制御部11は、情報処理装置100が実行するプログラム(例えば、アプリケーションプログラム等)からのファイル書込要求又はファイル読出要求を受け付ける。ファイル書込要求は、ファイルを構成するデータと、そのファイルのパスと、を含む。ファイル読出要求は、ファイルシステムにおけるファイル名(パスを含むファイル名)を含む。
 ファイルシステム制御部11は、ファイル書込要求を受け付けると、受け付けたファイル書込要求に含まれるファイルを構成するデータを分割することによりセグメントを生成する。ファイルシステム制御部11は、生成したセグメントを含む書込要求を書込要求受付部12へ出力する。
 また、ファイルシステム制御部11は、ファイル読出要求を受け付けると、受け付けたファイル読出要求に含まれるファイル名と、図4~図7に示したテーブルと、に基づいて、そのファイル名により特定されるファイルを構成するセグメントと対応付けられたハッシュ値(本例では、第1のハッシュ値~第3のハッシュ値)を取得する。そして、ファイルシステム制御部11は、取得したハッシュ値を含む読出要求を読出要求受付部18へ出力する。
 書込要求受付部12は、ファイルシステム制御部11により出力された書込要求を受け付ける。
 ハッシュ値取得処理部13は、書込要求受付部12により書込要求が受け付けられた場合、ハッシュ関数テーブルを参照することにより、いずれかのセル領域に対して使用することが設定されているハッシュ関数のそれぞれに、当該書込要求に含まれるデータを入力することによりハッシュ値を取得する処理を行う。
 例えば、図9に示したように、第1のセル領域(「cell1」)に対してハッシュ関数HA(「hashA」)及びハッシュ関数HB(「hashB」)を使用し、第2のセル領域(「cell2」)に対してハッシュ関数HB(「hashB」)及びハッシュ関数HC(「hashC」)を使用し、第3のセル領域(「cell3」)に対してハッシュ関数HC(「hashC」)及びハッシュ関数HA(「hashA」)を使用する。
 従って、ハッシュ値取得処理部13は、ハッシュ関数HA(第1のハッシュ関数)に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得し、且つ、ハッシュ関数HB(第2のハッシュ関数)に当該データを入力することにより第2のハッシュ値を取得し、且つ、ハッシュ関数HC(第3のハッシュ関数)に当該データを入力することにより第3のハッシュ値を取得する処理を行う。
 即ち、ハッシュ値取得処理部13は、3つの互いに異なるハッシュ関数HA~HCのそれぞれに書込要求に含まれるデータを入力することにより、3つのハッシュ値を取得する処理を行う。
 記憶処理部14は、書込要求受付部12により書込要求が受け付けられた場合、セル領域情報D33にて設定されている複数のセル領域のそれぞれに、受け付けられた書込要求に含まれるデータを記憶させる。
 このとき、記憶処理部14は、ハッシュ値取得処理部13により取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13により取得された第2のハッシュ値と同一の第2のハッシュ値と、が対応付けて第1のセル領域に記憶されているか否かを判定する。
 記憶処理部14は、記憶されていないと判定した場合、書込要求に含まれるセグメントと、ハッシュ値取得処理部13により取得された第1のハッシュ値と、ハッシュ値取得処理部13により取得された第2のハッシュ値と、当該セグメントが参照されている回数としての所定の初期値(本例では、「1」)を表す参照回数情報と、を対応付けて第1のセル領域に新たに記憶させる。
 一方、記憶処理部14は、記憶されていると判定した場合、上記第1のハッシュ値及び上記第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
 同様に、記憶処理部14は、ハッシュ値取得処理部13により取得された第2のハッシュ値と同一の第2のハッシュ値と、ハッシュ値取得処理部13により取得された第3のハッシュ値と同一の第3のハッシュ値と、が対応付けて第2のセル領域に記憶されているか否かを判定する。
 そして、記憶処理部14は、記憶されていないと判定した場合、セグメントと、第2のハッシュ値と、第3のハッシュ値と、初期値を表す参照回数情報と、を対応付けて第2のセル領域に新たに記憶させ、一方、記憶されていると判定した場合、第2のハッシュ値及び第3のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
 同様に、記憶処理部14は、ハッシュ値取得処理部13により取得された第3のハッシュ値と同一の第3のハッシュ値と、ハッシュ値取得処理部13により取得された第1のハッシュ値と同一の第1のハッシュ値と、が対応付けて第3のセル領域に記憶されているか否かを判定する。
 そして、記憶処理部14は、記憶されていないと判定した場合、セグメントと、第3のハッシュ値と、第1のハッシュ値と、初期値を表す参照回数情報と、を対応付けて第3のセル領域に新たに記憶させ、一方、記憶されていると判定した場合、第3のハッシュ値及び第1のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
 なお、記憶処理部14は、取得されたハッシュ値と同一のハッシュ値が記憶されているか否かを判定する際に、記憶されているハッシュ値を1つずつ順に取り出し、取り出したハッシュ値と取得されたハッシュ値とを比較することにより上記判定を行う。また、記憶処理部14は、取得されたハッシュ値と同一のハッシュ値が記憶されているか否かを判定する際に、二分探索法等の方法を用いてもよい。
 ハッシュ関数変更処理部15は、各セル領域に対して、ハッシュ値取得処理部13により取得されたハッシュ値のうちのそのセル領域に対して使用するハッシュ関数に基づくハッシュ値の一方と同一のハッシュ値と、他方と異なるハッシュ値と、が対応付けてそのセル領域に記憶されている場合、以降において、ハッシュ値取得処理部13が当該他方のハッシュ値を取得するために用いるハッシュ関数を他のハッシュ関数に変更する処理を行う。
 即ち、例えば、ハッシュ関数変更処理部15は、ハッシュ値取得処理部13により取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13により取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて第1のセル領域に記憶されている場合、以降において、ハッシュ値取得処理部13が第1のハッシュ値を取得するために用いるハッシュ関数を、第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行う。
 なお、本実施形態の変形例において、ハッシュ関数変更処理部15は、入力されるデータと出力されるハッシュ値とをn対1(nは、1を含む整数)に対応させることが可能なデータの範囲が第1のハッシュ関数よりも広いハッシュ関数を第4のハッシュ関数として選択するように構成されていてもよい。
 これによれば、ハッシュ関数を変更することにより、以降においてハッシュ値の衝突が発生する可能性をより一層低減することができる。
 具体的には、ハッシュ関数変更処理部15は、ハッシュ関数テーブルにて、第1のハッシュ関数として設定されていたハッシュ関数HAと対応付けられた不使用フラグに真を表す所定の値を設定する。
 セル領域消滅処理部16は、各セル領域に対して、ハッシュ値取得処理部13により取得されたハッシュ値のうちのそのセル領域に対して使用するハッシュ関数に基づくハッシュ値の一方と同一のハッシュ値と、他方と異なるハッシュ値と、が対応付けてそのセル領域に記憶されている場合、記憶処理部14がセグメントを記憶させるセル領域から当該セル領域を消去する処理を行う。
 従って、例えば、セル領域消滅処理部16は、ハッシュ値取得処理部13により取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13により取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて第1のセル領域に記憶されている場合、記憶処理部14がセグメントを記憶させるセル領域から当該第1のセル領域を消去する処理を行う。
 また、セル領域生成処理部17は、外部記憶装置110内のセル領域の数が予め設定された数(本例では、3つ)よりも少ない場合において、外部記憶装置110に新たに記憶可能なデータ量が所定の閾値量よりも多い場合、記憶処理部14がセグメントを記憶させるセル領域の数を増加させる処理を行う。
 ハッシュ関数変更処理部15は、セル領域生成処理部17によりセル領域が新たに追加された場合、そのセル領域に対して使用するハッシュ関数として、ハッシュ関数テーブルにて、値が設定されていない不使用フラグと対応付けられたハッシュ関数(例えば、第4のハッシュ関数)を設定する。
 読出要求受付部18は、ファイルシステム制御部11により出力された読出要求を受け付ける。読出要求受付部18は、受け付けた読出要求に含まれるハッシュ値と、図10に示したセグメント管理テーブルと、に基づいて、各セル領域に記憶されているセグメントを読み出す。そして、読出要求受付部18は、読み出したセグメントをファイルシステム制御部11へ出力する。
 ファイルシステム制御部11は、読出要求受付部18により出力されたセグメントからファイルを生成し、生成したファイルを、ファイル読出要求を出力したプログラムに対して出力する。
 次に、上述した情報処理システム1の作動について具体的に述べる。
 先ず、ファイルシステムを管理するための情報処理システム1の作動について、図11を参照しながら説明する。
 外部記憶装置110の記憶領域には、セル領域が形成される。情報処理システム1は、セル領域の数が不足している場合にはセル領域を増加(生成)させ、一方、ハッシュ値の衝突が発生した場合にはセル領域を減少(消滅)させる。即ち、外部記憶装置110に新たに記憶可能なデータ量が所定の閾値量よりも多い場合、且つ、未使用フラグに値が設定されていない予備のハッシュ関数が存在している場合、外部記憶装置110の記憶領域は、セル領域を用いて自律的に管理される。
 先ず、情報処理装置100は、ユーザからの指示に基づくファイルシステム作成要求を受け付ける(ステップ1105)。ファイルシステム作成要求は、アクティブな(使用する)セル領域の最大数を表す情報と、1つのセル領域に対して使用するハッシュ関数の数を表す情報と、を含む。本例では、使用するセル領域の最大数が3つであり、1つのセル領域に対して使用するハッシュ関数の数が2つである場合を想定する。
 次いで、情報処理装置100は、ファイルシステムの初期化を行う(ステップ1110)。具体的には、情報処理システム1は、外部記憶装置110の記憶領域に記憶されているデータを消去し、内部記憶装置に記憶されているファイルシステム情報D30を予め設定された初期値に設定する。
 そして、情報処理装置100は、ステップ1115にて、1つのセル領域を設定(生成)する処理を行うため、図12のステップ1205へ進む。
 次いで、情報処理装置100は、既に設定されているセル領域が存在するか否かを判定する。
 この状態においては、セル領域は1つも設定されていないので、情報処理装置100は、「No」と判定してステップ1210に進む。そして、情報処理装置100は、図9に示したハッシュ関数テーブルを参照しながら、値が設定されていない不使用フラグと対応付けられたハッシュ関数を2つ(ここでは、ハッシュ関数HA及びハッシュ関数HB)選択する。更に、情報処理装置100は、セル領域として割り当てる記憶領域を特定する(ステップ1210)。
 更に、情報処理装置100は、特定した記憶領域の先頭の領域にセグメント管理テーブルを作成する(記憶させる)(ステップ1215)。
 次に、情報処理装置100は、ステップ1120へ進み、設定されたセル領域の数が上記最大数(本例では、3つ)以下であるか否かを判定する。この状態においては、情報処理装置100は、「Yes」と判定してステップ1125に進み、セル領域を生成するためのリソースが十分であるか否かを判定する。
 情報処理装置100は、外部記憶装置110に新たに記憶可能なデータ量が所定の閾値量よりも多く、且つ、不使用フラグに値が設定されておらず、現在使用されていないハッシュ関数(値が設定されていない不使用フラグと対応付けられたハッシュ関数)が存在する場合には、リソースが十分であると判定する。
 情報処理装置100は、ステップ1125にて「Yes」と判定した場合、ステップ1130に進み、ステップ1115と同様に、1つのセル領域を生成する処理を行うため、図12のステップ1205へ進む。
 次いで、情報処理装置100は、既に設定されているセル領域が存在するか否かを判定する。この状態においては、セル領域は1つ設定されているので、情報処理装置100は、「Yes」と判定してステップ1220に進む。
 情報処理装置100は、図9に示したハッシュ関数テーブルを参照しながら、値が設定されていない不使用フラグと対応付けられたハッシュ関数を1つ(ここでは、ハッシュ関数HC)選択する。更に、情報処理装置100は、セル領域として割り当てる記憶領域を特定する。
 次いで、情報処理装置100は、廃棄されたセル領域が存在するか否かを判定する(ステップ1225)。廃棄されたセル領域は、後述するように、ハッシュ値の衝突が発生したことにより消滅させられたセル領域である。
 この状態においては、廃棄されたセル領域が存在しないので、情報処理装置100は、「No」と判定してステップ1230に進み、既に設定されているセル領域の中から任意のセル領域を選択し、選択したセル領域に基づいて新たなセル領域を生成する処理を行う。
 具体的には、情報処理装置100は、図13に概念的に示したように、既に設定されているセル領域(ここでは、第1のセル領域)に記憶されているデータ(セグメント)及びセグメント管理テーブルを、新たに生成したセル領域(第2のセル領域)に記憶させる。
 更に、情報処理装置100は、図9に示したハッシュ関数テーブルの情報を変更することにより、第1のセル領域に対して使用するハッシュ関数の一方(ここでは、ハッシュ関数HB)を第2のセル領域に承継させる。加えて、情報処理装置100は、図9に示したハッシュ関数テーブルの情報を変更することにより、上記ステップ1220にて選択したハッシュ関数(ハッシュ関数HC)を第2のセル領域に対して使用するハッシュ関数として設定する。
 次いで、情報処理装置100は、ステップ1235にて、上記ステップ1220にて選択したハッシュ関数(ハッシュ関数HC)に、第2のセル領域に記憶されている各セグメントを入力することにより出力されたハッシュ値により、第2のセル領域に記憶されているセグメント管理テーブル内の対応するハッシュ値(第3のハッシュ値)を置換する。
 そして、情報処理装置100は、ステップ1135に進み、ハッシュ値の衝突が発生したか否かを判定する。ハッシュ値の衝突の詳細については後述する。
 この状態においては、ハッシュ値の衝突は発生していないので、情報処理装置100は、「No」と判定して、ステップ1120へ戻る。
 そして、情報処理装置100がステップ1120~ステップ1135の処理を繰り返し実行することにより、第2のセル領域と同様に第3のセル領域が生成される。これにより、外部記憶装置110には、図14に概念的に示したように、第1のセル領域~第3のセル領域が形成される。
 なお、情報処理装置100は、複数のセル領域から任意の1対のセル領域を取り出した場合において、取り出したセル領域のうちの一方のセル領域に対して使用するハッシュ関数の一部が他方のセル領域に対して使用するハッシュ関数の一部と同一であり、且つ、一方のセル領域に対して使用するハッシュ関数の他部が他方のセル領域に対して使用するハッシュ関数の他部と異なるように、各セル領域に対してハッシュ関数を割り当てる。
 換言すると、情報処理装置100は、上記書込要求に含まれるデータを記憶装置に記憶させる際、上記複数のセル領域のそれぞれに、当該データと、取得されたハッシュ値のうちの少なくとも2つのハッシュ値と、を対応付けて記憶させる。このとき、情報処理装置100は、複数のセル領域の任意の1つである第1のセル領域に当該データと対応付けて記憶されている1つのハッシュ値が、当該第1のセル領域以外の第2のセル領域に当該データと対応付けて記憶され、且つ、当該第1のセル領域に当該データと対応付けて記憶されている他の1つのハッシュ値が、当該第1のセル領域及び当該第2のセル領域以外の第3のセル領域に当該データと対応付けて記憶されるように、データ及びハッシュ値を各セル領域に記憶させる。
 従って、本例では、第1のセル領域に対して使用するハッシュ関数として、ハッシュ関数HA及びハッシュ関数HBが設定され、且つ、第2のセル領域に対して使用するハッシュ関数として、ハッシュ関数HB及びハッシュ関数HCが設定され、且つ、第3のセル領域に対して使用するハッシュ関数として、ハッシュ関数HC及びハッシュ関数HAが設定される。即ち、ハッシュ関数テーブルは、図9に示したように、情報が設定される。
 次に、ハッシュ値の衝突が発生した場合について説明する。
 この場合、情報処理装置100がステップ1135に進んだとき、情報処理装置100は、「Yes」と判定してステップ1140に進み、発生した衝突に係るハッシュ値を取得する基となったハッシュ関数を使用するセル領域を消滅させる。
 具体的には、情報処理装置100は、セル領域情報D33内の上記セル領域を特定するための情報に、当該セル領域を廃棄する旨を表す情報を設定する。これにより、情報処理装置100は、以降において、このセル領域を廃棄されたセル領域として取り扱う。
 更に、情報処理装置100は、図9に示したハッシュ関数テーブル内の、発生した衝突に係るハッシュ値を取得する基となったハッシュ関数と対応付けられた不使用フラグに、真を表す値を設定する。これにより、情報処理装置100は、以降において、このハッシュ関数を使用しない。
 次に、廃棄されたセル領域が存在している場合において、情報処理装置100がセル領域の生成を行う場合について説明する。
 この場合、情報処理装置100がステップ1225に進んだとき、情報処理装置100は、「Yes」と判定してステップ1240に進み、廃棄されたセル領域の中から任意のセル領域を選択し、選択したセル領域に基づいて新たなセル領域を生成する処理を行う。
 具体的には、情報処理装置100は、廃棄されたセル領域に記憶されているデータ(セグメント)及びセグメント管理テーブルを、新たに生成したセル領域に記憶させる。
 更に、情報処理装置100は、図9に示したハッシュ関数テーブルの情報を変更することにより、廃棄されたセル領域に対して使用するハッシュ関数の一方を新たに生成したセル領域に承継させる。加えて、情報処理装置100は、図9に示したハッシュ関数テーブルの情報を変更することにより、上記ステップ1220にて選択したハッシュ関数を新たに生成したセル領域に対して使用するハッシュ関数として設定する。
 次いで、情報処理装置100は、ステップ1235にて、上記ステップ1220にて選択したハッシュ関数に、新たに生成したセル領域に記憶されている各セグメントを入力することにより出力されたハッシュ値により、新たに生成したセル領域に記憶されているセグメント管理テーブル内の対応するハッシュ値を置換する。
 これにより、セル領域を生成するための情報処理装置100の処理負荷を軽減することができる。
 なお、情報処理装置100は、ハッシュ値の置換後に、活動している正常セルとのデータ同期を行うように構成されることが好適である。
 また、情報処理装置100は、複数のセル領域のそれぞれに対して、同一のハッシュ関数に基づくハッシュ値を算出する場合、1つのセル領域に対して算出したハッシュ値を他のセル領域に対して設定するように構成されていてもよい。
 例えば、図15に示したように、第1のセル領域に対して、ハッシュ関数HDを用いて第1のハッシュ値を取得するとともに、第3のセル領域に対して、ハッシュ関数HDを用いて第1のハッシュ値を取得する場合を想定する。
 この場合、情報処理装置100は、第1のセル領域に記憶されているセグメントのうちの先頭側の半分に対して、第1のハッシュ値を取得し、取得した第1のハッシュ値を第1のセル領域に対して設定する。そして、情報処理装置100は、取得した第1のハッシュ値を第3のセル領域に対しても設定する。
 一方、情報処理装置100は、第3のセル領域に記憶されているセグメントのうちの末尾側の半分に対して、第1のハッシュ値を取得し、取得した第1のハッシュ値を第3のセル領域に対して設定する。そして、情報処理装置100は、取得した第1のハッシュ値を第1のセル領域に対しても設定する。
 これによれば、情報処理装置100が、第1のセル領域に記憶されているセグメントのすべてに対して、第1のハッシュ値を取得し、且つ、第3のセル領域に記憶されているセグメントのすべてに対して、第1のハッシュ値を取得するように構成されている場合と比較して、ハッシュ値を取得するための情報処理装置100の処理負荷を軽減することができる。
 次に、ファイルを構成するデータを外部記憶装置110に記憶させるための情報処理システム1の作動について、図16を参照しながら説明する。
 先ず、情報処理装置100は、ファイル書込要求を受け付ける(ステップ1605、書込要求受付工程)。そして、情報処理装置100は、ファイル書込要求に含まれるファイルを構成するデータを分割することによりセグメントを生成する。次いで、情報処理装置100は、図9に示したハッシュ関数テーブルを参照することにより、いずれかのセル領域に対して使用することが設定されているハッシュ関数のそれぞれに、生成したセグメントを入力することによりハッシュ値を取得する処理を行う(ステップ1610、ハッシュ値取得処理工程)。
 本例では、図17に示したように、情報処理装置100は、ファイルを6個のセグメントS1~S6に分割し、ハッシュ関数HA、ハッシュ関数HB及びハッシュ関数HCの3つを用いてそれぞれのハッシュ値(第1のハッシュ値~第3のハッシュ値)HA1~HC6を取得する。
 次いで、情報処理装置100は、ファイル書込要求に含まれるパスと、ファイルメタ情報テーブルと、ノード関係テーブルと、に基づいて、そのパスに対応するノード番号及び先頭セグメント番号を取得する。更に、情報処理装置100は、取得したノード番号及び先頭セグメント番号と、ファイル構成セグメントテーブルと、に基づいて上記ファイルを構成するすべてのセグメント番号を取得する。そして、情報処理装置100は、取得したセグメント番号と、セグメントハッシュ管理テーブルと、に基づいてそのセグメント番号により特定されるセグメント(既に外部記憶装置110に記憶されているセグメント)のハッシュ値を取得する。
 そして、情報処理装置100は、各セル領域に対して、図10に示したセグメント管理テーブルにて、取得したハッシュ値のうちのそのセル領域に対して使用するハッシュ関数に基づく2つのハッシュ値と同一の2つのハッシュ値と対応付けられた参照回数情報を、その参照回数情報が表す参照回数を1だけ減少させるように、変更する(ステップ1615)。
 次いで、情報処理装置100は、図10に示したセグメント管理テーブルにて、1以下の参照回数を表す参照回数情報と対応付けられたセグメントを、各セル領域から消去する(ステップ1620)。
 そして、情報処理装置100は、セル領域毎に独立して記憶処理を実行する(ステップ1625、記憶処理工程)。ここでは、第1のセル領域に対する記憶処理について説明するが、他のセル領域に対する記憶処理も同様に行われる。
 情報処理装置100は、第1のセル領域に対して記憶処理を実行するため、ステップ1805に進む。情報処理装置100は、上記ステップ1610にて取得されたハッシュ値のうちの、そのセル領域に対して設定されている2つのハッシュ関数に基づくハッシュ値(即ち、第1のハッシュ値及び第2のハッシュ値)と同一の2つのハッシュ値が対応付けて記憶されているか否かを判定する。
 即ち、情報処理装置100は、上記ステップ1610にて取得されたハッシュ値のうちの第1のハッシュ値と同一の第1のハッシュ値と、上記ステップ1610にて取得されたハッシュ値のうちの第2のハッシュ値と同一の第2のハッシュ値と、が対応付けて第1のセル領域に記憶されているか否かを判定する。
 いま、上記ステップ1610にて取得された第1のハッシュ値と同一の第1のハッシュ値と、上記ステップ1610にて取得された第2のハッシュ値と同一の第2のハッシュ値と、が対応付けられて第1のセル領域に記憶されている場合を想定して説明を続ける。
 この場合、情報処理装置100は、「Yes」と判定してステップ1810に進み、図10に示したセグメント管理テーブルにて上記2つのハッシュ値と対応付けられた参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
 また、上記ステップ1610にて取得された第1のハッシュ値と異なる第1のハッシュ値のみが第1のセル領域に記憶され、且つ、上記ステップ1610にて取得された第2のハッシュ値と異なる第2のハッシュ値のみが第1のセル領域に記憶されている場合を想定して説明を続ける。
 この場合、情報処理装置100は、ステップ1805にて「No」と判定し、ステップ1815に進む。そして、情報処理装置100は、上記ステップ1610にて取得された第1のハッシュ値と異なる第1のハッシュ値のみが第1のセル領域に記憶され、且つ、上記ステップ1610にて取得された第2のハッシュ値と異なる第2のハッシュ値のみが第1のセル領域に記憶されているか否かを判定する。
 上記仮定に従えば、情報処理装置100は、「Yes」と判定してステップ1820に進み、上記ステップ1610にて生成されたセグメントと、上記ステップ1610にて取得された第1のハッシュ値と、上記ステップ1610にて取得された第2のハッシュ値と、初期値を表す参照回数情報と、を対応付けて第1のセル領域に新たに記憶させる。具体的には、情報処理装置100は、セグメントが記憶される位置を表すアドレスと、2つのハッシュ値と、参照回数情報と、からなる情報を図10に示したセグメント管理テーブルに追加する。
 また、上記ステップ1610にて取得された第1のハッシュ値と同一の第1のハッシュ値と、上記ステップ1610にて取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けられて第1のセル領域に記憶されている場合を想定して説明を続ける。
 この場合、情報処理装置100は、ステップ1815にて「No」と判定してステップ1825に進み、第1のハッシュ値の衝突が発生したことを検知する。これにより、情報処理装置100が図11のステップ1135に進んだとき、情報処理装置100は、「Yes」と判定してステップ1140に進み、第1のセル領域を消滅させるとともに、ハッシュ関数HAと対応付けられた不使用フラグに真を表す値を設定する。
 次に、外部記憶装置110に記憶されているセグメントからなるファイルを読み出すための情報処理システム1の作動について、図19を参照しながら説明する。
 先ず、情報処理装置100は、ファイル読出要求を受け付ける(ステップ1905)。そして、情報処理装置100は、ファイル読出要求に含まれるパスと、ファイルメタ情報テーブルと、ノード関係テーブルと、に基づいて、そのパスに対応するノード番号及び先頭セグメント番号を取得する。
 更に、情報処理装置100は、取得したノード番号及び先頭セグメント番号と、ファイル構成セグメントテーブルと、に基づいて上記ファイルを構成するすべてのセグメント番号を取得する。そして、情報処理装置100は、取得したセグメント番号と、セグメントハッシュ管理テーブルと、に基づいてそのセグメント番号により特定されるセグメント(既に外部記憶装置110に記憶されているセグメント)のハッシュ値を取得する。
 そして、情報処理装置100は、図10に示したセグメント管理テーブルにて、取得したハッシュ値のうちの2つと同一のハッシュ値と対応付けられたアドレスにて記憶されているセグメントを取得する(ステップ1910)。
 次いで、情報処理装置100は、取得したセグメントと、ファイル構成セグメントテーブルと、に基づいてファイルを生成し、生成したファイルを、ファイル読出要求を出力したプログラムに対して出力する(ステップ1915)。
 以上、説明したように、本発明による情報処理システムの第1実施形態によれば、第1のハッシュ値及び第2のハッシュ値のいずれか一方の衝突が発生した場合であっても、他方を比較することによりデータ(セグメント)が同一であるか否かを検知することができる。即ち、ハッシュ値の衝突が発生した場合に、処理負荷が過大となることを防止しながらデータが同一であるか否かを検知することができる。これにより、2つの異なるデータを誤って同一のデータとして認識することを回避しながら、同一のデータが重複して外部記憶装置110(記憶装置)に記憶されることを回避することができる。この結果、記憶装置に記憶されるデータ量を減少させることができる。
 更に、上記第1実施形態において、情報処理装置100は、取得された第1のハッシュ値と同一の第1のハッシュ値と、取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて記憶装置(第1のセル領域)に記憶されている場合、以降において、第1のハッシュ値を取得するために用いるハッシュ関数を、第1のハッシュ関数(ハッシュ関数HA)から当該第1のハッシュ関数と異なる第4のハッシュ関数(ハッシュ関数HD)に変更する処理を行う。
 これによれば、あるデータを含む書込要求を受け付けた場合に、第1のハッシュ値及び第2のハッシュ値のいずれか一方の衝突が発生する状態が継続することを回避することができる。従って、第1のハッシュ値及び第2のハッシュ値のいずれか一方を比較するだけで、そのデータと同一のデータが記憶されているか否かを検知することができる。即ち、情報処理装置100の処理量を低減することができる。
 また、ハッシュ値の衝突が発生した場合、ハッシュ値の衝突が発生する基となったデータを、予め定められた規則に従って空き領域に記憶させ、且つ、データの読み出し時にその規則に従って当該データを読み出すように、情報処理装置が構成されている場合であっても、そのデータを読み出すために要する時間が過大となることを防止することができる。
 また、上記第1実施形態において、情報処理装置100は、書込要求に含まれるデータを外部記憶装置110(記憶装置)に記憶させる際、外部記憶装置110内の複数のセル領域のそれぞれに、当該データを記憶させる。
 これによれば、1つのセル領域に記憶されているデータが消失した場合であっても、他のセル領域に記憶されているデータを取得することができる。即ち、外部記憶装置110に記憶されているデータの冗長性を確保することができる。
 また、上記第1実施形態によれば、1つのハッシュ値の衝突が発生した場合であっても、複数のセル領域に共通して記憶されているハッシュ値であり且つ衝突が発生していないハッシュ値を2つ以上確保することができる。この結果、例えば、ハッシュ値の衝突が発生した場合に、そのハッシュ値を、他のハッシュ関数に基づくハッシュ値に更新するように、情報処理装置が構成されている場合において、ハッシュ値の更新処理中に書込要求が受け付けられたときであっても、上述した効果を奏することができる。
 更に、上記第1実施形態において、情報処理装置100は、外部記憶装置110(記憶装置)内のセル領域の数が予め設定された数よりも少ない場合において、外部記憶装置110に新たに記憶可能なデータ量が閾値量よりも多い場合、データを記憶させるセル領域の数を増加させる処理を行う。
 これによれば、外部記憶装置110に新たに記憶可能なデータ量が閾値量よりも多い場合には、予め設定された数までセル領域の数を増加させることができる。
 また、上記第1実施形態において、書込要求に含まれるデータは、ファイルを構成するデータを所定のデータサイズ毎に分割したデータブロックとしてのセグメントである。
 これによれば、ファイルの一部のみが重複している場合に、その重複している部分が外部記憶装置110(記憶装置)に重複して記憶されることを防止することができる。この結果、外部記憶装置110に記憶されるデータ量をより一層減少させることができる。
<第2実施形態>
 次に、本発明の第2実施形態に係る情報処理装置について図20を参照しながら説明する。
 第2実施形態に係る情報処理装置100Aは、書込要求受付部12Aと、ハッシュ値取得処理部13Aと、記憶処理部14Aと、を備える。
 書込要求受付部12Aは、データを含む書込要求を受け付ける。
 ハッシュ値取得処理部13Aは、書込要求受付部12Aにより書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行う。
 記憶処理部14Aは、ハッシュ値取得処理部13Aにより取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13Aにより取得された第2のハッシュ値と同一の第2のハッシュ値と、が対応付けて記憶装置110Aに記憶されていない場合、書込要求に含まれるデータと、取得された第1のハッシュ値と、取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置110Aに新たに記憶させる。
 一方、記憶処理部14Aは、ハッシュ値取得処理部13Aにより取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13Aにより取得された第2のハッシュ値と同一の第2のハッシュ値と、が対応付けて当該記憶装置110Aに記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
 この第2実施形態によれば、上記第1実施形態と同様に、第1のハッシュ値及び第2のハッシュ値のいずれか一方の衝突が発生した場合であっても、他方を比較することによりデータが同一であるか否かを検知することができる。即ち、ハッシュ値の衝突が発生した場合に、処理負荷が過大となることを防止しながらデータが同一であるか否かを検知することができる。これにより、2つの異なるデータを誤って同一のデータとして認識することを回避しながら、同一のデータが重複して記憶装置に記憶されることを回避することができる。この結果、記憶装置に記憶されるデータ量を減少させることができる。
 この場合、上記情報処理装置は、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と、上記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置に記憶されている場合、以降において上記ハッシュ値取得処理手段が上記第1のハッシュ値を取得するために用いるハッシュ関数を、上記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を備えることが好適である。即ち、ハッシュ関数変更処理手段により、ハッシュ値の衝突が発生したハッシュ関数を他のハッシュ関数に置換することができる。
 これによれば、第1のハッシュ値及び第2のハッシュ値のいずれか一方の衝突が発生する状態が継続することを回避することができる。従って、第1のハッシュ値及び第2のハッシュ値のいずれか一方を比較するだけで、そのデータと同一のデータが記憶されているか否かを検知することができる。即ち、情報処理装置の処理量を低減することができる。
 また、ハッシュ値の衝突が発生した場合、ハッシュ値の衝突が発生する基となったデータを、予め定められた規則に従って空き領域に記憶させ、且つ、データの読み出し時にその規則に従って当該データを読み出すように、情報処理装置が構成されている場合であっても、そのデータを読み出すために要する時間が過大となることを防止することができる。
 この場合、
 上記第1のハッシュ関数は、基本となるハッシュ関数である第1の基本ハッシュ関数に、上記入力されたデータと、予め定められた第1の付加データと、からなるデータを入力することにより、当該第1の基本ハッシュ関数から出力されたハッシュ値を出力するように構成され、
 上記第2のハッシュ関数は、基本となるハッシュ関数である第2の基本ハッシュ関数に、上記入力されたデータと、予め定められ且つ上記第1の付加データと異なる第2の付加データと、からなるデータを入力することにより、当該第2の基本ハッシュ関数から出力されたハッシュ値を出力するように構成されることが好適である。
 この場合、上記第1の基本ハッシュ関数と、上記第2の基本ハッシュ関数と、は、同一の基本ハッシュ関数であることが好適である。
 これによれば、基本ハッシュ関数を1つ用意するだけで、容易に複数のハッシュ関数を用意することができる。
 また、上記情報処理装置の他の態様において、上記第1の基本ハッシュ関数と、上記第2の基本ハッシュ関数と、は、異なる基本ハッシュ関数であることが好適である。
 これによれば、あるデータに対して、第1のハッシュ値及び第2のハッシュ値の両方においてハッシュ値の衝突が発生する可能性を低減することができる。
 この場合、
 上記記憶処理手段は、上記書込要求に含まれるデータを上記記憶装置に記憶させる際、当該記憶装置内の複数のセル領域のそれぞれに、当該データを記憶させるように構成されることが好適である。
 これによれば、1つのセル領域に記憶されているデータが消失した場合であっても、他のセル領域に記憶されているデータを取得することができる。即ち、記憶装置に記憶されているデータの冗長性を確保することができる。
 この場合、
 上記ハッシュ値取得処理手段は、上記書込要求が受け付けられた場合、少なくとも3つの互いに異なるハッシュ関数のそれぞれに当該書込要求に含まれるデータを入力することによりハッシュ値を取得する処理を行うように構成され、
 上記記憶処理手段は、上記書込要求に含まれるデータを上記記憶装置に記憶させる際、上記複数のセル領域のそれぞれに、上記データと、上記取得されたハッシュ値のうちの少なくとも2つのハッシュ値と、を対応付けて記憶させることにより、当該複数のセル領域の任意の1つである第1のセル領域に当該データと対応付けて記憶されている1つのハッシュ値が、当該第1のセル領域以外の第2のセル領域に当該データと対応付けて記憶され、且つ、当該第1のセル領域に当該データと対応付けて記憶されている他の1つのハッシュ値が、当該第1のセル領域及び当該第2のセル領域以外の第3のセル領域に当該データと対応付けて記憶されるように構成されることが好適である。
 これによれば、1つのハッシュ値の衝突が発生した場合であっても、複数のセル領域に共通して記憶されているハッシュ値であり且つ衝突が発生していないハッシュ値を2つ以上確保することができる。この結果、例えば、ハッシュ値の衝突が発生した場合に、そのハッシュ値を、他のハッシュ関数に基づくハッシュ値に更新するように、情報処理装置が構成されている場合において、ハッシュ値の更新処理中に書込要求が受け付けられたときであっても、上述した効果を奏することができる。
 この場合、上記情報処理装置は、
 上記記憶装置内のセル領域の数が予め設定された数よりも少ない場合において、上記記憶装置に新たに記憶可能なデータ量が所定の閾値量よりも多い場合、上記記憶処理手段が上記データを記憶させるセル領域の数を増加させる処理を行うセル領域生成処理手段を備えることが好適である。
 これによれば、記憶装置に新たに記憶可能なデータ量が閾値量よりも多い場合には、予め設定された数までセル領域の数を増加させることができる。
 この場合、上記情報処理装置は、
 上記取得されたハッシュ値のうちの1つである第1のハッシュ値と同一の第1のハッシュ値と、上記取得されたハッシュ値のうちの他の1つである第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置内の上記第1のセル領域に記憶されている場合、上記記憶処理手段が上記データを記憶させるセル領域から当該第1のセル領域を消去する処理を行うセル領域消滅処理手段を備えることが好適である。
 この場合、
 上記書込要求に含まれるデータは、ファイルとして取り扱われる一連のデータを所定のデータサイズ毎に分割したデータブロックとしてのセグメントであることが好適である。
 これによれば、ファイルの一部のみが重複している場合に、その重複している部分が記憶装置に重複して記憶されることを防止することができる。この結果、記憶装置に記憶されるデータ量をより一層減少させることができる。
 また、本発明の他の形態である情報処理システムは、
 記憶装置を備えるとともに、
 データを含む書込要求を受け付ける書込要求受付手段と、
 上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて上記記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
 を備える。
 この場合、上記情報処理システムは、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と、上記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置に記憶されている場合、以降において上記ハッシュ値取得処理手段が上記第1のハッシュ値を取得するために用いるハッシュ関数を、上記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を備えることが好適である。
 また、本発明の他の形態である情報処理方法は、
 データを含む書込要求を受け付け、
 上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行い、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する方法である。
 この場合、上記情報処理方法は、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と、上記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置に記憶されている場合、以降において上記第1のハッシュ値を取得するために用いるハッシュ関数を、上記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うように構成されることが好適である。
 また、本発明の他の形態であるプログラムは、
 情報処理装置に、
 データを含む書込要求を受け付ける書込要求受付手段と、
 上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
 を実現させるためのプログラムである。
 この場合、上記プログラムは、
 上記情報処理装置に、更に、
 上記取得された第1のハッシュ値と同一の第1のハッシュ値と、上記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置に記憶されている場合、以降において上記ハッシュ値取得処理手段が上記第1のハッシュ値を取得するために用いるハッシュ関数を、上記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を実現させるためのプログラムであることが好適である。
 上述した構成を有する、情報処理システム、情報処理方法、又は、プログラム、の発明であっても、上記情報処理装置と同様の作用を有するために、上述した本発明の目的を達成することができる。
 以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
 例えば、上記実施形態においては、情報処理システム1は、互いに独立した2つの装置として、情報処理装置100と外部記憶装置110とを備えていたが、情報処理装置100及び外部記憶装置110を含む1つの装置を備えていてもよい。また、情報処理装置100の内部記憶装置に記憶されている情報は、外部記憶装置110に記憶されていてもよい。
 また、上記実施形態において、情報処理システム1は、1つの外部記憶装置110を備えていたが、複数の外部記憶装置110を備えていてもよい。加えて、上記実施形態においては、使用するセル領域の最大数は、3つであったが、1つ又は2つであってもよく、4つ以上であってもよい。同様に、1つのセル領域に対して使用するハッシュ関数の数も、3つ以上であってもよい。
 また、上記各実施形態においてプログラムは、記憶装置に記憶されていたが、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
 なお、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
 なお、本発明は、日本国にて2008年12月19日に出願された特願2008-323077の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願にて開示された内容のすべてが本明細書に含まれるものとする。
 本発明は、データを記憶する記憶装置を複数備えるストレージシステム等に適用可能である。
1   情報処理システム
11  ファイルシステム制御部
12  書込要求受付部
12A 書込要求受付部
13  ハッシュ値取得処理部
13A ハッシュ値取得処理部
14  記憶処理部
14A 記憶処理部
15  ハッシュ関数変更処理部
16  セル領域消滅処理部
17  セル領域生成処理部
18  読出要求受付部
100 情報処理装置
100A 情報処理装置
110  外部記憶装置
110A 記憶装置

Claims (14)

  1.  データを含む書込要求を受け付ける書込要求受付手段と、
     前記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
     前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、前記書込要求に含まれるデータと、前記取得された第1のハッシュ値と、前記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
     を備える情報処理装置。
  2.  請求項1に記載の情報処理装置であって、
     前記取得された第1のハッシュ値と同一の第1のハッシュ値と、前記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置に記憶されている場合、以降において前記ハッシュ値取得処理手段が前記第1のハッシュ値を取得するために用いるハッシュ関数を、前記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を備える情報処理装置。
  3.  請求項1又は請求項2に記載の情報処理装置であって、
     前記第1のハッシュ関数は、基本となるハッシュ関数である第1の基本ハッシュ関数に、前記入力されたデータと、予め定められた第1の付加データと、からなるデータを入力することにより、当該第1の基本ハッシュ関数から出力されたハッシュ値を出力するように構成され、
     前記第2のハッシュ関数は、基本となるハッシュ関数である第2の基本ハッシュ関数に、前記入力されたデータと、予め定められ且つ前記第1の付加データと異なる第2の付加データと、からなるデータを入力することにより、当該第2の基本ハッシュ関数から出力されたハッシュ値を出力するように構成された情報処理装置。
  4.  請求項1乃至請求項3のいずれか一項に記載の情報処理装置であって、
     前記記憶処理手段は、前記書込要求に含まれるデータを前記記憶装置に記憶させる際、当該記憶装置内の複数のセル領域のそれぞれに、当該データを記憶させるように構成された情報処理装置。
  5.  請求項4に記載の情報処理装置であって、
     前記ハッシュ値取得処理手段は、前記書込要求が受け付けられた場合、少なくとも3つの互いに異なるハッシュ関数のそれぞれに当該書込要求に含まれるデータを入力することによりハッシュ値を取得する処理を行うように構成され、
     前記記憶処理手段は、前記書込要求に含まれるデータを前記記憶装置に記憶させる際、前記複数のセル領域のそれぞれに、前記データと、前記取得されたハッシュ値のうちの少なくとも2つのハッシュ値と、を対応付けて記憶させることにより、当該複数のセル領域の任意の1つである第1のセル領域に当該データと対応付けて記憶されている1つのハッシュ値が、当該第1のセル領域以外の第2のセル領域に当該データと対応付けて記憶され、且つ、当該第1のセル領域に当該データと対応付けて記憶されている他の1つのハッシュ値が、当該第1のセル領域及び当該第2のセル領域以外の第3のセル領域に当該データと対応付けて記憶されるように構成された情報処理装置。
  6.  請求項4又は請求項5に記載の情報処理装置であって、
     前記記憶装置内のセル領域の数が予め設定された数よりも少ない場合において、前記記憶装置に新たに記憶可能なデータ量が所定の閾値量よりも多い場合、前記記憶処理手段が前記データを記憶させるセル領域の数を増加させる処理を行うセル領域生成処理手段を備える情報処理装置。
  7.  請求項5又は請求項6に記載の情報処理装置であって、
     前記取得されたハッシュ値のうちの1つである第1のハッシュ値と同一の第1のハッシュ値と、前記取得されたハッシュ値のうちの他の1つである第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置内の前記第1のセル領域に記憶されている場合、前記記憶処理手段が前記データを記憶させるセル領域から当該第1のセル領域を消去する処理を行うセル領域消滅処理手段を備える情報処理装置。
  8.  請求項1乃至請求項7のいずれか一項に記載の情報処理装置であって、
     前記書込要求に含まれるデータは、ファイルとして取り扱われる一連のデータを所定のデータサイズ毎に分割したデータブロックとしてのセグメントである情報処理装置。
  9.  記憶装置を備えるとともに、
     データを含む書込要求を受け付ける書込要求受付手段と、
     前記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
     前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて前記記憶装置に記憶されていない場合、前記書込要求に含まれるデータと、前記取得された第1のハッシュ値と、前記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
     を備える情報処理システム。
  10.  請求項9に記載の情報処理システムであって、
     前記取得された第1のハッシュ値と同一の第1のハッシュ値と、前記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置に記憶されている場合、以降において前記ハッシュ値取得処理手段が前記第1のハッシュ値を取得するために用いるハッシュ関数を、前記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を備える情報処理システム。
  11.  データを含む書込要求を受け付け、
     前記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行い、
     前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、前記書込要求に含まれるデータと、前記取得された第1のハッシュ値と、前記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する、情報処理方法。
  12.  請求項11に記載の情報処理方法であって、
     前記取得された第1のハッシュ値と同一の第1のハッシュ値と、前記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置に記憶されている場合、以降において前記第1のハッシュ値を取得するために用いるハッシュ関数を、前記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行う、情報処理方法。
  13.  情報処理装置に、
     データを含む書込要求を受け付ける書込要求受付手段と、
     前記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
     前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、前記書込要求に含まれるデータと、前記取得された第1のハッシュ値と、前記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
     を実現させるためのプログラム。
  14.  請求項13に記載のプログラムであって、
     前記情報処理装置に、更に、
     前記取得された第1のハッシュ値と同一の第1のハッシュ値と、前記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置に記憶されている場合、以降において前記ハッシュ値取得処理手段が前記第1のハッシュ値を取得するために用いるハッシュ関数を、前記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を実現させるためのプログラム。
PCT/JP2009/005336 2008-12-19 2009-10-14 情報処理装置 WO2010070794A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/129,757 US8396837B2 (en) 2008-12-19 2009-10-14 Information processing apparatus
EP09833104.4A EP2362317A4 (en) 2008-12-19 2009-10-14 INFORMATION PROCESSING DEVICE

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008323077A JP4962483B2 (ja) 2008-12-19 2008-12-19 情報処理装置
JP2008-323077 2008-12-19

Publications (1)

Publication Number Publication Date
WO2010070794A1 true WO2010070794A1 (ja) 2010-06-24

Family

ID=42268480

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/005336 WO2010070794A1 (ja) 2008-12-19 2009-10-14 情報処理装置

Country Status (4)

Country Link
US (1) US8396837B2 (ja)
EP (1) EP2362317A4 (ja)
JP (1) JP4962483B2 (ja)
WO (1) WO2010070794A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11126418B2 (en) * 2012-10-11 2021-09-21 Mcafee, Llc Efficient shared image deployment
US9172698B1 (en) 2012-10-12 2015-10-27 Ut-Battelle, Llc System and method for key generation in security tokens
US20140143680A1 (en) * 2012-11-21 2014-05-22 Guidance Software, Inc. Segmented graphical review system and method
JP5444506B1 (ja) 2013-03-29 2014-03-19 株式会社東芝 データの重複をハッシュテーブルに基づいて排除するためのストレージシステム
WO2021015203A1 (ja) * 2019-07-23 2021-01-28 株式会社ソニー・インタラクティブエンタテインメント ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH021052A (ja) * 1988-06-08 1990-01-05 Nec Corp 多段構成ハッシュ表によるシンボル登録・検索方式
JPH0962697A (ja) * 1995-08-29 1997-03-07 Nec Corp 商品コード検索方式
WO2006094366A1 (en) * 2005-03-11 2006-09-14 Rocksoft Limited Method for indexing in a reduced-redundancy storage system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7310644B2 (en) * 2001-06-06 2007-12-18 Microsoft Corporation Locating potentially identical objects across multiple computers
JP4991283B2 (ja) * 2003-02-21 2012-08-01 カリンゴ・インコーポレーテッド コンテンツベースのアドレシングにおける追加ハッシュ関数
US7600125B1 (en) * 2004-12-23 2009-10-06 Symantec Corporation Hash-based data block processing with intermittently-connected systems
US7805470B2 (en) * 2005-06-23 2010-09-28 Emc Corporation Methods and apparatus for managing the storage of content in a file system
US7734603B1 (en) * 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
US7831793B2 (en) 2006-03-01 2010-11-09 Quantum Corporation Data storage system including unique block pool manager and applications in tiered storage
US7937428B2 (en) * 2006-12-21 2011-05-03 International Business Machines Corporation System and method for generating and using a dynamic bloom filter

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH021052A (ja) * 1988-06-08 1990-01-05 Nec Corp 多段構成ハッシュ表によるシンボル登録・検索方式
JPH0962697A (ja) * 1995-08-29 1997-03-07 Nec Corp 商品コード検索方式
WO2006094366A1 (en) * 2005-03-11 2006-09-14 Rocksoft Limited Method for indexing in a reduced-redundancy storage system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HIROSHI YUKI: "Yuki Hiroshi no C# de Manabu Algorithm to Data Kozo Dai 7 Kai 'Hashing'", C MAGAZINE, vol. 17, no. 11, 1 November 2005 (2005-11-01), pages 103 - 110, XP008168988 *

Also Published As

Publication number Publication date
EP2362317A1 (en) 2011-08-31
EP2362317A4 (en) 2015-01-07
US20110238639A1 (en) 2011-09-29
JP4962483B2 (ja) 2012-06-27
JP2010146308A (ja) 2010-07-01
US8396837B2 (en) 2013-03-12

Similar Documents

Publication Publication Date Title
JP6804668B2 (ja) ブロックデータ検証方法および装置
US10127233B2 (en) Data processing method and device in distributed file storage system
US10102218B2 (en) File system with per-extent checksums
US8719237B2 (en) Method and apparatus for deleting duplicate data
JP5943430B2 (ja) 分散記憶システムおよび分散記憶方法
US8725969B2 (en) Distributed content storage system supporting different redundancy degrees
US20120323972A1 (en) Concurrently accessed hash table
WO2010070794A1 (ja) 情報処理装置
US20070162523A1 (en) System and method for storing a data file backup
CN108874987B (zh) 表项管理方法、装置及交换芯片
US9733835B2 (en) Data storage method and storage server
CN110334094B (zh) 一种基于倒排索引的数据查询方法、***、装置及设备
JP2011170667A (ja) ファイル同期システム、ファイル同期方法およびファイル同期プログラム
CN106021462A (zh) 集群文件***文件存储的方法及集群文件***
CN109325022B (zh) 一种数据处理方法和装置
WO2017020757A1 (en) Rebalancing and elastic storage scheme with elastic named distributed circular buffers
JP2011154496A (ja) アクセス権設定プログラム、アクセス権設定装置及びアクセス権管理システム
US11681653B2 (en) Namespace representation and enhanced browsability for replicated file systems
US20130218851A1 (en) Storage system, data management device, method and program
US20120150924A1 (en) Apparatus for supporting continuous read/write in asymmetric storage system and method thereof
JP2015069215A (ja) 情報処理装置,情報処理システム,制御プログラム及び制御方法
JP2012243039A (ja) スナップショットデータ保管方法
CN112783835A (zh) 索引管理方法、装置及电子设备
US20140325271A1 (en) Terminal device, information processing method, and computer program product
JP2010191903A (ja) 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム

Legal Events

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

Ref document number: 09833104

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 13129757

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2009833104

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE