WO2017022050A1 - ストレージ装置、計算機システム、及び方法 - Google Patents
ストレージ装置、計算機システム、及び方法 Download PDFInfo
- Publication number
- WO2017022050A1 WO2017022050A1 PCT/JP2015/071939 JP2015071939W WO2017022050A1 WO 2017022050 A1 WO2017022050 A1 WO 2017022050A1 JP 2015071939 W JP2015071939 W JP 2015071939W WO 2017022050 A1 WO2017022050 A1 WO 2017022050A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- controller
- parameter group
- storage device
- virtual object
- virtual
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
Definitions
- the present invention relates to a storage apparatus.
- IoT Internet of Things
- a field called the Internet of Things IoT is a technology that collects data acquired from a sensor or the like for the purpose of use by connecting a “thing” such as a sensor to a network (Internet) of an information device such as a PC or a storage device.
- individual data (IoT data) acquired from a sensor or the like is temporary data such as a state at a certain point in time and has a small amount of information.
- the IoT data is data with a small data capacity that cannot be formed as content by itself.
- the use environment of the Internet mainly transmits / receives content data having a capacity larger than that of IoT data.
- the IoT data can be used as content for the first time through a process of analyzing and visualizing a huge amount of acquired data.
- IoT data acquired by fixed point observation with a specific sensor can be used as content only after the temporal change is graphed.
- IoT data acquired from sensors at a number of bases can be used as content only after being statistically analyzed.
- the IoT data stored in the storage device can be utilized through an analysis and visualization process. For this reason, the IoT data is stored in the storage device, and the database data is accumulated by a data warehouse different from the storage device that stores the IoT data. Specifically, it is as follows. (1) IoT data that is generated momentarily from a data generation source device such as a sensor is acquired by a data input device and transmitted to a storage device. (2) The storage device stores the received IoT data (source data) with attribute information such as sensor information and measurement date and time. (3) Of the IoT data stored in the storage device, the IoT data necessary for data analysis is extracted by a system equipped with another storage device such as a data warehouse, and processing such as associating these data is performed.
- the output device holds an analysis program in which the combination range, order, etc. of data corresponding to the analysis result are described.
- the output device reads analysis data in the data warehouse and executes an analysis program to perform analysis processing and output an analysis result.
- analysis data is stored in another storage device. These data are stored redundantly. Since the IoT data continues to increase every day, if the stored data is duplicated, the storage capacity is wasted.
- the storage device has a limited storage capacity. In order to keep a huge amount of data, it is necessary to back up old data. In this case, a low-cost storage device such as a magnetic tape is used. However, a storage device such as a magnetic tape is not suitable for searching because it cannot be accessed randomly.
- the analysis is performed by the output device executing the analysis program. For this reason, when it is desired to output a new analysis result, the output device needs a new analysis program. If the desired analysis result cannot be output, the analysis program must be corrected.
- an object type storage device for example, Patent Document 1.
- the object storage device stores an ID (hereinafter referred to as object ID; OID) unique to the data and metadata that is information of the data. Grant and store.
- OID object ID
- the object storage device Based on the data read request specifying the OID from the output device, the object storage device reads the data specifying the OID.
- the object storage device can shorten the data search time compared to the conventional storage device. For this reason, the object storage device is suitable for storing a large amount of data.
- the object storage device is also referred to as “read only” or “once write”, and is not premised on data update, and update data is also stored as separate data. However, there is no technique for associating a plurality of data in the object storage device.
- the storage device includes a storage device and a controller connected to the storage device, the computer, and a plurality of detection devices.
- the controller receives input data transmitted from each detection device.
- the input data includes a detection device identifier for identifying the corresponding detection device, a detection value detected by the corresponding detection device, and a parameter value given for each detection.
- the controller generates an object based on each input data, generates an object ID for identifying each object, and stores each object in the storage device.
- the controller classifies a plurality of objects corresponding to each detection device identifier as an object group.
- the controller stores selection conditions for object selection.
- the controller classifies a plurality of objects corresponding to each parameter value among objects satisfying the selection condition as a parameter group, and generates a parameter group identifier for identifying the parameter group.
- the controller stores a parameter group identifier list including a plurality of parameter group identifiers to be generated and transmits it to the computer.
- the controller receives a parameter group request including the specific parameter group identifier in the parameter group identifier list from the computer, the controller specifies an object corresponding to the specific parameter group identifier and transmits the specified object to the computer.
- aaa table various types of information may be described using the expression “aaa table”, but the various types of information may be expressed using a data structure other than a table.
- the “aaa table” can be referred to as “aaa information” to indicate that the various types of information do not depend on the data structure.
- the processor executes a program and performs processing while using a storage resource (for example, a memory) and / or a communication interface device (for example, a communication port).
- a storage resource for example, a memory
- a communication interface device for example, a communication port
- the main subject of processing may be various programs, but a processor that executes the program may be the main subject. Further, the processing mainly using the processor may be interpreted as being performed by executing one or more programs.
- the processor is typically a microprocessor such as a CPU (Central Processing Unit), but may include a hardware circuit that executes a part of the processing (for example, encryption / decryption, compression / decompression). .
- FIG. 1 is an example of a hardware configuration diagram of a computer system.
- the computer system includes a plurality of object storage devices 1, a management computer (management PC) 3, a client computer 4, a data generation device 7, and an input device (IoT data input device) 8.
- the object storage device 1 is simply referred to as a storage device 1.
- the computer system may include a NAS (Network Attached Storage) server 5 and a data analysis device 6 instead of or in addition to the client computer 4.
- NAS Network Attached Storage
- the plurality of storage devices 1, the management computer 3, the client computer 4, and the input device 8 are connected to a communication network 9 such as the Internet, for example. Further, when the computer system includes the NAS server 5 and the data analysis device 6, the NAS server 5 and the data analysis device 6 are also connected to the communication network 9.
- a plurality of storage devices 1 connected to the communication network 9 and capable of communicating with each other are hereinafter referred to as storage fabrics. Each storage device in the storage fabric may be installed in each data center, or a storage fabric may be configured in one data center.
- the data generation device 7 is connected to the input device 8.
- the data generation device 7 outputs IoT data to the input device 8.
- the IoT data is data of a small size that is detected every moment by the data generation source device 7.
- the data generation device 7 is, for example, a measuring device such as various sensors.
- the measured value by the measuring device is IoT data.
- the measuring device may be, for example, a temperature sensor that measures temperature or the like, a traffic measuring device that measures traffic, and the like.
- the input device 8 transfers the IoT data output from the data generation source device 7 to the storage device 1.
- the IoT data output from the data generation source device 7 is in the form of an IP frame.
- the input device 8 converts the received IoT data into input data in a format that the storage device 1 can handle, such as text, and transmits the input data to the storage device 1.
- the input device 8 is a general-purpose computer, for example.
- the input device 8 includes a CPU (Central Processing Unit) 81, a memory 82, a storage medium such as a HDD (Hard Disk Drive) 83, a NIC (Network Interface Card) 84, and the like.
- the input device 8 is connected to the communication network 9 via the NIC 84.
- the data generation device 7 and the input device 8 are connected one-to-one.
- the data generation device 7 and the input device 8 are separate in this embodiment, but may be included in one device.
- a plurality of data generation source devices 7 may be connected to one input device 8.
- the input device 8 manages the IoT data for each data generation source device 7.
- the management computer 3 performs various settings for the storage device 1.
- the management computer 3 is a general purpose computer, for example.
- the management computer 3 includes a CPU 31, a memory 32, a storage medium such as an HDD 33, and a NIC 34.
- the management computer 3 is connected to the communication network 9 via the NIC 34.
- the storage device 1 of this embodiment is an object storage device.
- the object storage device stores objects in the storage area.
- the object includes object data that is actual data and attribute information of the object data.
- An object is uniquely identified by an object ID (OID) unique to the object data.
- OID object ID
- the storage device 1 has a storage controller 10 and a storage device 20.
- the storage controller 10 includes a NIC 11, a CPU 12, an HBA (Host Bus Adapter) 13, and a memory 14.
- HBA Hypervisor Adapter
- the storage controller 10 may be simply referred to as the controller 10.
- the CPU 12 executes a program in the memory 14 to generate a base object to be described later, which is an example of an object based on the IoT data, and stores the base object in the HDD 22. Further, the CPU 12 executes a program in the memory 14 to generate a virtual object in response to a request from the request source, and transmits the virtual object to the request source.
- the memory 14 stores various programs and various information for controlling the storage device 1.
- the various types of information are, for example, an object group management table 141, a base object management table 142, a virtual object storage management table 143, a virtual metadata management table 144, a virtual object list 145, object group definition information 146, virtual object definition information 147, and the like. is there.
- the controller 10 is connected to the communication network 9 via the NIC 11.
- the controller 10 is connected to the storage device 20 via the HBA 13.
- the storage device 20 includes a device controller (CTL) 21 and a storage medium such as an HDD 22.
- a device controller 21 is connected to the controller 10 via the HBA 13.
- the client computer 4 acquires a virtual object including a base object from the storage device 1. Further, the client computer 4 outputs the obtained analysis result of the virtual object.
- the client computer 4 is, for example, a general purpose computer.
- the client computer 4 includes a CPU 41, a memory 42, a storage medium such as an HDD 43, and a NIC 44.
- the client computer 4 is connected to the communication network 9 via the NIC 44.
- the NAS 5 is a storage device having a file system.
- the NAS 5 includes a CPU 51, a memory 52, a storage medium such as an HDD 53, and a NIC 54.
- the NAS 5 is connected to the communication network 9 via the NIC 54.
- the data analysis device 6 acquires a virtual object including a base object from the storage device 1. Further, the data analysis device 6 outputs the obtained analysis result of the virtual object.
- the data analysis device 6 is, for example, a general purpose computer.
- the data analysis device 6 includes a CPU 61, a memory 62, a storage medium such as an HDD 63, and a NIC 64.
- the data analysis device 6 is connected to the communication network 9 via the NIC 64.
- the storage medium possessed by the management computer 3, the client computer 4, the NAS 5, the data analysis device 6, the input device 8, and the storage device 20 is not limited to the HDD, but may be any type of medium such as an SSD (Solid State Drive). There may be.
- FIG. 2 is a diagram for explaining the outline of the virtual object storage by the storage fabric of this embodiment.
- a plurality of storage devices 1 (# 1, # 2) in the storage fabric are connected to a plurality of detection devices and output devices.
- the output device includes, for example, a client computer 4, a data analysis device 6, a NAS server 5 (not shown), and the like.
- the data generation device 7 and the input device 8 are detection devices.
- the data generation device 7 detects IoT data, converts the IoT data detected by the input device 8 into input data, and transmits the input data to the storage device 1.
- the input data includes a detection device identifier for identifying the corresponding detection device, a detection value detected by the corresponding detection device, and a parameter value given for each detection.
- the detection device identifier is an identifier that can uniquely identify the data generation source device 7. Specifically, for example, the identifier of the data generation source device 7 or the ID of the input device 8 connected to the data generation source device 7 on a one-to-one basis.
- the detected value is a value detected by the data generation source device 7.
- the data generation source device 7 is a measuring device such as a sensor as in the present embodiment, this is the measured value.
- the parameter value is, for example, a detection date (measurement date) or a serial number indicating the detection order.
- Each storage device 1 has a storage device 20.
- the storage device 1 sets a tenant that partitions the storage area inside the storage device 20.
- functions on the input side of one storage apparatus 1 in the storage fabric will be described. The same applies to other storage devices.
- the storage device 1 generates a base object based on each input data, and generates a BOID that identifies each base object.
- the base object includes base object data and base metadata that is attribute information thereof.
- Storage device 1 classifies a plurality of base objects corresponding to detection devices as object groups.
- the object group is a set of base objects based on input data from each input device 8.
- one input device 8 is connected to a sensor that is one data generation source device 7. Therefore, one object group is a set of base objects based on measurement values measured continuously or discontinuously by one sensor.
- the storage device 1 stores base objects in one or more object groups in each tenant.
- the storage device 1 stores object group definition information for each object group, and shapes input data into a base object according to the object group definition information of each object group.
- the object group definition information is information for the administrator to define base objects belonging to each object group via the management computer 3.
- the following information is defined in the object group definition information.
- the user arbitrarily Custom metadata to specify
- the storage device 1 generates base object data according to the format template (1) based on the object group definition information. At this time, the storage device 1 rounds the measurement date and time of the data generation source device 7 based on the cut-out interval (2) and acquires a time stamp at a predetermined interval (for example, every second). The storage apparatus 1 gives base metadata including a time stamp to the base object data.
- the input data is formatted as follows, for example.
- the input data has the following data format.
- This data array is, for example, address, data The position information (measurement area), ID, data substance, measurement date and time of the source device 7.
- the input device 8 converts the IoT data into input data and transmits it to the storage device 1.
- the storage device 1 shapes the input data into a base object composed of base object data and base metadata. An example of base object data is shown below. “Temperature (KNY001): + 20.00 ° C. [yyyy: mm: dd: hh: mm: ss] Location information: Kanagawa-Odawara area A [Nakazato 002] ...”.
- the storage device 1 stores the base object data in association with the base metadata such as the size, the time stamp based on the measurement date, the search tag of the custom metadata, or the keyword.
- the storage apparatus 1 generates a base object ID (BOID) that uniquely identifies the base object.
- the BOID is, for example, a hash value of base object data.
- the storage device 1 generates a base object based on the object group definition information for each object group, so that each object group has a time stamp according to the measurement date and time of each data generation source device 7 (sensor).
- a time-series base object to which is attached belongs.
- the storage apparatus 1 can easily search for a base object by using the object ID.
- the object ID can be easily generated by using the hash value of the base object as the object ID.
- Each storage device 1 transmits the specified base object to the output device based on the read request specifying the BOID from the output device.
- the storage device 1 generates a virtual object storage for each user and provides it to the output device.
- the user can access the virtual object storage from his / her portal screen via the output device.
- Each virtual object storage provides a virtual object to the output device.
- the virtual object storage may be generated by one storage device 1 in the storage fabric, or may be performed by the storage device 1 associated with each user.
- a single storage apparatus 1 associated with an arbitrary user will be described.
- the storage device 1 stores virtual object definition information in association with each virtual object storage.
- the virtual object definition information includes a selection condition for selecting a base object.
- the selection condition may include a selection condition for a plurality of virtual objects.
- the selection condition includes, for example, an object group identifier and a parameter value range.
- the parameter value is, for example, time.
- the storage apparatus 1 classifies a plurality of base objects corresponding to the parameter value range specified by the selection condition from the object groups specified by the selection condition as a parameter group, and outputs the parameter group as a virtual object to the output device. provide.
- the virtual object includes virtual object data (VO data) based on the base object data and virtual metadata that is attribute information of the virtual object data.
- the virtual object has a time stamp.
- a virtual object has a plurality of base objects with corresponding time stamps.
- the virtual object storage provides a plurality of virtual objects as a virtual object group.
- the virtual object group is a set of virtual objects having a time stamp in a range specified by the selection condition.
- the storage device 1 generates a virtual object ID that uniquely identifies the virtual object.
- the virtual object ID is an example of a parameter group identifier.
- the virtual object ID is a hash value of one or more BOIDs of the base object selected based on the selection condition.
- the storage apparatus 1 provides a list of virtual object IDs (VOIDs) (virtual object list, parameter group identifier list) included in the virtual object group generated by the corresponding virtual object definition information for the virtual object storage.
- VOIDs virtual object IDs
- the output device selects the VOID of one or more virtual objects to be output from the provided virtual object list, and requests the storage device 1 to read the virtual object. Based on the request, the storage device 1 transmits a base object based on the virtual object to the output device.
- the storage device 1 If a base object based on the requested virtual object is stored in another storage device 1, the storage device 1 reads the base object from the other storage device 1 and transmits it to the output device.
- a virtual object group of an object group and a parameter value (time series time stamp) in a specified range can be generated.
- the data search time can be shortened and the data association can be facilitated.
- virtual object storage reads base objects belonging to a group of virtual objects based on a selection condition from base objects stored in storage device 1. be able to. Accordingly, a plurality of base objects can be associated with only the virtual object definition information without performing special processing on the base objects stored in the storage device 1. Further, the association of base objects can be easily changed by changing the virtual object definition information.
- the storage destinations of base objects belonging to a plurality of object groups specified by the virtual object definition information are a plurality of storage apparatuses 1. In some cases, it may straddle. Even in such a case, the storage apparatus 1 accessed from the output apparatus can provide the base object belonging to the virtual object group selected based on the virtual object definition information to the corresponding virtual object storage.
- the storage apparatus 1 assigns a VOID to a VOID by a read request designating a VOID in the same manner as when a base object is transmitted to an output device by a read request designating a BOID.
- Multiple base objects can be sent. Since a plurality of BOIDs are associated with a VOID, the base object is responsible for the substantial data portion in the virtual object.
- the VOID is a hash value of the BOID of the base object included in the virtual object. For this reason, VOID can be generated easily.
- Virtual object output format (format template)
- Group ID of the object group to which the base object included in the virtual object belongs (multiple object groups can be specified)
- Base object clipping position included in virtual object (4)
- Base object adjustment information (5) Custom metadata arbitrarily specified by user among virtual metadata (for example, sensor placement location, sensor type, Measurement type, measurement unit, etc.)
- Virtual object expiration date (eg, time, number of accesses, etc.)
- Virtual object ID (VOID) generation rules for example, hash value, preferentially used VOID range, VOID recyclability, etc.)
- Format of virtual metadata list for example, sensor placement location, sensor type, Measurement type, measurement unit, etc.
- Virtual object expiration date eg, time, number of accesses, etc.
- Virtual object ID (VOID) generation rules for example, hash value, preferentially used VOID range, VOID recyclability, etc.
- the above (2) and (3) are examples of selection conditions.
- the selection condition may be any one of (2) and (3).
- the cut-out position of each base object is an initial value or range of a predetermined parameter possessed by the base object included in the virtual object.
- the base object adjustment information is a predetermined parameter interval.
- the predetermined parameter is a time stamp.
- two object groups (groups A and B) are specified, the extraction position is set to 0:02:01 on January 2, 2015, and the base object Assume that a time stamp is specified in units of one second as adjustment information. Further, for example, it is assumed that group A is a set of base objects with time stamps every second, and group B is a set of base objects with time stamps every 0.5 seconds.
- the storage device 1 generates virtual objects every second in order from the time of January 2, 2015 at 0:00:00 on the basis of the virtual object definition information. That is, based on the virtual object definition information, a virtual object including a plurality of base objects for each time stamp is generated, and a time-series virtual object group is generated in a specified range.
- Vvvv0000001 256bytes
- area01 3
- This array is, for example, VOID, virtual object size, timestamp, measurement Area, number of base objects, BOID, and so on.
- FIG. 3 is an example of the object group management table 141.
- the object group management table 141 is a table for managing object groups.
- the object group management table 141 has an entry for each object group. Each entry includes a group ID 1411 for identifying the object group, a table number (No.) 1412 of the base object management table 142 created for each object group, and the number of base objects (number of objects) 1413 belonging to the object group. A group attribute 1414 of the object group, a retention period 1415 of the base object management table 142 of the object group, an input device identifier 1416 corresponding to the object group, and object group definition information 1417 of the object group Have.
- the object group definition information 1417 stores the file name of the object group definition information 146 in the memory 14.
- FIG. 4 is an example of the base object management table 142.
- the base object management table 142 is a table created for each object group. Each entry of the base object management table 142 stores base metadata of each base object.
- the base object management table 142 has an entry for each base object.
- Each entry includes a base object ID (BOID) 1421 for identifying the base object, a storage ID 1422 indicating the storage device 1 that stores the base object, a tenant ID 1423 of a tenant that stores the base object, and the base object It has a size 1424, an attribute 1425 indicating whether or not the base object is valid, a time stamp 1426 set to the base object, and a keyword 1427 of the base metadata.
- BOID base object ID
- the time stamp 1426 is data based on the measurement time of the IoT data that is the basis of the base object data.
- the time stamp 1426 is a time when the measurement time is cut out at a preset time interval or rounded to a preset unit.
- the keyword 1427 is designated by base object definition information, or a custom metadata search word or tag arbitrarily designated by the user by another method.
- FIG. 5 is an example of the virtual object storage management table 143.
- the virtual object storage management table 143 is a table for managing virtual object storage provided to the user via the output device.
- the virtual object storage management table 143 has an entry for each virtual object storage.
- Each entry includes a virtual object storage ID 1431 for identifying the virtual object storage, an FQDN (Fully Qualified Domain Name) 1432 indicating a domain for accessing the virtual object storage, and an identifier of the storage device assigned to the virtual object storage.
- One virtual object storage may have a plurality of pieces of virtual object definition information.
- FIG. 6 is an example of the virtual metadata management table 144.
- the virtual metadata management table 144 is a table for managing virtual metadata corresponding to each virtual object definition information.
- the virtual metadata management table 144 has an entry for each virtual object definition information. Each entry includes the virtual object definition information 1441, the list name 1442 of the virtual object list based on the virtual object definition information, the number of entries 1443 in the virtual object list, and an attribute indicating whether the virtual object list is valid. 1444, the virtual object list expiration date condition 1445, the threshold value 1446 of the condition, the virtual object list creation date 1447, the latest update date 1448 of the virtual object list, and the access count of the virtual object list 1449.
- FIG. 7 is an example of a virtual object list.
- the virtual object list 145 is a list of virtual objects created for each virtual object definition information.
- the virtual object list 145 has an entry for each virtual object.
- Each entry includes a virtual object ID (VOID) 1451 for identifying a virtual object, BOIDs 1452a and 1452b for identifying a base object included in the virtual object, a size 1453 of the base object included in the virtual object, and the virtual object Includes a base object time stamp 1454 and a virtual metadata keyword 1455.
- VOID virtual object ID
- BOIDs 1452a and 1452b for identifying a base object included in the virtual object
- a size 1453 of the base object included in the virtual object and the virtual object Includes a base object time stamp 1454 and a virtual metadata keyword 1455.
- a search tag may be set for the keyword 1455.
- each entry the object ID of one or more base objects associated with the time stamp is set.
- a VOID is set for each entry. Two base objects are linked to each other when the same time stamp is set by one VOID.
- the VOID is a hash value generated based on the entry or the BOID included in the entry.
- a reservation virtual object may be set as an entry for the latest data response.
- the last entry is the entry for the latest data response.
- “Real Time” indicating the current time is set in the time stamp 1454.
- the storage apparatus 1 secures a VOID within a predetermined range as a VOID indicating a reservation virtual object, and sets one VOID of the VOID in the entry for the latest data response.
- variables are set in the BOIDs 1452a and 1452b.
- a time designated by the user may be set in the time stamp 1454. At this time, each ID set in advance may be set in the BOIDs 1452a and 1452b instead of the variables.
- FIG. 8 is an example of a flowchart of data processing according to the present embodiment.
- Data processing starts when the management computer 3 starts the setting process.
- each step is abbreviated as S.
- the client computer 4 will be described as an example of the output device.
- the management computer 3 sets an object group (S801). Specifically, the management computer 3 transmits object group setting information to the controller 10.
- the setting information is input by an administrator from an input / output terminal (not shown) connected to the management computer 3. For example, when the input device 8 is connected to the storage device 1 via the communication network 9, a setting information input instruction is notified to the management computer 3.
- the administrator inputs setting information from a setting screen 190 displayed on the input / output terminal based on the input instruction.
- the setting information includes, for example, the ID of the object group to be set, the group attribute of the object group, the retention period of the object group, the object group definition information, the identifier of the input device 8 corresponding to the object group, and the like.
- the administrator inputs the setting information from the setting screen 190 and presses the registration button to complete the setting.
- the administrator can set or change the object group definition information from “Edit” on the setting screen.
- the management computer 3 transmits the object group definition information to the controller 10 (S802).
- the object definition information is transmitted to the controller 10.
- the management computer 3 sets virtual object storage (S803). Specifically, for example, the management computer 3 transmits the virtual object storage setting information to the controller 10.
- the setting information is information generated when the user sets virtual object storage from the portal screen of the client computer 4.
- the setting information includes an ID of each virtual object storage, an FQDN that is a domain for accessing the portal screen, and the like.
- the setting information is transmitted to the management computer 3 through the communication network 9 and is managed by the management computer 3.
- the controller 10 receives the object group setting information in S801, the object group definition information in S802, and the virtual object storage setting information in S803.
- the controller 10 executes a configuration process based on the received information (S811).
- the controller 10 adds an entry for each object group to the object group management table 141 based on the object group setting information.
- the controller 10 sets the table number 1412 and the object group definition information 1417 of the object group management table 141 of the object group in the entry of each object group. Further, the controller 10 creates a base object management table 142 for each object group and stores it in the memory 14.
- the controller 10 sets a tenant in the storage area in each storage device 1 and determines one or a plurality of object groups to be stored in the set tenant. Note that all the base objects in one object group need not be stored in one tenant, and may be stored across a plurality of tenants.
- the controller 10 associates the base object with the storage apparatus 1 and the tenant that stores the base object, and sets the base object in each entry of the base object management table 142. In addition, the controller 10 sets a base object size 1424, an attribute 1425, a time stamp 1426, and a keyword 1427 for each entry.
- the controller 10 generates a virtual object storage management table 143 based on the received virtual object storage setting information and stores it in the memory 14. Specifically, the controller 10 stores the IDs 1431 and FQDNs 1432 of each virtual object storage, and the storage IDs 1433 and tenants 1434 of the storage devices that store the base objects that can be used by each virtual object storage, in the virtual object storage management table 143. Set.
- the controller 10 Each time the object group management table 141, the base object management table 142, and the virtual object storage management table 143 are generated or updated, the controller 10 notifies the contents of these tables to other storage devices in the storage fabric. And synchronize.
- the management computer 3 defines a virtual object (S804) and ends the setting process. Specifically, for example, the management computer 3 generates virtual object definition information for each virtual object storage and transmits it to the controller 10.
- the virtual object definition information is information that can be input by the administrator from the input / output terminal of the management computer 3, for example. The administrator can set virtual object definition information in each virtual object storage.
- the controller 10 executes virtual metadata generation processing based on the received virtual object definition information (S812).
- the virtual metadata generation process will be described later.
- the input process of the input device 8 will be described.
- the input device 8 detects IoT data from the data generation source device 7 (S821), the input device 8 performs a data conversion process described later (S822).
- the input device 8 writes the converted data (input data) (S823), and ends the process.
- the controller 10 executes a base object creation process based on the writing process (S813).
- the writing process and the base object creation process will be described later.
- the controller 10 After the base object creation processing is completed, the controller 10 notifies BOID) together with the completion report.
- the client computer 4 transmits a query request specifying the virtual object definition information to the controller 10 (S831).
- the query request requests a virtual object list corresponding to the virtual object definition information.
- the user logs in from the portal screen of the client computer 4 using his / her virtual object storage ID, specifies virtual object definition information, and requests a corresponding virtual object list. Based on this request, the client computer 4 transmits a query request to the controller 10.
- the controller 10 receives the query request and executes a virtual object list creation process (S814).
- the controller 10 transmits to the client computer 4 a temporary list that is a temporary virtual object list for notification of completion and transmission to the client computer 4.
- the controller 10 may send a copy of the virtual object list to the client computer 4 instead of the temporary list.
- the virtual object list creation process will be described later.
- the client computer 4 receives the temporary list (S832).
- the client computer 4 transmits a virtual object read request to the controller 10 based on the temporary list (S833).
- the read request includes the ID of the virtual object to be read.
- the controller 10 receives the read request and executes the virtual object generation process (S815).
- the virtual object generation process will be described later.
- the controller 10 After the virtual object generation process, the controller 10 provides the virtual object to the client computer (S814). Specifically, for example, the controller 10 transmits a base object and virtual metadata included in the virtual object to the client computer 4.
- the client computer 4 receives the virtual object (S834) and ends the process.
- the management computer 3 transmits a virtual object or base object deletion request to the controller 10 (S806), and ends the process.
- the controller 10 executes object deletion processing according to the deletion request (S816), and ends the processing.
- base objects based on input data transmitted from the input device 8 can be sorted into object groups for each input device 8 and stored in the storage device. Therefore, a huge amount of input data transmitted from the input device 8 can be efficiently stored in the storage device.
- the storage device 1 can generate a virtual object group based on virtual object definition information corresponding to the virtual object storage.
- the client computer 4 can acquire a virtual object list that is a list of virtual objects based on the corresponding virtual object definition information virtual object storage by designating the virtual object storage.
- the client computer 4 can read a base object based on one or a plurality of virtual objects specified by the virtual object storage to the virtual object storage. That is, the virtual object storage can easily acquire a base object that needs to be analyzed by designating an object group to be used for analysis and its range by using the virtual object definition information.
- the base object is responsible for the substantial data portion in the virtual object. For this reason, the storage device 1 does not need to store virtual object data in the storage device in addition to the base object. For a virtual object, it is only necessary to store virtual object definition information for reading out a virtual object list, and virtual metadata including a VOID and a corresponding BOID. Therefore, the capacity of the storage device 1 can be used effectively.
- the client computer 4 specifies a virtual object storage and transmits a query request.
- object groups A and B and a time stamp range (T1 to T9999) are specified in the virtual object definition information corresponding to the virtual object storage.
- the object group A includes a plurality of base objects (A0001 to A9999) having time stamps T1 to T9999.
- the object group B includes a plurality of base objects (B0001 to B9999) having time stamps T0001 to T9999.
- the object group A is a base object group including Tokyo air temperature data
- the object group B is a base object group including Osaka traffic data.
- the client computer 4 reads the necessary base object from the storage device 1 to the virtual object storage using the virtual objects Va0001 to Va9999.
- the client computer 4 can output the correlation between the object group A (Tokyo air temperature) and the object group B (Osaka traffic volume) at each time (time stamp) by executing the data analysis application.
- the computer system of the present embodiment stores the IoT data received from the input device in the storage device as in the prior art, and performs processing such as association between the data for use by the client computer 4 for analysis.
- Data need not be stored in a device separate from a storage device such as a data warehouse. That is, the computer system of this embodiment does not need to store the acquired IoT data in duplicate. For this reason, the data capacity in the storage system can be greatly reduced.
- IoT data is data acquired in large quantities from a data generation source device. By shaping the IoT data into base objects and storing them in the storage apparatus 1, each base object is given a BOID. For this reason, since data can be acquired without going through a path, the search time can be shortened.
- the base metadata can include management information (metadata) acquired from the IoT data and management information (custom metadata) defined by the user in the base object definition.
- the virtual metadata can include management information (metadata) acquired from the base metadata and management information (custom metadata) defined by the user in the virtual object definition.
- the controller 10 manages the base objects stored in the storage apparatus 1 using the VOID, so that the association between the base objects can be maintained without separately storing the data processed for analysis. Also, by specifying virtual object definition information, it is possible to easily add or update associations between base objects. In particular, in a storage fabric where a large amount of data is accumulated, a plurality of base objects are associated with a VOID or virtual metadata according to virtual object definition information, so that a large amount of accumulated base objects can be easily and quickly searched. Is possible.
- the virtual object reading process is executed by the client computer 4.
- the data analysis device 6 or the NAS 5 may perform this.
- the data analysis device 6 executes the calculation process immediately after receiving the base object based on the virtual object in S834 or according to a user instruction.
- the NAS 5 executes the virtual object reading process will be described later.
- FIG. 9 is an example of a flowchart of virtual metadata generation processing.
- the virtual metadata generation process is a process executed by the controller 10 in S812 of the data processing process. This process is started when the controller 10 receives virtual object definition information from the management computer 3. This process is performed for each virtual object definition information. A virtual metadata generation process in one virtual object definition information will be described.
- the virtual object definition information to be processed is referred to as target definition information in the description of this flow.
- the controller 10 initializes virtual metadata based on the target definition information (S901). Specifically, for example, the controller 10 adds a new entry of the target definition information to the virtual metadata management table 144 and generates a virtual object list corresponding to the target definition information.
- the controller 10 sets the identifier (1441) of the target definition information and the list name 1442 of the generated virtual object list in the new entry, sets “0” to the number of entries 1443 in the generated virtual object list, The date and time is set to the creation date and time 1447.
- the virtual object list generated in this step is referred to as a target list.
- the controller 10 specifies the object group specified by the target definition information (S902). When there are a plurality of designated object groups, the controller 10 identifies a plurality of object groups.
- the controller 10 acquires the number of base objects of all identified object groups, respectively (S903). Specifically, for example, the controller 10 acquires the number of objects 1413 in the base object management table 142 corresponding to the specified object group based on the object group management table 141, respectively.
- the controller 10 determines whether or not there is an object group having the object number 1413 of “0” for the identified object group (S904).
- the controller 10 updates the virtual metadata management table 144 (S912), and ends the process. Specifically, for the entry of the target definition information, the controller 10 sets the attribute 1444 to “invalid”, sets the number of stored entries 1443 to “0”, and sets the current date and time as the latest update date and time 1448.
- the controller 10 acquires the base object management table 142 of all the specified object groups (S905).
- the controller 10 executes the processing from S906 onward for all the identified object groups.
- the controller 10 points to the top entry of the acquired base object management table 142 (S906).
- the head entry here is an entry of a base object having a time stamp of the cut-out position (initial value) designated by the target definition information.
- the pointed entry is referred to as a target entry in the description of this flow.
- the controller 10 adds a new entry to the target list (S907).
- the controller 10 adds the BOID 1452a and 1452b, the virtual object size 1453, the time stamp 1454, and the keyword 1455 of the target entry of the base object management table 142 to the added new entry.
- the controller 10 updates the virtual metadata management table 144 (S908). Specifically, for the entry of the target definition information, the controller 10 sets the attribute 1444 to “valid”, adds 1 to the number of stored entries 1443, and sets the current date and time as the latest update date and time 1448.
- the controller 10 determines whether the target entry of the base object management table 142 is the last entry (S909). In the case of the final entry (S909; Yes), the controller 10 ends the process.
- the controller 10 points the next entry in the base object management table 142 as a target entry (S910), and proceeds to S907.
- a target entry S910
- an entry including a time stamp at an interval specified by the target definition information is pointed as a target entry.
- virtual metadata (including BOID) of the virtual object can be generated from the virtual object definition information.
- a virtual object can be generated by grouping time-series base objects belonging to the object group specified by the virtual object definition information for each time stamp.
- a virtual object list with a specified interval can be generated from the initial value (cutout position) based on the virtual object definition information.
- the storage device 1 can read a base object included in the virtual object based on the virtual object list.
- FIG. 10 is an example of a flowchart of the base object generation process.
- the base object generation processing is processing performed by the controller 10 every time the input device 8 performs input processing (S821 to S823).
- the input device 8 acquires IoT data from the data generation source device 7 (S821), and performs data conversion processing (S822). In the data conversion process, the input device 8 converts the IoT data into input data in a data format handled by the storage device 1. The input device 8 performs input data write processing (S823), and ends the processing. S1023 and S1024 are writing processes.
- the input device 8 transmits a request for writing object data to the controller 10 (S1023).
- the write request includes the IP address and UID (User ID) of the input device 8 that is the request source.
- the controller 10 receives the write request (S1001), refers to the input device identifier 1416 of the object management table 141, and becomes the target of the write request from the IP address and UID of the input device 8 included in the write request.
- An object group (target object group) is specified (S1002).
- the controller 10 refers to the object group management table 141, acquires the object group definition information of the target object group (S1003), and notifies the input device 8 of a response to the write request.
- the input device 8 receives the response and transmits the input data to the controller 10 (S1024).
- the controller 10 receives the input data, and shapes the input data into a base object based on the acquired object group definition information (S1004).
- the shaped base object is referred to as a target base object in this flow description.
- the controller 10 calculates a hash value of the target base object, and associates the calculated hash value with the target base object as a BOID (S1005).
- the controller 10 determines a storage device and a tenant as a storage destination of the target base object, and stores the base object data of the target base object in the determined storage destination (S1006).
- the controller 10 designates the storage destination tenant and transfers the base object data of the target base object to the other storage device 1 in the storage fabric.
- the other storage device 1 stores the base object data of the target base object in the designated storage destination tenant.
- the controller 10 adds the target base object entry to the base object management table 142 (S1007).
- the controller 10 sets the BOID and base metadata of the target base object in the added entry.
- the base metadata to be set includes the storage ID 1422 and tenant ID 1423 of the storage device that indicates the storage destination of the base object data of the target base object, the size 1424 of the base object, the attribute 1425, the time stamp 1426, and the key value 1427.
- the controller 10 adds one object number 1413 of the target object group in the object group management table 141 (S1008).
- the controller 10 notifies the update information in its base object management table 142 and object group management table 141 to the other storage apparatuses 1 in the storage fabric (S1009).
- the other storage devices 1 synchronize the tables 141 and 142 according to the notification.
- the controller 10 transmits the BOID of the target base object and the write request processing completion notification to the input device 8 (S1010).
- the input device 8 receives the BOID and the process completion notification, and ends the input process.
- the controller 10 can convert the input data requested to be written into base object data and store it in the storage device 1.
- time stamps based on the acquisition date (measurement date) of IoT data and custom metadata specified by the user in the object group definition information can also be included in the base metadata.
- These base metadata can be set as parameters for analyzing the base object.
- FIG. 11 is an example of a virtual object list creation process.
- This process is a process in which the controller 10 provides a temporary list that is a usable virtual object to the output device (client computer 4, NAS 5, data analysis device 6).
- client computer 4 will be described as an example of the output side device.
- This process is executed by the controller 10 when the client computer 4 executes a virtual object read process.
- the reading process is started when the user specifies the FQDN of the user portal screen from the client computer 4 and logs in using the virtual object storage ID of the virtual object storage owned by the user.
- the client computer 4 transmits login information to the controller 10 (S1121).
- the login information includes the virtual object storage ID and FQDN.
- the controller 10 receives the login information and transmits the display information of the portal screen to the client computer 4.
- the client computer 4 displays a portal screen on an input / output terminal (not shown) connected to the client computer 4 based on the display information.
- An example of the portal screen is shown in FIG.
- the user selects virtual object definition information from the portal screen, specifies an object group, searches for and specifies various parameters.
- the object group is specified by the virtual object definition information, but may be specified separately.
- an input device corresponding to the object group may be designated.
- the parameter may include a value included in the virtual metadata or a value included in the base metadata of the base object included in the virtual object.
- the client computer 4 sends a virtual object list query request to the controller 10 (S831).
- the query request includes various parameters specified by the user on the portal screen.
- the controller 10 receives the query request (S1101).
- the controller 10 refers to the virtual object storage management table 143 and identifies the virtual object definition information 1435 corresponding to the virtual object storage ID 1433 and FQDN 1434 included in the query request (S1102).
- the controller 10 refers to the virtual metadata management table 144 and searches for a target entry including the specified virtual object definition information 1441 (S1103).
- the controller 10 determines whether the target entry exists (S1104). When the target entry does not exist (S1104; No), the controller 10 executes the above-described virtual metadata creation process (see FIG. 9) (S1105), and advances the process to S1108.
- the virtual metadata creation process By the virtual metadata creation process, the target entry is added and the corresponding virtual object list is created.
- the controller 10 refers to the attribute 1444 of the target entry and determines whether the virtual object list included in the target entry is valid (S1106).
- the controller 10 executes the above-described virtual metadata creation process (see FIG. 9) (S1105), and advances the process to S1108.
- the controller 10 executes a virtual metadata update process (S1107).
- the virtual metadata update process will be described later.
- the controller 10 specifies the virtual object list 145 from the virtual object list name 1442 of the target entry (S1108).
- the controller 10 creates a temporary list for transmission to the client computer 4 based on the specified virtual object list (S1109).
- the temporary list is, for example, a list of virtual objects in a range that can be used by the virtual object storage (user) that requested the query request among the virtual objects included in the specified virtual object list.
- the controller 10 sets the top entry of the identified virtual object list as a search entry, and advances the process to S1110.
- the controller 10 determines whether or not the virtual metadata of the search entry is included in the query request (S1110). When virtual metadata is included in the query request (S1110; Yes), the controller 10 advances the process to S1115. On the other hand, when the virtual metadata of the search entry is not included in the query request (S1110; No), the controller 10 acquires the BOIDs 1452a and 1452b of the search entry. Then, the controller 10 refers to the base object management table 142 and determines whether or not the base metadata of the entry including the acquired BOID is included in the query request (S1111).
- the controller 10 copies the search entry information to the temporary list (S1114), and proceeds to S1115.
- the controller 10 checks the keyword 1427 of the base object management table 142 in the base metadata (S1112), and the keyword 1427 is included in the query request. It is determined whether or not (S1113).
- the controller 10 advances the process to S1115.
- the controller 10 copies the search entry information to the temporary list (S1114).
- the controller 10 determines whether or not the search entry is the last entry in the virtual object list 145 (S1115). When the search entry is not the final entry (S1115; No), the controller 10 sets the next entry in the virtual object list 145 as the search entry (S1116), and returns the process to S1110.
- the controller 10 transmits a temporary list to the client computer 4 (S1117). Further, the controller 10 transmits the temporary list to another storage device of the storage fabric.
- the client computer 4 receives the temporary list, stores it in the memory 42 (S832), and ends the process.
- the other storage devices also receive the temporary list, store it in the memory, and end the process.
- the client computer 4 can acquire the VOID that is the target of the query request from the received temporary list. Based on the acquired VOID, the client computer 4 can request a virtual object.
- FIG. 12 is a part of an example of the virtual object generation process.
- FIG. 13 shows the remaining part of an example of the virtual object generation process.
- the virtual object generation process is a process of generating a virtual object based on a read request from the output device (client computer 4, NAS 5, data analysis device 6) and providing the virtual object to the output device.
- client computer 4 As an output device, the client computer 4 will be described as an example.
- This process follows the virtual metadata information creation process.
- the user is logged into the portal screen.
- An example of the portal screen displaying the temporary list transmitted in the virtual metadata information creation process is shown in FIG.
- a list of objects in the portal screen is displayed based on the temporary list acquired in the process (FIG. 11).
- the user designates the virtual object to be read from the object list and presses the “Download” button.
- the client computer 4 transmits a read request including the VOID of the designated virtual object to the controller 10 (S1220).
- the virtual object read request includes the VOID specified by the user.
- the user can specify a reservation virtual object.
- This designation is hereinafter referred to as reservation designation.
- reservation designation designates a future base object belonging to an object group included in the virtual object.
- the reservation designation is performed, for example, when the latest (current time) base object is sequentially displayed, or when the base objects a predetermined time before the current time are sequentially displayed.
- the reservation is specified using the VOID of the reservation virtual object.
- the user can specify reservation of a virtual object for reservation in the real-time information (reservation specification) column.
- the BOID with the latest time stamp of the corresponding object group is sequentially associated with the reserved VOID.
- a BOID with a time stamp a predetermined time before the current time of the corresponding object group is sequentially associated with the reserved VOID.
- this VOID is released from the used state, reserved as a VOID for a reserved virtual object in an unused state, and is in a reusable state.
- the client computer 4 transmits a read request to the controller 10 (S833).
- the controller 10 receives the read request (S1201).
- the controller 10 refers to the virtual object storage management table 143 and identifies virtual object definition information from the login information (virtual object storage ID 1431 and FQDN 1432) (S1202).
- the controller 10 searches whether the entry of the specified virtual object definition information exists in the virtual metadata management table 144 and the attribute 1444 is valid.
- the controller 10 determines whether or not there is an entry of definition information of the identified virtual object and the attribute 1444 is valid (S1205). When the entry does not exist or the attribute 1444 is invalid (S1205; No), the controller 10 responds with an error (S1220) and ends the process.
- the controller 10 determines whether or not the expiration date 1445 of the virtual object list is within the threshold value 1446 (S1206). For example, when the expiration date condition 1445 is “time”, the controller 10 determines whether or not the time from the virtual object list creation date 1447 to the current date is within the threshold value 1446. In this case, the controller 10 may determine whether or not the time from the latest update date 1448 of the virtual object list to the current date is within the threshold value 1446. For example, when the expiration date condition 1445 is “access count”, the controller 10 determines whether or not the virtual object list access count 1449 is within the threshold value 1446.
- the controller 10 sets the attribute 1444 of the entry in the virtual metadata management table 144 to “invalid” (S1207). Then, the controller 10 sends an error response to the client computer 4 (S1220) and ends the process.
- the controller 10 specifies the virtual object list 145 included in the entry as the target virtual object list (S1208).
- the controller 10 refers to the target virtual object list and searches for the VOID to be read included in the read request (S1209).
- the controller 10 determines whether or not there is an entry of the VOID to be read in the target virtual object list 145 (S1210). If there is no VOID entry to be read (S1210; No), the controller 10 advances the process to 2 in the figure (S1301 in FIG. 13).
- the controller 10 specifies the storage destination of one or more base objects included in the virtual object to be read, and the base object is determined from the storage destination. Data is acquired (S1211). Specifically, the controller 10 refers to the virtual object list 145 and acquires one or more BOIDs 1452a and 1452b corresponding to the VOID to be read. Next, the controller 10 refers to the base object management table 142 and acquires storage IDs 1422 and tenant IDs 1423 corresponding to all of the acquired BOIDs 1422. If the acquired storage ID is itself, the controller 10 specifies the acquired storage ID and tenant ID, and reads all base objects included in the virtual object to be read. When the acquired storage ID is another storage device in the storage fabric, the controller 10 transmits a base object read request specifying the tenant ID to the storage device 1 that is the storage destination.
- the controller 10 shapes the read base object into a target virtual object based on the virtual object definition information specified in S1202, and transmits the target virtual object to the client computer 4 (S1212). Specifically, for example, the controller 10 sends the information on the entry of the virtual object to be read in the target virtual object list, the read base object data, and the information on the entry of the base object in the base object management table 142 to the client. It transmits to the computer 4.
- the controller 10 determines whether or not there are a plurality of target virtual objects included in the read request (S1213). When a plurality of target virtual objects do not exist (S1213; No), the controller 10 advances the process to S1215. On the other hand, when there are a plurality of target virtual objects (S1213; Yes), the controller 10 determines whether or not there are target virtual objects that have not been transmitted to the client computer 4 (S1214).
- the controller 10 refers to the virtual object list 145, selects the next VOID as the target virtual object (S1217), and returns the process to S1211.
- the controller 10 increments the access count 1449 of the virtual metadata management table 144 (S1215).
- the controller 10 refers to the virtual metadata management table 144 and determines whether the expiration date condition 1445 of the target virtual object list is “the number of accesses” and the number of accesses 1449 is equal to or less than the threshold value 1446 (S1216).
- the controller 10 sets “invalid” in the attribute 1444, and advances the processing to S1219.
- the controller 10 advances the process to step S1219.
- the controller 10 notifies the other storage device 1 of the update of the virtual metadata management table 144 (S1219), and ends the process.
- the controller 10 determines whether or not the virtual object is reserved (S1301). Specifically, the controller 10 determines whether or not a reservation request VOID is included in the read request. When the virtual object is not designated for reservation (S1301; No), the controller 10 responds an error to the client computer 4 (3 in the figure; S1220 in FIG. 12), and ends the process.
- the controller 10 determines whether or not the VOID included in the read request is the VOID of the virtual object for the latest data response (S1302).
- the virtual object for latest data response is a virtual object including a base object with a time stamp indicating the current time (real time).
- the controller 10 determines whether the VOID included in the read request is the VOID of the virtual object for the response before the predetermined time. Is determined (S1308).
- the virtual object for response before a predetermined time is a virtual object including a base object with a time stamp indicating a time that is a predetermined time before the current time.
- the controller 10 points to the entry of the target virtual object list including the time stamp 1454 a predetermined time before the current time. (S1309), the process proceeds to S1304 (to 5 in the figure).
- the controller 10 points to an entry according to a preset rule, and advances the process to S1304.
- the controller 10 points to the entry for latest data response in the virtual object list 145 (S1303).
- the last entry is the entry for the latest data response.
- the controller 10 specifies the BOID 1452 of the entry pointed to.
- the specified BOID is the ID of the base object at the current time based on the target object group to which it belongs. Therefore, when the controller 10 generates the base object at the current time of the target object group based on the input data, the controller 10 specifies the tenant ID 1423 of the storage destination of the object group and stores the base object in the storage destination tenant ( S1304). If the storage destination of the identified base object is a tenant of another storage device, the controller 10 transmits a write request for the base object designating the storage device and the tenant to the other storage device.
- the controller 10 shapes the generated base object into a virtual object based on the virtual object definition information, and provides the virtual object to the requesting client computer 4 (S1305). Specifically, for example, the controller 10 transmits the generated base object to the requesting client computer 4. Then, the controller 10 generates a BOID of the generated base object and updates the base object management table 142. The shaping of the virtual object is the same as S1212.
- the client computer 4 receives the virtual object (S1307). Then, the client computer 4 analyzes and outputs the virtual object based on the instruction from the client.
- the virtual object designated by the read request from the temporary list can be transmitted to the client computer 4.
- the client computer 4 can read a virtual object including one or more base objects based on the virtual object definition information by specifying the VOID.
- the attributes of the virtual object list can be set valid or invalid. Further, only valid virtual objects designated by the read request can be transmitted to the client computer 4.
- the virtual object can be read according to the reservation specification rule.
- the client computer 1 can read out the base object at the current time, which changes from moment to moment, with one read request.
- FIG. 14 is an example of a flowchart of the virtual metadata update process.
- the virtual metadata update process is the process of S1107 in FIG.
- the controller 10 refers to the virtual metadata management table 144 and the virtual object list 145, and reads the number of entries 1443 in the virtual object list 145 corresponding to the virtual object definition information specified in S1102 (S1401).
- the identified virtual object definition information is referred to as target definition information.
- the controller 10 identifies the object group specified by the target definition information, refers to the object group management table 141, and checks the number of objects 1413 of the base objects belonging to the specified object group (S1402). When there are a plurality of designated object groups, the controller 10 identifies a plurality of object groups and confirms the number of objects of the base object for each object group.
- the controller 10 determines whether or not the current number of virtual objects specified in the target definition information is greater than the previous number of virtual objects (S1403). Specifically, for example, it is determined whether the number of objects confirmed in S1402 is larger than the number of entries read from the virtual object list 145 in S1401. When the number of virtual objects specified by the target definition information is the same as the number of virtual objects specified by the previous target definition information (S1403; No), the controller 10 ends the process (to 1 in the figure). On the other hand, if the number of virtual objects specified by the target definition information has increased from the previous time (S1403; Yes), the process proceeds to S1404.
- the controller 10 acquires the base object management table 142 of all the specified object groups (S1404).
- the controller 10 executes the processing from S1404 onward for all the identified object groups.
- the controller 10 points to the first entry of the acquired base object management table 142 (S1405).
- the head entry here is an entry of a base object having a time stamp of the cut-out position (initial value) designated by the target definition information.
- the pointed entry is referred to as a target entry in the description of this flow.
- the controller 10 adds a new entry to the target list (S1406).
- the controller 10 adds the BOID 1452, the virtual object size 1453, the time stamp 1454, and the keyword 1455 of the target entry of the base object management table 142 to the added new entry.
- the controller 10 updates the virtual metadata management table 144 (S1407). Specifically, for the entry of the target definition information, the controller 10 sets the attribute 1444 to “valid”, adds 1 to the number of stored entries 1443, and sets the current date and time as the latest update date and time 1448.
- the controller 10 determines whether or not the target entry of the base object management table 142 is the last entry (S1408). In the case of the final entry (S1408; Yes), the controller 10 ends the process.
- the controller 10 points the next entry in the base object management table 142 as the target entry (S1409), and advances the process to S1406.
- an entry including a time stamp at an interval specified by the target definition information is pointed as a target entry.
- the virtual object corresponding to the virtual object definition information You can update virtual objects in the list.
- FIG. 15 is a part of an example of a flowchart of the base object deletion process.
- FIG. 16 is a remaining part of an example of the flowchart of the base object deletion process.
- the management computer 3 transmits a base object deletion request to the controller 10 (S1511).
- the deletion request includes a target object group and a deletion condition for determining a base object to be deleted from the target object group.
- the deletion condition includes the retention period of the base object to be deleted or the object size of the base object. In the deletion request, all object groups may be targeted.
- Controller 10 receives the deletion request and determines whether or not the deletion condition for determining the base object to be deleted is the retention period of the base object (S1501). When the deletion condition is the retention period (S1501; Yes), the controller 10 advances the process to S1503.
- the controller 10 determines whether or not the deletion condition is the size of the base object to be deleted (S1502).
- the controller advances the process to S1641 (B in the drawing) in FIG.
- the controller 10 ends the process.
- the controller 10 points the top entry of the base object management table 142 as a time determination entry (S1503).
- the controller 10 checks whether the attribute 1425 of the time determination entry is valid or invalid (S1504).
- the controller 10 determines whether or not the time determination entry is the last entry in the base object management table 142 (S1507). In the case of the final entry, the controller 10 advances the processing to S1625 (C in the figure) in FIG. On the other hand, if the time determination entry is not the last entry, the controller 10 points the next entry as the time determination entry (S1508), and advances the process to S1504.
- the controller 10 confirms the time stamp 1426 of the time determination entry and refers to the object group management table 141 and includes the base object of the time determination entry.
- the object group retention period 1415 is confirmed (S1506).
- the controller 10 determines whether or not the time from the time stamp to the current time exceeds the retention period 1415 (S1509). When the time from the time stamp to the current time exceeds the holding period 1415 (S1509; Yes), the controller 10 advances the process to S1621 (A in the drawing). On the other hand, when the time from the time of the time stamp to the current time does not exceed the holding period 1415 (S1509; No), the controller 10 ends the process.
- the controller 10 clears the set size determination variable (size determination variable) (S1641).
- the controller 10 points the top entry of the base object management table 142 as a size determination entry.
- the controller 10 invalidates the attribute 1425 of the size determination entry (S1642).
- the controller 10 adds the value of the size 1424 of the size determination entry to the size determination variable (S1644).
- the controller 10 determines whether or not the size determination variable has exceeded a preset threshold value (S1645). When the size determination variable exceeds the threshold value (S1645; Yes), the controller 10 advances the process to S1625. On the other hand, when the size determination variable is equal to or smaller than the threshold (S1645; No), the controller 10 determines whether or not the size determination entry is the last entry in the base object management table 142 (S1646).
- the controller 10 advances the process to S1625.
- the controller 10 points the next entry as the size determination entry (S1647), and returns the process to S1643.
- the controller 10 invalidates the attribute 1425 of the time determination entry (S1621).
- the controller 10 determines whether or not the time determination entry is the last entry in the base object management table 142 (S1622). When the time determination entry is the last entry (S1622; Yes), the controller 10 advances the process to S1625. On the other hand, when the time determination entry is not the final entry (S1622; No), the controller 10 points the next entry as the time determination entry (S1623).
- the controller 10 confirms the time stamp 1426 of the time determination entry and refers to the object group management table 141 to confirm the retention period 1415 of the object group including the base object of the time determination entry. Then, it is determined whether or not the time from the time of the time stamp to the current time exceeds the holding period 1415 (S1624). If the time from the time of the time stamp to the current time exceeds the holding period 1415 (S1624; Yes), the time determination entry is a deletion target, and the controller 10 returns the process to S1621.
- the controller 10 does not delete the time determination entry.
- the controller 10 determines whether or not to delete the base object with priority in the object deletion process (S1625). When the base object is not deleted preferentially (S1625; No), the controller 10 deletes the virtual object with priority over the base object. In this case, the controller 10 advances the process to S1648 (to D in the figure). On the other hand, when the base object is deleted preferentially (S1625; Yes), the controller 10 points the top entry of the base object management table 142 of the target object group as the deletion target entry (S1626).
- the controller 10 determines whether or not the entry to be deleted is valid (S1627). When the deletion target entry is valid (S1627; Yes), the controller 10 ends the process. On the other hand, when the deletion target entry is invalid (S1627; No), the controller 10 deletes the base object of the deletion target entry. Specifically, for example, the controller 10 acquires the tenant ID 1423 of the deletion target entry and releases the storage area of the target base object in the tenant.
- the controller 10 specifies the storage ID 1422 and tenant ID 1423 of the deletion target entry, and sends a deletion request to the storage device 1 that stores the target base object. (S1628).
- the controller deletes the deletion target entry from the base object management table 142 (S1629).
- the controller 10 determines whether the entry to be deleted is the last entry (S1630). If the deletion target entry is the last entry (S1630; Yes), the controller 10 ends the process. On the other hand, when the deletion target entry is not the final entry (S1630; No), the controller 10 points the next entry as the deletion target entry (S1631), and returns the process to S1627.
- the controller 10 refers to the virtual metadata management table 144 and searches for the virtual object definition information 1441 including the target object group (S1648). Note that if the virtual metadata management table 144 includes virtual object definition information 1441 including a target object group, it means that a virtual object that refers to a base object belonging to the target object group remains.
- the controller 10 determines whether or not there is an entry of the virtual object definition information 1441 including the target object group in the virtual metadata management table 144 (S1649). If there is no entry (S1649; No), it means that there is no virtual object that refers to the base object belonging to the target object. In this case, the controller 10 advances the process to S1626 in order to perform the deletion process of the base object of the target object group.
- the controller 10 schedules the process to proceed to S1626 and ends the process.
- each base object data can be given a valid or invalid attribute according to a predetermined rule such as the retention period has been exceeded or the capacity has been exceeded.
- the virtual object deletion process is executed when the management computer 3 transmits a virtual object deletion request or at a preset time.
- FIG. 17 is an example of a flowchart of virtual object deletion processing based on a virtual object deletion request.
- the management computer 3 transmits a virtual object deletion request to the controller 10 (S1721).
- the deletion request includes, for example, a virtual object storage ID and FQDN.
- the controller 10 receives the deletion request (S1701).
- the controller 10 acquires virtual object definition information 1435 corresponding to the virtual object storage ID 1431 and the FQDN 1432 included in the deletion request based on the virtual object storage management table 143.
- the controller specifies the entry of the acquired virtual object definition information 1441 in the virtual metadata management table 144 as a target entry (S1702).
- the controller 10 specifies the virtual object list 145 based on the virtual object list name 1442 of the target entry (S1703).
- the controller 10 deletes the specified virtual object list 145 (S1704).
- the controller 10 deletes the target entry from the virtual metadata management table 144 (S1705).
- the controller 10 transmits a deletion request completion notification to the management computer 3 (S1706).
- the controller 10 notifies the other storage devices 1 of the storage fabric of the deletion of the virtual object list 145 and the update of the virtual metadata management table 144 (S1707), and the process is terminated.
- the management computer 3 receives the completion notification and ends the process.
- the virtual object can be deleted based on the virtual object deletion request from the management computer 3.
- the deleted VOID can be reused.
- FIG. 18 is an example of a flowchart of a virtual object deletion process at a preset time. This deletion process is executed regularly or irregularly.
- the controller 10 refers to the virtual metadata management table 144 and points the first entry as a target entry (S1811). The controller 10 determines whether or not the attribute of the target entry is valid (S1812). When the attribute 1444 of the target entry is invalid (S1812; No), the controller 10 advances the process to S1814.
- the controller 10 refers to the expiration date condition 1445 and determines whether the target entry is valid (S1813). Specifically, for example, when the expiration date condition of the target entry is “time”, the controller 10 determines that the time from the creation date 1447 or the latest update date to the current time is equal to or less than the threshold value 1446. . Further, for example, when the expiration date condition of the target entry is “access count”, the controller 10 determines that the access count is valid when the access count 1449 is within the threshold value 1446.
- the controller 10 executes the virtual metadata update process (FIG. 14) (S1819), and returns the process to S1816 (F in the figure).
- the controller 10 specifies the virtual object list 145 to be deleted from the target entry (S1814), and deletes the virtual object list 145 to be deleted (S1815). The controller 10 deletes the target entry in the virtual metadata management table 144 (S1816).
- the controller determines whether the target entry is the last entry (S1816). If the target entry is the last entry (S1816; Yes), the controller 10 registers the schedule for the next deletion process, deletes the virtual object list 145 and the virtual metadata management table for the other storage devices 1 in the storage fabric. 144 is notified of the update (S1807), and the process is terminated.
- the controller 10 returns the process to S1815.
- the virtual object can be deleted at the scheduled timing by the above process.
- the virtual object can be deleted based on the expiration date condition or the like.
- the deleted VOID can be reused.
- FIG. 22 is a modification of the flowchart of the virtual file creation process.
- the virtual object reading process is performed by the NAS system instead of the client computer 4 .
- the NAS system has a NAS server and a NAS client connected to the NAS server (not shown).
- the NAS server has a file system.
- folders and files are managed in a directory structure.
- Files and folders on each file system are managed by inode.
- Each file and folder is assigned an inode number. For example, when the NAS client transmits a read request specifying a certain file to the NAS server, the NAS server reads the file based on the inode number of the specified file and transmits it to the NAS client.
- the NAS server creates a virtual file folder based on the virtual object definition information.
- the NAS server creates a virtual file folder based on a virtual file folder creation instruction that specifies virtual object definition information.
- the creation instruction is transmitted, for example, by the NAS client (S2220).
- the user logs in from the portal screen of the NAS client using his / her virtual object storage ID, designates virtual object definition information, and transmits a corresponding virtual file folder creation instruction.
- the NAS server creates a virtual file folder.
- the NAS server receives the creation instruction, and creates a virtual file folder (S2202).
- the NAS server deletes all files and inodes in the virtual file folder. Note that all files in the virtual file folder are stubbed, and the actual data is stored in the storage device connected to the NAS server.
- the NAS server transmits a virtual object list query request to the controller 10 (S2203).
- the query request is for requesting a virtual object list corresponding to the virtual object definition information as described above.
- the controller 10 receives the query request and executes a virtual object list creation process (S814).
- the virtual object list creation process is as described with reference to FIGS.
- the NAS server receives the virtual object list (temporary list) (S2204).
- the NAS server acquires the VOID of the first entry in the temporary list (S2205).
- the NAS server creates a stub file that refers to the acquired VOID in the virtual file folder (S2206). Then, the NAS server associates the acquired VOID with the inode number of the stub file.
- the NAS server determines whether or not the acquired VOID is the VOID of the last entry in the temporary list (S2207). If it is not the VOID of the last entry in the temporary list (S2207; No), the NAS server acquires the VOID of the next entry and returns the process to S2206. On the other hand, in the case of the VOID of the last entry in the temporary list (S2207; Yes), the NAS server waits for a read request from the NAS client.
- the NAS client sends a read request designating the file to be read to the NAS server (S2221).
- the NAS server acquires the VOID from the stub file to be read (S2209).
- the NAS server transmits a read request designating the VOID to the controller 10 (S2210).
- the controller 10 performs a virtual object generation process based on the read request (S815).
- the virtual object generation process is as described above (see FIGS. 12 and 13).
- the controller 10 After the virtual object generation process, the controller 10 provides a virtual object. Specifically, for example, the controller 10 transmits a base object and virtual metadata included in the virtual object to the client computer 4.
- the NAS server receives the virtual object and transfers it to the NAS client (S2211).
- the NAS client receives the virtual object and ends the process (S2222).
- the NAS server can create a stub file that refers to the virtual object on the file system.
- the NAS client can read the virtual object in the storage device 1 by accessing the NAS server.
- Storage device Management computer 4.
- Client computer NAS server 6.
- Data analysis device Data source device 8.
- IoT data input device 10.
- Storage controller 20 Storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
コントローラは、各検出装置から送信される入力データに基づくオブジェクトを生成し、各オブジェクトを記憶デバイスへ格納する。コントローラは、各検出装置の識別子に対応する複数のオブジェクトをオブジェクトグループとして分類する。コントローラは、選択条件を満たすオブジェクトの中から、各パラメータ値に対応する複数のオブジェクトをパラメータグループとして分類し、パラメータグループを識別するパラメータグループ識別子を生成する。コントローラは、生成される複数のパラメータグループ識別子を含むパラメータグループ識別子リストを計算機へ送信する。コントローラは、計算機から、パラメータグループ識別子リストの中の特定パラメータグループ識別子を含むパラメータグループ要求を受信した場合、特定パラメータグループ識別子に対応するオブジェクトを特定し、特定されたオブジェクトを、前記計算機へ送信する。
Description
本発明は、ストレージ装置に関する。
近年、モノのインターネット(IoT;Internet of Things)と称される分野が注目されている。IoTは、PCやストレージ装置等の情報機器のネットワーク(インターネット)にセンサ等の“モノ”を接続して、センサ等から取得されるデータを、その利活用を目的として収集する技術である。
一般的に、センサ等から取得される個々のデータ(IoTデータ)は、ある時点の状態等の一時的なデータであり情報量も少ない。IoTデータは、単体ではコンテンツとして成立し得ないデータ容量の小さなデータである。一方、インターネットの使用環境は、IoTデータに比べて容量の大きなコンテンツデータの送受を主としている。
従って、IoTデータは、取得された膨大な数のデータを解析し、可視化するプロセスを経て、初めてコンテンツとして利用可能となる。例えば、特定センサでの定点観測で取得されたIoTデータは、その時間的な変化がグラフ化されて初めてコンテンツとして利用できる。また、例えば、多数の拠点のセンサから取得されたIoTデータは、統計分析されることで初めてコンテンツとして利用できる。
ストレージ装置に蓄積されたIoTデータは、解析及び可視化プロセスを経ることで活用できる。このために、IoTデータは、ストレージ装置に格納されるとともに、IoTデータを格納するストレージ装置とは別のデータウェアハウスにより、データベース化されたデータが蓄積される。具体的には以下の通りである。
(1)センサ等のデータ発生元装置から時々刻々と発生するIoTデータは、データ入力装置により取得され、ストレージ装置に送信される。
(2)ストレージ装置は、受信したIoTデータ(ソースデータ)に、センサ情報や測定日時等の属性情報を付して記憶する。
(3)ストレージ装置に記憶されたIoTデータのうちデータ解析に必要なIoTデータについては、データウェアハウスなど、他の記憶装置を備えたシステムが抽出し、これらデータ間を関連づける等の加工を施し、データベース又はファイルとして格納する。
(4)出力装置は、解析結果に応じたデータの組み合わせ範囲、順序等が記述された解析プログラムを保持している。出力装置は、データウェアハウス内の解析用のデータを読み出し、解析プログラムを実行することにより、解析処理を施し解析結果を出力する。
(1)センサ等のデータ発生元装置から時々刻々と発生するIoTデータは、データ入力装置により取得され、ストレージ装置に送信される。
(2)ストレージ装置は、受信したIoTデータ(ソースデータ)に、センサ情報や測定日時等の属性情報を付して記憶する。
(3)ストレージ装置に記憶されたIoTデータのうちデータ解析に必要なIoTデータについては、データウェアハウスなど、他の記憶装置を備えたシステムが抽出し、これらデータ間を関連づける等の加工を施し、データベース又はファイルとして格納する。
(4)出力装置は、解析結果に応じたデータの組み合わせ範囲、順序等が記述された解析プログラムを保持している。出力装置は、データウェアハウス内の解析用のデータを読み出し、解析プログラムを実行することにより、解析処理を施し解析結果を出力する。
上記の場合、ストレージ装置内のIoTデータの他に、解析用のデータが、他の記憶装置に格納される。これらのデータは重複して格納されることとなる。IoTデータは日々増え続けるため、記憶されるデータが重複すれば無駄に記憶容量を消費してしまう。
また、ストレージ装置は、記憶容量が限られる。膨大なデータを保持しておくためには、古いデータのバックアップが必要となる。この場合、磁気テープなどのコストの安い記憶装置を使用する。しかし、磁気テープ等の記憶装置はランダムにアクセスできないため検索には不向きである。
またこの場合、解析は、出力装置が解析プログラムを実行することにより行われる。このため、新たな解析結果を出力したい場合は、出力装置は新たな解析プログラムが必要となる。また、望まれる解析結果を出力できなかった場合、解析プログラムを修正しなければならない。
ところで、近年、オブジェクト型のストレージ装置が出現している(例えば、特許文献1)。オブジェクトストレージ装置は、データを階層化して格納し、検索にパスを設定する従来のストレージ装置とは異なり、データに固有のID(以下、オブジェクトID;OID)と当該データの情報であるメタデータを付与して格納する。出力装置からのOIDを指定したデータの読出要求に基づき、オブジェクトストレージ装置は、OIDを指定してデータを読み出す。OIDを指定することで、オブジェクトストレージ装置は、従来型のストレージ装置よりもデータの検索時間を短くできる。このため、オブジェクトストレージ装置は、膨大なデータを格納するのに適している。
オブジェクトストレージ装置は、別名リードオンリーやワンスライトなどと称され、データの更新を前提としておらず、更新データもまた別個のデータとして格納される。しかし、オブジェクトストレージ装置において、複数のデータを関連付ける技術はない。
ストレージ装置は、記憶デバイスと、前記記憶デバイス、計算機、及び複数の検出装置に接続されるコントローラと、を備える。コントローラは、各検出装置から送信される入力データを受信する。入力データは、対応する検出装置を識別する検出装置識別子と、対応する検出装置により検出される検出値と、前記検出毎に与えられるパラメータ値とを含む。コントローラは、各入力データに基づくオブジェクトを生成し、各オブジェクトを識別するオブジェクトIDを生成し、各オブジェクトを前記記憶デバイスへ格納する。コントローラは、各検出装置識別子に対応する複数のオブジェクトをオブジェクトグループとして分類する。コントローラは、オブジェクトの選択のための選択条件を記憶する。コントローラは、選択条件を満たすオブジェクトの中から、各パラメータ値に対応する複数のオブジェクトをパラメータグループとして分類し、前記パラメータグループを識別するパラメータグループ識別子を生成する。コントローラは、生成される複数のパラメータグループ識別子を含むパラメータグループ識別子リストを記憶するとともに計算機へ送信する。コントローラは、計算機から、パラメータグループ識別子リストの中の特定パラメータグループ識別子を含むパラメータグループ要求を受信した場合、特定パラメータグループ識別子に対応するオブジェクトを特定し、特定されたオブジェクトを、計算機へ送信する。
データの検索時間を短縮し、かつ、データの関連付けを容易にしたストレージ装置を提供できる。
以下の説明では「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。各種情報は、データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶことができる。
また、以下の説明において、プロセッサは、プログラムを実行し、記憶資源(例えば、メモリ)及び/又は通信インターフェイスデバイス(例えば、通信ポート)等を用いながら処理を行う。処理の主体について、以下の説明では各種のプログラムを主体とする場合があるが、プログラムを実行するプロセッサを主体としてもよい。また、プロセッサを主体とする処理は、1以上のプログラムを実行する事によりおこなわれると解釈されてもよい。プロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、処理の一部(例えば、暗号化/復号化、圧縮/伸張)を実行するハードウェア回路を含んでもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合には、その要素の参照符号に代えて、その要素に割り振られた識別子(例えば番号及び符号のうちの少なくとも1つ)を使用することがある。以下、本実施例を説明する。
図1は、計算機システムのハードウェアの構成図の一例である。
計算機システムは、複数のオブジェクトストレージ装置1と、管理計算機(管理PC)3と、クライアント計算機4と、データ発生元装置7と、入力装置(IoTデータ入力装置)8と、を有する。オブジェクトストレージ装置1を、以下では、単にストレージ装置1と呼ぶ。
また、計算機システムには、クライアント計算機4に代えて又は加えて、NAS(Network Attached Storage)サーバ5やデータ解析装置6が含まれてもよい。
複数のストレージ装置1と、管理計算機3と、クライアント計算機4と、入力装置8とは、例えば、インターネット等の通信ネットワーク9に接続される。また、計算機システムにNASサーバ5やデータ解析装置6を含む場合、これらNASサーバ5やデータ解析装置6も通信ネットワーク9に接続される。なお、通信ネットワーク9に接続され、互いに通信可能な複数のストレージ装置1を、以下ではストレージファブリックという。ストレージファブリック内の各ストレージ装置が、各データセンタに設置されてもよいし、1つのデータセンタ内にストレージファブリックが構成されてもよい。
データ発生元装置7は、入力装置8に接続される。データ発生元装置7は、入力装置8にIoTデータを出力する。例えば、IoTデータは、データ発生元装置7で時々刻々と検出される小さなサイズのデータである。データ発生元装置7は、例えば、各種センサ等の測定機器である。この場合、測定機器による測定値がIoTデータである。測定機器は、例えば、気温等を測定する温度センサ、交通量を測定する交通量計測機器等であってもよい。
入力装置8は、データ発生元装置7が出力したIoTデータをストレージ装置1に転送する。この場合、例えば、データ発生元装置7から出力されるIoTデータは、IPフレームの形式である。入力装置8は、受信したIoTデータをテキスト等のストレージ装置1が取り扱える形式の入力データに変換し、ストレージ装置1に送信する。入力装置8は、例えば汎用計算機である。入力装置8は、CPU(Central Processing Unit)81と、メモリ82、HDD(Hard Disk Drive)83、NIC(Network Interface Card)84等の記憶媒体と、を有する。入力装置8は、NIC84を介して通信ネットワーク9に接続される。
本実施例では、データ発生元装置7と入力装置8が1対1で接続されているものとする。データ発生元装置7と入力装置8は、本実施例では別体であるが、一つの装置に含まれていてもよい。また、複数のデータ発生元装置7が1つの入力装置8に接続されていてもよい。この場合、入力装置8は、データ発生元装置7毎にIoTデータを管理する。
管理計算機3は、ストレージ装置1に対し各種の設定等を行う。管理計算機3は、例えば汎用計算機である。管理計算機3は、CPU31と、メモリ32と、HDD33等の記憶媒体と、NIC34とを有する。管理計算機3は、NIC34を介して通信ネットワーク9に接続される。
本実施例のストレージ装置1は、オブジェクトストレージ装置である。オブジェクトストレージ装置は、その記憶領域にオブジェクトを格納する。オブジェクトは、実データであるオブジェクトデータと、オブジェクトデータの属性情報とを含む。オブジェクトは、オブジェクトデータに固有のオブジェクトID(OID)により一意に識別される。
ストレージ装置1は、ストレージコントローラ10と、記憶装置20とを有する。ストレージコントローラ10は、NIC11と、CPU12と、HBA(Host Bus Adapter)13と、メモリ14と、を有する。以下では、ストレージコントローラ10を単にコントローラ10という場合がある。
CPU12は、メモリ14内のプログラムを実行することにより、IoTデータに基づくオブジェクトの一例である後述のベースオブジェクトを生成し、HDD22に格納する。また、CPU12は、メモリ14内のプログラムを実行することにより、要求元からの要求に応じて仮想オブジェクトを生成し、要求元に送信する。
メモリ14は、ストレージ装置1を制御するための各種プログラムや各種情報を記憶する。各種情報は、例えば、オブジェクトグループ管理テーブル141、ベースオブジェクト管理テーブル142、仮想オブジェクトストレージ管理テーブル143、仮想メタデータ管理テーブル144、仮想オブジェクトリスト145、オブジェクトグループ定義情報146、仮想オブジェクト定義情報147等である。
コントローラ10は、NIC11を介して通信ネットワーク9に接続される。また、コントローラ10は、HBA13を介して記憶装置20に接続される。
記憶装置20は、デバイスコントローラ(CTL)21と、例えばHDD22等の記憶媒体を有する。デバイスコントローラ21が、HBA13を介してコントローラ10に接続される。
クライアント計算機4は、ストレージ装置1からベースオブジェクトを含む仮想オブジェクトを取得する。また、クライアント計算機4は、取得した仮想オブジェクトの解析結果を出力する。クライアント計算機4は、例えば汎用計算機である。クライアント計算機4は、CPU41と、メモリ42と、HDD43等の記憶媒体と、NIC44とを有する。クライアント計算機4は、NIC44を介して通信ネットワーク9に接続される。
NAS5は、ファイルシステムを有するストレージ装置である。NAS5は、CPU51と、メモリ52と、HDD53等の記憶媒体と、NIC54とを有する。NAS5は、NIC54を介して通信ネットワーク9に接続される。
データ解析装置6は、ストレージ装置1からベースオブジェクトを含む仮想オブジェクトを取得する。また、データ解析装置6は、取得した仮想オブジェクトの解析結果を出力する。データ解析装置6は、例えば汎用計算機である。データ解析装置6は、CPU61と、メモリ62と、HDD63等の記憶媒体と、NIC64とを有する。データ解析装置6は、NIC64を介して通信ネットワーク9に接続される。
なお、管理計算機3、クライアント計算機4、NAS5、データ解析装置6、入力装置8及び記憶装置20が有する記憶媒体は、HDDに限られず、例えばSSD(Solid State Drive)等どのような種類の媒体であってもよい。
図2は、本実施例のストレージファブリックによる仮想オブジェクトストレージの概要を説明する図である。
ストレージファブリック内の複数のストレージ装置1(#1、#2)は、複数の検出装置及び出力装置に接続される。
出力装置には、例えば、クライアント計算機4や、データ解析装置6や、図示しないNASサーバ5等が含まれる。
データ発生元装置7及び入力装置8が検出装置である。データ発生元装置7が、IoTデータを検出し、入力装置8が検出したIoTデータを入力データに変換しストレージ装置1に送信する。入力データは、対応する検出装置を識別する検出装置識別子と、対応する検出装置により検出される検出値と、検出毎に与えられるパラメータ値を含む。
検出装置識別子は、データ発生元装置7を一意に特定可能な識別子である。具体的には、例えば、データ発生元装置7の識別子や、データ発生元装置7に1対1で接続された入力装置8のIDである。
検出値は、データ発生元装置7が検出した値である。本実施例のようにデータ発生元装置7がセンサなどの測定装置の場合は、その測定値である。パラメータ値は、例えば、検出日時(測定日時)や、検出の順番を示す続き番号である。
各ストレージ装置1は、記憶装置20を有する。ストレージ装置1は、記憶装置20内部の記憶領域を区画化したテナントを設定する。以下、ストレージファブリック内の1つのストレージ装置1の入力側の機能を説明する。他のストレージ装置についても同様である。
ストレージ装置1は、各入力データに基づきベースオブジェクトを生成し、各ベースオブジェクトを識別するBOIDを生成する。ベースオブジェクトは、ベースオブジェクトデータと、その属性情報であるベースメタデータとを含む。
ストレージ装置1は、検出装置に対応する複数のベースオブジェクトをオブジェクトグループとして分類する。
オブジェクトグループは、各入力装置8からの入力データに基づくベースオブジェクトの集合である。前述の通り、本実施例では、1つの入力装置8に、1つのデータ発生元装置7であるセンサが接続されている。このため、1つのオブジェクトグループは、1つのセンサにより連続して又は不連続に測定された測定値に基づくベースオブジェクトの集合となる。ストレージ装置1は、各テナントに、1又は複数のオブジェクトグループ内のベースオブジェクトを格納する。
具体的には、例えば、ストレージ装置1は、オブジェクトグループ定義情報を、オブジェクトグループ毎に記憶しており、各オブジェクトグループのオブジェクトグループ定義情報に従い、入力データをベースオブジェクトに整形する。
オブジェクトグループ定義情報は、管理者が管理計算機3を介して各オブジェクトグループに属するベースオブジェクトを定義する情報である。オブジェクトグループ定義情報には、例えば以下の情報が定義されている。
(1)当該オブジェクトグループに属するベースオブジェクトデータ(BOデータ)の書式テンプレート
(2)ベースオブジェクトデータの所定パラメータの切出し間隔
(3)ベースオブジェクトデータに付されるベースメタデータのうち、ユーザが任意に指定するカスタムメタデータ
(1)当該オブジェクトグループに属するベースオブジェクトデータ(BOデータ)の書式テンプレート
(2)ベースオブジェクトデータの所定パラメータの切出し間隔
(3)ベースオブジェクトデータに付されるベースメタデータのうち、ユーザが任意に指定するカスタムメタデータ
ストレージ装置1は、オブジェクトグループ定義情報に基づき、書式テンプレート(1)に従うベースオブジェクトデータを生成する。このとき、ストレージ装置1は、切り出し間隔(2)に基づき、データ発生元装置7の測定日時を丸めて所定間隔(例えば1秒毎)のタイムスタンプを取得する。ストレージ装置1は、ベースオブジェクトデータにタイムスタンプを含めたベースメタデータを付与する。入力データは、例えば、以下のように整形される。
例えば、入力データは、次のようなデータ形式であるとする。
"1fff:ffe8:123:4:567a:bc:de:f,T-SN-KNY001,+020.00,yy:mm:dd:hh:mm:ss.aaa"このデータ配列は、例えば、アドレス、データ発生元装置7の位置情報(測定エリア)、ID、データ実体、測定日時・・・である。入力装置8は、IoTデータを入力データに変換して、ストレージ装置1に送信する。ストレージ装置1は、入力データをベースオブジェクトデータ及びベースメタデータからなるベースオブジェクトに整形する。ベースオブジェクトデータの例を以下に示す。
“温度(KNY001): +20.00℃[yyyy:mm:dd:hh:mm:ss] 位置情報:神奈川-小田原エリアA[中里002]...”。
"1fff:ffe8:123:4:567a:bc:de:f,T-SN-KNY001,+020.00,yy:mm:dd:hh:mm:ss.aaa"このデータ配列は、例えば、アドレス、データ発生元装置7の位置情報(測定エリア)、ID、データ実体、測定日時・・・である。入力装置8は、IoTデータを入力データに変換して、ストレージ装置1に送信する。ストレージ装置1は、入力データをベースオブジェクトデータ及びベースメタデータからなるベースオブジェクトに整形する。ベースオブジェクトデータの例を以下に示す。
“温度(KNY001): +20.00℃[yyyy:mm:dd:hh:mm:ss] 位置情報:神奈川-小田原エリアA[中里002]...”。
また、ストレージ装置1は、ベースオブジェクトデータに、サイズ、測定日時に基づくタイムスタンプ、カスタムメタデータの検索タグまたはキーワード等のベースメタデータを対応づけて記憶する。ストレージ装置1は、ベースオブジェクトを一意に識別するベースオブジェクトID(BOID)を生成する。BOIDは、例えば、ベースオブジェクトデータのハッシュ値である。
上記の通り、ストレージ装置1が、オブジェクトグループ毎のオブジェクトグループ定義情報に基づくベースオブジェクトを生成することで、各オブジェクトグループには、各データ発生元装置7(センサ)の測定日時に則したタイムスタンプが付された、時系列のベースオブジェクトが属することとなる。また、ストレージ装置1は、オブジェクトIDを用いることでベースオブジェクトの検索が容易となる。さらに、オブジェクトIDにベースオブジェクトのハッシュ値を用いることで、オブジェクトIDを簡易に生成できる。
次に、ストレージファブリックの出力側の機能を説明する。各ストレージ装置1は、出力装置からのBOIDを指定した読出要求に基づき、指定されたベースオブジェクトを出力装置に送信する。
本実施例において、ストレージ装置1は、ユーザ毎の仮想オブジェクトストレージを生成し、出力装置に提供する。これにより、ユーザは、出力装置を介して自身のポータル画面から仮想オブジェクトストレージにアクセスできる。各仮想オブジェクトストレージは、出力装置に対し仮想オブジェクトを提供する。仮想オブジェクトストレージは、ストレージファブリック内の1つのストレージ装置1が生成してもよいし、各ユーザに対応づけられたストレージ装置1がそれぞれ行ってもよい。以下では、任意のユーザに対応づけられた1つのストレージ装置1を対象に説明する。
ストレージ装置1は、各仮想オブジェクトストレージに仮想オブジェクト定義情報を対応づけて記憶する。仮想オブジェクト定義情報は、ベースオブジェクトを選択する選択条件を含む。選択条件は、複数の仮想オブジェクトの選択条件を含んでもよい。選択条件は、例えば、オブジェクトグループの識別子と、パラメータ値の範囲とを含む。パラメータ値は、例えば、時刻である。
ストレージ装置1は、選択条件により指定されたオブジェクトグループの中から、選択条件により指定されたパラメータ値の範囲に対応する複数のベースオブジェクトをパラメータグループとして分類し、パラメータグループを仮想オブジェクトとして出力装置へ提供する。
仮想オブジェクトは、ベースオブジェクトデータに基づく仮想オブジェクトデータ(VOデータ)と、仮想オブジェクトデータの属性情報である仮想メタデータとを含む。仮想オブジェクトは、タイムスタンプを有する。仮想オブジェクトは、対応するタイムスタンプを有する複数のベースオブジェクトを有する。仮想オブジェクトストレージは、複数の仮想オブジェクトを仮想オブジェクト群として提供する。仮想オブジェクト群は、選択条件により指定された範囲のタイムスタンプを有する仮想オブジェクトの集合である。
ストレージ装置1は、仮想オブジェクトを一意に識別する仮想オブジェクトIDを生成する。仮想オブジェクトIDは、パラメータグループ識別子の一例である。例えば、仮想オブジェクトIDは、選択条件に基づき選択されたベースオブジェクトの1又は複数のBOIDのハッシュ値である。
ストレージ装置1は、仮想オブジェクトストレージに対して、対応する仮想オブジェクト定義情報で生成された仮想オブジェクト群に含まれる仮想オブジェクトID(VOID)のリスト(仮想オブジェクトリスト、パラメータグループ識別子リスト)を提供する。出力装置は、提供された仮想オブジェクトリストから、出力する1以上の仮想オブジェクトのVOIDを選択し、ストレージ装置1に仮想オブジェクトの読出を要求する。ストレージ装置1は、要求に基づき、仮想オブジェクトに基づくベースオブジェクトを、出力装置に送信する。
なお、要求された仮想オブジェクトに基づくベースオブジェクトが他のストレージ装置1に格納されている場合、ストレージ装置1は、他のストレージ装置1からベースオブジェクトを読み出し、出力装置に送信する。
上記のように、仮想オブジェクト定義情報に含まれる選択条件に基づき、オブジェクトグループ、指定された範囲のパラメータ値(時系列のタイムスタンプ)の仮想オブジェクト群を生成できる。オブジェクトストレージ装置1による上記方法により、データの検索時間を短縮できるとともにデータの関連付けを容易にできる。
また、仮想オブジェクトストレージ仮想オブジェクトストレージに仮想オブジェクト定義情報が対応づけられることで、仮想オブジェクトストレージは、ストレージ装置1内に記憶されたベースオブジェクトから、選択条件に基づく仮想オブジェクト群に属するベースオブジェクトを読み出すことができる。従って、ストレージ装置1に記憶されるベースオブジェクトに特別な加工を施すことなく、仮想オブジェクト定義情報のみで、複数のベースオブジェクトを関連づけることができる。また、仮想オブジェクト定義情報を変更することでベースオブジェクトの関連付けを容易に変更することもできる。
また、本実施例のように、複数のストレージ装置1によりストレージファブリックが形成されている場合、仮想オブジェクト定義情報で指定される複数のオブジェクトグループに属するベースオブジェクトの格納先が、複数のストレージ装置1に跨がる場合もある。このような場合であっても、出力装置からアクセスのあったストレージ装置1は、仮想オブジェクト定義情報に基づき選択された仮想オブジェクト群に属するベースオブジェクトを、対応する仮想オブジェクトストレージに提供できる。
また、各仮想オブジェクトにVOIDが付されることで、ストレージ装置1は、BOIDを指定した読出要求により、ベースオブジェクトを出力装置に送信する場合と同様に、VOIDを指定した読出要求により、VOIDに基づく複数のベースオブジェクトを送信することができる。VOIDに複数のBOIDが対応づけられているので、仮想オブジェクトにおける実体的なデータ部分は、ベースオブジェクトが担うこととなる。
さらに、本実施例では、VOIDをその仮想オブジェクトに含まれるベースオブジェクトのBOIDのハッシュ値としている。このため、VOIDを容易に生成することができる。
以下、仮想オブジェクト定義情報の具体例を示す。
(1)仮想オブジェクトの出力様式(書式テンプレート)
(2)仮想オブジェクトに含まれるベースオブジェクトが属するオブジェクトグループのグループID(複数のオブジェクトグループの指定可)
(3)仮想オブジェクトに含まれるベースオブジェクトの切出し位置
(4)ベースオブジェクトの調整情報
(5)仮想メタデータのうちユーザが任意に指定するカスタムメタデータ
(例えば、センサの配置場所、センサの種別、測定値の種別、測定値の単位等)
(6)仮想オブジェクトの有効期限(例えば、時間、アクセス回数等)
(7)仮想オブジェクトID(VOID)の生成ルール
(例えば、ハッシュ値、優先的に使用するVOIDの範囲、VOIDのリサイクル可否など)
(8)仮想メタデータリストの様式
(1)仮想オブジェクトの出力様式(書式テンプレート)
(2)仮想オブジェクトに含まれるベースオブジェクトが属するオブジェクトグループのグループID(複数のオブジェクトグループの指定可)
(3)仮想オブジェクトに含まれるベースオブジェクトの切出し位置
(4)ベースオブジェクトの調整情報
(5)仮想メタデータのうちユーザが任意に指定するカスタムメタデータ
(例えば、センサの配置場所、センサの種別、測定値の種別、測定値の単位等)
(6)仮想オブジェクトの有効期限(例えば、時間、アクセス回数等)
(7)仮想オブジェクトID(VOID)の生成ルール
(例えば、ハッシュ値、優先的に使用するVOIDの範囲、VOIDのリサイクル可否など)
(8)仮想メタデータリストの様式
上記(2)及び(3)が選択条件の一例である。なお、選択条件は、(2)及び(3)の何れか一つであってもよい。各ベースオブジェクトの切出し位置は、仮想オブジェクトに含めるベースオブジェクトが有する所定パラメータの初期値又は範囲である。ベースオブジェクトの調整情報は、所定パラメータの間隔である。この具体例では、所定パラメータは、タイムスタンプである。例えば、仮想オブジェクト定義情報において、2つのオブジェクトグループ(グループA、B)が指定されており、切出し位置に2015年1月2日0時0分0秒と設定されており、かつ、ベースオブジェクトの調整情報として、タイムスタンプを1秒単位で指定するとする。また、例えば、グループAが1秒ごとのタイムスタンプを付したベースオブジェクトの集合であり、グループBが0.5秒ごとのタイムスタンプを付したベースオブジェクトの集合であるとする。
この場合、ストレージ装置1は、仮想オブジェクト定義情報に基づき、2015年1月2日0時0分0秒時のものから順に1秒毎に仮想オブジェクトを生成する。つまり、仮想オブジェクト定義情報に基づき、タイムスタンプ毎の複数のベースオブジェクトを含めた仮想オブジェクトが生成され、かつ、指定範囲において時系列の仮想オブジェクト群が生成される。
仮想オブジェクトの出力様式(1)指定の一例を示す。
"Date:#YY/MM/DD hh:mm#AM/PM",meta-daytime,meta-Area01,+"気温:%02.1d℃",ObjA,+"消費電力:%3dkwh",ObjB,+"天候:%s",objC
"Date:#YY/MM/DD hh:mm#AM/PM",meta-daytime,meta-Area01,+"気温:%02.1d℃",ObjA,+"消費電力:%3dkwh",ObjB,+"天候:%s",objC
仮想メタデータ(8)の指定の一例を示す。
”vvvv0000001,256bytes,yyyy:mm:dd:hh:mm:ss,area01,3, ObjA-xxxxxxxxxx,Objb-yyyyyyyyyy,ObjC-zzzzzzzzzz”この配列は、例えば、VOID、仮想オブジェクトのサイズ、タイムスタンプ、測定エリア、ベースオブジェクト数、BOID・・・である。
”vvvv0000001,256bytes,yyyy:mm:dd:hh:mm:ss,area01,3, ObjA-xxxxxxxxxx,Objb-yyyyyyyyyy,ObjC-zzzzzzzzzz”この配列は、例えば、VOID、仮想オブジェクトのサイズ、タイムスタンプ、測定エリア、ベースオブジェクト数、BOID・・・である。
仮想オブジェクト定義情報に基づき生成される仮想オブジェクトの一例を示す。
"Date:2015/01/19 02:00PM 沖縄エリアB 気温:20.0℃ 消費電力:525kwh 天候:曇り"
"Date:2015/01/19 02:00PM 沖縄エリアB 気温:20.0℃ 消費電力:525kwh 天候:曇り"
図3は、オブジェクトグループ管理テーブル141の一例である。オブジェクトグループ管理テーブル141は、オブジェクトグループを管理するテーブルである。
オブジェクトグループ管理テーブル141は、オブジェクトグループ毎のエントリを有する。各エントリは、オブジェクトグループを識別するグループID1411と、当該オブジェクトグループ毎に作成されるベースオブジェクト管理テーブル142のテーブル番号(No.)1412と、当該オブジェクトグループに属するベースオブジェクトの数(オブジェクト数)1413と、当該オブジェクトグループのグループ属性1414と、当該オブジェクトグループのベースオブジェクト管理テーブル142の保持期間1415と、当該オブジェクトグループに対応する入力装置識別子1416と、当該オブジェクトグループのオブジェクトグループ定義情報1417と、を有する。オブジェクトグループ定義情報1417には、メモリ14内の当該オブジェクトグループ定義情報146のファイル名が格納されている。
図4は、ベースオブジェクト管理テーブル142の一例である。ベースオブジェクト管理テーブル142は、オブジェクトグループ毎に作成されるテーブルである。ベースオブジェクト管理テーブル142の各エントリには、各ベースオブジェクトのベースメタデータが格納されている。
ベースオブジェクト管理テーブル142は、ベースオブジェクト毎のエントリを有する。各エントリは、当該ベースオブジェクトを識別するベースオブジェクトID(BOID)1421と、当該ベースオブジェクトを格納するストレージ装置1を示すストレージID1422と、当該ベースオブジェクトを格納するテナントのテナントID1423と、当該ベースオブジェクトのサイズ1424と、当該ベースオブジェクトが有効か否かを示す属性1425と、当該ベースオブジェクトに設定されるタイムスタンプ1426と、当該ベースメタデータのキーワード1427と、を有する。
タイムスタンプ1426は、ベースオブジェクトデータの基となるIoTデータの測定時刻に基づくデータである。例えば、タイムスタンプ1426は、当該測定時刻を予め設定された時間間隔で切り出し又は予め設定された単位に丸めた時刻である。キーワード1427は、ベースオブジェクト定義情報で指定されるか、またはその他の方法によりユーザが任意に指定したカスタムメタデータの検索ワード又はタグが設定される。
図5は、仮想オブジェクトストレージ管理テーブル143の一例である。仮想オブジェクトストレージ管理テーブル143は、出力装置を介してユーザに提供される仮想オブジェクトストレージを管理するテーブルである。
仮想オブジェクトストレージ管理テーブル143は、仮想オブジェクトストレージ毎のエントリを有する。各エントリは、仮想オブジェクトストレージを識別する仮想オブジェクトストレージID1431と、当該仮想オブジェクトストレージにアクセスするためのドメインを示すFQDN(Fully Qualified Domain Name)1432と、当該仮想オブジェクトストレージに割り当てられたストレージ装置の識別子であるストレージID1433と、当該仮想オブジェクトストレージに割り当てられたテナントの識別子であるテナントID1434と、当該仮想オブジェクトストレージにより定義される仮想オブジェクト定義情報1435と、を有する。なお、1つの仮想オブジェクトストレージは、仮想オブジェクト定義情報を複数有してもよい。
図6は、仮想メタデータ管理テーブル144の一例である。仮想メタデータ管理テーブル144は、各仮想オブジェクト定義情報に対応する仮想メタデータを管理するテーブルである。
仮想メタデータ管理テーブル144は、仮想オブジェクト定義情報毎のエントリを有する。各エントリは、当該仮想オブジェクト定義情報1441と、当該仮想オブジェクト定義情報に基づく仮想オブジェクトリストのリスト名1442と、当該仮想オブジェクトリストのエントリ数1443と、当該仮想オブジェクトリストが有効か否かを示す属性1444と、当該仮想オブジェクトリストの有効期限の条件1445と、当該条件の閾値1446と、当該仮想オブジェクトリストの作成日時1447と、当該仮想オブジェクトリストの最新更新日時1448と、当該仮想オブジェクトリストのアクセス回数1449と、を有する。
図7は、仮想オブジェクトリストの一例である。仮想オブジェクトリスト145は、仮想オブジェクト定義情報毎に作成される仮想オブジェクトの一覧である。
仮想オブジェクトリスト145は、仮想オブジェクト毎のエントリを有する。各エントリは、仮想オブジェクトを識別する仮想オブジェクトID(VOID)1451と、当該仮想オブジェクトに含まれるベースオブジェクトを識別するBOID1452a、1452bと、当該仮想オブジェクトに含まれるベースオブジェクトのサイズ1453と、当該仮想オブジェクトに含まれるベースオブジェクトのタイムスタンプ1454と、当該仮想メタデータのキーワード1455とを有する。なお、キーワード1455には、検索タグが設定されてもよい。
各エントリは、タイムスタンプに紐づけられた1つ以上のベースオブジェクトのオブジェクトIDが設定される。各エントリにVOIDが設定される。1つのVOIDにより同じタイムスタンプが設定されるに2つのベースオブジェクトが紐づけられることとなる。なお、VOIDは、当該エントリ又は当該エントリに含まれるBOIDに基づき生成されるハッシュ値である。
また、例えば、最新データ応答用のエントリとして、予約用の仮想オブジェクトが設定されてもよい。この例では、最後尾のエントリが、最新データ応答用のエントリである。最新データ応答要のエントリ場合、例えば、タイムスタンプ1454には、現在時刻を示す“Real Time”が設定される。ストレージ装置1は、所定の範囲のVOIDを、予約用の仮想オブジェクトを示すVOIDとして確保しており、最新データ応答用のエントリに、そのVOIDのうちの1のVOIDを設定する。このときBOID1452a、1452bには、変数が設定される。また例えば、タイムスタンプ1454にユーザが指定した時刻が設定されてもよい。このとき、BOID1452a、1452bには、変数に代えて予め設定された各IDが設定されてよい。
図8は、本実施例のデータ加工処理のフローチャートの一例である。
データ加工処理は、管理計算機3が設定処理を開始することで起動する。以下の説明では、各ステップをSと省略して表記する。また、以下の例では、出力装置としてクライアント計算機4を例にとり説明する。
まず、管理計算機3の設定処理を説明する。管理計算機3は、オブジェクトグループを設定する(S801)。具体的には、管理計算機3は、オブジェクトグループの設定情報をコントローラ10に送信する。設定情報は、管理計算機3に接続された入出力端末(図示なし)から管理者により入力される。例えば、入力装置8が通信ネットワーク9を介してストレージ装置1に接続されたときに、設定情報の入力指示が管理計算機3に通知される。管理者は、入力指示に基づき入出力端末に表示される設定画面190から設定情報を入力する。
設定画面190の例を、図19に示す。設定情報は、例えば、設定するオブジェクトグループのID、当該オブジェクトグループのグループ属性、当該オブジェクトグループの保持期間、当該オブジェクトグループ定義情報、当該オブジェクトグループに対応する入力装置8の識別子等である。管理者は、設定画面190から、これらの設定情報を入力し、登録ボタンを押して設定完了する。なお、管理者は、オブジェクトグループ定義情報を、設定画面の「Edit」から設定又は変更できる。
管理計算機3は、オブジェクトグループ定義情報をコントローラ10に送信する(S802)。設定画面190により設定又は変更された場合、そのオブジェクト定義情報がコントローラ10に送信される。
管理計算機3は、仮想オブジェクトストレージを設定する(S803)。具体的には、例えば、管理計算機3は、仮想オブジェクトストレージの設定情報をコントローラ10に送信する。設定情報は、ユーザがクライアント計算機4のポータル画面から仮想オブジェクトストレージを設定したときに生成される情報である。設定情報は、各仮想オブジェクトストレージのID、ポータル画面にアクセスするためのドメインであるFQDN等が含まれる。設定情報は、通信ネットワーク9を通じて管理計算機3に送信され、管理計算機3により管理されている。
コントローラ10は、S801のオブジェクトグループの設定情報、S802のオブジェクトグループ定義情報、及び、S803の仮想オブジェクトストレージの設定情報をそれぞれ受信する。コントローラ10は、受信した情報に基づきコンフィグレーション処理を実行する(S811)。
コンフィグレーション処理を説明する。コントローラ10は、例えば、オブジェクトグループの設定情報に基づき、オブジェクトグループ管理テーブル141に各オブジェクトグループのエントリを追加する。コントローラ10は、各オブジェクトグループのエントリに、そのオブジェクトグループのオブジェクトグループ管理テーブル141のテーブル番号1412及びオブジェクトグループ定義情報1417を設定する。また、コントローラ10は、オブジェクトグループ毎のベースオブジェクト管理テーブル142を作成し、メモリ14に記憶する。
コントローラ10は、各ストレージ装置1内の記憶領域にテナントを設定し、設定したテナントに格納する1又は複数のオブジェクトグループを決定する。なお、1つのオブジェクトグループ内のベースオブジェクト全てが、1つのテナントに格納される必要はなく、複数のテナントに跨って格納されてもよい。
コントローラ10は、決定に基づき、ベースオブジェクトと、ベースオブジェクトを格納するストレージ装置1及びテナントとを関連付け、ベースオブジェクト管理テーブル142の各エントリに設定する。また、コントローラ10は、各エントリのベースオブジェクトのサイズ1424、属性1425、タイムスタンプ1426、キーワード1427を設定する。
また、コントローラ10は、受信した仮想オブジェクトストレージ設定情報に基づき、仮想オブジェクトストレージ管理テーブル143を生成し、メモリ14に記憶する。具体的には、コントローラ10は、各仮想オブジェクトストレージのID1431及びFQDN1432と、各仮想オブジェクトストレージが使用できるベースオブジェクトの格納先のストレージ装置のストレージID1433及びテナント1434と、を仮想オブジェクトストレージ管理テーブル143に設定する。
なお、コントローラ10は、オブジェクトグループ管理テーブル141、ベースオブジェクト管理テーブル142及び仮想オブジェクトストレージ管理テーブル143が生成され又は更新される毎に、これらのテーブルの内容をストレージファブリック内の他のストレージ装置に通知し、同期する。
管理計算機3は、仮想オブジェクトを定義し(S804)、設定処理を終了する。具体的には、例えば、管理計算機3は、仮想オブジェクトストレージ毎の仮想オブジェクト定義情報を生成し、コントローラ10に送信する。仮想オブジェクト定義情報は、例えば、管理計算機3の入出力端末から管理者が入力できる情報である。管理者は、各仮想オブジェクトストレージに仮想オブジェクト定義情報を設定できる。
コントローラ10は、受信した仮想オブジェクト定義情報に基づき、仮想メタデータ生成処理を実行する(S812)。仮想メタデータ生成処理については、後述する
入力装置8の入力処理を説明する。入力装置8は、データ発生元装置7からIoTデータを検出したとき(S821)、後述のデータ変換処理を行う(S822)。入力装置8は、変換後のデータ(入力データ)の書込処理を行い(S823)、処理を終了する。
コントローラ10は、書込処理に基づき、ベースオブジェクト作成処理を実行する(S813)。書込処理及びベースオブジェクト作成処理については、後述する。ベースオブジェクト作成処理が終了した後、コントローラ10は、その完了報告とともにBOID)を通知する。
次に、クライアント計算機4の仮想オブジェクト読出処理を説明する。クライアント計算機4は、仮想オブジェクト定義情報を指定したクエリ要求をコントローラ10に送信する(S831)。クエリ要求は、仮想オブジェクト定義情報に対応する仮想オブジェクトリストを要求するものである。具体的には、例えば、ユーザは、クライアント計算機4のポータル画面から自身の仮想オブジェクトストレージIDを用いてログインし、仮想オブジェクト定義情報を指定して、対応する仮想オブジェクトリスト要求する。この要求に基づき、クライアント計算機4はクエリ要求をコントローラ10に送信する。
コントローラ10は、クエリ要求を受信し、仮想オブジェクトリスト作成処理を実行する(S814)。コントローラ10は、仮想オブジェクトリスト作成処理が完了したときに、その完了通知及びクライアント計算機4への送信用の一時的な仮想オブジェクトリストであるテンポラリリストをクライアント計算機4に送信する。なお、コントローラ10は、テンポラリリストに代えて仮想オブジェクトリストのコピーを、クライアント計算機4に送信してもよい。仮想オブジェクトリスト作成処理については、後述する。
クライアント計算機4は、テンポラリリストを受信する(S832)。クライアント計算機4は、テンポラリリストに基づき、仮想オブジェクトの読出要求をコントローラ10に送信する(S833)。読出要求には、読出し対象の仮想オブジェクトのIDが含まれる。
コントローラ10は、読出要求を受信し、仮想オブジェクト生成処理を実行する(S815)。仮想オブジェクト生成処理については、後述する。
仮想オブジェクト生成処理の後、コントローラ10は、仮想オブジェクトをクライアント計算機に提供する(S814)。具体的には、例えば、コントローラ10は、仮想オブジェクトに含まれるベースオブジェクト及び仮想メタデータをクライアント計算機4に送信する。
クライアント計算機4は、仮想オブジェクトを受信し(S834)、処理を終了する。
次に、管理計算機3の削除処理を説明する。管理計算機3は、仮想オブジェクト又はベースオブジェクトの削除要求を、コントローラ10に送信し(S806)、処理を終了する。コントローラ10は、削除要求に従うオブジェクト削除処理を実行し(S816)、処理を終了する。
上記処理により、入力側においては、入力装置8から送信される入力データに基づくベースオブジェクトを、入力装置8毎のオブジェクトグループに振り分けて、記憶装置に格納できる。このため、入力装置8から送信される膨大な量の入力データを、効率よく記憶装置に格納することができる。
一方、ストレージ装置1は、仮想オブジェクトストレージに対応する仮想オブジェクト定義情報に基づく仮想オブジェクト群を生成できる。
これにより、クライアント計算機4は、仮想オブジェクトストレージを指定することで、対応する仮想オブジェクト定義情報仮想オブジェクトストレージに基づく仮想オブジェクト群の一覧である仮想オブジェクトリストを取得できる。
さらに、取得した仮想オブジェクトリストから、読み出したい仮想オブジェクトを指定することにより、クライアント計算機4は、仮想オブジェクトストレージ指定した1又は複数の仮想オブジェクトに基づくベースオブジェクトを仮想オブジェクトストレージに読み出すことができる。つまり、仮想オブジェクトストレージは、仮想オブジェクト定義情報により、解析に使用したいオブジェクトグループを指定し、かつその範囲を指定することで、簡単に解析必要なベースオブジェクトを取得することができる。
また、前述の通り、VOIDに複数のBOIDが対応づけられているので、仮想オブジェクトにおける実体的なデータ部分は、ベースオブジェクトが担うこととなる。このため、ストレージ装置1は、ベースオブジェクトに加えて、仮想オブジェクトデータを記憶装置に記憶する必要がない。仮想オブジェクトについては、仮想オブジェクトリストを読み出すための、仮想オブジェクト定義情報と、VOIDとこれに対応するBOIDを含む仮想メタデータを記憶するだけでよい。従って、ストレージ装置1の容量を有効に利用することができる。
以下、具体例を説明する。クライアント計算機4は、仮想オブジェクトストレージを指定してクエリ要求を送信する。仮想オブジェクトストレージに対応する仮想オブジェクト定義情報において、オブジェクトグループA及びBと、タイムスタンプの範囲(T1~T9999)が指定されたとする。オブジェクトグループAには、タイムスタンプT1からT9999の複数のベースオブジェクト(A0001~A9999)が含まれる。オブジェクトグループBには、タイムスタンプT0001からT9999の複数のベースオブジェクト(B0001~B9999)が含まれる。例えば、オブジェクトグループAは、東京の気温データを含むベースオブジェクト群であり、オブジェクトグループBは、大阪の交通量データを含むベースオブジェクト群とする。
クライアント計算機4は、仮想オブジェクトVa0001~Va9999を用いて、必要なベースオブジェクトをストレージ装置1から仮想オブジェクトストレージに読み出す。クライアント計算機4は、データ解析用のアプリケーションを実行することにより、各時刻(タイムスタンプ)における、オブジェクトグループA(東京の気温)とオブジェクトグループB(大阪の交通量)の相関を出力できる。
本実施例の計算機システムは、従来のように、入力装置から受信したIoTデータをストレージ装置に格納し、かつ、クライアント計算機4が解析に使用するためにデータ間の関連づけ等の加工を施したIoTデータを、データウェアハウス等のストレージ装置とは別の装置に格納する必要がない。つまり、本実施例の計算機システムは、取得したIoTデータを重複して格納しておく必要がない。このため、ストレージシステム内のデータ容量を大幅に削減できる。特に、IoTデータは、データ発生元装置から大量に取得されるデータである。IoTデータをベースオブジェクトに整形し、ストレージ装置1に格納することで、各ベースオブジェクトにはBOIDが付される。このため、パスを介さずにデータを取得できるため検索時間を短縮できる。
また、ベースメタデータには、IoTデータから取得される管理情報(メタデータ)と、ベースオブジェクト定義でユーザが定義した管理情報(カスタムメタデータ)と、を含めることができる。
仮想メタデータには、ベースメタデータから取得される管理情報(メタデータ)と、仮想オブジェクト定義でユーザが定義した管理情報(カスタムメタデータ)と、を含めることができる。
本実施例では、コントローラ10が、VOIDを用いて、ストレージ装置1に格納したベースオブジェクトを管理することで、解析用に加工したデータを別途格納することなく、ベースオブジェクト間の関連付けを保持できる。また、仮想オブジェクト定義情報を指定することで、ベースオブジェクト間の関連付けの追加や更新が簡易にできる。特に、大量のデータが蓄積されるストレージファブリックでは、仮想オブジェクト定義情報により、VOID又は仮想メタデータに複数のベースオブジェクトを関連付けることで、大量に蓄積されたベースオブジェクトを簡易に短時間で検索することが可能となる。
なお、上記では、仮想オブジェクト読出処理をクライアント計算機4が実行することとして説明した。しかし、クライアント計算機4に代えてデータ解析装置6やNAS5が行ってもよい。例えば、仮想オブジェクト読出処理をデータ解析装置6が実行する場合、データ解析装置6は、S834で仮想オブジェクトに基づくベースオブジェクトを受信した後、直ぐに又はユーザの指示に応じて、その演算処理を実行する。仮想オブジェクト読出処理をNAS5が実行する場合については、後述する。
図9は、仮想メタデータ生成処理のフローチャートの一例である。
仮想メタデータ生成処理は、データ加工処理のS812においてコントローラ10が実行する処理である。コントローラ10が、管理計算機3から仮想オブジェクト定義情報を受信したときにこの処理を開始する。仮想オブジェクト定義情報毎にこの処理が行われる。1つの仮想オブジェクト定義情報における仮想メタデータ生成処理を説明する。処理の対象となる仮想オブジェクト定義情報を、このフローの説明では対象定義情報という。
コントローラ10は、対象定義情報に基づき、仮想メタデータを初期化する(S901)。具体的には、例えば、コントローラ10は、仮想メタデータ管理テーブル144に、対象定義情報の新規エントリを追加し、対象定義情報に対応する仮想オブジェクトリストを生成する。コントローラ10は、新規エントリに、対象定義情報の識別子(1441)及び生成された仮想オブジェクトリストのリスト名1442を設定し、生成された仮想オブジェクトリストのエントリ数1443に“0”を設定し、現在日時を作成日時1447に設定する。以下、このフローの説明では、このステップで生成された仮想オブジェクトリストを対象リストという。
コントローラ10は、対象定義情報で指定されたオブジェクトグループを特定する(S902)。指定されたオブジェクトグループが複数の場合は、コントローラ10は、複数のオブジェクトグループを特定する。
コントローラ10は、特定した全てのオブジェクトグループのベースオブジェクトの数をそれぞれ取得する(S903)。具体的には、例えば、コントローラ10は、オブジェクトグループ管理テーブル141に基づき、特定したオブジェクトグループに対応するベースオブジェクト管理テーブル142内のオブジェクト数1413をそれぞれ取得する。
コントローラ10は、特定したオブジェクトグループについて、オブジェクト数1413が“0”のオブジェクトグループが存在するか否かを判定する(S904)。
オブジェクト数1413が“0”のオブジェクトグループが存在する場合(S904;Yes)、コントローラ10は、仮想メタデータ管理テーブル144を更新し(S912)、処理を終了する。具体的には、コントローラ10は、対象定義情報のエントリについて、属性1444を“無効”にし、格納エントリ数1443を“0”にし、最新更新日時1448に現在日時を設定する。
オブジェクト数1413が“0”のオブジェクトグループが存在しない場合(S904;No)、コントローラ10は、特定した全てのオブジェクトグループのベースオブジェクト管理テーブル142を取得する(S905)。
以下の説明では、特定したオブジェクトグループが1つの場合を説明する。特定したオブジェクトグループが複数の場合、コントローラ10は、特定した全てのオブジェクトグループに対し、S906以下の処理を実行する。
コントローラ10は、取得したベースオブジェクト管理テーブル142の先頭エントリをポイントする(S906)。ここでいう先頭エントリは、対象定義情報で指定された切出し位置(初期値)のタイムスタンプを有するベースオブジェクトのエントリである。なお、ポイントされたエントリを、このフローの説明では対象エントリという。
コントローラ10は、対象リストに新規エントリを追加する(S907)。コントローラ10は、追加した新規エントリに、ベースオブジェクト管理テーブル142の対象エントリのBOID1452a、1452b、仮想オブジェクトサイズ1453、タイムスタンプ1454、及び、キーワード1455を追加する。
コントローラ10は、仮想メタデータ管理テーブル144を更新する(S908)。具体的には、コントローラ10は、対象定義情報のエントリについて、属性1444を“有効”にし、格納エントリ数1443に1を加算し、最新更新日時1448に現在日時を設定する。
コントローラ10は、ベースオブジェクト管理テーブル142の対象エントリが最終エントリか否かを判定する(S909)。最終エントリの場合(S909;Yes)、コントローラ10は、処理を終了する。
一方、最終エントリでない場合(S909;No)、コントローラ10は、ベースオブジェクト管理テーブル142の次のエントリを対象エントリとしてポイントし(S910)、S907に処理を進める。なお、ここでは、切出し位置から順に、対象定義情報で指定された間隔のタイムスタンプを含むエントリを対象エントリとしてポイントする。
上記処理により、仮想オブジェクト定義情報から、仮想オブジェクトの仮想メタデータ(BOIDを含む)を生成できる。仮想オブジェクト定義情報で指定されたオブジェクトグループに属する時系列のベースオブジェクトを、タイムスタンプ毎にグループ化した仮想オブジェクトを生成できる。
また、仮想オブジェクト定義情報により、初期値(切出し位置)から指定された間隔の仮想オブジェクトリストを生成できる。ストレージ装置1は、仮想オブジェクトリストに基づき、仮想オブジェクトに含まれるベースオブジェクトを読出すことができる。
図10は、ベースオブジェクト生成処理のフローチャートの一例である。
ベースオブジェクト生成処理は、入力装置8が入力処理(S821~S823)を行う毎にコントローラ10が行う処理である。
入力装置8は、データ発生元装置7からIoTデータを取得し(S821)、データ変換処理を行う(S822)。データ変換処理では、入力装置8は、IoTデータをストレージ装置1が扱うデータ形式の入力データに変換する。入力装置8は、入力データの書込処理を行い(S823)、処理を終了する。S1023及びS1024が書込処理である。
入力装置8は、オブジェクトデータの書込要求をコントローラ10に送信する(S1023)。書込要求には、要求元である入力装置8のIPアドレス及びUID(User ID)が含まれる。
コントローラ10は、書込要求を受信し(S1001)、オブジェクト管理テーブル141の入力装置識別子1416を参照し、書込要求に含まれる入力装置8のIPアドレス及びUIDから、書込要求の対象となるオブジェクトグループ(対象オブジェクトグループ)を特定する(S1002)。
コントローラ10は、オブジェクトグループ管理テーブル141を参照し、対象オブジェクトグループのオブジェクトグループ定義情報を取得し(S1003)、入力装置8に書込要求の応答を通知する。
入力装置8は、応答を受信し、入力データをコントローラ10に送信する(S1024)。
コントローラ10は、入力データを受信し、取得したオブジェクトグループの定義情報に基づき、入力データをベースオブジェクトに整形する(S1004)。ここで整形されたベースオブジェクトを、このフローの説明では対象ベースオブジェクトという。
コントローラ10は、対象ベースオブジェクトのハッシュ値を算出し、算出したハッシュ値をBOIDとして対象ベースオブジェクトに対応づける(S1005)。
コントローラ10は、対象ベースオブジェクトの格納先のストレージ装置及びテナントを決定し、決定した格納先に対象ベースオブジェクトのベースオブジェクトデータを格納する(S1006)。なお、対象ベースオブジェクトの格納先が他のストレージ装置1の場合、コントローラ10は、ストレージファブリック内の他のストレージ装置1に、格納先のテナントを指定して対象ベースオブジェクトのベースオブジェクトデータを転送する。他のストレージ装置1は、指定された格納先のテナントに対象ベースオブジェクトのベースオブジェクトデータを格納する。
コントローラ10は、対象ベースオブジェクトのエントリを、ベースオブジェクト管理テーブル142に追加する(S1007)。コントローラ10は、追加したエントリに、対象ベースオブジェクトのBOID及びベースメタデータを設定する。なお、設定するベースメタデータは、対象ベースオブジェクトのベースオブジェクトデータの格納先を示すストレージ装置のストレージID1422及びテナントID1423と、ベースオブジェクトのサイズ1424、属性1425、タイムスタンプ1426、キー値1427を含む。
コントローラ10は、オブジェクトグループ管理テーブル141の対象オブジェクトグループのオブジェクト数1413を1つ追加する(S1008)。
コントローラ10は、ストレージファブリック内の他のストレージ装置1に対し、自身のベースオブジェクト管理テーブル142及びオブジェクトグループ管理テーブル141内の更新情報を通知する(S1009)。他のストレージ装置1は、通知に従い、当該テーブル141、142を同期する。
コントローラ10は、対象ベースオブジェクトのBOIDと、書込要求の処理完了通知を入力装置8に送信する(S1010)。入力装置8は、BOID及び処理完了通知を受信し、入力処理を終了する。
上記処理により、コントローラ10は、書込要求のあった入力データをベースオブジェクトデータに変換して、ストレージ装置1に格納できる。また、IoTデータの取得日時(測定日時)に基づくタイムスタンプや、オブジェクトグループ定義情報でユーザが指定したカスタムメタデータも、ベースメタデータに含めることができる。これらのベースメタデータを、ベースオブジェクトを解析する際のパラメータに設定できる。
図11は、仮想オブジェクトリスト作成処理の一例である。
この処理は、コントローラ10が、出力装置(クライアント計算機4、NAS5、データ解析装置6)に対し、使用可能な仮想オブジェクトであるテンポラリリストを提供する処理である。出力側装置として、クライアント計算機4を例にとり説明する。
この処理は、クライアント計算機4が仮想オブジェクトの読出処理を実行することにより、コントローラ10により実行される。読出処理は、ユーザがクライアント計算機4からユーザポータル画面のFQDNを指定し、ユーザ所有の仮想オブジェクトストレージの仮想オブジェクトストレージIDを用いてログインすることで起動する。
クライアント計算機4は、ログイン情報をコントローラ10に送信する(S1121)。ログイン情報には、仮想オブジェクトストレージID及びFQDNが含まれる。
コントローラ10は、ログイン情報を受信し、クライアント計算機4にポータル画面の表示情報を送信する。クライアント計算機4は、表示情報に基づきポータル画面をクライアント計算機4に接続された入出力端末(図示なし)に表示する。ポータル画面の一例を図20に示す。例えば、ユーザは、ポータル画面から仮想オブジェクト定義情報を選択し、オブジェクトグループを指定し、種々のパラメータを検索し指定する。仮想オブジェクト定義情報により、オブジェクトグループが指定されるが、別途指定されてもよい。例えば、この例のように、オブジェクトグループ対応する入力装置が指定されていてもよい。例えば、パラメータは、仮想メタデータに含まれる値や、仮想オブジェクトに含まれるベースオブジェクトのベースメタデータに含まれる値を含んでもよい。
クライアント計算機4は、仮想オブジェクトリストのクエリ要求をコントローラ10に送信する(S831)。クエリ要求には、ユーザがポータル画面により指定した種々のパラメータが含まれる。
コントローラ10は、クエリ要求を受信する(S1101)。コントローラ10は、仮想オブジェクトストレージ管理テーブル143を参照し、クエリ要求に含まれる仮想オブジェクトストレージID1433及びFQDN1434に対応する仮想オブジェクト定義情報1435を特定する(S1102)。
コントローラ10は、仮想メタデータ管理テーブル144を参照し、特定した仮想オブジェクト定義情報1441を含む対象のエントリを検索する(S1103)。コントローラ10は、対象エントリが存在するか否かを判定する(S1104)。対象エントリが存在しない場合(S1104;No)、コントローラ10は、前述の仮想メタデータ作成処理(図9参照)を実行し(S1105)、S1108に処理を進める。仮想メタデータ作成処理により、対象エントリが追加され、対応する仮想オブジェクトリストが作成される。
一方、対象エントリが存在する場合(S1104;Yes)、コントローラ10は、対象エントリの属性1444を参照し、対象エントリに含まれる仮想オブジェクトリストが有効か否かを判定する(S1106)。対象エントリの仮想オブジェクトリストが無効な場合(S1106;No)、コントローラ10は、前述の仮想メタデータ作成処理(図9参照)を実行し(S1105)、S1108に処理を進める。
対象エントリの仮想オブジェクトリストが有効な場合(S1104;Yes)、コントローラ10は、仮想メタデータ更新処理を実行する(S1107)。仮想メタデータ更新処理については、後述する。
コントローラ10は、対象エントリの仮想オブジェクトリスト名1442から仮想オブジェクトリスト145を特定する(S1108)。
コントローラ10は、特定した仮想オブジェクトリストに基づき、クライアント計算機4に送信するためのテンポラリリストを作成する(S1109)。テンポラリリストは、例えば、特定した仮想オブジェクトリストに含まれる仮想オブジェクトのうち、クエリ要求の要求元の仮想オブジェクトストレージ(ユーザ)が利用できる範囲の仮想オブジェクトのリストである。コントローラ10は、特定した仮想オブジェクトリストの先頭のエントリを検索エントリとし、S1110に処理を進める。
コントローラ10は、検索エントリの仮想メタデータがクエリ要求に含まれるか否かを判定する(S1110)。仮想メタデータがクエリ要求に含まれる場合(S1110;Yes)、コントローラ10は、S1115に処理を進める。一方、検索エントリの仮想メタデータがクエリ要求に含まれない場合(S1110;No)、コントローラ10は、検索エントリのBOID1452a、1452bを取得する。そして、コントローラ10は、ベースオブジェクト管理テーブル142を参照し、取得したBOIDを含むエントリのベースメタデータがクエリ要求に含まれるか否かを判定する(S1111)。
ベースメタデータがクエリ要求に含まれない場合(S1111;No)、コントローラ10は、検索エントリの情報をテンポラリリストにコピーし(S1114)、S1115に処理を進める。一方、ベースオブジェクト情報がクエリ要求に含まれる場合(S1111;Yes)、コントローラ10は、ベースメタデータのうち、ベースオブジェクト管理テーブル142のキーワード1427をチェックし(S1112)、キーワード1427がクエリ要求に含まれるか否かを判定する(S1113)。キーワードがクエリ要求に含まれている場合(S1113;Yes)、コントローラ10は、S1115に処理を進める。一方、キーワード1427がクエリ要求に含まれていない場合(S1113;No)、コントローラ10は、検索エントリの情報をテンポラリリストにコピーする(S1114)。
コントローラ10は、検索エントリが仮想オブジェクトリスト145の最終エントリか否かを判定する(S1115)。検索エントリが最終エントリではない場合(S1115;No)、コントローラ10は、仮想オブジェクトリスト145の次のエントリを検索エントリとし(S1116)、S1110に処理を戻す。
一方、検索エントリが最終エントリの場合(S1115;Yes)、コントローラ10は、クライアント計算機4にテンポラリリストを送信する(S1117)。また、コントローラ10は、テンポラリリストをストレージファブリックの他のストレージ装置に送信する。
クライアント計算機4は、テンポラリリストを受信しメモリ42に記憶して(S832)、処理を終了する。また、他のストレージ装置も、テンポラリリストを受信しメモリに記憶し、処理を終了する。
上記処理により、クライアント計算機4は、受信したテンポラリリストからクエリ要求の対象となるVOIDを取得できる。取得したVOIDに基づき、クライアント計算機4は、仮想オブジェクトを要求できる。
図12は、仮想オブジェクト生成処理の一例の一部である。図13は、仮想オブジェクト生成処理の一例の残りの一部である。
仮想オブジェクト生成処理は、出力装置(クライアント計算機4、NAS5、データ解析装置6)からの読出要求に基づき仮想オブジェクトを生成し、出力装置に仮想オブジェクトを提供する処理である。出力装置として、クライアント計算機4を例にとり説明する。
仮想メタデータ情報作成処理に続く処理である。起動時にユーザは、ポータル画面にログインしている状態である。仮想メタデータ情報作成処理において送信されたテンポラリリストを表示したポータル画面の一例を、図21に示す。ポータル画面内のオブジェクト一覧が、処理(図11)で取得したテンポラリリストに基づき表示される。
ユーザは、オブジェクト一覧から読み出したい仮想オブジェクトを指定し、”ダウンロード“ボタンを押す。この操作により、クライアント計算機4は、指定した仮想オブジェクトのVOIDを含む読出要求をコントローラ10に送信する(S1220)。この操作により、仮想オブジェクトの読出要求には、ユーザが指定したVOIDが含まれる。また、ユーザは、オブジェクト一覧から読み出したい仮想オブジェクトのVOIDを指定できる他に、予約用の仮想オブジェクトを指定できる。この指定を以下、予約指定という。予約指定は、例えば、その仮想オブジェクトに含まれるオブジェクトグループについて、これに属する未来のベースオブジェクトを指定するものである。予約指定は、例えば、最新(現在時刻)のベースオブジェクトを順次表示していく場合や、現在時刻の所定時間前のベースオブジェクトを順次表示していく場合に行われる。予約指定は、予約用の仮想オブジェクトのVOIDを用いて行われる。ユーザは、予約用の仮想オブジェクトの予約指定をリアルタイム情報(予約指定)欄で行うことができる。
最新のベースオブジェクトを順次表示するとする予約指定をした場合、予約指定したVOIDに、対応するオブジェクトグループの最新のタイムスタンプが付与されたBOIDが順次紐付く。
現在時刻の所定時間前のベースオブジェクトを表示すると予約指定した場合、予約指定したVOIDに、対応するオブジェクトグループの現在時刻から所定時間前のタイムスタンプが付与されたBOIDが順次紐付く。
なお、ユーザが予約指定を解除した場合、このVOIDは使用状態から解放され、未使用状態の予約仮想オブジェクト用のVOIDとして確保され、再利用可能な状態となる。
クライアント計算機4は、読出要求をコントローラ10に送信する(S833)。コントローラ10は、読出要求を受信する(S1201)。コントローラ10は、仮想オブジェクトストレージ管理テーブル143を参照し、ログイン情報(仮想オブジェクトストレージID1431及びFQDN1432)から、仮想オブジェクト定義情報を特定する(S1202)。
コントローラ10は、特定した仮想オブジェクト定義情報のエントリが、仮想メタデータ管理テーブル144に存在し、かつ、その属性1444が有効かを検索する。
コントローラ10は、特定した仮想オブジェクトの定義情報のエントリが存在し、かつその属性1444が有効か否かを判定する(S1205)。エントリが存在しない又は属性1444が無効の場合(S1205;No)、コントローラ10は、エラーを応答し(S1220)、処理を終了する。
一方、エントリが存在しかつ属性1444が有効の場合(S1205;Yes)、読出要求の対象となる仮想オブジェクトリストが有効に存在することを意味する。この場合、コントローラ10は、その仮想オブジェクトリストの有効期限1445が閾値1446以内か否かを判定する(S1206)。例えば、有効期限条件1445が“時間”の場合、コントローラ10は、仮想オブジェクトリストの作成日時1447から現在の日時までの時間が、閾値1446以内か否かを判定する。この場合、コントローラ10は、仮想オブジェクトリストの最新更新日時1448から現在日時までの時間が、閾値1446以内か否かを判定してもよい。また、例えば、有効期限条件1445が“アクセス回数”の場合、コントローラ10は、仮想オブジェクトリストのアクセス回数1449が、閾値1446以内か否かを判定する。
閾値1446を超えている場合(S1206;No)、コントローラ10は、仮想メタデータ管理テーブル144の当該エントリの属性1444を“無効”にする(S1207)。そして、コントローラ10は、クライアント計算機4にエラーを応答して(S1220)、処理を終了する。
一方、閾値1446以下の場合(S1206;Yes)、コントローラ10は、当該エントリに含まれる仮想オブジェクトリスト145を対象仮想オブジェクトリストと特定する(S1208)。
コントローラ10は、対象仮想オブジェクトリストを参照し、読出要求に含まれる読出対象のVOIDを検索する(S1209)。
コントローラ10は、対象仮想オブジェクトリスト145に、読出対象のVOIDのエントリが存在するか否かを判定する(S1210)。読出対象のVOIDのエントリが存在しない場合(S1210;No)、コントローラ10は、図中2に処理を進める(図13のS1301)。
一方、読出対象の対象VOIDのエントリが存在する場合(S1210;Yes)、コントローラ10は、読出対象の仮想オブジェクトに含まれる1つ以上のベースオブジェクトの格納先を特定し、格納先からそのベースオブジェクトデータを取得する(S1211)。具体的には、コントローラ10は、仮想オブジェクトリスト145を参照し、読出対象のVOIDに対応する1つ以上のBOID1452a、1452bを取得する。次いで、コントローラ10は、ベースオブジェクト管理テーブル142を参照し、取得した全てのBOID1422に対応するストレージID1422及びテナントID1423を取得する。取得したストレージIDが自身の場合、コントローラ10は、取得したストレージID及びテナントIDを指定し、読出対象の仮想オブジェクトに含まれるベースオブジェクトを全て読み出す。なお、取得したストレージIDが、ストレージファブリック内の他のストレージ装置の場合、コントローラ10は、格納先のストレージ装置1に対し、テナントIDを指定したベースオブジェクトの読出要求を送信する。
コントローラ10は、S1202で特定した仮想オブジェクト定義情報に基づき、読み出したベースオブジェクトを対象仮想オブジェクトに整形し、対象仮想オブジェクトをクライアント計算機4に送信する(S1212)。具体的には、例えば、コントローラ10は、対象仮想オブジェクトリストの読出対象の仮想オブジェクトのエントリの情報と、読み出したベースオブジェクトデータと、ベースオブジェクト管理テーブル142の当該ベースオブジェクトのエントリの情報を、クライアント計算機4に送信する。
コントローラ10は、読出要求に含まれる対象仮想オブジェクトが複数存在するか否かを判定する(S1213)。対象仮想オブジェクトが複数存在しない場合(S1213;No)、コントローラ10は、S1215に処理を進める。一方、対象仮想オブジェクトが複数存在する場合(S1213;Yes)、コントローラ10は、クライアント計算機4に対して未送信の対象仮想オブジェクトが存在するか否かを判定する(S1214)。
未送信の対象仮想オブジェクトが存在する場合(S1214;Yes)、コントローラ10は、仮想オブジェクトリスト145を参照し、次のVOIDを選択して対象仮想オブジェクトとし(S1217)、S1211に処理を戻す。
コントローラ10は、仮想メタデータ管理テーブル144のアクセス数1449をインクリメントする(S1215)。コントローラ10は、仮想メタデータ管理テーブル144を参照し、対象仮想オブジェクトリストの有効期限条件1445が”アクセス数“であり、かつアクセス数1449が閾値1446以下か否かを判定する(S1216)。有効期限条件1445が"アクセス数”であってかつアクセス数1449が閾値1446を超過した場合(S1216;Yes)、コントローラ10は、属性1444に”無効“を設定し、S1219に処理を進める。一方、有効期限条件1445が”アクセス数“でないか又はアクセス数1449が閾値1446以下の場合(S1216;No)、コントローラ10は、ステップS1219に処理を進める。
コントローラ10は、他のストレージ装置1に仮想メタデータ管理テーブル144の更新を通知し(S1219)、処理を終了する。
図13の図中2に続く。コントローラ10は、仮想オブジェクトが予約指定されているか否かを判定する(S1301)。具体的には、コントローラ10は、読出要求に予約指定用のVOIDが含まれているか否かを判定する。仮想オブジェクトが予約指定されていない場合(S1301;No)、コントローラ10は、クライアント計算機4にエラーを応答し(図中3;図12のS1220)処理を終了する。
一方、仮想オブジェクトが予約指定されている場合(S1301;Yes)、コントローラ10は、読出要求に含まれるVOIDが、最新データ応答用の仮想オブジェクトのVOIDか否かを判定する(S1302)。最新データ応答用の仮想オブジェクトとは、現在時刻(リアルタイム)を示すタイムスタンプが付されたベースオブジェクトを含む仮想オブジェクトである。
読出要求に含まれるVOIDが、最新データ応答用の仮想オブジェクトのVOIDでない場合(S1302;No)、コントローラ10は、読出要求に含まれるVOIDが、所定時間前応答用の仮想オブジェクトのVOIDか否かを判定する(S1308)。所定時間前応答用の仮想オブジェクトとは、現在時刻から予め設定された所定時間だけ前の時刻を示すタイムスタンプが付されたベースオブジェクトを含む仮想オブジェクトである。読出要求に含まれるVOIDが、所定時間前応答用の仮想オブジェクトのVOIDの場合(S1308;Yes)、コントローラ10は、現在時刻から所定時間前のタイムスタンプ1454を含む対象仮想オブジェクトリストのエントリにポイントし(S1309)、S1304に処理を進める(図中5へ)。
一方、読出要求に含まれるVOIDが、所定時間応答用の仮想オブジェクトのVOIDではない場合(S1308;No)、他の用途の仮想オブジェクトのVOIDであることを意味する。この場合、コントローラ10は、予め設定されたルールに従うエントリをポイントし、S1304に処理を進める。
S1302の結果、最新データ応答用の仮想オブジェクトのVOIDの場合(S1302;Yes)、コントローラ10は、仮想オブジェクトリスト145の最新データ応答用エントリをポイントする(S1303)。例えば、図7の例では、最後尾のエントリが最新データ応答用のエントリである。
コントローラ10は、ポイントしたエントリのBOID1452を特定する。この場合、特定したBOIDは、所属する対象オブジェクトグループに基づく現在時刻のベースオブジェクトのIDとなる。従って、コントローラ10は、入力データに基づき、対象オブジェクトグループの現在時刻のベースオブジェクトを生成したときに、当該オブジェクトグループの格納先のテナントID1423を特定し、格納先のテナントにベースオブジェクトを格納する(S1304)。なお、特定したベースオブジェクトの格納先が他のストレージ装置のテナントの場合、コントローラ10は、そのストレージ装置及びテナントを指定したベースオブジェクトの書込要求を、他のストレージ装置に送信する。
コントローラ10は、生成したベースオブジェクトを、仮想オブジェクト定義情報に基づき仮想オブジェクトに整形し、その仮想オブジェクトを要求元のクライアント計算機4に提供する(S1305)。具体的には、例えば、コントローラ10は、生成したベースオブジェクトを要求元のクライアント計算機4に送信する。そして、コントローラ10は、生成したベースオブジェクトのBOIDを生成し、ベースオブジェクト管理テーブル142を更新する。なお、仮想オブジェクトの整形はS1212と同様である。
クライアント計算機4は、仮想オブジェクトを受信する(S1307)。そして、クライアント計算機4は、クライアントからの指示に基づき仮想オブジェクトを解析し、出力する。
上記処理により、テンポラリリストより読出要求で指定された仮想オブジェクトを、クライアント計算機4に送信することができる。具体的には、クライアント計算機4は、VOIDを指定することで、仮想オブジェクト定義情報に基づく1つ以上のベースオブジェクトを含む仮想オブジェクトを読み出すことができる。
また、アクセス回数や保持期間などに基づき、仮想オブジェクトリストの属性を有効又は無効に設定することができる。さらに、読出要求で指定された仮想オブジェクトについて、有効なもののみをクライアント計算機4に送信することができる。
また、仮想オブジェクトを予約指定している場合、その予約指定のルールに従った仮想オブジェクトを読み出すことができる。予約指定により、クライアント計算機1は、1つの読出要求によって、時々刻々と変化する現在時刻のベースオブジェクトを読み出すことができる。
図14は、仮想メタデータ更新処理のフローチャートの一例である。仮想メタデータ更新処理は、図11のS1107の処理である。
コントローラ10は、仮想メタデータ管理テーブル144及び仮想オブジェクトリスト145を参照し、S1102で特定した仮想オブジェクト定義情報に対応する仮想オブジェクトリスト145のエントリ数1443を読み出す(S1401)。特定した仮想オブジェクト定義情報をこのフローの説明では、対象定義情報という。
コントローラ10は、対象定義情報で指定されたオブジェクトグループを特定し、オブジェクトグループ管理テーブル141を参照して、指定されたオブジェクトグループに属するベースオブジェクトのオブジェクト数1413を確認する(S1402)。指定されたオブジェクトグループが複数の場合は、コントローラ10は、複数のオブジェクトグループを特定し、各オブジェクトグループについてベースオブジェクトのオブジェクト数を確認する。
コントローラ10は、対象定義情報で指定される現在の仮想オブジェクト数が、前回の仮想オブジェクト数より増えているか否かを判定する(S1403)。具体的には、例えば、S1402で確認したオブジェクト数が、S1401で仮想オブジェクトリスト145から読み出したエントリ数よりも多いか否かを判定する。対象定義情報で指定される仮想オブジェクト数が、前回対象定義情報で指定された仮想オブジェクト数と同じ数の場合(S1403;No)、コントローラ10は処理を終了する(図中の1へ)。一方、対象定義情報で指定される仮想オブジェクト数が、前回よりも増えている場合(S1403;Yes)、S1404へ進む。
コントローラ10は、特定した全てのオブジェクトグループのベースオブジェクト管理テーブル142を取得する(S1404)。
以下の説明では、特定したオブジェクトグループが1つの場合を説明する。特定したオブジェクトグループが複数の場合、コントローラ10は、特定した全てのオブジェクトグループに対し、S1404以下の処理を実行する。
コントローラ10は、取得したベースオブジェクト管理テーブル142の先頭エントリをポイントとする(S1405)。ここでいう先頭エントリは、対象定義情報で指定された切出し位置(初期値)のタイムスタンプを有するベースオブジェクトのエントリである。なお、ポイントされたエントリを、このフローの説明では対象エントリという。
コントローラ10は、対象リストに新規エントリを追加する(S1406)。コントローラ10は、追加した新規エントリに、ベースオブジェクト管理テーブル142の対象エントリのBOID1452、仮想オブジェクトサイズ1453、タイムスタンプ1454、及び、キーワード1455を追加する。
コントローラ10は、仮想メタデータ管理テーブル144を更新する(S1407)。具体的には、コントローラ10は、対象定義情報のエントリについて、属性1444を“有効”にし、格納エントリ数1443に1を加算し、最新更新日時1448に現在日時を設定する。
コントローラ10は、ベースオブジェクト管理テーブル142の対象エントリが最終エントリか否かを判定する(S1408)。最終エントリの場合(S1408;Yes)、コントローラ10は、処理を終了する。
一方、最終エントリでない場合(S1408;No)、コントローラ10は、ベースオブジェクト管理テーブル142の次のエントリを対象エントリとしてポイントし(S1409)、S1406に処理を進める。なお、ここでは、切出し位置から順に、対象定義情報で指定された間隔のタイムスタンプを含むエントリを対象エントリとしてポイントする。
上記のように、クエリ要求に含まれる仮想オブジェクト定義情報で指定される仮想オブジェクトが、前回同じ仮想オブジェクト定義情報で指定された仮想オブジェクトよりも増えた場合は、仮想オブジェクト定義情報に対応する仮想オブジェクトリストに含まれる仮想オブジェクトを更新できる。
図15は、ベースオブジェクト削除処理のフローチャートの一例の一部である。図16は、ベースオブジェクト削除処理のフローチャートの一例の残りの一部である。
管理計算機3は、ベースオブジェクトの削除要求をコントローラ10に送信する(S1511)。削除要求には、対象のオブジェクトグループと、対象のオブジェクトグループのうち削除対象となるベースオブジェクトを決定するための削除条件が含まれる。削除条件は、削除対象となるベースオブジェクトの保持期間又はベースオブジェクトのオブジェクトサイズを含む。なお、削除要求においては、全てのオブジェクトグループを対象にしてもよい。
コントローラ10は、削除要求を受信し、削除対象のベースオブジェクトを決定する削除条件が、ベースオブジェクトの保持期間か否かを判定する(S1501)。削除条件が保持期間の場合(S1501;Yes)、コントローラ10は、S1503に処理を進める。
一方、削除条件が保持期間以外の場合(S1501;No)、コントローラ10は、削除条件が削除対象のベースオブジェクトのサイズか否かを判定する(S1502)。削除条件がサイズの場合(S1502;Yes)、コントローラは、図16のS1641(図中のB)に処理を進める。一方、削除条件がサイズ以外の場合(S1502;No)、コントローラ10は、処理を終了する。
コントローラ10は、ベースオブジェクト管理テーブル142の先頭エントリを時間判定エントリとしてポイントする(S1503)。コントローラ10は、時間判定エントリの属性1425が有効か無効かを確認する(S1504)。
時間判定エントリの属性1425が無効の場合(S1505;No)、コントローラ10は、時間判定エントリがベースオブジェクト管理テーブル142の最終エントリか否かを判定する(S1507)。最終エントリの場合、コントローラ10は、図16のS1625(図中のC)に処理を進める。一方、時間判定エントリが最終エントリでない場合、コントローラ10は、次のエントリを時間判定エントリとしてポイントし(S1508)、S1504に処理を進める。
時間判定エントリの属性1425が有効の場合(S1505;Yes)、コントローラ10は、時間判定エントリのタイムスタンプ1426を確認し、かつ、オブジェクトグループ管理テーブル141を参照し、時間判定エントリのベースオブジェクトを含むオブジェクトグループの保持期間1415確認する(S1506)。
コントローラ10は、タイムスタンプの時刻から現在時刻までの時間が、保持期間1415を超えているか否かを判定する(S1509)。タイムスタンプの時刻から現在時刻までの時間が保持期間1415を超えている場合(S1509;Yes)、コントローラ10は、図16のS1621(図中のA)に処理を進める。一方、タイムスタンプの時刻から現在時刻までの時間が保持期間1415を超えていない場合(S1509;No)、コントローラ10は、処理を終了する。
図16のBに続く。コントローラ10は、設定されていたサイズ判定のための変数(サイズ判定変数)をクリアする(S1641)。コントローラ10は、ベースオブジェクト管理テーブル142の先頭エントリをサイズ判定エントリとしてポイントする。コントローラ10は、サイズ判定エントリの属性1425を無効とする(S1642)。
コントローラ10は、サイズ判定変数にサイズ判定エントリのサイズ1424の値を加算する(S1644)。コントローラ10は、サイズ判定変数が予め設定された閾値を超えたか否かを判定する(S1645)。サイズ判定変数が閾値を超えた場合(S1645;Yes)、コントローラ10は、S1625に処理を進める。一方、サイズ判定変数が閾値を以下の場合(S1645;No)、コントローラ10は、サイズ判定エントリがベースオブジェクト管理テーブル142の最終エントリか否かを判定する(S1646)。
サイズ判定エントリが最終エントリの場合(S1646;Yes)、コントローラ10は、S1625に処理を進める。一方、サイズ判定エントリが最終エントリでない場合(S1646;No)、コントローラ10は、次のエントリをサイズ判定エントリとしてポイントし(S1647)、S1643に処理を戻す。
図16のAに続く。コントローラ10は、時間判定エントリの属性1425を無効とする(S1621)。コントローラ10は、時間判定エントリがベースオブジェクト管理テーブル142の最終エントリか否かを判定する(S1622)。時間判定エントリが最終エントリの場合(S1622;Yes)、コントローラ10は、S1625に処理を進める。一方、時間判定エントリが最終エントリでない場合(S1622;No)、コントローラ10は、次のエントリを時間判定エントリとしてポイントする(S1623)。
コントローラ10は、時間判定エントリのタイムスタンプ1426を確認し、かつ、オブジェクトグループ管理テーブル141を参照し、時間判定エントリのベースオブジェクトを含むオブジェクトグループの保持期間1415確認する。そして、タイムスタンプの時刻から現在時刻までの時間が、保持期間1415を超えているか否かを判定する(S1624)。タイムスタンプの時刻から現在時刻までの時間が保持期間1415を超えている場合(S1624;Yes)、時間判定エントリは削除対象となるため、コントローラ10は、S1621に処理を戻す。
一方、タイムスタンプの時刻から現在時刻までの時間が保持期間1415を超えていない場合(S1624;No)、コントローラ10は、時間判定エントリは削除対象とならない。
コントローラ10は、オブジェクト削除処理において、ベースオブジェクトを優先して削除するか否かを判定する(S1625)。ベースオブジェクトを優先して削除しない場合(S1625;No)、コントローラ10は、ベースオブジェクトよりも仮想オブジェクトを優先して削除する。この場合、コントローラ10は、S1648に処理を進める(図中Dへ)。一方、ベースオブジェクトを優先して削除する場合(S1625;Yes)、コントローラ10は、対象のオブジェクトグループのベースオブジェクト管理テーブル142の先頭エントリを削除対象エントリとしてポイントする(S1626)。
コントローラ10は、削除対象エントリが有効か否かを判定する(S1627)。削除対象エントリが有効の場合(S1627;Yes)、コントローラ10は、処理を終了する。一方、削除対象エントリが無効の場合(S1627;No)、コントローラ10は、削除対象エントリのベースオブジェクトを削除する。具体的には、例えば、コントローラ10は、削除対象エントリのテナントID1423を取得し、そのテナント内の対象ベースオブジェクトの格納領域を開放する。
なお、対象ベースオブジェクトが他のストレージ装置1に格納されている場合、コントローラ10は、削除対象エントリのストレージID1422及びテナントID1423を指定し、対象ベースオブジェクトの格納先のストレージ装置1に削除要求を送信する(S1628)。
コントローラは、ベースオブジェクト管理テーブル142から削除対象エントリを削除する(S1629)。コントローラ10は、削除対象エントリが最終エントリか否かを判定する(S1630)。削除対象エントリが最終エントリの場合(S1630;Yes)、コントローラ10は処理を終了する。一方、削除対象エントリが最終エントリでない場合(S1630;No)、コントローラ10は、次のエントリを削除対象エントリとしてポイントし(S1631)、S1627に処理を戻す。
図16のDに続く。コントローラ10は、仮想メタデータ管理テーブル144を参照し、対象オブジェクトグループを含む仮想オブジェクト定義情報1441を検索する(S1648)。なお、仮想メタデータ管理テーブル144に、対象オブジェクトグループを含む仮想オブジェクト定義情報1441がある場合、対象オブジェクトグループに属するベースオブジェクトを参照する仮想オブジェクトが残存していることを意味する。
コントローラ10は、仮想メタデータ管理テーブル144に、対象オブジェクトグループを含む仮想オブジェクト定義情報1441のエントリがあるか否かを判定する(S1649)。当該エントリがない場合(S1649;No)は、対象オブジェクトに属するベースオブジェクトを参照する仮想オブジェクトが残存していないことを意味する。この場合、コントローラ10は、対象オブジェクトグループのベースオブジェクトの削除処理を行うため、S1626に処理を進める。
当該エントリがある場合(S1649;Yes)は、対象オブジェクトに属するベースオブジェクトを参照する仮想オブジェクトが残存していることを意味する。この場合、コントローラ10は、当該エントリが削除されたときに、S1626に処理を進めるようにスケジューリングし、処理を終了する。
上記処理により、クライアント計算機の要求に従い、各ベースオブジェクトが有効か無効かを判定でき、無効なベースオブジェクトについては削除することができ、その格納領域を開放できる。また、削除されたベースオブジェクトのBOIDを、再利用することができる。
また、上記処理により、各ベースオブジェクトデータに対し、保持期間を超過したか又は容量を超過した等の所定のルールに従い、有効又は無効の属性を付すことができる。
仮想オブジェクト削除要求を説明する。仮想オブジェクト削除処理は、管理計算機3が仮想オブジェクトの削除要求を送信した場合、又は、予め設定された時刻に実行される。
図17は、仮想オブジェクトの削除要求に基づく仮想オブジェクト削除処理のフローチャートの一例である。
管理計算機3は、仮想オブジェクトの削除要求をコントローラ10に送信する(S1721)。削除要求には、例えば仮想オブジェクトストレージID及びFQDNが含まれる。
コントローラ10は、削除要求を受信する(S1701)。コントローラ10は、仮想オブジェクトストレージ管理テーブル143に基づき、削除要求に含まれる仮想オブジェクトストレージID1431及びFQDN1432に対応する仮想オブジェクト定義情報1435を取得する。コントローラは、仮想メタデータ管理テーブル144の、取得した仮想オブジェクト定義情報1441のエントリを対象エントリとして特定する(S1702)。コントローラ10は、対象エントリの仮想オブジェクトリスト名1442に基づき、仮想オブジェクトリスト145を特定する(S1703)。
コントローラ10は、特定した仮想オブジェクトリスト145を削除する(S1704)。コントローラ10は、仮想メタデータ管理テーブル144から対象エントリを削除する(S1705)。コントローラ10は、管理計算機3に対し、削除要求の完了通知を送信する(S1706)。コントローラ10は、ストレージファブリックの他のストレージ装置1に対し、仮想オブジェクトリスト145の削除及び仮想メタデータ管理テーブル144の更新を通知し(S1707)処理を終了する。管理計算機3、完了通知を受信し、処理を終了する。
上記処理により、管理計算機3からの仮想オブジェクトの削除要求に基づき、仮想オブジェクトを削除できる。また、削除されたVOIDは、再利用することができる。
図18は、予め設定された時刻における仮想オブジェクト削除処理のフローチャートの一例である。この削除処理は、定期的に又は不定期に実行される。
コントローラ10は、仮想メタデータ管理テーブル144を参照し、先頭エントリを対象エントリとしてポイントする(S1811)。コントローラ10は、対象エントリの属性が有効か否かを判定する(S1812)。対象エントリの属性1444が無効な場合(S1812;No)、コントローラ10は、S1814に処理を進める。
一方、対象エントリの属性1444が有効な場合(S1812;Yes)、コントローラ10は、有効期限条件1445等を参照し、対象エントリが有効か否かを判定する(S1813)。具体的には、例えば、対象エントリの有効期限条件が”時間"の場合に、コントローラ10は、作成日時1447又は最新更新日時から現在時刻までの時間が、閾値1446以下の場合に有効と判定する。また、例えば、対象エントリの有効期限条件が”アクセス回数"の場合に、コントローラ10は、アクセス回数1449が閾値1446以内の場合に有効と判定する
対象エントリが有効な場合(S1813;Yes)、コントローラ10は、仮想メタデータ更新処理(図14)を実行し(S1819)、S1816に処理を戻す(図中のF)。
一方、対象エントリが無効な場合(S1813;No)、コントローラ10は、対象エントリから削除対象の仮想オブジェクトリスト145を特定し(S1814)、削除対象の仮想オブジェクトリスト145を削除する(S1815)。コントローラ10は、仮想メタデータ管理テーブル144の対象エントリを削除する(S1816)。
コントローラは、対象エントリが最終エントリか判定する(S1816)。対象エントリが最終エントリの場合(S1816;Yes)、コントローラ10は、次回の削除処理のスケジュールを登録し、ストレージファブリックの他のストレージ装置1に対し、仮想オブジェクトリスト145の削除及び仮想メタデータ管理テーブル144の更新を通知し(S1807)、処理を終了する。
一方、対象エントリが最終エントリでない場合(S1816;No)、コントローラ10は、S1815に処理を戻す。
上記処理により、スケジュールされたタイミングで仮想オブジェクトを削除することができる。この場合、特に、有効期限条件等に基づき仮想オブジェクトを削除することができる。また、削除されたVOIDは、再利用することができる。
次に、仮想ファイル作成処理の変形例を説明する。図22は、仮想ファイル作成処理のフローチャートの変形例である。ここでは、仮想オブジェクト読出処理をクライアント計算機4に代えてNASシステムが行う場合を説明する。
NASシステムは、NASサーバとNASサーバに接続されるNASクライアントとを有する(図示なし)。NASサーバは、ファイルシステムを有する。ファイルシステムは、ディレクトリ構造にてフォルダ及びファイルが管理される。各ファイルシステム上のファイル及びフォルダは、inodeで管理されている。各ファイル及びフォルダには、inode番号が付されている。例えば、NASクライアントが、あるファイル指定したリード要求をNASサーバに送信した場合、NASサーバは、指定されたファイルのinode番号に基づき、そのファイルを読み出し、NASクライアントに送信する。
この仮想ファイル作成処理では、まず、NASサーバが、仮想オブジェクト定義情報に基づく仮想ファイル用フォルダを作成する。NASサーバは、仮想オブジェクト定義情報を指定した仮想ファイル用フォルダの作成指示に基づき仮想ファイル用フォルダを作成する。作成指示は、例えば、NASクライアントが送信する(S2220)。この場合、例えば、ユーザは、NASクライアントのポータル画面から自身の仮想オブジェクトストレージIDを用いてログインし、仮想オブジェクト定義情報を指定して、対応する仮想ファイル用フォルダの作成指示を送信する。この作成指示に基づき、NASサーバは仮想ファイル用フォルダを作成する。
NASサーバは、作成指示を受信し、仮想ファイル用フォルダを作成する(S2202)。仮想ファイル用フォルダが既に作成済みの場合、NASサーバは、仮想ファイル用フォルダ内の全てのファイル及びinodeを削除する。なお、仮想ファイル用フォルダ内のすべてのファイルはスタブ化され、そのデータの実体はNASサーバに接続されるストレージ装置に格納される。
NASサーバは、仮想オブジェクトリストのクエリ要求をコントローラ10に送信する(S2203)。クエリ要求は、前述と同様、仮想オブジェクト定義情報に対応する仮想オブジェクトリストを要求するものである。
コントローラ10は、クエリ要求を受信し、仮想オブジェクトリスト作成処理を実行する(S814)。仮想オブジェクトリスト作成処理については、図12、13で説明したとおりである。
NASサーバは、仮想オブジェクトリスト(テンポラリリスト)を受信する(S2204)。
NASサーバは、テンポラリリストの先頭エントリのVOIDを取得する(S2205)。NASサーバは、仮想ファイル用フォルダに取得したVOIDを参照するスタブファイルを作成する(S2206)。そして、NASサーバは、取得したVOIDとスタブファイルのinode番号を対応づける。
NASサーバは、取得したVOIDが、テンポラリリストの最終エントリのVOIDか否かを判定する(S2207)。テンポラリリストの最終エントリのVOIDではない場合(S2207;No)、NASサーバは、次エントリのVOIDを取得し、S2206に処理を戻す。一方、テンポラリリストの最終エントリのVOIDの場合(S2207;Yes)、NASサーバは、NASクライアントからのリードリクエストを待つ。
NASクライアントは、読出対象のファイルを指定したリードリクエストをNASサーバに送信する(S2221)。
NASサーバは、読出対象のスタブファイルからVOIDを取得する(S2209)。NASサーバは、VOIDを指定した読出要求を、コントローラ10に送信する(S2210)。
コントローラ10は、読出要求に基づき、仮想オブジェクト生成処理を行う(S815)。仮想オブジェクト生成処理は、前述の通りである(図12、13参照)。
仮想オブジェクト生成処理の後、コントローラ10は、仮想オブジェクトを提供する。具体的には、例えば、コントローラ10は、仮想オブジェクトに含まれるベースオブジェクト及び仮想メタデータをクライアント計算機4に送信する。
NASサーバは、仮想オブジェクトを受信し、NASクライアントに転送する(S2211)。NASクライアントは、仮想オブジェクトを受信し処理を終了する(S2222)。
上記処理により、NASサーバが仮想オブジェクトを参照するスタブファイルをファイルシステム上に作成できる。これにより、NASクライアントは、NASサーバにアクセスすることで、ストレージ装置1内の仮想オブジェクトを読み出すことができる。
以上、幾つかの実施例を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
1.ストレージ装置 3.管理計算機 4.クライアント計算機 5.NASサーバ 6.データ解析装置 7.データ発生元装置 8.IoTデータ入力装置 10.ストレージコントローラ 20.記憶装置
Claims (15)
- 記憶デバイスと、
前記記憶デバイス、計算機、及び複数の検出装置に接続されるコントローラと、
を備え、
前記コントローラは、各検出装置から送信される入力データを受信し、
前記入力データは、対応する検出装置を識別する検出装置識別子と、対応する検出装置により検出される検出値と、前記検出毎に与えられるパラメータ値とを含み、
前記コントローラは、各入力データに基づくオブジェクトを生成し、各オブジェクトを識別するオブジェクトIDを生成し、各オブジェクトを前記記憶デバイスへ格納し、
前記コントローラは、各検出装置識別子に対応する複数のオブジェクトをオブジェクトグループとして分類し、
前記コントローラは、オブジェクトの選択のための選択条件を記憶し、
前記コントローラは、前記選択条件を満たすオブジェクトの中から、各パラメータ値に対応する複数のオブジェクトをパラメータグループとして分類し、前記パラメータグループを識別するパラメータグループ識別子を生成し、
前記コントローラは、生成される複数のパラメータグループ識別子を含むパラメータグループ識別子リストを記憶するとともに前記計算機へ送信し、
前記コントローラは、前記計算機から、前記パラメータグループ識別子リストの中の特定パラメータグループ識別子を含むパラメータグループ要求を受信した場合、前記特定パラメータグループ識別子に対応するオブジェクトを特定し、前記特定されたオブジェクトを、前記計算機へ送信する、
ストレージ装置。 - 前記パラメータ値は、前記検出値の検出時刻を示す、
請求項1に記載のストレージ装置。 - 前記選択条件は、1つ以上のオブジェクトグループを示す、
請求項1に記載のストレージ装置。 - 前記選択条件は、前記検出時刻の範囲を示す、
請求項2に記載のストレージ装置。 - 前記コントローラは、前記オブジェクトIDとして、前記オブジェクトのハッシュ値を算出し、
前記コントローラは、前記パラメータグループ識別子として、前記パラメータグループに属する複数のオブジェクトの複数のオブジェクトIDのハッシュ値を算出する、
請求項1に記載のストレージ装置。 - 前記コントローラは、前記パラメータグループ識別子リストが有効か否かを示す情報を記憶し、
前記コントローラは、前記パラメータグループ要求を受信した場合、前記パラメータグループ識別子リストを取得し、前記情報に基づいて取得したパラメータグループ識別子リストが有効か否かを判定し、
前記コントローラは、前記パラメータグループ識別子リストが有効な場合に、前記特定パラメータグループ識別子に対応するオブジェクトを特定し、前記特定されたオブジェクトを、前記計算機へ送信する、
請求項5に記載のストレージ装置。 - 前記コントローラは、前記選択条件に基づき、未来の検出時刻に対応するパラメータグループを予約指定パラメータグループとして生成し、前記予約指定パラメータグループを識別する対象パラメータグループ識別子を生成し、
前記コントローラは、前記パラメータグループ要求を受信した場合、前記パラメータグループ要求に対象パラメータグループ識別子が含まれるかを判定し、
前記コントローラは、対象パラメータグループ識別子が含まれる場合に、前記予約指定パラメータグループに対応するオブジェクトを取得し、前記計算機へ送信する、
請求項6に記載のストレージ装置。 - 前記予約指定パラメータグループには、対応するオブジェクトが生成されたときに前記計算機に送信するリアルタイム送信が設定されており、
前記コントローラは、送信される入力データに基づき、前記予約指定パラメータグループに対応するオブジェクトを生成し、前記計算機へ送信する、
請求項7に記載のストレージ装置。 - 前記コントローラは、前記選択条件と、前記選択条件に基づき生成されたパラメータグループ識別子リストとを対応づけ、
前記コントローラは、前記選択条件を指定したパラメータ削除要求を受信した場合、前記選択条件に対応するパラメータグループ識別子リストを削除する、
請求項8に記載のストレージ装置。 - 前記コントローラは、各オブジェクトが有効か否かを示す有効情報を保持し、
前記コントローラは、前記オブジェクトグループを指定したオブジェクト削除要求を受信した場合、前記有効情報に基づき、前記指定されたオブジェクトグループに属する対象オブジェクトが有効か否かを判定し、前記対象オブジェクトが無効であると判定された場合、前記対象オブジェクトを削除する、
請求項9に記載のストレージ装置。 - 前記コントローラは、前記対象オブジェクトが予め設定された削除条件を満たすか否かを判定し、前記削除条件を満たす場合に、前記対象オブジェクトの有効情報を無効に設定する、
請求項10に記載のストレージ装置。 - 前記削除条件は、前記オブジェクトに対するアクセスからの経過時間の閾値を示し、
前記コントローラは、有効と判定された前記対象オブジェクトの経過時間が、閾値を超えた場合に、前記対象オブジェクトの有効情報を無効に設定する、
請求項11に記載のストレージ装置。 - 前記コントローラは、前記計算機から、オブジェクトIDを指定したオブジェクト読出要求を受信した場合、前記指定されたオブジェクトIDに対応するオブジェクトを特定し、前記特定されたオブジェクトを、前記計算機へ送信する、
請求項1に記載のストレージ装置。 - 互いにネットワーク接続される複数のストレージ装置と、
前記ネットワークに接続される複数の検出装置と、
前記ネットワークに接続される計算機と、
を備え、
各ストレージ装置は、記憶デバイスを含み、
前記複数のストレージ装置は、前記複数の検出装置から送信される入力データを受信し、
前記入力データは、対応する検出装置を識別する検出装置識別子と、対応する検出装置により検出される検出値と、前記検出毎に与えられるパラメータ値とを含み、
各ストレージ装置は、各入力データに基づくオブジェクトを生成し、各オブジェクトを識別するオブジェクトIDを生成し、各オブジェクトを格納し、
各ストレージ装置は、各検出装置識別子に対応する複数のオブジェクトをオブジェクトグループとして分類し、
前記複数のストレージ装置のうちの少なくとも1つの特定ストレージ装置は、オブジェクトの選択のための選択条件を記憶し、
前記特定ストレージ装置は、前記選択条件を満たすオブジェクトの中から、各パラメータ値に対応する複数のオブジェクトをパラメータグループとして分類し、前記パラメータグループを識別するパラメータグループ識別子を生成し、
前記特定ストレージ装置は、生成される複数のパラメータグループ識別子を含むパラメータグループ識別子リストを記憶するとともに前記計算機へ送信し、
前記特定ストレージ装置は、前記計算機から、前記パラメータグループ識別子リストの中の特定パラメータグループ識別子を含むパラメータグループ要求を受信した場合、前記特定パラメータグループ識別子に対応するオブジェクトを特定し、前記特定されたオブジェクトを、前記計算機へ送信する、
計算機システム。 - 記憶デバイスを含み、計算機、及び複数の検出装置に接続されるストレージ装置の制御方法であって、前記ストレージ装置により、各検出装置から送信される入力データを受信し、前記入力データは、対応する検出装置を識別する検出装置識別子と、対応する検出装置により検出される検出値と、前記検出毎に与えられるパラメータ値とを含み、
前記ストレージ装置により、各入力データに基づくオブジェクトを生成し、各オブジェクトを識別するオブジェクトIDを生成し、各オブジェクトを前記記憶デバイスへ格納し、
前記ストレージ装置により、各検出装置識別子に対応する複数のオブジェクトをオブジェクトグループとして分類し、
前記ストレージ装置により、オブジェクトの選択のための選択条件を記憶し、
前記ストレージ装置により、前記選択条件を満たすオブジェクトの中から、各パラメータ値に対応する複数のオブジェクトをパラメータグループとして分類し、前記パラメータグループを識別するパラメータグループ識別子を生成し、
前記ストレージ装置により、生成される複数のパラメータグループ識別子を含むパラメータグループ識別子リストをを記憶するとともに前記計算機へ送信し、
前記ストレージ装置により、前記計算機から、前記パラメータグループ識別子リストの中の特定パラメータグループ識別子を含むパラメータグループ要求を受信した場合、前記特定パラメータグループ識別子に対応するオブジェクトを特定し、前記特定されたオブジェクトを、前記計算機へ送信する、
ことを実行する方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/071939 WO2017022050A1 (ja) | 2015-08-03 | 2015-08-03 | ストレージ装置、計算機システム、及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/071939 WO2017022050A1 (ja) | 2015-08-03 | 2015-08-03 | ストレージ装置、計算機システム、及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017022050A1 true WO2017022050A1 (ja) | 2017-02-09 |
Family
ID=57942639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2015/071939 WO2017022050A1 (ja) | 2015-08-03 | 2015-08-03 | ストレージ装置、計算機システム、及び方法 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2017022050A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113632510A (zh) * | 2019-09-17 | 2021-11-09 | 株式会社日立解决方案 | 转换装置、转换方法和记录介质 |
CN114518118A (zh) * | 2020-11-19 | 2022-05-20 | 财团法人资讯工业策进会 | 定位用基础信息产生系统与方法以及自身定位判断装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004173108A (ja) * | 2002-11-21 | 2004-06-17 | Central Res Inst Of Electric Power Ind | センサ情報のデータベース化方法および点検支援システム並びに点検支援用プログラム |
JP2014229321A (ja) * | 2013-05-24 | 2014-12-08 | タタ・コンサルタンシー・サーヴィシズ・リミテッド | モノのインターネット(IoT)アプリケーションの開発 |
-
2015
- 2015-08-03 WO PCT/JP2015/071939 patent/WO2017022050A1/ja active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004173108A (ja) * | 2002-11-21 | 2004-06-17 | Central Res Inst Of Electric Power Ind | センサ情報のデータベース化方法および点検支援システム並びに点検支援用プログラム |
JP2014229321A (ja) * | 2013-05-24 | 2014-12-08 | タタ・コンサルタンシー・サーヴィシズ・リミテッド | モノのインターネット(IoT)アプリケーションの開発 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113632510A (zh) * | 2019-09-17 | 2021-11-09 | 株式会社日立解决方案 | 转换装置、转换方法和记录介质 |
CN113632510B (zh) * | 2019-09-17 | 2023-08-18 | 株式会社日立解决方案 | 转换装置、转换方法和记录介质 |
US11979231B2 (en) | 2019-09-17 | 2024-05-07 | Hitachi Solutions, Ltd. | Conversion apparatus, conversion method, and recording medium |
CN114518118A (zh) * | 2020-11-19 | 2022-05-20 | 财团法人资讯工业策进会 | 定位用基础信息产生系统与方法以及自身定位判断装置 |
CN114518118B (zh) * | 2020-11-19 | 2024-05-28 | 财团法人资讯工业策进会 | 定位用基础信息产生系统与方法以及自身定位判断装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3318991B1 (en) | Monitoring processes running on a platform as a service architecture | |
JP7036597B2 (ja) | ネットワーク上のデータソースへの照会 | |
WO2011083508A1 (en) | Storage system and its file management method | |
KR101622810B1 (ko) | 빅데이터 분산 시스템 및 방법 | |
JP5485997B2 (ja) | 重複排除機能付きデータ格納装置及び当該データ格納装置の検索インデックスを作成する制御装置 | |
JP5557824B2 (ja) | 階層ファイルストレージに対する差分インデクシング方法 | |
US20140082002A1 (en) | Apparatus and method for processing unstructured data event in real time | |
WO2017022050A1 (ja) | ストレージ装置、計算機システム、及び方法 | |
JP5774513B2 (ja) | ファイルリスト生成方法及びシステム並びにプログラム、ファイルリスト生成装置 | |
JP6361199B2 (ja) | 情報記憶システム | |
JP6237633B2 (ja) | 分散ストレージ装置、ストレージノード、データ提供方法およびプログラム | |
JP6442642B2 (ja) | 計算機システムを管理する管理システム及び管理方法 | |
US9977726B2 (en) | System and method for smart framework for network backup software debugging | |
CN108574719B (zh) | 一种云主机创建方法及装置 | |
US9870404B2 (en) | Computer system, data management method, and recording medium storing program | |
US20180165380A1 (en) | Data processing system and data processing method | |
JP6193491B2 (ja) | 計算機システム | |
Yasu et al. | Performance of Splunk for the TDAQ Information Service at the ATLAS experiment | |
JP6487818B2 (ja) | 計算機システム及びその情報処理方法 | |
JP5818264B2 (ja) | 計算機システム及びジョブネット実行方法 | |
JP6230281B2 (ja) | 画像処理装置、制御方法、プログラム | |
JP2018097822A (ja) | プログラム、システム、およびシステムの制御方法 | |
WO2014203397A1 (ja) | 計算機システム、メタデータ管理方法及びプログラム | |
US10061840B2 (en) | Methods and systems for presenting data associated with a plurality of data sources | |
Ise et al. | Implementing materialized view of large-scale power consumption log using MapReduce |
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: 15900363 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15900363 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |