Data transmission method and device based on multiple physical channels of raid card
By virtualizing the RAID card as multiple PCIe sub-devices and utilizing multiple physical channels for data transmission, the high cost and hardware complexity of RAID card clusters are solved, achieving efficient data transmission and improved system stability.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2025-01-24
- Publication Date
- 2026-04-07
AI Technical Summary
RAID card clusters require multiple RAID cards, increasing transmission costs and hardware complexity. They also only support single physical channel transmission, resulting in limited IO transmission rates and performance degradation.
By virtualizing the RAID card as multiple PCIe sub-devices, data transmission is achieved through multiple physical channels, enabling parallel transmission and supporting multi-physical-channel transmission to improve data transmission rate and system reliability.
It significantly improves data transmission rate, reduces transmission bottlenecks, enhances system stability and flexibility, lowers maintenance costs, and supports system expansion and upgrades.
Smart Images

Figure CN119946162B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present application relates to the technical field of data processing, in particular to a data transmission method and device based on multiple physical channels of a RAID card. BACKGROUND
[0002] In the related art, a RAID (Redundant Array of Independent Disks) card cluster can be used, wherein the RAID card cluster includes multiple RAID cards, and multiple disks are respectively connected to each RAID card. Mainly, when an IO (Input / Output) instruction of an operating system is received, a corresponding RAID card can be determined according to a RAID stripe serial number corresponding to the IO instruction, so that the RAID card cluster is used to perform data processing operations corresponding to all IO instructions. The processing cores of the RAID card controller can also be interconnected through a preset channel, and the IOPS (Input / Output Operations Per Second) load of each processing core can be monitored to realize dynamic task allocation between the processing cores.
[0003] However, in the related art, the RAID card cluster needs to be equipped with multiple RAID cards, which increases the transmission cost. The introduction of the preset channel and the monitoring mechanism increases the hardware complexity of the RAID card controller and increases the maintenance difficulty of the RAID card controller. In addition, both of the RAID cards only support single physical channel transmission. When data is transmitted at a large IOPS rate, the IO transmission rate is limited due to the IO resource competition mechanism in the operating system, which greatly reduces the performance of the RAID card, and improvement is needed. SUMMARY
[0004] The present application provides a data transmission method and device based on multiple physical channels of a RAID card to solve the problems in the related art that the RAID card cluster needs to be equipped with multiple RAID cards, which increases the transmission cost. The introduction of the preset channel and the monitoring mechanism increases the hardware complexity of the RAID card controller and increases the maintenance difficulty. In addition, both of the RAID cards only support single physical channel transmission, which limits the IO transmission rate and greatly reduces the performance of the RAID card.
[0005] The first aspect of this application provides a data transmission method based on multiple physical channels of a RAID card, comprising the following steps: receiving at least one target IO request, and determining, based on the task information of the at least one target IO request and the device information of at least one target device, the number of multiple physical channels of at least one RAID card virtualized as a PCIE (Peripheral Component Interconnect Express) sub-device that meets preset requirements; based on the number of multiple physical channels, virtualizing the corresponding RAID card as corresponding multiple PCIE sub-devices; and transmitting the at least one target IO request to the at least one target device using the multiple physical channels between the at least one PCIE sub-device and the at least one target device to fulfill the preset requirements.
[0006] The above technical solution allows the RAID card to be virtualized into multiple physical channels of a PCIe sub-device that meet certain requirements, based on the task information of the received target IO request and the device information of the target device. This enables the corresponding RAID card to be virtualized into multiple PCIe sub-devices, allowing the target IO request to be transmitted using the multiple physical channels between the PCIe sub-devices and the target device. By utilizing the multiple physical channels of the RAID card, parallel data transmission is achieved, significantly improving the data transmission rate, reducing transmission bottlenecks, increasing the overall system throughput, and enhancing system reliability and stability. Furthermore, because it supports multiple physical channel transmission, system expansion and upgrades are easier to achieve, improving system flexibility and manageability.
[0007] Optionally, in one embodiment of this application, the step of virtualizing the corresponding RAID card as a plurality of corresponding PCIe sub-devices includes: obtaining at least one bus identifier and at least one function identifier corresponding to the RAID card based on the routing identifier function of the RAID card; generating a bus identifier and a function identifier corresponding to the at least one PCIe sub-device based on the at least one bus identifier and the at least one function identifier, so as to virtualize the RAID card as the plurality of PCIe sub-devices based on the bus identifier and the function identifier.
[0008] The above technical solution allows for the generation of bus and function identifiers for PCIe sub-devices based on the routing identifier function of the RAID card, using the corresponding bus and function identifiers. This enables the RAID card to be virtualized into multiple PCIe sub-devices, allowing for more flexible allocation of system resources and improved resource utilization. Virtualization technology also enables the RAID card to be compatible with a wider range of PCIe devices and system architectures, helping to reduce the cost of hardware upgrades and replacements, improving system maintainability, and allowing users to more easily manage and monitor the RAID card and its corresponding PCIe sub-devices, thus reducing maintenance costs.
[0009] Optionally, in one embodiment of this application, the step of transmitting the at least one target I / O request to the at least one target device using multiple physical channels between the at least one PCIe sub-device and the at least one target device to fulfill the preset requirement includes: obtaining the physical channel corresponding to the target I / O request being transmitted to the at least one target device; and transmitting the target I / O request to the at least one target device using the physical channel.
[0010] The above technical solution can obtain the physical channel corresponding to the target device for transmitting the target IO request, and transmit the target IO request to the target device through the physical channel. This ensures that the data is accurately sent to the target device, avoiding missending or missing data during the data transmission process. In addition, by selecting an appropriate physical channel for data transmission, the data transmission path can be optimized, reducing data transmission latency and loss, thereby improving data transmission efficiency.
[0011] Optionally, in one embodiment of this application, transmitting the target I / O request to the at least one target device using the physical channel includes: determining device information of the target device corresponding to the physical channel based on the physical channel; and transmitting the target I / O request to the at least one target device based on the device information, the target device corresponding to the device information, and the physical channel corresponding to the device information.
[0012] The above technical solution allows for the determination of corresponding device information based on physical channels, and then the transmission of target IO requests based on that device information. This enables precise location of the target device, avoiding errors and confusion during data transmission. With accurate device location, target IO requests can be accurately transmitted to the target device, ensuring the accuracy and integrity of data transmission, reducing intermediate steps and unnecessary delays, improving the utilization efficiency of system resources, and achieving real-time data transmission.
[0013] Optionally, in one embodiment of this application, the step of transmitting the at least one target I / O request to the at least one target device using the multiple physical channels between the at least one PCIe sub-device and the at least one target device to fulfill the preset requirement includes: determining, based on the at least one PCIe sub-device, the RAID driver controller corresponding to the at least one target device to transmit the at least one target I / O request; and using the RAID driver controller to drive the at least one PCIe sub-device to transmit the at least one target I / O request to the at least one target device.
[0014] The above technical solution can be used to drive PCIe sub-devices to complete the transmission of target IO requests using the corresponding RAID driver controller. It can effectively manage the data transmission between multiple PCIe sub-devices, realize parallel processing and load balancing, thereby improving the overall efficiency of data transmission. It can also ensure data integrity and normal system operation when hard drive failure occurs, and significantly reduce the risk of data loss.
[0015] Optionally, in one embodiment of this application, the step of using the RAID driver controller to drive the at least one PCIe sub-device to transmit the at least one target IO request to the at least one target device includes: obtaining the IO format driven by the RAID driver controller; and transmitting the at least one target IO request to the at least one target device based on the IO format and the at least one PCIe sub-device.
[0016] The above technical solution allows for the acquisition of the IO format driven by the RAID driver controller. Based on this IO format and at least one PCIe sub-device, at least one target IO request can be transmitted to at least one target device. Acquiring the IO format ensures that the target IO request format matches the transmission requirements between the RAID controller and the PCIe sub-device, preventing transmission errors or data loss due to format mismatches, thus improving data transmission accuracy. Furthermore, by explicitly defining and adhering to a specific IO format, compatibility of the target IO request across different devices can be ensured, achieving seamless transmission, optimizing data transmission performance, and enhancing system reliability and stability.
[0017] Optionally, in one embodiment of this application, determining the number of multiple physical channels of at least one RAID card as a PCIe sub-device that meets preset requirements based on the task information of the at least one target IO request and the device information of at least one target device includes: when the preset requirement is that the IO transmission rate is greater than the target transmission rate corresponding to the task information, determining the number of multiple physical channels based on the task information, the device information and the target transmission rate.
[0018] The above technical solution allows for determining the number of physical channels based on task information, device information, and the target transmission rate, provided that the IO transmission rate is greater than the target transmission rate. It enables precise calculation of the required number of physical channels based on task and device information, ensuring that the IO transmission rate exceeds the target transmission rate. This avoids resource waste and bottlenecks, improves overall transmission efficiency, and allows for dynamic adjustment of the number of physical channels according to different task information, adapting to different task requirements and enabling wider application in various scenarios.
[0019] A second aspect of this application provides a data transmission apparatus based on multiple physical channels of a RAID card, comprising: a determining module, configured to receive at least one target IO request and determine, based on task information of the at least one target IO request and device information of at least one target device, the number of multiple physical channels of at least one RAID card virtualized as a PCIe sub-device meeting preset requirements; a virtualizing module, configured to virtualize the corresponding RAID card as corresponding multiple PCIe sub-devices based on the number of multiple physical channels; and a transmission module, configured to transmit the at least one target IO request to the at least one target device using the multiple physical channels between the at least one PCIe sub-device and the at least one target device to fulfill the preset requirements.
[0020] The above technical solution allows the RAID card to be virtualized into multiple physical channels of a PCIe sub-device that meet certain requirements, based on the task information of the received target IO request and the device information of the target device. This enables the corresponding RAID card to be virtualized into multiple PCIe sub-devices, allowing the target IO request to be transmitted using the multiple physical channels between the PCIe sub-devices and the target device. By utilizing the multiple physical channels of the RAID card, parallel data transmission is achieved, significantly improving the data transmission rate, reducing transmission bottlenecks, increasing the overall system throughput, and enhancing system reliability and stability. Furthermore, because it supports multiple physical channel transmission, system expansion and upgrades are easier to achieve, improving system flexibility and manageability.
[0021] Optionally, in one embodiment of this application, the virtual module includes: a first acquisition unit, configured to acquire at least one bus identifier and at least one function identifier corresponding to the RAID card based on the routing identifier function of the RAID card; and a virtualization unit, configured to generate bus identifiers and function identifiers corresponding to the at least one PCIe sub-device from the at least one bus identifier and the at least one function identifier, so as to virtualize the RAID card as the plurality of PCIe sub-devices based on the bus identifiers and the function identifiers.
[0022] The above technical solution allows for the generation of bus and function identifiers for PCIe sub-devices based on the routing identifier function of the RAID card, using the corresponding bus and function identifiers. This enables the RAID card to be virtualized into multiple PCIe sub-devices, allowing for more flexible allocation of system resources and improved resource utilization. Virtualization technology also enables the RAID card to be compatible with a wider range of PCIe devices and system architectures, helping to reduce the cost of hardware upgrades and replacements, improving system maintainability, and allowing users to more easily manage and monitor the RAID card and its corresponding PCIe sub-devices, thus reducing maintenance costs.
[0023] Optionally, in one embodiment of this application, the transmission module includes: a second acquisition unit, configured to acquire the physical channel corresponding to the transmission of the target IO request to the at least one target device; and a first transmission unit, configured to transmit the target IO request to the at least one target device using the physical channel.
[0024] The above technical solution can obtain the physical channel corresponding to the target device for transmitting the target IO request, and transmit the target IO request to the target device through the physical channel. This ensures that the data is accurately sent to the target device, avoiding missending or missing data during the data transmission process. In addition, by selecting an appropriate physical channel for data transmission, the data transmission path can be optimized, reducing data transmission latency and loss, thereby improving data transmission efficiency.
[0025] Optionally, in one embodiment of this application, the first transmission unit includes: a determining subunit, configured to determine device information of a target device corresponding to the physical channel based on the physical channel; and a first transmission subunit, configured to transmit the target IO request to the at least one target device based on the device information, the target device corresponding to the device information, and the physical channel corresponding to the device information.
[0026] The above technical solution allows for the determination of corresponding device information based on physical channels, and then the transmission of target IO requests based on that device information. This enables precise location of the target device, avoiding errors and confusion during data transmission. With accurate device location, target IO requests can be accurately transmitted to the target device, ensuring the accuracy and integrity of data transmission, reducing intermediate steps and unnecessary delays, improving the utilization efficiency of system resources, and achieving real-time data transmission.
[0027] Optionally, in one embodiment of this application, the transmission module includes: a second transmission unit, configured to determine, based on the at least one PCIe sub-device, that the at least one target I / O request will be transmitted to the RAID driver controller corresponding to the at least one target device; and a third transmission unit, configured to use the RAID driver controller to drive the at least one PCIe sub-device to transmit the at least one target I / O request to the at least one target device.
[0028] The above technical solution can be used to drive PCIe sub-devices to complete the transmission of target IO requests using the corresponding RAID driver controller. It can effectively manage the data transmission between multiple PCIe sub-devices, realize parallel processing and load balancing, thereby improving the overall efficiency of data transmission. It can also ensure data integrity and normal system operation when hard drive failure occurs, and significantly reduce the risk of data loss.
[0029] Optionally, in one embodiment of this application, the third transmission unit includes: an acquisition subunit for acquiring the IO format driven by the RAID driver controller; and a second transmission subunit for transmitting the at least one target IO request to the at least one target device based on the IO format and the at least one PCIe sub-device.
[0030] The above technical solution allows for the acquisition of the IO format driven by the RAID driver controller. Based on this IO format and at least one PCIe sub-device, at least one target IO request can be transmitted to at least one target device. Acquiring the IO format ensures that the target IO request format matches the transmission requirements between the RAID controller and the PCIe sub-device, preventing transmission errors or data loss due to format mismatches, thus improving data transmission accuracy. Furthermore, by explicitly defining and adhering to a specific IO format, compatibility of the target IO request across different devices can be ensured, achieving seamless transmission, optimizing data transmission performance, and enhancing system reliability and stability.
[0031] Optionally, in one embodiment of this application, the determining module includes: a determining unit, configured to determine the number of the plurality of physical channels based on the task information, the device information, and the target transmission rate when the preset requirement is that the IO transmission rate is greater than the target transmission rate corresponding to the task information.
[0032] The above technical solution allows for determining the number of physical channels based on task information, device information, and the target transmission rate, provided that the IO transmission rate is greater than the target transmission rate. It enables precise calculation of the required number of physical channels based on task and device information, ensuring that the IO transmission rate exceeds the target transmission rate. This avoids resource waste and bottlenecks, improves overall transmission efficiency, and allows for dynamic adjustment of the number of physical channels according to different task information, adapting to different task requirements and enabling wider application in various scenarios.
[0033] A third aspect of this application provides an electronic device, including: a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor executes the program to implement the data transmission method based on a RAID card with multiple physical channels as described in the above embodiments.
[0034] A fourth aspect of this application provides a computer-readable storage medium storing a computer program that, when executed by a processor, implements the data transmission method based on multiple physical channels of a RAID card as described above.
[0035] A fifth aspect of this application provides a computer program product, including a computer program that, when executed, implements the data transmission method based on multiple physical channels of a RAID card as described above.
[0036] This application embodiment can virtualize a RAID card into multiple physical channels of a PCIe sub-device that meet certain requirements, based on the task information of the received target IO request and the device information of the target device. This allows the corresponding RAID card to be virtualized into multiple PCIe sub-devices, enabling the target IO request to be transmitted using multiple physical channels between the PCIe sub-devices and the target device. By utilizing the multiple physical channels of the RAID card, parallel data transmission is achieved, significantly improving the data transmission rate, reducing transmission bottlenecks, increasing the overall system throughput, and enhancing system reliability and stability. Furthermore, because it supports multi-physical-channel transmission, system expansion and upgrades are easier to achieve, improving system flexibility and manageability. This solves the problems in related technologies, such as the need for multiple RAID cards in a RAID card cluster, increasing transmission costs; the increased hardware complexity and maintenance difficulty of the RAID card controller due to the introduction of preset channels and monitoring mechanisms; and the limitation of IO transmission rate caused by only supporting single-physical-channel transmission, which greatly reduces the performance of the RAID card.
[0037] Additional aspects and advantages of this application will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of this application. Attached Figure Description
[0038] The above and / or additional aspects and advantages of this application will become apparent and readily understood from the following description of the embodiments taken in conjunction with the accompanying drawings, wherein:
[0039] Figure 1 This is a flowchart illustrating a data transmission method based on multiple physical channels of a RAID card, according to an embodiment of this application.
[0040] Figure 2 A flowchart illustrating how a RAID card can be virtually converted into multiple PCIe sub-devices according to one embodiment of this application;
[0041] Figure 3 A block diagram illustrating a multi-channel mapping topology between an operating system and one or more RAID arrays using a RAID array with too many physical channels, according to an embodiment of this application;
[0042] Figure 4 This is a flowchart illustrating the IO request transmission optimization process when the multi-physical-channel function of a RAID card is enabled, according to one embodiment of this application.
[0043] Figure 5 This is a block diagram of a data transmission device based on a RAID card with multiple physical channels according to an embodiment of this application;
[0044] Figure 6 This is a schematic diagram of the structure of an electronic device provided according to an embodiment of this application.
[0045] Figure label:
[0046] Among them, 10-data transmission device based on RAID card multi-physical channel; 100-determining module, 200-virtual module, 300-transmission module; 601-memory, 602-processor, 603-communication interface. Detailed Implementation
[0047] The embodiments of this application are described in detail below. Examples of these embodiments are shown in the accompanying drawings, wherein the same or similar reference numerals denote the same or similar elements or elements having the same or similar functions throughout. The embodiments described below with reference to the accompanying drawings are exemplary and intended to explain this application, and should not be construed as limiting this application.
[0048] The following description, with reference to the accompanying drawings, describes a data transmission method and apparatus based on multiple physical channels of a RAID card according to embodiments of this application. Addressing the issues mentioned in the background art, such as the need for multiple RAID cards in a RAID card cluster, increasing transmission costs, the increased hardware complexity and maintenance difficulty of the RAID card controller due to the introduction of preset channels and monitoring mechanisms, and the limitation of IO transmission rate caused by only supporting single physical channel transmission, which significantly reduces RAID card performance, this application provides a data transmission method based on multiple physical channels of a RAID card. In this method, the RAID card can be virtualized into multiple physical channels of a PCIe sub-device that meet certain requirements based on the task information of the received target IO request and the device information of the target device. This allows the corresponding RAID card to be virtualized into multiple corresponding PCIe sub-devices, thereby transmitting the target IO request using multiple physical channels between the PCIe sub-device and the target device. By utilizing the multiple physical channels of the RAID card, parallel data transmission is achieved, significantly improving the data transmission rate, reducing transmission bottlenecks, increasing the overall system throughput, and enhancing system reliability and stability. Furthermore, since it supports multiple physical channel transmission, system expansion and upgrades can be more easily achieved, improving system flexibility and manageability. This solves the problems in related technologies, such as the need for multiple RAID cards in a RAID card cluster, which increases transmission costs; the need to introduce preset channels and monitoring mechanisms, which increases the hardware complexity of the RAID card controller and increases maintenance difficulty; and the need to support only a single physical channel for transmission, which limits the IO transmission rate and greatly reduces the performance of the RAID card.
[0049] Specifically, Figure 1 This is a flowchart illustrating a data transmission method based on multiple physical channels of a RAID card, according to an embodiment of this application.
[0050] like Figure 1 As shown, this data transmission method based on multiple physical channels of a RAID card includes the following steps:
[0051] In step S101, at least one target IO request is received, and the number of physical channels of at least one RAID card as a PCIe sub-device that meets preset requirements is determined by the task information of the at least one target IO request and the device information of at least one target device.
[0052] It is understood that the target IO request in the embodiments of this application can be understood as an IO request initiated by an application, service or user in a storage system or server environment, which aims to access or modify data stored on a target device (such as a hard drive, SSD, RAID card, etc., which are not specifically limited in this application).
[0053] Furthermore, in the embodiments of this application, the type of the target IO request may include, but is not limited to, read requests, write requests, delete requests, update requests, or query requests, etc. The specific type can be set by those skilled in the art according to the actual situation, and this application does not impose any specific restrictions.
[0054] Furthermore, it should be noted that the task information of the target IO request in the embodiments of this application may include, but is not limited to, the type of the target IO request, such as read request, write request, etc., which is not specifically limited in this application; the data location, such as logical address, physical address, etc., which is not specifically limited in this application; the data size, such as the amount of data read or written, etc., which is not specifically limited in this application; priority, metadata, throughput, IOPS (Input / Output Operations Per Second), etc., can be specifically set by those skilled in the art according to the actual situation, which is not specifically limited in this application.
[0055] As one possible implementation, upon receiving target I / O requests, this application embodiment can automatically parse these requests and, based on the task information of the target I / O request and the device information of the target device, such as device name, manufacturer, memory size, network interface, operating system, utilization rate, encryption status, etc. (this application does not impose specific limitations), virtualize the RAID card as multiple physical channels of a PCIe sub-device that meet certain requirements. These requirements can be set by those skilled in the art according to actual conditions, and this application does not impose specific limitations.
[0056] In some embodiments, the RAID card of this application can implement multi-physical channel functionality by using a virtual switch topology based on the target IO request and the target device. This topology is implemented by a PCIe device (RAID card) virtually creating a group of PCIe sub-devices.
[0057] In some embodiments, the RAID card of this application, based on the target IO request and the target device, uses a virtual switch topology to virtualize a RAID card into multiple PCIe sub-devices. Each PCIe sub-device can run independently without conflict. Therefore, each PCIe sub-device can be directly mapped to a virtual machine, integrating a dedicated server running storage-intensive workloads into a single virtualized server equipped with a high-performance RAID card, thereby saving costs and energy consumption.
[0058] For example, assuming the target IO request has a data throughput of 4GB / s and the bandwidth of each physical channel is 1GB / s, then the required number of physical channels is 4. If the RAID card supports 8 physical channels and the server has 4 PCIe slots, then it can be determined that the number of physical channels that can be used to virtualize the RAID card as a PCIe sub-device to meet certain requirements is 4.
[0059] Optionally, in one embodiment of this application, determining the number of multiple physical channels of at least one RAID card as a PCIe sub-device that meets preset requirements based on task information of at least one target IO request and device information of at least one target device includes: when the preset requirement is that the IO transmission rate is greater than the target transmission rate corresponding to the task information, determining the number of multiple physical channels based on the task information, device information and target transmission rate.
[0060] In some embodiments, the present application requires that the IO transmission rate be greater than the target transmission speed, and thus ensure that the IO transmission rate is greater than the target transmission speed, and then determine the number of multiple physical channels by combining task information and device information.
[0061] The IO transfer rate can be an absolute value (such as GB per second, which is not specifically limited in this application) or a relative value (such as a percentage increase in the target transfer rate, which is not specifically limited in this application); while the target transfer rate is extracted from the task information of the target IO request and represents the IO transfer rate that the application or service expects to achieve.
[0062] For example, this embodiment assumes a target IO request requiring data to be read at a transfer rate of at least 2GB / s. The target device is a server equipped with a RAID card supporting PCIe 4.0, which can virtualize multiple PCIe sub-devices. Each sub-device can be allocated a different number of physical channels. In this case, this embodiment can determine the number of physical channels based on the target transfer rate (2GB / s), the bandwidth of each physical channel in the RAID card, and the server's storage capacity. The number of physical channels calculated using task information and device information ensures that the IO transfer rate is greater than the target transfer rate, avoiding resource waste and bottlenecks, improving overall transfer efficiency, and dynamically adjusting the number of physical channels according to different task information to adapt to different task requirements, making it more widely applicable to various scenarios.
[0063] Furthermore, it should be noted that, in this embodiment of the application, the IO transmission delay is required to be less than the target transmission delay corresponding to the task information. Under the condition that the IO transmission delay is less than the target transmission delay, the number of multiple physical channels is determined by combining the task information and device information.
[0064] I / O transmission latency can be understood as the time interval between initiating an I / O request and receiving a response, reflecting the response speed and efficiency of the storage system; while target transmission latency is extracted from the task information of the target I / O request and represents the upper limit of the I / O response speed that the application or service expects to achieve.
[0065] For example, this embodiment of the application assumes an IO request that requires transmission with an IO transmission latency of less than 10 milliseconds. The target device is a server equipped with a RAID card that supports PCIe 4.0. This card can virtualize multiple PCIe sub-devices, and each sub-device can be allocated a different number of physical channels. In this case, this embodiment of the application can determine the number of physical channels based on the target transmission latency (10 milliseconds), the bandwidth of each physical channel in the RAID card, and the storage capacity of the server.
[0066] In step S102, based on the number of physical channels, the corresponding RAID card is virtualized as multiple corresponding PCIe sub-devices.
[0067] In actual implementation, the embodiments of this application can virtualize the RAID card as a corresponding number of PCIe sub-devices based on the multiple physical channel numbers obtained above.
[0068] For example, in this embodiment of the application, the number of physical channels can be calculated based on the task information of the target IO request and the device information of the target device. For example, in this embodiment of the application, it can be assumed that each node needs 4 physical channels to ensure sufficient storage bandwidth. In the virtualization configuration options, the virtualization function is enabled, and the corresponding RAID card is virtualized as a virtual PCIe sub-device with the same number of physical channels.
[0069] Optionally, in one embodiment of this application, the corresponding RAID card is virtualized as multiple corresponding PCIe sub-devices, including: obtaining at least one bus identifier and at least one function identifier corresponding to the RAID card based on the routing identifier function of the RAID card; generating at least one bus identifier and function identifier corresponding to at least one PCIe sub-device based on the at least one bus identifier and at least one function identifier, so as to virtualize the RAID card as multiple PCIe sub-devices based on the bus identifier and function identifier.
[0070] It is understood that in the embodiments of this application, the bus identifier is usually a number that can be used to indicate where the RAID card is connected on the PCIe bus; the function identifier is also usually a number that can be used to distinguish different PCIe sub-devices on the same bus.
[0071] Furthermore, in the embodiments of this application, the acquisition of the bus identifier and function identifier corresponding to the RAID card can be accomplished through interaction with the RAID card's management interface (such as BIOS (Basic Input Output System) settings, driver interface, or dedicated management software, etc., which are not specifically limited in this application).
[0072] Those skilled in the art will understand that the embodiments of this application can obtain the bus identifier and function identifier corresponding to the RAID card, and then generate the bus identifier and function identifier corresponding to each virtual PCIe sub-device based on these identifiers, thereby virtualizing the RAID card into multiple PCIe sub-devices.
[0073] For example, in combination Figure 2 In this embodiment, the routing identifier of the RAID card can be composed of, but is not limited to, bus identifiers and function identifiers. At system startup, the system assigns different bus identifiers to each PCIe sub-device. According to the PCIe protocol, the function identifier of the PCIe sub-device presented through the virtual switch hierarchy must always be 0. Therefore, in this embodiment, each PCIe sub-device is assigned a different routing identifier, thus virtualizing the RAID card as multiple PCIe sub-devices. Virtualization technology enables the RAID card to be compatible with more types of PCIe devices and system architectures, helping to reduce the cost of hardware upgrades and replacements, improving system maintainability, and allowing users to more conveniently manage and monitor the RAID card and its corresponding PCIe sub-devices, reducing maintenance costs.
[0074] In step S103, at least one target I / O request is transmitted to at least one target device using a multi-physical channel between at least one PCIe sub-device and at least one target device to fulfill a preset requirement.
[0075] As one possible implementation, in this embodiment, when the host initiates a target IO request, such as an IO read / write task, without specific limitations, the block data layer in the operating system receives the IO request from the upper layer, sorts or merges the data according to command priority through the IO scheduler, and completes the IO transfer from the block data layer to the SCSI (Small Computer System Interface) layer (driver) in the form of multiple queues through multiple physical channels. Each target device (such as a pass-through hard drive or RAID array, without specific limitations) receives the target IO request, reports successful command execution, and completes the full target IO request transmission process. In this embodiment, due to the parallel transmission through multiple physical channels, the IO transmission rate can be increased several times, resulting in a significant performance improvement.
[0076] Optionally, in one embodiment of this application, transmitting at least one target I / O request to at least one target device using multiple physical channels between at least one PCIe sub-device and at least one target device to fulfill a preset requirement includes: obtaining the physical channel corresponding to the target I / O request being transmitted to at least one target device; and transmitting the target I / O request to at least one target device using the physical channel.
[0077] It is understood that, in the embodiments of this application, there may be one physical channel or multiple physical channels between the target IO request and the target device, and this application does not impose any specific restrictions.
[0078] In some embodiments, this application can create multiple physical channels by using a RAID card management tool based on the number of target devices (such as RAID arrays, pass-through hard drives, etc., which are not specifically limited in this application) connected to the RAID card. This ensures that data is accurately sent to the target devices, avoiding mis-sending or missing data during transmission. If no settings are made, the number of physical channels defaults to 1, which is a single-channel mode. Then, each physical channel is bound to a RAID array (pass-through hard drive) in sequence. The correspondence can be 1 physical channel to 1 or more RAID array groups (pass-through hard drives), completing the configuration of multiple physical channels. By selecting appropriate physical channels for data transmission, the data transmission path can be optimized, reducing data transmission latency and loss, thereby improving data transmission efficiency.
[0079] Optionally, in one embodiment of this application, transmitting the target I / O request to at least one target device using a physical channel includes: determining device information of the target device corresponding to the physical channel based on the physical channel; and transmitting the target I / O request to at least one target device based on the device information, the target device corresponding to the device information, and the physical channel corresponding to the device information.
[0080] In some embodiments, the present application embodiments may transmit the target IO request to the corresponding target device based on the target IO request and the device information of the target device corresponding to the physical channel.
[0081] For example, in this embodiment of the application, each PCIe sub-device provides a physical channel for the transmission of target IO requests. Therefore, the RAID card driver can realize the mapping between the operating system and one or more RAID arrays (or pass-through hard drives) through specific physical channels, realizing the function of parallel operation of multiple physical channels. An example diagram is shown below. Figure 3 As shown, the target device can be accurately located, avoiding errors and confusion during data transmission. This ensures accurate transmission to the target device, guaranteeing the accuracy and integrity of data transmission and reducing intermediate steps and unnecessary delays.
[0082] Optionally, in one embodiment of this application, transmitting at least one target I / O request to at least one target device using multiple physical channels between at least one PCIe sub-device and at least one target device to fulfill a preset requirement includes: determining, based on at least one PCIe sub-device, the RAID driver controller corresponding to the at least one target device to transmit the at least one target I / O request; and using the RAID driver controller to drive at least one PCIe sub-device to transmit the at least one target I / O request to at least one target device.
[0083] It is understood that in the embodiments of this application, one PCIe sub-device corresponds to one RAID driver controller, and when all PCIe sub-devices can be recognized normally, the corresponding RAID driver controller drives the RAID device, starts the RAID device, and allocates memory space and DMA (Direct Memory Access) buffer to ensure that the operating system can effectively manage and control the RAID card, providing a hardware foundation for subsequent command execution and data transmission.
[0084] For example, in this embodiment of the application, the RAID card can be virtualized into multiple PCIe sub-devices according to the number of physical channels configured by the user. When the system starts running, all PCIe sub-devices on the host bus are configured with different routing identifiers to complete the RAID card virtualization process and ensure that all PCIe sub-devices can be recognized normally. The RAID driver controller drives and starts the RAID device and allocates memory space and DMA buffer. This can effectively manage the data transmission between multiple PCIe sub-devices, realize parallel processing and load balancing, thereby improving the overall efficiency of data transmission. It can ensure data integrity and normal system operation when the hard drive fails, and significantly reduce the risk of data loss.
[0085] Optionally, in one embodiment of this application, using a RAID driver controller to drive at least one PCIe sub-device to transmit at least one target IO request to at least one target device includes: obtaining the IO format driven by the RAID driver controller; and transmitting at least one target IO request to at least one target device based on the IO format and at least one PCIe sub-device.
[0086] It is understood that in the embodiments of this application, the RAID driver controller is responsible for managing a group of physical storage devices (such as hard disk drives or solid-state drives) to provide data redundancy, performance improvement, or both. In order to communicate with these storage devices, the RAID driver controller needs to follow a specific IO format. The IO format can define how data is organized, encapsulated, and transmitted, etc., which is not specifically limited in this application, thereby ensuring data consistency and integrity. For example, in the embodiments of this application, the RAID driver controller can encapsulate the received target IO request into a queue command that can be recognized and processed by the RAID card FW (Firewall), and then merge or split the target IO request and distribute it to each target device (pass-through hard drive or RAID array). Due to the multi-physical channel function, the data transmission within each physical channel does not affect each other, realizing parallel data transmission.
[0087] As one possible implementation, the RAID driver controller in this application embodiment can encapsulate the received target IO request into a queue command that can be recognized and processed by the RAID card FW. This ensures that the format of the target IO request matches the transmission requirements between the RAID controller and the PCIe sub-device, avoiding transmission errors or data loss due to format mismatch, thereby improving the accuracy of data transmission. The request is then transmitted to the RAID card FW for processing. The FW merges or splits the target IO request and distributes it to each target device (pass-through hard drive or RAID array). The RAID driver controller calls the SCSI module of the upper-layer operating system storage stack, registers multiple host adapters on the SCSI bus, scans the SCSI bus devices, detects the pass-through hard drives or RAID arrays connected to the host adapters, and adds all SCSI devices (pass-through hard drives or RAID arrays) to the system. This enables communication between the system host and multiple target devices (pass-through hard drives or RAID arrays), completing the configuration of multiple physical channels in the SCSI module. By explicitly defining and adhering to a specific IO format, the compatibility of target IO requests between different devices can be ensured, achieving seamless transmission, optimizing data transmission performance, and enhancing system reliability and stability.
[0088] The working principle of the data transmission method based on RAID card multi-physical channels proposed in this application will be introduced below with reference to a specific embodiment.
[0089] in, Figure 4 This is a flowchart illustrating the IO request transmission optimization process when the multi-physical channel function of a RAID card is enabled, according to one embodiment of this application.
[0090] In this application embodiment, the working principle of the data transmission method based on RAID card multi-physical channels can be divided into three parts: user configuration process, system self-configuration process, and data transmission process.
[0091] In this embodiment of the application, the user configuration process may include:
[0092] Step S401: Create multiple physical channels.
[0093] Step S402: Bind the physical channel to the target device.
[0094] In the user configuration process of this application embodiment, multiple physical channels can be created by using the RAID card management tool according to the number of target devices connected under the RAID card. If no settings are made, the number of physical channels is 1 by default, which is a single channel mode. Then, each physical channel is bound to a RAID array (pass-through hard drive) in sequence. The correspondence can be that 1 physical channel corresponds to 1 or more RAID array groups (pass-through hard drives) to complete the configuration of multiple physical channels.
[0095] The system self-configuration process may include:
[0096] Step S403: Enumerate multiple PCIe sub-devices.
[0097] Step S404: RAID driver controller driver registration.
[0098] Step S405: SCSI bus registration.
[0099] In the system self-configuration process of this application embodiment, the RAID card can be virtualized into multiple PCIe sub-devices according to the number of physical channels configured by the user. When the system starts running, all PCIe sub-devices on the host bus are configured with different routing identifiers to complete the RAID card virtualization process and ensure that all PCIe sub-devices can be recognized normally. The RAID driver controller drives, starts the RAID device and allocates memory space and DMA buffer.
[0100] Furthermore, in this embodiment, the RAID card driver calls the SCSI module of the upper-layer operating system storage stack, registers multiple host adapters on the SCSI bus, scans the SCSI bus devices, detects the pass-through hard drives or RAID arrays connected to the host adapters, adds all SCSI devices (pass-through hard drives or RAID arrays) to the system, realizes communication between the system host and multiple target devices, and completes the configuration of multiple physical channels in the SCSI module.
[0101] The data transmission process may include:
[0102] Step S406: Block data layer IO processing.
[0103] Step S407: Driver I / O encapsulation.
[0104] Step S408: The FW performs IO processing.
[0105] In the data transmission process, when the host initiates an IO read / write task, the block data layer in the operating system receives the IO request from the upper layer, sorts or merges the data according to the command priority through the IO scheduler, and completes the IO transfer from the block data layer to the SCSI layer (driver) in the form of multiple queues through multiple physical channels.
[0106] Furthermore, in this embodiment of the application, the RAID driver controller driver can encapsulate the received target IO request into a queue command that can be recognized and processed by the RAID card FW, and pass it to the FW for processing.
[0107] Then, the FW merges or splits the target IO requests and distributes them to each target device. Each target device receives the target IO request, reports that the command was executed successfully, and completes the entire target IO request transmission process.
[0108] The data transmission method based on multiple physical channels of a RAID card proposed in this application can virtualize the RAID card into multiple physical channels of a PCIe sub-device that meet certain requirements, according to the task information of the received target IO request and the device information of the target device. This allows the corresponding RAID card to be virtualized into multiple PCIe sub-devices, thereby transmitting the target IO request using the multiple physical channels between the PCIe sub-devices and the target device. By utilizing the multiple physical channels of the RAID card, parallel data transmission is achieved, significantly improving the data transmission rate, reducing transmission bottlenecks, increasing the overall system throughput, and enhancing system reliability and stability. Furthermore, because it supports multiple physical channel transmission, system expansion and upgrades are easier to achieve, improving system flexibility and manageability. This solves the problems in related technologies, such as the need for multiple RAID cards in a RAID card cluster, increasing transmission costs; the increased hardware complexity and maintenance difficulty of the RAID card controller due to the introduction of preset channels and monitoring mechanisms; and the limitation of IO transmission rate caused by only supporting single physical channel transmission, which greatly reduces the performance of the RAID card.
[0109] Next, referring to the accompanying drawings, a data transmission device based on a RAID card multi-physical channel proposed according to an embodiment of this application is described.
[0110] Figure 5 This is a block diagram of a data transmission device based on a RAID card with multiple physical channels provided according to an embodiment of this application.
[0111] like Figure 5 As shown, the data transmission device 10 based on RAID card multi-physical channels includes: a determination module 100, a virtual module 200, and a transmission module 300.
[0112] The determining module 100 is used to receive at least one target IO request and, based on the task information of the at least one target IO request and the device information of at least one target device, determine the number of multiple physical channels of at least one RAID card as a PCIe sub-device that meets preset requirements.
[0113] Virtual module 200 is used to virtualize the corresponding RAID card as multiple PCIe sub-devices based on the number of physical channels.
[0114] The transmission module 300 is used to transmit at least one target I / O request to at least one target device using a multi-physical channel between at least one PCIe sub-device and at least one target device to fulfill a preset requirement.
[0115] Optionally, in one embodiment of this application, the virtual module 200 includes: a first acquisition unit and a virtual unit.
[0116] The first acquisition unit is used to acquire at least one bus identifier and at least one function identifier corresponding to the RAID card based on the routing identifier function of the RAID card.
[0117] A virtual unit is used to generate a bus identifier and a function identifier corresponding to at least one PCIe sub-device from at least one bus identifier and at least one function identifier, so as to virtualize the RAID card as multiple PCIe sub-devices based on the bus identifier and function identifier.
[0118] Optionally, in one embodiment of this application, the transmission module 300 includes: a second acquisition unit and a first transmission unit.
[0119] The second acquisition unit is used to acquire the physical channel corresponding to the target IO request being transmitted to at least one target device.
[0120] The first transmission unit is used to transmit the target I / O request to at least one target device via a physical channel.
[0121] Optionally, in one embodiment of this application, the first transmission unit includes: a determining subunit and a first transmission subunit.
[0122] The determination subunit is used to determine the device information of the target device corresponding to the physical channel based on the physical channel.
[0123] The first transmission subunit is used to transmit a target IO request to at least one target device based on device information, the target device corresponding to the device information, and the physical channel corresponding to the device information.
[0124] Optionally, in one embodiment of this application, the transmission module 300 includes a second transmission unit and a third transmission unit.
[0125] The second transmission unit is used to determine at least one target IO request based on at least one PCIe sub-device and transmit it to the RAID driver controller corresponding to at least one target device.
[0126] The third transmission unit is used to drive at least one PCIe sub-device using the RAID driver controller to transmit at least one target IO request to at least one target device.
[0127] Optionally, in one embodiment of this application, the third transmission unit includes: an acquisition subunit and a second transmission subunit.
[0128] The acquisition sub-unit is used to acquire the IO format driven by the RAID driver controller.
[0129] The second transmission subunit is used to transmit at least one target IO request to at least one target device based on the IO format and at least one PCIe sub-device.
[0130] Optionally, in one embodiment of this application, the determining module 100 includes: a determining unit.
[0131] The determining unit is used to determine the number of multiple physical channels based on task information, device information, and target transmission rate when the preset requirement is that the IO transmission rate is greater than the target transmission rate corresponding to the task information.
[0132] It should be noted that the foregoing explanation of the data transmission method embodiment based on RAID card multi-physical channel also applies to the data transmission device based on RAID card multi-physical channel in this embodiment, and will not be repeated here.
[0133] The data transmission device based on multiple physical channels of a RAID card proposed in this application can virtualize the RAID card into multiple physical channels of a PCIe sub-device that meet certain requirements, according to the task information of the received target IO request and the device information of the target device. This allows the corresponding RAID card to be virtualized into multiple PCIe sub-devices, thereby transmitting the target IO request using the multiple physical channels between the PCIe sub-devices and the target device. By utilizing the multiple physical channels of the RAID card, parallel data transmission is achieved, significantly improving the data transmission rate, reducing transmission bottlenecks, increasing the overall system throughput, and enhancing system reliability and stability. Furthermore, because it supports multiple physical channel transmission, system expansion and upgrades are easier to achieve, improving system flexibility and manageability. This solves the problems in related technologies, such as the need for multiple RAID cards in a RAID card cluster, increasing transmission costs; the increased hardware complexity and maintenance difficulty of the RAID card controller due to the introduction of preset channels and monitoring mechanisms; and the limitation of IO transmission rate caused by only supporting single physical channel transmission, which greatly reduces the performance of the RAID card.
[0134] Figure 6 This is a schematic diagram of the structure of an electronic device provided according to an embodiment of this application. The electronic device may include:
[0135] The memory 601, the processor 602, and the computer program stored on the memory 601 and capable of running on the processor 602.
[0136] When the processor 602 executes the program, it implements the data transmission method based on multiple physical channels of a RAID card provided in the above embodiments.
[0137] Furthermore, electronic devices also include:
[0138] Communication interface 603 is used for communication between memory 601 and processor 602.
[0139] The memory 601 is used to store computer programs that can run on the processor 602.
[0140] The memory 601 may include high-speed RAM memory, and may also include non-volatile memory, such as at least one disk storage device.
[0141] If the memory 601, processor 602, and communication interface 603 are implemented independently, then the communication interface 603, memory 601, and processor 602 can be interconnected via a bus to complete communication between them. The bus can be an Industry Standard Architecture (ISA) bus, a Peripheral Component Interconnect (PCI) bus, or an Extended Industry Standard Architecture (EISA) bus, etc. The bus can be divided into address bus, data bus, control bus, etc. For ease of representation, Figure 6 The bus is represented by a single thick line, but this does not mean that there is only one bus or one type of bus.
[0142] Optionally, in a specific implementation, if the memory 601, processor 602, and communication interface 603 are integrated on a single chip, then the memory 601, processor 602, and communication interface 603 can communicate with each other through an internal interface.
[0143] The processor 602 may be a central processing unit (CPU), an application specific integrated circuit (ASIC), or one or more integrated circuits configured to implement the embodiments of this application.
[0144] This application also provides a computer-readable storage medium storing a computer program thereon, which, when executed by a processor, implements the above-described data transmission method based on multiple physical channels of a RAID card.
[0145] This application also provides a computer program product, including a computer program that, when executed, implements the above-described data transmission method based on multiple physical channels of a RAID card.
[0146] In the description of this specification, the references to terms such as "one embodiment," "some embodiments," "example," "specific example," or "some examples," etc., indicate that a specific feature, structure, material, or characteristic described in connection with that embodiment or example is included in at least one embodiment or example of this application. In this specification, the illustrative expressions of the above terms do not necessarily refer to the same embodiment or example. Furthermore, the specific features, structures, materials, or characteristics described may be combined in any suitable manner in one or more embodiments or examples. Moreover, without contradiction, those skilled in the art can combine and integrate the different embodiments or examples described in this specification, as well as the features of different embodiments or examples.
[0147] Furthermore, the terms "first" and "second" are used for descriptive purposes only and should not be construed as indicating or implying relative importance or implicitly specifying the number of technical features indicated. Thus, a feature defined as "first" or "second" may explicitly or implicitly include at least one of that feature. In the description of this application, "N" means at least two, such as two, three, etc., unless otherwise explicitly specified.
[0148] Any process or method described in the flowchart or otherwise herein can be understood as representing a module, segment, or portion of code comprising one or N executable instructions for implementing custom logic functions or processes, and the scope of the preferred embodiments of this application includes additional implementations in which functions may be performed not in the order shown or discussed, including substantially simultaneously or in reverse order depending on the functions involved, as should be understood by those skilled in the art to which embodiments of this application pertain.
[0149] The logic and / or steps represented in the flowchart or otherwise described herein, for example, can be considered as a sequenced list of executable instructions for implementing logical functions, and can be embodied in any computer-readable medium for use by, or in conjunction with, an instruction execution system, apparatus, or device (such as a computer-based system, a processor-included system, or other system that can fetch and execute instructions from, an instruction execution system, apparatus, or device). For the purposes of this specification, "computer-readable medium" can be any means that can contain, store, communicate, propagate, or transmit programs for use by, or in conjunction with, an instruction execution system, apparatus, or device. More specific examples (a non-exhaustive list) of computer-readable media include: an electrical connection having one or more wires (electronic device), a portable computer disk drive (magnetic device), random access memory (RAM), read-only memory (ROM), erasable and editable read-only memory (EPROM or flash memory), fiber optic devices, and portable optical disc read-only memory (CDROM). Alternatively, the computer-readable medium may be paper or other suitable media on which the program can be printed, since the program can be obtained electronically by optically scanning the paper or other medium, followed by editing, interpreting, or otherwise processing as necessary, and then stored in a computer memory.
[0150] It should be understood that the various parts of this application can be implemented using hardware, software, firmware, or a combination thereof. In the above embodiments, the N steps or methods can be implemented using software or firmware stored in memory and executed by a suitable instruction execution system. If implemented in hardware, as in another embodiment, it can be implemented using any one or more of the following techniques known in the art: discrete logic circuits having logic gates for implementing logical functions on data signals, application-specific integrated circuits (ASICs) having suitable combinational logic gates, programmable gate arrays (PGAs), field-programmable gate arrays (FPGAs), etc.
[0151] Those skilled in the art will understand that all or part of the steps of the methods in the above embodiments can be implemented by a program instructing related hardware. The program can be stored in a computer-readable storage medium, and when executed, the program includes one or a combination of the steps of the method embodiments.
[0152] Furthermore, the functional units in the various embodiments of this application can be integrated into a processing module, or each unit can exist physically separately, or two or more units can be integrated into a module. The integrated module can be implemented in hardware or as a software functional module. If the integrated module is implemented as a software functional module and sold or used as an independent product, it can also be stored in a computer-readable storage medium.
[0153] The storage medium mentioned above can be a read-only memory, a disk, or an optical disk, etc. Although embodiments of this application have been shown and described above, it is understood that the above embodiments are exemplary and should not be construed as limiting this application. Those skilled in the art can make changes, modifications, substitutions, and variations to the above embodiments within the scope of this application.
Claims
1. A data transmission method based on multiple physical channels of a RAID card, characterized in that, Includes the following steps: Receive at least one target input / output IO request, and determine the number of physical channels of at least one independent hard disk redundant array RAID card as a high-speed serial computer expansion bus standard PCIe sub-device that meets preset requirements based on the task information of the at least one target IO request and the device information of at least one target device; Based on the number of physical channels, the corresponding RAID card is virtualized as multiple corresponding PCIe sub-devices; The at least one target I / O request is transmitted to the at least one target device using the multiple physical channels between the at least one PCIe sub-device and the at least one target device to fulfill the preset requirement. The step of virtualizing the corresponding RAID card as multiple corresponding PCIe sub-devices includes: Based on the routing identifier function of the RAID card, obtain at least one bus identifier and at least one function identifier corresponding to the RAID card; The bus identifier and function identifier corresponding to the at least one PCIe sub-device are generated from the at least one bus identifier and the at least one function identifier, respectively, so as to virtualize the RAID card as the plurality of PCIe sub-devices based on the bus identifier and the function identifier.
2. The method according to claim 1, characterized in that, The step of transmitting the at least one target I / O request to the at least one target device using the multiple physical channels between the at least one PCIe sub-device and the at least one target device to fulfill the preset requirement includes: Obtain the physical channel corresponding to the at least one target device for transmitting the target I / O request; The target I / O request is transmitted to the at least one target device using the physical channel.
3. The method according to claim 2, characterized in that, The step of transmitting the target I / O request to the at least one target device using the physical channel includes: Based on the physical channel, determine the device information of the target device corresponding to the physical channel; Based on the device information, the target device corresponding to the device information, and the physical channel corresponding to the device information, the target I / O request is transmitted to the at least one target device.
4. The method according to claim 1, characterized in that, The step of transmitting the at least one target I / O request to the at least one target device using the multiple physical channels between the at least one PCIe sub-device and the at least one target device to fulfill the preset requirement includes: Based on the at least one PCIe sub-device, the at least one target I / O request is determined and transmitted to the RAID driver controller corresponding to the at least one target device; The RAID driver controller is used to drive the at least one PCIe sub-device to transmit the at least one target I / O request to the at least one target device.
5. The method according to claim 4, characterized in that, The step of using the RAID driver controller to drive the at least one PCIe sub-device to transmit the at least one target I / O request to the at least one target device includes: Obtain the I / O format driven by the RAID driver controller; Based on the IO format and the at least one PCIe sub-device, the at least one target IO request is transmitted to the at least one target device.
6. The method according to claim 1, characterized in that, The determination of the number of physical channels for at least one RAID card to be virtually converted into a PCIe sub-device meeting preset requirements, based on the task information of the at least one target I / O request and the device information of at least one target device, includes: When the preset requirement is that the IO transmission rate is greater than the target transmission rate corresponding to the task information, the number of the plurality of physical channels is determined based on the task information, the device information, and the target transmission rate.
7. A data transmission device based on a RAID card with multiple physical channels, characterized in that, include: The determination module is used to receive at least one target IO request and, based on the task information of the at least one target IO request and the device information of at least one target device, determine the number of multiple physical channels of at least one RAID card as a PCIe sub-device that meets preset requirements. The virtual module is used to virtualize the corresponding RAID card as multiple corresponding PCIe sub-devices based on the number of the multiple physical channels; A transmission module is configured to transmit the at least one target I / O request to the at least one target device using multiple physical channels between the at least one PCIe sub-device and the at least one target device to fulfill the preset requirement; The virtual module includes: The first acquisition unit is used to acquire at least one bus identifier and at least one function identifier corresponding to the RAID card based on the routing identifier function of the RAID card. A virtual unit is used to generate a bus identifier and a function identifier corresponding to at least one PCIe sub-device from at least one bus identifier and at least one function identifier, so as to virtualize the RAID card as multiple PCIe sub-devices based on the bus identifier and function identifier.
8. An electronic device, characterized in that, include: The memory, the processor, and the computer program stored in the memory and executable on the processor, wherein the processor executes the program to implement the data transmission method based on a RAID card with multiple physical channels as described in any one of claims 1-6.
9. A computer-readable storage medium having a computer program stored thereon, characterized in that, The program is executed by the processor to implement the data transmission method based on multiple physical channels of a RAID card as described in any one of claims 1-6.
Citation Information
Patent Citations
PCIe bus-based extended storage device
CN108874719A
Method for efficient inter-processor communication in an active-active RAID system using PCI-express links
US20060161707A1