Cache server

The cache server system addresses nonvolatile memory wear by managing read errors and optimizing delivery capabilities, ensuring efficient and extended use of nonvolatile memory in content distribution.

JP2025127140APending Publication Date: 2025-09-01KIOXIA CORP
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2024023677
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-02-20
Publication Date
2025-09-01

AI Technical Summary

Technical Problem

Cache servers using nonvolatile memory face challenges in managing the finite number of program/erase cycles, leading to wear and the need for technology to suppress consumption and extend the lifespan of nonvolatile memory.

Method used

A cache server system that includes a processor to determine content storage, handle read errors, calculate delivery capability, and decide on restoration processes based on reference values to manage nonvolatile memory usage effectively.

Benefits of technology

The system optimizes nonvolatile memory usage by selectively restoring content and managing delivery capabilities, thereby extending the lifespan and maintaining efficient content distribution.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025127140000001_ABST
    Figure 2025127140000001_ABST
Patent Text Reader

Abstract

To provide a cache server capable of suppressing consumption of a nonvolatile memory.SOLUTION: A processor of a cache server calculates the distribution capability of the cache server in the case that an error occurs in reading of a first content. The processor determines whether or not the calculated distribution capability exceeds a first reference value. The processor does not restore the first content in the case of determining that the calculated distribution capability exceeds the first reference value. The processor executes restoration processing for restoring the first content, distribution processing for distributing the restored first content to a client through a network, and write processing for writing the restored first content in the nonvolatile memory in the case of determining that the calculated distribution capability does not exceed the first reference value.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] SUMMARY OF THE INVENTION An embodiment of the present invention relates to a cache server for performing a content distribution service. [Background technology]

[0002] A content delivery network (CDN) is known as an information distribution system that has become widespread in recent years.

[0003] In information distribution systems such as CDNs, multiple cache servers are used to prevent access concentration on an origin server and to improve content distribution speed.

[0004] Each of the multiple cache servers acquires content requested by a client from an origin server, distributes the acquired content to the client, and stores the content in a storage device included in the cache server. After that, when the content is requested by another client, the cache server reads the content from the storage device and distributes the read content to the other client.

[0005] Recently, solid state drives (SSDs), which include nonvolatile memory such as NAND flash memory and a controller that controls the nonvolatile memory, have begun to be used as storage devices for cache servers.

[0006] When a cache server including an SSD is unable to successfully read content requested by a client that was previously stored in the SSD's nonvolatile memory from the SSD's nonvolatile memory, it may determine that this content was not originally present in the SSD, rather than that a read error has occurred. In this case, the cache server retrieves the content for which the read error occurred from the origin server, delivers the retrieved content to the client, and writes the retrieved content to the SSD's nonvolatile memory to restore the content for which the read error occurred.

[0007] However, due to its characteristics, nonvolatile memory wears out as the program / erase cycle progresses, so there is an upper limit to the number of program / erase cycles (number of times it can be rewritten) that nonvolatile memory can undergo, and it is necessary to control writing to nonvolatile memory so that this upper limit is not exceeded.

[0008] For this reason, in cache servers that use nonvolatile memory as a cache, there is a need for technology that can suppress consumption of the nonvolatile memory. [Prior art documents] [Patent documents]

[0009] [Patent Document 1] U.S. Patent No. 9,558,065 Summary of the Invention [Problem to be solved by the invention]

[0010] The problem to be solved by one embodiment of the present invention is to provide a cache server that can suppress consumption of nonvolatile memory. [Means for solving the problem]

[0011] According to an embodiment, a cache server connectable via a network to an origin server, which is an external server that stores multiple contents, includes a storage device and a processor. The storage device includes a nonvolatile memory having a finite data retention period and a finite number of rewrites, and a controller configured to control the nonvolatile memory. The processor is configured to determine whether a first content requested by a client is stored in the nonvolatile memory, and if the first content is stored in the nonvolatile memory, to read the first content from the nonvolatile memory and distribute the read first content to the client via the network. If the first content is not stored in the nonvolatile memory, to obtain the first content from the origin server, distribute the obtained first content to the client via the network, and write the obtained first content to the nonvolatile memory. When an error occurs in reading the first content from the non-volatile memory, the processor calculates a delivery capability of the cache server for delivering the distributable content stored in the non-volatile memory based at least on an estimated number of reads for each of the distributable content stored in the non-volatile memory. The processor determines whether the calculated delivery capability exceeds a first reference value. If the processor determines that the calculated delivery capability exceeds the first reference value, the processor does not restore the first content. If the processor determines that the calculated delivery capability does not exceed the first reference value, the processor executes a restoration process to restore the first content, a delivery process to deliver the restored first content to the client via the network, and a write process to write the restored first content to the non-volatile memory. [Brief explanation of the drawings]

[0012] [Figure 1]FIG. 1 is a diagram showing an example of the configuration of an information distribution system including a cache server according to an embodiment. [Figure 2] FIG. 2 is a block diagram showing an example of the functional configuration of a processor of a cache server according to the embodiment. [Figure 3] FIG. 2 is a block diagram showing an example of the configuration of a storage device of a cache server according to the embodiment. [Figure 4] FIG. 1 is a block diagram showing an example of the configuration of a nonvolatile memory die according to an embodiment. [Figure 5] FIG. 10 is a diagram showing an example of error correction performed in a cache server according to the embodiment. [Figure 6] 10 is a flowchart showing the procedure of a content distribution process executed in a cache server according to the embodiment. [Figure 7] FIG. 2 is a diagram for explaining an error detection process executed in an information distribution system including a cache server according to an embodiment. [Figure 8] FIG. 2 is a diagram for explaining a content recovery process executed in an information distribution system including a cache server according to an embodiment. [Figure 9] FIG. 10 is a diagram for explaining an error notification process executed in an information distribution system including a cache server according to an embodiment. [Figure 10] 10A and 10B are diagrams for explaining a restoration instruction transmission process executed in an information distribution system including a cache server according to an embodiment. [Figure 11] FIG. 2 is a diagram showing a first example of the delivery capability of a cache server according to the embodiment. [Figure 12] FIG. 10 is a diagram showing a second example of the delivery capability of a cache server according to the embodiment. [Figure 13] 10 is a flowchart showing the procedure of a first example of content recovery processing executed in a cache server according to the embodiment. [Figure 14] 10 is a flowchart showing the procedure of a second example of content recovery processing executed in a cache server according to the embodiment. [Figure 15]10 is a flowchart showing the procedure of a third example of content recovery processing executed in a cache server according to the embodiment. [Figure 16] 10 is a flowchart showing the procedure of a fourth example of content recovery processing executed in the cache server according to the embodiment. [Figure 17] 10 is a flowchart showing the procedure of a fifth example of content recovery processing executed in a cache server according to the embodiment. [Figure 18] 10 is a flowchart showing the procedure of a sixth example of content recovery processing executed in the cache server according to the embodiment. [Figure 19] 10 is a flowchart showing the procedure of a seventh example of content recovery processing executed in the cache server according to the embodiment. [Figure 20] 10A and 10B are diagrams illustrating an example of a write destination block selection process executed in a cache server according to the embodiment. [Figure 21] 10 is a flowchart showing the procedure of a content writing process executed in a cache server according to the embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0013] Hereinafter, an embodiment will be described with reference to the drawings. FIG. 1 is a diagram showing an example of the configuration of an information distribution system including a cache server according to an embodiment. The information distribution system is a system for distributing content to various client terminals (clients 4-1 to 4-4 in FIG. 1) via a network 5 such as the Internet, and is realized, for example, as a CDN. The information distribution system includes an origin server 1, one or more cache servers 2 (three cache servers 2-1 to 2-3 in FIG. 1), and a control server 3. The network 5 is composed of, for example, networks 5-1, 5-2, and 5-3. The origin server 1, cache servers 2-1 to 2-3, control server 3, and clients 4-1 to 4-4 are connected via the network 5.

[0014] The origin server 1 is a server that holds multiple pieces of content. The origin server 1 is also called a distribution server. The content may be, for example, video, images, or any other type of data.

[0015] Each of the cache servers 2-1 to 2-3 is a server that temporarily caches content. Each of the cache servers 2-1 to 2-3 caches content distributed by the origin server 1. Then, in response to a request received from a client 4-1 to 4-4, the cache servers 2-1 to 2-3 distribute the cached content to the client 4-1 to 4-4 instead of the origin server 1. Specifically, each of the cache servers 2-1 to 2-3 determines whether or not it has cached first content requested by the client 4-1 to 4-4. If it has cached the first content, it reads the first content and distributes the read first content to the client 4-1 to 4-4. If the requested first content is not cached, the cache servers 2-1 to 2-3 obtain the first content from the origin server 1, distribute the obtained first content to the client, and cache the obtained first content.

[0016] The control server 3 is a server that controls the cache servers included in the information distribution system. In this embodiment, since the information distribution system includes cache servers 2-1 to 2-3, the control server 3 controls these cache servers 2-1 to 2-3. The control server 3 may function as, for example, a DNS server. The control server 3 functioning as a DNS server converts a URL received from one of the clients 4-1 to 4-4 into an address (IP address) corresponding to the cache server to be accessed among the cache servers 2-1 to 2-3, and returns the address (IP address) to the client. Alternatively, any server outside the control server 3 may function as a DNS server. Furthermore, the control server 3 may function as a load balancer for selecting a cache server that executes a content distribution service from the cache servers 2-1 to 2-3.

[0017] Clients 4-1 to 4-4 are client terminals that use content. The clients are, for example, a car (or an in-car device), a computer, a game console, or a smartphone (or a mobile phone). Each of clients 4-1 to 4-4 transmits a request specifying a certain content to one of cache servers 2-1 to 2-3 via network 5-1. Specifically, each of clients 4-1 to 4-4 transmits a request to a cache server specified by an address obtained from a DNS server.

[0018] Next, an example of the configuration of the cache server will be described. Here, an example of the configuration of the cache server 2-1 will be described, but the other cache servers 2-2 and 2-3 also have the same configuration as the cache server 2-1.

[0019] The cache server 2-1 includes a network interface controller (NIC) 21, a processor 22, a main memory 23, and a plurality of solid state drives (SSDs) 24-1 to 24-4. The NIC 21, the processor 22, the main memory 23, and the SSDs 24-1 to 24-4 are connected to one another via a bus 20.

[0020] The NIC 21 is an interface circuit that communicates with external clients (clients 4-1 to 4-4) and external servers (for example, the control server 3, the origin server 1, and other cache servers 2-2 to 2-3) via the network 5.

[0021] The processor 22 is a central processing unit (CPU). The processor 22 controls the overall operation of the cache server 2-1 by controlling each component of the cache server 2-1. The processor 22 executes software (host software) loaded into the main memory 23 from the SSDs 24-1 to 24-4 or other storage devices connected to the cache server 2-1. The host software includes, for example, an operating system, a file system, and an application program.

[0022] The main memory 23 is a volatile memory. The main memory 23 is, for example, a dynamic random access memory (DRAM). A part of the storage area of ​​the main memory 23 is used as a data buffer. The data buffer temporarily stores content to be written to the SSDs 24-1 to 24-4 or content read from the SSDs 24-1 to 24-4. Another storage area of ​​the main memory 23 is used, for example, to store a content management table 231. The content management table 231 is a table for managing each piece of content cached in the cache server 2-1. The content management table 231 holds management information corresponding to each piece of content stored in each of the multiple SSDs 24-1 to 24-4 in the cache server 2-1. The management information corresponding to a certain piece of content includes, for example, information for identifying the content, the size of the content, address information indicating the storage area where the content is stored, the predicted number of times the content is read, the requested data retention period for the content, and the requested remaining data retention period for the content.

[0023] The predicted number of reads of a certain content is a predicted value of the number of requests specifying this content as content to be distributed, and details thereof will be described later.

[0024] The requested data retention period for a certain content is the period for which the content is retained (cached) in the non-volatile memory 242. The requested data retention period for a certain content may be, for example, a data retention period specified by the distributor of the content or the origin server 1. Alternatively, the requested data retention period for a certain content may be a data retention period determined based on the capacity of the non-volatile memory 242, the amount of data written to the non-volatile memory 242 per predetermined period, a data replacement algorithm for determining content to be purged from the non-volatile memory 242, or the like.

[0025] The remaining data retention request period of a certain content is the remaining period for which this content will be retained (cached) in the nonvolatile memory 242. The remaining data retention request period of a certain content is the period obtained by subtracting the elapsed time since this content was written to the nonvolatile memory 242 from the data retention request period of this content.

[0026] When the requested data retention period for a certain piece of content is the requested data retention period specified by the content distributor or the origin server 1, the remaining requested data retention period for this content may be the period obtained by subtracting the elapsed time since this content was written to the non-volatile memory 242 from the requested data retention period specified by the content distributor or the origin server 1. Therefore, this remaining requested data retention period can also be called the remaining requested data retention period specified by the content distributor or the origin server 1.

[0027] Alternatively, if the requested data retention period of a certain content is determined based on the capacity of the nonvolatile memory 242, the amount of data written to the nonvolatile memory 242 per predetermined period, a data replacement algorithm, etc., the remaining requested data retention period of this content may be a period obtained by subtracting the elapsed time since this content was written to the nonvolatile memory 242 from the requested data retention period determined based on the capacity of the nonvolatile memory 242, the amount of data written to the nonvolatile memory 242 per predetermined period, a data replacement algorithm, etc. Therefore, this remaining requested data retention period can also be called the remaining requested data retention period determined based on the capacity of the nonvolatile memory 242, the amount of data written to the nonvolatile memory 242 per predetermined period, a data replacement algorithm, etc.

[0028] The data replacement algorithm may be, for example, a first-in, first-out (FIFO) method or a least recently used (LRU) method. In the FIFO method, for example, it is assumed that the capacity (user capacity) of the nonvolatile memory 242 is 10 TB and the amount of data written to the nonvolatile memory 242 per day is 1 TB. In a case where a certain content was written to the nonvolatile memory 242 nine days ago, the remaining data retention period for this content is one day.

[0029] The SSDs 24-1 to 24-4 are storage devices. The nonvolatile memory of each of the SSDs 24-1 to 24-4 is used as a cache for storing one or more contents. Note that, although FIG. 2 shows an example in which each cache server 2 includes multiple SSDs as storage devices, each cache server 2 may include only one SSD 23 as a storage device.

[0030] Next, an example of the configuration of a storage device will be described. Here, an example of the configuration of the SSD 24-1 will be described, but the other SSDs 24-2 to 24-4 also have the same configuration as the SSD 24-1.

[0031] The SSD 24-1 includes a controller 241 and a nonvolatile memory 242. The controller 241 is a control circuit that controls the nonvolatile memory 242. The controller 241 writes data to the nonvolatile memory 242 or reads data from the nonvolatile memory 242 based on a command received from the processor 22, for example.

[0032] An example of the nonvolatile memory 242 is, for example, a NAND flash memory. The nonvolatile memory 242 may be a two-dimensional flash memory or a three-dimensional flash memory. The nonvolatile memory 242 is a nonvolatile memory that has a finite data retention period and a finite number of rewrites. Here, the finite data retention period of the nonvolatile memory 242 and the finite number of rewrites of the nonvolatile memory 242 will be described.

[0033] The data retention period of the nonvolatile memory 242 is the period during which data written to the nonvolatile memory 242 can be retained in the nonvolatile memory 242. The data retention period of the nonvolatile memory 242 is also referred to as the data retention period. The data retention period of the nonvolatile memory 242 is determined based on the degree of wear of the nonvolatile memory 242, etc. As the degree of wear of the nonvolatile memory 242 increases, the data retention period of the nonvolatile memory 242 tends to shorten.

[0034] The number of times the nonvolatile memory 242 can be rewritten is the number of program / erase (P / E) cycles in the nonvolatile memory 242. Because the nonvolatile memory 242 wears out as the P / E cycles progress due to its characteristics, there is an upper limit to the number of times the nonvolatile memory 242 can be rewritten (the number of P / E cycles). Specifically, in the nonvolatile memory 242, a data erase operation is performed in units of blocks included in the nonvolatile memory 242, and a data write operation is performed in units of pages included in each block. Because each block wears out due to rewriting (data erase operation, data write operation, etc.) due to its characteristics, there is an upper limit to the number of times each block can be rewritten. The number of times each block can be rewritten is also referred to as the number of P / E cycles of the block.

[0035] The controller 241 includes an error correction circuit 2413. The error correction circuit 2413 adds an error correction code (ECC) to content to be written to the nonvolatile memory 242. The error correction circuit 2413 also performs error correction processing to detect and correct errors contained in the content read from the nonvolatile memory 242 by using the ECC added to the content. Content for which error correction processing has been successfully performed is transmitted to the processor 22 by the controller 241. If error correction processing has not been successfully performed, that is, if the read content contains error bits exceeding the number of error bits that can be corrected, the error correction circuit 2413 notifies the processor 22 that an error (read error) has occurred when reading this content.

[0036] Next, a description will be given of an example of the functional configuration of the processor 22. Fig. 2 is a block diagram showing an example of the functional configuration of the processor 22 according to the embodiment.

[0037] The processor 22 includes a content acquisition unit 2201, a content writing unit 2202, a content reading unit 2203, a content distribution unit 2204, a read error detection unit 2205, a content recovery unit 2206, an error correction processing unit 2207, a delivery capability calculation unit 2208, a recovery judgment unit 2209, a delivery capability transmission / reception unit 2210, a recovery instruction receiving unit 2211, an error notification unit 2212, and a recovery method selection unit 2213. Some or all of the content acquisition unit 2201, content writing unit 2202, content reading unit 2203, content distribution unit 2204, read error detection unit 2205, content recovery unit 2206, error correction processing unit 2207, delivery capability calculation unit 2208, recovery judgment unit 2209, delivery capability transmission / reception unit 2210, recovery instruction receiving unit 2211, error notification unit 2212, and recovery method selection unit 2213 may be realized by dedicated hardware within cache server 2-1.

[0038] The content acquisition unit 2201 executes a process of acquiring content from another server. The other servers include, for example, the origin server 1, and the cache server 2-2 other than the cache server 2-1, and the cache server 2-3. When a first content is requested by one of the clients 4-1 to 4-4 and the first content is not stored in the SSDs 24-1 to 24-4, the content acquisition unit 2201 executes a process of acquiring the first content from the origin server 1. Furthermore, when an error (read error) occurs in reading the first content from the nonvolatile memory 242, the content acquisition unit 2201 executes a process of acquiring the first content from another server (the origin server 1 or another cache server).

[0039] The content writing unit 2202 executes a write process to write content to SSDs 24-1 to 24-4. In the write process, the content writing unit 2202 transmits a write command for writing the content to one of the SSDs 24-1 to 24-4. For example, when the cache server 2-1 acquires new content, the content writing unit 2202 identifies one of the SSDs 24-1 to 24-4 to which the content should be written, and issues a write command for writing the content to the identified SSD.

[0040] The content reading unit 2203 executes a read process to read the content to be read from one of the SSDs 24-1 to 24-4. The content reading unit 2203 identifies one of the SSDs 24-1 to 24-4 that stores the content to be read, and transmits a read command for reading the content to be read to the identified SSD. For example, when a first content is requested by one of the clients 4-1 to 4-4 and the first content is stored in SSD 24-1, the content reading unit 2203 executes a process to read the first content from SSD 24-1. At this time, the content reading unit 2203 transmits a read command specifying the first content to SSD 24-1.

[0041] The content distribution unit 2204 executes a distribution process for distributing content. For example, the content distribution unit 2204 distributes content requested by one of the clients 4-1 to 4-4 to this client via the network 5-1.

[0042] The read error detection unit 2205 receives a notification indicating a read error from any of the SSDs 24-1 to 24-4 that issued the read command, and thereby detects that an error (read error) has occurred in reading the content from the nonvolatile memory 242 of this SSD.

[0043] The content restoration unit 2206 executes restoration processing to restore the content in which a read error has occurred. Here, the restoration processing of the content in which a read error has occurred is processing to restore the content to a state in which the content can be normally read from the non-volatile memory 242. In the restoration processing, the content restoration unit 2206 causes the content acquisition unit 2201 to execute processing to acquire the content from another server (the origin server 1 or another cache server). Alternatively, in the restoration processing, the content restoration unit 2206 causes the error correction processing unit 2207 to execute error correction processing to restore the content in which a read error has occurred.

[0044] The error correction processor 2207 executes error correction processing. The error correction processing executed by the error correction processor 2207 has a higher error correction capability than at least the error correction processing executed by the error correction circuit 2413 in each of the controllers 241 of the SSDs 24-1 to 24-4. For example, the error correction processor 2207 recovers content in which a read error has occurred by executing an error correction processing different from the error correction processing executed by each of the controllers 241 of the SSDs 24-1 to 24-4, using data read from the SSDs 24-1 to 24-4. Details of the error correction processing executed by the error correction processor 2207 will be described later with reference to FIG. 5.

[0045] The delivery capability calculation unit 2208 calculates the delivery capability of the cache server 2-1. The delivery capability of the cache server 2-1 is the capability of the cache server 2-1 to deliver the deliverable content stored in the nonvolatile memory 242 of each of the SSDs 24-1 to 24-4. In other words, the delivery capability of the cache server 2-1 is a value indicating the capability of the cache server 2-1 to directly deliver content to any client 4 using the deliverable content stored in the nonvolatile memory 242. If a read error occurs for a certain content, the content will not be deliverable content until it is recovered. For this reason, when calculating the delivery capability of the cache server 2-1 immediately after a read error occurs for a certain content, the content for which the read error occurred is excluded. The delivery capacity of the cache server 2-1 indicates, for example, (A) the total number of contents that the cache server 2-1 is expected to deliver to any client 4 per unit time using the distributable contents stored in the nonvolatile memory 242, (B) the total data size of the contents that the cache server 2-1 is expected to deliver per unit time using the distributable contents stored in the nonvolatile memory 242, or (C) the total number of contents that the cache server 2-1 is expected to deliver to any client 4 using the distributable contents stored in the nonvolatile memory 242 until the data retention request period of each distributable content expires. The delivery capacity of the cache server 2-1 is calculated, for example, when any of the following events (1) to (3) occurs: (1) When cache server 2-1 obtains new content from origin server 1. (2) When the cache server 2-1 detects an error (read error) occurring when reading content from the non-volatile memory 242. (3) When the cache server 2-1 recovers the content in which the read error occurred and writes the recovered content to the nonvolatile memory 242.

[0046] The delivery capability calculation unit 2208 calculates the delivery capability of the cache server 2-1 based at least on the predicted read count for each of the deliverable contents stored in the non-volatile memory 242. The predicted read count differs for each of the deliverable contents. For example, the predicted read count (predicted number of requests) for highly popular content may be set to a relatively large value, and the predicted read count (predicted number of requests) for unpopular content may be set to a relatively low value. The predicted read count for each content may be the predicted read count per unit time (e.g., the predicted read count per second), or may be the total predicted read count for the data retention request period (or remaining data retention request period) of each content.

[0047] The predicted number of reads per unit time of a certain content may be a value designated by the origin server 1 or the distributor of this content.

[0048] Alternatively, the processor 22 of the cache server 2-1 may measure the number of requests for each content. In this case, the predicted number of reads per unit time for a certain content may be the most recent number of requests per unit time for this content.

[0049] The delivery capability calculation unit 2208 may, for example, calculate the sum of the predicted read counts of each of the distributable contents stored in the nonvolatile memory 242 as the delivery capability of the cache server 2-1. In this case, the predicted read count of each of the distributable contents may be the predicted read count per unit time, or may be the total predicted read count during the data retention request period (or the remaining data retention request period). In the case where the delivery capability calculation unit 2208 calculates the delivery capability of the cache server 2-1 using the predicted read count per unit time, the calculated delivery capability of the cache server 2-1 indicates the above-mentioned (A), that is, the total number of contents that the cache server 2-1 is expected to deliver to any client 4 per unit time using the distributable contents stored in the nonvolatile memory 242.

[0050] Furthermore, the delivery capability calculation unit 2208 may calculate, as the delivery capability of the cache server 2-1, the sum of the products of the predicted read counts of each piece of distributable content stored in the nonvolatile memory 242 and the data size of each piece of distributable content. In this case, the predicted read count of each piece of distributable content may be the predicted read count per unit time, or may be the total predicted read count for the data retention request period (or the remaining data retention request period). In a case where the delivery capability calculation unit 2208 calculates the delivery capability of the cache server 2-1 using the predicted read count per unit time, the calculated delivery capability of the cache server 2-1 indicates the above-mentioned (B), that is, the total data size of the content that the cache server 2-1 is expected to deliver per unit time using the distributable content stored in the nonvolatile memory 242.

[0051] Alternatively, the delivery capability calculation unit 2208 may calculate, as the delivery capability of the cache server 2-1, the sum of the products of the predicted read counts of each piece of distributable content stored in the nonvolatile memory 242 and the remaining data retention request periods corresponding to each piece of distributable content. In this case, the predicted read count of each piece of distributable content is the predicted read count per unit time. Therefore, in this case, the delivery capability of the cache server 2-1 calculated by the delivery capability calculation unit 2208 indicates the total number of pieces of content that the cache server 2-1 is expected to deliver to any client 4 using the distributable content stored in the nonvolatile memory 242 until the data retention request periods for each piece of distributable content expire.

[0052] The restoration determination unit 2209 determines whether or not to restore the content in which the read error occurred The restoration determination unit 2209 compares the delivery capability calculated by the delivery capability calculation unit 2208 with a first reference value.

[0053] The first reference value is a threshold value used to evaluate the delivery capability of the cache server 2-1. The first reference value may be determined based on the delivery capability required of the cache server 2-1 to improve the content delivery speed in the information delivery system. For example, in a case where the calculated delivery capability of the cache server 2-1 indicates the above-mentioned (A), i.e., the total number of pieces of content that the cache server 2-1 is expected to deliver to any client 4 per unit time, the first reference value may be determined based on a target value required of the cache server 2-1 for the total number of pieces of content to be delivered per unit time. In addition, in a case where the calculated delivery capability of the cache server 2-1 indicates the above-mentioned (B), i.e., the total data size of the pieces of content that the cache server 2-1 is expected to deliver per unit time, the first reference value may be determined based on a target value required of the cache server 2-1 for the total data size of the pieces of content to be delivered per unit time. In addition, in the case where the calculated delivery capacity of the cache server 2-1 indicates the above-mentioned (C), i.e., the total number of contents that the cache server 2-1 is expected to deliver to any client 4 until the data retention request period of each deliverable content expires, the first reference value may be determined based on the target value required of the cache server 2-1 for the total number of contents to be delivered until the data retention request period of each deliverable content expires.

[0054] If the calculated delivery capability exceeds the first reference value, the recovery determination unit 2209 determines that recovery of the content in which the read error occurred is unnecessary. This is because it can be assumed that the cache server 2-1 still has sufficient delivery capability even if the content in which the read error occurred is not recovered. The cache server 2-1 may transfer the request specifying the content in which the read error occurred to another cache server, or the control server 3 may determine, on behalf of the cache server 2-1, another cache server to deliver the requested content (i.e., the content in which the read error occurred) and instruct the determined cache server to deliver the requested content.

[0055] On the other hand, if the calculated delivery capability does not exceed the first reference value, the recovery determination unit 2209 determines that the content in which the read error occurred needs to be recovered, because it can be estimated that the cache server 2-1 does not have sufficient delivery capability remaining.

[0056] Furthermore, the recovery determination unit 2209 may determine whether or not to recover content for which a read error has occurred based not only on the distribution capacity of the cache server 2-1 but also on both the distribution capacity of the cache server 2-1 and the degree of wear of the non-volatile memory 242 in the cache server 2-1.

[0057] More specifically, if the calculated delivery capability of the cache server 2-1 is equal to or less than the first reference value, the recovery determination unit 2209 further compares the wear level of the nonvolatile memory 242 in the cache server 2-1 with a second reference value. The wear level of the nonvolatile memory 242 corresponds to, for example, the number of program / erase cycles in the nonvolatile memory 242. If the recovery determination unit 2209 determines that the wear level exceeds the second reference value, it determines that recovery of the content in which the read error occurred is unnecessary. This prevents the wear level of the nonvolatile memory 242 from becoming too high. On the other hand, if the wear level is equal to or less than the second reference value, the recovery determination unit 2209 determines that recovery of the content in which the read error occurred is necessary.

[0058] The second reference value is a threshold value used to evaluate the degree of wear of the nonvolatile memory 242. In a case where the degree of wear of the nonvolatile memory 242 is determined based on the number of P / E cycles (number of rewrites) of the nonvolatile memory 242, the second reference value may be determined based on a value obtained by subtracting a predetermined number from the total number of P / E cycles allowed in the nonvolatile memory 242, or a value obtained by multiplying the total number of P / E cycles allowed in the nonvolatile memory 242 by a predetermined coefficient that is equal to or less than 1. In a case where the degree of wear of the nonvolatile memory 242 is determined based on a ratio of the number of P / E cycles of the nonvolatile memory 242 to the total number of P / E cycles allowed in the nonvolatile memory 242, the second reference value may be determined based on a predetermined percentage that is less than 100 percent. Furthermore, in a case where the degree of wear of the nonvolatile memory 242 is determined based on the total amount of data written to the nonvolatile memory 242, the second reference value may be determined based on a value obtained by subtracting a predetermined number from the total amount of data writable to the nonvolatile memory 242, or a value obtained by multiplying the total amount of data writable to the nonvolatile memory 242 by a predetermined coefficient that is equal to or less than 1. Furthermore, in a case where the degree of wear of the nonvolatile memory 242 is determined based on the ratio of the total amount of data written to the nonvolatile memory 242 to the total amount of data writable to the nonvolatile memory 242, the second reference value may be determined based on a predetermined percentage that is less than 100 percent.

[0059] Furthermore, instead of comparing the delivery capability of cache server 2-1 with the first reference value, the recovery determination unit 2209 may compare the delivery capability of the entire plurality of cache servers 2, including cache server 2-1 and one or more other cache servers (here, cache servers 2-2 and 2-3), with a predetermined reference value. The delivery capability of the entire plurality of cache servers 2 can be calculated based on the delivery capabilities of cache server 2-2 and cache server 2-3 received by cache server 2-1 from each of cache server 2-2 and cache server 2-3, and the delivery capability of cache server 2-1.

[0060] If the calculated overall delivery capacity of the multiple cache servers 2 exceeds a predetermined reference value, the recovery determination unit 2209 determines that recovery of the content in which the read error occurred is unnecessary. This is because it can be estimated that sufficient delivery capacity remains across the multiple cache servers 2 even if the content in which the read error occurred is not recovered. The cache server 2-1 may forward the request specifying the content in which the read error occurred to another cache server, or the control server 3 may determine, on behalf of the cache server 2-1, another cache server to deliver the requested content (i.e., the content in which the read error occurred) and instruct the determined cache server to deliver the requested content.

[0061] On the other hand, if the calculated delivery capacity of the entire plurality of cache servers 2 does not exceed the predetermined reference value, the recovery determination unit 2209 determines that the content in which the read error occurred needs to be recovered, because it can be estimated that the entire plurality of cache servers 2 does not have sufficient delivery capacity.

[0062] Furthermore, the recovery determination unit 2209 may determine whether or not to recover content for which a read error has occurred based not only on the overall delivery capacity of the plurality of cache servers 2, but also on both the overall delivery capacity of the plurality of cache servers 2 and the degree of wear of the non-volatile memory 242 in cache server 2-1.

[0063] More specifically, if the calculated overall delivery capability of the multiple cache servers 2 is equal to or less than a predetermined reference value, the recovery determination unit 2209 further compares the wear level of the nonvolatile memory 242 in cache server 2-1 with a second reference value. If it is determined that the wear level exceeds the second reference value, the recovery determination unit 2209 determines that recovery of the content in which the read error occurred is unnecessary. This prevents the wear level of the nonvolatile memory 242 from becoming too high. On the other hand, if the wear level is equal to or less than the second reference value, the recovery determination unit 2209 determines that recovery of the content in which the read error occurred is necessary.

[0064] Furthermore, the restoration determination unit 2209 may determine, based on a restoration instruction received from the control server 3, whether or not to restore the content in which a read error occurred.

[0065] The delivery capability transmission / reception unit 2210 transmits the calculated delivery capability of the cache server 2-1 to each of the other cache servers 2-2 and 2-3 directly or via the control server 3, and receives the delivery capabilities of each of the other cache servers 2-2 and 2-3 from each of the other cache servers 2-2 and 2-3 directly or via the control server 3. The configuration in which the cache servers 2-1, 2-2, and 2-3 directly exchange their delivery capabilities enables the cache servers 2-1, 2-2, and 2-3 to share their delivery capabilities with each other, even in an information delivery system that does not include a control server 3. Of course, in an information delivery system that includes a control server 3, the delivery capability transmission / reception unit 2210 may notify only the control server 3 of the delivery capability of the cache server 2-1, and the control server 3 may notify each of the other cache servers 2-2 and 2-3 of the delivery capability of the cache server 2-1. In an information distribution system in which the control server 3 exists, the distribution capability transmitting / receiving unit 2210 may receive from the control server 3 the distribution capabilities of each of the other cache servers 2-2 and 2-3.

[0066] It is also possible to use a configuration in which the control server 3 calculates the overall delivery capacity of multiple cache servers 2, including cache servers 2-1, 2-2, and 2-3, and notifies each of the cache servers 2-1, 2-2, and 2-3 of the calculated overall delivery capacity of the multiple cache servers 2.

[0067] The recovery instruction receiving unit 2211 receives a recovery instruction from the control server 3. The recovery instruction includes information instructing the recovery of specific content. The specific content specified by the recovery instruction is the content to be recovered. The content to be recovered is, for example, content in which a read error has occurred. The content in which a read error has occurred is notified to the control server 3 by the error notifying unit 2212, which will be described later. Furthermore, the content to be recovered may be content other than the content in which a read error has occurred.

[0068] The error notification unit 2212 notifies the control server 3 that a content read error has occurred and information identifying the content in which the read error has occurred. Furthermore, in addition to notifying the control server 3 that a content read error has occurred and information identifying the content in which the read error has occurred, the error notification unit 2212 may also notify the control server 3 of either or both of information indicating details of the read error that has occurred and information indicating the degree of wear of the nonvolatile memory 242.

[0069] The recovery method selection unit 2213 selects a recovery method to be executed by the content recovery unit 2206. In the recovery process for recovering content in which a read error has occurred, the recovery method selection unit 2213 selects either a first recovery process in which the content in which the read error has occurred is acquired from another server via the network 5, or a second recovery process in which the content in which the read error has occurred is restored by error correction. The other server is, for example, the origin server 1. Note that one or both of the other cache servers 2-2 and 2-3 may cache the same content as the content in which the read error has occurred. In this case, the recovery method selection unit 2213 may select, as the first recovery process, a recovery process in which the same content as the content in which the read error has occurred is acquired from one of the cache servers 2-2 and 2-3, specifically, from another cache server that caches the same content as the content in which the read error has occurred.

[0070] The content recovery unit 2206 recovers the content in which the read error occurred by executing the recovery process selected by the recovery method selection unit 2213.

[0071] Next, the detailed configuration of the storage device will be described. Fig. 3 is a block diagram showing an example of the configuration of a storage device of a cache server according to an embodiment. Fig. 3 shows a detailed example of the configuration of SSD 24-1 of cache server 2-1, but the other SSDs 24-2 to 24-4 of cache server 2-1 also have the same configuration as SSD 24-1. Furthermore, each SSD included in each of the other cache servers 2-2 and 2-3 also has the same configuration as SSD 24-1.

[0072] The SSD 24 - 1 includes a controller 241 and a nonvolatile memory 242 .

[0073] The controller 241 is a memory controller. The controller 241 is, for example, a control circuit such as a System-on-a-Chip (SoC). The controller 241 is electrically connected to the nonvolatile memory 242. The controller 241 processes each I / O command received from the processor 22. These I / O commands include a write command for writing data to the nonvolatile memory 242 of the SSD 24-1 and a read command for reading data from the nonvolatile memory 242. From the perspective of the SSD 24-1, the processor 22 is an external host (host processor). When the controller 241 receives a write command from the processor 22, it writes data to the nonvolatile memory 242. When the controller 241 receives a read command from the processor 22, it reads data from the nonvolatile memory 242. A physical interface connecting the controller 241 and the nonvolatile memory 242 may be, for example, a Toggle NAND flash interface or an Open NAND flash interface (ONFI). Each function of the controller 241 can be realized by dedicated hardware, a processor executing a program, or a combination of these.

[0074] The nonvolatile memory 242 is a nonvolatile semiconductor memory. The nonvolatile memory 242 includes, for example, a plurality of nonvolatile memory dies. The nonvolatile memory dies are also referred to as nonvolatile memory chips. Each of the plurality of nonvolatile memory dies is, for example, a NAND flash memory die. Hereinafter, the nonvolatile memory die will also be referred to as a NAND flash die or simply as a die.

[0075] Next, a description will be given of the internal configuration of the controller 241. The controller 241 includes, for example, a host interface (host I / F) 2411, a CPU 2412, an error correction circuit 2413, and a CPU 2414. These components are connected to each other via an internal bus 2410.

[0076] The host interface 2411 is a communication interface circuit that executes communication with the processor 22 (host processor). The host interface 2411 is realized by, for example, a PCIe controller.

[0077] The CPU 2412 is a processor that controls each component of the controller 241. The CPU 2412 performs various processes by executing a control program (firmware) stored in the nonvolatile memory 242 or a ROM (not shown).

[0078] The error correction circuit 2413 performs an encoding process when data is written to the nonvolatile memory 242. In the encoding process, the error correction circuit 2413 adds an error correction code (ECC) as a redundant code to the data to be written to the nonvolatile memory 242. When data is read from the nonvolatile memory 242, the error correction circuit 2413 performs a decoding process. In the decoding process, the error correction circuit 2413 performs error correction on the data read from the nonvolatile memory 242 using the ECC added to the data. If the number of error bits included in this data is greater than the number of error bits that can be corrected by the correction circuit 2413, the error correction circuit 2413 notifies the processor 22 that an error has occurred in reading this data. This error is called a read error.

[0079] The NAND interface 2414 is a circuit that controls the nonvolatile memory 242. The NAND interface 2414 is electrically connected to multiple NAND flash dies included in the nonvolatile memory 242.

[0080] Next, an example of the internal configuration of the nonvolatile memory 242 will be described.

[0081] FIG. 3 illustrates an example in which the nonvolatile memory 242 includes 36 NAND flash dies #1 to #36. Each NAND flash die can operate independently. Therefore, the NAND flash dies function as a unit capable of operating in parallel. The NAND interface 2414 includes, for example, NAND controllers 24141-1, 24141-2, ..., 24141-18. The NAND controllers 24141-1, 24141-2, ..., 24141-18 are connected to channels ch1, ch2, ..., ch18, respectively. Each of the NAND controllers 24141-1, 24141-2, ..., 24141-18 is connected to one or more NAND flash dies via a corresponding channel. FIG. 3 illustrates an example in which two NAND flash dies are connected to each of channels ch1, ch2, ..., ch18. In this case, the NAND controller 24141-1 is connected to the NAND flash dies #1 and #19 via channel ch1. The NAND controller 24141-2 is connected to the NAND flash dies #2 and #20 via channel ch2. The NAND flash dies #1, #2, ..., #18 are treated as bank #1 by the controller 241. The NAND flash dies #19, #20, ..., #36 are treated as bank #2 by the controller 241. A bank is a unit in which multiple NAND flash dies operate in parallel through interleaving operation.

[0082] Next, a configuration example of a NAND flash die will be described. Fig. 4 is a block diagram showing a configuration example of a NAND flash die according to an embodiment. Fig. 4 shows a configuration example of NAND flash die #1, but the other NAND flash dies also have a configuration similar to that of NAND flash die #1.

[0083] NAND flash die #1 includes multiple blocks (BLK1, BLK2, ..., BLKx). Each block BLK is the smallest unit of a data erase operation. Each of the multiple blocks includes multiple pages (P1, P2, ..., Py). Each page P is the unit of a data write operation and a data read operation. A page includes a set of memory cells connected to the same word line. A page is also called a physical page.

[0084] Next, the error correction process in the cache server 2-1 will be described. Fig. 5 is a diagram showing an example of the error correction process executed in the cache server 2-1 according to the embodiment.

[0085] In FIG. 5, content C1 is stored in SSD 24-1, content C2 is stored in SSD 24-2, content C3 is stored in SSD 24-3, and redundant code is stored in SSD 24-4.

[0086] Content C1 includes data d1, data d2, data d3, and data d4. Content C2 includes data d11, data d12, data d13, and data d14. Content C3 includes data d21, data d22, data d23, and data d24. The redundancy code includes parity p1, parity p2, parity p3, and parity p4.

[0087] Data d1, data d11, data d21, and parity p1 form codeword CW1. Data d2, data d12, data d22, and parity p2 form codeword CW2. Data d3, data d13, data d23, and parity p3 form codeword CW3. Data d4, data d14, data d24, and parity p4 form codeword CW4.

[0088] The processor 22 may generate redundant codes when writing the content C1, the content C2, and the content C3. The processor 22 may then write the content C1, the content C2, the content C3, and the redundant codes to each SSD in parallel. For example, the processor 22 may write the codeword CW1 by executing, in parallel, the following processes: sending a write command to SSD 24-1 to write data d1; sending a write command to SSD 24-2 to write data d11; sending a write command to SSD 24-3 to write data d21; and sending a write command to SSD 24-4 to write parity P1. In a similar manner, the processor 22 may write the codewords CW2 to CW4.

[0089] Here, it is assumed that an error (read error) occurs when SSD 24-1 reads content C1, and the error correction processing unit 2207 of the processor 22 executes error correction processing on content C1. Here, it is assumed that the number of error bits included in data d1 of content C1 exceeds the number of error bits that the controller 241 of SSD 24-1 can correct.

[0090] First, the processor 22 reads the components of the codeword CW1 including the data d1. Specifically, the processor 22 transmits a read command to SSD 24-2 to read the data d11, a read command to SSD 24-3 to read the data d21, and a read command to SSD 24-4 to read the parity p1. Using the data d11, d21, and parity p1 thus read, the error correction unit 2207 of the processor 22 recalculates the correct data d1. In this way, errors are corrected in the data (here, data d1) containing many error bits among the content in which a read error occurred. Then, the error correction unit 2207 restores the content C1 using the recalculated data d1 and the data d2 to d4 normally read from SSD 24-1.

[0091] In this way, the code word CW containing multiple pieces of data and parity, which are written in a distributed manner to SSDs 24-1 to 24-4 included in cache server 2-1, is used to correct errors contained in the content in which a read error has occurred, thereby making it possible to recover the content in which a read error has occurred.

[0092] Next, a content distribution process executed in the cache server 2-1 will be described. Fig. 6 is a flowchart showing the procedure of the content distribution process executed in the cache server 2-1 according to this embodiment.

[0093] First, the cache server 2-1 receives a request from a client (step S101).

[0094] The cache server 2-1 determines whether or not a cache hit has occurred (step S102). In this case, the cache server 2-1 refers to the content management table 231 and determines whether or not the content specified by the request received in S101 is stored in the nonvolatile memory 242 of any of the SSDs 24-1 to 24-4 in the cache server 2-1.

[0095] If there is a cache hit (Yes in S102), that is, if the content specified by the request is stored in the nonvolatile memory 242 of any of SSDs 24-1 to 24-4, the cache server 2-1 reads this content from the SSD including the nonvolatile memory 242 in which this content is stored (step S103).

[0096] The cache server 2-1 distributes the content read out in S103 to the client (step S104).

[0097] Also, if there is a cache miss (No in S102), that is, if the content specified by the request is not stored in any of the non-volatile memories 242 of SSDs 24-1 to 24-4, cache server 2-1 obtains the content specified by the request from origin server 1 (step S105).

[0098] The cache server 2-1 distributes the content acquired in S105 to the client (step S106).

[0099] The cache server 2-1 writes the content acquired in S105 to the nonvolatile memory 242 included in the write destination SSD selected from the SSDs 24-1 to 24-4 (step S107).

[0100] In this way, the cache server 2-1 executes the content distribution process to distribute requested content to the client in response to a request received from the client. At this time, if the requested content is stored in the storage device (here, SSDs 24-1 to 24-4) of the cache server 2-1, the cache server 2-1 reads the content from the storage device and distributes it to the client. On the other hand, if the requested content is not stored in the storage device of the cache server 2-1, the cache server 2-1 obtains the requested content from the origin server 1, distributes the obtained content to the client, and further writes the obtained content to the storage device.

[0101] Next, the error detection process will be described with reference to Fig. 7. Fig. 7 is a diagram for explaining the error detection process executed in the information distribution system including the cache server 2-1 according to the embodiment.

[0102] 1. First, one of the clients 4-1 to 4-4 transmits a request for content to the cache server 2-1. The processor 22 of the cache server 2-1 receives the request via the NIC 21.

[0103] 2. The processor 22 sends a read request to read the content specified by the received request to, for example, the SSD 24-1.

[0104] 3-4. The controller 241 of the SSD 24-1 that has received the read request reads the content from the nonvolatile memory 242.

[0105] 5. The error correction circuit 2413 of the controller 241 performs error correction processing using the ECC added to the content read from the nonvolatile memory 242. If the number of error bits contained in the read content exceeds the number of error bits that can be corrected by the error correction circuit 2413, the error correction processing fails.

[0106] 6. If the error correction process fails, the error correction circuit 2413 notifies the processor 22 of the read error. By receiving a notification indicating the read error from the controller 241, the processor 22 detects that a read error has occurred in reading this content from the non-volatile memory 242.

[0107] Next, the content recovery process will be described. Fig. 8 is a diagram for explaining the content recovery process executed in an information distribution system including a cache server according to an embodiment. Here, it is assumed that a read error occurs in SSD 24-1 for a certain content, and the content is recovered by obtaining the content from the origin server 1.

[0108] First, the cache server 2-1 obtains from the origin server 1 the content for which a read error has occurred.

[0109] The acquired content is temporarily stored in the main memory 23.

[0110] The content stored in the main memory 23 is then written to the SSD 24-1. At this time, the processor 22 transmits a write command to the SSD 24-1 requesting that the content be written.

[0111] Next, the error notification process will be described. Fig. 9 is a diagram for explaining the error notification process executed in an information distribution system including a cache server 2-1 according to an embodiment. Here, it is assumed that a read error occurs in SSD 24-1 in cache server 2-1 when reading a certain content.

[0112] 1. When the read error detection unit 2205 of the processor 22 detects a read error in a certain content, the processor 22 notifies the control server 3 of the error. By notifying the error, the processor 22 notifies the control server 3 of the occurrence of the read error and the content in which the read error occurred.

[0113] Next, the restoration instruction transmission process will be described with reference to Fig. 10. Fig. 10 is a diagram for explaining the restoration instruction transmission process executed in the information distribution system including the cache server 2-1 according to the embodiment.

[0114] 1. The control server 3 sends a recovery instruction to the cache server 2-1. The recovery instruction may include information specifying a specific content. The cache server 2-1 stores the received recovery instruction in the main memory 23. Based on the recovery instruction stored in the main memory 23, the cache server 2-1 can determine whether or not to recover the content in which a read error occurred.

[0115] Next, the delivery capability of the cache server 2-1 will be described. Fig. 11 is a diagram showing a first example of the delivery capability of the cache server 2-1 according to the embodiment.

[0116] Here, it is assumed that SSDs 24-1 to 24-4 in cache server 2-1 store content A, content B, content C, content D, content E, and content F. FIG. 11 shows the predicted number of reads for each content and the distribution capacity of cache server 2-1. The predicted number of reads for each content may be either the predicted number of reads per unit time or the total predicted number of reads in the data retention request period (or the remaining data retention request period), but FIG. 11 assumes that the predicted number of reads per unit time is the predicted number of reads per unit time. The predicted number of reads per unit time for a certain content is the predicted number of times that that content will be requested by a client per unit time (for example, one second). In the following, it is assumed that the delivery capacity of the cache server 2-1 is calculated based on the predicted read count of each piece of content stored in the non-volatile memory 242 of SSDs 24-1 to 24-4. However, the delivery capacity of the cache server 2-1 may be calculated not only based on the predicted read count of each piece of content, but also based on the predicted read count of each piece of content and the required remaining data retention period for each piece of content, or based on the predicted read count of each piece of content and the size of each piece of content, etc.

[0117] The predicted read count for content C1 is 30 times / second. The predicted read count for content C2 is 50 times / second. The predicted read count for content C3 is 20 times / second. The predicted read count for content C4 is 30 times / second. The predicted read count for content C5 is 45 times / second. The predicted read count for content C6 is 25 times / second.

[0118] At this time, the delivery capability of the cache server 2-1 is A1. The delivery capability A1 is calculated based on, for example, the total predicted number of reads of the contents C1 to C6.

[0119] Here, it is assumed that an error occurs when reading the content C4 from the nonvolatile memory 242. Fig. 12 is a diagram showing a second example of the delivery capability of the cache server 2-1 according to the embodiment.

[0120] Because an error occurred when reading content C4, content C4 becomes content that cannot be delivered from cache server 2-1. Therefore, when calculating the delivery capacity of cache server 2-1, delivery capacity calculation unit 2208 of processor 22 calculates the delivery capacity based on information on contents C1 to C3 and contents C5 to C6 excluding content C4. Here, the calculated delivery capacity of cache server 2-1 is A2, which is a smaller value than A1. In other words, because content C4 has become content that cannot be delivered, the delivery capacity of cache server 2-1 decreases.

[0121] Since the predicted read count of each content affects the delivery capability of the cache server 2-1, if a read error occurs not with content C4 but with content (e.g., content C2) with a higher predicted read count than content C4, the delivery capability of the cache server 2-1 will decrease to a value even smaller than A2. Conversely, if a read error occurs not with content C4 but with content (e.g., content C3) with a lower predicted read count than content C4, the delivery capability of the cache server 2-1 will be a value larger than A2. However, this delivery capability will be a value smaller than A1.

[0122] Next, a first example of content restoration processing will be described. Fig. 13 is a flowchart showing the procedure of the first example of content restoration processing executed in the cache server 2-1 according to the embodiment. The following mainly describes a case where the cache server 2-1 includes only an SSD 24-1 as a storage device.

[0123] When content (hereinafter referred to as content to be distributed) specified by a request from any one of the clients 4-1 to 4-4 is stored in the nonvolatile memory 242 of the SDD 24-1, the processor 22 of the cache server 2-1 transmits a read command for reading the content to be distributed to the SDD 24-1, thereby executing a read process for reading the content to be distributed from the nonvolatile memory 242. If an error (read error) occurs when reading the content to be distributed from the nonvolatile memory 242, the controller 241 notifies the processor 22 of the read error.

[0124] In response to receiving a read error notification from the controller 241, the processor 22 detects that a read error has occurred in the content to be distributed (step S201).

[0125] The processor 22 calculates the delivery capability of the cache server 2-1 by taking into consideration the read error detected in S201 (step S202). That is, the processor 22 calculates the delivery capability of the cache server 2-1 by treating the content to be delivered that could not be read from the nonvolatile memory 242 due to the occurrence of the read error as content that cannot be delivered.

[0126] The processor 22 determines whether the delivery capability of the cache server 2-1 calculated in S202 exceeds a first reference value (step S203).

[0127] If the delivery capability of the cache server 2-1 exceeds the first reference value (Yes in S203), the processor 22 does not restore the content to be delivered, and ends the content restoration process.

[0128] If the delivery capability of the cache server 2-1 does not exceed the first reference value (No in S203), the processor 22 recovers the delivery target content that could not be read from the non-volatile memory 242 due to the occurrence of the read error (step S204). In this case, the processor 22 may recover the delivery target content for which the read error occurred by obtaining the delivery target content from the origin server 1 or another cache server 2 (cache server 2-2 or cache server 2-3) via the network 5. Alternatively, in a case where the cache server 2-1 includes multiple SSDs (SSDs 24-1 to 24-4), the processor 22 may use data read from these SSDs 24-1 to 24-4 included in the cache server 2-1 to perform an error correction process (for example, the error correction process described in FIG. 5) different from the error correction process executed by the controller 241, thereby recovering the delivery target content for which the read error occurred.

[0129] The processor 22 distributes the distribution target content restored in S204 to the client 4 that requested the distribution target content via the network 5 (step S205).

[0130] The processor 22 writes the content to be distributed that was restored in S204 to the nonvolatile memory 242 of the SSD 24-1 (step S206).

[0131] The processor 22 checks whether the content to be distributed written in S206 can be correctly read from the nonvolatile memory 242 (step S207). That is, the processor 22 executes a process for reading the content to be distributed from the nonvolatile memory 242, thereby determining (confirming) whether the content to be distributed can be correctly read from the nonvolatile memory 242.

[0132] If the processor 22 confirms in S207 that the delivery target content can be correctly read, it treats the restored delivery target content as deliverable content and recalculates the delivery capability of the cache server 2-1 (step S208). In this case, the delivery capability calculated in S208 is the delivery capability of the cache server 2-1 after the delivery target content is restored. On the other hand, if the processor 22 cannot confirm in S207 that the delivery target content can be correctly read, that is, if it is determined that the delivery target content cannot be correctly read, the processor 22 may execute the process of S206 again to rewrite the delivery target content to the non-volatile memory 242. After rewriting the delivery target content to the non-volatile memory 242, the processor 22 may execute the determination process of S207 again. Then, if it is determined that the delivery target content rewritten to the non-volatile memory 242 can be normally read from the non-volatile memory 242, the processor 22 treats the restored delivery target content as deliverable content and recalculates the delivery capability of the cache server 2-1 (step S208). Alternatively, if the processor 22 is unable to confirm in S207 that it is possible to correctly read the content to be distributed, it may use the distribution capacity calculated in S202 as the distribution capacity of the cache server 2-1 instead of rewriting the content to be distributed to the non-volatile memory 242.

[0133] In this way, when a read error occurs while reading a certain content item from the nonvolatile memory 242, the cache server 2-1 treats the content item as undeliverable and calculates its delivery capability. Based on the calculated delivery capability, the cache server 2-1 determines whether to restore the content item for which the read error occurred. In other words, when a read error occurs in a certain content item, rendering the content undeliverable, the delivery capability of the cache server 2-1 is reduced. However, if the reduced delivery capability of the cache server 2-1 satisfies a predetermined threshold, the processor 22 does not restore the content item for which the read error occurred. This reduces the consumption of the nonvolatile memory 242 compared to unconditionally restoring all content items for which the read error occurred and writing all restored content items to the nonvolatile memory 242. This also enables the physical resources of the nonvolatile memory 242 to be effectively used for writing new content items specified by a new request. Furthermore, with regard to the delivery target content for which a read error occurred, it is highly likely that a certain amount of time has already passed since the delivery target content was written to the non-volatile memory 242. In such a case, even if the delivery target content for which a read error occurred is restored and written to the non-volatile memory 242, the requested data retention period for the restored delivery target content may soon expire. In this case, the restored delivery target content is not delivered to any client, resulting in unnecessary consumption of the physical resources of the non-volatile memory 242. With regard to new content specified by a new request, this new content is not stored in the non-volatile memory 242 and is therefore obtained from the origin server 1. This new content continues to be retained in the non-volatile memory 242 for the requested data retention period for the new content.Therefore, writing new content to the nonvolatile memory 242 can utilize the physical resources of the nonvolatile memory 242 relatively more efficiently than recovering content to be distributed that has experienced a read error and writing it to the nonvolatile memory 242.

[0134] Furthermore, if the delivery capability of the cache server 2-1 calculated in step S202 is equal to or less than the first reference value, the content to be delivered in which the read error occurred is restored and written to the non-volatile memory 242, thereby restoring the delivery capability of the cache server 2-1 to the delivery capability immediately before the read error occurred.

[0135] Next, a second example of the content restoration process will be described below. Fig. 14 is a flowchart showing the procedure of the second example of the content restoration process executed in the cache server 2-1 according to the embodiment.

[0136] In response to receiving a read error notification from the controller 241, the processor 22 detects that a read error has occurred in the content to be distributed, which is specified by the request from the client 4 (step S301).

[0137] The processor 22 calculates the delivery capacity of the cache server 2-1 and the degree of wear of the nonvolatile memory 242 of the cache server 2-1, taking into consideration the read error detected in S301 (step S302). In this case, the processor 22 calculates the delivery capacity of the cache server 2-1 by treating the content to be delivered that could not be read from the nonvolatile memory 242 due to the occurrence of the read error as undeliverable content. The processor 22 may also calculate the degree of wear of the nonvolatile memory 242 based on at least one of, for example, (1) the number of P / E cycles (number of rewrites) of the nonvolatile memory 242, (2) the ratio of the number of P / E cycles of the nonvolatile memory 242 to the total number of P / E cycles allowed in the nonvolatile memory 242, (3) the total amount of data written to the nonvolatile memory 242, (4) the ratio of the total amount of data written to the nonvolatile memory 242 to the total amount of data writable to the nonvolatile memory 242, and (5) the ratio of the bit error rate (BER) of the SSD 24-1 to the allowed bit error rate (BER) of the SSD 24-1. The information indicating (1), the information indicating (2), the information indicating (3), the information indicating (4), and the information indicating (5) are managed by the controller 241 of the SSD 24-1. Therefore, the processor 22 can acquire any of the information (1) to (5) from the SSD 24-1 as needed.

[0138] The processor 22 determines whether the delivery capability of the cache server 2-1 calculated in S302 exceeds the first reference value (step S303).

[0139] If the delivery capability of the cache server 2-1 exceeds the first reference value (Yes in S303), the processor 22 does not restore the content to be delivered, and ends the content restoration process.

[0140] If the delivery capacity of the cache server 2-1 does not exceed the first reference value (No in S303), the processor 22 determines whether the wear level of the non-volatile memory 242 calculated in S302 exceeds the second reference value (step S304).

[0141] If the degree of consumption of the nonvolatile memory 242 exceeds the second reference value (Yes in S304), the processor 22 ends the content restoration process without restoring the content to be distributed.

[0142] If the degree of wear of the nonvolatile memory 242 does not exceed the second reference value (No in S304), the processor 22 recovers the distribution target content that could not be read from the SSD 24-1 due to the occurrence of the read error (step S305). In this case, the processor 22 may recover the distribution target content for which the read error occurred by acquiring the distribution target content from the origin server 1 or another cache server 2 (cache server 2-2 or cache server 2-3) via the network 5. Alternatively, in a case where the cache server 2-1 includes multiple SSDs (SSDs 24-1 to 24-4), the processor 22 may use data read from these SSDs 24-1 to 24-4 included in the cache server 2-1 to perform an error correction process (for example, the error correction process described in FIG. 5) different from the error correction process executed by the controller 241, thereby recovering the distribution target content for which the read error occurred.

[0143] The processor 22 distributes the distribution target content restored in S305 to the client 4 that requested the distribution target content via the network 5 (step S306).

[0144] The processor 22 writes the content to be distributed that was restored in S305 to the nonvolatile memory 242 of the SSD 24-1 (step S307).

[0145] The processor 22 checks whether the content to be distributed written in S206 can be correctly read from the nonvolatile memory 242 (step S308). That is, the processor 22 executes a process for reading the content to be distributed from the nonvolatile memory 242, thereby determining (confirming) whether the content to be distributed can be correctly read from the nonvolatile memory 242.

[0146] If the processor 22 confirms in S308 that the delivery target content can be correctly read, it treats the restored delivery target content as deliverable content and recalculates the delivery capability of the cache server 2-1 (step S309). In this case, the delivery capability calculated in S309 is the delivery capability of the cache server 2-1 after the delivery target content is restored. On the other hand, if the processor 22 cannot confirm in S308 that the delivery target content can be correctly read, that is, if it is determined that the delivery target content cannot be correctly read, the processor 22 may perform the process of S307 again to rewrite the delivery target content to the non-volatile memory 242. After rewriting the delivery target content to the non-volatile memory 242, the processor 22 may perform the determination process of S308 again. Then, if it is determined that the delivery target content rewritten to the non-volatile memory 242 can be normally read from the non-volatile memory 242, the processor 22 treats the restored delivery target content as deliverable content and recalculates the delivery capability of the cache server 2-1 (step S309). Alternatively, if the processor 22 is unable to confirm in S308 that it is possible to correctly read the content to be distributed, it may use the distribution capacity calculated in S302 as the distribution capacity of the cache server 2-1 instead of rewriting the content to be distributed to the non-volatile memory 242.

[0147] As a result, when a read error occurs when reading content from the nonvolatile memory 242, the cache server 2-1 can determine whether to restore the content based not only on the delivery capability of the cache server 2-1 but also on the delivery capability of the cache server 2-1 and the degree of wear of the nonvolatile memory 242 in the cache server 2-1. In other words, if the nonvolatile memory 242 in the cache server 2-1 is worn out, the processor 22 skips restoring the content. This allows the cache server 2-1 to prevent further wear of the nonvolatile memory 242 of the cache server 2-1.

[0148] Next, a third example of the content restoration process will be described below. Fig. 15 is a flowchart showing the procedure of the third example of the content restoration process executed in the cache server 2-1 according to the embodiment.

[0149] In response to receiving a read error notification from the controller 241, the processor 22 detects that a read error has occurred in the content to be distributed, which is specified by the request from the client 4 (step S401).

[0150] The processor 22 calculates the delivery capability of the cache server 2-1, taking into consideration the read error detected in S401 (step S402). The processor 22 calculates the delivery capability of the cache server 2-1 by treating the content to be delivered that could not be read from the SSD 24-1 due to the occurrence of the read error as undeliverable content.

[0151] The processor 22 shares the delivery capabilities with the other cache servers 2-2 and 2-3 (step S403). In step S403, the processor 22 executes a process to transmit the delivery capability of the cache server 2-1 calculated in S402 to each of the other cache servers 2-2 and 2-3. Furthermore, the processor 22 also executes a process to receive the delivery capabilities of each of the other cache servers 2-2 and 2-3 from each of the other cache servers 2-2 and 2-3.

[0152] The processor 22 calculates the overall delivery capacity of the plurality of cache servers including the cache servers 2-1 to 2-3 based on the delivery capacity of the cache server 2-1 and the delivery capacity of each of the other cache servers 2-2 and 2-3, and determines whether the overall delivery capacity of the plurality of cache servers exceeds a third reference value (step S404). For example, the processor 22 may calculate the overall delivery capacity of the plurality of cache servers as the sum of the delivery capacity of the cache server 2-1, the delivery capacity of the cache server 2-2, and the delivery capacity of the cache server 2-3. The third reference value is a threshold value used to evaluate the overall delivery capacity of the plurality of cache servers including the cache servers 2-1 to 2-3, rather than the delivery capacity of the cache server 2-1 alone. The third reference value may be determined based on a target value of the delivery capacity required for the plurality of cache servers as a whole in order to improve the content delivery speed in the information delivery system. For example, in a case where the calculated overall delivery capacity of multiple cache servers indicates the sum of the total number of contents that cache server 2-1 is expected to deliver to any client 4 per unit time, the total number of contents that cache server 2-2 is expected to deliver to any client 4 per unit time, and the total number of contents that cache server 2-3 is expected to deliver to any client 4 per unit time, the third reference value may be determined based on a target value for the total number of contents to be delivered per unit time required for the multiple cache servers as a whole.

[0153] If the overall delivery capability of the cache servers including the cache servers 2-1 to 2-3 does not exceed the third reference value (No in S404), the processor 22 recovers the content to be delivered that could not be read from the non-volatile memory 242 due to the occurrence of a read error (step S405). In this case, the processor 22 may recover the content to be delivered that has experienced a read error by obtaining the content to be delivered from the origin server 1 or another cache server 2 (cache server 2-2 or cache server 2-3) via the network 5. Alternatively, in a case where the cache server 2-1 includes multiple SSDs (SSDs 24-1 to 24-4), the processor 22 may use data read from these SSDs 24-1 to 24-4 included in the cache server 2-1 to perform an error correction process (for example, the process described in FIG. 5) different from the error correction process executed by the controller 241, thereby recovering the content to be delivered that has experienced a read error.

[0154] The processor 22 distributes the distribution target content restored in S405 to the client 4 that requested the distribution target content via the network 5 (step S406).

[0155] The processor 22 writes the content to be distributed that was restored in S405 to the nonvolatile memory 242 of the SSD 24-1 (step S407).

[0156] The processor 22 checks whether the content to be distributed written in S407 can be correctly read from the nonvolatile memory 242 (step S408). That is, the processor 22 executes a process for reading the content to be distributed from the nonvolatile memory 242, thereby determining (confirming) whether the content to be distributed can be correctly read from the nonvolatile memory 242.

[0157] If the written content to be distributed can be read correctly, that is, if the content to be distributed restored in S405 can be read normally from the non-volatile memory 242 (Yes in S408), the processor 22 treats the restored content to be distributed as content that can be distributed, and recalculates the distribution capability of the cache server 2-1 (step S409).

[0158] The processor 22 transmits the delivery capacity of the cache server 2-1 calculated in S409 to each of the other cache servers 2-2 and 2-3, and shares the delivery capacity of the cache server 2-1 calculated in S409 with the other cache servers 2-2 and 2-3 (step S410).

[0159] If the overall delivery capacity of multiple cache servers including cache servers 2-1 to 2-3 exceeds the third reference value (Yes in S404), or if the content to be delivered written in S407 cannot be correctly read from non-volatile memory 242 (No in S408), processor 22 notifies each of the other cache servers 2-2 and 2-3 that the content to be delivered has been lost from cache server 2-1 (step S411).

[0160] Then, the processor 22 ends the content restoration process.

[0161] As a result, when a read error occurs when reading content to be distributed from the non-volatile memory 242, the cache server 2-1 can determine whether to restore the content to be distributed for which the read error occurred, taking into account not only the delivery capacity of the cache server 2-1 but also the delivery capacity of each of the other cache servers 2-2 and 2-3. In other words, even if a content to be distributed cannot be read due to a read error, the processor 22 skips the restoration of the content to be distributed for which the read error occurred, as long as the delivery capacity of the multiple cache servers as a whole meets the reference value, since the information distribution system as a whole can provide a content distribution service with sufficient performance. This allows the cache server 2-1 to prevent wear on the non-volatile memory 242 of the cache server 2-1.

[0162] Note that the processing of S304 described in FIG. 14 can also be applied to the content restoration processing of FIG. 15. In this case, when a read error occurs when reading content from the nonvolatile memory 242, the cache server 2-1 determines whether to restore the content based on the overall delivery capacity of the multiple cache servers and the degree of wear of the nonvolatile memory 242 in the cache server 2-1. In other words, if the nonvolatile memory 242 in the cache server 2-1 is worn out, the processor 22 skips the restoration of the content for which the read error occurred, even if the overall delivery capacity of the multiple cache servers does not exceed the reference value. This allows the cache server 2-1 to prevent further wear of the nonvolatile memory 242 of the cache server 2-1.

[0163] Next, a fourth example of content recovery processing will be described. FIG. 16 is a flowchart showing the procedure of the fourth example of content recovery processing executed in the cache server 2-1 according to the embodiment. In the fourth example, the cache server 2-1 periodically acquires the overall delivery capacity of the plurality of cache servers from the control server 3 and stores the acquired delivery capacity in the main memory 23. That is, each of the cache servers 2-1 to 2-3 may transmit its own delivery capacity to the control server 3 instead of transmitting it to each of the other cache servers. In this case, the control server 3 calculates the overall delivery capacity of the plurality of cache servers, including the cache servers 2-1 to 2-3, based on the delivery capacity received from each of the cache servers 2-1 to 2-3, and transmits the calculated overall delivery capacity of the plurality of cache servers to each of the cache servers 2-1 to 2-3. In this way, the cache server 2-1 can periodically acquire the overall delivery capacity of the plurality of cache servers from the control server 3.

[0164] In response to receiving a read error notification from the controller 241, the processor 22 detects that a read error has occurred in the content to be distributed, which is specified by the request from the client 4 (step S501).

[0165] The processor 22 determines whether the overall delivery capacity of the multiple cache servers stored in the main memory 23, that is, the overall delivery capacity of the multiple cache servers previously received from the control server 3, exceeds a third reference value (step S502).

[0166] If the overall delivery capability of the multiple cache servers received in advance from the control server 3 does not exceed the third reference value (No in S502), the processor 22 recovers the delivery target content that could not be read from the non-volatile memory 242 due to the occurrence of a read error (step S503). In this case, the processor 22 may recover the delivery target content for which a read error occurred by obtaining the delivery target content from the origin server 1 or another cache server 2 (cache server 2-2 or cache server 2-3) via the network 5. Alternatively, in a case where the cache server 2-1 includes multiple SSDs (SSDs 24-1 to 24-4), the processor 22 may use data read from these SSDs 24-1 to 24-4 included in the cache server 2-1 to perform an error correction process (for example, the error correction process described in FIG. 5) different from the error correction process executed by the controller 241, thereby recovering the delivery target content for which a read error occurred.

[0167] The processor 22 distributes the distribution target content restored in S503 to the client 4 that requested the distribution target content via the network 5 (step S504).

[0168] The processor 22 writes the content to be distributed that was restored in S503 to the nonvolatile memory 242 of the SSD 24-1 (step S505).

[0169] The processor 22 checks whether the content to be distributed that was written in S505 can be correctly read from the nonvolatile memory 242 (step S506).

[0170] If the written content to be distributed can be read correctly (Yes in S506), the processor 22 treats this content to be distributed as a content that can be distributed, and calculates the distribution capability of the cache server 2-1 (step S509).

[0171] The processor 22 determines whether the delivery capability of the cache server 2-1 calculated in S509 has changed from the delivery capability of the cache server 2-1 previously notified to the control server 3 (step S510).

[0172] If the delivery capability of the cache server 2-1 calculated in S509 has changed from the delivery capability of the cache server 2-1 previously notified to the control server 3 (Yes in S510), the processor 22 notifies the control server 3 of the delivery capability of the cache server 2-1 calculated in S509 (step S511), and then terminates the content recovery process.

[0173] If the delivery capability of the cache server 2-1 calculated in S509 has not changed from the delivery capability of the cache server 2-1 previously notified to the control server 3 (No in S510), the processor 22 terminates the content recovery process without notifying the control server 3 of the delivery capability of the cache server 2-1 calculated in S509.

[0174] If the overall delivery capacity of the multiple cache servers exceeds the third reference value (Yes in S502), or if the content to be delivered written in S505 cannot be correctly read from the non-volatile memory 242 (No in S506), the processor 22 treats the content to be delivered as undeliverable content and calculates the delivery capacity of the cache server 2-1 (step S507).

[0175] The processor 22 notifies the control server 3 that the content to be distributed has been lost from the cache server 2-1 (step S508). The processor 22 can also notify the control server 3 of the distribution capability of the cache server 2-1 calculated in S507, along with the fact that the content to be distributed has been lost.

[0176] In this way, in cases where it is possible to receive the overall distribution capacity of multiple cache servers from the control server 3, the cache server 2-1 can determine whether or not to recover the content to be distributed that could not be read from the non-volatile memory 242 due to a read error, based on the overall distribution capacity of the multiple cache servers received from the control server 3.

[0177] 14 may also be applied to the content restoration process of FIG. 16. In this case, when a read error occurs when reading content from the nonvolatile memory 242, the cache server 2-1 determines whether to restore the content based on the overall delivery capacity of the multiple cache servers previously received from the control server 3 and the degree of wear of the nonvolatile memory 242 in the cache server 2-1. In other words, if the nonvolatile memory 242 in the cache server 2-1 is worn out, the processor 22 skips the restoration of the content for which the read error occurred, even if the overall delivery capacity of the multiple cache servers does not exceed the reference value. This allows the cache server 2-1 to prevent further wear of the nonvolatile memory 242 of the cache server 2-1.

[0178] Next, a fifth example of content recovery processing will be described. Fig. 17 is a flowchart showing the procedure of the fifth example of content recovery processing executed in the cache server 2-1 according to this embodiment. A request specifying content Cn is sent from the clients 4-1 to 4-4 to the cache server 2-1, a read error occurs in the SSD 24-1, and the controller 241 notifies the processor 22 of the read error, and in response, the content recovery processing is started. In the fifth example, the cache server 2-1 previously acquires a recovery instruction specifying specific content from the control server 3 and stores the acquired recovery instruction in the main memory 23. Also, in the fifth example, as in the fourth example, a case is assumed in which each of the cache servers 2-1 to 2-3 executes a process of notifying the control server 3 of its own delivery capability.

[0179] The processor 22 detects the occurrence of a read error in the content Cn (step S601).

[0180] The processor 22 determines whether or not a restoration instruction specifying the content Cn is stored in the main memory 23, that is, whether or not a restoration instruction for the content Cn has been received in advance from the control server 3 (step S602). This restoration instruction is a restoration instruction indicating that the specified content should be restored, and is also referred to as a second restoration instruction.

[0181] If a restoration instruction specifying the content Cn is stored in the main memory 23 (Yes in S602), the processor 22 restores the content Cn (step S603). The cache server 2-1 may obtain the content Cn from the origin server 1 or another cache server 2-2 or 2-3, or may restore the content Cn through error correction processing by the processor 22.

[0182] The processor 22 distributes the content Cn restored in S603 to the client that requested the content Cn (step S604).

[0183] The processor 22 writes the content Cn restored in S603 to the nonvolatile memory 242 of the SSD 24-1 (step S605).

[0184] The processor 22 checks whether the content Cn written in S605 can be correctly read from the nonvolatile memory 242 (step S606).

[0185] If the content Cn can be read correctly (Yes in S606), the processor 22 treats the content Cn as a deliverable content and calculates the delivery capability of the cache server 2-1 (step S609).

[0186] The processor 22 determines whether the delivery capability of the cache server 2-1 calculated in S609 has changed from the delivery capability of the cache server 2-1 previously notified to the control server 3 (step S610).

[0187] If the delivery capacity of the cache server 2-1 calculated in S609 has changed from the delivery capacity of the cache server 2-1 previously notified to the control server 3 (Yes in S610), the processor 22 notifies the control server 3 of the delivery capacity of the cache server 2-1 calculated in S609 (step S611), and then terminates the content recovery process.

[0188] If the delivery capability of the cache server 2-1 calculated in S609 has not changed from the delivery capability of the cache server 2-1 previously notified to the control server 3 (No in S610), the processor 22 terminates the content recovery process without notifying the control server 3 of the delivery capability of the cache server 2-1 calculated in S609.

[0189] If the processor 22 does not hold a recovery instruction specifying the content Cn (No in S602), or if the content Cn written in S605 cannot be read correctly (No in S606), the processor 22 treats the content Cn as undeliverable content and calculates the delivery capability of the cache server 2-1 (step S607).

[0190] The processor 22 notifies the control server 3 that the content Cn has been lost from the cache server 2-1 (step S608). The processor 22 may also notify the control server 3 of the delivery capability calculated in S607, along with the fact that the content Cn has been lost from the cache server 2-1.

[0191] As a result, when a read error occurs in a content for which the cache server 2-1 has received a recovery instruction from the control server 3 in advance, the cache server 2-1 can immediately start recovering the content for which the read error occurred.

[0192] Next, a sixth example of the content recovery process will be described. Fig. 18 is a flowchart showing the procedure of the sixth example of the content recovery process executed in the cache server 2-1 according to the embodiment. A request for content Cn is sent from the clients 4-1 to 4-4 to the cache server 2-1, a read error occurs in the SSD 24-1, and the controller 241 notifies the processor 22 of the read error, in response to which the content recovery process starts.

[0193] The processor 22 detects the occurrence of a read error in the content Cn (step S701).

[0194] The processor 22 notifies the control server 3 that a read error has occurred for the content Cn (step S702).

[0195] The processor 22 determines whether or not a restoration instruction indicating that the content Cn should be restored has been received from the control server 3 (step S703). This restoration instruction is a first restoration instruction indicating that the content to be distributed (here, the content Cn) in which the read error occurred should be restored.

[0196] If a restoration instruction indicating that the content Cn should be restored has not been received (No in S703), the processor 22 ends the content restoration process.

[0197] If a restoration instruction indicating that the content Cn is specified is received (Yes in S703), the processor 22 restores the content Cn (step S704). The cache server 2-1 may obtain the content Cn from the origin server 1 or another cache server 2-2 or 2-3, or may restore the content Cn through error correction processing by the processor 22.

[0198] The processor 22 distributes the content Cn restored in S704 to the client that requested the content Cn (step S705).

[0199] The processor 22 writes the content Cn restored in S704 to the nonvolatile memory 242 of the SSD 24-1 (step S706).

[0200] The processor 22 checks whether the content Cn written in S706 can be correctly read from the nonvolatile memory 242 (step S707).

[0201] If the content Cn can be read correctly (Yes in S707), the processor 22 treats the content Cn as a deliverable content and calculates the delivery capability (step S708).

[0202] The processor 22 notifies the control server 3 of the delivery capability calculated in S708 (step S709).

[0203] If the content Cn cannot be read correctly, the processor 22 notifies the control server 3 that the content Cn has been lost from the cache server 2-1 (step S710).

[0204] This allows the cache server 2-1 to determine whether or not to execute content recovery processing based on the recovery instruction received from the control server 3 each time a read error occurs.

[0205] The process of S702 and the processes of S703 to S710 in the content restoration process of FIG. 18 may be applied to each of the content restoration processes described with reference to FIGS. 13, 14, and 15, for example.

[0206] For example, in the content restoration process of Fig. 13, the process of S702 of Fig. 18 may be executed after S201 of Fig. 13. As a result, the occurrence of a read error in the content to be delivered is notified to the control server 3. Furthermore, if it is determined that the delivery capability of the cache server 2-1 calculated in S202 of Fig. 13 exceeds the first reference value (Yes in S203 of Fig. 13), the processes of S703 to S710 in the content restoration process of Fig. 18 may be executed. As a result, after determining that the delivery capability of the cache server 2-1 calculated in S202 exceeds the first reference value, that is, after determining that the content Cn should not be restored, the processor 22 determines whether or not a restoration instruction (first restoration instruction) indicating that the content Cn in which the read error occurred should be restored has been received from the control server 3. When the first recovery instruction is received from the control server 3, the processor 22 executes a process of recovering the content Cn (S707), a process of distributing the recovered content Cn to the client that sent the request specifying the content Cn (S705), and a process of writing the recovered content Cn to the non-volatile memory 242 (S706).

[0207] In this way, even if the delivery capability of the cache server 2-1 exceeds the first reference value, the processor 22 restores the content Cn when the first restoration instruction is received from the control server 3. This allows for more flexible control over the decision as to whether or not to restore the content Cn.

[0208] 14, the processing of S702 in Fig. 18 may be executed after S301 in Fig. 14. As a result, the occurrence of a read error in the content to be distributed is notified to the control server 3. In addition, in the content recovery processing of Fig. 14, if it is determined that the distribution capability of the cache server 2-1 calculated in S302 in Fig. 14 exceeds the first reference value (Yes in S303 in Fig. 14) or if it is determined that the degree of wear calculated in S302 in Fig. 14 exceeds the second reference value (Yes in S304 in Fig. 14), the processing of S703 to S710 in the content recovery processing of Fig. 18 may be executed.

[0209] Furthermore, in the content recovery process of Fig. 15, the process of S702 in Fig. 18 may be executed after S401 in Fig. 15. This notifies the control server 3 of the occurrence of a read error in the content to be distributed. Also, in the content recovery process of Fig. 15, if it is determined that the overall distribution capability of multiple cache servers exceeds the third reference value (Yes in S404 in Fig. 15), the processes of S703 to S710 in the content recovery process of Fig. 18 may be executed.

[0210] 18 is applied to the content restoration processes described with reference to FIGS. 13, 14, and 15 in this way, when an error occurs in reading the content to be delivered from the nonvolatile memory 242, the processor 22 notifies the control server 3 that a read error has occurred in the content to be delivered. After determining that the calculated delivery capability of the cache server 2-1 exceeds the first reference value (or after determining that the calculated delivery capability of the entire plurality of cache servers exceeds the third reference value), if the processor 22 receives a restoration instruction (first restoration instruction) from the control server 3 indicating that the content to be delivered in which the read error has occurred should be restored, the processor 22 executes the following processes: restoring the content to be delivered; delivering the restored content to be delivered to the client that transmitted the request specifying the content to be delivered; and writing the restored content to be delivered to the nonvolatile memory 242.

[0211] Next, a seventh example of the content recovery process will be described. Fig. 19 is a flowchart showing the procedure of the seventh example of the content recovery process executed in the cache server 2-1 according to the embodiment. Here, the content recovery process executed in response to receiving a recovery instruction from the control server 3 indicating that content in which no read error has occurred should be recovered will be described.

[0212] The processor 22 receives a recovery instruction specifying a content (here, content Cn) in which a read error has not occurred from the control server 3 (step S801).

[0213] Based on the restoration instruction received in S801, the processor 22 determines whether or not to restore the content Cn in order to prevent a decline in the delivery capability of the cache server 2-1 (step S802).

[0214] When it is determined that the content Cn should be restored to prevent a decline in the delivery capability of the cache server 2-1 (Yes in S802), the processor 22 restores the content Cn (step S803). In this case, the processor 22 may obtain the content Cn from the origin server 1 or one of the other cache servers 2-2 and 2-3, or may read the content Cn from the non-volatile memory 242.

[0215] The processor 22 writes the content Cn restored in S803, that is, the content Cn acquired or read in S803, again to the nonvolatile memory 242 (step S804).

[0216] The processor 22 checks whether the content Cn written in S804 can be correctly read from the nonvolatile memory 242 (step S805).

[0217] If the content Cn can be read correctly (Yes in S805), the processor 22 calculates the delivery capability of the cache server 2-1 (step S806).

[0218] The processor 22 notifies the control server 3 of the delivery capability calculated in S806 (step S807).

[0219] If the content Cn cannot be read correctly (No in S805), the processor 22 notifies the control server 3 that the restoration of the content Cn has failed (step S808).

[0220] If it is determined that the restoration of the content Cn is not to be executed (No in S802), the processor 22 notifies the control server 3 that the restoration of the content Cn has failed (step S809).

[0221] As a result, the cache server 2-1 recovers the content Cn for which no read error has occurred based on the recovery instruction received from the control server 3, and writes the recovered content Cn back into the non-volatile memory 242. The longer the time that has passed since the content Cn was first written, the higher the probability that the content Cn will not be able to be correctly read from the non-volatile memory 242. Furthermore, if a read error occurs in this content Cn, the delivery capability of the cache server 2-1 will be reduced. Therefore, by rewriting the content Cn for which no read error has occurred to the non-volatile memory 242 under the control of the control server 3, it is possible to prevent a reduction in the delivery capability of the cache server 2-1.

[0222] Next, the selection of a destination block when restoring content will be described. Fig. 20 is a diagram for explaining an example of a destination block selection process executed in the cache server 2-1 according to the embodiment. Here, it is assumed that the processor 22 selects a block in the non-volatile memory 242 to which the restored content should be written.

[0223] The processor 22 manages the data retention period of each of the multiple blocks included in the nonvolatile memory 242. The processor 22 can obtain the data retention period of each block from the controller 241 of the SSD 24-1. The processor 22 may also estimate the data retention period of each block based on the number of program / erase cycles (number of rewrites) of each block. The number of program / erase cycles of each block can be obtained from the controller 241 of the SSD 24-1.

[0224] The processor 22 determines whether or not there is a block in the non-volatile memory 242 available for writing data that has a data retention period longer than the remaining data retention period of the recovered content. The one or more blocks available for writing data are, for example, free blocks among the multiple blocks included in the non-volatile memory 242. A free block is a block that does not contain valid data.

[0225] 20A, blocks BLK1, BLK2, and BLK3 are free blocks. The data retention period of block BLK1 is shorter than the remaining data retention period of the recovered content. On the other hand, the data retention periods of blocks BLK2 and BLK3 are longer than the remaining data retention period of the recovered content.

[0226] Next, processor 22 selects, as the write destination block, the block with the data retention period closest to the requested remaining data retention period of the restored content from among the blocks (here, blocks BLK2 and BLK3) with data retention periods longer than the requested remaining data retention period of the restored content. In other words, the block selected as the write destination block is block BLK3.

[0227] This allows the processor 22 to select, as the write destination block, a block that can hold the restored content for the remaining data retention request period.

[0228] On the other hand, as shown in (B) of Figure 20, if there is no free block whose data retention period is longer than the requested remaining data retention period of the recovered content, processor 22 may select as the write destination block a block with the fewest number of program / erase cycles (number of rewrites). Alternatively, processor 22 may calculate, for each free block, the period by which the data retention period after the last rewrite required to retain the recovered content for at least the requested remaining data retention period exceeds the requested remaining data retention period of the recovered content, and select as the write destination block the block with the shortest calculated period. Below, a description will be given of the case where the block with the shortest calculated period is used as the write destination block.

[0229] 20B, blocks BLK4, BLK5, and BLK6 are free blocks, and therefore, the candidates for the write destination block are these blocks BLK4 to BLK6.

[0230] For block BLK4, in order to retain the recovered content for at least the remaining data retention period, a total of three writes, including one write and two rewrites (refreshes), are required. The second rewrite is the final rewrite required to retain the recovered content for at least the remaining data retention period. The data retention period of block BLK4 after the second rewrite (i.e., the third write) is the data retention period after the final rewrite.

[0231] For block BLK5, in order to retain the recovered content for at least the remaining data retention period, a total of two writes, including one write and one rewrite (refresh), are required. The first rewrite is the final rewrite required to retain the recovered content for at least the remaining data retention period. The data retention period of block BLK5 after the first rewrite (i.e., the second write) is the data retention period after the final rewrite.

[0232] For block BLK6, in order to retain the recovered content for at least the remaining data retention period, a total of two writes, including one write and one rewrite (refresh), are required. The first rewrite is the final rewrite required to retain the recovered content for at least the remaining data retention period. The data retention period of block BLK5 after the first rewrite (i.e., the second write) is the data retention period after the final rewrite.

[0233] The processor 22 calculates the period by which the data retention period after the last rewrite exceeds the remaining data retention period of the restored content for each of the blocks BLK5 and BLK6, and then selects the block with the shortest calculated period as the write destination block.

[0234] Of blocks BLK4, BLK5, and BLK6, block BLK4 is the block with the shortest period exceeding the requested remaining data retention period of the recovered content.

[0235] Therefore, processor 22 selects block BLK4 as the write destination block and writes the recovered content to block BLK4. A period exceeding the requested remaining data retention period of the recovered content is a wasted period that is not used to retain the recovered content. Therefore, by using the write destination block selection process shown in (B) of Figure 10, the data retention period of the write destination block can be used more effectively.

[0236] Next, the procedure of the content write process will be described. Fig. 21 is a flowchart showing the procedure of the content write process executed in the cache server 2-1 according to the embodiment. The procedure of the content write process shown in Fig. 21 can be applied to the processes of S206 in Fig. 13, S307 in Fig. 14, S407 in Fig. 15, S505 in Fig. 16, S605 in Fig. 17, and S706 in Fig. 18, for example.

[0237] First, the processor 22 determines whether or not a block with a data retention period longer than the remaining data retention period of the restored content exists in the set of free blocks (step S901).

[0238] If there is a block in the set of free blocks whose data retention period is longer than the remaining requested data retention period (Yes in S901), the processor 22 selects, from among the blocks whose data retention period is longer than the remaining requested data retention period, the block whose data retention period is closest to the remaining requested data retention period (step S902).

[0239] If there is no block in the set of free blocks whose data retention period is longer than the remaining requested data retention period (No in S901), the processor 22 selects the block with the fewest number of program / erase cycles (number of rewrites) or the block whose remaining requested data retention period is exceeded for the shortest period after the last rewrite (step S903).

[0240] The processor 22 writes the restored content to the write destination block selected in S902 or S903 (step S904).

[0241] As described above, according to this embodiment, when an error occurs in reading content from the nonvolatile memory 242 of SSD 24-1, the processor 22 determines whether or not to restore the content. This allows the cache server 2-1 to reduce the frequency at which restored content is written to the nonvolatile memory 242, compared to when content is restored unconditionally. This allows the cache server 2-1 to prevent wear and tear on the nonvolatile memory 242.

[0242] The processor 22 determines whether to restore content based on the delivery capability of the cache server 2-1. Therefore, if the delivery capability of the cache server 2-1 falls below a reference value due to the inability to deliver the content, the processor 22 restores the content. This allows the processor 22 to maintain the level of the delivery capability of the cache server 2-1 while suppressing consumption of the nonvolatile memory 242.

[0243] Although several embodiments of the present invention have been described, these embodiments are presented as examples and are not intended to limit the scope of the invention. These novel embodiments can be embodied in various other forms, and various omissions, substitutions, and modifications can be made without departing from the spirit of the invention. These embodiments and their modifications are included within the scope and spirit of the invention, and are also included in the scope of the invention and its equivalents as defined in the claims. [Explanation of symbols]

[0244] 1...origin server, 2...cache server, 3...control server, 4...client, 5...network, 20...bus, 21...NIC, 22...processor, 23...main memory, 24...SSD, 231...content management table, 241...controller, 242...non-volatile memory, 2201...content acquisition unit, 2202...content writing unit, 2203...content reading unit, 2204...content distribution unit, 2205...read error detection unit, 2206...content recovery unit, 2207...error correction processing unit, 2208...delivery capability calculation unit, 2209...recovery judgment unit, 2210...delivery capability transmission / reception unit, 2211...recovery instruction receiving unit, 2212...error notification unit, 2213...recovery method selection unit, 2411...host interface, 2412...CPU, 2413...error correction circuit, 2414...NAND interface, 24141...NAND controller.

Claims

1. A cache server that can be connected via a network to an origin server, which is an external server that holds multiple contents, a storage device including: a nonvolatile memory having a finite data retention period and a finite number of rewrites; and a controller configured to control the nonvolatile memory; a processor configured to determine whether a first content requested by a client is stored in the non-volatile memory, and if the first content is stored in the non-volatile memory, to execute a process of reading the first content from the non-volatile memory and a process of delivering the read first content to the client via the network; and if the first content is not stored in the non-volatile memory, to execute a process of acquiring the first content from the origin server, a process of delivering the acquired first content to the client via the network, and a process of writing the acquired first content to the non-volatile memory; The processor: if an error occurs in reading the first content from the non-volatile memory, calculating a delivery capability of the cache server for delivering the distributable content stored in the non-volatile memory based at least on a predicted number of reads for each of the distributable content stored in the non-volatile memory; determining whether the calculated delivery capability exceeds a first reference value; If it is determined that the calculated delivery capability exceeds the first reference value, the first content is not restored; and when it is determined that the calculated delivery capability does not exceed the first reference value, executing a restoration process of restoring the first content, a delivery process of delivering the restored first content to the client via the network, and a write process of writing the restored first content to the nonvolatile memory. Cache server.

2. The processor: Manage the wear level of the nonvolatile memory; If it is determined that the calculated delivery capability does not exceed the first reference value, it is determined whether the consumption level of the nonvolatile memory exceeds a second reference value; If it is determined that the degree of wear exceeds the second reference value, the first content is not restored; and when it is determined that the degree of wear does not exceed the second reference value, executing the recovery process, the distribution process, and the write process. The cache server according to claim 1 .

3. the cache server is connectable to one or more other cache servers via the network; The processor: notifying each of the one or more other cache servers of the calculated delivery capability; receiving from each of the one or more other cache servers a delivery capability of each of the one or more other cache servers; calculating a delivery capacity of the entire plurality of cache servers including the cache server and the one or more other cache servers based on the calculated delivery capacity and each of the one or more other cache servers; determining whether the calculated overall delivery capability of the plurality of cache servers exceeds a third reference value; If it is determined that the calculated delivery capability of the entire plurality of cache servers exceeds the third reference value, the first content is not restored, and when it is determined that the calculated delivery capability of the entire plurality of cache servers does not exceed the third reference value, executing the recovery process, the delivery process, and the write process. The cache server according to claim 1 .

4. The processor: Manage the wear level of the nonvolatile memory; If it is determined that the calculated delivery capacity of the entire plurality of cache servers does not exceed the third reference value, it is determined whether the degree of wear of the nonvolatile memory exceeds a second reference value; If it is determined that the degree of wear exceeds the second reference value, the first content is not restored; and when it is determined that the degree of wear does not exceed the second reference value, executing the recovery process, the distribution process, and the write process. The cache server according to claim 3 .

5. The processor: configured to recover the first content by retrieving the first content from the origin server or one of the one or more other cache servers via the network; The cache server according to claim 1 or 3.

6. The processor: the cache server is configured to recover the first content by performing an error correction process that is different from the error correction process performed in the controller of the storage device, using data read from a plurality of storage devices included in the cache server; The cache server according to claim 1 .

7. the cache server is connectable via the network to (i) the cache server or (ii) a control server configured to control the plurality of cache servers; The processor: If an error occurs in reading the first content from the nonvolatile memory, notify the control server that an error has occurred in reading the first content; and, when a first restoration instruction indicating that the first content should be restored is received from the control server after determining that the calculated delivery capability exceeds the first reference value or determining that the calculated delivery capability of all of the plurality of cache servers exceeds the third reference value, executing the restoration process, the delivery process, and the write process. The cache server according to claim 1 or 3.

8. the cache server is connectable via the network to (i) the cache server or (ii) a control server configured to control the plurality of cache servers; The processor: receiving a second restoration instruction from the control server indicating that the predetermined content should be restored; determining whether the second restoration instruction indicating that the first content should be restored has been received in advance from the control server when an error occurs in reading the first content from the non-volatile memory; and performing the restoration process, the distribution process, and the writing process when the second restoration instruction indicating that the first content should be restored has been received in advance from the control server. The cache server according to claim 1 or 3.

9. the cache server is connectable via the network to (i) the cache server or (ii) a control server configured to control the plurality of cache servers; The processor: determining whether to restore the second content in order to prevent a decrease in the delivery capability in response to receiving a third restoration instruction from the control server indicating that the second content, which has not encountered an error when read from the nonvolatile memory, should be restored; and when it is determined that the second content should be restored to prevent the degradation of the delivery capability, reading the second content from the non-volatile memory or obtaining the second content from the origin server or one of the one or more other cache servers, and writing the read second content or the obtained second content back to the non-volatile memory. The cache server according to claim 1 or 3.

10. the cache server is connectable via the network to (i) the cache server or (ii) a control server configured to control the plurality of cache servers; The processor: After writing the restored first content to the nonvolatile memory, determining whether the restored first content can be normally read from the nonvolatile memory; If it is determined that the recovered first content cannot be normally read from the non-volatile memory, notify the control server or each of the one or more other cache servers that the first content has been lost; and when it is determined that the restored first content can be normally read from the non-volatile memory, calculating a delivery capability of the cache server after the restoration of the first content, and notifying the control server or each of the one or more other cache servers of the calculated delivery capability of the cache server after the restoration of the first content. The cache server according to claim 1 or 3.

11. the nonvolatile memory includes a plurality of blocks, each of which is a unit of a data erase operation; The processor: managing a data retention period for each of the plurality of blocks; determining whether or not one or more second blocks exist among one or more first blocks available for writing data, the second blocks having a data retention period equal to or longer than the remaining data retention period of the recovered first content; If the one or more second blocks exist, selecting a third block from the one or more second blocks that has a data retention period closest to the remaining data retention required period; and further configured to write the recovered first content to the selected third block.

3. The cache server according to claim 1 or 2.

12. The processor: calculating, for each of the one or more first blocks, a data retention period after the last rewrite required to retain the recovered first content for at least the remaining data retention requested period, the period during which the data retention period exceeds the remaining data retention requested period; selecting a fourth block having the shortest calculated time from the one or more first blocks; and further configured to write the recovered first content to the selected fourth block.

3. The cache server according to claim 1 or 2.

Citation Information

Patent Citations

  • Memory system including cache

    US9558065B2