WO2021015203A1 - ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム - Google Patents

ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム Download PDF

Info

Publication number
WO2021015203A1
WO2021015203A1 PCT/JP2020/028297 JP2020028297W WO2021015203A1 WO 2021015203 A1 WO2021015203 A1 WO 2021015203A1 JP 2020028297 W JP2020028297 W JP 2020028297W WO 2021015203 A1 WO2021015203 A1 WO 2021015203A1
Authority
WO
WIPO (PCT)
Prior art keywords
value
digest
path
digest value
common parameter
Prior art date
Application number
PCT/JP2020/028297
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 US17/625,039 priority Critical patent/US20220292062A1/en
Priority to JP2021534049A priority patent/JP7282892B2/ja
Publication of WO2021015203A1 publication Critical patent/WO2021015203A1/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/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • 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/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • 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/178Techniques for file synchronisation in file systems
    • G06F16/1787Details of non-transparently synchronising file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Definitions

  • the present invention relates to a digest value calculation device, an access device, a digest value calculation method, an access method, and a program.
  • UNIX registered trademark
  • information about objects in the file system such as files and directories is recorded in the inode.
  • an object such as a file or directory is created
  • one inode is assigned to that object. That is, the object and the inode are associated with each other on a one-to-one basis.
  • the digest value corresponding to the new object may collide with the digest value corresponding to the already existing object.
  • a collision resolver that manages the path of the object and the inode number in association with each other is generated. Then, for these objects, when the inode number is specified, a full-text match search for the collision resolver using the path as a key is executed, so that it takes time to access the inode.
  • a collision resolver is unnecessary if the paths of all objects are determined and the digest values that correspond to each path do not collide with each other are determined.
  • the present invention has been made in view of the above circumstances, and one of the objects thereof is a digest value calculation device, an access device, and a digest having a low possibility of collision of digest values even though the calculation load of the digest value is light. To provide value calculation methods, access methods and programs.
  • the digest value calculation device includes a parameter value determination unit for determining the value of a common parameter commonly used for each of a plurality of paths associated with the inode, and the plurality of parameters. For each of the paths, a digest value calculation unit that calculates a digest value corresponding to the path based on the value of the common parameter and the name of the path, a digest value corresponding to the path, and an inode corresponding to the path. Includes a mapping unit that associates with.
  • a confirmation unit for confirming the collision of the calculated digest values is further included, and the parameter value determination unit determines the value of the common parameter when the collision of the digest values is confirmed. After the change, the digest value calculation unit recalculates the digest value based on the changed value of the common parameter.
  • the parameter value determination unit determines the value of the first common parameter and the value of the second common parameter
  • the digest value calculation unit determines a part of the name of the path and the first.
  • the value of the internal state is calculated based on the value of the common parameter of, and the digest value calculation unit uses the value of the internal state, the rest of the name of the path, and the value of the second common parameter.
  • the digest value is recalculated based on.
  • a confirmation unit for confirming the collision of the calculated digest value and a holding unit for holding the value of the internal state are further included, and the parameter value determination unit confirms the collision of the digest value.
  • the value of the second common parameter is changed, and the digest value calculation unit is based on the held internal state value and the changed value of the second common parameter.
  • the digest value may be recalculated.
  • the parameter value determining unit either has the value of the first common parameter or the value of the second common parameter, depending on the mode of the collision.
  • the digest value calculation unit uses the retained internal state value and the changed value of the second common parameter. , The digest value is recalculated, and when the value of the first common parameter is changed, the digest value calculation unit is based on the changed value of the first common parameter. The internal state value and the digest value may be recalculated.
  • the access device has a storage unit that stores data indicating the correspondence between the common parameter value and the digest value and the eye node, a path name specifying unit that specifies the path name, and the data.
  • a digest value calculation unit that calculates the digest value corresponding to the name of the path based on the value of the common parameter, and an access unit that accesses the eye node associated with the calculated digest value in the data. including.
  • the digest value calculation method includes a step of determining the value of a common parameter commonly used for each of the plurality of paths associated with the inode, and the step of determining the value of the common parameter for each of the plurality of paths. It includes a step of calculating a digest value corresponding to the path based on the value and the name of the path, and a step of associating the digest value corresponding to the path with the inode corresponding to the path.
  • the access method includes a step of specifying a path name, a step of calculating a digest value corresponding to the path name based on a common parameter value, and a correspondence between the digest value and the eye node. In the data shown, it includes a step of accessing the eye node associated with the calculated digest value.
  • the program according to the present invention includes a procedure for determining a common parameter value commonly used for each of a plurality of paths associated with an inode, a common parameter value and the path for each of the plurality of paths.
  • the computer is made to execute the procedure of calculating the digest value corresponding to the path and the procedure of associating the digest value corresponding to the path with the inode corresponding to the path based on the name of.
  • another program according to the present invention shows a procedure for specifying a path name, a procedure for calculating a digest value corresponding to the path name based on a common parameter value, and a correspondence between the digest value and an inode.
  • the computer is made to execute the procedure of accessing the inode associated with the calculated digest value.
  • FIG. 1 is a configuration diagram of an information processing device 10 and an information processing device 12 according to an embodiment of the present invention.
  • the information processing device 10 and the information processing device 12 according to the present embodiment are, for example, computers such as a game console and a personal computer.
  • the first user such as a program developer of a game program or the like uses the information processing device 10
  • the second user who uses the developed program uses the information processing device 12.
  • the information processing device 10 includes, for example, a processor 10a, a storage unit 10b, a communication unit 10c, an operation unit 10d, and a display unit 10e.
  • the information processing device 12 includes, for example, a processor 12a, a storage unit 12b, a communication unit 12c, an operation unit 12d, and a display unit 12e.
  • the processor 10a is, for example, a program control device such as a CPU that operates according to a program installed in the information processing device 10.
  • the processor 12a is, for example, a program control device such as a CPU that operates according to a program installed in the information processing device 12.
  • the storage unit 10b and the storage unit 12b are storage elements such as ROM and RAM, a hard disk drive, and the like.
  • a program or the like executed by the processor 10a is stored in the storage unit 10b.
  • a program or the like executed by the processor 12a is stored in the storage unit 12b.
  • the communication unit 10c and the communication unit 12c are communication interfaces such as a network board and a wireless LAN module.
  • the operation unit 10d and the operation unit 12d are user interfaces such as a keyboard, a mouse, and a controller for a game console.
  • the operation unit 10d receives the user's operation input and outputs a signal indicating the content to the processor 10a. Further, the operation unit 12d receives the operation input of the user and outputs a signal indicating the content to the processor 12a.
  • the display unit 10e is a display device such as a liquid crystal display, and displays various images according to the instructions of the processor 10a.
  • the display unit 12e is a display device such as a liquid crystal display, and displays various images according to the instructions of the processor 12a.
  • the information processing device 10 and the information processing device 12 include a communication interface such as a network board, an optical disk drive for reading an optical disk such as a DVD-ROM or a Blu-ray (registered trademark) disk, a USB (Universal Serial Bus) port, and the like. May include.
  • distribution data including a plurality of objects such as files and directories and flat path table data generated by the information processing device 10 is provided to the information processing device 12. Then, in the information processing device 12, access to the flat path data and the object included in the distribution data is executed.
  • FIG. 2 is a diagram showing an example of a data structure of flat path table data according to the present embodiment.
  • the flat path table data includes a plurality of records including digest value data, path name data, and an inode number. Records are associated one-to-one with objects such as files and directories. Further, the record is associated with the inode in which the information about the object is recorded on a one-to-one basis by the inode number which is the identification information of the inode.
  • the path name data of the record associated with the object is set to the path name of the object (for example, the name of the full path), and the eye node number of the record is set to the eye node number corresponding to the object.
  • the digest value calculated based on the path name of the object is set in the value of the digest value data included in the record associated with the object.
  • the digest value data according to the present embodiment is, for example, 64-bit predetermined length data.
  • the flat path table data includes data indicating common parameters commonly used for each of a plurality of paths associated with each inode.
  • the common parameters according to the present embodiment include a first common parameter and a second common parameter.
  • the first common parameter is referred to as an initialization vector
  • the second common parameter is referred to as a finalization vector.
  • the flat path table data includes the initialization vector data indicating the initialization vector and the finalization vector data indicating the finalization vector.
  • the value of the initialization vector and the value of the finalization vector according to the present embodiment are both defined to have a predetermined length of 64 bits.
  • the flat path table data including the calculation of the digest value corresponding to each path name is generated. Is executed.
  • the developed objects such as files and directories, and the distribution data including the generated flat path table data are supplied from the information processing device 10 to the information processing device 12.
  • the distributed data is supplied to the information processing apparatus 12 via, for example, a computer-readable information storage medium such as an optical disk, a magnetic disk, a magnetic tape, a magneto-optical disk, or a flash memory, or via the Internet or the like. You may.
  • the digest value is calculated based on the value of the common parameter and the path name of the object. Then, using the calculated digest value as a key, the inode number corresponding to the digest value is specified. Then, access to the inode or object corresponding to the inode number is executed.
  • the records according to this embodiment are managed in ascending or descending order of the digest values. Therefore, according to the present embodiment, by using a high-speed search method such as a binary search, the inode number can be specified at high speed using the digest value as a key.
  • FIG. 3 is a functional block diagram showing an example of the functions implemented in the information processing device 10 according to the present embodiment. It should be noted that the information processing apparatus 10 according to the present embodiment does not have to be equipped with all the functions shown in FIG. 3, and may be equipped with functions other than the functions shown in FIG.
  • the information processing apparatus 10 includes an object storage unit 20, a parameter value determination unit 22, a digest value calculation unit 24, an internal state holding unit 26, a record generation unit 28, and a collision confirmation. Part 30 is included.
  • the object storage unit 20 and the internal state holding unit 26 are mainly mounted with the storage unit 10b.
  • the parameter value determination unit 22, the digest value calculation unit 24, the record generation unit 28, and the collision confirmation unit 30 are mainly implemented with the processor 10a.
  • the above functions may be implemented by executing the program including the instructions corresponding to the above functions installed in the information processing device 10 which is a computer on the processor 10a.
  • This program may be supplied to the information processing apparatus 10 via a computer-readable information storage medium such as an optical disk, a magnetic disk, a magnetic tape, a magneto-optical disk, or a flash memory, or via the Internet or the like. ..
  • the object storage unit 20 stores, for example, an object such as a file or a directory corresponding to the developed program or data, and an inode of the object.
  • the parameter value determination unit 22 determines, for example, the value of a common parameter commonly used for each of the plurality of paths associated with the inode.
  • the value of the 64-bit initialization vector and the value of the 64-bit finalization vector are determined.
  • the value of the pseudo-random number generated by using the pseudo-random number generation function may be used as the value of the common parameter.
  • the value input by the user of the information processing apparatus 10 may be determined as the value of the common parameter.
  • the value of the initialization vector and the value of the finalization vector may be the same or different.
  • the digest value calculation unit 24 calculates, for example, the digest value corresponding to the path based on the value of the common parameter and the name of the path for each of the plurality of paths.
  • a 64-bit digest value is calculated.
  • FIG. 4 is a diagram schematically showing an example of path name division executed when calculating the digest value.
  • the character code corresponding to the name of the path is divided into 64 bits (8 bytes) corresponding to 8 characters.
  • the end is padded with a predetermined value (for example, zero) so as to be an integral multiple of 64 bits.
  • the 64-bit data after this division will be referred to as block B.
  • n blocks B (1) to B (n) are generated by dividing the path name.
  • the digest value calculation unit 24 calculates the value of the internal state based on the value of the initialization vector and a part of the name of the path. For example, the digest value calculation unit 24 calculates the internal state value based on the value of the initialization vector and the value of (n-1) blocks B (1) to B (n-1) from the beginning. calculate.
  • the value of the internal state according to the present embodiment is, for example, 192 (64 ⁇ 3) bits. Then, the digest value calculation unit 24 causes the internal state holding unit 26 to hold the value of the internal state.
  • the digest value calculation unit 24 calculates the digest value based on the value of the internal state, the rest of the name of the path, and the value of the finalization vector. For example, the digest value calculation unit 24 calculates the digest value based on the value of the internal state, the value of the block B (n) at the end, and the value of the finalization vector.
  • the internal state holding unit 26 holds the internal state value in the calculation of the digest value by the digest value calculating unit 24, for example, as described above.
  • the record generation unit 28 uses, for example, path name data indicating the name of the path of the object, digest value data indicating the digest value calculated based on the name of the path, and the eye node number of the object. Generate a record that contains. The records generated in this way are managed in ascending or descending order of the values of the digest value data. In this way, the record generation unit 28 associates the digest value corresponding to the path with the inode corresponding to the path.
  • the collision confirmation unit 30 confirms the collision of the calculated digest value, for example.
  • the collision confirmation unit 30 confirms, for example, whether or not the newly calculated digest value matches any of the digest values calculated based on other path names.
  • the parameter value determination unit 22 changes the value of the common parameter.
  • a new pseudo-random number value may be used as the value of the changed common parameter.
  • a value newly input by the user may be used as the value of the common parameter after the change.
  • the digest value calculation unit 24 recalculates the digest value based on the changed common parameter value.
  • the parameter value determination unit 22 may change only the value of the finalization vector without changing the value of the initialization vector.
  • the value of the internal state for example, the value of B (n)
  • the digest value may be recalculated based on. In this way, the time required for recalculating the digest value can be shortened.
  • the parameter value determining unit 22 may change either the value of the initialization vector or the value of the finalization vector according to the mode of the collision. .. For example, even if the value of the finalization vector is changed, the value of the initialization vector may be changed when collisions are confirmed a predetermined number of times in succession. Further, in this case, both the value of the initialization vector and the value of the finalization vector may be changed.
  • the digest value is recalculated based on the retained internal state value and the changed finalization vector value as described above. You may. Then, when the value of the initialization vector is changed, the internal state value and the digest value may be recalculated for all path names.
  • the parameter value determination unit 22 determines the value of the common parameter (S101).
  • the value of the initialization vector and the value of the finalization vector are determined.
  • the digest value calculation unit 24 selects one path name of the object for which the digest value calculation process shown in S103 has not been executed yet (S102).
  • the digest value calculation unit 24 executes the digest value calculation process based on the path name selected in the process shown in S102 (S103). The details of the process shown in S103 will be described later, but the process shown in S103 generates a record including the digest value data indicating the digest value corresponding to the path name selected in the process shown in S102.
  • the collision confirmation unit 30 confirms whether or not a collision has occurred with respect to the digest value calculated by the process shown in S103 (S104).
  • S104 the digest value calculated by the process shown in S103
  • the collision confirmation unit 30 confirms whether or not a collision has occurred with respect to the digest value calculated by the process shown in S103 (S104).
  • S104 the digest value calculated by the process shown in S103.
  • the parameter value determination unit 22 changes the value of the finalization vector (S105).
  • the digest value calculation unit 24 recalculates the digest value for the path name in which the corresponding internal state is saved (S106), and returns to the process shown in S104.
  • the value of the digest value data included in the record generated in the process shown in S205 described later is updated.
  • the digest value calculation unit 24 confirms whether or not the digest values have been calculated for all the path names (S107).
  • the flat path table data includes, for example, a plurality of records generated by the process shown in S205 described later. Further, the flat path table data includes, for example, initialization vector data indicating the value of the final initialization vector and finalization vector data indicating the value of the final finalization vector.
  • the information processing apparatus 10 may discard the generated records and restart the processing after S102 for all the path names.
  • the digest value calculation unit 24 divides the path names selected in the process shown in S102 to generate the above-mentioned plurality of blocks B (S201).
  • B (1) to B (n) are generated.
  • the digest value calculation unit 24 determines the value of the internal state corresponding to the path name selected in the process shown in S102 (S202).
  • FIG. 7 is a diagram showing an example of source code showing the contents of the digest value calculation process.
  • the values of the variables a [0], a [1], and a [2] are calculated based on the values of the initialization vector (see (1) in FIG. 7).
  • the value of the initialization vector itself is set in the value of the variable a [0].
  • the value of the variable a [1] is set to the value obtained by rotating the value of the initialization vector by 11 bits.
  • the value of the variable a [2] is set to the value obtained by rotating the value of the initialization vector by 23 bits.
  • N-bit rotation corresponds to the process of moving the N-bit at the end of the value to the beginning. That is, the value of the variable a [1] is set to the value obtained by moving the last 11 bits of the value of the initialization vector to the beginning. The value of the variable a [2] is set to the value obtained by moving the last 23 bits of the value of the initialization vector to the beginning.
  • the internal state update process with the value of the block B as an argument is executed in the order of blocks B (1) to B (n-1) (see (2) in FIG. 7).
  • the value of the argument is expressed as round_input.
  • the value of the variable a [0] is updated to the value of the exclusive OR (XOR) of the current value of the variable a [0] and the value of the block B which is an argument. ..
  • the value of the variable v [0] is set by rotating the exclusive OR of the value of the variable a [0] and the value of the variable a [1] by 5 bits.
  • the value of the variable v [1] is set by rotating the exclusive OR of the value of the variable a [2] and the value of the variable a [0] by 17 bits. Then, the value of the variable v [2] is set to the value obtained by rotating the exclusive OR of the value of the variable a [0] and the value of the variable a [1] by 1 bit.
  • the value obtained by rotating the exclusive OR of the value of the variable a [0] and the value of the variable v [0] by 53 bits is set in the value of the variable t [0].
  • the value of the variable t [1] is set to the value obtained by rotating the exclusive OR of the value of the variable a [1] and the value of the variable v [1] by 11 bits.
  • the value of the variable t [2] is set by rotating the exclusive OR of the value of the variable a [2] and the value of the variable v [2] by 59 bits.
  • the value of the variable a [0] is the value of the variable t [0], the logical product (AND) of the value obtained by bit-inverting the value of the variable t [1] and the value of the variable t [2], and It is updated to the value of the exclusive OR of the values of the constant rc.
  • the value of the variable a [1] is exclusive with the value of the variable t [1], the bit-inverted value of the value of the variable t [2], and the logical product of the value of the variable t [0]. It is updated to the value of the logical sum.
  • the value of the variable a [2] is exclusive with the value of the variable t [2], the bit-inverted value of the value of the variable t [0], and the logical product of the value of the variable t [1]. It is updated to the value of the logical sum.
  • the digest value calculation unit 24 causes the internal state holding unit 26 to hold the value of the internal state determined by the process shown in S202 (S203).
  • the values (internal state values) of the variables a [0], a [1], and a [2] when the internal state update process for the block B (n-1) is completed are internal. It is held by the state holding unit 26.
  • the digest value calculation unit 24 calculates the digest value based on the path name selected in the process shown in S102 based on the value of the internal state held in the process shown in S203 and the value of the finalization vector. (S204).
  • the internal state update process in which the value of the exclusive OR of the value of block B (n) and the value of the finalization vector is used as an argument is executed (see (3) in FIG. 7).
  • the variables a [0], a [1], and a [2] held in the internal state holding unit 26 are used. Then, the value of the variable a [0] at the end of the internal state update process is determined as the digest value based on the path name selected in the process shown in S102.
  • the record generation unit 28 generates a new record (S205), and the process shown in this processing example is completed.
  • the digest value data indicating the digest value calculated in the process shown in S204
  • the path name data indicating the path name selected in the process shown in S102
  • the inode number of the object corresponding to the path name are input.
  • a record containing it is generated.
  • FIG. 8 is a functional block diagram showing an example of the functions implemented in the information processing device 12 according to the present embodiment. It should be noted that the information processing apparatus 12 according to the present embodiment does not have to be equipped with all the functions shown in FIG. 8, and may be equipped with functions other than the functions shown in FIG.
  • the information processing apparatus 12 functionally includes, for example, a data storage unit 40, a path name identification unit 42, a digest value calculation unit 44, and an access unit 46.
  • the data storage unit 40 mainly implements the storage unit 12b.
  • the path name specifying unit 42, the digest value calculation unit 44, and the access unit 46 are mainly implemented with the processor 12a.
  • the above functions may be implemented by executing the program including the instructions corresponding to the above functions installed in the information processing device 12 which is a computer on the processor 12a.
  • This program may be supplied to the information processing apparatus 12 via a computer-readable information storage medium such as an optical disk, a magnetic disk, a magnetic tape, a magneto-optical disk, or a flash memory, or via the Internet or the like. .. Further, this program may be supplied from the information processing device 10 to the information processing device 12.
  • the data storage unit 40 stores distribution data including, for example, objects such as a plurality of files and directories developed by the information processing device 10 and flat path table data.
  • the distribution data includes initialization vector data and finalization vector data indicating the values of common parameters.
  • the distribution data includes a record showing the correspondence between the digest value and the inode.
  • the path name specifying unit 42 specifies, for example, the name of the path.
  • the path name specifying unit 42 specifies, for example, the path name of an object for which access is requested when the program is executed in the information processing device 12.
  • the digest value calculation unit 44 calculates the digest value based on the path name specified by the path name specifying unit 42, for example.
  • the access unit 46 accesses, for example, the inode associated with the digest value calculated by the digest value calculation unit 44 in the distribution data.
  • the access unit 46 specifies, for example, a record including a digest value calculated by the digest value calculation unit 44. Then, the access unit 46 accesses, for example, the inode corresponding to the inode number included in the record.
  • the path name specifying unit 42 specifies the path name for which access is requested (S301).
  • the digest value calculation unit 44 divides the path name specified in the process shown in S301 to generate the above-mentioned plurality of blocks B (S302).
  • B (1) to B (n) are generated.
  • the digest value calculation unit 44 calculates the digest value based on the path name specified in the process shown in S301 (S303).
  • the values of the variables a [0], a [1], and a [2] are calculated based on the value of the initialization vector indicated by the initialization vector data included in the flat path table data (FIG. 7). (See (1)).
  • the internal state update process is executed with the value of the exclusive OR of the value of block B (n) and the value of the finalization vector indicated by the finalization vector data included in the flat path table data as an argument ( (See (3) in FIG. 7).
  • the value of the variable a [0] at the end of the internal state update process is determined to be the digest value based on the path name specified in the process shown in S301.
  • the access unit 46 identifies the record including the digest value calculated by the process shown in S303 (S304).
  • the access unit 46 specifies the inode number included in the record specified by the process shown in S304 (S305).
  • the access unit 46 accesses the inode identified by the inode number specified in the process shown in S305 and the object corresponding to the inode (S306), and the process shown in this processing example is completed.
  • the digest values corresponding to the paths that do not collide with each other are determined. Therefore, a collision resolver that manages the object paths and the inode numbers in association with each other is unnecessary. It becomes. In this way, according to the present embodiment, it is possible to prevent it from taking a long time to access the inode by executing the full-text match search for the collision resolver using the path as a key.
  • the digest value is finally obtained in the information processing apparatus 10 by changing the value of the common parameter and recalculating the digest value. It is likely that they can be prevented from colliding with each other.
  • the calculation of the digest value is executed based on the common parameters commonly used by the information processing device 10 and the information processing device 12, and the calculation load is light. The possibility of collision of digest values is reduced.
  • the present invention is not limited to the above-described embodiment.

Landscapes

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

Abstract

ダイジェスト値の計算負荷が軽いにも関わらずダイジェスト値の衝突可能性が低いダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラムを提供する。パラメータ値決定部(22)は、それぞれアイノードに対応付けられる複数のパスのそれぞれについて共通で用いられる共通パラメータの値を決定する。ダイジェスト値計算部(24)は、複数のパスのそれぞれについて、共通パラメータの値と当該パスの名称とに基づいて、当該パスに対応するダイジェスト値を計算する。レコード生成部(28)は、パスに対応するダイジェスト値と当該パスに対応するアイノードとを対応付ける。

Description

ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム
 本発明は、ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラムに関する。
 UNIX(登録商標)では、アイノード(inode)に、ファイルやディレクトリなどのファイルシステムにおけるオブジェクトに関する情報が記録されている。ファイルやディレクトリなどのオブジェクトが生成されると、当該オブジェクトに1つのアイノードが割り当てられる。すなわち、オブジェクトとアイノードとは1対1で対応付けられる。
 また、オブジェクトのパスに対応するダイジェスト値とアイノードの識別情報であるアイノード番号とを対応付けて管理することで、アイノードへのアクセスを高速化させる技術が知られている。この技術では、オブジェクトのパスに基づいて、当該オブジェクトに対応するダイジェスト値が計算される。そして、当該ダイジェスト値に対応するアイノード番号が特定される。ダイジェスト値を昇順や降順で管理し、二分探索などの探索手法を用いることで、アイノードへのアクセスの高速化が可能となる。
 ここで、新たなオブジェクトに対応するダイジェスト値が、既に存在するオブジェクトに対応するダイジェスト値と衝突することがある。この場合、これらのオブジェクトについては、当該オブジェクトのパスとアイノード番号とを対応付けて管理するコリジョンリゾルバが生成される。そして、これらのオブジェクトについては、アイノード番号の特定の際に、パスをキーとしたコリジョンリゾルバに対する全文一致検索が実行されるため、アイノードへのアクセスに時間がかかってしまう。
 新たなオブジェクトが生成されないことが保証されているシステムでは、すべてのオブジェクトのパスが確定した際に、それぞれのパスに対応する互いに衝突しないダイジェスト値を決定すれば、コリジョンリゾルバは不要である。
 ここでダイジェスト値の計算に単純なアルゴリズムを用いてしまうと、ダイジェスト値が衝突する可能性が高まってしまう。一方で、アイノードへのアクセスを高速化させるためには、ダイジェスト値の計算負荷を抑える必要がある。
 本発明は上記実情に鑑みてなされたものであって、その目的の一つは、ダイジェスト値の計算負荷が軽いにも関わらずダイジェスト値の衝突可能性が低いダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラムを提供することにある。
 上記課題を解決するために、本発明に係るダイジェスト値計算装置は、それぞれアイノードに対応付けられる複数のパスのそれぞれについて共通で用いられる共通パラメータの値を決定するパラメータ値決定部と、前記複数のパスのそれぞれについて、前記共通パラメータの値と当該パスの名称とに基づいて、当該パスに対応するダイジェスト値を計算するダイジェスト値計算部と、前記パスに対応するダイジェスト値と当該パスに対応するアイノードとを対応付ける対応付け部と、を含む。
 本発明の一態様では、計算される前記ダイジェスト値の衝突を確認する確認部、をさらに含み、前記パラメータ値決定部は、前記ダイジェスト値の衝突が確認された際に、前記共通パラメータの値を変更し、前記ダイジェスト値計算部は、変更後の前記共通パラメータの値に基づいて、前記ダイジェスト値を再計算する。
 あるいは、前記パラメータ値決定部は、第1の共通パラメータの値と、第2の共通パラメータの値と、を決定し、前記ダイジェスト値計算部は、前記パスの名称の一部と、前記第1の共通パラメータの値と、に基づいて、内部状態の値を計算し、前記ダイジェスト値計算部は、前記内部状態の値と、前記パスの名称の残りと、前記第2の共通パラメータの値と、に基づいて、前記ダイジェスト値を再計算する。
 この態様では、計算される前記ダイジェスト値の衝突を確認する確認部と、前記内部状態の値を保持する保持部と、をさらに含み、前記パラメータ値決定部は、前記ダイジェスト値の衝突が確認された際に、前記第2の共通パラメータの値を変更し、前記ダイジェスト値計算部は、保持されている前記内部状態の値と、変更後の前記第2の共通パラメータの値と、に基づいて、前記ダイジェスト値を再計算してもよい。
 さらに、前記パラメータ値決定部は、前記ダイジェスト値の衝突が確認された際に、当該衝突の態様に応じて、前記第1の共通パラメータの値、又は、前記第2の共通パラメータの値のいずれかを変更し、前記第2の共通パラメータの値が変更された場合は、前記ダイジェスト値計算部は、保持されている前記内部状態の値と、変更後の前記第2の共通パラメータの値と、に基づいて、前記ダイジェスト値を再計算し、前記第1の共通パラメータの値が変更された場合は、前記ダイジェスト値計算部は、変更後の前記第1の共通パラメータの値に基づいて、前記内部状態の値、及び、前記ダイジェスト値を再計算してもよい。
 また、本発明に係るアクセス装置は、共通パラメータの値、及び、ダイジェスト値とアイノードとの対応を示すデータを記憶する記憶部と、パスの名称を特定するパス名特定部と、前記データが示す共通パラメータの値に基づいて、前記パスの名称に対応するダイジェスト値を計算するダイジェスト値計算部と、前記データにおいて、計算される前記ダイジェスト値に対応付けられているアイノードにアクセスするアクセス部と、を含む。
 また、本発明に係るダイジェスト値計算方法は、それぞれアイノードに対応付けられる複数のパスのそれぞれについて共通で用いられる共通パラメータの値を決定するステップと、前記複数のパスのそれぞれについて、前記共通パラメータの値と当該パスの名称とに基づいて、当該パスに対応するダイジェスト値を計算するステップと、前記パスに対応するダイジェスト値と当該パスに対応するアイノードとを対応付けるステップと、を含む。
 また、本発明に係るアクセス方法は、パスの名称を特定するステップと、共通パラメータの値に基づいて、前記パスの名称に対応するダイジェスト値を計算するステップと、ダイジェスト値とアイノードとの対応を示すデータにおいて、計算される前記ダイジェスト値に対応付けられているアイノードにアクセスするステップと、を含む。
 また、本発明に係るプログラムは、それぞれアイノードに対応付けられる複数のパスのそれぞれについて共通で用いられる共通パラメータの値を決定する手順、前記複数のパスのそれぞれについて、前記共通パラメータの値と当該パスの名称とに基づいて、当該パスに対応するダイジェスト値を計算する手順、前記パスに対応するダイジェスト値と当該パスに対応するアイノードとを対応付ける手順、をコンピュータに実行させる。
 また、本発明に係る別のプログラムは、パスの名称を特定する手順、共通パラメータの値に基づいて、前記パスの名称に対応するダイジェスト値を計算する手順、ダイジェスト値とアイノードとの対応を示すデータにおいて、計算される前記ダイジェスト値に対応付けられているアイノードにアクセスする手順、をコンピュータに実行させる。
本発明の一実施形態に係る情報処理装置の構成の一例を示す図である。 フラットパステーブルデータのデータ構造の一例を示す図である。 本発明の一実施形態に係る、第1のユーザが利用する情報処理装置の機能の一例を示す機能ブロック図である。 パス名の分割の一例を模式的に示す図である。 本発明の一実施形態に係る情報処理装置で行われる処理の流れの一例を示すフロー図である。 本発明の一実施形態に係る情報処理装置で行われる処理の流れの一例を示すフロー図である。 ソースコードの一例を示す図である。 本発明の一実施形態に係る、第2のユーザが利用する情報処理装置の機能の一例を示す機能ブロック図である。 本発明の一実施形態に係る情報処理装置で行われる処理の流れの一例を示すフロー図である。
 以下、本発明の一実施形態について図面に基づき詳細に説明する。
 図1は、本発明の一実施形態に係る情報処理装置10、及び、情報処理装置12の構成図である。本実施形態に係る情報処理装置10、及び、情報処理装置12は、例えば、ゲームコンソールやパーソナルコンピュータなどのコンピュータである。
 本実施形態では、ゲームプログラム等のプログラム開発者などといった第1のユーザが情報処理装置10を利用し、開発されたプログラムを利用する第2のユーザが情報処理装置12を利用することとする。
 図1に示すように、本実施形態に係る情報処理装置10は、例えば、プロセッサ10a、記憶部10b、通信部10c、操作部10d、表示部10eを含んでいる。また、本実施形態に係る情報処理装置12は、例えば、プロセッサ12a、記憶部12b、通信部12c、操作部12d、表示部12eを含んでいる。
 プロセッサ10aは、例えば情報処理装置10にインストールされるプログラムに従って動作するCPU等のプログラム制御デバイスである。プロセッサ12aは、例えば情報処理装置12にインストールされるプログラムに従って動作するCPU等のプログラム制御デバイスである。
 記憶部10b、及び、記憶部12bは、ROMやRAM等の記憶素子やハードディスクドライブなどである。記憶部10bには、プロセッサ10aによって実行されるプログラムなどが記憶される。記憶部12bには、プロセッサ12aによって実行されるプログラムなどが記憶される。
 通信部10c、及び、通信部12cは、ネットワークボードや無線LANモジュールなどといった通信インタフェースである。
 操作部10d、及び、操作部12dは、キーボード、マウス、ゲームコンソールのコントローラ等のユーザインタフェースである。操作部10dは、ユーザの操作入力を受け付けて、その内容を示す信号をプロセッサ10aに出力する。また、操作部12dは、ユーザの操作入力を受け付けて、その内容を示す信号をプロセッサ12aに出力する。
 表示部10eは、液晶ディスプレイ等の表示デバイスであって、プロセッサ10aの指示に従って各種の画像を表示する。表示部12eは、液晶ディスプレイ等の表示デバイスであって、プロセッサ12aの指示に従って各種の画像を表示する。
 なお、情報処理装置10、及び、情報処理装置12は、ネットワークボードなどの通信インタフェース、DVD-ROMやBlu-ray(登録商標)ディスクなどの光ディスクを読み取る光ディスクドライブ、USB(Universal Serial Bus)ポートなどを含んでいてもよい。
 本実施形態では、情報処理装置10で生成された、複数のファイルやディレクトリ等のオブジェクトと、フラットパステーブルデータと、を含む配布データが、情報処理装置12に提供される。そして、情報処理装置12において、配布データに含まれるフラットパスデータやオブジェクトへのアクセスが実行される。
 図2は、本実施形態に係るフラットパステーブルデータのデータ構造の一例を示す図である。図2に示すように、フラットパステーブルデータには、ダイジェスト値データ、パス名データ、及び、アイノード番号を含むレコードが複数含まれている。レコードは、ファイルやディレクトリなどのオブジェクトと1対1で対応付けられる。また、レコードは、当該オブジェクトに関する情報が記録されたアイノードと、アイノードの識別情報であるアイノード番号によって1対1で対応付けられる。
 オブジェクトに対応付けられるレコードのパス名データの値には、当該オブジェクトのパス名(例えばフルパスの名称)が設定され、当該レコードのアイノード番号には、当該オブジェクトに対応するアイノード番号が設定される。また、オブジェクトに対応付けられるレコードに含まれるダイジェスト値データの値には、当該オブジェクトのパス名に基づいて計算されるダイジェスト値が設定される。本実施形態に係るダイジェスト値データは、例えば、64ビットの所定長のデータである。
 また、フラットパステーブルデータには、それぞれアイノードに対応付けられる複数のパスのそれぞれについて共通で用いられる共通パラメータを示すデータが含まれている。
 本実施形態に係る共通パラメータには、第1の共通パラメータと第2の共通パラメータがあり、以下、第1の共通パラメータをイニシャライゼーションベクタと呼び、第2の共通パラメータをファイナライゼーションベクタと呼ぶこととする。
 そして、フラットパステーブルデータには、イニシャライゼーションベクタを示すイニシャライゼーションベクタデータと、ファイナライゼーションベクタを示すファイナライゼーションベクタデータと、が含まれることとする。
 本実施形態に係るイニシャライゼーションベクタの値、及び、ファイナライゼーションベクタの値は、いずれも64ビットの所定長であることとする。
 本実施形態では例えば、情報処理装置10において、プログラムの開発が終了し、新たなオブジェクトが生成されなくなった際に、それぞれのパス名に対応するダイジェスト値の計算を含む、フラットパステーブルデータの生成が実行される。
 そして、開発されたファイルやディレクトリ等のオブジェクト、及び、生成されたフラットパステーブルデータを含む配布データが、情報処理装置10から情報処理装置12に供給される。配布データは、例えば、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介して、情報処理装置12に供給されてもよい。
 そして、本実施形態では、情報処理装置12において、オブジェクトへのアクセスが実行される際には、共通パラメータの値と、当該オブジェクトのパス名と、に基づいて、ダイジェスト値が計算される。そして、計算されたダイジェスト値をキーに、当該ダイジェスト値に対応するアイノード番号が特定される。そして、当該アイノード番号に対応するアイノードやオブジェクトへのアクセスが実行される。
 本実施形態に係るレコードは、ダイジェスト値の昇順又は降順となるよう管理される。そのため、本実施形態によれば、二分探索などの高速探索手法を用いることで、ダイジェスト値をキーに、アイノード番号を高速で特定できるようになっている。
 以下、本実施形態に係る情報処理装置10及び情報処理装置12の機能、並びに、情報処理装置10及び情報処理装置12で実行される処理についてさらに説明する。
 図3は、本実施形態に係る情報処理装置10で実装される機能の一例を示す機能ブロック図である。なお、本実施形態に係る情報処理装置10で、図3に示す機能のすべてが実装される必要はなく、また、図3に示す機能以外の機能が実装されていても構わない。
 図3に示すように、情報処理装置10には、機能的には例えば、オブジェクト記憶部20、パラメータ値決定部22、ダイジェスト値計算部24、内部状態保持部26、レコード生成部28、衝突確認部30、が含まれる。オブジェクト記憶部20、内部状態保持部26は、記憶部10bを主として実装される。パラメータ値決定部22、ダイジェスト値計算部24、レコード生成部28、衝突確認部30は、プロセッサ10aを主として実装される。
 以上の機能は、コンピュータである情報処理装置10にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ10aで実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介して情報処理装置10に供給されてもよい。
 オブジェクト記憶部20は、本実施形態では例えば、開発されたプログラムやデータに相当する、ファイルやディレクトリなどのオブジェクト、及び、そのオブジェクトのアイノードを記憶する。
 パラメータ値決定部22は、本実施形態では例えば、それぞれアイノードに対応付けられる複数のパスのそれぞれについて共通で用いられる共通パラメータの値を決定する。ここでは例えば、64ビットのイニシャライゼーションベクタの値と、64ビットのファイナライゼーションベクタの値と、が決定される。ここで例えば、疑似乱数生成関数を用いて生成される疑似乱数の値が共通パラメータの値に用いられてもよい。また、情報処理装置10のユーザによって入力された値が共通パラメータの値に決定されてもよい。また、イニシャライゼーションベクタの値と、ファイナライゼーションベクタの値とは、同じであってもよいし異なっていてもよい。
 ダイジェスト値計算部24は、本実施形態では例えば、複数のパスのそれぞれについて、共通パラメータの値と当該パスの名称とに基づいて、当該パスに対応するダイジェスト値を計算する。ここでは上述のように、64ビットのダイジェスト値が計算される。
 図4は、ダイジェスト値の計算の際に実行されるパス名の分割の一例を模式的に示す図である。本実施形態では例えば、パスの名称に対応する文字コードが8文字に相当する64ビット(8バイト)毎に分割される。ここで、パスの名称に対応する文字コードが64ビットの整数倍でない場合は、64ビットの整数倍となるよう所定値(例えばゼロ)により末尾がパディングされる。以下、この分割後の64ビットのデータをブロックBと呼ぶこととする。図4の例では、パス名の分割によりn個のブロックB(1)~B(n)が生成されている。
 本実施形態では例えば、ダイジェスト値計算部24は、イニシャライゼーションベクタの値と、パスの名称の一部と、に基づいて、内部状態の値を計算する。例えば、ダイジェスト値計算部24は、イニシャライゼーションベクタの値と、先頭から(n-1)個のブロックB(1)~B(n-1)の値と、に基づいて、内部状態の値を計算する。本実施形態に係る内部状態の値は、例えば、192(64×3)ビットである。そして、ダイジェスト値計算部24は、内部状態の値を、内部状態保持部26に保持させる。
 そして、ダイジェスト値計算部24は、内部状態の値と、当該パスの名称の残りと、ファイナライゼーションベクタの値と、に基づいて、ダイジェスト値を計算する。例えば、ダイジェスト値計算部24は、内部状態の値と、末尾のブロックB(n)の値と、ファイナライゼーションベクタの値と、に基づいて、ダイジェスト値を計算する。
 内部状態保持部26は、本実施形態では例えば、上述のように、ダイジェスト値計算部24によるダイジェスト値の計算における内部状態の値を保持する。
 レコード生成部28は、本実施形態では例えば、オブジェクトのパスの名称を示すパス名データ、当該パスの名称に基づいて計算されるダイジェスト値を示すダイジェスト値データ、及び、当該オブジェクトのアイノード番号、を含むレコードを生成する。このようにして生成されるレコードは、ダイジェスト値データの値の昇順又は降順に管理される。このようにして、レコード生成部28は、パスに対応するダイジェスト値と当該パスに対応するアイノードとを対応付ける。
 衝突確認部30は、本実施形態では例えば、計算されるダイジェスト値の衝突を確認する。衝突確認部30は、例えば、新たに計算されたダイジェスト値が、他のパス名に基づいて計算されたいずれかのダイジェスト値と一致するか否かを確認する。
 ここで、衝突が確認された際には、パラメータ値決定部22は、共通パラメータの値を変更する。ここでは例えば、新たな疑似乱数の値が変更後の共通パラメータの値に用いられてもよい。また例えば、ユーザにより新たに入力された値が変更後の共通パラメータの値に用いられてもよい。そして、ダイジェスト値計算部24は、変更後の共通パラメータの値に基づいて、ダイジェスト値を再計算する。
 ここで、パラメータ値決定部22は、イニシャライゼーションベクタの値は変更せずに、ファイナライゼーションベクタの値だけ変更してもよい。この場合、対応する内部状態の値が保持されているパス名について、当該内部状態の値と、当該パスの名称の残り(例えばB(n)の値)と、変更後のファイナライゼーションベクタの値と、に基づいて、ダイジェスト値が再計算されてもよい。このようにすれば、ダイジェスト値の再計算に要する時間を短くすることができる。
 また、パラメータ値決定部22は、ダイジェスト値の衝突が確認された際に、当該衝突の態様に応じて、イニシャライゼーションベクタの値、又は、ファイナライゼーションベクタの値のいずれかを変更してもよい。例えば、ファイナライゼーションベクタの値を変更しても所定回連続して衝突が確認された際に、イニシャライゼーションベクタの値が変更されるようにしてもよい。また、この場合に、イニシャライゼーションベクタの値とファイナライゼーションベクタの値の両方が変更されるようにしてもよい。
 ここで、ファイナライゼーションベクタの値が変更された場合は、上述のように、保持されている内部状態の値と、変更後のファイナライゼーションベクタの値と、に基づいて、ダイジェスト値が再計算されてもよい。そして、イニシャライゼーションベクタの値が変更された場合は、すべてのパス名について、内部状態の値、及び、ダイジェスト値が再計算されるようにしてもよい。
 ここで、本実施形態に係る情報処理装置10において行われる処理の流れの一例を、図5に例示するフロー図を参照しながら説明する。
 まず、パラメータ値決定部22が、共通パラメータの値を決定する(S101)。ここでは、イニシャライゼーションベクタの値とファイナライゼーションベクタの値が決定される。
 そして、ダイジェスト値計算部24が、S103に示すダイジェスト値計算処理がまだ実行されていないオブジェクトのパス名を1つ選択する(S102)。
 そして、ダイジェスト値計算部24は、S102に示す処理で選択されたパス名に基づくダイジェスト値計算処理を実行する(S103)。S103に示す処理の詳細は後述するが、S103に示す処理によって、S102に示す処理で選択されたパス名に対応するダイジェスト値を示すダイジェスト値データを含むレコードが生成される。
 そして、衝突確認部30が、S103に示す処理で計算されたダイジェスト値について、衝突が発生したか否かを確認する(S104)。ここでは例えば、計算された複数のダイジェスト値が一致する場合に、衝突が発生したと確認される。
 衝突が発生したと確認された場合は(S104:Y)、パラメータ値決定部22が、ファイナライゼーションベクタの値を変更する(S105)。
 そして、ダイジェスト値計算部24が、対応する内部状態が保存されているパス名について、ダイジェスト値を再計算して(S106)、S104に示す処理に戻る。S106に示す処理では、後述するS205に示す処理で生成されるレコードに含まれるダイジェスト値データの値が更新される。
 S104に示す処理で衝突が発生しなかったと確認された場合は(S104:N)、ダイジェスト値計算部24は、すべてのパス名についてダイジェスト値が計算されたか否かを確認する(S107)。
 すべてのパス名についてダイジェスト値が計算されていないと確認された場合は(S107:N)、S102に示す処理に戻る。
 すべてのパス名についてダイジェスト値が計算されたと確認された場合は(S107:Y)、レコード生成部28が、フラットパステーブルデータを生成して(S108)、本処理例に示す処理は終了される。当該フラットパステーブルデータには、例えば、後述のS205に示す処理で生成される複数のレコードが含まれる。また、当該フラットパステーブルデータには、例えば、最終的なイニシャライゼーションベクタの値を示すイニシャライゼーションベクタデータ、及び、最終的なファイナライゼーションベクタの値を示すファイナライゼーションベクタデータ、が含まれる。
 上述したように、S104~S106に示す処理が連続して所定回以上実行された場合は、イニシャライゼーションベクタの値が変更されてもよい。そして、情報処理装置10は、生成済のレコードを破棄して、すべてのパス名についてS102以降の処理をはじめからやり直してもよい。
 次に、本実施形態に係る情報処理装置10において行われる、S102に示す処理で選択されたパス名に基づくダイジェスト値計算処理(S103参照)の流れの一例を、図6に例示するフロー図を参照しながら説明する。
 まず、ダイジェスト値計算部24が、S102に示す処理で選択されたパス名を分割して、上述の複数のブロックBを生成する(S201)。ここでは例えば、B(1)~B(n)が生成されることとする。
 そして、ダイジェスト値計算部24が、S102に示す処理で選択されたパス名に対応する内部状態の値を決定する(S202)。
 図7は、ダイジェスト値計算処理の内容を表すソースコードの一例を示す図である。
 S202に示す処理では、まず、イニシャライゼーションベクタの値に基づいて、変数a[0]、a[1]、a[2]の値が計算される(図7の(1)参照)。変数a[0]の値には、イニシャライゼーションベクタの値自体が設定される。変数a[1]の値には、イニシャライゼーションベクタの値を11ビット回転させた値が設定される。変数a[2]の値には、イニシャライゼーションベクタの値を23ビット回転させた値が設定される。
 ここでNビット回転とは、値の末尾のNビットを先頭に移動させる処理に相当する。すなわち、変数a[1]の値には、イニシャライゼーションベクタの値の末尾の11ビットを先頭に移動させた値が設定される。変数a[2]の値には、イニシャライゼーションベクタの値の末尾の23ビットを先頭に移動させた値が設定される。
 そして、ブロックB(1)~B(n-1)の順に、当該ブロックBの値を引数とする内部状態更新処理が実行される(図7の(2)参照)。図7には、引数の値が、round_inputと表現されている。ここでは例えば、まず、変数a[0]の値が、変数a[0]の現在の値と、引数である当該ブロックBの値と、の排他的論理和(XOR)の値に更新される。そして、変数v[0]の値に、変数a[0]の値と変数a[1]の値の排他的論理和を5ビット回転させた値が設定される。そして、変数v[1]の値に、変数a[2]の値と変数a[0]の値の排他的論理和を17ビット回転させた値が設定される。そして、変数v[2]の値に、変数a[0]の値と変数a[1]の値の排他的論理和を1ビット回転させた値が設定される。
 そして、変数t[0]の値に、変数a[0]の値と変数v[0]の値の排他的論理和を53ビット回転させた値が設定される。そして、変数t[1]の値に、変数a[1]の値と変数v[1]の値の排他的論理和を11ビット回転させた値が設定される。そして、変数t[2]の値に、変数a[2]の値と変数v[2]の値の排他的論理和を59ビット回転させた値が設定される。
 そして、変数a[0]の値が、変数t[0]の値、変数t[1]の値をビット反転させた値と変数t[2]の値との論理積(AND)、及び、定数rcの値の排他的論理和の値に更新される。そして、変数a[1]の値が、変数t[1]の値と、変数t[2]の値をビット反転させた値と変数t[0]の値との論理積と、の排他的論理和の値に更新される。そして、変数a[2]の値が、変数t[2]の値と、変数t[0]の値をビット反転させた値と変数t[1]の値との論理積と、の排他的論理和の値に更新される。
 上述のように、ブロックB(1)~B(n-1)の順に、当該ブロックBを引数とした以上の処理が実行される。
 そして、ダイジェスト値計算部24が、S202に示す処理で決定された内部状態の値を、内部状態保持部26に保持させる(S203)。ここでは例えば、ブロックB(n-1)に対する内部状態更新処理が終了した際における、変数a[0]、a[1]、及び、a[2]の値(内部状態の値)が、内部状態保持部26に保持される。
 そして、ダイジェスト値計算部24が、S203に示す処理で保持された内部状態の値と、ファイナライゼーションベクタの値と、に基づいて、S102に示す処理で選択されたパス名に基づくダイジェスト値を計算する(S204)。
 ここでは例えば、ブロックB(n)の値とファイナライゼーションベクタの値との排他的論理和の値を引数とする内部状態更新処理が実行される(図7の(3)参照)。当該内部状態更新処理では、内部状態保持部26に保持されている変数a[0]、a[1]、及び、a[2]が用いられる。そして、当該内部状態更新処理の終了時における変数a[0]の値が、S102に示す処理で選択されたパス名に基づくダイジェスト値に決定される。
 そして、レコード生成部28は、新たなレコードを生成して(S205)、本処理例に示す処理は終了される。ここでは例えば、S204に示す処理で計算されたダイジェスト値を示すダイジェスト値データ、S102に示す処理で選択されたパス名を示すパス名データ、及び、当該パス名に対応するオブジェクトのアイノード番号、を含むレコードが生成される。
 図8は、本実施形態に係る情報処理装置12で実装される機能の一例を示す機能ブロック図である。なお、本実施形態に係る情報処理装置12で、図8に示す機能のすべてが実装される必要はなく、また、図8に示す機能以外の機能が実装されていても構わない。
 図8に示すように、情報処理装置12には、機能的には例えば、データ記憶部40、パス名特定部42、ダイジェスト値計算部44、アクセス部46、が含まれる。データ記憶部40は、記憶部12bを主として実装される。パス名特定部42、ダイジェスト値計算部44、アクセス部46は、プロセッサ12aを主として実装される。
 以上の機能は、コンピュータである情報処理装置12にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ12aで実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介して情報処理装置12に供給されてもよい。また、このプログラムは、情報処理装置10から情報処理装置12に供給されてもよい。
 データ記憶部40は、本実施形態では例えば、情報処理装置10で開発された、複数のファイルやディレクトリ等のオブジェクトと、フラットパステーブルデータと、を含む配布データを記憶する。上述のように、配布データには、共通パラメータの値を示す、イニシャライゼーションベクタデータ、及び、ファイナライゼーションベクタデータが含まれている。また、配布データには、ダイジェスト値とアイノードとの対応を示すレコードが含まれている。
 パス名特定部42は、本実施形態では例えば、パスの名称を特定する。パス名特定部42は、例えば、情報処理装置12におけるプログラムの実行時にアクセスが要求されたオブジェクトのパス名を特定する。
 ダイジェスト値計算部44は、本実施形態では例えば、パス名特定部42により特定されるパス名に基づくダイジェスト値を計算する。
 アクセス部46は、本実施形態では例えば、配布データにおいて、ダイジェスト値計算部44が計算するダイジェスト値に対応付けられているアイノードにアクセスする。アクセス部46は、例えば、ダイジェスト値計算部44が計算するダイジェスト値を含むレコードを特定する。そして、アクセス部46は、例えば、当該レコードに含まれるアイノード番号に対応するアイノードにアクセスする。
 ここで、本実施形態に係る情報処理装置12において行われる処理の流れの一例を、図9に例示するフロー図を参照しながら説明する。
 まず、パス名特定部42は、アクセスが要求されたパス名を特定する(S301)。
 そして、ダイジェスト値計算部44が、S301に示す処理で特定されたパス名を分割して、上述の複数のブロックBを生成する(S302)。ここでは例えば、B(1)~B(n)が生成されることとする。
 そして、ダイジェスト値計算部44が、S301に示す処理で特定されたパス名に基づくダイジェスト値を計算する(S303)。
 ここでは例えば、フラットパステーブルデータに含まれるイニシャライゼーションベクタデータが示すイニシャライゼーションベクタの値に基づいて、変数a[0]、a[1]、a[2]の値が計算される(図7の(1)参照)。
 そして、ブロックB(1)~B(n-1)の順に、当該ブロックBの値を引数とする内部状態更新処理が実行される(図7の(2)参照)。
 そして、ブロックB(n)の値と、フラットパステーブルデータに含まれるファイナライゼーションベクタデータが示すファイナライゼーションベクタの値との排他的論理和の値を引数とする内部状態更新処理が実行される(図7の(3)参照)。当該内部状態更新処理の終了時における変数a[0]の値が、S301に示す処理で特定されたパス名に基づくダイジェスト値に決定される。
 そして、アクセス部46が、S303に示す処理で計算されたダイジェスト値を含むレコードを特定する(S304)。
 そして、アクセス部46が、S304に示す処理で特定されたレコードに含まれるアイノード番号を特定する(S305)。
 そして、アクセス部46が、S305に示す処理で特定されたアイノード番号により識別されるアイノード、及び、当該アイノードに対応するオブジェクトにアクセスして(S306)、本処理例に示す処理は終了される。
 本実施形態では、すべてのオブジェクトのパスが確定した際に、それぞれのパスに対応する互いに衝突しないダイジェスト値が決定されるため、オブジェクトのパスとアイノード番号とを対応付けて管理するコリジョンリゾルバは不要となる。このようにして本実施形態によれば、パスをキーとしたコリジョンリゾルバに対する全文一致検索が実行されることによりアイノードへのアクセスに時間がかかることを防止できる。
 また、本実施形態では、ダイジェスト値を計算するアルゴリズムの計算負荷が軽くても、共通パラメータの値を変更してダイジェスト値を再計算することによって、情報処理装置10において最終的にはダイジェスト値が互いに衝突しないようにできる可能性が高い。このようにして本実施形態によれば、情報処理装置10と情報処理装置12とで共通に用いられる共通パラメータに基づいてダイジェスト値の計算が実行されることで、計算負荷が軽いにも関わらずダイジェスト値の衝突可能性が低くなる。
 なお、本発明は上述の実施形態に限定されるものではない。
 また、上記の具体的な文字列や数値及び図面中の具体的な文字列や数値は例示であり、これらの文字列や数値には限定されない。

Claims (10)

  1.  それぞれアイノードに対応付けられる複数のパスのそれぞれについて共通で用いられる共通パラメータの値を決定するパラメータ値決定部と、
     前記複数のパスのそれぞれについて、前記共通パラメータの値と当該パスの名称とに基づいて、当該パスに対応するダイジェスト値を計算するダイジェスト値計算部と、
     前記パスに対応するダイジェスト値と当該パスに対応するアイノードとを対応付ける対応付け部と、
     を含むことを特徴とするダイジェスト値計算装置。
  2.  計算される前記ダイジェスト値の衝突を確認する確認部、をさらに含み、
     前記パラメータ値決定部は、前記ダイジェスト値の衝突が確認された際に、前記共通パラメータの値を変更し、
     前記ダイジェスト値計算部は、変更後の前記共通パラメータの値に基づいて、前記ダイジェスト値を再計算する、
     ことを特徴とする請求項1に記載のダイジェスト値計算装置。
  3.  前記パラメータ値決定部は、第1の共通パラメータの値と、第2の共通パラメータの値と、を決定し、
     前記ダイジェスト値計算部は、前記パスの名称の一部と、前記第1の共通パラメータの値と、に基づいて、内部状態の値を計算し、
     前記ダイジェスト値計算部は、前記内部状態の値と、前記パスの名称の残りと、前記第2の共通パラメータの値と、に基づいて、前記ダイジェスト値を再計算する、
     ことを特徴とする請求項1に記載のダイジェスト値計算装置。
  4.  計算される前記ダイジェスト値の衝突を確認する確認部と、
     前記内部状態の値を保持する保持部と、をさらに含み、
     前記パラメータ値決定部は、前記ダイジェスト値の衝突が確認された際に、前記第2の共通パラメータの値を変更し、
     前記ダイジェスト値計算部は、保持されている前記内部状態の値と、変更後の前記第2の共通パラメータの値と、に基づいて、前記ダイジェスト値を再計算する、
     ことを特徴とする請求項3に記載のダイジェスト値計算装置。
  5.  前記パラメータ値決定部は、前記ダイジェスト値の衝突が確認された際に、当該衝突の態様に応じて、前記第1の共通パラメータの値、又は、前記第2の共通パラメータの値のいずれかを変更し、
     前記第2の共通パラメータの値が変更された場合は、前記ダイジェスト値計算部は、保持されている前記内部状態の値と、変更後の前記第2の共通パラメータの値と、に基づいて、前記ダイジェスト値を再計算し、
     前記第1の共通パラメータの値が変更された場合は、前記ダイジェスト値計算部は、変更後の前記第1の共通パラメータの値に基づいて、前記内部状態の値、及び、前記ダイジェスト値を再計算する、
     ことを特徴とする請求項4に記載のダイジェスト値計算装置。
  6.  共通パラメータの値、及び、ダイジェスト値とアイノードとの対応を示すデータを記憶する記憶部と、
     パスの名称を特定するパス名特定部と、
     前記データが示す共通パラメータの値に基づいて、前記パスの名称に対応するダイジェスト値を計算するダイジェスト値計算部と、
     前記データにおいて、計算される前記ダイジェスト値に対応付けられているアイノードにアクセスするアクセス部と、
     を含むことを特徴とするアクセス装置。
  7.  それぞれアイノードに対応付けられる複数のパスのそれぞれについて共通で用いられる共通パラメータの値を決定するステップと、
     前記複数のパスのそれぞれについて、前記共通パラメータの値と当該パスの名称とに基づいて、当該パスに対応するダイジェスト値を計算するステップと、
     前記パスに対応するダイジェスト値と当該パスに対応するアイノードとを対応付けるステップと、
     を含むことを特徴とするダイジェスト値計算方法。
  8.  パスの名称を特定するステップと、
     共通パラメータの値に基づいて、前記パスの名称に対応するダイジェスト値を計算するステップと、
     ダイジェスト値とアイノードとの対応を示すデータにおいて、計算される前記ダイジェスト値に対応付けられているアイノードにアクセスするステップと、
     を含むことを特徴とするアクセス方法。
  9.  それぞれアイノードに対応付けられる複数のパスのそれぞれについて共通で用いられる共通パラメータの値を決定する手順、
     前記複数のパスのそれぞれについて、前記共通パラメータの値と当該パスの名称とに基づいて、当該パスに対応するダイジェスト値を計算する手順、
     前記パスに対応するダイジェスト値と当該パスに対応するアイノードとを対応付ける手順、
     をコンピュータに実行させることを特徴とするプログラム。
  10.  パスの名称を特定する手順、
     共通パラメータの値に基づいて、前記パスの名称に対応するダイジェスト値を計算する手順、
     ダイジェスト値とアイノードとの対応を示すデータにおいて、計算される前記ダイジェスト値に対応付けられているアイノードにアクセスする手順、
     をコンピュータに実行させることを特徴とするプログラム。
PCT/JP2020/028297 2019-07-23 2020-07-21 ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム WO2021015203A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/625,039 US20220292062A1 (en) 2019-07-23 2020-07-21 Digest value calculating device, access device, digest value calculating method, access method, and program
JP2021534049A JP7282892B2 (ja) 2019-07-23 2020-07-21 ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-135538 2019-07-23
JP2019135538 2019-07-23

Publications (1)

Publication Number Publication Date
WO2021015203A1 true WO2021015203A1 (ja) 2021-01-28

Family

ID=74194190

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/028297 WO2021015203A1 (ja) 2019-07-23 2020-07-21 ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム

Country Status (3)

Country Link
US (1) US20220292062A1 (ja)
JP (1) JP7282892B2 (ja)
WO (1) WO2021015203A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010146308A (ja) * 2008-12-19 2010-07-01 Nec Corp 情報処理装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5463899B2 (ja) * 2009-12-22 2014-04-09 富士通株式会社 ファイル管理情報記憶装置、ファイル管理情報記憶装置の制御方法、およびファイル管理情報記憶装置の制御プログラム
CN104618329B (zh) * 2014-12-26 2018-06-05 曙光信息产业(北京)有限公司 数据处理方法及装置
US10649852B1 (en) * 2017-07-14 2020-05-12 EMC IP Holding Company LLC Index metadata for inode based backups
JP6903529B2 (ja) * 2017-09-11 2021-07-14 株式会社東芝 情報処理装置、情報処理方法およびプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010146308A (ja) * 2008-12-19 2010-07-01 Nec Corp 情報処理装置

Also Published As

Publication number Publication date
JP7282892B2 (ja) 2023-05-29
JPWO2021015203A1 (ja) 2021-01-28
US20220292062A1 (en) 2022-09-15

Similar Documents

Publication Publication Date Title
JP5309043B2 (ja) ストレージシステム及びストレージシステムでの重複データ削除のための方法
US5113442A (en) Method and apparatus for providing access control in a secure operating system
CN104238963B (zh) 一种数据存储方法、存储装置及存储系统
CN104615419B (zh) 信息处理设备、程序和记录介质
US11249999B2 (en) Memory efficient searching
US20040268106A1 (en) Method and system for detecting the validity of and recovering configuration data
JPH0364890B2 (ja)
JP2008217209A (ja) 差分スナップショット管理方法、計算機システム及びnas計算機
WO2014000578A1 (en) Method and apparatus for processing database data in distributed database system
CN111475105B (zh) 监控数据存储方法、设备、服务器及存储介质
CN105718221B (zh) 一种数据存储的方法、装置和系统
JP2021518021A (ja) データ処理方法、装置及びコンピュータ読み取り可能な記憶媒体
US9547451B2 (en) Writable clone data structure
US10601711B1 (en) Lens table
CN104123102B (zh) 一种ip硬盘及其数据处理方法
CN101114296A (zh) 管理许可的方法和设备
CN108111598B (zh) 云盘数据的下发方法、装置及存储介质
WO2021015203A1 (ja) ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム
CN111638925A (zh) 一种接口方法表生成方法、函数指针查询方法及装置
WO2021189905A1 (zh) 分布式数据调取方法、装置、电子设备及存储介质
CN116842012A (zh) 一种Redis集群的分片存储方法、装置、设备及存储介质
US10511531B1 (en) Enhanced lens distribution
CN111953609A (zh) 基于ovs的数据包处理方法及相关设备
CN109977092A (zh) 一种复制文件的方法和计算设备
CN105930104A (zh) 数据存储方法和装置

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: 20842986

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021534049

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20842986

Country of ref document: EP

Kind code of ref document: A1