Storage array system and storage access method
By introducing a central command scheduler into the storage array system, it is stored in the corresponding scheduling queue according to the namespace of the operation commands, the scheduling conflict problem during multi-commit queue access is solved, and efficient command scheduling and performance improvement is achieved.
Patent Information
- Application Number
- CN202411232667.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-09-04
- Publication Date
- 2025-02-07
AI Technical Summary
When multiple submission queues access the same storage array at the same time, existing storage arrays are prone to scheduling conflicts, which increases the complexity and computing overhead of command scheduling.
A storage array system is designed, and the central command scheduler stores it into the corresponding scheduling queue according to the namespace of the operation commands to realize unified scheduling of operation commands. The system includes multiple link ports, multiple controllers, central command scheduler, central processor and storage array. The link port receives operation commands sent by the host and sends them to the corresponding controller. The controller determines that The first type of operation command is sent to the central command scheduler after it is operated.
Through the namespace-based scheduling queue organization mechanism, the complexity and conflicts of operation command scheduling are reduced, the flexibility of command scheduling and system access efficiency are improved, and the overall performance is improved.
Smart Images

Figure CN119396331A_ABST
Abstract
Description
Technical Field
[0001] The present application relates to the field of storage, and in particular to a storage array system and a storage access method. Background Art
[0002] With the rapid development of the digital economy, storage arrays have become a key infrastructure supporting computing, storage, and transportation capabilities, playing a vital role in data centers, cloud computing platforms, and big data processing. The explosive growth of data volumes has also led to an increasing demand for storage arrays, prompting the continuous evolution and upgrading of storage array technology.
[0003] To effectively manage and schedule access requests to storage arrays, existing protocol specifications primarily use a command scheduling approach based on submission queues (SQs). This approach organizes and manages pending commands by defining one or more submission queues (SQs) to achieve orderly command execution.
[0004] However, when multiple submission queues access the same storage array simultaneously, scheduling conflicts are likely to occur, making coordinated scheduling difficult. To alleviate this problem, an additional conflict detection mechanism needs to be introduced, which in turn brings additional computational overhead and increases the complexity of command scheduling. Summary of the Invention
[0005] In view of this, in order to solve the technical problem in the prior art of high command scheduling complexity caused by adding a conflict detection mechanism when multiple different submission queues simultaneously access the same storage array, the present application provides a storage array system and a storage access method.
[0006] In a first aspect, the present application provides a storage array system comprising a plurality of link ports, a plurality of controllers, a central command scheduler, a central processing unit (CPU), and a storage array, wherein each of the link ports is communicatively connected to the plurality of controllers and a plurality of hosts, and each of the controllers is communicatively connected to the plurality of link ports, the CPU, and the central command scheduler. The storage array system is configured to perform the following steps:
[0007] The link port receives operation commands sent by the plurality of hosts, and sends each operation command to a corresponding controller according to identification information of each operation command;
[0008] If the controller determines that each of the operation commands is a first type of operation command, the controller sends each of the operation commands to the central command scheduler, where the first type of operation command is used to instruct data transmission of the storage array;
[0009] The central command scheduler stores each of the operation commands into a corresponding scheduling queue according to the namespace accessed by each operation command.
[0010] In an optional embodiment, the step of the central command scheduler storing each of the operation commands into a corresponding scheduling queue according to the namespace includes:
[0011] Obtaining and identifying a namespace identifier carried by each of the operation commands, the namespace identifier being used to indicate a namespace to be accessed by the operation command;
[0012] According to the namespace identifier, the operation commands for accessing the same namespace are added to the same scheduling queue.
[0013] In an optional implementation, the step of adding the operation commands accessing the same namespace to the same scheduling queue includes:
[0014] If multiple operation commands for accessing the same namespace are received simultaneously from different link ports, determining an order in which the operation commands for accessing the same namespace are queued;
[0015] According to the queueing order, each of the operation commands is added to the same scheduling queue.
[0016] In an optional embodiment, the step of determining the enqueue order of the operation commands accessing the same namespace includes:
[0017] Determine the port priority of each link port, and determine the queueing order according to the port priority corresponding to each operation command; wherein, the higher the port priority, the earlier the queueing order.
[0018] In an optional embodiment, the step of determining the enqueue order of the operation commands accessing the same namespace includes:
[0019] Obtain the timestamp carried by each operation command accessing the same namespace, and determine the queueing order according to the timestamp; wherein, the timestamp represents the time information corresponding to when the link port receives the operation command; the earlier the timestamp, the earlier the queueing order.
[0020] In an optional embodiment, the multiple steps further include:
[0021] The central command scheduler polls each of the scheduling queues to determine the scheduling order of each of the operation commands;
[0022] The operation commands are executed in sequence according to the scheduling order to access the storage array.
[0023] In an optional embodiment, the storage array includes a plurality of storage groups, and the plurality of steps include:
[0024] Determining the storage group to which the namespace accessed by each operation command in each scheduling queue belongs;
[0025] Polling and accessing the scheduling queues of the same storage group to determine the scheduling order of the operation commands;
[0026] The operation commands are executed in sequence according to the scheduling order to access the storage array.
[0027] In an optional implementation, the step of determining the scheduling order of each of the operation commands includes:
[0028] Determining the priority of each of the operation commands;
[0029] The scheduling order of each of the operation commands is determined according to the priority.
[0030] In an optional embodiment, the multiple steps further include:
[0031] If it is determined that each of the operation commands is a second-category operation command, wherein the second-category operation command is used to manage the storage array;
[0032] The controller determines the priority of each second-category operation command, and sends each second-category operation command to the central processing unit according to the priority.
[0033] In a second aspect, the present application provides a storage access method, which is applied to a storage array system, wherein the storage array system includes multiple link ports, multiple controllers, a central command scheduler, a central processing unit, and a storage array, wherein each of the link ports is respectively communicatively connected to the multiple controllers and multiple hosts, and each of the controllers is respectively communicatively connected to the multiple link ports, the central processing unit, and the central command scheduler. The method includes:
[0034] receiving operation commands sent by a plurality of hosts, and sending each operation command to a corresponding controller according to identification information of each operation command;
[0035] If the controller determines that each of the operation commands is a first-category operation command, the controller sends each of the operation commands to the central command scheduler, wherein the first-category operation command is used to instruct data transmission of the storage array;
[0036] The central command scheduler stores each of the operation commands into a corresponding scheduling queue according to the namespace accessed by each operation command.
[0037] The embodiments of the present application have the following beneficial effects:
[0038] An embodiment of the present application provides a storage array system, comprising a plurality of link ports, a plurality of controllers, a central command scheduler, a central processing unit, and a storage array. The link port receives operation commands sent by a plurality of hosts, and sends each operation command to the corresponding controller according to the identification information of each operation command; if the controller determines that each operation command is a first-class operation command, it sends each operation command to the central command scheduler; the central command scheduler stores each operation command in a corresponding scheduling queue according to the namespace corresponding to each operation command. The embodiment of the present application realizes unified scheduling of operation commands based on the namespace corresponding to each operation command, which can effectively reduce the complexity of scheduling of each operation command and reduce scheduling conflicts, so that it can be applied to multi-queue access scenarios, effectively improves the flexibility of command scheduling, and thus improves system access efficiency and overall performance. BRIEF DESCRIPTION OF THE DRAWINGS
[0039] In order to more clearly illustrate the technical solution of this application, the following is a brief introduction to the drawings required for use in the embodiments. It should be understood that the following drawings only illustrate certain embodiments of this application and should not be regarded as limiting the scope of protection of this application. In each of the drawings, similar components are numbered similarly.
[0040] Figure 1 A schematic diagram of a storage array system according to an embodiment of the present application is shown;
[0041] Figure 2 A schematic diagram of a command transmission path in a storage array system according to an embodiment of the present application is shown;
[0042] Figure 3 A schematic diagram of a first implementation flow of a storage array system performing a storage access operation in an embodiment of the present application is shown;
[0043] Figure 4 A schematic diagram of a scheduling process when the central processor schedules operation commands sent by different link ports in an embodiment of the present application is shown;
[0044] Figure 5 A schematic diagram of a second embodiment of a flow chart showing a storage array system performing a storage access operation in an embodiment of the present application is shown;
[0045] Figure 6 A schematic diagram showing the division of different storage groups in a storage array system according to an embodiment of the present application is shown;
[0046] Figure 7A schematic diagram of a scheduling process when a central processing unit schedules operation commands for accessing different storage groups in an embodiment of the present application is shown. DETAILED DESCRIPTION
[0047] The technical solutions in the embodiments of the present application will be described clearly and completely below in conjunction with the drawings in the embodiments of the present application. Obviously, the described embodiments are only part of the embodiments of the present application, rather than all the embodiments.
[0048] The components of the embodiments of the present application generally described and illustrated in the drawings herein may be arranged and designed in a variety of different configurations. Therefore, the following detailed description of the embodiments of the present application provided in the drawings is not intended to limit the scope of the claimed application, but rather merely represents selected embodiments of the present application. All other embodiments obtained by those skilled in the art based on the embodiments of the present application without creative effort are within the scope of protection of the present application.
[0049] Hereinafter, the terms "including", "having" and their cognates, which may be used in various embodiments of the present application, are intended only to indicate specific features, numbers, steps, operations, elements, components or combinations of the foregoing items, and should not be understood as first excluding the existence of one or more other features, numbers, steps, operations, elements, components or combinations of the foregoing items or the possibility of adding one or more features, numbers, steps, operations, elements, components or combinations of the foregoing items.
[0050] Furthermore, the terms “first,” “second,” “third,” etc., are merely used for distinguishing descriptions and are not to be understood as indicating or implying relative importance.
[0051] Unless otherwise defined, all terms used herein (including technical and scientific terms) have the same meaning as commonly understood by those skilled in the art to which the various embodiments of the present application belong. The terms (such as those defined in generally used dictionaries) will be interpreted as having the same meaning as in the context of the relevant technical field and will not be interpreted as having an idealized meaning or an overly formal meaning unless clearly defined in the various embodiments of the present application.
[0052] The present application provides a storage array system. For example, see Figure 1 The storage array system includes a link port, a controller, a central command scheduler, a central processing unit, and a storage array. The central command scheduler can directly schedule access commands received by the link port and send them to the storage array for execution.
[0053] It should be noted that if the storage array can support remote access from multiple hosts, the storage array may include multiple link ports, multiple controllers, a central command scheduler, a central processing unit, and a storage array; wherein each link port is respectively communicated with multiple controllers and multiple hosts, and each controller is respectively communicated with multiple link ports, a central processing unit, and a central command scheduler.
[0054] Furthermore, the link port communicates with the central processing unit or the central command scheduler through the controller. It can be understood that the command transmission path within the system for the operation commands sent by multiple hosts (such as host 1, host 2, host 3, etc.) for accessing the storage array can be as follows: Figure 2 As shown, the path is: link port (such as link port 1, link port 2, link port 3, link port 4, etc.), controller (such as controller 1, controller 2, controller 3, controller 4, etc.), central processing unit and storage array; it can also be as follows Figure 2 As shown, the path is: link ports (such as link port 1, link port 2, link port 3, link port 4, etc.), controllers (such as controller 1, controller 2, controller 3, controller 4, etc.), a central command scheduler, and a storage array.
[0055] It should be noted that if the access command sent by the host is transmitted through the command transmission path of the central processing unit, the host can divide the submission queue (i.e., Submission Queue, SQ queue) according to threads or priorities based on the system configuration and performance requirements, and can flexibly set the number of SQ queues. Then, the host sends the access command through the SQ queue.
[0056] After receiving access commands from the corresponding host through the link port, the controller places them into different SQ queues based on the command information. According to relevant protocols, each controller is associated with only one host and receives commands from that host, while each host can correspond to multiple controllers. When using SQ queues to divide queues, the SQ queues within each controller are configured based on the requirements of the associated hosts. The SQ queue divisions within each controller may be completely different. Therefore, SQ queue-based command scheduling is required within the controller to send access commands within each SQ queue to the CPU.
[0057] It should be noted that the storage array's namespace is shared by multiple hosts and can be scheduled across controllers. Although it passes through the controller, command scheduling is not performed within the controller. This is equivalent to the central command scheduler directly scheduling the commands received by each link port based on the namespace queue. Therefore, to reduce the complexity of command scheduling, the operation commands sent by each host can be transmitted to the central command scheduler via the link port through the controller. Then, the central command scheduler can directly schedule the operation commands received by each link port based on the namespace, so that the controller only needs to handle the scheduling of management commands (admin commands) controlled by the host.
[0058] Furthermore, the central command scheduler can assign each operation command to a corresponding scheduling queue based on the namespace it accesses. Operation commands that access the same namespace can be placed in the same scheduling queue rather than divided according to the submission queue to which they belong, so that the storage array system can more efficiently schedule each operation command between different namespaces.
[0059] Based on this, the storage array system provided in this embodiment can allow operation commands from different submission queues but accessing the same namespace to be classified and processed together, thereby reducing the complexity of scheduling multiple operation commands and reducing the possibility of scheduling conflicts. In addition, the central command scheduler can uniformly schedule operation commands based on the namespace, thereby achieving efficient utilization of storage resources and improving the overall performance of the system.
[0060] For reference, please refer to Figure 2 and Figure 3 In this embodiment, Figure 2 Taking the command transmission path shown in the figure as an example, the process of performing a storage access operation on a storage array system may include the following steps:
[0061] S310, the link port receives operation commands sent by multiple hosts, and sends each operation command to the corresponding controller according to the identification information of each operation command; if the controller determines that each operation command is a first-category operation command, it sends each operation command to the central command scheduler.
[0062] The first type of operation command is used to instruct data transmission of the storage array.
[0063] S320: The central command scheduler stores each operation command into a corresponding scheduling queue according to the namespace.
[0064] It can be understood that each link port (such as an Ethernet interface) receives one or more operation commands from multiple hosts through a network protocol (such as a TCP / IP protocol).
[0065] The link port sends each operation command to the corresponding controller based on the identification information of each operation command. Specifically, each operation command is sent to the controller corresponding to the identification information according to the identification information it carries, thereby ensuring that each operation command is correctly routed to the dedicated controller that processes such commands; wherein, the identification information includes but is not limited to parameters such as an identifier (ID), a routing address, and an operation type.
[0066] Optionally, the operation command may be presented in the form of a data packet, which includes one or more operation commands and related parameters. After receiving the data packet, the controller decapsulates the data packet and extracts the operation command and corresponding parameter information.
[0067] Then, the controller identifies the command header or command identifier of each operation command based on the corresponding network protocol stack or other methods, and then determines the type attribute of each operation command based on the command header or command identifier. Different type attributes correspond to different functions. Among them, the type attributes of the operation command include input and output commands (IO commands) and management commands (admin commands), etc.; admin commands are used by the host to control and manage the storage array, and IO commands are used to instruct data transmission of the storage array.
[0068] In this embodiment, IO commands can be directly sent to the central command scheduler for processing, while admin commands need to be scheduled according to priority in the corresponding controller and then sent to the central processor for execution.
[0069] Furthermore, if the operation command is determined to be a first-category operation command, the operation command is directly sent to the central command dispatcher, which processes the operation command accordingly. The first-category operation command is an IO command; optionally, the IO command includes but is not limited to a data read command and a data write command.
[0070] If it is determined that the operation command is a second-category operation command, wherein the second-category operation command is an admin command; optionally, the admin command includes but is not limited to commands for instructing operations such as configuration adjustment and performance monitoring.
[0071] Furthermore, after receiving the second-category operation command, the controller first determines the priority of each second-category operation command, and sends each second-category operation command to the central processing unit according to the priority; wherein, the controller determines the priority of each second-category operation command according to the built-in strategy or algorithm; the setting of the priority may be based on factors such as the type of the operation command, the urgency of the operation, and resource occupancy. The specific priority determination rules and determination process are not limited here.
[0072] In this embodiment, after receiving the first type of operation commands, the central command scheduler schedules each first type of operation command according to the namespace of each first type of operation command.
[0073] Exemplarily, a namespace identifier carried by each operation command is obtained and identified; wherein the namespace identifier is used to indicate the namespace to be accessed by the operation command; and then, based on the namespace identifier, each operation command accessing the same namespace is added to the same scheduling queue.
[0074] Furthermore, if the central command scheduler simultaneously receives multiple operation commands accessing the same namespace, it is necessary to determine the order in which each operation command is enqueued when placing each operation command into the scheduling queue corresponding to the same command space; and then add each operation command to the same scheduling queue according to the order in which they are enqueued.
[0075] Optionally, the enqueuing order can be determined based on one or more conditions such as the port priority of the link port corresponding to the operation command, the timestamp of the link port receiving each operation command, etc.; among which, the rules and process for determining the enqueuing order can be set and adjusted accordingly according to actual needs, and this embodiment does not limit this.
[0076] In one example, when multiple operation commands to access the same namespace are received at the same time, the port priority of each link port corresponding to each operation command is determined, and the queuing order is determined according to the port priority corresponding to each operation command; among them, the higher the port priority, the higher the queuing order.
[0077] In another example, if multiple operation commands for accessing the same namespace are received at the same time, the timestamps carried by each operation command for accessing the same namespace are obtained, and the queueing order is determined based on the timestamps; the timestamps represent the corresponding time information when each link port receives the corresponding operation command; among them, the earlier the timestamp, the earlier the queueing order.
[0078] For reference, since the first type of operation command is not scheduled and processed in the controller, it can be considered that the central scheduler directly receives the first type of operation command from the link port in the transmission path. Figure 4 As shown, the central command scheduler sequentially receives first-class operation commands for accessing the same namespace from different link ports (such as P1, P2, P3, P4, etc.) and stores them in the corresponding scheduling queues. Optionally, each link port can store the first-class operation command received from different hosts in its own internal command queue, and then perform command scheduling based on the command queue to send each operation command in the command queue to the central command scheduler in sequence.
[0079] Furthermore, when the central command scheduler receives the operation commands scheduled and forwarded by each link port, it first receives command A1 from link port P1, command B1 from link port P2, command C1 from link port P3, and command D1 from link port P4 in sequence; then, based on the namespace identifier (NSID) carried by each command, it sorts command A1 into the NS1 queue, command B1 into the NS2 queue, command C1 into the NS3 queue, and command D1 into the NS4 queue.
[0080] The second round receives command A2 from link port P1, command B2 from link port P2, command C2 from link port P3, and command D2 from link port P4. However, both command A2 from link port P1 and command C2 from link port P3 carry the same NSID, NS2. Therefore, it is necessary to determine the order in which these two commands are queued in NS2, that is, to determine the order in which commands A2 and C2 are enqueued.
[0081] Similarly, the third round continues to receive commands sent by each link port and sorts each command into the corresponding NS queue, and so on, until it is determined that the last round of commands (command Ai, command Bk, command Cj, command Sl) are received and these commands are sorted into the corresponding scheduling queue.
[0082] This embodiment implements command scheduling based on the namespaces accessed by each operation command, thereby allowing operation commands from different submission queues but accessing the same namespace to be classified and processed together. This can effectively reduce conflicts between operation commands, thereby efficiently managing and responding to multiple operation commands from different hosts, ensuring the orderliness and efficiency of data transmission and access, and helping to improve the scalability, flexibility, and responsiveness of the storage array system to different types of operation commands.
[0083] In one example, when an operation command in each scheduling queue of the central command scheduler reaches an execution time, the central command scheduler takes out the corresponding operation command from the scheduling queue, and schedules and executes the operation command.
[0084] It is understood that the central command scheduler polls the scheduling queues to determine the scheduling order of the operation commands; then, the operation commands are executed sequentially according to the scheduling order to access the storage array. The scheduling order can be determined based on factors such as the priority of the operation command and the priority of the scheduling queue. This embodiment does not limit the rules and process for determining the scheduling order.
[0085] For example, when polling each scheduling queue, the central command scheduler determines the priority of each operation command and determines the scheduling order of each operation command based on the priority. The priority setting of different operation commands can be determined based on factors such as the urgency of the operation command and resource occupancy.
[0086] In one embodiment, the storage array system can further divide the namespace into different scheduling domains (i.e., storage groups) according to the physical storage space to which it corresponds. That is, different namespaces may correspond to different storage groups, so as to maximize the parallel processing capabilities of the storage array and optimize the access efficiency and management efficiency of storage resources, so that it can be applied to application scenarios requiring efficient data access control.
[0087] Exemplarily, a storage array includes multiple storage groups, each of which includes multiple storage disks. A storage group is a collection of physical storage devices with identical characteristics. By configuring different storage groups, storage resources can be managed hierarchically based on actual needs. For example, a storage group can be formed by multiple solid-state drives (SSDs) using corresponding redundancy policies. Thus, the storage disks are SSDs, and each SSD can correspond to multiple namespaces.
[0088] For reference, such as Figure 5 As shown, the process of the central command scheduler concurrently scheduling operation commands for accessing corresponding namespaces in different scheduling domains includes the following steps:
[0089] S510: Determine the storage group to which the namespace to be accessed by each operation command in each scheduling queue belongs.
[0090] S520: Poll and access the scheduling queues of the same storage group to determine the scheduling order of the operation commands.
[0091] S530: Execute each operation command in sequence according to the scheduling order to access the storage array.
[0092] It can be understood that the storage group and storage disk are a logical division within the storage array. In the storage array system, each namespace usually corresponds to an independent logical storage area, which manages and allocates data to the storage array through a mapping algorithm.
[0093] Optionally, each storage disk in the same storage group can adopt the same redundancy strategy, which can be RAID (Redundant Array of Independent Disks) or EC (Erasure Coding), thereby improving data reliability and storage efficiency, and ensuring consistent data protection and recovery capabilities, thereby helping to optimize resource utilization and improve the overall reliability of the storage system.
[0094] For example, Figure 6 As shown in the figure, different namespaces correspond to different storage groups (SSD groups), and each storage group includes multiple storage disks (SSD disks). Namespaces 1, 2, and 3 all correspond to storage group 1, and namespaces 4, 5, and 6 all correspond to storage group 2.
[0095] Furthermore, when scheduling the execution of operation commands for accessing different scheduling domains, the central command scheduler can adopt polling (RR, Round Robin), weighted polling (WRR, Weight Round Robin) or other scheduling methods, so as to reasonably manage and schedule data access to ensure the efficient operation of the storage array system and the reasonable allocation of resources.
[0096] Exemplarily, the central command dispatcher first determines the data storage location involved in each operation command, that is, determines the storage group to which the namespace accessed by the operation command belongs. The central command dispatcher then determines which storage group or storage disk the namespace belongs to based on the namespace accessed by each operation command.
[0097] Optionally, a configuration table containing mapping relationships between different namespace identifiers (NSID) and storage group identifiers (SSDGroup ID) or storage disk identifiers (SSD ID) can be created in advance. Then, based on the configuration table, the storage group to which the namespace corresponding to each operation command belongs can be found through methods such as database query or field query.
[0098] In one example, Figure 7 As shown, each scheduling queue (such as NS1, NS2, NS3, ..., Nsi, NSj, NSk) corresponds to a storage group, and a corresponding polling strategy is used to traverse all scheduling queues corresponding to the same storage group; optionally, the polling strategy adopted may include but is not limited to any one of the polling methods such as circular polling (accessing each scheduling queue in turn in a fixed order) and priority polling (accessing according to the priority of the scheduling queue).
[0099] Then, the scheduling order of each operation command in each scheduling queue corresponding to the same storage group is determined, and then each operation command is executed in sequence according to the scheduling order to access the storage resources of the same storage group; wherein, the scheduling order can be determined based on factors such as the priority of the operation command or the priority of the namespace, and its specific determination rules and process are not limited here.
[0100] In addition, this embodiment may also include a corresponding exception handling mechanism to handle exceptions that arise during the execution of various operation commands, thereby ensuring the stability of the storage array system and access security. The exception handling mechanism may be configured based on actual needs and is not limited in this embodiment.
[0101] Furthermore, this embodiment divides storage groups into different groups to process non-conflicting access to multiple storage groups in parallel. In addition, the operation commands to be executed can be determined in a polling manner within the same storage group, thereby improving access efficiency and ensuring that the operation commands used to access the same storage group can be scheduled and executed according to certain rules, avoiding concurrency conflicts, and thus achieving effective management of the data access process of the storage array, ensuring the efficient operation of the storage array system and the security of storage resources.
[0102] In the several embodiments provided in this application, it should be understood that the disclosed systems and methods can also be implemented in other ways. The system embodiments described above are merely schematic. For example, the flowcharts and structure diagrams in the accompanying drawings show the possible architectures, functions and operations of the systems, methods and computer program products according to the multiple embodiments of the present application. In this regard, each box in the flowchart or block diagram can represent a module, a program segment or a part of the code, and the module, program segment or a part of the code contains one or more executable instructions for implementing the specified logical functions. It should also be noted that in an alternative implementation, the functions marked in the box can also occur in an order different from that marked in the accompanying drawings. For example, two consecutive boxes can actually be executed substantially in parallel, and they can sometimes be executed in the opposite order, depending on the functions involved. It should also be noted that each box in the structure diagram and / or flowchart, and the combination of boxes in the structure diagram and / or flowchart, can be implemented using a dedicated hardware-based system that performs the specified function or action, or can be implemented using a combination of dedicated hardware and computer instructions.
[0103] In addition, the functional modules or units in the various embodiments of the present application can be integrated together to form an independent part, or each module can exist independently, or two or more modules can be integrated to form an independent part.
[0104] If the functions are implemented in the form of software function modules and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application, or the part that contributes to the prior art, or part of the technical solution, can be embodied in the form of a software product, which is stored in a storage medium and includes several instructions for enabling a computer device (which can be a smart phone, personal computer, server, or network device, etc.) to execute all or part of the steps of the method described in each embodiment of the present application.
[0105] The above is only a specific implementation method of the present application, but the scope of protection of the present application is not limited thereto. Any technician familiar with this technical field can easily think of changes or replacements within the technical scope disclosed in this application, which should be covered by the scope of protection of the present application.
Claims
1. A storage array system, characterized in that: The system comprises a plurality of link ports, a plurality of controllers, a central command scheduler, a central processing unit and a storage array, wherein each of the link ports is respectively connected to the plurality of controllers and a plurality of hosts in communication, each of the controllers is respectively connected to the plurality of link ports, the central processing unit and the central command scheduler in communication, and the storage array system is used to perform a plurality of steps: The link port receives operation commands sent by the plurality of hosts, and sends each operation command to a corresponding controller according to identification information of each operation command; If the controller determines that each of the operation commands is a first type of operation command, the controller sends each of the operation commands to the central command scheduler, wherein the first type of operation command is used to instruct data transmission of the storage array; The central command scheduler stores each of the operation commands into a corresponding scheduling queue according to the namespace accessed by each of the operation commands.
2. The storage array system according to claim 1, characterized in that: The step of the central command scheduler storing each of the operation commands into a corresponding scheduling queue according to the namespace includes: Acquire and identify a namespace identifier carried by each of the operation commands, where the namespace identifier is used to indicate a namespace to be accessed by the operation command; According to the namespace identifier, the operation commands for accessing the same namespace are added to the same scheduling queue.
3. The storage array system according to claim 2, characterized in that: The step of adding the operation commands accessing the same namespace to the same scheduling queue comprises: If multiple operation commands for accessing the same namespace are received simultaneously from different link ports, determining the order in which the operation commands for accessing the same namespace are queued; According to the queue entry order, each of the operation commands is added to the same scheduling queue.
4. The storage array system according to claim 3, characterized in that: The step of determining the order in which the operation commands accessing the same namespace are queued comprises: Determine the port priority of each link port, and determine the queueing order according to the port priority corresponding to each operation command; wherein, the higher the port priority, the earlier the queueing order.
5. The storage array system according to claim 3, characterized in that: The step of determining the order in which the operation commands accessing the same namespace are queued comprises: Obtain the timestamps carried by each of the operation commands accessing the same namespace, and determine the queueing order according to the timestamp; wherein the timestamp represents the time information corresponding to when the link port receives the operation command; the earlier the timestamp, the earlier the queueing order.
6. The storage array system according to claim 1, characterized in that: The multiple steps also include: The central command scheduler polls each of the scheduling queues to determine the scheduling order of each of the operation commands; The operation commands are executed in sequence according to the scheduling order to access the storage array.
7. The storage array system according to claim 1 or 6, characterized in that: The storage array includes a plurality of storage groups, and the plurality of steps include: Determine the storage group to which the namespace accessed by each operation command in each scheduling queue belongs; Polling and accessing the scheduling queues of the same storage group to determine the scheduling order of the operation commands; The operation commands are executed in sequence according to the scheduling order to access the storage array.
8. The storage array system according to claim 7, characterized in that: The step of determining the scheduling order of each of the operation commands comprises: Determining the priority of each of the operation commands; The scheduling order of each of the operation commands is determined according to the priority.
9. The storage array system according to claim 1, characterized in that: The multiple steps also include: If it is determined that each of the operation commands is a second type of operation command, wherein the second type of operation command is used to manage the storage array; The controller determines the priority of each of the second-category operation commands, and sends each of the second-category operation commands to the central processing unit according to the priority.
10. A storage access method, characterized in that: Applied to a storage array system, the storage array system includes multiple link ports, multiple controllers, a central command scheduler, a central processing unit and a storage array, each of the link ports is respectively connected to the multiple controllers and multiple hosts in communication, each of the controllers is respectively connected to the multiple link ports, the central processing unit and the central command scheduler in communication, the method includes: The link port receives operation commands sent by the plurality of hosts, and sends each operation command to a corresponding controller according to identification information of each operation command; If the controller determines that each of the operation commands is a first type of operation command, the controller sends each of the operation commands to the central command scheduler, wherein the first type of operation command is used to instruct data transmission of the storage array; The central command scheduler stores each of the operation commands into a corresponding scheduling queue according to the namespace accessed by each of the operation commands.
Citation Information
Cited By
Firmware hard disk data access method and device, computer equipment and storage medium
CN120386492A
Firmware hard disk data access method, device, computer equipment and storage medium
CN120386492B