Client, I / O server, method, and program

The client and I/O server system optimizes I/O routes by considering data transfer costs, addressing inefficiencies in existing technologies and improving shared file system throughput.

JP7616209B2Active Publication Date: 2025-01-17NEC CORP
View PDF 9 Cites 0 Cited by

Patent Information

Application Number
JP2022508375
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-03-18
Filing Date
2021-03-16
Publication Date
2025-01-17
Estimated Expiration
2041-03-16

AI Technical Summary

Technical Problem

Existing technologies fail to consider data transfer costs between memory and CPU in selecting I/O routes, particularly in multi-CPU or multi-core systems, leading to inefficient data transfer.

Method used

A client and I/O server system that includes mechanisms for determining optimal communication routes based on route information, which identifies recording disks and components within the I/O server, allowing clients to issue I/O requests efficiently.

Benefits of technology

This system minimizes data movement and improves the throughput of the entire shared file system by optimizing I/O routes based on path costs, enhancing overall performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007616209000001
    Figure 0007616209000001
  • Figure 0007616209000002
    Figure 0007616209000002
  • Figure 0007616209000003
    Figure 0007616209000003
Patent Text Reader

Abstract

A client according to the present invention is provided with: a reception unit which receives pathway information from an I / O server, the pathway information including information for identifying a recording disk and information for identifying components in the I / O server to be used by the client as a communication pathway to the recording disk; a communication pathway determination unit which determines the communication pathway to the recording disk on the basis of the pathway information; and an I / O request issuance unit which issues an I / O request on the basis of the communication pathway.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to a client, an I / O server, a method, and program Regarding. [Background technology]

[0002] In recent years, the data transfer speed of I / O (Input / Output) buses (e.g., PCI Express, etc.) within computer nodes and external networks has increased, and the cost of data transfer between memory and CPU (Central Processing Unit) is becoming increasingly difficult to ignore. This is particularly true in multi-CPU or multi-core systems.

[0003] Regarding the selection of a data transfer path, for example, Patent Document 1 below describes a technology for selecting a specific path based on connection information that indicates the connection between interconnects in an information processing device. Also, Patent Document 2 below describes a technology for detecting the occurrence of a bottleneck based on the state of each element of a storage system and selecting a path that avoids the bottleneck. [Prior art documents] [Patent documents]

[0004] [Patent Document 1] Japanese Patent Application Publication No. 2015-156158 [Patent Document 2] Japanese Patent Application Publication No. 2005-309748 Summary of the Invention [Problem to be solved by the invention]

[0005] However, the above technique has a problem in that the client cannot select a transfer path taking into account the cost of data transfer between the memory and the CPU on the I / O server side.

[0006] An example of the object of the present invention is to provide a client, an I / O server, a method, and program The purpose of this invention is to provide [Means for solving the problem]

[0007] According to a first aspect of the present invention, a client comprises a receiving means for receiving route information from an I / O server, the route information including information for identifying a recording disk and information for identifying a component within the I / O server that the client should use as a communication path to the recording disk, a communication route determination means for determining a communication route to the recording disk based on the route information, and an I / O request issuing means for issuing an I / O request based on the communication route.

[0008] According to a second aspect of the present invention, an I / O server includes a transmitting means for transmitting path information to a client, the path information including information identifying a recording disk and information identifying a component within the I / O server that should be used by the client as a communication path to the recording disk.

[0009] According to a third aspect of the present invention, a method includes the steps of receiving route information from an I / O server, the route information including information identifying a recording disk and information identifying a component within the I / O server to be used by the client as a communication path to the recording disk, determining a communication path to the recording disk based on the route information, and issuing an I / O request based on the communication path, and is executed by the client.

[0010] According to a fourth aspect of the present invention, a method includes a step of transmitting path information to a client, the path information including information identifying a recording disk and information identifying a component within the I / O server that should be used by the client as a communication path to the recording disk, and is executed by the I / O server.

[0011] According to a fifth aspect of the present invention, the recording medium is a recording medium storing a program for causing a computer to execute the steps of receiving route information from an I / O server, the route information including information identifying a recording disk and information identifying a component within the I / O server to be used by a client as a communication path to the recording disk, determining a communication path to the recording disk based on the route information, and issuing an I / O request based on the communication path.

[0012] According to a fifth aspect of the present invention, a recording medium is a recording medium storing a program for causing a computer to execute a step of transmitting to a client route information including information identifying a recording disk and information identifying a component in an I / O server that should be used by the client as a communication path to the recording disk. [Brief description of the drawings]

[0013] [Figure 1] 1 is a diagram showing the overall configuration of a distributed shared file system according to a first embodiment. [Diagram 2] FIG. 2 is a diagram showing a client 1 according to the first embodiment in more detail. [Diagram 3] FIG. 2 is a diagram illustrating an I / O server 2 according to the first embodiment in more detail. [Figure 4] FIG. 2 is a diagram showing in more detail the high-speed disk device 4 according to the first embodiment. [Diagram 5] FIG. 2 illustrates the costs of an exemplary I / O server. [Figure 6] FIG. 1 is a diagram illustrating the costs between an exemplary I / O server and a high-speed disk device. [Figure 7] FIG. 1 is a diagram showing the cost of an exemplary high-speed disk device 4. [Figure 8] FIG. 2 illustrates an example client cost diagram. [Figure 9] FIG. 1 illustrates costs between an exemplary client and an I / O server. [Figure 10]FIG. 4 is a diagram showing a processing flow of I / O servers 2 and 3 according to the first embodiment. [Figure 11] FIG. 13 is a diagram showing exemplary path information calculated by I / O server 2 (the result of calculating the shortest path to a disk). [Figure 12] FIG. 4 is a diagram showing a processing flow of a client 1 according to the first embodiment. [Figure 13] A figure showing an example of route information received by client 1 from I / O server 2 in the first embodiment, where part (A) shows an example of route information for I / O server #0 and part (B) shows an example of route information for I / O server #1. [Figure 14A] FIG. 11 is a diagram showing a processing flow in which a client 1 according to the first embodiment issues a write system call. [Figure 14B] FIG. 11 is a diagram showing a processing flow in which a client 1 according to the first embodiment issues a write system call. [Figure 15] FIG. 1 is a diagram showing an example I / O map (allocation of I / O servers, I / O server NW mechanisms, and disks). [Figure 16] FIG. 2 is a diagram illustrating an outline of an operation of a client 1 according to the first embodiment for issuing a write system call. [Figure 17] FIG. 13 is a diagram showing a processing flow when a client 1 issues a read system call. [Figure 18] FIG. 11 is a diagram showing the configuration of a distributed shared file system according to a second embodiment. [Figure 19] FIG. 11 is a diagram showing a processing flow of a distributed shared file system according to the second embodiment. [Figure 20] FIG. 11 is a diagram showing the configuration of a client 600 according to a third embodiment. [Figure 21] FIG. 13 is a diagram showing a configuration of an I / O server 700 according to the third embodiment. [Figure 22] FIG. 8 is a hardware configuration diagram of a control device 800 according to at least one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0014] <First embodiment> The distributed shared file system according to the first embodiment will be described below with reference to FIGS.

[0015] (Overall configuration of distributed shared file system) 1 is a diagram showing the overall configuration of a distributed shared file system according to the first embodiment. The distributed shared file system according to the first embodiment includes a client 1, an I / O server 2, an I / O server 3, and a high-speed disk device 4. In this embodiment, for ease of explanation, a distributed shared file system including two I / O servers is illustrated, but the number of I / O servers may be one, or three or more.

[0016] In the distributed shared file system, when a client 1 issues an I / O request, it receives the least costly I / O path information from the I / O servers 2 and 3, and uses that information to issue the I / O request. The client also creates its own optimal I / O communication path information, and issues an I / O request using that information. These mechanisms improve the throughput of the entire distributed shared file system.

[0017] (Client 1 configuration) The client 1 includes multiple network (hereinafter, NW) processing mechanisms 11. The NW processing mechanisms 11 are each connected to a high-speed network 5. In this embodiment, the client 1 includes two NW processing mechanisms 11, but in other embodiments, the client 1 may include one, or three or more NW processing mechanisms 11.

[0018] FIG. 2 is a diagram showing the client 1 according to the first embodiment in more detail. Referring to FIG. 2, the client 1 includes a NW processing mechanism #0 (111) and a NW mechanism #1 (112). The NW processing mechanism #0 (111) and the NW mechanism #1 (112) correspond to the NW processing mechanism 11 in FIG. 1. The NW processing mechanism #0 (111) includes a CPU #0 (1111), a memory #0 (1112), a NW mechanism #0 (1113), and a disk device 1114. The disk device 1114 stores client software. The NW processing mechanism #1 (112) includes a CPU #1 (1121), a memory #1 (1122), and a NW mechanism #1 (1123). The CPU #0 (1111) and the CPU #1 (1121) are connected by an interconnect 12. These CPUs may be devices that provide client functionality for a shared file system.

[0019] (I / O Server 2, 3 configuration) As shown in FIG. 1, I / O server 2 (I / O server #0) and I / O server 3 (#1) each have two I / O processing mechanisms 21. Each of the I / O processing mechanisms 21 is connected to a high-speed network 5 and also to a high-speed disk device 4. In this embodiment, each of the I / O processing mechanisms 21 is connected to the NW processing mechanism 11 of the client 1 via the high-speed network 5, but it should be noted that they may be connected without going through the high-speed network 5. The number of I / O processing mechanisms 21 provided in each I / O server is not limited to two, and in other embodiments, any number of I / O processing mechanisms 21 may be provided in the I / O server.

[0020] FIG. 3 is a diagram showing the I / O server 2 according to the first embodiment in more detail. Although FIG. 3 shows only the I / O server 2, the I / O server 3 may have a similar configuration. Referring to FIG. 3, the I / O server 2 includes an I / O processing mechanism #0 (211) and an I / O processing mechanism #1 (212). The I / O processing mechanism #0 (211) includes a CPU #0 (2111), a memory #0 (2112), a NW mechanism #0 (2113), an I / O mechanism #0 (2114), and a disk device 2115. The disk device 2115 stores I / O server software. The disk device 2115 may also store various route cost tables, which will be described later. Next, the I / O processing mechanism #1 (212) comprises a CPU #1 (2121), a memory #1 (2122), a NW mechanism #1 (2123), and an I / O mechanism #1 (2114). CPU #0 (2111) and CPU #1 (2121) are connected via an interconnect 22. These CPUs may be devices that provide server functions for a shared file system.

[0021] (High-speed disk device 4) 1, the high-speed disk device 4 includes two disk controllers 41. Each of the disk controllers 41 is connected to a disk 43 via an I / O mechanism 42. The disk controllers 41 are also connected to an I / O server 2 and an I / O server 3, respectively. While the above configuration is illustratively employed in the first embodiment, any number of disk controllers 41, I / O mechanisms 42, and disks 43 may be employed in other embodiments.

[0022] FIG. 4 is a diagram showing the high-speed disk device 4 according to the first embodiment in more detail. As shown in FIG. 4, the disk controller #0 (411) is connected to the disks A, B, C, and D via the I / O mechanism #0 (421). Moreover, the disk controller #1 (412) is connected to the disks E, F, G, and H via the I / O mechanism #1 (422). Moreover, the disk controller #0 (411) and the disk controller #1 (412) are connected by an interconnect 44. The access to the disks E, F, G, and H via the disk controller #0 (411) and the I / O mechanism #1 (422), and the access to the disks A, B, C, and D via the disk controller #1 (412) and the I / O mechanism #0 (421) are connected as alternative paths. On the other hand, it should be noted that the access efficiency of these paths may be worse than the above-mentioned paths because they are accesses to asymmetric logical units.

[0023] In the present embodiment, for ease of explanation, the distributed shared file system includes a specific number of components, but as described above, the distributed shared file system may generally include any number of clients 1, I / O servers 2, and high-speed disk devices 4. Note that the components included in the clients, I / O servers, and high-speed disk devices may also be configured in any number as described above.

[0024] (Processing flow of I / O servers 2 and 3) Fig. 10 is a diagram showing a processing flow of the I / O servers 2 and 3 according to the first embodiment. The processing flow of the I / O servers 2 and 3 will be described below with reference to Fig. 3, Fig. 4, and Fig. 10. Although the operation of the I / O server 2 will be particularly described below, the I / O server 3 may perform a similar operation.

[0025] The processing flow of the I / O server 2 according to the first embodiment starts, for example, by booting up the I / O server 2. At boot up, the I / O server 2 loads the I / O server software stored in the disk device 2115 into the memory and starts up, and then performs the following operations.

[0026] First, in step S101, the I / O server 2 reads the cost table of the I / O server 2. The cost table of the I / O server provides route cost information between components in the I / O server. The route cost information indicates the communication cost when the route is used, and more specifically, the number of access hops, the bandwidth, and the communication performance. In the first embodiment, the number of access hops is adopted as the route cost information for easy understanding. The number of access hops may specifically indicate the number of access hops between the connections of the memory, CPU, NW mechanism, and I / O mechanism in the I / O server. FIG. 5 is a diagram showing the cost of an exemplary I / O server. In FIG. 5, symbols indicating components are shown in the top row and the leftmost column, and the number of access hops between two components is described in the table. For example, C0 indicates the CPU #0 of the I / O server, and M1 indicates the memory #1 of the I / O server. As is clear from FIG. 3, between these components, the number of access hops is two, since a route goes from CPU#0 to CPU#1 via interconnect 22, and then from CPU#1 to memory #1.

[0027] Next, in step S102, the I / O server 2 reads a cost table between the I / O server and the high-speed disk device for the high-speed disk device 4 connected to the I / O mechanism #0 (2114) and I / O mechanism #1 (2124) of the I / O server 2. The cost table between the I / O server and the high-speed disk device indicates route cost information between the I / O server and the high-speed disk device, and indicates the number of access hops between the I / O server and the high-speed disk device in this embodiment. FIG. 6 is a diagram showing an example of the cost between the I / O server and the high-speed disk device. FIG. 6 shows the number of access hops between the I / O mechanism #0 (2114) and I / O mechanism #1 (2124) of the I / O server and the disk controller #0 (411) and disk controller #1 (412) of the high-speed disk device 4 connected thereto. For example, iI0 indicates I / O mechanism #0 of I / O server 2, dC0 indicates disk controller #0 of high-speed disk device 4, and the access hop count between them is 1, as is clear from Figures 1, 3 and 4. In this embodiment, since I / O mechanism #0 of I / O server 2 and disk controller #1 of high-speed disk device 4 are not connected, the access hop count between iI0 and dC1 is left blank.

[0028] Furthermore, in step S103, the I / O server 2 reads the cost table of the high-speed disk device 4. The cost table of the high-speed disk device 4 indicates path cost information from the disk controller to other components in the high-speed disk device, and indicates the number of access hops from the disk controller to other components in this embodiment. FIG. 7 is a diagram showing an example of the cost of the high-speed disk device 4. In FIG. 7, dC0 indicates the disk controller #0 (411). dC1 indicates the disk controller #1 (412). I0 indicates the I / O mechanism #0 (421). I1 indicates the I / O mechanism #1 (422). D0 indicates a set of A, B, C, and D of the disks 43. D1 indicates a set of E, F, G, and H of the disks 43. For example, the number of access hops between disk controller #1 (412) indicated by dC1 and the set of disks A, B, C, and D indicated by D0 is three, since the access hop count first goes from disk controller #1 (412) to disk controller #0 (411) via interconnect 44, then to I / O mechanism #0 (412), and finally to the set of disks A, B, C, and D.

[0029] In step S104, the I / O server 2 generates route information by calculating routes that minimize the number of access hops to each disk 43 for A, B, C, and D of the high-speed disk devices 4 and E, F, G, and H of the high-speed disk devices 4 based on the cost table of the I / O server 2, the cost table between the I / O server and the high-speed disk devices, and the cost table of the high-speed disk devices. This route information is transferred to the client 1 as information for identifying the route that the client 1 should use as a communication route.

[0030] FIG. 11 is a diagram showing exemplary path information calculated by the I / O server 2. FIG. 11 shows a set of components used for a path that minimizes the path cost between the disks 43 A, B, C, D, E, F, G, and H of the high-speed disk device 4 and the client 1. As described above, the path cost may be the number of access hops, and in this case, FIG. 11 shows a set of components that realizes a path with the minimum number of access hops. As described above, the path with the minimum number of access hops is determined based on the cost tables shown in, for example, FIG. 5, FIG. 6, and FIG. 7. The table shown in FIG. 11 also shows which disk controller, I / O mechanism, CPU, and NW mechanism have the minimum cost from the perspective of each of the disks 43 A, B, C, D, E, F, G, and H. The order of the table shows the order in which chunk files of the shared file system are generated on the disks. The calculation of the path information is performed by, for example, generating files in the order of disks A→E→B→F→C→G→D→H and then returning to A, and allocating them in a round robin manner, thereby allowing both disk controller #0 (411) and disk controller #1 (412) of the high-speed disk device 4 to operate simultaneously. The cost table shown in FIG. 5-7 can be statically provided in advance on the I / O server 2, or can be determined by an appropriate method (for example, in the case of the high-speed disk device 4, the ALUA mechanism can be used) and stored in the disk device 2115.

[0031] Next, in step S105, an I / O thread is started using the path information. With reference to Fig. 3, there are I / O threads, I / O thread #0 (2116) which starts on CPU #0 (2111) and I / O thread #1 (2126) which starts on CPU #1 (2121). A plurality of I / O threads are generated for each. At this time, the I / O server 2 generates an I / O thread that selects the memory, NW mechanism, and I / O mechanism with the smallest number of hops as viewed from CPU #0 (2111) or CPU #1 (2121) by referring to the I / O server cost table shown in Fig. 5, for example.

[0032] For example, I / O thread #0 (2116) uses memory #0 (2112) and waits for an interrupt from network mechanism #0 (2113). When an I / O request is made to the network mechanism (2113), it is started using CPU #0 (2111). For I / O requests to the high-speed disk device 4, it preferentially uses I / O mechanism #0 (2114). Similarly, I / O thread #1 (2126) uses memory #1 (2122) and waits for an interrupt from network mechanism #1 (2123). When an I / O request is made to the network mechanism (2123), it is started using CPU #1 (2121). For I / O requests to the high-speed disk device 4, it preferentially uses I / O mechanism #0 (2124).

[0033] (Client 1 processing flow) Next, a detailed description will be given of the operation of the client 1. Fig. 12 is a diagram showing a processing flow of the client 1 according to the first embodiment.

[0034] For example, the process flow of client 1 starts when client 1 starts its operation. At that time, client 1 loads the client software stored in disk device 1114 into memory, starts it, and then executes the following operations.

[0035] In step S201, a client cost table is read. FIG. 8 is a diagram showing an example of a client cost. The client cost table indicates route cost information between components in the client 1. The client cost table according to this embodiment, like other tables, indicates the number of access hops between connections of the memory, CPU, and NW mechanism in the client.

[0036] Next, in step S202, a cost table between the client and the I / O server relating to the network mechanism #0 (1113) and network mechanism #1 (1123) of the client and the I / O server 2 is read. FIG. 9 is a diagram showing an example of the cost between the client and the I / O server. The cost table between the client and the I / O server indicates the number of access hops between the network mechanism #0 (1113) and network mechanism #1 (1123) of the client and the network mechanism #0 (2113) and network mechanism #1 (2123) of the I / O server. The cost tables shown in FIGS. 8 and 9 can be statically provided in advance on the client 1, or can be determined by an appropriate method and stored in the disk device 1114.

[0037] Next, in step S203, the path information is received from the I / O server 2 and read in. Fig. 13 is a diagram showing an example of path information that the client 1 receives from the I / O server 2. In this example, the client 1 acquires from the I / O server 2 the portion of the calculation result of the shortest path to the disk calculated on the I / O server 2 shown in Fig. 11, which is the disk and the network mechanism of the I / O server 2. At this time, the GID of the I / O server network mechanism is also acquired. The GID indicates a unique identifier for identification when communicating on the network.

[0038] Next, in step S204, the path information is received from the I / O server 3 and read. In step S204, as in the case of the I / O server 2, the client 1 acquires the part of the disk and the network mechanism of the I / O server 3 from the calculation result of the shortest path from the I / O server 3 to the disk (FIG. 13). The operation of receiving the path information from the I / O servers 2 and 3 may be performed before this processing flow is started. In that case, in steps S203 and S204, the operation of receiving the path information is skipped and only the reading operation is performed.

[0039] Next, in step S205, an I / O thread is started based on the client cost table, the cost table between the client and the IO server, and the route information. With reference to FIG. 2, there are I / O threads #0 (1115) that starts on CPU #0 (1111) and I / O thread #1 (1125) that starts on CPU #1 (1121). A plurality of I / O threads are generated for each. At this time, the client generates an I / O thread by referring to the client cost table (FIG. 8) so as to select a memory with the smallest number of hops from the viewpoints of CPU #0 (1111) and CPU #1 (1121). Furthermore, as for the NW mechanism, the NW mechanism with the smallest number of hops from the viewpoint of CPU #1 (1121) is used.

[0040] For example, I / O thread #0 (1115) uses memory #0 (1112) and network mechanism #0 (1113) to send and receive data to and from the I / O server. Similarly, I / O thread #1 (1125) uses memory #1 (1122) and network mechanism #1 (1123) to send and receive data to and from the I / O server #1.

[0041] (Processing flow of write system call of client 1) Next, a method for the client 1 to issue an I / O will be described. First, the behavior when the client issues a write system call will be described. Figures 14A and 14B are diagrams showing a processing flow when the client 1 according to the first embodiment issues a write system call.

[0042] When client 1 issues a write system call, the data is temporarily copied to the cache memory on client 1. The cache memory is a temporary area for issuing or reusing data from client 1, and is placed in memory #0 (1112) or memory #1 (1122) on the client. At this time, the placement of data in memory is determined as follows:

[0043] In step S301, client 1 determines an I / O server that will be the starting point for performing the first I / O. This is part of the protocol of the shared file system, and for the sake of explanation, it is assumed that I / O server 2 is specified.

[0044] In step S302, a file creation request is made to the I / O server that will be the next starting point. At this time, since I / O server 2 is specified as the starting point server, the disk that will be the starting point for disk writing is received as a return value from I / O server 2 along with a file handle managed by the shared file system. In this example, it is assumed that A is returned.

[0045] Next, in step S303, the client 1 generates an I / O map indicating a communication path with the minimum number of hops for accessing a disk in a high-speed disk device based on the received path information (FIG. 13) with the received disk name as the starting point. In this embodiment, the I / O map specifies the client's memory area, the I / O server, the I / O server's network mechanism, and the disk device as the path. FIG. 15 is a diagram showing an exemplary I / O map.

[0046] The algorithm for allocating disks on an I / O server may be performed in a round robin manner. In order to maximize disk performance, areas are allocated for each chunk size in the order of A→E→B→F→C→G→D→H, and then the process returns to A, and disk areas are allocated again in the order of A→E→B→F→C→G→D→H. This algorithm is expressed in the order of the table of route information acquired in steps S203 and S204 in FIG. 12 (FIG. 13). In addition, in the case of I / O server #1 having the same disk, an I / O map (FIG. 15) is generated so that the I / O servers themselves are allocated in a round robin manner according to the order of the cost table (FIG. 13).

[0047] In step S304, data placement in the cache memory is performed by copying from the user area to memory #0 or memory #1 according to the data read / write unit (chunk) from the disk, the address from the beginning of the file, and the I / O map (FIG. 15).

[0048] Once the data has been placed in the cache memory, the write system call is terminated. The actual write process waits until the next I / O flush is initiated in step S305, at which point the I / O flush is initiated.

[0049] When the I / O flush is started, the client 1 starts an I / O thread. At this time, according to the I / O map (FIG. 15), the I / O thread to be started starts the I / O thread #0 (1115) if the data to be written is in the memory #0, and starts the I / O thread #1 (1125) if the data is in the memory #1. The I / O thread uses the minimum-cost NW mechanism #0 or NW mechanism #1 according to the client cost table (FIG. 8) and the I / O map (FIG. 15), and requests the data to be sent to the GID that has added the data to the NW mechanism of the appropriate I / O server. At this time, in order to reduce the resource consumption of the thread, several write requests may be made by one thread. In step S306, the client 1 transmits data to the I / O server using the minimum-cost route. FIG. 16 is a diagram showing an outline of the operation of the client 1 according to the first embodiment to issue a write system call.

[0050] Next, in step S307, the thread that sent the write request is put to sleep until the issued write request is completed. The data sent by the I / O server includes the file offset value in addition to the data in the user memory, so that the I / O server that receives the data can determine to which disk the write request should be sent.

[0051] In step S308, when the data writing is completed on the I / O server 2 side, a notification of I / O completion is received from the I / O server 2.

[0052] In step S309, the I / O thread is placed in a waiting state for activation.

[0053] (Processing flow of read system call on client 1) Next, the behavior when client 1 issues a read system call will be described. Fig. 17 is a diagram showing the processing flow when client 1 issues a read system call. When client 1 issues a read system call, an area for receiving data is temporarily secured in memory #0 (1112) or memory #1 (1122) on client 1, which is in the cache memory on client 1. At this time, the arrangement of data on memory is determined as follows.

[0054] In step S401, client 1 determines an I / O server that is to be the starting point for performing the first I / O. This is a part of the protocol of the shared file system, and it is assumed that I / O server 2 is specified.

[0055] Next, in step S402, a file handle is requested from the I / O server 2. At this time, the I / O server 2 returns the disk that is the starting point for disk reading, together with the file handle of the shared file system, as a return value. In this example, it is assumed that A is returned.

[0056] Next, in step S403, the client generates an I / O map (FIG. 15) of an I / O server, a network mechanism of the I / O server, and a disk device, which minimizes the number of hops for accessing the disk of the high-speed disk device from the collected path information (FIG. 13) with the disk name as the starting point. At this time, the algorithm for allocating the disk for reading on the I / O server may be performed in round robin. In order to maximize the performance of the disk, the area is allocated for each chunk size in the order of A→E→B→F→C→G→D→H, and then the disk area is allocated again in the order of A→E→B→F→C→G→D→H. This algorithm is expressed in the order of the table of the path information acquired in steps S203 and S204 of FIG. 12 (FIG. 13). In addition, in the case of I / O servers having the same disk, an I / O map (FIG. 15) is generated so that the I / O servers themselves are distributed in round robin according to the order of the path information (FIG. 13).

[0057] Next, in step S404, a cache memory area for reading is reserved according to the I / O map.

[0058] Next, in step S405, an I / O thread is started. If the data to be read at this time is in memory #0, I / O thread #0 (1115) is started, and if the data is in memory #1, I / O thread #1 (1125) is started.

[0059] In step S408, the I / O thread uses the minimum-cost NW mechanism #0 or NW mechanism #1 according to the client cost table (FIG. 8) and the I / O map (FIG. 15), and issues a read request to the GID that has attached the data to the appropriate I / O server's NW mechanism. Meanwhile, in step S406, the Read process sleeps until all I / O is completed.

[0060] Next, in step S409, the thread that issued the read request goes to sleep until the issued read request is completed. The data sent by the I / O server includes the file offset value in addition to the data in the user memory, so that the I / O server that receives the data can determine to which disk the read request should be sent.

[0061] In step S410, when the I / O server 2 finishes reading the data, the I / O server 2 notifies the I / O completion.

[0062] In step S411, the I / O thread starts a client read process, and waits for the next start in step S412. On the other hand, in step S407, when the read requests of all the I / O threads are completed, data is copied from the cache memory to the user memory.

[0063] (Modification of the first embodiment) As a modification of the first embodiment, the CPU and memory portion may be expanded to a configuration of a core in the CPU and a memory mechanism connecting the core, and the embodiment of the present invention may be applied. The embodiment of the present invention may also be applied to a system having two or more CPUs and memory sockets. In the first embodiment, the I / O server 2 calculates the minimum cost route to each high-speed disk based on the route cost information in the I / O server 2, the route cost information between the I / O server and the high-speed disk device, and the route cost information in the high-speed disk device. However, in other embodiments, the I / O server 2 may transmit this route cost information to the client 1, and the client 1 may calculate the minimum cost route.

[0064] (Action and Effects) The distributed shared file system according to the first embodiment calculates the path cost between the network mechanism, CPU, and memory in the client 1 that issues the I / O, and calculates the path cost of the network mechanism, CPU, and memory in the I / O server and the path cost to the storage in the high-speed storage device. Furthermore, by notifying the client 1 of the optimal I / O path for each storage that performs the I / O, the client 1 can determine the I / O issuing path with the lowest cost and issue the I / O. This can minimize data movement within the client 1, the I / O servers 2 and 3, and the high-speed disk device 4, thereby improving the throughput of the entire shared file system.

[0065] <Second embodiment> In the first embodiment, a more specific aspect is used for a clearer understanding. In the second embodiment, the entire distributed shared file system is explained more conceptually. The first embodiment can be combined with the second embodiment.

[0066] (Configuration of a distributed shared file system according to the second embodiment) 18 is a diagram showing the configuration of a distributed shared file system according to the second embodiment. The distributed shared file system according to the second embodiment includes one or more clients 510, one or more I / O servers 520, and one or more recording devices 530.

[0067] The client 510 includes a communication path determination unit 511, an I / O request issuing unit 512, a receiving unit 513, and a transmitting unit 514. As in the first embodiment, the client 510 may include one or more NW processing mechanisms, and the NW processing mechanism in the client may include any number of memories, CPUs, and NW mechanisms. The communication path determination unit 511 may be configured by a CPU in the NW processing mechanism.

[0068] The I / O server 520 includes a path information determination unit 521, a transmission / reception command issuing unit 522, a receiving unit 523, and a transmitting unit 524. As in the first embodiment, the I / O server 520 may include one or more I / O processing mechanisms, and the I / O processing mechanisms may include any number of memories, CPUs, and NW mechanisms. The path information determination unit 521 may be configured by a CPU in the I / O processing mechanism.

[0069] The recording device 530 includes one or more disk controllers 531 , one or more I / O mechanisms 532 , and one or more recording disks 533 .

[0070] (Processing flow of the distributed shared file system according to the second embodiment) 19 is a diagram showing a processing flow of the distributed shared file system according to the second embodiment. Although the operation will be explained focusing on one client 510, the processing flow can be executed separately for each client 510.

[0071] In step S1501, the route information determination unit 521 of the I / O server 520 determines route information to the recording disk 533 based on route cost information between components in the I / O server 520, route cost information between the I / O server 520 and the recording device 530, and route cost information between components in the recording device 530. The components in the I / O server 520 include a CPU, a memory, an I / O mechanism, and a NW mechanism. The components in the recording device 530 include a disk controller 531, an I / O mechanism 532, and a recording disk 533. The route information may indicate a communication route with the minimum cost to the recording disk 533 in the recording device 530. The route cost information includes the number of access hops, a bandwidth, and communication performance. The route cost information is expressed as, for example, the cost table shown in the first embodiment.

[0072] In step S1502, the communication path determination unit 511 of the client 510 reads path cost information between each component in the client 510 and path cost information between the client 510 and the I / O server 520. The components in the client 510 include a CPU, a memory, and a NW mechanism.

[0073] In step S1503, the receiving unit 513 of the client 510 receives the path information determined by the I / O server 520 via the transmitting unit 524 of the I / O server 520. In this embodiment, the path information received by the client 510 from the I / O server 520 may include information for identifying the recording disk 533 and information for identifying a component in the I / O server 520 that should be used by the client 510 as a communication path to the recording disk 533. The component in the I / O server 520 that should be used may be information indicating the NW mechanism of the I / O server 520, for example.

[0074] In step S1504, the communication path determination unit 511 of the client 510 determines a communication path to the target recording disk 533 based on the path information received from the I / O server 520, the path cost information between the components in the client 510, and the path cost information between the client 510 and the I / O server 520. For example, the communication path determined may be one with the smallest path cost. Also, the communication path determined in step S1504 may be a part of the path to the recording disk 533. For example, the communication path specifies the target recording disk 533, the memory area of ​​the client 510, the I / O server 520, and the NW mechanism of the I / O server 520, as shown in the first embodiment.

[0075] In step S1505, the I / O request issuing unit 512 of the client 510 issues an I / O request based on the determined communication path. For example, the I / O request issuing unit 512 issues an I / O request using a communication path that uses a CPU and a network mechanism that are closest to the client's memory. When issuing an I / O request, the transmitting unit 514 of the client 510 transmits the I / O request to the I / O server 520.

[0076] In step S1506, the receiving unit 523 of the I / O server 520 receives the I / O request from the client 510. At that time, the I / O server 520 may start an I / O waiting process that runs on a CPU included in the NW mechanism that received the I / O request.

[0077] In step S1507, the transmission / reception command issuing unit 522 of the I / O server 520 issues a command to transmit / receive I / O data to the recording disk 533 based on the path information determined in step S1501. For example, the transmission / reception command issuing unit 522 of the I / O server 520 issues a command to transmit / receive I / O data using a memory and an I / O mechanism closest to the started CPU.

[0078] (Effects of the second embodiment) As described above, the receiving unit 513 of the client 510 receives path information from the I / O server 520. The path information includes information for identifying the recording disk 533 and information for identifying components in the I / O server 520 that should be used by the client 510 as a communication path to the recording disk 533. The communication path determination unit 511 determines a communication path to the recording disk 533 based on the path information. The I / O request issuing unit 512 issues an I / O request based on the determined communication path. With the above configuration, in the distributed shared file system according to the second embodiment, the client 510 can issue an I / O request while taking into consideration even the path cost between the components in the I / O server 520. This makes it possible to improve the throughput of the entire shared file system.

[0079] Moreover, the communication path determination unit 511 of the client 510 determines the communication path to the recording disk 533 further based on the path cost information between the components in the client 510 . This makes it possible to issue an I / O request while taking into consideration the path cost within the client 510. As a result, it is possible to further improve the throughput of the entire shared file system.

[0080] Moreover, the communication path determination unit 511 of the client 510 determines a communication path to the recording disk 533 based on the path cost information between the client 510 and the I / O server 520 . This allows the client 510 to select an optimal I / O server taking into consideration the data transfer cost of the network, and to make an IO request via a route that passes through an optimal component in the selected I / O server. As a result, the throughput of the entire shared file system can be further improved.

[0081] Furthermore, the transmitting unit 524 of the I / O server 520 transmits path information to the client 510. The path information includes information for identifying the recording disk 533 and information for identifying components in the I / O server 520 that should be used by the client 510 as a communication path to the recording disk 533. This allows the client 510 to obtain the path information, and therefore allows the client 510 to issue an I / O request while taking into consideration even the path costs between the components in the I / O server 520. As a result, it is possible to improve the throughput of the entire shared file system.

[0082] In addition, the I / O server 520 is coupled to a recording device (disk device) 530. A path information determination unit 521 of the I / O server 520 determines path information based on path cost information between components in the I / O server 520, path cost information between the I / O server 520 and the recording device (disk device) 530, and path cost information between components in the recording device (disk device) 530. This enables the I / O server 520 to take into consideration both the path cost between device components and the network transfer cost when issuing a transmission / reception command to the storage disk 533. As a result, it is possible to improve the throughput of the entire shared file system.

[0083] The route cost information also includes the number of access hops. By using the number of access hops, the route cost information can be calculated more easily.

[0084] <Third embodiment> 20 is a diagram showing a configuration of a client 600 according to the third embodiment. The client 600 according to this embodiment includes at least a receiving unit 610, a communication path determination unit 620, and an I / O request issuing unit 630. The receiving unit 610 receives path information from an I / O server 700. The path information includes information for identifying a recording disk and information for identifying a component in the I / O server 700 that should be used by the client as a communication path to the recording disk. The communication path determination unit 620 determines a communication path to the recording disk based on the path information. The I / O request issuing unit 630 issues an I / O request based on the communication path.

[0085] 21 is a diagram showing a configuration of an I / O server 700 according to the third embodiment. The server according to this embodiment includes at least a transmitting unit 710. The transmitting unit 710 transmits path information to the client 600. The path information includes information for identifying a recording disk and information for identifying a component in the I / O server that should be used by the client 600 as a communication path to the recording disk.

[0086] <Control device hardware configuration> 22 is a hardware configuration diagram of a control device 800 according to at least one embodiment. The control device 800 may correspond to a control device provided in, for example, the client 1, the client 510, the client 600, the I / O servers 2 and 3, the I / O server 520, or the I / O server 700. As shown in this figure, the control device 800 may be a computer including various hardware components such as a CPU 801, a ROM (Read Only Memory) 802, a RAM (Random Access Memory) 803, a database 804, a communication module 805, a display 806, etc.

[0087] The above-mentioned control device has a computer system inside. The operations of the above-mentioned client and I / O server are stored in a computer-readable recording medium in the form of a program, and the above-mentioned processing is performed by one or more computers reading and executing this program. Here, the computer-readable recording medium refers to a magnetic disk, a magneto-optical disk, a CD-ROM, a DVD-ROM, a semiconductor memory, etc. Also, the computer program may be distributed to a computer via a communication line, and the computer that receives the program may execute the program.

[0088] The above control method may be performed by recording a program for implementing the functions of the control device in a computer-readable recording medium, and reading and executing the program recorded in the recording medium into a computer system. The term "computer system" as used herein includes hardware such as an OS and peripheral devices. The term "computer-readable recording medium" also includes portable media such as flexible disks, optical magnetic disks, ROMs, and CD-ROMs, and storage devices such as hard disks built into a computer system. The term "computer-readable recording medium" also includes those that hold a program for a certain period of time, such as volatile memory (RAM) inside a computer system that serves as a server or client when a program is transmitted via a network such as the Internet or a communication line such as a telephone line.

[0089] The above program may also be transmitted from a computer system in which the program is stored in a storage device or the like to another computer system via a transmission medium, or by transmission waves in the transmission medium. Here, the "transmission medium" that transmits the program refers to a medium that has the function of transmitting information, such as a network (communication network) such as the Internet or a communication line (communication line) such as a telephone line. The above program may also be for realizing part of the above-mentioned functions. Furthermore, the above program may be a so-called difference file (difference program) that can realize the above-mentioned functions in combination with a program already recorded in the computer system.

[0090] Although several embodiments of the present invention have been described above, these embodiments are presented as examples and are not intended to limit the scope of the invention. These embodiments can be implemented 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 in the scope of the invention and its equivalents described in the claims, as well as the scope and spirit of the invention.

[0091] This application claims priority based on Japanese Patent Application No. 2020-047913, filed on March 18, 2020, the disclosure of which is incorporated herein in its entirety. [Industrial Applicability]

[0092] The present invention may be applied to a client, an I / O server, a method, and a recording medium. [Explanation of symbols]

[0093] 1. Client 2. I / O Server 3. I / O Server 4. High-speed disk device 5. High-speed network 11 Network processing mechanism 12. Interconnect 21. I / O processing mechanism 22. Interconnect 41 Disk controller 42...I / O mechanism 43...Disc 44...Interconnect 111 Network processing mechanism #0 112 Network processing mechanism #1 510...Client 511: Communication path determination unit (communication path determination means) 512: I / O request issuing unit (I / O request issuing means) 513... Receiving unit (receiving means) 514: Transmission unit (transmission means) 520···I / O Server 521: Route information determination unit (route information determination means) 522: Transmission / reception command issuing unit (transmission / reception command issuing means) 523... Receiving unit (receiving means) 524: Transmission unit (transmission means) 530 Recording device 531...Disk controller 532...I / O mechanism 533 Recording disc 600 clients 610... Receiver 620: Communication path determination unit (communication path determination means) 630 I / O request issuing unit (I / O request issuing means) 700···I / O Server 710... Transmitting unit (transmitting means) 800...Control device 804···Database 805···Communication module 806··Display

Claims

1. a receiving means for receiving path information from an I / O server, the path information including information for identifying a recording disk and information for identifying a component in the I / O server to be used by a client as a communication path to the recording disk; a communication path determination means for determining a communication path to the recording disk based on the path information and path cost information between components in the client, the components in the client including a memory, a CPU, and a NW mechanism, the path cost information between the components in the client being based on a path cost between the memory, the CPU, and the NW mechanism in the client, and the path cost information including a number of access hops between the components; an I / O request issuing means for issuing an I / O request based on the communication path; Provided is a client.

2. 2. The client according to claim 1, wherein said communication path determining means determines a communication path to said recording disk further based on path cost information between said client and said I / O server.

3. a route information determination means for determining route information based on route cost information between components in an I / O server, the components including a memory, a CPU, a network mechanism, and an I / O mechanism in the I / O server, the route cost information between the components in the I / O server being based on route costs between the memory, the CPU, the network mechanism, and the I / O mechanism in the I / O server, and the route cost information including the number of access hops between the components; a transmitting means for transmitting the route information to a client; wherein the path information includes information for identifying a recording disk and information for identifying a component in the I / O server to be used by the client as a communication path to the recording disk.

4. the I / O server is coupled to a disk device; 4. The I / O server according to claim 3, wherein the path information determination means determines the path information further based on path cost information between the I / O server and the disk device, and path cost information between components within the disk device.

5. receiving path information from an I / O server, the path information including information identifying a recording disk and information identifying a component in the I / O server that should be used by a client as a communication path to the recording disk; a step of determining a communication path to the recording disk based on the path information and path cost information between components in the client, the components in the client including a memory, a CPU, and a NW mechanism, the path cost information between the components in the client being based on path costs between the memory, the CPU, and the NW mechanism in the client, and the path cost information including the number of access hops between the components; issuing an I / O request based on the communication path; The method is executed by a client.

6. determining route information based on route cost information between components in an I / O server, the components including a memory, a CPU, a network mechanism, and an I / O mechanism in the I / O server, the route cost information between the components in the I / O server being based on route costs between the memory, the CPU, the network mechanism, and the I / O mechanism in the I / O server, the route cost information including the number of access hops between the components; transmitting the route information to a client; The method, wherein the path information includes information identifying a recording disk and information identifying a component within the I / O server that the client should use as a communication path to the recording disk, and the method is executed by an I / O server.

7. On the computer, receiving path information from an I / O server, the path information including information identifying a recording disk and information identifying a component in the I / O server that should be used by a client as a communication path to the recording disk; a step of determining a communication path to the recording disk based on the path information and path cost information between components in the client, the components in the client including a memory, a CPU, and a NW mechanism, the path cost information between the components in the client being based on path costs between the memory, the CPU, and the NW mechanism in the client, and the path cost information including the number of access hops between the components; issuing an I / O request based on the communication path; A program for executing the above.

8. On the computer, determining route information based on route cost information between components in an I / O server, the components including a memory, a CPU, a network mechanism, and an I / O mechanism in the I / O server, the route cost information between the components in the I / O server being based on route costs between the memory, the CPU, the network mechanism, and the I / O mechanism in the I / O server, the route cost information including the number of access hops between the components; transmitting path information to the client, the path information including information identifying a recording disk and information identifying a component in the I / O server that the client should use as a communication path to the recording disk; A program for executing the above.

Citation Information

Patent Citations

  • Storage system and failure canceling method for the same

    JP2005309748A

  • Process path selection device, process path selection method, and process path selection program

    JP2015060418A

  • Instruction processor, instruction processing method, instruction processing program and information processing apparatus

    JP2015156158A

  • Resource Management for Peripheral Component Interconnect Express Domain

    JP2016530618A

  • Storage system, storage controller, and program

    JP2019095971A