A system for starting a server

CN122903050APending Publication Date: 2026-10-13SHENZHEN YIWANKE DATA EQUIP TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202610959114.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2026-06-30
Publication Date
2026-10-13

AI Technical Summary

Technical Problem

这导致在启动服务器时,仍需在本地配置专用的系统启动盘,并且本地配置的系统启动盘通常采用性能较低的固态硬盘,如SATA(Serial Advanced Technology Attachment)接口固态硬盘,此类固态硬盘的启动速度低,故会严重拖慢服务器的整体启动效率,无法满足大规模集群快速部署的需求

Benefits of technology

[0004]本申请实施例的主要目的在于提出一种用于启动服务器的系统,旨在提高服务器的启动效率。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122903050A_ABST
    Figure CN122903050A_ABST
Patent Text Reader

Abstract

The embodiment of the application provides a system for starting a server, and relates to the technical field of computers.The system comprises: a server processor configured to generate an operating system loading request when the server starts; a server network card supporting an optical fiber transmission NVMe protocol, configured to forward the operating system loading request to a remote controller through optical fiber; the remote controller is configured to send the operating system loading request to a remote NVMe hard disk indicated by the operating system loading request; and the remote controller is further configured to acquire operating system loading resources returned by the remote NVMe hard disk indicated by the operating system loading request, and send the operating system loading resources to the server network card; the server network card is further configured to write the operating system loading resources into a memory; and the server processor is further configured to acquire the operating system loading resources from the memory, and load an operating system of the server according to the operating system loading resources. The embodiment of the application can improve the starting efficiency of the server.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of computer technology, and more particularly to a system for starting a server. Background Technology

[0002] Remote NVMe hard drives refer to solid-state storage devices that use the Non-Volatile Memory Express (NVMe) protocol to provide standard block storage services to local hosts. With the rapid development of cloud computing and edge computing, diskless server architectures have achieved large-scale deployment in data centers due to their core advantages such as low hardware cost, high resource utilization, and convenient operation and maintenance. In this architecture, business data is uniformly stored in a remote storage cluster. Remote NVMe hard drives, with their near-local direct connection performance (high speed, low latency), have become the mainstream data storage medium for diskless servers.

[0003] However, the solutions provided by related technologies typically use remote NVMe hard drives as data disks. This means that when booting the server, a dedicated system boot disk still needs to be configured locally, and the locally configured system boot disk usually uses a low-performance solid-state drive, such as a SATA (Serial Advanced Technology Attachment) interface solid-state drive. Such solid-state drives have low boot speeds, which will seriously slow down the overall boot efficiency of the server and cannot meet the needs of rapid deployment of large-scale clusters. Summary of the Invention

[0004] The main objective of this application is to propose a system for starting a server, which aims to improve the server startup efficiency.

[0005] To achieve the above objectives, this application proposes a system for booting a server. The system includes a server processor, a server network interface card (NIC), a remote controller, a remote NVMe hard drive, and memory. The server NIC supports Fibre Channel NVMe protocol and is connected to the server processor via a PCIe bus. The remote controller is communicatively connected to the server NIC via fiber optic cable and is also connected to the remote NVMe hard drive via a PCIe bus. The server processor is used to generate an operating system load request when the server starts; the server network interface card (NIC) is used to forward the operating system load request to the remote controller; the remote controller is used to send the operating system load request to the remote NVMe hard drive indicated by the operating system load request; and... The remote controller is further configured to obtain the operating system loading resources returned by the remote NVMe hard drive indicated by the operating system loading request, and send the operating system loading resources to the server network card; the server network card is further configured to write the operating system loading resources into the memory; the server processor is further configured to obtain the operating system loading resources from the memory, and load the operating system of the server according to the operating system loading resources.

[0006] This application provides a system for booting a server, including a server processor, a server network interface card (NIC), a remote controller, a remote NVMe hard drive, and memory. The server NIC supports the NVMe protocol via fiber optic transmission, and the remote controller is connected to the server NIC via fiber optic communication. The server processor generates an operating system loading request when the server boots up. The server NIC forwards the operating system loading request to the remote controller. The remote controller sends the operating system loading request to the remote NVMe hard drive indicated by the operating system loading request. The remote controller also obtains the operating system loading resources returned by the remote NVMe hard drive indicated by the operating system loading request and sends the operating system loading resources to the server NIC. The server NIC writes the operating system loading resources into memory. The server processor retrieves the operating system loading resources from memory and loads the operating system of the server according to the operating system loading resources. Booting the server using the above device allows for high-speed access to the remote NVMe hard drive without modifying the host firmware and drivers. This enables the remote NVMe hard drive to perfectly "disguise" itself as a local PCIe device, allowing the operating system to be loaded from the remote NVMe hard drive. This allows the server to boot up quickly, meeting the needs of rapid deployment of large-scale clusters. Attached Figure Description

[0007] Figure 1 This is a schematic diagram of the structure of a system for starting a server provided in an embodiment of this application; Figure 2 This is a schematic diagram of the structure of the server motherboard provided in an embodiment of this application; Figure 3 This is a schematic diagram of the server backplane provided in an embodiment of this application. Detailed Implementation

[0008] To make the objectives, technical solutions, and advantages of this application clearer, the following detailed description is provided in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are merely illustrative and not intended to limit the scope of this application.

[0009] It should be noted that although functional modules are divided in the device schematic diagram and a logical order is shown in the flowchart, in some cases, the steps shown or described may be performed in a different order than the module division in the device or the order in the flowchart. The terms "first," "second," etc., in the specification, claims, and the aforementioned drawings are used to distinguish similar objects and are not necessarily used to describe a specific order or sequence.

[0010] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this application belongs. The terminology used herein is for the purpose of describing embodiments of this application only and is not intended to limit this application.

[0011] To address the problems of the prior art, embodiments of this application provide a system for starting a server, aiming to improve the server startup efficiency.

[0012] The system for starting a server provided in this application is specifically described through the following embodiments.

[0013] Figure 1 This is a schematic diagram of the structure of a system for starting a server provided in an embodiment of this application. Figure 1 The system may include a server processor 101, a server network interface card 102, a remote controller 103, a remote NVMe hard drive 104, and memory (not shown); the server network interface card 102 supports the NVMe protocol for fiber optic transmission and is connected to the server processor 101 via a PCIe bus; the remote controller 103 is connected to the server network interface card 102 via fiber optic cable and is connected to the remote NVMe hard drive 104 via a PCIe bus. Server processor 101 is used to generate an operating system load request when the server starts; server network interface card 102 is used to forward the operating system load request to remote controller 103; remote controller 103 is used to send the operating system load request to the remote NVMe hard drive 104 indicated by the operating system load request; and, The remote controller 103 is also used to obtain the operating system loading resources returned by the remote NVMe hard disk 104 in response to the operating system loading request, and send the operating system loading resources to the server network card 102; the server network card 102 is used to write the operating system loading resources into memory; the server processor 101 is also used to obtain the operating system loading resources from memory, and load the operating system of the server according to the operating system loading resources.

[0014] Server processor 101, also known as the server's central processing unit (CPU), is located on the server host side. During server startup, server processor 101 generates an operating system loading request. This request is a set of requests containing multiple resource read commands (such as commands to read the ESP partition boot sector, the boot manager, the operating system kernel image, and the initialization memory disk). It serves as the instruction carrier for server processor 101 to obtain the necessary resources for booting from the remote NVMe hard drive 104.

[0015] PCIe (Peripheral Component Interconnect Express) bus is a high-speed serial computer expansion bus standard that can be used to provide a high-bandwidth, low-latency point-to-point communication channel.

[0016] Server network interface card 102 is deployed on the server host side, connected to server processor 101 via PCIe bus, and communicates with remote controller 103 via high-speed network (fiber optic). Here, server network interface card 102 can be a network interface card supporting the NVMe over Fabrics (NVMe oF) protocol, and server network interface card 102 is connected to remote controller 103 via fiber optic. Since the NVMe oF protocol is specifically optimized for high-speed solid-state storage from the protocol layer, it has the characteristics of simplified and efficient instruction set, high parallelism of queue architecture, and flattened protocol layer. Therefore, high-speed data transmission between server processor 101 and remote controller 103 can be achieved through server network interface card 102. That is to say, in this embodiment, high-speed forwarding of operating system loading requests and operating system loading resources can be achieved through server network interface card 102.

[0017] The remote controller 103 is a hardware controller deployed on the remote NVMe hard drive side, used to manage at least one remote NVMe hard drive 104 configured in the storage node. The remote controller 103 is communicatively connected to the server network interface card 102. The remote controller 103 can forward operating system loading requests sent by the server network interface card 102 to the remote NVMe hard drive 104 indicated by the operating system loading request. Furthermore, after receiving the operating system loading resources (i.e., all files and data necessary for operating system startup, such as the ESP boot partition, operating system kernel image, and initialization memory disk image) returned by the remote NVMe hard drive 104 indicating the operating system loading request, the remote controller 103 can transmit the operating system loading resources to the server network interface card 102 via fiber optic cable, and the server network interface card 102 writes the operating system loading resources into memory.

[0018] The remote NVMe hard drive 104 is a solid-state storage device that provides standard block storage services to the server. In this embodiment, the remote NVMe hard drive 104 is not directly connected to the server processor 101 via the PCIe bus, but is accessed through the server network card 102 and the remote controller 103. The remote NVMe hard drive 104 stores all the system files required for the server to load the operating system. When the remote NVMe hard drive 104 receives an operating system loading request forwarded by the remote controller 103, the remote NVMe hard drive 104 can return the stored operating system loading resources to the remote controller 103.

[0019] The memory is deployed on the server host side. The server processor 101 and the server network card 102 can directly access the memory. During the operating system loading process, the memory is used to store the operating system loading resources. That is, the server network card 102 will first write the operating system loading resources sent by the remote controller 103 into the memory, and the server processor 101 can read the operating system loading resources from the memory and load the operating system.

[0020] Thus, a system for booting a server is provided, including a server processor, a server network interface card (NIC), a remote controller, a remote NVMe hard drive, and memory. The server NIC supports the NVMe protocol via fiber optic transmission, and the remote controller communicates with the server NIC via fiber optic cable. The server processor generates an operating system loading request during server startup; the server NIC forwards the operating system loading request to the remote controller; the remote controller sends the operating system loading request to the remote NVMe hard drive indicated by the loading request; the remote controller also retrieves operating system loading resources returned by the remote NVMe hard drive and sends these resources to the server NIC; the server NIC writes the operating system loading resources into memory; and the server processor retrieves the operating system loading resources from memory and loads the server's operating system based on these resources. Booting the server using this device requires no modification to the host firmware and drivers, and allows high-speed access to the remote NVMe hard drive, enabling the remote NVMe hard drive to perfectly "disguise" itself as a local PCIe device. This allows the operating system to be loaded from the remote NVMe hard drive, enabling the server to boot quickly and meeting the needs of rapid deployment in large-scale clusters.

[0021] like Figure 2 and Figure 3As shown, in some embodiments, the server processor 101 and the server network card 102 are both mounted on the server motherboard 201, and the server processor 101 and the server network card 102 are connected through a PCIe bus line provided on the server motherboard 201; the remote controller 103 and the remote NVMe hard drive 104 are both mounted on the server backplane 301, and the remote controller 103 and the remote NVMe hard drive 104 are connected through a PCIe bus line provided on the server backplane 301.

[0022] The server motherboard 201 is the foundational circuit board that houses the server's core computing resources. It integrates core components such as the processor socket, memory slots, root access module, and chipset, serving as the central hub for the server's computing and control. All instruction execution and memory access are completed on the server motherboard 201. The server motherboard 201 is the aforementioned server host. Both the server processor 101 and the server network card 102 are mounted on the server motherboard 201. The server network card 102 can be connected to a PCIe slot on the server motherboard 201 and connects to the server processor 101 via the PCIe bus lines on the server motherboard 201. In other words, the server processor 101 and server network card 102 are directly connected within the server motherboard 201, without external cables. It is also worth noting that the memory 203 is also mounted on the server motherboard 201 (i.e., the aforementioned memory is deployed on the server host side). The server motherboard 201 is housed within the server chassis 202.

[0023] Server backplane 301 is a circuit board used for centralized connection of storage devices, deployed in the hard drive bay area of ​​server chassis 202. Server backplane 301 is the aforementioned remote NVMe hard drive side. Typically, server backplane 301 only provides a unified power and signal transmission channel. In this embodiment, server backplane 301 integrates high-density NVMe hard drive interfaces and is equipped with PCIe bus lines. Remote controller 103 and remote NVMe hard drive 104 are both located on server backplane 301 and connected through the PCIe bus lines provided on server backplane 301. That is, remote controller 103 and remote NVMe hard drive 104 are directly connected within the server backplane 301 without external cables.

[0024] The server network card 102 and the remote controller 103 are connected via fiber optic cable, and the data transmission between the server network card 102 and the remote controller 103 follows the NVMe oF protocol. In this way, efficient data transmission between the server network card 102 and the remote controller 103 can be achieved, allowing the remote NVMe hard drive to be perfectly "disguised" as a local PCIe device. This enables computing resources to access storage resources more quickly and stably, reduces data transmission latency and waiting time, and improves the overall computing efficiency of the system.

[0025] By centralizing all storage resources on the server backplane and computing resources on the server motherboard, independent maintenance of computing and storage can be achieved, improving resource utilization. Furthermore, this architecture reduces the number of cables required to connect computing and storage resources. When using server immersion liquid cooling technology to cool the server, the coolant can flow more smoothly between hardware components, effectively removing heat, improving heat dissipation efficiency, reducing the risk of failures and performance degradation due to overheating, ensuring hardware stability under prolonged high load operation, reducing system maintenance costs and downtime risks, and extending hardware lifespan.

[0026] Reference Figure 1 As shown, in some embodiments, the number of remote NVMe hard drives 104 is multiple, and the remote controller 103 is further used for: Send information retrieval commands to multiple remote NVMe hard drives 104 respectively; For each remote NVMe hard drive 104, obtain the hard drive identity information and hard drive characteristic information returned by the information retrieval command; Create a first mapping relationship, which includes multiple hard drive identity information and multiple hard drive characteristic information, as well as a PCIe function number corresponding to each hard drive identity information and each hard drive characteristic information. The PCIe function number indicates the corresponding remote NVMe hard drive 104.

[0027] After the server powers on, the remote controller 103 first powers on and initializes the remote NVMe hard drives 104 physically connected to its backend via its internal PCIe switch or root complex module. Subsequently, the remote controller 103 performs PCIe enumeration to discover all remote NVMe hard drives 104 connected to it. Specifically, the remote controller 103 can send information retrieval commands to multiple remote NVMe hard drives 104. Upon receiving the information retrieval command, each remote NVMe hard drive 104 can return its hard drive identity information and hard drive characteristic information to the remote controller 103. The hard drive identity information includes, for example, a vendor ID, device ID, serial number, and model number. The hard drive characteristic information includes, for example, the size of the namespace (the smallest storage entity that the server processor 101 can directly read and write data to), the namespace format, the arbitration mechanism, and the queue depth.

[0028] Subsequently, the remote controller 103 creates a first mapping relationship based on the received hard drive identity information and hard drive characteristic information, so as to associate the information of each remote NVMe hard drive 104 with the PCIe function number through the first mapping relationship. For example, the first mapping relationship can be represented as: Remote NVMe Hard Drive-1 (VID: 0x8086, DID: 0x0a54) → Virtual Function 0. Here, Remote NVMe Hard Drive-1 represents the remote NVMe hard drive identified as 1, "VID: 0x8086" indicates the manufacturer identifier of Remote NVMe Hard Drive-1, "DID: 0x0a54" indicates the device identifier of Remote NVMe Hard Drive-1, and "Virtual Function 0" is the corresponding PCIe function number. Of course, this is only a simplified example. In actual application scenarios, the representation of the first mapping relationship is more complex.

[0029] By creating the first mapping relationship, when the server processor performs PCIe enumeration, it can complete the PCIe enumeration process based on the first mapping relationship without querying the remote NVMe hard drive in real time, thus improving the enumeration speed.

[0030] In some embodiments, the server processor 101 is further configured to generate a configuration read request indicating a target function number; the server network interface card 102 is further configured to send the configuration read request to the remote controller 103; the remote controller 103 is further configured to query a pre-built first mapping relationship according to the target function number indicated by the configuration read request, and generate a configuration space image if a PCIe function number matching the target function number is found in the first mapping relationship. The remote controller 103 is also used to send the configuration space image to the server network card 102, and the server network card 102 is also used to send the configuration space image to the server processor 101; the server processor 101 is also used to create a memory mapping space corresponding to the remote controller 103 based on the configuration space image.

[0031] The configuration space image is a standardized, fixed-size hardware description data structure provided by the remote controller 103 to the server processor 101. It is the only standard interface for the server processor 101 to identify, initialize, and configure all PCIe devices (i.e., remote NVMe hard drives 104) connected to the remote controller 103. It is worth noting that, generally, a PCIe device refers to any hardware device connected to the server processor 101 via the PCIe bus. In this embodiment, although the remote NVMe hard drive 104 is not directly connected to the server processor via the PCIe bus, it can still be considered a PCIe device (virtual device). The term "PCIe device" in the following text refers to the remote NVMe hard drive 104.

[0032] Before the server processor 101 generates an operating system loading request, it can first perform PCIe enumeration and create a memory-mapped space corresponding to the remote controller 103 based on the PCIe enumeration results, so as to facilitate subsequent access to the remote NVMe hard drive 104 connected to the remote controller 103. Specifically, the server processor 101 can first generate a configuration read request indicating the target function number. The function number to be enumerated is called the target function number. The configuration read request includes at least the target function number; of course, in addition, it may also include the device number or the PCIe bus number, etc. Through the configuration read request, all possible PCIe devices can be enumerated.

[0033] Subsequently, the server network interface card 102 can send the configuration read request to the remote controller 103. Specifically, this can be sent to the PCIe port of the remote controller 103. Then, the remote controller 103 can parse the configuration read request to obtain the target function number in the configuration read request, and then query the first mapping relationship based on the target function number. The first mapping relationship includes multiple PCIe function numbers, as well as the hard drive identity information and corresponding hard drive characteristic information corresponding to each PCIe function number. Here, each PCIe function number corresponds to a remote NVMe hard drive 104 connected to the remote controller 103.

[0034] Based on the results of querying the first mapping relationship, we can divide it into the following two cases: 1) If a PCIe function number matching the target function number is found from the first mapping relationship, a configuration space image is generated. Specifically, when a PCIe function number matching the target function number is found, the hard disk identity information, class code, device functional structure type identifier (Header Type), base address register information, and server system manufacturer ID corresponding to the matching PCIe function number are determined as the configuration space image. The base address register information indicates the space requirement for memory mapping, for example, 64 kilobytes for mapping controller registers. The class code is fixed at 0x010802h, explicitly declaring that the remote controller 103 is a non-volatile memory controller. The device functional structure type identifier is fixed at 0x00, indicating that the remote controller 103 is a standard endpoint device. The server system manufacturer ID can be filled with the manufacturer information of the remote controller 103 or transparently transmit the information of the remote NVMe hard disk 104. 2) If no PCIe function number matching the target function number is found in the first mapping relationship, the remote controller 103 returns all 1s (0xFFFF...) to the server network card 102, which then forwards the request to the server processor 101. In this way, the server processor 101 can be notified that the target function number in the configuration read request sent does not have a corresponding PCIe device.

[0035] In the first scenario, the remote controller 103 can send the configuration space image to the server network interface card 102, which then sends the configuration space image to the server processor 101. Upon receiving the configuration space image, the server processor 101 can create a memory-mapped space corresponding to the remote controller 103 in its physical address space, i.e., create an address partition for accessing the registers of the remote NVMe hard disk 104. The registers of the remote NVMe hard disk 104 include, for example, the Controller Capabilities Register (CAP), the Version Register (VS), the Submission Queue 0 Tail Doorbell Register (SQ0TDBL), or the Completion Queue 0 Head Doorbell Register (CQ0HDBL). Subsequently, the server processor 101 can access the registers of the remote NVMe hard disk 104 through this memory-mapped space. In other words, the server processor 101's operations on this memory-mapped space will be converted into corresponding operations on the registers of the remote NVMe hard disk 104.

[0036] In this way, the remote NVMe hard drive can be completely transparent to the server processor, allowing the server processor to access the registers of the remote NVMe hard drive using standard memory read and write instructions.

[0037] In some embodiments, the server network interface card 102 is further configured to obtain the maximum number of connections supported by the remote controller 103, determine the space requirement for the memory-mapped space based on the maximum number of connections, and send the space requirement for the memory-mapped space to the server processor 101. Server processor 101 is also used to create memory-mapped space based on the configuration space image and the space requirements for memory-mapped space.

[0038] Here, the maximum number of connections refers to the maximum number of remote NVMe hard drives 104 that the remote controller 103 can connect to. The maximum number of connections is a pre-configured number; for example, the maximum number of connections could be 8 (where performance is at its highest), but the specific number can be adjusted according to actual needs and is not limited to this example. Space requirements are used to indicate the size of the memory-mapped space to be created.

[0039] Server network interface card 102 can determine the space requirements for memory-mapped space based on the maximum number of connections. For example, after receiving the configuration space image sent by remote controller 103, server network interface card 102 can extract the base address register information from it. Subsequently, server network interface card 102 can determine the space requirements for memory-mapped space based on the maximum number of connections and the base address register information. For example, if the maximum number of connections is 8, and the base address register information is, for example, 64 kilobytes (KB) for mapping controller registers, then the space requirement for memory-mapped space can be calculated as 8 × 64 KB = 512 KB. Of course, the above example is only a simplified example, and the space requirement can be calculated based on the specific base address register information and the maximum number of connections, and is not limited to the above example.

[0040] Subsequently, the server network interface card 102 sends its space requirement for the memory-mapped space to the server processor 101. The server processor 101 then creates a memory-mapped space that meets the space requirement based on the configured space image and the space requirement.

[0041] It's worth noting that the memory-mapped space comprises multiple sub-mapped regions, each used to map read and write operations for each register of each remote NVMe hard drive 104. Access to each sub-mapped region can be achieved using the base address and offset address of the memory-mapped space.

[0042] In this way, on-demand dynamic allocation of memory mapping space is achieved, that is, the space requirement is accurately calculated based on the maximum number of connections actually supported by the remote controller. This avoids the waste of physical address space caused by fixed pre-allocation, and can adapt to remote controllers of different specifications, thereby improving system resource utilization and deployment flexibility.

[0043] In some embodiments, the server network card 102 is further used to encapsulate the host physical address corresponding to the memory-mapped space to obtain a host physical address data packet, and send the host physical address data packet to the remote controller 103. The remote controller 103 is also used to parse the host physical address data packet to obtain the host physical address corresponding to the memory mapping space, and create a second mapping relationship based on the host physical address corresponding to the memory mapping space. The second mapping relationship indicates the association between the remote NVMe hard disk 104 and the host physical address corresponding to the memory mapping space.

[0044] The host physical address is a unique identifier in the entire hardware address space used by the server processor 101 for direct addressing. It is understood that the memory-mapped space is created by the server processor, and the host physical address allocated by the server processor 101 to the memory-mapped space may be different each time it is created. Therefore, after the server processor 101 creates the memory-mapped space, the remote controller 103 needs to create a second mapping relationship based on the host physical address corresponding to the memory-mapped space. This allows the remote controller 103 to clearly understand the association between the host physical address corresponding to the memory-mapped space and the remote NVMe hard drive 104, facilitating subsequent interaction.

[0045] Specifically, after the server processor 101 creates the memory-mapped space, the server network interface card 102 can encapsulate the host physical address corresponding to the memory-mapped space to obtain a host physical address data packet, and send the host physical address data packet to the remote controller 103. Here, the host physical address data packet conforms to the NVMe oF protocol standard and can be routed and transmitted in a wide area network. Subsequently, the server network interface card 102 sends the host physical address data packet to the remote controller 103. After parsing the host physical address data packet, the remote controller 103 can obtain the host physical address corresponding to the memory-mapped space, and then create a second mapping relationship based on the host physical address corresponding to the memory-mapped space. The host physical address corresponding to the memory-mapped space includes multiple consecutive host physical addresses. The second mapping relationship indicates the association between each host physical address and the remote NVMe hard disk 104, specifically the association between each host physical address and the corresponding registers (such as the doorbell register and the controller register) of the remote NVMe hard disk 104.

[0046] By establishing a second mapping relationship, the remote controller can identify and respond to all requests sent to the remote NVMe hard drive by the host side (specifically the server processor), establish the correct address channel for the transmission of subsequent requests, and realize transparent remote boot of the server.

[0047] In some embodiments, the server processor 101 is further configured to: Create a startup device list, which includes the virtual controller corresponding to remote controller 103; In response to the selection operation of the virtual controller, an operating system load request is sent to the server network card, so that the operating system load request can be forwarded to the remote controller 103 through the server network card.

[0048] The virtual controller is a logical projection of the remote controller 103 on the host PCIe bus. It has an independent PCIe function number, a complete configuration space image, and a full set of standard registers. For the server processor 101, the virtual controller is a real local device.

[0049] Here, the server processor 101 can create a boot option ROMs list. The boot option ROMs list includes local hard drives, virtual controllers, optical drives, USB devices, and network devices (e.g., a prebooteXecution Environment (PXE)). For example, in the boot option ROMs list, a virtual controller can be specifically represented as multiple virtual device nodes. Each virtual device node is a logical projection of each remote NVMe hard drive 104 onto the host PCIe bus; that is, each virtual device node corresponds to a remote NVMe hard drive 104 connected to the remote controller 103, and each virtual device node is treated as a local hard drive by the server processor 101.

[0050] Upon receiving a selection operation for the virtual controller, the server processor 101 can use the virtual controller as the first boot device and load the operating system through the virtual controller (essentially, the operating system is loaded through the remote NVMe hard drive 104 connected to the remote controller 103). Specifically, in response to the selection operation for the virtual controller, the server processor 101 sends an operating system load request to the server network interface card 102, which forwards the operating system load request to the remote controller 103. The remote controller 103 then sends the operating system load request to the remote NVMe hard drive 104 indicated by the operating system load request, and finally obtains the operating system load resources returned by the remote NVMe hard drive 104.

[0051] By incorporating the remote controller into the boot device list as a virtual controller, the native boot selection and loading process of the host-side firmware can be fully reused. Without modifying any firmware or implanting a third-party bootloader, the operating system can be loaded quickly, significantly reducing the deployment threshold and maintenance complexity of diskless server clusters.

[0052] Additionally, it should be noted that before creating the boot device list, the server processor 101 can write an Identify command (a standard query command used to retrieve the complete identity information and capability identifier of a remote NVMe hard drive) to the local submission queue and write the corresponding doorbell signal in the memory-mapped space. After detecting the doorbell signal corresponding to the Identify command, the server network interface card 102 will retrieve the Identify command from the local submission queue and forward it to the remote controller 103. The remote controller 103 will send the Identify command to the corresponding remote NVMe hard drive 104. Subsequently, the remote NVMe hard drive 104 will return an Identify data structure (i.e., the identity information and capability identifier of the remote NVMe hard drive 104). Through this process, the server processor 101 can determine whether the remote controller 103 is a storage device that can be used to boot the server, and if it is determined to be a storage device that can be used to boot the server, it will add the virtual controller corresponding to the remote controller 103 to the boot device list.

[0053] In some embodiments, the server processor 101 is further configured to, after generating the operating system loading request, submit the operating system loading request to a local submission queue in memory, and write the doorbell signal corresponding to the operating system loading request into the memory-mapped space; the server network interface card 102 is further configured to: The memory-mapped space is checked at preset intervals; In response to the detection of a doorbell signal corresponding to an operating system loading request in the memory-mapped space, the operating system loading request is retrieved from the local submission queue; The operating system loading request is encapsulated to obtain a loading request data packet, and then the loading request data packet is forwarded to the remote controller; The remote controller 103 is also used for: The load request data packet is parsed to obtain the operating system load request, and the operating system load request is sent to the remote NVMe hard drive 104 indicated by the operating system load request.

[0054] Specifically, after generating an operating system load request, the server processor 101 can submit the operating system load request to a local submission queue in memory and write the corresponding doorbell signal (which can be understood as a doorbell register) into the memory-mapped space. The server network interface card 102 checks the memory-mapped space at preset intervals (adjustable). When the server network interface card 102 detects the presence of a doorbell signal corresponding to the operating system load request in the memory-mapped space, it can retrieve the operating system load request from the local submission queue, encapsulate it into a data packet conforming to the NVMe oF protocol standard (i.e., a load request data packet), and forward it to the remote controller 103. Here, the server network interface card 102 can send the load request data packet to the remote controller 103 via Remote Direct Memory Access (RDMA). After receiving the load request data packet, the remote controller 103 can parse the load request data packet to obtain the operating system load request. Subsequently, the remote controller 103 can send the operating system load request to the remote NVMe hard disk 104 indicated by the operating system load request via the PCIe bus, and the indicated remote NVMe hard disk 104 will execute the operating system load request.

[0055] The above process strictly follows the standard NVMe command submission procedure, requiring no modification to any host firmware or drivers, and achieving complete transparency in operating system loading. Furthermore, by completely offloading command forwarding to the server's network interface card (NIC), the load on the server processor during the startup phase can be significantly reduced, resulting in a substantial improvement in the speed and stability of remote booting.

[0056] In some embodiments, the remote controller 103 is further configured to send completion status data to the server network card 102 after sending the operating system loading resources to the server network card 102; the server network card 102 is further configured to write the completion status data into a local completion queue in memory and send an interrupt signal to the server processor 101; the server processor 101 is further configured to, upon receiving the interrupt signal, retrieve the completion status data from the local completion queue and update the status of the operating system loading request to the completion status according to the completion status data.

[0057] The completion status data is used to record the execution result of the operating system loading request, specifically represented by completion queue entries. After the remote controller 103 sends the operating system loading resources returned by the remote NVMe hard drive 104 to the server network card 102, the remote controller 103 can also send completion status data to the server network card 102. Specifically, the remote controller 103 can encapsulate the completion status data into an NVMe oF data packet (i.e., a data packet conforming to the NVMe oF protocol standard specification) and send the encapsulated NVMe oF data packet to the server network card 102.

[0058] After receiving the completion status data (specifically, receiving an NVMe oF data packet; after parsing the received NVMe oF data packet, the server network interface card 102 can obtain the completion status data), it can write the completion status data into the local completion queue in memory and send an interrupt signal to the server processor 101.

[0059] Upon receiving an interrupt signal, the server processor 101 retrieves completion status data from the local completion queue and updates the status of the operating system loading request to complete based on the completion status data, thus ending the current operating system loading request. Alternatively, the server processor 101 can also retrieve completion status data from the local completion queue in a polling manner.

[0060] Since the notification logic is consistent with the working mechanism of the local hard drive, there is no need to customize the host firmware, drivers, etc. to realize the remote loading process of the operating system. This reduces the deployment cost and operation and maintenance adaptation cost of large-scale diskless servers.

[0061] It is worth noting that the embodiments of this application can be applied not only to the scenario of loading an operating system (i.e., using a remote NVMe hard drive as a boot disk), but also to the scenario of data access (i.e., using a remote NVMe hard drive as a data disk). The specific implementation process is similar to the aforementioned operating system loading process, and will not be repeated here.

[0062] The embodiments described in this application are for the purpose of more clearly illustrating the technical solutions of the embodiments of this application, and do not constitute a limitation on the technical solutions provided by the embodiments of this application. As those skilled in the art will know, with the evolution of technology and the emergence of new application scenarios, the technical solutions provided by the embodiments of this application are also applicable to similar technical problems.

[0063] Those skilled in the art will understand that the technical solutions shown in the figures do not constitute a limitation on the embodiments of this application, and may include more or fewer steps than shown, or combine certain steps, or different steps.

[0064] The device embodiments described above are merely illustrative. The units described as separate components may or may not be physically separate; that is, they may be located in one place or distributed across multiple network units. Some or all of the modules can be selected to achieve the purpose of this embodiment according to actual needs.

[0065] Those skilled in the art will understand that all or some of the steps in the methods disclosed above, as well as the functional modules / units in the systems and devices, can be implemented as software, firmware, hardware, or suitable combinations thereof.

[0066] The terms “first,” “second,” “third,” “fourth,” etc. (if present) in the specification and accompanying drawings of this application are used to distinguish similar objects and are not necessarily used to describe a specific order or sequence. It should be understood that such data can be interchanged where appropriate so that the embodiments of this application described herein can be implemented in orders other than those illustrated or described herein. Furthermore, the terms “comprising” and “having,” and any variations thereof, are intended to cover non-exclusive inclusion; for example, a process, method, system, product, or apparatus that comprises a series of steps or units is not necessarily limited to those steps or units explicitly listed, but may include other steps or units not explicitly listed or inherent to such processes, methods, products, or apparatus.

[0067] It should be understood that in this application, "at least one (item)" means one or more, and "more than" means two or more. "And / or" is used to describe the relationship between related objects, indicating that three relationships can exist. For example, "A and / or B" can represent three cases: only A exists, only B exists, and both A and B exist simultaneously, where A and B can be singular or plural. The character " / " generally indicates that the preceding and following related objects are in an "or" relationship. "At least one (item) of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one (item) of a, b, or c can represent: a, b, c, "a and b", "a and c", "b and c", or "a and b and c", where a, b, and c can be single or multiple.

[0068] In the several embodiments provided in this application, it should be understood that the disclosed apparatus and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of the units described above is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be through some interfaces; the indirect coupling or communication connection between apparatuses or units may be electrical, mechanical, or other forms.

[0069] The units described above as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.

[0070] Furthermore, the functional units in the various embodiments of this application can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.

[0071] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes multiple instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods of the various embodiments of this application. The aforementioned storage medium includes various media capable of storing programs, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.

[0072] The preferred embodiments of the present application have been described above with reference to the accompanying drawings, but this does not limit the scope of the claims of the present application. Any modifications, equivalent substitutions, and improvements made by those skilled in the art without departing from the scope and substance of the embodiments of the present application shall be within the scope of the claims of the present application.

Claims

1. A system for starting a server, characterized in that, The system includes a server processor, a server network interface card (NIC), a remote controller, a remote NVMe hard drive, and memory; the server NIC supports the NVMe protocol for fiber optic transmission and is connected to the server processor via a PCIe bus. The remote controller is connected to the server network card via optical fiber, and the remote controller is connected to the remote NVMe hard drive via PCIe bus. The server processor is used to generate an operating system loading request when the server starts up; The server network interface card (NIC) is used to forward the operating system load request to the remote controller; the remote controller is used to send the operating system load request to the remote NVMe hard drive indicated by the operating system load request; and... The remote controller is further configured to obtain the operating system loading resources returned by the remote NVMe hard drive indicated by the operating system loading request, and send the operating system loading resources to the server network card; the server network card is further configured to write the operating system loading resources into the memory; the server processor is further configured to obtain the operating system loading resources from the memory, and load the operating system of the server according to the operating system loading resources.

2. The system according to claim 1, characterized in that, The server processor is further configured to generate a configuration read request indicating a target function number; the server network interface card is further configured to send the configuration read request to the remote controller; the remote controller is further configured to query a pre-built first mapping relationship according to the target function number indicated by the configuration read request, and generate a configuration space image if a PCIe function number matching the target function number is found in the first mapping relationship. The remote controller is further configured to send the configuration space image to the server network interface card (NIC), and the server NIC is further configured to send the configuration space image to the server processor; the server processor is further configured to create a memory mapping space corresponding to the remote controller based on the configuration space image.

3. The system according to claim 2, characterized in that, The server network card is also used to obtain the maximum number of connections supported by the remote controller, determine the space requirement for the memory-mapped space based on the maximum number of connections, and send the space requirement for the memory-mapped space to the server processor. The server processor is also configured to create the memory-mapped space based on the configuration space image and the space requirements for the memory-mapped space.

4. The system according to claim 2, characterized in that, The server network card is also used to encapsulate the host physical address corresponding to the memory mapping space to obtain a host physical address data packet, and send the host physical address data packet to the remote controller; The remote controller is also used to parse the host physical address data packet to obtain the host physical address corresponding to the memory mapping space, and create a second mapping relationship based on the host physical address corresponding to the memory mapping space. The second mapping relationship indicates the association between the remote NVMe hard drive and the host physical address corresponding to the memory mapping space.

5. The system according to claim 2, characterized in that, The number of remote NVMe hard drives is multiple, and the remote controller is also used for: Send information retrieval commands to each of the remote NVMe hard drives; Obtain the hard drive identity information and hard drive characteristic information returned by the instruction for each of the remote NVMe hard drives based on the information obtained; Create the first mapping relationship, which includes multiple hard disk identity information and multiple hard disk characteristic information, as well as a PCIe function number corresponding to each hard disk identity information and each hard disk characteristic information, wherein the PCIe function number indicates the corresponding remote NVMe hard disk.

6. The system according to claim 2, characterized in that, The server processor is further configured to, after generating the operating system loading request, submit the operating system loading request to the local submission queue in memory, and write the doorbell signal corresponding to the operating system loading request into the memory-mapped space; the server network interface card is further configured to: The memory-mapped space is detected at preset intervals; In response to detecting the presence of a doorbell signal corresponding to the operating system loading request in the memory-mapped space, the operating system loading request is retrieved from the local submission queue; The operating system loading request is encapsulated to obtain a loading request data packet, and the loading request data packet is forwarded to the remote controller.

7. The system according to claim 6, characterized in that, The remote controller is also used for: The loading request data packet is parsed to obtain the operating system loading request, and the operating system loading request is sent to the remote NVMe hard drive indicated by the operating system loading request.

8. The system according to claim 1, characterized in that, The server processor and the server network card are both located on the server motherboard and are connected via a PCIe bus line on the server motherboard; the remote controller and the remote NVMe hard drive are both located on the server backplane and are connected via a PCIe bus line on the server backplane.

9. The system according to claim 1, characterized in that, The server processor is also used for: Create a startup device list, which includes the virtual controller corresponding to the remote controller; In response to the selection operation of the virtual controller, the operating system loading request is sent to the server network interface card (NIC) so that the operating system loading request can be forwarded to the remote controller via the server NIC.

10. The system according to claim 1, characterized in that, The remote controller is further configured to send completion status data to the server network card after sending the operating system loading resources to the server network card; the server network card is further configured to write the completion status data into the local completion queue in the memory and send an interrupt signal to the server processor; the server processor is further configured to, upon receiving the interrupt signal, retrieve the completion status data from the local completion queue and update the status of the operating system loading request to completion status according to the completion status data.