Unified storage and methods for controlling unified storage

The unified storage system achieves scalable file performance and availability by distributing data across controllers with Smart NICs, addressing the limitations of existing systems in cost and scalability.

JP7866471B2Active Publication Date: 2026-05-27HITACHI VANTARA LTD

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
HITACHI VANTARA LTD
Filing Date
2022-09-28
Publication Date
2026-05-27

AI Technical Summary

Technical Problem

Existing unified storage systems face challenges in scaling out file performance while maintaining availability and controlling costs, as they often require additional servers for file processing or integrate file processing resources with block storage, leading to increased costs and limited scalability.

Method used

A unified storage system comprising multiple controllers with channel adapters and processors that operate a distributed file system, distributing data across controllers to ensure redundancy and scalability without additional servers, using Smart NICs for cost-effective scaling.

Benefits of technology

Maintains availability and scales out file performance while suppressing costs by distributing data across controllers, ensuring data access even in the event of failures and reducing the need for additional servers.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007866471000001
    Figure 0007866471000001
  • Figure 0007866471000002
    Figure 0007866471000002
  • Figure 0007866471000003
    Figure 0007866471000003
Patent Text Reader

Abstract

To maintain availability and enable scaling-out of file performance while suppressing costs.SOLUTION: A unified storage 1 includes a plurality of controllers 100 and a storage device (a storage device unit 20). In each of the plurality of controllers 100, one or more main processors (CPUs 130) and one or more channel adopters (FE-I / F 110) are mounted. Each main processor processes data that is input and output to / from the storage device by operating a block storage control program, and the channel adaptor has a processor (a CPU 113). The processor accepts an access request and performs transmission and reception to / from the main processor. The processors of the plurality of channel adopters operate a distributed file system in cooperation with each other, and distribute and store data to be written as a file across the plurality of controllers 100.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to unified storage and a method for controlling unified storage, and is suitable for application to unified storage that functions as block storage and file storage and a method for controlling the same.

Background Art

[0002] In recent years, various types of data such as structured data such as databases and business systems, and unstructured data such as images and videos are handled. And since the storage system suitable for the data is different, in order to store various types of data, both block storage and file storage are required. However, purchasing block storage and file storage separately increases costs. Therefore, the popularity of unified storage that supports multiple data access protocols for files and blocks such as NFS (Network File System) / CIFS (Common Internet File System), iSCSI (Internet Small Computer System Interface), or FC (Fibre Channel) on a single device has been progressing.

[0003] For example, Patent Document 1 discloses a technique for realizing unified storage by combining a server (NAS (Network Attached Storage) head) that performs file processing and block storage. Further, Patent Document 2 discloses a technique for realizing unified storage by performing file processing using resources such as a part of the CPU and memory of block storage.

Prior Art Documents

Patent Documents

[0004]

Patent Document 1

Patent Document 2

[0005] By the way, file processing has greater processing overhead than block processing, so scaling out file processing is necessary. However, unified storage using Patent Documents 1 and 2 had the following problems, respectively.

[0006] First, the technology described in Patent Document 1 had the problem of requiring additional servers (NAS heads) to achieve scale-out of file processing, which increased costs.

[0007] Furthermore, the technology described in Patent Document 2 has the problem that file processing cannot be scaled out because the resources for file processing are integrated with the block storage. To explain in more detail, block storage systems generally have two storage control modules for high availability, and failover processing is performed when one storage control module fails, allowing processing to continue with the other storage control module. In the technology described in Patent Document 2, high availability is achieved in the same way for file processing, by utilizing the resources of each storage control module of the block storage. For this reason, the technology described in Patent Document 2 cannot scale out file performance.

[0008] This invention was made with the above points in mind, and aims to propose a unified storage system and a method for controlling the unified storage system that maintains availability and enables file performance scaling out while suppressing costs. [Means for solving the problem]

[0009] To solve these problems, the present invention provides a unified storage system that functions as both block storage and file storage, comprising a plurality of controllers which are storage controllers, and a storage device, wherein each of the plurality of controllers is equipped with one or more main processors and channel adapters, the main processor runs a block storage control program to process data input and output to the storage device, the channel adapters each have processors which receive access requests and send and receive them to and from the main processor, and the processors of the plurality of channel adapters cooperate to operate a distributed file system and request the plurality of controllers to distribute and store data to be written as files.

[0010] Furthermore, in order to solve the above problems, the present invention provides a method for controlling unified storage that functions as block storage and file storage, wherein the unified storage comprises a plurality of controllers which are storage controllers and a storage device, each of the plurality of controllers is equipped with one or more main processors and channel adapters, the main processor runs a block storage control program to process data input and output to the storage device, the channel adapter has a processor which receives access requests and sends and receives them to the main processor, and the processors of the plurality of channel adapters cooperate to operate a distributed file system and distribute and store data to be written as files to the plurality of controllers. [Effects of the Invention]

[0011] According to the present invention, it is possible to maintain availability and scale out file performance while suppressing costs. [Brief explanation of the drawing]

[0012] [Figure 1]It is a diagram showing an overview of the unified storage 1 according to the first embodiment. [Figure 2] It is a diagram showing a configuration example of the entire storage system including the unified storage 1. [Figure 3] It is a diagram showing a configuration example of the FE-I / F 110. [Figure 4] It is a diagram showing a configuration example of the client 40. [Figure 5] It is a diagram showing an image example of data distribution in the first embodiment. [Figure 6] It is a diagram showing an example of the node management table T11. [Figure 7] It is a flowchart showing an example of the processing procedure of the file storage process. [Figure 8] It is a flowchart showing an example of the processing procedure of the file read process. [Figure 9] It is a flowchart showing an example of the processing procedure of calculating the storage destination node of the target data. [Figure 10] It is a flowchart showing another example of the processing procedure of calculating the storage destination node of the target data. [Figure 11] It is a diagram showing an overview of the unified storage 1A according to the second embodiment. [Figure 12] It is a diagram showing a configuration example of the entire storage system including the unified storage 1A. [Figure 13] It is a diagram showing a configuration example of the management H / W 160. [Figure 14] It is a flowchart showing an example of the processing procedure of the failover process in the second embodiment. [Figure 15] It is a diagram showing an overview of the unified storage 1B according to the third embodiment. [Figure 16] It is a diagram showing a configuration example of the FE-I / F 170. [Figure 17] It is a diagram showing an example of the failure pair management table T12. [Figure 18] It is a flowchart showing an example of the processing procedure of the failover process in the third embodiment. [Figure 19] It is a diagram showing an overview of the unified storage 1C according to the fourth embodiment. [Figure 20] It is a diagram showing a configuration example of the FE-I / F 180. [Figure 21] It is a flowchart showing an example of the processing procedure of the failover process in the fourth embodiment.

Embodiments for Carrying Out the Invention

[0013] Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.

[0014] Note that the following description and drawings are examples for explaining the present invention, and for clarity of explanation, omissions and simplifications are made as appropriate. Also, not all combinations of features described in the embodiments are essential for the solution means of the invention. The present invention is not limited to the embodiments, and all application examples that conform to the idea of the present invention are included in the technical scope of the present invention. Those skilled in the art can make various additions and changes within the scope of the present invention. The present invention can also be implemented in various other forms. Unless otherwise limited, each component may be plural or singular.

[0015] In the following description, various types of information may be described using expressions such as "table", "list", "queue", etc., but the various types of information may be represented by other data structures. In order to indicate independence from the data structure, "XX table", "XX list", etc. may be referred to as "XX information". When explaining the content of each piece of information, expressions such as "identification information", "identifier", "name", "ID", "number", etc. are used, but these can be mutually replaced.

[0016] Also, in the following description, when explaining without distinguishing between elements of the same type, reference signs or common numbers in the reference signs are used, and when explaining by distinguishing between elements of the same type, the reference signs of those elements may be used or the ID assigned to those elements may be used instead of the reference signs.

[0017] Furthermore, while the following description may include explanations of processes performed by executing a program, the processor may be the primary entity performing the processing, as a program is executed by at least one processor (e.g., a CPU) and performs defined processes using appropriate memory resources (e.g., memory) and / or interface devices (e.g., communication ports). Similarly, the primary entity performing the processing by executing a program may be a controller, device, system, computer, node, storage system, storage device, server, management computer, client, or host having a processor. The primary entity performing the processing by executing a program (e.g., a processor) may include hardware circuits that perform some or all of the processing. For example, the primary entity performing the processing by executing a program may include hardware circuits that perform encryption and decryption, or compression and decompression. The processor operates as a functional unit that realizes predetermined functions by operating according to the program. Devices and systems including a processor are devices and systems including these functional units.

[0018] A program may be installed from its program source into a device such as a computer. The program source may be, for example, a program distribution server or a non-temporary storage medium readable by a computer. If the program source is a program distribution server, the program distribution server includes a processor (e.g., a CPU) and non-temporary storage resources, which may further store the distribution program and the program to be distributed. The processor of the program distribution server may then execute the distribution program, thereby distributing the program to other computers. Furthermore, in the following description, two or more programs may be implemented as a single program, or one program may be implemented as two or more programs.

[0019] (1) First Embodiment The Unified Storage 1 according to the first embodiment of the present invention is configured such that each of the multiple storage controllers (hereinafter referred to as controllers) is equipped with one or more high-performance front-end interfaces (FE-I / F), a distributed file system (distributed FS) is operated using the CPU (Central Processing Unit) and memory on the FE-I / F, the distributed FS recognizes each controller and protects the data by storing it in a redundant configuration across two or more controllers so that the data does not exist in only one controller, and then distributes the data across each controller.

[0020] While the detailed internal configuration will be described later, the high-performance FE-I / F installed in Unified Storage 1 is a channel adapter with a processor (e.g., CPU), specifically a Smart NIC (Network Interface Card). Channel adapters such as Smart NICs are known to be less expensive than servers such as NAS heads.

[0021] Figure 1 is a diagram showing an overview of the unified storage 1 according to the first embodiment.

[0022] As shown in Figure 1, in Unified Storage 1, controller #0 100 and controller #1 100 are each connected to one or more FE-I / F 110s, and each FE-I / F 110 runs the distributed file system control program P11 to constitute the distributed file system (FS) 2.

[0023] The distributed file system control program P11 requests the processors of two or more controllers 100 to store data in a redundant configuration between the controllers 100. More specifically, the block storage control program P1 of controller 100 (see Figure 2) provides volumes, the processors of the FE-I / F110 store data in these volumes, and one controller 100 can provide multiple volumes. The distributed file system operated by the distributed file system control program P11 recognizes each controller 100 and protects the data by distributing and storing multiple data related to a file requested to be written (user data A, B, C, D) across multiple volumes associated with each controller 100 (multiple logical volumes used by the FE-I / F110 installed on each controller 100) to ensure redundancy between the multiple controllers 100 (controllers #0 and #1). Each FE-I / F110 handles access not only to file protocols but also to block protocols.

[0024] Here, for example, if controller 100 #0 fails as shown in Figure 1, the FE-I / F 110 connected to controller 100 #0 becomes inaccessible. However, as described above, Unified Storage 1 protects data across controllers 100, so even after the failure, data can continue to be accessed via the distributed file system control program P11 of the FE-I / F 110 connected to controller 100 #1.

[0025] Figure 2 shows an example of the overall storage system configuration, including Unified Storage 1. As shown in Figure 2, Unified Storage 1 is connected to clients 40 and management terminals 50 via network 30.

[0026] Unified Storage 1 comprises a memory control device 10 and a memory device unit 20.

[0027] The memory control device 10 has multiple controllers 100. In Figure 2, two controllers 100, "#0" and "#1", are shown, but the number of controllers 100 in the memory control device 10 may be three or more.

[0028] Although not shown in Figure 2, the memory control device 10 may also be configured to provide a dedicated power supply for each controller 100 and supply power to each controller 100 using its own dedicated power supply, in order to improve the availability of the unified storage 1.

[0029] Furthermore, although Figure 2 shows one memory control device 10, the unified storage 1 may have multiple memory control devices 10. In that case, for example, the controllers 100 of each memory control device 10 may be interconnected via an HCA (Host Channel Adapter) network.

[0030] The controller 100 has one or more FE-I / F 110, a backend interface (BE-I / F) 120, one or more CPUs 130, memory 140, and a cache 150. These are interconnected by a communication channel, such as a bus.

[0031] In this embodiment, the FE-I / F110 may be implemented as an integrated unit with the controller 100, or as a separate device (equipment) that can be mounted on the controller 100. In Figure 2, the FE-I / F110 is shown mounted on the controller 100 for easier understanding of the connection relationships. Similar illustrations of this state are also shown in Figure 12 and other figures described later.

[0032] The FE-I / F110 is an interface device for communicating with external devices located on the front end, such as the client 40. A distributed file system (distributed FS) operates on the FE-I / F110. The distributed FS may operate on any number of the multiple FE-I / F110s. The BE-I / F120 is an interface device for the controller 100 to communicate with the storage device unit 20.

[0033] The CPU 130 is an example of a processor that controls the operation of block storage. The memory 140 is, for example, RAM (Random Access Memory) and temporarily stores programs and data for operation control by the CPU 130. The memory 140 stores the block storage control program P1. The block storage control program P1 may also be stored in the storage device unit 20. The block storage control program P1 is a block storage control program that processes data input and output to the storage device unit 20. Specifically, for example, the block storage control program P1 provides the FE-I / F 110 with a logical volume (logical Vol in Figure 2), which is a logical storage area based on the storage device unit 20. The FE-I / F 110 can access any logical volume by specifying the identifier of the logical volume.

[0034] Cache 150 temporarily stores data written using the block protocol from the client 40 and the distributed FS operating on the FE-I / F110, as well as data read from the storage device unit 20.

[0035] Network 30 specifically refers to, for example, a LAN (Local Area Network), a WAN (Wide Area Network), or a SAN (Storage Area Network).

[0036] Client 40 is a device that accesses Unified Storage 1 and sends block-level or file-level data input / output requests (data write requests, data read requests) to Unified Storage 1.

[0037] The management terminal 50 is a computer terminal operated by a user or operator. The management terminal 50 is equipped with a user interface such as a GUI (Graphical User Interface) or CLI (Command Line Interface), and provides functions for the user or operator to control and monitor the unified storage 1.

[0038] The storage device unit 20 has multiple PDEVs (physical devices) 21. A PDEV 21 is, for example, an HDD (Hard Disk Drive), but may also be other types of non-volatile storage devices, such as flash memory devices like SSDs (Solid State Drives). The storage device unit 20 may have different types of PDEVs 21. Furthermore, a RAID group may be formed from multiple identical PDEVs 21. Data is stored in the RAID group according to a predetermined RAID level.

[0039] Figure 3 shows an example configuration of the FE-I / F110. As shown in Figure 3, the FE-I / F110 includes a network I / F111, an internal I / F112, a CPU113, memory114, a cache115, and a storage device116. These components are interconnected by a communication path, such as a bus.

[0040] Network I / F 111 is an interface device for communicating with external devices such as client 40 and other FE-I / F 110s. Note that communication with external devices such as client 40 and communication with other FE-I / F 110s may be performed using different network interfaces. Internal I / F 112 is an interface device for communicating with the block storage control program P1. Internal I / F 112 is connected to the CPU 130 of controller 100, for example, via PCIe (Peripheral Component Interconnect-Express).

[0041] CPU 113 is a processor that controls the operation of FE-I / F 110. Memory 114 temporarily stores programs and data used for operation control by CPU 113. CPU 113 receives access requests and sends and receives them to the processor (CPU 130) of controller 100. Then, the CPUs 113 in multiple FE-I / F 110s work together to operate the distributed file system 2 and request that the data to be written as files be distributed and stored by multiple controllers 100.

[0042] Memory 114 stores the distributed file system control program P11, the file protocol server program P13, the block protocol server program P15, and the node management table T11. Note that memory 114 may store only the block protocol server program P15, or it may store only the distributed file system control program P11, the file protocol server program P13, and the node management table T11, excluding the block protocol server program P15. Furthermore, each program and data stored in memory 114 may also be stored in the storage device 116.

[0043] The distributed file system control program P11, executed by the CPU 113, works in conjunction with other distributed file system control programs P11 on FE-I / F 110 to manage and control the distributed file system and provide the distributed file system (FS2 in Figure 1) to the file protocol server program P13. The distributed file system control program P11 distributes data to each FE-I / F 110 and stores the data in the logical volume assigned to itself. The storage of data in the logical volume may be done via the block protocol server program P15, or it may be done by directly communicating with the block storage control program P1 stored in the memory 140 of the controller 100 using the internal I / F 112.

[0044] The file protocol server program P13 receives various requests such as Read / Write from clients 40 and other devices, and processes the file protocols included in these requests. Specifically, the file protocols processed by the file protocol server program P13 include, for example, NFS (Network File System), CIFS (Common Internet File System), file system-specific protocols, or HTTP (HyperText Transfer Protocol).

[0045] The block protocol server program P15 receives various requests such as Read / Write from clients 40 and other devices, and processes the block protocols included in these requests. Specifically, the block protocols processed by the block protocol server program P15 include iSCSI (Internet Small Computer System Interface) or FC (Fibre Channel), for example.

[0046] Cache 150 temporarily stores data written from client 40 and data read from block storage control program P1.

[0047] The memory device 116 stores the FE-I / F110's operating system, management information, and other such information.

[0048] Figure 4 shows an example configuration of client 40. As shown in Figure 4, client 40 has a network interface 41, a CPU 42, memory 43, and a storage device 44. These components are interconnected by a communication path, such as a bus.

[0049] Network I / F41 is an interface device for communicating with Unified Storage 1.

[0050] The CPU 42 is a processor that controls the operation of the client 40. The memory 43 temporarily stores programs and data used for operation control by the CPU 42. The memory 43 stores the application program P41, the file protocol client program P43, and the block protocol client program P45. The memory 43 may store only the application program P41 and the block protocol client program P45, or only the application program P41 and the file protocol client program P43. In addition, each program and data stored in the memory 43 may be stored in the storage device 44.

[0051] The application program P41, when executed by the CPU 42, requests the file protocol client program P43 and the block protocol client program P45 to read and write data to the unified storage 1.

[0052] The file protocol client program P43 receives various requests such as Read / Write from application programs P11 and other programs, and processes the file protocols included in these requests. Specifically, the file protocols processed by the file protocol server program P43 include, for example, NFS (Network File System), CIFS (Common Internet File System), file system-specific protocols, or HTTP (HyperText Transfer Protocol). Furthermore, if the file protocol processed by the file protocol server program P43 is a data distribution-compatible protocol such as pNFS (Parallel NFS) or a client-specific protocol (e.g., Ceph), the file protocol client program P43 may calculate the destination node for the data (calculation of the destination node for the target data as shown in Figure 9).

[0053] The block protocol server program P45 receives various requests such as Read / Write from clients 40 and other devices, and processes the block protocols included in these requests. Specifically, the block protocols processed by the block protocol server program P15 include iSCSI or FC, for example.

[0054] The storage device 44 stores the operating system and management information of the client 40.

[0055] Figure 5 shows an example of data distribution in the first embodiment. In the unified storage 1 according to this embodiment, files received from the client 40 by the distributed file system control program P11 are stored in chunks on logical volumes of the FE-I / F110 that span multiple controllers 100, thereby protecting the data. Furthermore, within each controller 100, files are distributed and placed on multiple logical volumes of the FE-I / F110.

[0056] Specifically, in the case of Figure 5, for file 1001 (FileA), for example, for file 1001 (FileA) which consists of chunks 1011 to 1014, the distributed file system control program P11 determines that the FE-I / F110 managing chunk 1011 (chunk A) is the FE-I / F110 of "#0" in controller 100 "#0" and the FE-I / F110 of "#3" in controller 100 "#1". Also, for chunk 1012 (chunk B), the FE-I / F110 managing chunk 1012 (chunk B) is determined to be the FE-I / F110 of "#0" in controller 100 "#0" and the FE-I / F110 of "#2" in controller 100 "#1". Furthermore, the FE-I / F110s responsible for managing chunk 1013 (chunk C) are determined to be FE-I / F110 #1 in controller #0 and FE-I / F110 #2 in controller #1. Similarly, the FE-I / F110s responsible for managing chunk 1014 (chunk D) are determined to be FE-I / F110 #1 in controller #0 and FE-I / F110 #3 in controller #1. Then, the distributed file system control program P11 of each FE-I / F110 stores chunks A, B, C, and D in the logical volume of the FE-I / F110 that manages them.

[0057] Furthermore, if the number of controllers 100 is three or more, data may be distributed not only within each controller 100 but also among the controllers 100. In this case, data protection may be triple data protection or higher, where the same data is stored in three or more FE-I / F110s, rather than double data protection where the same data is stored in two FE-I / F110s.

[0058] Furthermore, the distributed placement of data described above is not limited to user data; similar data protection across controllers 100 and distributed placement among FE-I / F110s may also be applied to file metadata or file system metadata.

[0059] Figure 6 shows an example of a node management table T11. The node management table T11 manages which controller 100 each FE-I / F110 (node) is connected to, and whether or not a node is experiencing a failure. For example, the management terminal 50 monitors for failures and updates the node management table T11 based on the monitoring results. In Unified Storage 1, each FE-I / F110 maintains the same node management table T11.

[0060] The node management table T11 shown in Figure 6 consists of a node ID C11, a controller ID C12, and a status C13. The node ID C11 is an identifier assigned to each FE-I / F110. The controller ID C12 is an identifier assigned to each controller. The status C13 indicates whether or not a node has failed, and in this example, it holds the value of "normal" or "failed". If a failure occurs in controller 100, the nodes (FE-I / F110) connected to that controller 100 will also be in the "failed" state.

[0061] Figure 7 is a flowchart illustrating an example of the file storage process. The file storage process shown in Figure 7 is executed when any of the FE-I / F110s receives a file storage request from the client 40. The file storage process is performed by the CPU 113 of the FE-I / F110 mounted on the controller 100, which executes the file protocol server program P13 and the distributed file system control program P11.

[0062] As shown in Figure 7, first, the file protocol server program P13, which receives a file storage request from client 40, performs protocol processing and requests the distributed file system control program P11 to store the file (step S101).

[0063] Next, the distributed file system control program P11 calculates the destination node for storing the target data (file) (step S103). The detailed procedure for calculating the destination node for the target data will be described later with reference to Figures 9 and 10. Depending on the data write offset and size, the target data may be divided into multiple chunks (see Figure 5). In this case, the distributed file system control program P11 calculates the destination node for each chunk in step S103.

[0064] Next, the distributed file system control program P11 requests the destination node calculated in step S103 to write the target data (step S105). If the target data is divided into multiple chunks, the distributed file system control program P11 executes the process in step S105 for each chunk. Furthermore, the write requests for multiple chunks may be performed in parallel.

[0065] Furthermore, if the file protocol processed by the client 40's file protocol server program P43 is a data distribution-compatible protocol such as pNFS or a client-specific protocol, then steps S101 to S105 are performed by the client 40.

[0066] Next, in response to the data write request in step S105, the distributed file system control program P11 at the storage node for the target data (FE-I / F110) receives the data write request and performs the process of writing the data to the area corresponding to that data (step S107). Then, when the distributed file system control program P11 completes the data writing process, it responds with completion to the data write request in step S105 (step S109).

[0067] Next, at the node (FE-I / F110) that received the file storage request from client 40, the distributed file system control program P11 receives a completion response for the data write request from the distributed file system control program P11 of the destination node and responds to the file protocol server program P13 that the file storage is complete. Furthermore, the file protocol server program P13 performs protocol processing and responds to client 40 that the file storage request is complete (step S111), and terminates the file storage process.

[0068] Figure 8 is a flowchart illustrating an example of the file reading process. The file reading process shown in Figure 8 is executed when any of the FE-I / F110s receives a file reading request from the client 40. The file reading process is performed by the CPU 113 of the FE-I / F110 mounted on the controller 100, which executes the file protocol server program P13 and the distributed file system control program P11.

[0069] As shown in Figure 8, first, the file protocol server program P13, which receives a file read request from client 40, performs protocol processing and requests the distributed file system control program P11 to read the file (step S201).

[0070] Next, the distributed file system control program P11 calculates the destination node for storing the target data (file) (step S203). The process of calculating the destination node for the target data is the same as in step S103 in Figure 7, and the detailed processing procedure will be described later with reference to Figures 9 and 10. Depending on the data read offset and size, the target data may be divided into multiple chunks. In this case, the distributed file system control program P11 calculates the destination node for each chunk in step S203.

[0071] Next, the distributed file system control program P11 refers to the node management table T11 to check whether the storage node for the target data calculated in step S203 is in a normal state, and selects a storage node that is in a normal state (step S205). More specifically, if any of the storage nodes are in a failed state, the distributed file system control program P11 selects a storage node that is in a normal state. If all of the storage nodes are in a failed state, the distributed file system control program P11 returns an error to the client 40 and terminates the file reading process.

[0072] Next, the distributed file system control program P11 requests the destination node selected in step S205 to read the target data (step S207). If the target data is divided into multiple chunks, the distributed file system control program P11 executes steps S205 and S207 for each chunk. Furthermore, requests to read multiple chunks may be performed in parallel.

[0073] Furthermore, if the file protocol processed by the client 40's file protocol server program P43 is a data distribution-compatible protocol such as pNFS or a client-specific protocol, then steps S201 to S207 are performed by the client 40.

[0074] Next, in response to the data read request in step S207, the distributed file system control program P11 at the storage node for the target data (FE-I / F110) receives the data read request and performs the process of reading the data from the area corresponding to that data (step S209). Then, once the distributed file system control program P11 has completed the data read process, it returns the read data (read data) to the source of the data read request (step S211).

[0075] Next, at the node (FE-I / F110) that received the file storage request from client 40, the distributed file system control program P11 receives the read data from the distributed file system control program P11 at the destination node and returns the read data to the file protocol server program P13 (step S213). Furthermore, the file protocol server program P13 performs protocol processing and returns the read data to client 40 (step S213), and terminates the file reading process.

[0076] Figure 9 is a flowchart showing an example of the processing procedure for calculating the storage node for the target data. The process shown in Figure 9 is called and executed in step S103 of the file storage process shown in Figure 7, or in step S203 of the file reading process shown in Figure 8.

[0077] As shown in Figure 9, first, the distributed file system control program P11 calculates one destination node for the target data (step S301). Specifically, the distributed file system control program P11 determines the logical volume of the FE-I / F110 to store the "target data" specified in the file storage request in step S101 or the file read request in step S201, based on the file name and chunk offset. For example, it calculates a hash value for the file name and chunk offset, and determines the logical volume of the FE-I / F110 based on this hash value. By performing such processing, data can be distributed. Note that the method is not limited to using the file name and chunk offset; it may also be determined based on other information, such as the file's inode number and chunk serial number.

[0078] Next, the distributed file system control program P11 calculates an alternative storage node for the target data (step S303). The calculation method is the same as in step S301, but in this step, a hash value is calculated by adding a value that is the same each time a storage node for the same data is calculated to the file name and chunk offset.

[0079] Next, the distributed file system control program P11 refers to the node management table T11 and checks whether the destination node determined in step S301 and the destination node determined in step S303 are connected to different controllers 100 (step S305). If the two destination nodes are connected to different controllers 100 (YES in step S305), the program proceeds to step S307. On the other hand, if the two destination nodes are connected to the same controller 100 (NO in step S305), the program changes the value (for example, if the value added to the offset in the previous step S303 was 1, it changes it to 2), returns to step S303, and recalculates the destination node.

[0080] In step S307, the distributed file system control program P11 returns the list of destination nodes for the target data, which is a list of the destination nodes calculated in steps S301 and S303, to the calling node (FE-I / F110), and terminates processing.

[0081] Based on the calculation process for the storage node of the target data described above, multiple controller 100 nodes (FE-I / F110) can be selected as the storage node for the target data. This makes it possible to achieve data protection across controller 100. Furthermore, by using a hash value for each piece of data, the data can be distributed to each node connected to the same controller 100.

[0082] Although dual data protection is explained as an example, as shown in Figures 1 and 5, the unified storage 1 according to this embodiment may implement triple data protection with two or more controllers 100. When implementing triple data protection, the third storage node can be any storage node different from the two storage nodes, and is not limited to controller 100. Furthermore, if there are three or more controllers 100, the processes in steps S303 and S305 may be repeatedly executed so that three storage nodes connected to different controllers 100 can be selected.

[0083] The method for calculating the storage node for the target data shown in Figure 9 is subject to bias depending on the number of FE-I / F110s installed in each controller 100, as the calculated storage node is connected to a specific controller 100. Therefore, the calculation method shown in Figure 9 is suitable for situations where the storage of target data needs to be stored while considering the variability of resources in the storage control device 10.

[0084] Figure 10 is a flowchart showing another example of a processing procedure for calculating the storage node for the target data. The process shown in Figure 10 is called and executed in step S103 of the file storage process shown in Figure 7, or in step S203 of the file reading process shown in Figure 8, similar to the process in Figure 9.

[0085] Note that the process shown in Figure 10 primarily assumes that the memory control device 10 has three or more controllers 100, but it can also be executed with two controllers 100. In the case of two controllers 100, the processes in steps S401 to S405 described later can be omitted, and each controller 100 can be selected.

[0086] As shown in Figure 10, first, the distributed file system control program P11 calculates one controller to store the target data (step S401). Specifically, the distributed file system control program P11 determines the controller 100 that will store the "target data" specified in the file storage request in step S101 or the file read request in step S201, based on the file name and chunk offset. For example, it calculates a hash value for the file name and chunk offset and determines the controller 100 based on this hash value. Note that it is not limited to using the file name and chunk offset; it may also be determined based on other information, such as the file's inode number and chunk serial number.

[0087] Next, the distributed file system control program P11 calculates an alternative storage controller for the target data (step S403). The calculation method is the same as in step S401, but in this step, a hash value is calculated by adding a value that is the same each time a storage controller for the same data is calculated to the file name and chunk offset.

[0088] Next, the distributed file system control program P11 checks whether the controller 100 determined in step S401 and the controller 100 determined in step S403 are different controllers (step S405). If the two controllers 100 are different controllers (YES in step S405), the program proceeds to step S407. On the other hand, if the two controllers 100 are the same controller (NO in step S405), the program changes the value (for example, if the value added to the offset in the previous step S403 was 1, it changes it to 2), returns to step S403, and recalculates the destination controller.

[0089] In step S407, the distributed file system control program P11 calculates the storage node for the target data in each of the controllers 100 that have been determined as the storage destination controllers. Specifically, the distributed file system control program P11 determines the logical volume of the FE-I / F110 where the target data will be stored, based on the file name and chunk offset. For example, it calculates a hash value for the file name and chunk offset and determines the logical volume of the FE-I / F110 based on this hash value. By performing this process, the target data can be distributed across the nodes within the controller 100. Note that the method is not limited to using the file name and chunk offset; it may also be determined based on other information, such as the file's inode number and chunk serial number. Alternatively, the storage node may be calculated for only one storage destination controller, and the calculation result may be applied to each storage destination controller.

[0090] Finally, the distributed file system control program P11 returns the list of destination nodes for the target data, which is a list of the destination nodes calculated in step S407, to the calling node (FE-I / F110) (step S409), and terminates the process.

[0091] Based on the calculation process for the storage node of the target data described above, multiple controller 100 nodes (FE-I / F110) can be selected as the storage node for the target data. This makes it possible to achieve data protection across controller 100. Furthermore, by using a hash value for each piece of data, the data can be distributed to each node connected to the same controller 100.

[0092] The method for calculating the storage node for the target data shown in Figure 10 differs from the calculation method shown in Figure 9 in that the number of FE-I / F110s installed in each controller 100 does not affect which controller 100 the calculated storage node is connected to. Therefore, the calculation method shown in Figure 10 is suitable when attempting to evenly distribute the target data across multiple controllers 100 in the memory control device 10.

[0093] As described above, the Unified Storage 1 according to this embodiment is equipped with one or more channel adapters (specifically, FE-I / F100 with CPU113) on each of the multiple controllers 100, each having a processor that receives access requests and sends and receives them to the processor (CPU130) of the controller 100. The processors on the multiple channel adapters cooperate to operate a distributed file system, and the channel adapter requests two or more controllers 100 to distribute and store the data to be written as files across the multiple controllers 100. More specifically, the distributed file system recognizes the multiple controllers 100 and distributes and stores the multiple data related to the file requested to be written across multiple volumes on the multiple controllers 100 to ensure redundancy among the controllers 100, thereby maintaining the availability of the above data. Furthermore, by increasing the number of channel adapters on which the distributed file system operates in the controller 100, file performance can be scaled out. For this reason, the Unified Storage 1 according to this embodiment can achieve file processing scale-out without adding servers such as NAS heads, and the cost of scaling out can be suppressed.

[0094] In other words, the unified storage 1 according to this embodiment recognizes each controller 100 and stores multiple data related to a file that has been written to redundancy among the controllers 100 by distributing it across multiple volumes on multiple controllers. This ensures that all data can be accessed even if any of the controllers 100 or channel adapters (FE-I / F110) fail.

[0095] Therefore, according to the Unified Storage 1 of this embodiment, it is possible to maintain availability and scale out file performance while suppressing costs.

[0096] In this embodiment, as a function related to block storage in the unified storage 1, when the channel adapter (FE-I / F110) receives an access request for block data, it forwards the access request to the block storage control program P1 without going through the distributed file system. This is also the case in other embodiments described later.

[0097] (2) Second embodiment In the unified storage 1A according to the second embodiment of the present invention, in addition to the configuration of the unified storage 1 according to the first embodiment, each controller 100 has management hardware (management H / W) 160. A distributed file system control program P61 operates on the management H / W 160 of any one of the controllers 100. However, unlike the distributed file system control program P11 in the first embodiment, this distributed file system control program P61 does not perform file storage processing, etc., but only performs processing related to majority voting logic in the distributed file system. Management H / W 160 on which the distributed file system control program P61 does not operate checks whether there is a failure in the management H / W 160 across controllers 100, and performs failover processing of the distributed file system control program P61 if a failure occurs.

[0098] Figure 11 is a diagram showing an overview of the unified storage 1A according to the second embodiment.

[0099] As shown in Figure 11, in Unified Storage 1A, the fault management program P65 on the management hardware 160 of controller 100 (#1) monitors for failures in the management hardware 160 of controller 100 (#0), and when a failure occurs, the distributed file system control program P61 performs failover processing. Through this failover processing, Unified Storage 1A can maintain the majority voting logic of the distributed file system even after a failure occurs in controller 100, and can continue reading and writing data using the majority voting logic, as well as processing the distributed file system.

[0100] Figure 12 shows an example of the overall configuration of the storage system, including Unified Storage 1A. The configurations shown in Figure 12 that are common to the first embodiment will not be described.

[0101] Comparing the configuration in Figure 12 with the configuration in Figure 2, it can be seen that in the unified storage 1A according to the second embodiment, the management terminal 50 is not connected to the network 30 as in the first embodiment, but the controller 100 has management H / W 160.

[0102] The management hardware 160 is management hardware equipped with a user interface such as a GUI or CLI, in addition to a CPU and memory, and provides functions for users or operators to control and monitor the unified storage 1A. The management hardware 160 also executes processing related to majority voting logic in the distributed file system and performs failover processing of the distributed file system control program P61 in the event of a failure of the management hardware 160 installed (connected) to a different controller 100.

[0103] Figure 13 shows an example configuration of the management hardware 160. As shown in Figure 13, the management hardware 160 includes a network interface 161, an internal interface 162, a CPU 163, memory 164, and a storage device 165. These components are interconnected by a communication path, such as a bus.

[0104] Network I / F 161 is an interface device for communicating with external devices such as client 40 and the distributed file system control program P11 of FE-I / F 110. Note that communication with external devices such as client 40 and communication with FE-I / F 110 may be performed using different network interfaces. Internal I / F 162 is an interface device for communicating with the block storage control program P1. Internal I / F 112 is connected, for example, to the CPU 130 of controller 100 via PCIe.

[0105] CPU 163 is a processor that controls the operation of management hardware 160. Memory 164 temporarily stores programs and data used for operation control by CPU 163. Memory 164 stores the distributed file system control program P61, the storage management program P63, and the fault management program P65.

[0106] Unlike the distributed file system control program P11 of the FE-I / F110 in the first embodiment, the distributed file system control program P61 does not perform file storage processing, etc., and only performs processing related to the majority voting logic in the distributed file system 2. The operation of the distributed file system, including file storage processing, etc., is realized by the distributed file system control program P11 of the FE-I / F110, as in the first embodiment. Note that information requiring persistence is not limited to being stored in memory 164, but may also be stored in a logical volume provided by block storage.

[0107] The storage management program P63 features a user interface, such as a GUI or CLI, and provides functions for users or operators to control and monitor the Unified Storage 1A.

[0108] The fault management program P65 runs on management hardware 160 where the distributed file system control program P61 is not running. The fault management program P65 checks whether there are any failures on management hardware 160 across controllers and performs failover processing for the distributed file system control program P61 if a failure occurs.

[0109] In other words, under normal circumstances when no failures occur, the management hardware 160 of one controller 100 (the first controller) (for example, management hardware 160 of #0) performs processing related to majority voting logic by executing the distributed file system control program P61, and the management hardware 160 of the other controller 100 (the second controller) (for example, management hardware 160 of #1) monitors for failures in management hardware 160 of #0 by executing the failure management program P65. If a failure occurs in management hardware 160 of #0 (which may be interpreted as the node or controller to which management hardware 160 is connected), the failure management program P63 of management hardware 160 of #1 performs failover processing for the distributed file system control program P61 of management hardware 160 of #0.

[0110] In the cases of Figures 11 and 12, since the Unified Storage 1A has two controllers 100, one can be designated as the first controller and the other as the second controller. If the Unified Storage 1A has three or more controllers 100, then configuration information should be prepared to pair these controllers 100 (or the management H / W 160 installed on the controllers 100).

[0111] The memory device 165 stores the operating system and management information of the management hardware 160.

[0112] Figure 14 is a flowchart showing an example of the failover processing procedure in the second embodiment. The failover processing shown in Figure 14 is performed, for example, by the CPU 163 of the management H / W 160 executing the fault management program P65 at regular intervals.

[0113] According to Figure 14, first, the fault management program P65 obtains the status of the other management H / W160 (step S501) and checks whether a fault has occurred in the management H / W160 (step S503). If a fault has occurred (YES in step S503), the program proceeds to step S505; if no fault has occurred (NO in step S503), the process terminates.

[0114] Then, in step S505, the fault management program P65 fails over the distributed file system control program P61 on the other management H / W160. At this time, if necessary for the failover, the fault management program P65 may mount the logical volume that the distributed file system control program P61 was using and access the data.

[0115] As a result of the failover process described above, the unified storage 1A according to the second embodiment can maintain the majority voting logic of the distributed file system even after a failure occurs in the controller 100, and can continue reading and writing data using the majority voting logic, as well as processing the distributed file system.

[0116] Furthermore, Unified Storage 1A has the same configuration as Unified Storage 1 according to the first embodiment, except for the management H / W 160, and various processes such as file storage and file reading are executed using the same processing procedures as in the first embodiment. Therefore, Unified Storage 1A according to the second embodiment can also obtain the same effects as Unified Storage 1 according to the first embodiment.

[0117] (3) Third Embodiment In the unified storage 1B according to the third embodiment of the present invention, similar to the configuration of the unified storage 1 according to the first embodiment, each of the multiple controllers 100 is equipped with one or more high-performance front-end interfaces (FE-I / F) 170, and a distributed file system is operated using the CPU and memory on the FE-I / F 170. Furthermore, as a difference from the first embodiment, in the unified storage 1B according to the third embodiment, fault monitoring is performed between FE-I / F 170 across controllers, and if a failure occurs in any controller, the FE-I / F 170 of the controller that has not failed takes over the processing of the FE-I / F 170 of the failed controller, and performs failover processing by restoring the data stored in the failed controller using the data stored by the controller that has not failed from the data stored redundantly (e.g., parity) between controllers. In the third embodiment, data protection is not performed at the file layer, but data protection may be performed at the block storage.

[0118] Figure 15 shows an overview of the unified storage 1B according to the third embodiment.

[0119] As shown in Figure 15, in Unified Storage 1B, the distributed file system control program P11 runs on each FE-I / F170 installed on controller #0 100 and controller #1 100, configuring the distributed file system 2. In addition, the fault management program P17 runs on the FE-I / F170, enabling fault monitoring between FE-I / F170s across controllers 100.

[0120] In the case of Figure 15, when the fault management program P17 running on FE-I / F170 #M+1 detects a fault in FE-I / F170 #0, it assigns the logical volume used by FE-I / F170 #0 (Logical Vol of #0) to the logical volume used by its own FE-I / F170 (Logical Vol of #M+1). Similarly, when the fault management program P17 running on FE-I / F170 #N detects a fault in the monitored FE-I / F170 #M, it assigns the logical volume used by FE-I / F170 #M (Logical Vol of #M) to the logical volume used by its own FE-I / F170 (Logical Vol of #N).

[0121] This failover process allows the Unified Storage 1B to continue accessing data via the FE-I / F170 of the corresponding other controller 100, even after a failure occurs in one controller 100.

[0122] Figure 16 shows an example configuration of the FE-I / F170. As shown in Figure 16, the FE-I / F170 has a network I / F111, an internal I / F112, a CPU113, a memory 171, a cache 115, and a storage device 116. These components are interconnected by a communication path, such as a bus. Below, we will describe components that differ from those of the FE-I / F110 shown in Figure 3.

[0123] Memory 171 stores the distributed file system control program P11, the file protocol server program P13, the block protocol server program P15, and the node management table T11, similar to the memory 114 of the FE-I / F110. Note that, unlike the first embodiment, the distributed file system control program P11 in memory 171 may only distribute the data without protecting it across controllers 100.

[0124] Furthermore, memory 171 stores the fault management program P17 and the fault pair management table T12, which are programs and data not found in the memory 114 of the FE-I / F110.

[0125] The fault management program P17 identifies the FE-I / F170 (fault pair node) of the fault pair based on the fault pair management table T12, and checks whether the fault pair node is faulty based on the node management table T11. If the fault pair node is faulty, the fault management program P17 assigns the logical volume that the distributed file system control program P11 was using on the fault pair's FE-I / F170 to its own node, making it accessible from the distributed file system control program P11 on its own node.

[0126] Figure 17 shows an example of a fault pair management table T12. The fault pair management table T12 manages information on combinations (fault pairs) of nodes (FE-I / F170) and controllers 100 that monitor for fault occurrences. The fault pair management table T12 is created during system construction and may be updated by administrators or others at any time.

[0127] The fault pair management table T12 shown in Figure 17 consists of node ID pair C21 and controller ID pair C22. Node ID pair C21 is a combination of identifiers for FE-I / F170s installed in different controllers 100. Controller ID pair C22 is a combination of identifiers for controllers 100 on which each FE-I / F170 shown in node ID pair C21 is installed.

[0128] Specifically, for example, if the value of node ID pair C21 is (0,3) and the value of controller ID pair C22 is (0,1), it means that FE-I / F170 (node) #0 installed on controller 100 #0 and FE-I / F170 (node) #3 installed on controller 100 #1 are in a faulty pair.

[0129] Figure 18 is a flowchart showing an example of the failover processing procedure in the third embodiment. The failover processing shown in Figure 18 is performed, for example, at regular intervals or when a failure notification is received from a management terminal 50 (see Figure 2) connected to the Unified Storage 1B via the network 30. The failover processing is performed by the CPU 130 of the FE-I / F 170 mounted on the controller 100 executing the failure management program P17.

[0130] As shown in Figure 18, first, the fault management program P17 refers to the node management table T11 and obtains information about the faulty node where the failure is occurring (step S601). The structure of the node management table T11 is as illustrated in Figure 6 in the first embodiment.

[0131] Next, the fault management program P17 refers to the fault pair management table T12 and checks whether the fault node whose information was obtained in step S601 is the fault pair node of its own node (step S603). If the fault node is the fault pair node (YES in step S603), the program proceeds to step S605. If the fault node is not the fault pair node (NO in step S603), the process terminates.

[0132] Then, in step S605, the fault management program P17 allocates the logical volume that was being used by the distributed file system control program P11 of the faulty pair node to its own node. The allocation of the logical volume may be done via the block protocol server program P15, or it may be requested directly from the block storage control program P1 stored in the memory 140 of the controller 100 using the internal I / F 112.

[0133] The file storage and file reading processes in the unified storage 1B according to the third embodiment are the same as the processing procedures shown in Figures 7 and 8 in the first embodiment. However, if data is not protected across controllers 100, since there is no redundancy, it is sufficient to calculate only one storage node instead of the processing steps S301 to S305 for calculating the storage node of the target data shown in Figure 9. Furthermore, if data is not protected across controllers 100 in the third embodiment, the example processing procedure for calculating the storage node of the target data shown in Figure 10 is not adopted.

[0134] Although the Unified Storage 1B described above does not protect data across controllers 100, as a modification of the third embodiment, Unified Storage 1B may adopt a redundant configuration similar to the first embodiment to protect data across controllers 100.

[0135] As described above, the unified storage 1B according to the third embodiment does not have a configuration that provides data protection across controllers 100 (in other words, data protection between logical volumes of different controllers), but it can operate a distributed file system using multiple channel adapters (FE-I / F170) installed on each of the multiple controllers 100. Furthermore, the unified storage 1B according to the third embodiment monitors failures in the failed pair node by executing the failure management program P17 within the channel adapter using the above-mentioned combination of channel adapters (FE-I / F170) across controllers 100. If a failure occurs in a controller 100 including the channel adapter and processor (CPU130), the channel adapter of the controller 100 that has not failed takes over the processing of the channel adapter of the failed controller 100, restores the data stored in the failed controller 100 based on redundancy, and continues processing, thereby achieving failover. Therefore, the unified storage 1B according to the third embodiment has the effect of maintaining the availability of the storage system and enabling file performance scaling out while suppressing the increase in cost due to the addition of servers.

[0136] (4) Fourth Embodiment In the Unified Storage 1C according to the fourth embodiment of the present invention, similar to the configuration of Unified Storage 1 according to the first embodiment, each of the multiple controllers 100 is equipped with one or more high-performance front-end interfaces (FE-I / F) 180. In Unified Storage 1C, a difference from the first to third embodiments is that the CPU and memory on the FE-I / F 180 are used to operate the local file system 3.

[0137] Furthermore, in Unified Storage 1C, similar to Unified Storage 1B according to the third embodiment, fault monitoring is performed between FE-I / F180s across controllers. If a failure occurs in any controller, the FE-I / F180 of the controller that is not experiencing a failure takes over the processing of the FE-I / F180 of the failed controller. Failover processing is performed by restoring the data stored in the failed controller using the data stored by the non-failed controller from the data stored redundantly (e.g., parity) between controllers. In the fourth embodiment, data protection is not performed at the file layer, but at the block storage.

[0138] Figure 19 is a diagram showing an overview of the unified storage 1C according to the fourth embodiment.

[0139] As shown in Figure 19, in Unified Storage 1C, the file system program P12 runs on each FE-I / F180 installed on controller #0 100 and controller #1 100, configuring a file system 3 for each FE-I / F180. In addition, the fault management program P17 runs on the FE-I / F170, performing fault monitoring between FE-I / F170s across controllers 100. Due to the operation of the fault management program P17, failover processing is performed when a controller 100 fails, so that in Unified Storage 1C, even if one controller 100 fails, data can be continuously accessed via the corresponding FE-I / F180 of the other controller 100.

[0140] Figure 20 shows an example configuration of the FE-I / F180. Compared to the FE-I / F170 shown in Figure 16 in the third embodiment, the FE-I / F180 shown in Figure 20 has a file system program P12 in memory 181 instead of the distributed file system control program P11.

[0141] The file system program P12, when executed by the CPU 113, provides the file protocol server program P13 with a local file system (file system 3). The file system program P12 stores data in the logical volume allocated to itself. The storage of data in the logical volume may be done via the block protocol server program P15, or it may be done by directly communicating with the block storage control program P1 (see Figure 2) stored in the memory 140 of the controller 100 using the internal I / F 112.

[0142] The fault management program P17 identifies the FE-I / F180 (fault pair node) of the fault pair based on the fault pair management table T12, and checks whether the fault pair node is faulty based on the node management table T11. If the fault pair node is faulty, the fault management program P17 assigns the logical volume that the file system program P12 was using on the fault pair's FE-I / F180 to its own node, making it accessible from the file system program P12 on its own node.

[0143] Figure 21 is a flowchart showing an example of the failover processing procedure in the fourth embodiment. The failover processing shown in Figure 21 is performed, for example, at regular intervals or when a failure notification is received from a management terminal 50 (see Figure 2) connected to the Unified Storage 1C via the network 30. The failover processing is performed by the CPU 130 of the FE-I / F180 mounted on the controller 100 executing the failure management program P17.

[0144] As shown in Figure 21, first, the fault management program P17 refers to the node management table T11 and obtains information about the faulty node where the failure has occurred (step S701). The structure of the node management table T11 is as illustrated in Figure 6 in the first embodiment.

[0145] Next, the fault management program P17 refers to the fault pair management table T12 and checks whether the fault node whose information was obtained in step S701 is the fault pair node of its own node (step S703). The structure of the fault pair management table T12 is as illustrated in Figure 17 in the third embodiment. If the fault node is the fault pair node in step S703 (YES in step S703), the program proceeds to step S705; if the fault node is not the fault pair node (NO in step S703), the process terminates.

[0146] In step S705, the fault management program P17 allocates the logical volume used by the file system program P12 of the faulty pair node to its own node. The allocation of the logical volume may be done via the block protocol server program P15, or it may be requested directly from the block storage control program P1 stored in the memory 140 of the controller 100 using the internal I / F 112.

[0147] Next, the fault management program P17 mounts the file system from the logical volume allocated in step S705 and provides the file system 3 to the file protocol server program P13 (step S707).

[0148] Then, the fault management program P17 assigns the virtual IP address used by the faulty pair node to its own node (step S709) and terminates the process.

[0149] As described above, by performing the failover process, in the unified storage 1C according to the fourth embodiment, even after a failure occurs in the controller 100, data can be continuously accessed via the failure pair node of the corresponding controller (see controller ID pair C22 and node ID pair C21 in Figure 17). [Explanation of Symbols]

[0150] 1,1A,1B,1C Unified Storage 2. Distributed File Systems 3 File System 10 Memory control device 20 Storage device units 21. Physical Devices (PDEV) 30 Networks 40 clients 41,111,161 Network Interfaces 42,113,130,163 CPU 43,114,140,164,171 memory 44,116,165 Storage devices 50 Management terminals 100 controllers 110, 170, 180 Front-end interface (FE-I / F) 112,162 Internal I / F 115,150 cash 120 Backend Interface (BE-I / F) 160 Management Hardware (Management H / W) P1 Block Storage Control Program P11, P61 Distributed File System Control Program P12 File System Program P13 File Protocol Server Program P15 Block Protocol Server Program Pages 17 and 65: Disaster Management Program P41 Application Program P43 File Protocol Client Program P45 Block Protocol Client Program P63 Storage Management Program T11 Node Management Table T12 Fault Pair Management Chart

Claims

1. Unified storage that functions as block storage and file storage, It has multiple controllers that are storage controllers and storage devices. Each of the aforementioned multiple controllers is equipped with one or more main processors and channel adapters. The main processor runs a block storage control program to process the data input to and output from the storage device. The channel adapter has a processor, and the processor receives an access request and sends and receives it to the main processor. The processors of the multiple channel adapters work together to operate a distributed file system and request the multiple controllers to distribute and store the data to be written as files. Each of the aforementioned multiple controllers is equipped with management hardware having a processor and memory resources. The aforementioned multiple controllers have a pair relationship established between themselves and one other controller. The first management hardware on one of the controllers in the paired relationship operates the processing related to the majority voting logic in the distributed file system, which is operated by the distributed file system control program, by having the processor execute a first program stored in the memory resources of the management hardware. The second management hardware on the other controller in the paired relationship monitors for failures of the first management hardware by having the processor execute a second program stored in the memory resources of the management hardware, and if a failure occurs in the first management hardware, it fails over the distributed file system. Unified storage characterized by the following:

2. Unified storage that functions as block storage and file storage, It has multiple controllers that are storage controllers and storage devices. Each of the aforementioned multiple controllers is equipped with one or more main processors and channel adapters. The main processor runs a block storage control program to process the data input to and output from the storage device. The channel adapter has a processor, and the processor receives an access request and sends and receives it to the main processor. The processors of the multiple channel adapters work together to operate a distributed file system and request the multiple controllers to distribute and store the data to be written as files. If a failure occurs in the controller including the channel adapter and the main processor, the channel adapter of the controller that is not experiencing the failure will take over the processing of the channel adapter of the failed controller, and using the data stored by the non-failed controller from the redundant data stored between the controllers, it will restore the data stored in the failed controller based on the redundancy and continue processing. Unified storage characterized by the following:

3. Unified storage that functions as block storage and file storage, It has multiple controllers that are storage controllers and storage devices. Each of the aforementioned multiple controllers is equipped with one or more main processors and channel adapters. The main processor runs a block storage control program to process the data input to and output from the storage device. The channel adapter has a processor, and the processor receives an access request and sends and receives it to the main processor. The processors of the multiple channel adapters work together to operate a distributed file system and request the multiple controllers to distribute and store the data to be written as files. The block storage control program of the controller provides volumes, The processor of the channel adapter stores data in the volume, The controller in 1 is capable of providing multiple volumes, The distributed file system recognizes the multiple controllers and distributes and stores the multiple data related to the files across multiple volumes on the multiple controllers in order to provide redundancy among the controllers. When any of the channel adapters receives a request to store a file, The distributed file system control program running on the channel adapter, Based on the storage request, one of the channel adapters to be used as the data storage destination for the file is determined. Furthermore, the process of sequentially selecting one channel adapter from among the multiple channel adapters mounted on the multiple controllers is repeated. If the channel adapter determined above and the selected channel adapter are channel adapters mounted on different controllers, both channel adapters are determined to be the channel adapters for data storage. Unified storage characterized by the following:

4. Unified storage that functions as block storage and file storage, It has multiple controllers that are storage controllers and storage devices. Each of the aforementioned multiple controllers is equipped with one or more main processors and channel adapters. The main processor runs a block storage control program to process the data input to and output from the storage device. The channel adapter has a processor, and the processor receives an access request and sends and receives it to the main processor. The processors of the multiple channel adapters work together to operate a distributed file system and request the multiple controllers to distribute and store the data to be written as files. The block storage control program of the controller provides volumes, The processor of the channel adapter stores data in the volume, The controller in 1 is capable of providing multiple volumes, The distributed file system recognizes the multiple controllers and distributes and stores the multiple data related to the files across multiple volumes on the multiple controllers in order to provide redundancy among the controllers. When any of the channel adapters receives a request to store a file, The distributed file system control program running on the channel adapter, Based on the storage request, one of the controllers having a data storage location for the file is determined. Furthermore, the process of sequentially selecting one controller from the aforementioned multiple controllers is repeated. If the controller determined above and the selected controller are different controllers, then the channel adapter to be used as the data storage destination is determined for each of the two controllers. Unified storage characterized by the following:

5. A method for controlling unified storage that functions as block storage and file storage, The aforementioned unified storage comprises a plurality of controllers, which are storage controllers, and storage devices. Each of the aforementioned multiple controllers is equipped with one or more main processors and channel adapters. The main processor runs a block storage control program to process the data input to and output from the storage device. The channel adapter has a processor, and the processor receives an access request and sends and receives it to the main processor. The processors of the multiple channel adapters work together to operate a distributed file system, distributing and storing data to be written as files to the multiple controllers. Each of the aforementioned multiple controllers is equipped with management hardware having a processor and memory resources. The aforementioned multiple controllers have a pair relationship established between themselves and one other controller. The first management hardware on one of the controllers in the paired relationship operates the processing related to the majority voting logic in the distributed file system, which is operated by the distributed file system control program, by having the processor execute a first program stored in the memory resources of the management hardware. The second management hardware on the other controller in the paired relationship monitors for failures of the first management hardware by having the processor execute a second program stored in the memory resources of the management hardware, and if a failure occurs in the first management hardware, it fails over the distributed file system. A method for controlling unified storage characterized by the following features.

6. A method for controlling unified storage that functions as block storage and file storage, The aforementioned unified storage comprises a plurality of controllers, which are storage controllers, and storage devices. Each of the aforementioned multiple controllers is equipped with one or more main processors and channel adapters. The main processor runs a block storage control program to process the data input to and output from the storage device. The channel adapter has a processor, and the processor receives an access request and sends and receives it to the main processor. The processors of the multiple channel adapters work together to operate a distributed file system, distributing and storing data to be written as files to the multiple controllers. If a failure occurs in the controller including the channel adapter and the main processor, the channel adapter of the controller that is not experiencing the failure will take over the processing of the channel adapter of the failed controller, and using the data stored by the non-failed controller from the redundant data stored between the controllers, it will restore the data stored in the failed controller based on the redundancy and continue processing. A method for controlling unified storage characterized by the following features.

7. A method for controlling unified storage that functions as block storage and file storage, The aforementioned unified storage comprises a plurality of controllers, which are storage controllers, and storage devices. Each of the aforementioned multiple controllers is equipped with one or more main processors and channel adapters. The main processor runs a block storage control program to process the data input to and output from the storage device. The channel adapter has a processor, and the processor receives an access request and sends and receives it to the main processor. The processors of the multiple channel adapters work together to operate a distributed file system, distributing and storing data to be written as files to the multiple controllers. The block storage control program of the controller provides volumes, The processor of the channel adapter stores data in the volume, The controller in 1 is capable of providing multiple volumes, The distributed file system recognizes the multiple controllers and distributes and stores the multiple data related to the files across multiple volumes on the multiple controllers in order to provide redundancy among the controllers. When any of the channel adapters receives a request to store a file, The distributed file system control program running on the channel adapter, Based on the storage request, one of the channel adapters to be used as the data storage destination for the file is determined. Furthermore, the process of sequentially selecting one channel adapter from among the multiple channel adapters mounted on the multiple controllers is repeated. If the channel adapter determined above and the selected channel adapter are channel adapters mounted on different controllers, both channel adapters are determined to be the channel adapters for data storage. A method for controlling unified storage characterized by the following features.

8. A method for controlling unified storage that functions as block storage and file storage, The aforementioned unified storage comprises a plurality of controllers, which are storage controllers, and storage devices. Each of the aforementioned multiple controllers is equipped with one or more main processors and channel adapters. The main processor runs a block storage control program to process the data input to and output from the storage device. The channel adapter has a processor, and the processor receives an access request and sends and receives it to the main processor. The processors of the multiple channel adapters work together to operate a distributed file system, distributing and storing data to be written as files to the multiple controllers. The block storage control program of the controller provides volumes, The processor of the channel adapter stores data in the volume, The controller in 1 is capable of providing multiple volumes, The distributed file system recognizes the multiple controllers and distributes and stores the multiple data related to the files across multiple volumes on the multiple controllers in order to provide redundancy among the controllers. When any of the channel adapters receives a request to store a file, The distributed file system control program running on the channel adapter, Based on the storage request, one of the controllers having a data storage location for the file is determined. Furthermore, the process of sequentially selecting one controller from the aforementioned multiple controllers is repeated. If the controller determined above and the selected controller are different controllers, then the channel adapter to be used as the data storage destination is determined for each of the two controllers. A method for controlling unified storage characterized by the following features.