Method and device for processing input and output requests

A technology of input and output requests and input and output, applied in the computer field, can solve problems such as the inability to do IO request IO sorting and merging, reduce the read and write performance and throughput of the storage system, and the inability to do IO request sorting and merging, etc.

Active Publication Date: 2015-05-06
HUAWEI TECH CO LTD
5 Cites 7 Cited by

AI-Extracted Technical Summary

Problems solved by technology

[0004] Since there is a one-to-one correspondence between virtual disks and LUNs, the virtual machine monitor can only sort and merge the IO requests sent by a virtual disk, but cannot sort and merge the IO requests of a virtual machine as a whole. It is even more...
View more

Abstract

The invention discloses a method and device for processing input and output requests and belongs to the field of computers. The method includes the steps that the multiple IO requests are acquired; according to parameters of the acquired IO requests, the acquired IO requests are packaged to form an IO order, wherein the parameters of each IO request in the multiple IO requests at least comprise an LUN corresponding to the IO request, the priority of the IO request and a command description character of the IO request; the IO order is sent to a storage system, so that the storage system analyzes the multiple IO requests from the IO order and processes the multiple IO requests. The device comprises an acquisition module, a packaging module and a first transmission module. By the adoption of the method and device, the number of IO orders between a host and the storage system is reduced, and the read-write performance and the throughput capacity of the storage system are improved.

Application Domain

Input/output to record carriers

Technology Topic

Throughput

Image

  • Method and device for processing input and output requests
  • Method and device for processing input and output requests
  • Method and device for processing input and output requests

Examples

  • Experimental program(5)

Example Embodiment

[0079] Example one
[0080] The embodiment of the present invention provides a method for processing input and output requests, see figure 1 , The method includes:
[0081] Step 101: Obtain multiple input and output IO requests;
[0082] Step 102: According to the acquired parameters of the multiple IO requests, encapsulate the acquired multiple IO requests into one IO instruction, and the parameters of each IO request in the multiple IO requests include at least the LUN corresponding to the IO request and the information of the IO request. Priority and command description word of IO request;
[0083] Step 103: Send the IO instruction to the storage system, so that the storage system parses the multiple IO requests from the IO instruction, and processes the multiple IO requests separately.
[0084] Among them, according to the parameters of the obtained multiple IO requests, the multiple obtained IO requests are encapsulated into one IO instruction, including:
[0085] Fill the LUN corresponding to each IO request in the LUN field of the IO command;
[0086] Fill the priority of each IO request in the priority field of the IO instruction according to the sequence of the IO request corresponding to the LUN in the LUN field;
[0087] According to the sequence of the IO request corresponding to the LUN in the LUN field, the command description word of each IO request is filled in the command description word field of the IO instruction;
[0088] Encapsulate the LUN field, priority field, and command description field into an IO command.
[0089] Optionally, encapsulating the acquired multiple IO requests into one IO instruction according to the acquired parameters of the multiple IO requests, including:
[0090] The LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request are respectively filled in the information field corresponding to each IO request. The information field includes the LUN field, priority field, and Command description word field;
[0091] The information field corresponding to each IO request is encapsulated into an IO command.
[0092] Wherein, the IO instruction also includes the number of acquired multiple IO requests.
[0093] Among them, according to the parameters of the obtained multiple IO requests, the multiple obtained IO requests are encapsulated into one IO instruction, including:
[0094] Divide the acquired multiple IO requests into multiple IO request groups;
[0095] For any one of the multiple IO request groups, select a main request for the IO request group;
[0096] Determine other IO requests in the IO request group except the main request as slave requests of the IO request group, and encapsulate the slave request in the main request IO request parameter page;
[0097] According to the LUN corresponding to the main request, the priority of the main request, and the command description word of the main request, the main request is encapsulated into an IO command, and the IO command carries the IO request parameter page of the main request.
[0098] Among them, the obtained multiple IO requests are divided into multiple IO request groups, including:
[0099] Determine whether there is an IO request carrying parameters among the multiple IO requests obtained;
[0100] If it exists, divide the obtained multiple IO requests into multiple IO request groups according to the number of IO requests carrying parameters, so that each IO request group includes at most one IO request carrying parameters;
[0101] If it does not exist, divide the acquired multiple IO requests into multiple IO request groups.
[0102] Among them, select a main request for the IO request group, including:
[0103] If the IO request group includes an IO request carrying parameters, the IO request carrying parameters is determined as the main request of the IO request group;
[0104] If the IO request group does not include an IO request carrying parameters, an IO request is randomly selected from the IO request group, and the selected IO request is determined as the main request of the IO request group.
[0105] Wherein, encapsulating the slave request in the IO request parameter page of the master request includes:
[0106] The LUN corresponding to each slave request, the priority of each slave request, and the command description word of each slave request are respectively filled in the IO parameter list corresponding to each slave request;
[0107] Set the page number and sub-page number for the IO request parameter page of the main request, and encapsulate the set page number, sub-page number, and parameters corresponding to each slave request in the IO request parameter page of the main request.
[0108] Further, according to the LUN corresponding to the main request, the priority of the main request, and the command description word of the main request, the main request is encapsulated into an IO command, and the IO command carries the IO request parameter page of the main request. ,Also includes:
[0109] If the command description of the main request includes a parameter list length field, modify the parameter list length field to the length of the IO request parameter page of the main request;
[0110] If the command description word of the main request does not include the parameter list length field, add the parameter list length field to the command description word of the main request, and set the parameter list length field to the length of the IO request parameter page of the main request .
[0111] In the embodiment of the present invention, when a virtual machine sends an IO request, multiple IO requests are obtained; according to the LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request, Multiple IO requests are encapsulated into one IO command, avoiding encapsulating the IO request corresponding to each LUN into one IO command, reducing the number of IO commands between the host and the storage system, thereby avoiding the establishment of connections and The disconnection improves the read and write performance and throughput of the storage system.

Example Embodiment

[0112] Example two
[0113] The embodiment of the present invention provides a method for processing input and output requests. Among them, see figure 2 As shown in the structural diagram for processing input and output requests, the system includes a virtual machine, a virtual machine monitor, and a storage system. The virtual machine monitor and the storage system each include a SCSI drive module, and the storage system also includes a plurality of LUNs. Among them, one virtual machine corresponds to one or more LUNs.
[0114] See image 3 , The method includes:
[0115] Step 201: When a virtual machine sends an IO request, the virtual machine monitor obtains multiple IO requests;
[0116] Further, when the virtual machine issues an IO request, the virtual machine monitor can acquire multiple IO requests within a preset time period.
[0117] Wherein, the IO request within the preset time period acquired by the virtual machine monitor may be a request issued by one virtual machine, or may be a request issued by multiple virtual machines.
[0118] Since one virtual machine corresponds to one or more LUNs, the IO request sent by the virtual machine can be a request sent to multiple LUNs, or a request sent to the same LUN.
[0119] Among them, in the embodiment of the present invention, the IO request may be issued by a virtual machine, a personal computer, or a cluster server system, so the embodiment of the present invention does not specifically limit the subject who issues the IO request.
[0120] Step 202: The virtual machine monitor respectively sorts and merges the IO requests corresponding to each LUN according to the logical address to be accessed by the IO request corresponding to each LUN and the priority of the IO request corresponding to each LUN, to obtain multiple The combined IO request;
[0121] Specifically, the virtual machine monitor obtains the IO request corresponding to the same LUN, and according to the logical address that the IO request corresponding to the LUN needs to access, sorts the IO requests corresponding to the LUN to obtain the order of the IO requests corresponding to the LUN. According to the sequence of the IO request corresponding to the LUN, the operation type corresponding to the IO request corresponding to the LUN, and the priority of the IO request corresponding to the LUN, the IO requests corresponding to the LUN are combined to obtain one or more combined IO request.
[0122] Among them, for other LUNs, one or more combined IO requests are also obtained according to the above steps.
[0123] Among them, according to the sequence of the IO request corresponding to the LUN, the operation type corresponding to the IO request corresponding to the LUN, and the priority of the IO request corresponding to the LUN, the IO requests corresponding to the LUN are merged. The specific operation is: IO requests with the same operation type and connected in the order of IO requests are merged to obtain a merged IO request; and the logical address that the IO request needs to be accessed is the same, the operation type corresponding to the IO request is different, and the order of the IO request is connected IO requests are merged, and a merged IO request is obtained.
[0124] For example, if the operation types corresponding to the three IO requests connected in the sequence of the IO request are all read operations or write operations, then these three IO requests are combined to obtain a combined IO request. When operating the storage system, you can read or write the data in the three logical addresses requested by the IO at one time. This reduces the number of read and write operations on the storage system and improves the The life of the storage system.
[0125] For another example, two IO requests connected in the order of IO requests need to access the same logical address, the operation type corresponding to the first IO request is write operation, and the operation type corresponding to the subsequent IO request is read operation. After these two IO requests are combined, a combined IO request is obtained. When the storage system is operated, the data that needs to be written in the write operation can be directly used as the data read by the read operation. This reduces the number of read and write operations on the storage system, and improves the storage system's performance. life.
[0126] Among them, in the embodiment of the present invention, step 202 is an optional step. The embodiment of the present invention may sort and merge multiple acquired IO requests, and then encapsulate the merged IO requests according to the following method. The multiple acquired IO requests are sorted and merged, and the multiple acquired IO requests are directly encapsulated according to the following method.
[0127] Step 203: The virtual machine monitors the LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request, and encapsulates the acquired multiple IO requests into one IO instruction;
[0128] Specifically, this step can be implemented through the following steps (1)-(5), including:
[0129] (1) The virtual machine monitor sends the LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request to the SCSI driver module included in the virtual machine monitor;
[0130] (2) The SCSI drive module included in the virtual machine monitor fills the LUNs corresponding to the multiple IO requests in the LUN field;
[0131] Further, the SCSI driver module included in the virtual machine monitor obtains the number of IO requests, and fills the number of IO requests in the IO request number field of the IO instruction.
[0132] (3) According to the sequence of the IO request corresponding to the LUN in the LUN field, fill the priority of each IO request in the priority field of the IO instruction;
[0133] (4) According to the sequence of the IO request corresponding to the LUN in the LUN field, fill the command description word of each IO request in the command description word field of the IO instruction;
[0134] Wherein, the command description word includes the operation type corresponding to the IO request and the logical address that the IO request needs to access. For example, the operation type is read, write, and format operation types, and the logical address includes the start logical address and the end logical address.
[0135] (5) Encapsulate the LUN field, priority field and command description word field into an IO command.
[0136] Further, the IO request quantity field, LUN field, priority field and command description field are encapsulated into one IO command.
[0137] The sequence of corresponding IO requests in the LUN field, priority field, and command description field is the same.
[0138] For example, the number of IO requests is 3, the LUN corresponding to IO request 1 is LUN1, the priority of IO request 1 is priority 1, the command description word of IO request 1 is command description word 1; the LUN corresponding to IO request 2 is LUN2 , The priority of IO request 2 is priority 2, the command description word of IO request 2 is command description word 2; the LUN corresponding to IO request 3 is LUN3, the priority of IO request 3 is priority 3, and the command of IO request 3 The description word is command description word 3. Fill the number of IO requests 3 in the IO request number field shown in Table 1 below, and fill the LUNs corresponding to IO request 1, IO request 2 and IO request 3 in the LUN field in Table 1 below; according to the LUN field In the sequence of the LUNs corresponding to the 3 IO requests, the priority of the 3 IO requests is filled in the priority field of the following Table 1; according to the sequence of the LUNs corresponding to the 3 IO requests in the LUN field, the 3 The command description word of each IO request is filled in the command description word field in Table 1 below, and the IO request quantity field, LUN field, priority field and command description word field are encapsulated into one IO command.
[0139] Table 1
[0140]
[0141] Optionally, the virtual machine monitors the LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request, and the operation of encapsulating the acquired multiple IO requests into one IO instruction can be performed as follows (1)-(3) steps to achieve, including:
[0142] (1) The virtual machine monitor sends the LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request to the SCSI driver module included in the virtual machine monitor;
[0143] (2) The SCSI driver module included in the virtual machine monitor receives the LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request;
[0144] (3) The LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request are respectively filled in the information field corresponding to each IO request. The information field includes the LUN field, Priority field and command description word field;
[0145] Further, the SCSI driver module included in the virtual machine monitor obtains the number of IO requests, and fills the number of IO requests in the IO request number field.
[0146] (4) Encapsulate the information field corresponding to each IO request into an IO command.
[0147] Further, the IO request quantity field and the information field corresponding to each IO request are encapsulated into an IO command.
[0148] For example, the number of IO requests is 3, the LUN corresponding to IO request 1 is LUN1, the priority of IO request 1 is priority 1, the command description word of IO request 1 is command description word 1; the LUN corresponding to IO request 2 is LUN2 , The priority of IO request 2 is priority 2, the command description word of IO request 2 is command description word 2; the LUN corresponding to IO request 3 is LUN3, the priority of IO request 3 is priority 3, and the command of IO request 3 The description word is command description word 3. Fill the number of IO requests 3 in the IO request number field shown in Table 2 below, and fill the LUN, priority and command description corresponding to IO request 1 in the information field 1 corresponding to IO request 1 in Table 2 below; Fill the LUN, priority and command description word corresponding to IO request 2 in the information field 2 corresponding to IO request 2 in Table 2 below; fill the LUN, priority and command description word corresponding to IO request 3 in the following table 2 In the information field 3 corresponding to the IO request 3, the IO request quantity field, the information field 1, the information field 2, and the information field 3 are encapsulated into one IO command.
[0149] Table 2
[0150]
[0151] Preferably, before performing step 203, the virtual machine monitor divides the acquired multiple IO requests into multiple IO request groups according to the sequence of the multiple acquired IO requests and the LUNs corresponding to the multiple acquired IO requests, so that each Each IO request group includes at most the IO requests corresponding to the first preset number of LUNs, and each IO request group is encapsulated into one IO command according to step 203. Wherein, the first preset value is the maximum number of LUNs that can be included in an IO command.
[0152] Step 204: Send the IO command to the storage system;
[0153] Specifically, the SCSI driver module included in the virtual machine monitor sends the IO command to the storage system.
[0154] Step 205: The storage system receives the IO instruction, and parses the LUN, priority and command description word corresponding to each IO request from the IO instruction;
[0155] Specifically, the SCSI driver module included in the storage system receives the IO instruction, and parses the LUN number, priority, and command description word corresponding to each IO request from the IO instruction.
[0156] Further, the SCSI drive module included in the storage system receives the IO command, and parses the LUN number, priority and command description word corresponding to each IO request from the IO command according to the number of IO requests in the IO command.
[0157] Step 206: The storage system processes each IO request separately according to the LUN, priority, and command description word corresponding to each IO request that is parsed.
[0158] In the embodiment of the present invention, when a virtual machine sends an IO request, multiple IO requests are obtained; according to the LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request, Multiple IO requests are encapsulated into one IO command, avoiding encapsulating the IO request corresponding to each LUN into one IO command, reducing the number of IO commands between the host and the storage system, thereby avoiding the establishment of connections and The disconnection improves the read and write performance and throughput of the storage system.

Example Embodiment

[0159] Example three
[0160] The embodiment of the present invention provides a method for processing input and output requests, see Figure 4 , The method includes:
[0161] Step 301: When the virtual machine sends out an IO request, the virtual machine monitor obtains multiple IO requests;
[0162] Further, when the virtual machine issues an IO request, the virtual machine monitor acquires multiple IO requests within a preset time period;
[0163] Wherein, the IO request within the preset time period acquired by the virtual machine monitor may be a request issued by one virtual machine, or may be a request issued by multiple virtual machines.
[0164] Since one virtual machine corresponds to one or more LUNs, the IO request sent by the virtual machine can be a request sent to multiple LUNs, or a request sent to the same LUN.
[0165] Among them, in the embodiment of the present invention, the IO request may be issued by a virtual machine, a personal computer, or a cluster server system, so the embodiment of the present invention does not specifically limit the subject who issues the IO request.
[0166] Step 302: The virtual machine monitor respectively sorts and merges the IO requests corresponding to each LUN according to the logical address to be accessed by the IO request corresponding to each LUN and the priority of the IO request corresponding to each LUN, to obtain multiple The combined IO request;
[0167] Specifically, the virtual machine monitor obtains the IO request corresponding to the same LUN, and according to the logical address that the IO request corresponding to the LUN needs to access, sorts the IO requests corresponding to the LUN to obtain the order of the IO requests corresponding to the LUN. According to the sequence of the IO request corresponding to the LUN, the operation type corresponding to the IO request corresponding to the LUN, and the priority of the IO request corresponding to the LUN, the IO requests corresponding to the LUN are combined to obtain one or more combined IO request.
[0168] Among them, for other LUNs, one or more combined IO requests are also obtained according to the above steps.
[0169] Among them, according to the sequence of the IO request corresponding to the LUN, the operation type corresponding to the IO request corresponding to the LUN, and the priority of the IO request corresponding to the LUN, the IO requests corresponding to the LUN are merged. The specific operation is: IO requests with the same operation type and connected in the order of IO requests are merged to obtain a merged IO request; and the logical address that the IO request needs to be accessed is the same, the operation type corresponding to the IO request is different, and the order of the IO request is connected IO requests are merged, and a merged IO request is obtained.
[0170] For example, if the operation types corresponding to the three IO requests connected in the sequence of the IO request are all read operations or write operations, then these three IO requests are combined to obtain a combined IO request. When operating the storage system, you can read or write the data in the three logical addresses requested by the IO at one time. This reduces the number of read and write operations on the storage system and improves the The life of the storage system.
[0171] For another example, two IO requests connected in the order of IO requests need to access the same logical address, the operation type corresponding to the first IO request is write operation, and the operation type corresponding to the subsequent IO request is read operation. After these two IO requests are combined, a combined IO request is obtained. When the storage system is operated, the data that needs to be written in the write operation can be directly used as the data read by the read operation. This reduces the number of read and write operations on the storage system, and improves the storage system's performance. life.
[0172] Step 303: The virtual machine monitor divides the acquired multiple IO requests into multiple IO request groups;
[0173] Specifically, this step can be implemented through the following steps (1)-(4), including:
[0174] (1) The virtual machine monitor sends the LUN corresponding to each IO request, the priority of each IO request, and the command description word of each IO request to the SCSI driver module included in the virtual machine monitor;
[0175] (2) The SCSI driver module included in the virtual machine monitor judges whether there is an IO request carrying parameters among the multiple IO requests acquired.
[0176] Among them, some IO requests need to carry parameters, for example, LOG SELECT requests and MODE SELECT requests need to carry parameters.
[0177] (3) If it exists, divide the obtained multiple IO requests into multiple IO request groups according to the number of IO requests carrying parameters, so that each IO request group includes at most one IO request carrying parameters;
[0178] Specifically, if there are IO requests carrying parameters among the multiple IO requests obtained, the number of IO requests is divided by the number of IO requests carrying parameters to obtain the first value, and if the first value is an integer, it will get The multiple IO requests are divided into the first number of IO request groups, so that each IO request group includes at most one IO request carrying parameters. If the first value is not an integer, the first value is rounded up to obtain the second value, and the obtained multiple IO requests are divided into second value IO request groups. At this time, the second value is IO request group Include an IO request group without parameters.
[0179] Preferably, if there are IO requests carrying parameters among the acquired multiple IO requests, the acquired multiple IO requests are divided into multiple according to the number of IO requests, the number of IO requests carrying parameters, and the second preset value. IO request group, so that each IO request group includes at most the second preset number of IO requests and each IO request group includes at most one IO request carrying parameters.
[0180] Among them, according to the number of IO requests, the number of IO requests carrying parameters, and the second preset value, the specific operation of dividing the obtained multiple IO requests into multiple IO request groups is: dividing the number of IO requests by the carrying The number of IO requests of the parameter, the first value is obtained. If the first value is an integer, the obtained multiple IO requests are divided into IO request groups of the first value, so that each IO request group includes at most one parameter carrying parameter IO request. Determine whether the number of IO requests included in the IO request group of the first value is greater than the second preset value. If there is an IO request group larger than the second preset value, divide the IO request group again so that the divided The number of IO requests included in each IO request group is less than or equal to the second preset value. If the first value is not an integer, the first value is rounded up to obtain the second value, and the obtained multiple IO requests are divided into second value IO request groups. At this time, the second value is IO request group Include an IO request group without parameters. Determine whether the number of IO requests included in the second value IO request group is greater than the second preset value. If there is an IO request group larger than the second preset value, then divide the IO request group again so that the divided The number of IO requests included in each IO request group is less than or equal to the second preset value.
[0181] Among them, because the read and write requests do not carry parameters, and in practical applications, most of the IO requests are read and write requests, so the number of IO requests that carry parameters is small, so the obtained multiple IO requests are divided into multiple IO request group, so that each IO request group includes at most one IO request carrying parameters, which will not increase the number of IO request groups.
[0182] (4) If it does not exist, divide the obtained multiple IO requests into multiple IO request groups.
[0183] Specifically, if there is no IO request carrying parameters among the multiple acquired IO requests, the multiple acquired IO requests are divided into multiple IO request groups according to the number of multiple acquired IO requests.
[0184] Preferably, if there is no IO request carrying parameters among the acquired multiple IO requests, the multiple acquired IO requests are divided into multiple IO request groups according to the number of IO requests and the second preset value, so that each The IO request group includes at most a second preset number of IO requests.
[0185] Step 304: For any IO request group in the multiple IO request groups, select a main request for the IO request group;
[0186] Specifically, for any one IO request group in the multiple IO request groups, if the IO request group includes an IO request carrying parameters, the IO request carrying parameters is determined as the main request of the IO request group; If the IO request group does not include an IO request carrying parameters, an IO request is randomly selected from the IO request group, and the selected IO request is determined as the main request of the IO request group.
[0187] Step 305: Determine other IO requests in the IO request group except the main request as the slave requests of the IO request group, and encapsulate the slave request in the IO request parameter page of the main request;
[0188] Specifically, other IO requests in the IO request group except the master request are determined as the slave requests of the IO request group, and the LUN corresponding to each slave request, the priority of each slave request, and each slave request are determined. The requested command description words are respectively filled in the IO parameter list corresponding to each slave request; set the page number and sub-page number for the IO request parameter page of the master request, and set the page number, sub-page number and the IO parameter list corresponding to each slave request Encapsulated in the IO request parameter page of the main request.
[0189] Wherein, after the slave request is encapsulated in the IO request parameter page of the master request, the IO request parameter page of the master request includes not only the parameters originally carried by the master request, but also the LUN and each slave request corresponding to each slave request. The priority of the slave request and the command description word for each slave request.
[0190] Among them, in the SCSI protocol, different parameter pages are uniquely identified by different combinations of page numbers and sub-page numbers. Therefore, in the embodiment of the present invention, the page number and sub-page number are set for the IO request parameter page of the main request in advance, and the set page number and sub-page number are set. The page number is sent to the storage system. When the storage system receives the IO request parameter page of the main request, it can identify the IO request parameter page of the main request through the page number and the sub-page number. For example, set the page number to 0x08h, and set the sub-page number to 0x00h.
[0191] For example, the IO request parameter page of the main request can be in the format shown in Table 3 below. The IO request parameter page of the main request includes page number, sub-page number, page length, IO parameter list corresponding to slave request 1, slave request IO parameter list 2 corresponding to 2 and IO parameter list 3 corresponding to slave request 3.
[0192] table 3
[0193] Page number
[0194] Step 306: If the command description of the main request includes a parameter list length field, modify the parameter list length field to the length of the IO request parameter page of the main request;
[0195] Among them, if the main request is an IO request that carries parameters, the command description of the main request includes a parameter list length field. If the main request is not an IO request that carries parameters, the command description of the main request does not Include the parameter list length field.
[0196] Step 307: If the command description of the main request does not include the parameter list length field, add the parameter list length field to the command description of the main request, and set the parameter list length field to the IO request of the main request The length of the parameter page;
[0197] Step 308: encapsulate the main request into an IO command according to the LUN corresponding to the main request, the priority of the main request, and the command description word of the main request;
[0198] Step 309: Send the IO command and the IO request parameter page of the main request to the storage system;
[0199] Step 310: The storage system receives the IO command, determines according to the command description word of the IO command that the IO command carries the IO request parameter page of the main request, and receives the IO request parameter page of the main request;
[0200] Specifically, the SCSI drive module included in the storage system receives the IO command, determines that the IO command carries the IO request parameter page of the main request according to the parameter list length field included in the command description word of the IO command, and receives the main request IO request parameter page.
[0201] Step 311: According to the page number and sub-page number of the IO request parameter page of the main request, it is determined that the IO request parameter page of the main request includes multiple slave requests. According to the length of the IO request parameter page of the main request, The multiple slave requests are parsed from the IO request parameter page, and the master request and the slave request are processed separately.
[0202] Specifically, according to the page number and sub-page number of the IO request parameter page of the main request, it is determined that the IO request parameter page of the main request is the parameter page carrying the slave request. According to the length of the IO request parameter page of the main request, the slave request The multiple slave requests are parsed from the IO request parameter page of the IO request, and the master request is processed according to the LUN corresponding to the master request, the priority of the master request, and the command description word of the master request, and according to the multiple slave requests The LUN corresponding to the request, the priority of the plurality of slave requests, and the command description words of the plurality of slave requests are respectively processed for the plurality of slave requests.
[0203] In the embodiment of the present invention, when a virtual machine sends an IO request, multiple IO requests are acquired; the multiple acquired IO requests are divided into multiple IO request groups, and a main request is selected for each IO request group. The slave request in each IO request group is encapsulated in the IO request parameter page of the master request; the master request is encapsulated into an IO command and sent to the storage system, and the IO command carries the IO request parameter page. In this way, it is avoided that the IO request corresponding to each LUN is encapsulated into an IO command, and the number of IO commands between the host and the storage system is reduced, thereby avoiding the connection and disconnection of a large number of IO commands, and improving the storage system Read and write performance and throughput.

PUM

no PUM

Description & Claims & Application Information

We can also present the details of the Description, Claims and Application information to help users get a comprehensive understanding of the technical details of the patent, such as background art, summary of invention, brief description of drawings, description of embodiments, and other original content. On the other hand, users can also determine the specific scope of protection of the technology through the list of claims; as well as understand the changes in the life cycle of the technology with the presentation of the patent timeline. Login to view more.
Who we serve
  • R&D Engineer
  • R&D Manager
  • IP Professional
Why Eureka
  • Industry Leading Data Capabilities
  • Powerful AI technology
  • Patent DNA Extraction
Social media
Try Eureka
PatSnap group products