WO2019111303A1 - データ書き込み装置及び方法 - Google Patents

データ書き込み装置及び方法 Download PDF

Info

Publication number
WO2019111303A1
WO2019111303A1 PCT/JP2017/043533 JP2017043533W WO2019111303A1 WO 2019111303 A1 WO2019111303 A1 WO 2019111303A1 JP 2017043533 W JP2017043533 W JP 2017043533W WO 2019111303 A1 WO2019111303 A1 WO 2019111303A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
secondary storage
writing
write
storage devices
Prior art date
Application number
PCT/JP2017/043533
Other languages
English (en)
French (fr)
Inventor
美之 齊藤
チュンシャン ルオ
Original Assignee
株式会社東陽テクニカ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社東陽テクニカ filed Critical 株式会社東陽テクニカ
Priority to PCT/JP2017/043533 priority Critical patent/WO2019111303A1/ja
Priority to US16/331,315 priority patent/US10585622B2/en
Priority to JP2018520640A priority patent/JP6377304B1/ja
Publication of WO2019111303A1 publication Critical patent/WO2019111303A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device

Definitions

  • the present invention relates to a data writing apparatus and method, and more particularly to a data writing apparatus and method for writing data to a plurality of secondary storage devices.
  • Patent Document 1 a data writing method using a parallel secondary storage device has been proposed as a technique for writing data in the secondary storage device at high speed (see, for example, Patent Document 1).
  • Patent Document 1 secondary storage devices are parallelized, and when there is a write request, data is written to the minimum load amount among the plurality of secondary storage devices. As a result, there is no bias in the access load amount, and the data input / output speed of the parallel secondary storage device is increased.
  • Patent Document 1 requires unique hardware such as an "access load management device”, a “data position determination device” and a “data position management device”, and requires a great deal of time and cost to realize .
  • Patent Document 1 states that "it can also be realized by a general-purpose CPU or a microprocessor" (paragraph 0026 of the specification), no specific realization method is disclosed, and a long-term There is no guarantee that data can be written at extremely high speed. For example, with the technology of Patent Document 1, it is difficult to record all packets flowing through a very high speed communication network of 100 Gbps in a secondary storage device without losing it for a long period of 10 minutes or more.
  • FIG. 6 is a data diagram showing test results of write performance of a solid state drive (SSD).
  • the horizontal axis represents time (seconds), and the vertical axis represents write performance (MB / s).
  • the data generated at a constant speed was continuously written from the computer apparatus to the SSD, and the time change of the writing performance (MB / s) was measured.
  • the present invention has been made in view of such a situation, and all packets flowing through a high-speed communication network, such as 100 Gbps, for a long period of time, without requiring unique hardware. It is an object of the present invention to provide a data writing apparatus and method which can be recorded in secondary storage without scraping.
  • a data writing device is a data writing device that writes data to a plurality of secondary storage devices, and a plurality of secondary storage devices and an interface for acquiring data.
  • a computer device for writing data acquired by the interface circuit to any of the plurality of secondary storage devices the computer device including a memory for holding software and a processor for executing the software.
  • the software includes a multi-process operating system and an application executed under the management of the operating system, and the application is provided in correspondence with each of the plurality of secondary storage devices.
  • a writing process wherein the corresponding two The writing is completed among the data requested to be written from the corresponding writing process for each of the plurality of writing processes requesting the operating system to write the data to the storage device and the plurality of secondary storage devices
  • a monitoring process for detecting the amount of data stored, a requested data amount which is the amount of data for which the corresponding writing process has requested the operating system to write, and the monitoring process
  • the secondary storage device to be written next is selected from the plurality of secondary storage devices based on the detected amount of completed data, which is the amount of data completed, and the selected secondary storage device is selected.
  • Said interface circuit for said writing process corresponding to a device And a data distribution process instructing to write the acquired data to the corresponding secondary storage device, each of the plurality of write processes to the corresponding secondary storage device according to the instruction from the data distribution process. Request the operating system to write data.
  • a data writing method is a data writing method for writing data acquired by an interface circuit to a plurality of secondary storage devices by a computer device
  • a write process provided corresponding to each of the secondary storage devices requests the operating system to write data to the corresponding secondary storage device
  • the monitoring process includes the plurality of secondary storage devices
  • the step of detecting the amount of data for which writing has been completed among the data requested for writing from the corresponding writing process, and the data distribution process for each of the plurality of secondary storage devices The writing process writes to the operating system
  • An instruction is made to select from a plurality of secondary storage devices and write the data acquired by the interface circuit to the corresponding secondary storage device to the write process corresponding to the selected secondary storage device.
  • each of the plurality of writing processes requests the operating system to write data to the corresponding secondary storage device according to an instruction from the data distribution process, and the operating system performs multi-processing Operating system, the plurality of writing processes, Process, the data distribution process is a process executed under the management of the operating system, and the operating system, the plurality of writing processes, the monitoring process, and the data distribution process are processors included in the computer device Is software executed by
  • FIG. 1 is a block diagram showing the configuration of a data writing device according to the embodiment.
  • FIG. 2 is a diagram showing process contents of processes and inter-process communication in the data writing device according to the embodiment.
  • FIG. 3 is a data structure diagram showing a calculation example of the amount of data being processed in each writing process by the data distribution process in the data writing device according to the embodiment.
  • FIG. 4 is a conceptual diagram showing the flow of data in the data writing device according to the embodiment.
  • FIG. 5 is an external view of the data writing device used in the experiment.
  • FIG. 6 is a data diagram showing the test results of the write performance of the SSD.
  • FIG. 1 is a block diagram showing the configuration of a data writing device 10 according to an embodiment of the present invention.
  • the data writing device 10 is a device that writes data to a plurality of secondary storage devices 20a to 20c, and in the present embodiment, all packets flowing in a communication network having 100 Gbps Ethernet (registered trademark) as a physical layer are long. It is an apparatus for recording in the secondary storage devices 20a to 20c without omission for a period. Although the data writing device 10 also has a function of reading the written data from the secondary storage devices 20a to 20c and performing various processing (display, extraction, analysis, etc.), the characteristic writing function will be described below. Do.
  • the data writing device 10 has a plurality of secondary storage devices 20a to 20c, an interface circuit 30 for acquiring data (here, all packets flowing through the communication network 12), and an interface circuit. And a computer device 40 for writing the data acquired at 30 into any one of the plurality of secondary storage devices 20a to 20c.
  • the secondary storage devices 20a to 20c are non-volatile storage devices for storing data, and are SSDs or HDDs (Hard Disk Drives).
  • each of the secondary storage devices 20a to 20c is a RAID (Redundant Arrays of Inexpensive Disks) configured of an SSD compatible with eight 400 GByte capacity SAS (Serial Attached SCSI) standards.
  • the interface circuit 30 has a first buffer memory 31 of FIFO (First In First Out) system for temporarily holding acquired data, and directs the data held in the first buffer memory 31 to the memory 42 (Direct Memory DMA). Access) Transfer.
  • the interface circuit 30 is, for example, a network adapter for 100 Gbps Ethernet (registered trademark).
  • the computer device 40 includes a memory 42 for holding software 42b, a processor 41 for executing software 42b, and RAID controllers 43a to 43c for controlling data input / output of the secondary storage devices 20a to 20c.
  • the memory 42 is a RAM (Random Access Memory), and not only holds the executable software 42 b loaded from an HDD (not shown) or the like, but temporarily stores data DMA-transferred from the interface circuit 30. It has a second buffer memory 42 a of FIFO (First In First Out) system which is a data area to be held.
  • the memory 42 is configured by, for example, an RDIMM (Registered DIMM (Dual Inline Memory Module)).
  • the processor 41 is configured by a CPU that executes the software 42 b stored in the memory 42.
  • the RAID controllers 43a to 43c respectively connect the secondary storage devices 20a to 20c and the computer device 40, and control data input / output of the secondary storage devices 20a to 20c.
  • the interface circuit 30, the processor 41, and the RAID controllers 43a to 43c are connected by a bus compliant with, for example, the PCI Express 3.0 (Gen3) standard. Be done.
  • the processor 41 and the memory 42 are connected by a data transfer method compatible with the DDR4 (Double Data Rate 4) standard.
  • the RAID controllers 43a to 43c and the secondary storage devices 20a to 20c are connected by a transfer bus compliant with the SAS standard.
  • the software 42 b held in the memory 42 includes a multi-process operating system (hereinafter also referred to as “OS”) 60 and an application 50 which is software executed under the control of the OS 60.
  • OS multi-process operating system
  • application 50 which is software executed under the control of the OS 60.
  • the OS 60 is multi-process (i.e., multi-task) basic software for operating the computer device 40, and is here kernel software that is distinguished from applications.
  • the OS 60 includes a process (device driver) for performing data input / output of the secondary storage devices 20a to 20c.
  • the OS 60 is, for example, Windows (registered trademark) of Microsoft Corporation, Linux (registered trademark) or the like.
  • the application 50 is software executed under the management of the OS 60, and includes write processes 51a to 51c, a monitoring process 53, and a data distribution process 52 corresponding to the secondary storage devices 20a to 20c.
  • the write processes 51a to 51c are processes corresponding to the secondary storage devices 20a to 20c, and requesting the OS 60 to write data to the corresponding secondary storage devices 20a to 20c. Specifically, each of the write processes 51a to 51c requests the OS 60 to write data to the corresponding secondary storage devices 20a to 20c according to the instruction from the data distribution process 52. That is, each of the write processes 51a to 51c independently processes the instructed write data to achieve high speed.
  • each of the write processes 51a to 51c requests the OS 60 to write data to the corresponding secondary storage devices 20a to 20c without checking the free space. If there is no free space, for example, data is written so as to be overwritten.
  • the writing processes 51a to 51c update the requested data amount and notify the data distribution process 52.
  • the monitoring process 53 is a process for detecting, for each of the secondary storage devices 20a to 20c, an amount of data for which writing has been completed among data requested to be written from the corresponding writing processes 51a to 51c. In other words, it is a process that independently monitors writing.
  • the requested data amount which is the amount of data for which the corresponding write processes 51a to 51c have requested the OS 60 to write
  • the secondary storage device to be written next is selected from the plurality of secondary storage devices 20a to 20c based on the completed data amount, which is the amount of completed data, and corresponds to the selected secondary storage device This is a process of instructing the writing process to write the data acquired by the interface circuit 30 to the corresponding secondary storage device.
  • the data distribution process 52 uses a plurality of secondary storage devices corresponding to the writing process having the smallest value obtained by subtracting the amount of completed data from the amount of requested data as the secondary storage device to be written.
  • One of the storage devices 20a to 20c is selected.
  • the data distribution process 52 subtracts the amount of completed data received from the monitoring process 53 from the updated request data amount received from each of the plurality of writing processes 51a to 51c, and is processing the obtained value.
  • the secondary storage device corresponding to the writing process with the smallest amount of data being processed is regarded as the secondary storage device with the highest writing performance, and is selected from the plurality of secondary storage devices 20a to 20c. .
  • load balancing is achieved in the plurality of secondary storage devices 20a to 20c, and high write performance is maintained over a long period of time. Note that “it is assumed that the writing performance is the highest” means that it is determined that the writing process may be performed most quickly at that time.
  • the data distribution process 52 has two or more writing processes with the smallest amount of data being processed (that is, the amount of data being processed is the smallest, and two or more writing processes with the same number exist).
  • FIG. 2 is a diagram showing process contents of processes and inter-process communication (that is, a data writing method) in the data writing device 10 according to the present embodiment.
  • the data distribution process 52 acquires data to be written (S1). That is, it is confirmed whether or not there is data (here, a block which is a predetermined amount of data) to be written to the secondary storage devices 20a to 20c in the second buffer memory 42a of the memory 42. In this case, the process proceeds to the next step S2.
  • step S2 the data distribution process 52 calculates the amount of data being processed for each of the writing processes 51a to 51c (S2).
  • the amount of data being processed is the amount of data for which the writing process has requested the OS 60 to write to the secondary storage device (here, the number of blocks), and the data for which writing to the secondary storage device has been completed It is a value obtained by subtracting the amount of completed data (here, the number of blocks), which is the amount of.
  • the requested data amount is acquired from each of the writing processes 51a to 51c.
  • the completed data amount is acquired from the monitoring process 53.
  • FIG. 3 is a data structure diagram showing an example of calculation of the amount of data being processed in each of the writing processes 51a to 51c by the data distribution process 52.
  • the data distribution process 52 determines the amount of completed data (unit: number of blocks) acquired from the monitoring process 53 from the amount of requested data (unit: number of blocks) acquired from the writing processes 51 a to 51 c for each of the writing processes 51 a to 51 c. By subtracting, the amount of data being processed (the unit is the number of blocks) is calculated. In the example shown in FIG. 3, “1”, “0”, and “3” are respectively calculated as the amount of data (the unit is the number of blocks) during the process of the writing processes 51a to 51c.
  • the data distribution process 52 selects the write process with the smallest amount of data being processed as the write process corresponding to the secondary storage device to be written next, and sets the second buffer in the queue of the selected write process.
  • the data distribution process 52 selects the write process 51 b with the smallest amount of data being processed (here, “0”), and writes the data to the queue of the selected write process 51 b.
  • the data that is, the address in the second buffer memory 42a of the block present in the second buffer memory 42a is stored (that is, data is put in the queue), thereby writing the data to the corresponding secondary storage device 20b.
  • step S3 When the process of step S3 is finished, the data distribution process 52 returns to step S1 and repeats the same process.
  • each of the writing processes 51a to 51c prepares the file D11 corresponding to the secondary storage device as the writing destination (S12). Request the writing of the file D11 (S13).
  • the file D11 is a logical file indicating the corresponding secondary storage device, and is, for example, a directory file in a file system managed by the OS 60.
  • each of the write processes 51a to 51c requests the OS 60 to write data to the corresponding secondary storage devices 20a to 20c without checking the free space.
  • each of the writing processes 51a to 51c updates the amount of requested data held therein (that is, its own) after requesting the OS 60 to write data to the corresponding secondary storage devices 20a to 20c. (In this case, the number of written blocks is incremented by "1"), and the requested data amount after the update is notified to the data distribution process 52 (S14).
  • step S14 each of the writing processes 51a to 51c returns to step S11, and repeats the same process.
  • the OS 60 that has received the request for writing reads the block indicated by the address stored in the queue of the writing process that has made the request from the second buffer memory 42a, and sends it to the designated file D11 (that is, designated secondary storage device). Write (S21).
  • the monitoring process 53 obtains writing information to the secondary storage device from the OS 60 (S31), and determines whether the OS 60 has completed writing to the secondary storage device (S32). If it is determined that the write information is not stored (No in S32), after waiting for a while (S33), the write information acquisition (S31) and the determination (S32) are repeated.
  • the monitoring process 53 updates the amount of completed data corresponding to the completed writing process held therein (here, The data distribution process 52 is notified of the amount of completed data after updating by incrementing "1" which is the number of blocks for which writing has been completed (S34). Thereafter, the monitoring process 53 repeats the process from step S31 again.
  • FIG. 4 is a conceptual diagram showing the flow of data in the data writing device 10 according to the present embodiment.
  • blocks 5 to 7 are stored as unwritten data in the second buffer memory 42a, and among them, the block 5 which is the oldest data is the target of writing.
  • data (unit: number of blocks) being processed by the writing processes 51a to 51c are “1”, “0”, and “3”, respectively.
  • block 2 (more specifically, the address of block 2 in the second buffer memory 42a) is stored in the queue, and the block is received by the OS 60 that has received a request from the write process 51a.
  • the write processing to the secondary storage device 20a of 2 is in progress.
  • the write process 51b no data is stored in the queue, and the secondary storage device 20b is idle.
  • blocks 1, 3 and 4 (more specifically, the addresses of blocks 1, 3 and 4 in the second buffer memory 42a) are stored in the queue, and the OS 60 receives a request from the write process 51c.
  • the process of writing the blocks 1, 3 and 4 to the secondary storage device 20a is in progress.
  • each of the writing processes 51a to 51c notifies the data distribution process 52 of the latest requested data amount (that is, the total requested data amount) when requesting the OS 60 to write data.
  • the monitoring process 53 notifies the data distribution process 52 of the latest completed data amount (that is, the total completed data amount) for each writing process by monitoring the writing to the secondary storage devices 20a to 20c by the OS 60. .
  • the data distribution process 52 subtracts the amount of completed data acquired from the monitoring process 53 from the amount of requested data acquired from the writing processes 51a to 51c to obtain the amount of data being processed.
  • the block present in the second buffer memory 42a (more specifically, the address of the block in the second buffer memory 42a) is stored in the queue of the writing process which is calculated and having the smallest amount of data being processed.
  • the data distribution process 52 stores the block 5 of the second buffer memory 42a (more specifically, the address of the block 5 in the second buffer memory 42a) in the queue of the write process 51b.
  • the secondary storage device corresponding to the writing process with the smallest amount of data being processed is regarded as the secondary storage device with the highest writing performance, and the data is stored in the queue of the writing process 51b.
  • the data is written to the secondary storage device 20b by the above to achieve load balancing.
  • the data writing device 10 used in the experiment is constructed as an integrated portable system including user interfaces such as a keyboard and a display as shown in the appearance view of FIG.
  • the wear configuration is as follows.
  • Each of the secondary storage devices 20a to 20c is configured of an SSD compatible with four 800 GByte capacity SAS standards.
  • the processor 41 is configured of two Intel model Xeon E5-2637 v3 processors.
  • the memory 42 is configured by two 16 GByte capacity 2133 MHz RDIMMs.
  • Each of the RAID controllers 43a to 43c is configured by a RAID Card compliant with the SAS standard of LSI Corporation.
  • the interface circuit 30 is configured of a model ANIC-200K 100G (a network adapter for 100 Gbps Ethernet (registered trademark)) of Accolade technology.
  • the interface circuit 30, the processor 41, and the RAID controllers 43a to 43c are connected by a bus conforming to the PCI Express 3.0 (Gen3) standard, and the processor 41 and the memory 42 are connected by a data transfer method compliant to the DDR4 standard.
  • the RAID controllers 43a to 43c and the secondary storage devices 20a to 20c are connected by a transfer bus compliant with the SAS standard.
  • the OS 60 is Linux (registered trademark) (Ubuntu 16.04.01).
  • the application 50 includes writing processes 51a to 51c having the functions described in the above embodiment, a data distribution process 52, and a monitoring process 53.
  • the data writing device 10 is a device that writes data to the plurality of secondary storage devices 20a to 20c, and acquires the plurality of secondary storage devices 20a to 20c and data.
  • the computer device 40 comprises a memory 42 holding software 42 b and a processor 41 executing software 42 b.
  • the software 42 b includes a multi-process operating system 60 and an application 50 executed under the management of the operating system 60.
  • the application 50 is a plurality of write processes provided corresponding to each of the plurality of secondary storage devices 20a to 20c, and requests the operating system 60 to write data to the corresponding secondary storage devices 20a to 20c. Detects the amount of data for which writing has been completed among data requested to be written from the corresponding writing processes 51a to 51c for the plurality of writing processes 51a to 51c and the plurality of secondary storage devices 20a to 20c Request data amount which is the amount of data for which the corresponding writing processes 51a to 51c have requested the operating system 60 to write for each of the plurality of secondary storage devices 20a to 20c and the monitoring process 53 detects Has been completed
  • the secondary storage device to be written next is selected from the plurality of secondary storage devices 20a to 20c based on the completed data amount which is the amount of data, and the writing process corresponding to the selected secondary storage device And a data distribution process 52 instructing to write the data acquired by the interface circuit 30 to the corresponding secondary storage device, and the plurality of writing processes 51 a to 51 c follow
  • the application 50 executed under the control of the multi-process operating system 60 in the general-purpose computer 40 realizes data writing to the secondary storage devices 20a to 20c. Therefore, no unique hardware is required to construct the data writing device 10.
  • a monitoring process 53 for detecting the amount of data for which writing has been completed for each of the writing processes 51a to 51c and the secondary storage devices 20a to 20c corresponding to the secondary storage devices 20a to 20c.
  • a data distribution process 52 for selecting a secondary storage device to be written next based on the request data amount and the completion data amount of each of the secondary storage devices 20a to 20c.
  • the data distribution process 52 stores a plurality of secondary storage devices corresponding to the writing process having the smallest value obtained by subtracting the completion data amount from the requested data amount.
  • One of the devices 20a to 20c is selected.
  • the data distribution process 52 can evaluate the write performance by calculating the amount of data being processed in each of the secondary storage devices 20a to 20c by a simple calculation using the amount of requested data and the amount of completed data. Therefore, by selecting a secondary storage device that can be regarded as having the highest writing performance as a secondary storage device to be written next, data to the secondary storage device can be stored at high speed for a long period of time. It becomes possible to write.
  • the interface circuit 30 has a first buffer memory 31 for temporarily holding acquired data, and transfers the data held in the first buffer memory 31 to the memory 42.
  • the memory 42 has a second buffer memory 42 a that temporarily holds the data transferred from the interface circuit 30.
  • the plurality of write processes 51a to 51c request the operating system 60 to write the data held in the second buffer memory 42a to the corresponding secondary storage devices 20a to 20c.
  • the data acquired by the interface circuit 30 is transferred to the secondary storage devices 20a to 20c via the first buffer memory 31 of the interface circuit 30 and the second buffer memory 42a of the memory 42. Therefore, the processing speed and the difference in transfer speed between components that transfer data are absorbed, and the data acquired by the interface circuit 30 is written to the secondary storage device at high speed without losing for a long period of time Be
  • the plurality of write processes 51a to 51c request the operating system 60 to write data to the corresponding secondary storage devices 20a to 20c without checking the free space.
  • the plurality of writing processes 51a to 51c request the operating system 60 to write data to the corresponding secondary storage devices 20a to 20c
  • the plurality of writing processes 51a to 51c update the requested data amount
  • the data distribution process 52 The amount of completed data received from the monitoring process 53 is subtracted from the updated request data amount received from each of the plurality of writing processes 51a to 51c, and a plurality of secondary storage devices corresponding to the smallest writing process is obtained Of the secondary storage devices 20a to 20c.
  • the data distribution process 52 can select the secondary storage device to be written next based on the request data amount updated in the writing processes 51a to 51c and the completion data amount received from the monitoring process 53. . Therefore, based on the information obtained from the writing processes 51a to 51c executed in parallel and the monitoring process 53, the data distribution process 52 can minimize the amount of data being processed, in other words, it can be considered that the writing performance is the highest. The next storage device can be properly selected.
  • the data writing method is a method of writing data acquired by the interface circuit 30 into the plurality of secondary storage devices 20a to 20c by the computer device 40, and the plurality of secondary storage devices 20a to 20c 20c, the write processes 51a to 51c provided corresponding to the respective 20c request the operating system 60 to write data to the corresponding secondary storage devices 20a to 20c (S13); Step (S31 to S34) of detecting the amount of data for which writing has been completed among the data requested to be written from the corresponding writing processes 51a to 51c for each of the secondary storage devices 20a to 20c;
  • the process 52 includes a plurality of secondary storage devices 20a to 20c.
  • the requested data amount which is the amount of data for which the corresponding writing processes 51a to 51c have requested the operating system 60 to write
  • the completed data amount which is the amount of data for which writing has been completed detected by the monitoring process 53.
  • the secondary storage device to be written next is selected from the plurality of secondary storage devices 20a to 20c, and acquired by the interface circuit 30 for the writing process corresponding to the selected secondary storage device. And (S1 to S3) instructing to write the data to the corresponding secondary storage device.
  • the plurality of write processes 51a to 51c request the operating system 60 to write data to the corresponding secondary storage devices 20a to 20c according to the instruction from the data distribution process 52 (S11 to S13).
  • a monitoring process 53 for detecting the amount of data for which writing has been completed for each of the writing processes 51a to 51c and the secondary storage devices 20a to 20c corresponding to the secondary storage devices 20a to 20c.
  • a data distribution process 52 for selecting a secondary storage device to be written next based on the request data amount and the completion data amount of each of the secondary storage devices 20a to 20c.
  • the present invention can be realized not only as a data writing device and a data writing method, but also as a program that causes a computer to execute the steps included in the data writing method.
  • the program may be distributed by being stored in a computer readable recording medium such as a DVD or may be distributed via a communication network such as the Internet.
  • the data distribution process 52 corresponds to the secondary storage device corresponding to the writing process having the smallest value obtained by subtracting the completion data amount from the requested data amount.
  • the data distribution process 52 may select, as the secondary storage device to be written, the secondary storage device corresponding to the writing process having the smallest value obtained by dividing the amount of completed data by the amount of requested data.
  • the secondary storage device to be written is selected based on the proportion of the amount of requested data to the amount of completed data, and depending on the type of secondary storage device, the deterioration of the writing performance may be efficiently avoided. .
  • the request data amount after the update is notified from the writing processes 51a to 51c to the data distribution process 52, and the completion data amount after the update is notified from the monitoring process 53 to the data distribution process 52.
  • inter-process communication is not necessarily required.
  • a data table as shown in FIG. 3 is provided in a global storage area in the memory 42 accessible to each process, the writing processes 51a to 51 write the requested data amount to the data table, and the monitoring process 53 The amount of completed data may be written in the data table, and the data distribution process 52 may calculate the amount of data being processed by referring to the data table.
  • the update of the request data amount is not performed by the write processes 51a to 51c, but is performed by the data distribution process 52 that has received the completion notification of the write request from the write processes 51a to 51c that has completed the write request to the OS 60. May be Similarly, the update of the amount of completed data may not be performed by the monitoring process 53, but may be performed by the data distribution process 52 that has received the write completion notification from the monitoring process 53.
  • the data writing apparatus according to the present invention is limited to 100 Gbps Ethernet (registered trademark) as a target of data acquisition. is not.
  • the ability to capture 100 Gbps Ethernet packets is only an example of the capabilities of the data writer according to the present invention. That is, the data writing apparatus according to the present invention may be an apparatus for capturing data with a transmission rate higher or lower than 100 Gbps, or a transmission path or apparatus different from the communication network (for example, wiring pattern or signal It may be an apparatus for acquiring data from a generator or the like.
  • the data writing apparatus configured as a portable type system is shown, but the data writing apparatus according to the present invention is not limited to this, and may be configured as a rack mount type system.
  • each of the secondary storage devices 20a to 20c is configured as a RAID that handles a plurality of SSDs or HDDs as one storage device as a whole, but the present invention is not limited thereto. May be composed of
  • the secondary storage device to be written next is selected in units of one block, and the writing process is performed.
  • the present invention is not limited to this unit. Secondary storage device selection and write processing may be performed in units of multiple blocks or variable-size data. For example, when the frequency of occurrence of data to be written fluctuates, secondary storage device selection and write processing may be performed in units of variable data amount data generated in a fixed time. By this, the write frequency to the secondary storage can be made constant.
  • the present invention for example, as a data writing device for writing data in a plurality of secondary storage devices, in particular, as a device that records acquired data at high speed without losing it for a long period of time, for example, It can be used as a device for capturing 100 Gbps Ethernet (registered trademark) packets without losing them for a long time.
  • a data writing device for writing data in a plurality of secondary storage devices in particular, as a device that records acquired data at high speed without losing it for a long period of time, for example, It can be used as a device for capturing 100 Gbps Ethernet (registered trademark) packets without losing them for a long time.

Landscapes

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

Abstract

データ書き込み装置(10)は、二次記憶装置(20a~20c)と、データを取得するインタフェース回路(30)と、取得されたデータを二次記憶装置(20a~20c)のいずれかに書き込むコンピュータ装置(40)とを備える。コンピュータ装置(40)は、アプリケーション(50)として、二次記憶装置(20a~20c)のそれぞれに対応する書き込みプロセス(51a~51c)と、二次記憶装置(20a~20c)のそれぞれについて書き込みが完了したデータの量を検出する監視プロセス(53)と、二次記憶装置(20a~20c)のそれぞれについての依頼データ量と完了データ量とに基づいて次に書き込む対象となる二次記憶装置を選択し、対応する書き込みプロセスに対して書き込みを指示するデータ振り分けプロセス(52)とを含む。

Description

データ書き込み装置及び方法
 本発明は、データ書き込み装置及び方法に関し、特に、複数の二次記憶装置にデータを書き込むデータ書き込み装置及び方法に関する。
 イーサネット(登録商標)等の通信ネットワークにおける通信障害の対応に備えて、通信ネットワークを流れる全てのパケットを長期間に渡ってキャプチャできる装置が必要とされる。そのために、発生したデータを取りこぼしなく高速に二次記憶装置に記録することが求められる。
 従来、二次記憶装置に高速に書き込む技術として、並列二次記憶装置を用いたデータ書き込み方法が提案されている(例えば、特許文献1参照)。特許文献1では、二次記憶装置を並列化し、書き込み要求があったときに、複数の二次記憶装置のうちの最小負荷量のものにデータを書き込む。これにより、アクセス負荷量の偏りがなく、並列二次記憶装置のデータ入出力を高速化するというものである。
特開平9-54658号公報
 しかしながら、特許文献1の技術では、「アクセス負荷管理装置」、「データ位置決定装置」及び「データ位置管理装置」等の独自のハードウェアを必要とし、実現するのに多大な時間とコストを要する。
 なお、特許文献1には、「汎用のCPUないしマイクロプロセッサで実現することもできる」と記載されているが(明細書の段落0026)、具体的な実現方法は開示されておらず、長期間に渡って極めて高速にデータ書き込みをできる保証はない。例えば、特許文献1の技術では、100Gbpsという極めて高速な通信ネットワークを流れる全てのパケットを10分以上という長期間に渡って取りこぼしなく二次記憶装置に記録することは困難である。
 また、一般に、二次記憶装置の多くは、時間的に書き込み性能が変化し、長期間に渡って安定した高い書き込み性能を実現できないという問題もある。図6は、SSD(Solid State Drive)の書き込み性能のテスト結果を示すデータ図である。横軸は時間(秒)、縦軸は書き込み性能(MB/s)を示す。このテストでは、コンピュータ装置における処理負荷が変動しない状態にしたうえで、一定速度で発生するデータをコンピュータ装置からSSDに書き込み続け、書き込み性能(MB/s)の時間変化を計測した。このテスト結果から分かるように、二次記憶装置への長期間の書き込みにおいては、間欠的に書き込み性能が劣化する現象が現れる。よって、従来の技術では、高速に、かつ、長期間に渡って取りこぼしなく二次記憶装置にデータを書き込むことは困難である。
 そこで、本発明は、このような状況に鑑みてなされたものであり、独自のハードウェアを必要とすることなく、かつ、例えば100Gbps等の高速の通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置に記録することができるデータ書き込み装置及び方法を提供することを目的とする。
 上記目的を達成するために、本発明の一形態に係るデータ書き込み装置は、複数の二次記憶装置にデータを書き込むデータ書き込み装置であって、複数の二次記憶装置と、データを取得するインタフェース回路と、前記インタフェース回路で取得されたデータを前記複数の二次記憶装置のいずれかに書き込むコンピュータ装置とを備え、前記コンピュータ装置は、ソフトウェアを保持するメモリと、前記ソフトウェアを実行するプロセッサとを備え、前記ソフトウェアは、マルチプロセスのオペレーティングシステムと、前記オペレーティングシステムの管理下で実行されるアプリケーションとを含み、前記アプリケーションは、前記複数の二次記憶装置のそれぞれに対応して設けられた複数の書き込みプロセスであって、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼する複数の書き込みプロセスと、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出する監視プロセスと、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスが前記オペレーティングシステムに書き込みを依頼したデータの量である依頼データ量と、前記監視プロセスによって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を前記複数の二次記憶装置の中から選択し、選択した前記二次記憶装置に対応する前記書き込みプロセスに対して、前記インタフェース回路で取得されたデータを対応する前記二次記憶装置に書き込む指示をするデータ振り分けプロセスとを含み、前記複数の書き込みプロセスのそれぞれは、前記データ振り分けプロセスからの指示に従って、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼する。
 また、上記目的を達成するために、本発明の一形態に係るデータ書き込み方法は、インタフェース回路で取得されたデータをコンピュータ装置によって複数の二次記憶装置に書き込むデータ書き込み方法であって、前記複数の二次記憶装置のそれぞれに対応して設けられた書き込みプロセスが、対応する前記二次記憶装置へのデータの書き込みをオペレーティングシステムに依頼するステップと、監視プロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出するステップと、データ振り分けプロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスが前記オペレーティングシステムに書き込みを依頼したデータの量である依頼データ量と、前記監視プロセスによって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を前記複数の二次記憶装置の中から選択し、選択した前記二次記憶装置に対応する前記書き込みプロセスに対して、前記インタフェース回路で取得されたデータを対応する前記二次記憶装置に書き込む指示をするステップとを含み、複数の前記書き込みプロセスのそれぞれは、前記データ振り分けプロセスからの指示に従って、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼し、前記オペレーティングシステムは、マルチプロセスのオペレーティングシステムであり、前記複数の書き込みプロセス、前記監視プロセス、前記データ振り分けプロセスは、前記オペレーティングシステムの管理下で実行されるプロセスであり、前記オペレーティングシステム、前記複数の書き込みプロセス、前記監視プロセス、及び、前記データ振り分けプロセスは、前記コンピュータ装置が備えるプロセッサによって実行されるソフトウェアである。
 本発明により、独自のハードウェアを必要とすることなく、かつ、例えば100Gbps等の高速の通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置に記録することができるデータ書き込み装置及び方法が実現される。
図1は、実施の形態に係るデータ書き込み装置の構成を示すブロック図である。 図2は、実施の形態に係るデータ書き込み装置におけるプロセスの処理内容及びプロセス間通信を示す図である。 図3は、実施の形態に係るデータ書き込み装置におけるデータ振り分けプロセスによる各書き込みプロセスでの処理中のデータ量の算出例を示すデータ構造図である。 図4は、実施の形態に係るデータ書き込み装置におけるデータの流れを示す概念図である。 図5は、実験に用いたデータ書き込み装置の外観図である。 図6は、SSDの書き込み性能のテスト結果を示すデータ図である。
 以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される数値、形状、製造会社、型番、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序等は、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また、各図は、必ずしも厳密に図示したものではない。各図において、実質的に同一の構成については同一の符号を付し、重複する説明は省略又は簡略化する。
 図1は、本発明の実施の形態に係るデータ書き込み装置10の構成を示すブロック図である。
 データ書き込み装置10は、複数の二次記憶装置20a~20cにデータを書き込む装置であり、本実施の形態では、100Gbpsのイーサネット(登録商標)を物理層とする通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置20a~20cに記録する装置である。なお、データ書き込み装置10は、二次記憶装置20a~20cから、書き込んだデータを読み出して各種処理(表示、抽出、分析等)をする機能も有するが、以下では、特徴的な書き込み機能について説明する。
 このデータ書き込み装置10は、図1に示されるように、複数の二次記憶装置20a~20cと、データ(ここでは、通信ネットワーク12を流れる全てのパケット)を取得するインタフェース回路30と、インタフェース回路30で取得されたデータを複数の二次記憶装置20a~20cのいずれかに書き込むコンピュータ装置40とを備える。
 二次記憶装置20a~20cは、データを保存する不揮発性記憶装置であり、SSD又はHDD(Hard Disk Drive)である。例えば、二次記憶装置20a~20cのそれぞれは、8個の400GByte容量のSAS(Serial Attached SCSI)規格に対応したSSDで構成されるRAID(Redundant Arrays of Inexpensive Disks)である。
 インタフェース回路30は、取得したデータを一時的に保持するFIFO(First In First Out)方式の第1バッファメモリ31を有し、第1バッファメモリ31に保持されたデータをメモリ42にDMA(Direct Memory Access)転送する。インタフェース回路30は、例えば、100Gbpsのイーサネット(登録商標)用のネットワークアダプタである。
 コンピュータ装置40は、ソフトウェア42bを保持するメモリ42、ソフトウェア42bを実行するプロセッサ41、及び、二次記憶装置20a~20cのデータ入出力を制御するRAIDコントローラ43a~43cを備える。
 メモリ42は、RAM(Random Access Memory)であり、HDD(図示せず)等からロードされた実行形式のソフトウェア42bを保持するだけでなく、インタフェース回路30からDMA転送されてきたデータを一時的に保持するデータ領域であるFIFO(First In First Out)方式の第2バッファメモリ42aを有する。メモリ42は、例えば、RDIMM(Registerd DIMM(Dual Inline Memory Module))で構成される。
 プロセッサ41は、メモリ42に保持されたソフトウェア42bを実行するCPUで構成される。
 RAIDコントローラ43a~43cは、それぞれ、二次記憶装置20a~20cとコンピュータ装置40とを接続し、二次記憶装置20a~20cのデータ入出力を制御する。
 なお、本実施の形態では、高速なデータ転送を確保するために、インタフェース回路30、プロセッサ41、及び、RAIDコントローラ43a~43cは、例えば、PCI Express 3.0(Gen3)規格対応のバスで接続される。また、プロセッサ41とメモリ42とは、DDR4(Double Data Rate 4)規格に対応したデータ転送方式で接続される。また、RAIDコントローラ43a~43cと二次記憶装置20a~20cとは、SAS規格に対応した転送バスで接続される。
 メモリ42に保持されたソフトウェア42bは、マルチプロセスのオペレーティングシステム(以下、「OS」ともいう)60と、OS60の管理下で実行されるソフトウェアであるアプリケーション50とを含む。
 OS60は、コンピュータ装置40を動作させるためのマルチプロセス(つまり、マルチタスク)の基本ソフトウェアであり、ここでは、アプリケーションとは区別されるカーネル・ソフトウェアである。例えば、OS60には、二次記憶装置20a~20cのデータ入出力を行うプロセス(デバイスドライバ)等が含まれる。OS60は、例えば、Microsoft社のWindows(登録商標)、Linux(登録商標)等である。
 アプリケーション50は、OS60の管理下で実行されるソフトウェアであり、二次記憶装置20a~20cのそれぞれに対応する書き込みプロセス51a~51c、監視プロセス53、及び、データ振り分けプロセス52を含む。
 書き込みプロセス51a~51cは、それぞれ、二次記憶装置20a~20cに対応して設けられ、対応する二次記憶装置20a~20cへのデータの書き込みをOS60に依頼するプロセスである。具体的には、書き込みプロセス51a~51cのそれぞれは、データ振り分けプロセス52からの指示に従って、対応する二次記憶装置20a~20cへのデータの書き込みをOS60に依頼する。つまり、書き込みプロセス51a~51cのそれぞれは、指示された書き込みデータを独立して処理し、高速化を図っている。
 このとき、書き込みプロセス51a~51cのそれぞれは、対応する二次記憶装置20a~20cに対して、空き容量を確認することなく、データを書き込むようにOS60に依頼する。もし、空き容量がない場合には、例えば、上書き保存するようにデータを書き込む。なお、書き込みプロセス51a~51cのそれぞれは、対応する二次記憶装置20a~20cへのデータの書き込みをOS60に依頼した場合に、依頼データ量を更新してデータ振り分けプロセス52に通知する。
 監視プロセス53は、二次記憶装置20a~20cのそれぞれについて、対応する書き込みプロセス51a~51cから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出するプロセスである。つまり、書き込みの監視を独立して行うプロセスである。
 データ振り分けプロセス52は、二次記憶装置20a~20cのそれぞれについて、対応する書き込みプロセス51a~51cがOS60に書き込みを依頼したデータの量である依頼データ量と、監視プロセス53によって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を複数の二次記憶装置20a~20cの中から選択し、選択した二次記憶装置に対応する書き込みプロセスに対して、インタフェース回路30で取得されたデータを、対応する二次記憶装置に書き込む指示をするプロセスである。
 より詳しくは、データ振り分けプロセス52は、書き込む対象となる二次記憶装置として、依頼データ量から完了データ量を差し引いて得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を複数の二次記憶装置20a~20cの中から選択する。具体的には、データ振り分けプロセス52は、複数の書き込みプロセス51a~51cのそれぞれから受け取った更新後の依頼データ量から、監視プロセス53から受け取った完了データ量を差し引き、得られた値を処理中のデータ量とし、処理中のデータ量が最も小さい書き込みプロセスに対応する二次記憶装置を、書き込み性能が最も高い二次記憶装置とみなし、複数の二次記憶装置20a~20cの中から選択する。これにより、複数の二次記憶装置20a~20cにおけるロードバランスが図られ、長期間に渡って高い書き込み性能が維持される。なお、「書き込み性能が最も高いとみなす」とは、その時点で最も速やかに書き込み処理を行える可能性があると判断することを意味する。
 なお、データ振り分けプロセス52は、処理中のデータ量が最も小さい書き込みプロセスが2つ以上である(つまり、処理中のデータ量が最小で、かつ、同数の書き込みプロセスが2つ以上存在する)場合には、それら2つ以上の書き込みプロセスのいずれかに対応する二次記憶装置を書き込み対象として選択する。そのときに、完了データ量の少ない書き込みプロセスに対応する二次記憶装置を優先して選択してもよい。
 次に、以上のように構成される本実施の形態に係るデータ書き込み装置10の動作について、説明する。
 図2は、本実施の形態に係るデータ書き込み装置10におけるプロセスの処理内容及びプロセス間通信(つまり、データ書き込み方法)を示す図である。
 データ振り分けプロセス52は、書き込み対象のデータを取得する(S1)。つまり、メモリ42の第2バッファメモリ42aに、二次記憶装置20a~20cへの書き込み対象となるデータ(ここでは、所定量のデータであるブロック)が存在するか否かを確認し、存在する場合に、次のステップS2に進む。
 ステップS2では、データ振り分けプロセス52は、書き込みプロセス51a~51cのそれぞれについて、処理中のデータ量を算出する(S2)。処理中のデータ量は、書き込みプロセスがOS60に二次記憶装置への書き込みを依頼したデータの量(ここでは、ブロック数)である依頼データ量から、二次記憶装置への書き込みが完了したデータの量である完了データ量(ここでは、ブロック数)を差し引いて得られる値である。依頼データ量については、書き込みプロセス51a~51cのそれぞれから取得する。完了データ量については、監視プロセス53から取得する。
 図3は、データ振り分けプロセス52による各書き込みプロセス51a~51cでの処理中のデータ量の算出例を示すデータ構造図である。
 データ振り分けプロセス52は、書き込みプロセス51a~51cのそれぞれについて、書き込みプロセス51a~51cから取得した依頼データ量(単位はブロック数)から、監視プロセス53から取得した完了データ量(単位はブロック数)を差し引くことで、処理中のデータ量(単位はブロック数)を算出する。図3に示される例では、書き込みプロセス51a~51cの処理中のデータ量(単位はブロック数)として、それぞれ、「1」、「0」、「3」が算出される。
 そして、データ振り分けプロセス52は、処理中のデータ量が最も小さい書き込みプロセスを、次に書き込む対象となる二次記憶装置に対応する書き込みプロセスとして選択し、選択した書き込みプロセスのキューに、第2バッファメモリ42aに存在するブロックのアドレスを格納することで、対応する二次記憶装置へのデータの書き込みを指示する(S3)。図3に示される例では、データ振り分けプロセス52は、処理中のデータ量が最も小さい(ここでは、「0」である)書き込みプロセス51bを選択し、選択した書き込みプロセス51bのキューに、書き込み対象データ、つまり、第2バッファメモリ42aに存在するブロックの第2バッファメモリ42aでのアドレスを格納する(つまり、キューにデータをつめる)ことで、対応する二次記憶装置20bへのデータの書き込みを指示する。
 ステップS3の処理を終えると、データ振り分けプロセス52は、ステップS1に戻り、同様の処理を繰り返す。
 書き込みプロセス51a~51cのそれぞれは、自分のキューに、書き込み対象のブロックのアドレスが格納されると(S11)、書き込み先となる二次記憶装置に対応するファイルD11を用意し(S12)、OS60に対して、ファイルD11への書き込みを依頼する(S13)。ここで、ファイルD11は、対応する二次記憶装置を示す論理ファイルであり、例えば、OS60が管理するファイルシステムにおけるディレクトリファイルである。このとき、書き込みプロセス51a~51cのそれぞれは、対応する二次記憶装置20a~20cに対して、空き容量を確認することなく、データを書き込むようにOS60に依頼する。
 そして、書き込みプロセス51a~51cのそれぞれは、対応する二次記憶装置20a~20cへのデータの書き込みをOS60に依頼した後に、内部に保持している(つまり、自分の)依頼データ量を更新し(ここでは、書き込んだブロック数である「1」だけインクリメントし)、更新後の依頼データ量をデータ振り分けプロセス52に通知する(S14)。
 ステップS14の処理を終えると、書き込みプロセス51a~51cのそれぞれは、ステップS11に戻り、同様の処理を繰り返す。
 書き込みの依頼を受けたOS60は、依頼してきた書き込みプロセスのキューに格納されたアドレスが示すブロックを第2バッファメモリ42aから読み出し、指定されたファイルD11(つまり、指定された二次記憶装置)に書き込む(S21)。
 監視プロセス53は、OS60から、二次記憶装置への書き込み情報を取得することで(S31)、OS60が二次記憶装置への書き込みを完了したか否かを判断し(S32)、完了していないと判断した場合には(S32でno)、しばらく待機した後に(S33)、書き込み情報の取得(S31)と判断(S32)とを繰り返す。
 二次記憶装置への書き込みを完了したと判断した場合には(S32でyes)、監視プロセス53は、内部に保持している、完了した書き込みプロセスに対応する完了データ量を更新し(ここでは、書き込みが完了したブロック数である「1」だけインクリメントし)、更新後の完了データ量をデータ振り分けプロセス52に通知する(S34)。その後、監視プロセス53は、再び、ステップS31からの処理を繰り返す。
 図4は、本実施の形態に係るデータ書き込み装置10におけるデータの流れを示す概念図である。
 いま、第2バッファメモリ42aには、未書き込みのデータとして、ブロック5~7が保存されており、それらのうち、最も古いデータであるブロック5が書き込みの対象となっている。
 また、書き込みプロセス51a~51cの処理中のデータ(単位はブロック数)は、それぞれ、「1」、「0」、「3」である。具体的には、書き込みプロセス51aについては、そのキューに、ブロック2(より詳しくは、第2バッファメモリ42aにおけるブロック2のアドレス)が格納され、書き込みプロセス51aからの依頼を受けたOS60によって、ブロック2の二次記憶装置20aへの書き込み処理が進行している。書き込みプロセス51bについては、そのキューにはデータが格納されておらず、二次記憶装置20bは、アイドル状態である。書き込みプロセス51cについては、そのキューに、ブロック1、3及び4(より詳しくは、第2バッファメモリ42aにおけるブロック1、3及び4のアドレス)が格納され、書き込みプロセス51cからの依頼を受けたOS60によって、ブロック1、3及び4の二次記憶装置20aへの書き込み処理が進行している。
 このような状況において、書き込みプロセス51a~51cのそれぞれは、データの書き込みをOS60に依頼した場合に、最新の依頼データ量(つまり、総依頼データ量)をデータ振り分けプロセス52に通知する。また、監視プロセス53は、OS60による二次記憶装置20a~20cへの書き込みを監視することで、書き込みプロセスごとの最新の完了データ量(つまり、総完了データ量)をデータ振り分けプロセス52に通知する。
 よって、データ振り分けプロセス52は、書き込みプロセス51a~51cのそれぞれについて、書き込みプロセス51a~51cから取得した依頼データ量から、監視プロセス53から取得した完了データ量を差し引くことで、処理中のデータ量を算出し、処理中のデータ量が最も小さい書き込みプロセスのキューに、第2バッファメモリ42aに存在するブロック(より詳しくは、第2バッファメモリ42aにおけるブロックのアドレス)を格納する。図4に示される例では、データ振り分けプロセス52は、第2バッファメモリ42aのブロック5(より詳しくは、第2バッファメモリ42aにおけるブロック5のアドレス)を、書き込みプロセス51bのキューに格納する。
 これにより、処理中のデータ量が最も小さい書き込みプロセスに対応する二次記憶装置が、書き込み性能が最も高い二次記憶装置とみなして、書き込みプロセス51bのキューにデータが保存され、そのデータがOS60によって二次記憶装置20bに書き込まれ、ロードバランスが図られる。
 次に、本実施の形態に係るデータ書き込み装置10を用いて、100Gbpsのイーサネット(登録商標)を流れるパケットをキャプチャする実験を行ったので、以下、その実験について説明する。なお、実験では、1つのRAIDコントローラについて2つの二次記憶装置を接続し、合計6個の二次記憶装置を用いた。
 実験に用いたデータ書き込み装置10は、図5の外観図に示されるように、キーボード及びディスプレイ等のユーザインタフェースも含めて一体化されたポータブル型システムとして構築されたものであり、その主要なハードウェア構成は、次の通りである。
 二次記憶装置20a~20cのそれぞれは、4個の800GByte容量のSAS規格に対応したSSDで構成される。プロセッサ41は、2個のIntel社のモデルXeon E5-2637 v3のプロセッサで構成される。メモリ42は、4個の16GByte容量の2133MHz対応のRDIMMで構成される。RAIDコントローラ43a~43cのそれぞれ、LSI社のSAS規格に対応したRAID Cardで構成される。インタフェース回路30は、Accolade technology社のモデルANIC-200K 100G(100Gbpsのイーサネット(登録商標)用のネットワークアダプタ)で構成される。インタフェース回路30、プロセッサ41、及び、RAIDコントローラ43a~43cは、PCI Express 3.0(Gen3)規格対応のバスで接続され、プロセッサ41とメモリ42とは、DDR4規格に対応したデータ転送方式で接続され、RAIDコントローラ43a~43cと二次記憶装置20a~20cとは、SAS規格に対応した転送バスで接続される。
 OS60は、Linux(登録商標)(Ubuntu 16.04.01)である。アプリケーション50は、上記実施の形態で説明した機能をもつ書き込みプロセス51a~51c、データ振り分けプロセス52及び監視プロセス53で構成される。
 以上のように構成されるデータ書き込み装置10を用いて、100Gbpsのイーサネット(登録商標)を流れるパケットを連続的にキャプチャするテストを行った結果、48時間の連続キャプチャを、取りこぼし率0%で、実現した。
 以上のように、本実施の形態に係るデータ書き込み装置10は、複数の二次記憶装置20a~20cにデータを書き込む装置であって、複数の二次記憶装置20a~20cと、データを取得するインタフェース回路30と、インタフェース回路30で取得されたデータを複数の二次記憶装置20a~20cのいずれかに書き込むコンピュータ装置40とを備える。コンピュータ装置40は、ソフトウェア42bを保持するメモリ42と、ソフトウェア42bを実行するプロセッサ41とを備える。ソフトウェア42bは、マルチプロセスのオペレーティングシステム60と、オペレーティングシステム60の管理下で実行されるアプリケーション50とを含む。アプリケーション50は、複数の二次記憶装置20a~20cのそれぞれに対応して設けられた複数の書き込みプロセスであって、対応する二次記憶装置20a~20cへのデータの書き込みをオペレーティングシステム60に依頼する複数の書き込みプロセス51a~51cと、複数の二次記憶装置20a~20cのそれぞれについて、対応する書き込みプロセス51a~51cから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出する監視プロセス53と、複数の二次記憶装置20a~20cのそれぞれについて、対応する書き込みプロセス51a~51cがオペレーティングシステム60に書き込みを依頼したデータの量である依頼データ量と、監視プロセス53によって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を複数の二次記憶装置20a~20cの中から選択し、選択した二次記憶装置に対応する書き込みプロセスに対して、インタフェース回路30で取得されたデータを対応する二次記憶装置に書き込む指示をするデータ振り分けプロセス52とを含み、複数の書き込みプロセス51a~51cは、データ振り分けプロセス52からの指示に従って、それぞれ、対応する二次記憶装置20a~20cへのデータの書き込みをオペレーティングシステム60に依頼する。
 これにより、汎用のコンピュータ装置40においてマルチプロセスのオペレーティングシステム60の管理下で実行されるアプリケーション50によって、二次記憶装置20a~20cへのデータ書き込みが実現される。よって、データ書き込み装置10を構築するのに独自のハードウェアを必要としない。
 また、並列実行されるプロセスとして、二次記憶装置20a~20cのそれぞれに対応する書き込みプロセス51a~51c、二次記憶装置20a~20cのそれぞれごとの書き込みが完了したデータ量を検出する監視プロセス53、及び、二次記憶装置20a~20cのそれぞれごとの依頼データ量及び完了データ量に基づいて次に書き込み対象となる二次記憶装置を選択するデータ振り分けプロセス52が設けられる。このような並列的な機能分散により、依頼データ量及び完了データ量に基づいて、書き込み性能が最も高いとみなせる二次記憶装置が次に書き込み対象となる二次記憶装置として選択され、データ書き込みが行われることで、ロードバランスが図られる。その結果、全体として安定した高い書き込み性能が実現され、例えば100Gbps等の極めて高速な通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置に記録することが可能になる。
 ここで、データ振り分けプロセス52は、書き込む対象となる二次記憶装置として、依頼データ量から完了データ量を差し引いて得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を複数の二次記憶装置20a~20cの中から選択する。
 これにより、データ振り分けプロセス52は、依頼データ量と完了データ量とを用いた簡単な演算によって、二次記憶装置20a~20cそれぞれの処理中のデータ量を算出して書き込み性能を評価できる。よって、書き込み性能が最も高いとみなせる二次記憶装置を次に書き込み対象となる二次記憶装置として選択することで、高速に、かつ、長期間に渡って取りこぼしなく、二次記憶装置へのデータ書き込みが可能になる。
 また、インタフェース回路30は、取得したデータを一時的に保持する第1バッファメモリ31を有し、第1バッファメモリ31に保持されたデータをメモリ42に転送する。メモリ42は、インタフェース回路30から転送されてきたデータを一時的に保持する第2バッファメモリ42aを有する。複数の書き込みプロセス51a~51cは、それぞれ、第2バッファメモリ42aに保持されたデータを対応する二次記憶装置20a~20cに書き込むことをオペレーティングシステム60に依頼する。
 これにより、インタフェース回路30で取得されたデータは、インタフェース回路30が有する第1バッファメモリ31、及び、メモリ42が有する第2バッファメモリ42aを経て二次記憶装置20a~20cに転送される。よって、データ転送をする構成要素間での処理速度や転送速度の差が吸収され、インタフェース回路30で取得されたデータは、高速に、かつ、長期間に渡って取りこぼしなく二次記憶装置に書き込まれる。
 また、複数の書き込みプロセス51a~51cは、それぞれ、対応する二次記憶装置20a~20cに対して、空き容量を確認することなく、データを書き込むようにオペレーティングシステム60に依頼する。
 これにより、二次記憶装置20a~20cの空き容量の確認に伴うオーバヘッドがなくなり、高速に、かつ、長期間に渡って取りこぼしなく二次記憶装置にデータが書き込まれる。
 また、複数の書き込みプロセス51a~51cは、それぞれ、対応する二次記憶装置20a~20cへのデータの書き込みをオペレーティングシステム60に依頼した場合に、依頼データ量を更新し、データ振り分けプロセス52は、複数の書き込みプロセス51a~51cのそれぞれから受け取った更新後の依頼データ量から、監視プロセス53から受け取った完了データ量を差し引き、得られた値が最も小さい書き込みプロセスに対応する二次記憶装置を複数の二次記憶装置20a~20cの中から選択する。
 これにより、データ振り分けプロセス52は、書き込みプロセス51a~51cで更新された依頼データ量、及び、監視プロセス53から受け取った完了データ量に基づいて、次に書き込む対象となる二次記憶装置を選択できる。よって、データ振り分けプロセス52は、並列実行される書き込みプロセス51a~51c、及び、監視プロセス53から得た情報に基づいて、処理中のデータ量が最小、言い換えると、書き込み性能が最も高いとみなせる二次記憶装置を適切に選択できる。
 また、本実施の形態に係るデータ書き込み方法は、インタフェース回路30で取得されたデータをコンピュータ装置40によって複数の二次記憶装置20a~20cに書き込む方法であって、複数の二次記憶装置20a~20cのそれぞれに対応して設けられた書き込みプロセス51a~51cが、対応する二次記憶装置20a~20cへのデータの書き込みをオペレーティングシステム60に依頼するステップ(S13)と、監視プロセス53が、複数の二次記憶装置20a~20cのそれぞれについて、対応する書き込みプロセス51a~51cから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出するステップ(S31~S34)と、データ振り分けプロセス52が、複数の二次記憶装置20a~20cのそれぞれについて、対応する書き込みプロセス51a~51cがオペレーティングシステム60に書き込みを依頼したデータの量である依頼データ量と、監視プロセス53によって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を複数の二次記憶装置20a~20cの中から選択し、選択した二次記憶装置に対応する書き込みプロセスに対して、インタフェース回路30で取得されたデータを対応する二次記憶装置に書き込む指示をするステップ(S1~S3)とを含む。そして、複数の書き込みプロセス51a~51cは、データ振り分けプロセス52からの指示に従って、それぞれ、対応する二次記憶装置20a~20cへのデータの書き込みをオペレーティングシステム60に依頼する(S11~S13)。
 これにより、汎用のコンピュータ装置40においてマルチプロセスのオペレーティングシステム60の管理下で実行されるアプリケーション50によって、二次記憶装置20a~20cへのデータ書き込みが実現され、独自のハードウェアを必要としない。
 また、並列実行されるプロセスとして、二次記憶装置20a~20cのそれぞれに対応する書き込みプロセス51a~51c、二次記憶装置20a~20cのそれぞれごとの書き込みが完了したデータ量を検出する監視プロセス53、及び、二次記憶装置20a~20cのそれぞれごとの依頼データ量及び完了データ量に基づいて次に書き込み対象となる二次記憶装置を選択するデータ振り分けプロセス52が設けられる。このような並列的な機能分散により、依頼データ量及び完了データ量に基づいて、書き込み性能が最も高いとみなせる二次記憶装置が次に書き込み対象となる二次記憶装置として選択され、データ書き込みが行われることで、ロードバランスが図られる。その結果、全体として安定した高い書き込み性能が実現され、例えば100Gbps等の極めて高速な通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置に記録することが可能になる。
 なお、本発明は、データ書き込み装置及びデータ書き込み方法として実現できるだけでなく、コンピュータに、データ書き込み方法に含まれるステップを実行させるプログラムとして実現してもよい。そして、そのプログラムは、DVD等のコンピュータ読み取り可能な記録媒体に格納して配布されてもよいし、インターネット等の通信ネットワークを介して配布されてもよい。
 以上、本発明に係るデータ書き込み装置及びデータ書き込み方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の主旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、実施の形態における一部の構成要素を組み合わせて構築される別の形態も、本発明の範囲内に含まれる。
 例えば、上記実施の形態では、データ振り分けプロセス52は、書き込む対象となる二次記憶装置として、依頼データ量から完了データ量を差し引いて得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を選択したが、このような方法に限定されない。データ振り分けプロセス52は、書き込む対象となる二次記憶装置として、完了データ量を依頼データ量で除して得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を選択してもよい。これにより、依頼データ量のうち、完了データ量が占める割合に基づいて書き込み対象となる二次記憶装置が選択され、二次記憶装置の種類によっては、書き込み性能の劣化が効率的に回避され得る。
 また、上記実施の形態では、更新後の依頼データ量は、書き込みプロセス51a~51cからデータ振り分けプロセス52に通知され、更新後の完了データ量は、監視プロセス53からデータ振り分けプロセス52に通知されたが、必ずしも、このようなプロセス間通信は必須ではない。例えば、各プロセスがアクセス可能なメモリ42内のグローバル記憶領域に、図3に示されるようなデータテーブルが設けられ、書き込みプロセス51a~51はそのデータテーブルに依頼データ量を書き込み、監視プロセス53はそのデータテーブルに完了データ量を書き込み、データ振り分けプロセス52はそのデータテーブルを参照することで処理中のデータ量を算出してもよい。
 また、依頼データ量の更新は、書き込みプロセス51a~51cが行うのではなく、OS60への書き込み依頼を完了した書き込みプロセス51a~51cからの書き込み依頼の完了通知を受けたデータ振り分けプロセス52が、行ってもよい。同様に、完了データ量の更新は、監視プロセス53が行うではなく、監視プロセス53からの書き込みの完了通知を受けたデータ振り分けプロセス52が、行ってもよい。
 また、上記実施の形態及び実験例では、100Gbpsイーサネット(登録商標)のパケットをキャプチャしたが、本発明に係るデータ書き込み装置は、データ取得の対象として、100Gbpsイーサネット(登録商標)に限定されるものではない。100Gbpsイーサネット(登録商標)のパケットをキャプチャできることは、本発明に係るデータ書き込み装置の能力の一例に過ぎない。つまり、本発明に係るデータ書き込み装置は、100Gbpsよりも高い、又は、低い伝送速度のデータをキャプチャする装置であってもよいし、通信ネットワークとは異なる伝送路又は装置(例えば、配線パターン又は信号発生器等)からデータを取得する装置であってもよい。
 また、上記実験例では、ポータブル型システムとして構築されたデータ書き込み装置が示されたが、本発明に係るデータ書き込み装置は、これに限られず、ラックマウント型システムとして構築されてもよい。
 また、上記実施の形態では、二次記憶装置20a~20cのそれぞれは、複数のSSD又はHDDを全体でひとつの記憶装置として扱うRAIDで構成されたが、これに限られず、単体のSSD又はHDDで構成されてもよい。
 また、上記実施の形態では、1ブロックの単位で、次に書き込む対象となる二次記憶装置が選択され、書き込み処理が行われたが、この単位に限定されない。複数のブロック、あるいは、可変サイズのデータの単位で、二次記憶装置の選択及び書き込み処理が行われてもよい。例えば、書き込むべきデータの発生頻度が変動する場合には、一定時間に発生する可変データ量のデータを単位として、二次記憶装置の選択及び書き込み処理が行われてもよい。これによって、二次記憶装置への書き込み頻度が一定化され得る。
 本発明は、複数の二次記憶装置にデータを書き込むデータ書き込み装置として、特に、取得したデータを、高速に、かつ、長期間に渡って取りこぼしなく二次記憶装置に記録する装置として、例えば、100Gbpsイーサネット(登録商標)のパケットを長期間に渡って取りこぼしなくキャプチャする装置として、利用できる。
 10 データ書き込み装置
 12 通信ネットワーク
 20a、20b、20c 二次記憶装置
 30 インタフェース回路
 31 第1バッファメモリ
 40 コンピュータ装置
 41 プロセッサ
 42 メモリ
 42a 第2バッファメモリ
 42b ソフトウェア
 43a、43b、43c RAIDコントローラ
 50 アプリケーション
 51a、51b、51c 書き込みプロセス
 52 データ振り分けプロセス
 53 監視プロセス
 60 オペレーティングシステム(OS)

Claims (7)

  1.  複数の二次記憶装置にデータを書き込むデータ書き込み装置であって、
     複数の二次記憶装置と、
     データを取得するインタフェース回路と、
     前記インタフェース回路で取得されたデータを前記複数の二次記憶装置のいずれかに書き込むコンピュータ装置とを備え、
     前記コンピュータ装置は、
     ソフトウェアを保持するメモリと、
     前記ソフトウェアを実行するプロセッサとを備え、
     前記ソフトウェアは、
     マルチプロセスのオペレーティングシステムと、
     前記オペレーティングシステムの管理下で実行されるアプリケーションとを含み、
     前記アプリケーションは、
     前記複数の二次記憶装置のそれぞれに対応して設けられた複数の書き込みプロセスであって、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼する複数の書き込みプロセスと、
     前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出する監視プロセスと、
     前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスが前記オペレーティングシステムに書き込みを依頼したデータの量である依頼データ量と、前記監視プロセスによって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を前記複数の二次記憶装置の中から選択し、選択した前記二次記憶装置に対応する前記書き込みプロセスに対して、前記インタフェース回路で取得されたデータを対応する前記二次記憶装置に書き込む指示をするデータ振り分けプロセスとを含み、
     前記複数の書き込みプロセスのそれぞれは、前記データ振り分けプロセスからの指示に従って、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼する
     データ書き込み装置。
  2.  前記データ振り分けプロセスは、書き込む対象となる前記二次記憶装置として、前記依頼データ量から前記完了データ量を差し引いて得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を前記複数の二次記憶装置の中から選択する
     請求項1記載のデータ書き込み装置。
  3.  前記インタフェース回路は、取得したデータを一時的に保持する第1バッファメモリを有し、前記第1バッファメモリに保持されたデータを前記メモリに転送し、
     前記メモリは、前記インタフェース回路から転送されてきたデータを一時的に保持する第2バッファメモリを有し、
     前記複数の書き込みプロセスのそれぞれは、前記第2バッファメモリに保持されたデータを対応する前記二次記憶装置に書き込むことを前記オペレーティングシステムに依頼する
     請求項1又は2記載のデータ書き込み装置。
  4.  前記複数の書き込みプロセスのそれぞれは、対応する前記二次記憶装置に対して、空き容量を確認することなく、前記データを書き込むように前記オペレーティングシステムに依頼する
     請求項1~3のいずれか1項に記載のデータ書き込み装置。
  5.  前記複数の書き込みプロセスのそれぞれは、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼した場合に、前記依頼データ量を更新し、
     前記データ振り分けプロセスは、前記複数の書き込みプロセスのそれぞれから受け取った更新後の前記依頼データ量から、前記監視プロセスから受け取った前記完了データ量を差し引き、得られた値が最も小さい書き込みプロセスに対応する二次記憶装置を前記複数の二次記憶装置の中から選択する
     請求項2記載のデータ書き込み装置。
  6.  インタフェース回路で取得されたデータをコンピュータ装置によって複数の二次記憶装置に書き込むデータ書き込み方法であって、
     前記複数の二次記憶装置のそれぞれに対応して設けられた書き込みプロセスが、対応する前記二次記憶装置へのデータの書き込みをオペレーティングシステムに依頼するステップと、
     監視プロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出するステップと、
     データ振り分けプロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスが前記オペレーティングシステムに書き込みを依頼したデータの量である依頼データ量と、前記監視プロセスによって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を前記複数の二次記憶装置の中から選択し、選択した前記二次記憶装置に対応する前記書き込みプロセスに対して、前記インタフェース回路で取得されたデータを対応する前記二次記憶装置に書き込む指示をするステップとを含み、
     複数の前記書き込みプロセスのそれぞれは、前記データ振り分けプロセスからの指示に従って、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼し、
     前記オペレーティングシステムは、マルチプロセスのオペレーティングシステムであり、
     前記複数の書き込みプロセス、前記監視プロセス、前記データ振り分けプロセスは、前記オペレーティングシステムの管理下で実行されるプロセスであり、
     前記オペレーティングシステム、前記複数の書き込みプロセス、前記監視プロセス、及び、前記データ振り分けプロセスは、前記コンピュータ装置が備えるプロセッサによって実行されるソフトウェアである
     データ書き込み方法。
  7.  コンピュータに請求項6記載のデータ書き込み方法に含まれるステップを実行させるプログラム。
PCT/JP2017/043533 2017-12-04 2017-12-04 データ書き込み装置及び方法 WO2019111303A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2017/043533 WO2019111303A1 (ja) 2017-12-04 2017-12-04 データ書き込み装置及び方法
US16/331,315 US10585622B2 (en) 2017-12-04 2017-12-04 Data writing device and method
JP2018520640A JP6377304B1 (ja) 2017-12-04 2017-12-04 データ書き込み装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/043533 WO2019111303A1 (ja) 2017-12-04 2017-12-04 データ書き込み装置及び方法

Publications (1)

Publication Number Publication Date
WO2019111303A1 true WO2019111303A1 (ja) 2019-06-13

Family

ID=63250075

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/043533 WO2019111303A1 (ja) 2017-12-04 2017-12-04 データ書き込み装置及び方法

Country Status (3)

Country Link
US (1) US10585622B2 (ja)
JP (1) JP6377304B1 (ja)
WO (1) WO2019111303A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021215011A1 (ja) * 2020-04-24 2021-10-28 株式会社東陽テクニカ パケットキャプチャ装置及び方法
JP2022546879A (ja) * 2019-06-20 2022-11-10 クワッド マイナーズ ネットワークフォレンジックシステム及びこれを用いたネットワークフォレンジック方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000099446A (ja) * 1998-09-21 2000-04-07 Hitachi Ltd コマンド発行制御方法および装置
JP2006259812A (ja) * 2005-03-15 2006-09-28 Hitachi Ltd 動的キュー負荷分散方法、システム及びプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6441918A (en) 1987-08-07 1989-02-14 Nec Corp Load distributed control system for secondary storage device
JPH0954658A (ja) 1995-06-08 1997-02-25 Sanyo Electric Co Ltd 並列二次記憶装置およびそのアクセス方法
JP2009032144A (ja) * 2007-07-30 2009-02-12 Seiko Epson Corp ディスクシステム制御モジュール、ディスクシステム制御方法、ディスクシステム制御プログラム及び情報処理装置
KR20100082185A (ko) * 2009-01-08 2010-07-16 삼성전자주식회사 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치
US9846662B2 (en) * 2014-09-20 2017-12-19 Netronome Systems, Inc. Chained CPP command
JP6582721B2 (ja) * 2015-08-19 2019-10-02 富士通株式会社 制御装置、ストレージシステム、及び制御プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000099446A (ja) * 1998-09-21 2000-04-07 Hitachi Ltd コマンド発行制御方法および装置
JP2006259812A (ja) * 2005-03-15 2006-09-28 Hitachi Ltd 動的キュー負荷分散方法、システム及びプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022546879A (ja) * 2019-06-20 2022-11-10 クワッド マイナーズ ネットワークフォレンジックシステム及びこれを用いたネットワークフォレンジック方法
JP7391847B2 (ja) 2019-06-20 2023-12-05 クワッド マイナーズ ネットワークフォレンジックシステム及びこれを用いたネットワークフォレンジック方法
WO2021215011A1 (ja) * 2020-04-24 2021-10-28 株式会社東陽テクニカ パケットキャプチャ装置及び方法
US11296958B2 (en) 2020-04-24 2022-04-05 Toyo Corporation Packet capture device and packet capture method

Also Published As

Publication number Publication date
JP6377304B1 (ja) 2018-08-22
US20190369907A1 (en) 2019-12-05
US10585622B2 (en) 2020-03-10
JPWO2019111303A1 (ja) 2019-12-12

Similar Documents

Publication Publication Date Title
JP4817783B2 (ja) Raidシステム及びそのリビルド/コピーバック処理方法
US7725620B2 (en) Handling DMA requests in a virtual memory environment
US10241926B2 (en) Migrating buffer for direct memory access in a computer system
GB2509057A (en) Predictive point-in-time copy for storage systems
US11281509B2 (en) Shared memory management
US10176101B2 (en) Allocate a segment of a buffer to each of a plurality of threads to use for writing data
US20130219136A1 (en) Storage apparatus and method for controlling storage apparatus involving snapshots
US20160092142A1 (en) Management of memory pages
US20200285510A1 (en) High precision load distribution among processors
US11513939B2 (en) Multi-core I/O trace analysis
WO2019111303A1 (ja) データ書き込み装置及び方法
US10169184B2 (en) Identification of storage performance shortfalls
US20170147519A1 (en) Tracking statistics corresponding to data access in a computer system
JP2015191604A (ja) 制御装置、制御プログラム、および制御方法
US9223703B2 (en) Allocating enclosure cache in a computing system
US11687443B2 (en) Tiered persistent memory allocation
US9588917B2 (en) Tracking statistics corresponding to data access in a computer system
US20160371013A1 (en) Implementing multiple raid level configurations in a data storage device
US11079951B2 (en) Multi-tier storage and mirrored volumes
US9817585B1 (en) Data retrieval system and method
CN113849346A (zh) 一种数据备份方法、装置及设备
JP2020052852A (ja) ストレージ及び情報処理システム。
US10185517B2 (en) Limiting the execution of background management operations in a drive array
US9158669B2 (en) Presenting enclosure cache as local cache in an enclosure attached server

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2018520640

Country of ref document: JP

Kind code of ref document: A

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

Ref document number: 17934241

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

Country of ref document: EP

Kind code of ref document: A1