Storage system, storage server, and operating method of storage server

By dynamically allocating internal and external storage resources through the storage management system, the problem of low storage resource management efficiency in multi-tenant environments of large-capacity storage systems is solved, and SLA is effectively met and resources are optimized.

CN122173017APending Publication Date: 2026-06-09SAMSUNG ELECTRONICS CO LTD

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
SAMSUNG ELECTRONICS CO LTD
Filing Date
2025-11-12
Publication Date
2026-06-09

Smart Images

  • Figure CN122173017A_ABST
    Figure CN122173017A_ABST
Patent Text Reader

Abstract

A storage system, a storage server, and an operating method of the storage server are provided. The storage server includes a storage device including a storage controller configured to provide a virtual function, a non-volatile memory, and a memory, a host memory buffer managed by the storage device, a shared memory device, a CXL memory device, and a storage management system configured to receive service level agreement (SLA) information from a virtual machine, receive attribute information from the storage device, analyze the SLA information and the attribute information and generate an analysis result, allocate an internal memory resource or an external memory resource to the virtual function based on the analysis result, and monitor SLA violation of the virtual function, wherein the internal memory resource includes the memory of the storage device, and the external memory resource includes the CXL memory device, the shared memory device, and the host memory buffer of the storage device.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is based on and claims priority to Korean Patent Application No. 10-2024-0180228, filed on December 6, 2024, with the Korean Intellectual Property Office, the entire disclosure of which is incorporated herein by reference. Technical Field

[0002] The disclosure relates to a computer system, and more specifically, to a storage system, a storage server, and a method of operating the storage server. Background Technology

[0003] Semiconductor memories are classified into volatile memory devices (such as static random access memory (SRAM), dynamic random access memory (DRAM), etc.) and non-volatile memory devices (such as phase-change random access memory (PRAM), magnetic random access memory (MRAM), resistive random access memory (RRAM), ferroelectric random access memory (FRAM), etc.). Volatile memory devices lose stored data when their power supply is interrupted, while non-volatile memory devices retain stored data even when their power supply is interrupted.

[0004] Storage devices are devices that store data under the control of a host device (such as computers, smartphones, tablets, etc.). Storage devices include devices that store data on disks (such as hard disk drives (HDDs)) and devices that store data on semiconductor memories (specifically, non-volatile memories (such as solid-state drives (SSDs), memory cards, etc.)).

[0005] The storage device can be shared by one or more virtual machines and can be accessed by multiple users through each virtual machine. Summary of the Invention

[0006] A storage system, storage server, and method of operating the storage server are provided for providing stable or improved performance.

[0007] According to one aspect of the disclosure, a storage server includes: a storage device including a storage controller, a non-volatile memory device, and a storage device memory storing one or more storage device instructions, wherein the storage controller is configured to execute the one or more storage device instructions and cause the storage device to provide virtual functions; a memory device including a host memory buffer managed by the storage device; a shared memory device configured to communicate with the storage device and a storage management system; a compute fast link (CXL) memory device configured to communicate with the storage device and the storage management system based on the CXL.mem protocol; and a storage management system including a system memory storing one or more system instructions and a storage device memory configured to execute the one or more storage device instructions. At least one system processor with one or more system instructions, wherein, when executed by the at least one system processor, the storage management system causes to: receive Service Level Agreement (SLA) information from each of a plurality of virtual machines; receive attribute information from a storage device; analyze the SLA information and attribute information and generate analysis results; allocate internal memory resources or external memory resources to virtual functions based on the analysis results; and monitor SLA violations of virtual functions, wherein the internal memory resources include at least a portion of the storage device memory, and the external memory resources include at least a portion of one or more of a CXL memory device, a shared memory device, and a host memory buffer of a memory device.

[0008] According to one aspect of the disclosure, a method of operating a storage server including a storage management system, a storage device, a memory device, a shared memory device, and a compute fast link (CXL) memory device includes: receiving service level agreement (SLA) information from each of a plurality of virtual machines via the storage management system; sending attribute information of the storage device to the storage management system via the storage device; allocating internal memory resources or external memory resources to one or more of a plurality of virtual functions based on the SLA information and attribute information via the storage management system; and monitoring for SLA violations of each of the plurality of virtual functions via the storage management system, wherein the storage device includes a storage controller, memory storing one or more storage device instructions, and a non-volatile memory device, wherein the storage controller is configured to execute the one or more storage device instructions and cause the storage device to provide the plurality of virtual functions, and wherein the internal memory resources include at least a portion of the storage device memory, and the external memory resources include at least a portion of one or more of the memory device's host memory buffer, the shared memory device, and the CXL memory device.

[0009] According to one aspect of the disclosure, a storage system includes a storage server and a client server. The storage server includes: a storage management system, including a system memory storing one or more system instructions and at least one system processor configured to execute the one or more system instructions; a storage device, including a storage device memory storing one or more storage device instructions, a storage controller configured to execute the one or more storage device instructions, and a non-volatile memory device; a memory device; a shared memory device; and a compute fast link (CXL) memory device. The client server includes: a client server memory storing one or more client server instructions; and at least one client server processor configured to execute the one or more client server instructions; wherein, when executed by the storage controller, the one or more storage device instructions cause the storage device to provide... A virtual function, wherein the one or more client server instructions, when executed by the at least one client server processor, cause the client server to: operate a plurality of virtual machines; and send Service Level Agreement (SLA) information about each of the plurality of virtual machines to a storage server, and wherein the one or more system instructions, when executed by the at least one system processor, cause the storage management system to: receive SLA information from the client server; receive attribute information from a storage device; allocate internal or external memory resources to the virtual function based on the SLA information and the attribute information; and monitor SLA violations of the virtual function, wherein the internal memory resources include at least a portion of the storage device memory, and the external memory resources include at least a portion of one or more of the host memory buffer, shared memory device, and CXL memory device of the storage device. Attached Figure Description

[0010] The above and other aspects and features of specific embodiments of this disclosure will become clearer from the following detailed description taken in conjunction with the accompanying drawings.

[0011] Figure 1 It is a block diagram of a server system according to one or more embodiments.

[0012] Figure 2 yes Figure 1 A block diagram of the software hierarchy of the server system.

[0013] Figure 3 yes Figure 1 A more detailed block diagram of the storage device.

[0014] Figure 4 yes Figure 1 A more detailed block diagram of the Service Level Agreement (SLA) manager.

[0015] Figure 5 yes Figure 1A flowchart illustrating an example of how to operate a storage server.

[0016] Figure 6 yes Figure 5 A more detailed flowchart of the operation of S150.

[0017] Figure 7 yes Figure 5 A more detailed flowchart of the operation of S150.

[0018] Figure 8 yes Figure 6 A more detailed flowchart of operation S155.

[0019] Figure 9 yes Figure 5 A more detailed flowchart of operation S170.

[0020] Figure 10 yes Figure 1 A flowchart illustrating an example of how to operate a storage server.

[0021] Figure 11 It is used to describe Figure 1 A diagram illustrating the operation of a storage server.

[0022] Figure 12 It is used to describe Figure 1 A diagram illustrating the operation of a storage server.

[0023] Figure 13A and Figure 13B It is used to describe Figure 1 A diagram illustrating the operation of a storage server.

[0024] Figure 14A and Figure 14B It is used to describe Figure 1 A diagram illustrating the operation of a storage server.

[0025] Figure 15A and Figure 15B It is used to describe Figure 1 A diagram illustrating the operation of a storage server.

[0026] Figure 16 yes Figure 1 A flowchart illustrating an example of how to operate a storage server.

[0027] Figure 17A A neural network (NN) is shown as an example that can be used as a machine learning model.

[0028] Figure 17B This is a diagram illustrating an example of a method for generating resource allocation maps using a neural network.

[0029] Figure 18It is a block diagram of a server system according to one or more embodiments.

[0030] Figure 19 This is a diagram of a system according to one or more embodiments.

[0031] Figure 20 This is a diagram of a data center using a memory device according to one or more embodiments. Detailed Implementation

[0032] In the following text, embodiments are clearly described in detail so that those skilled in the art can implement this disclosure.

[0033] In the following description, the same reference numerals denote the same elements throughout the specification. Terms such as “unit,” “module,” “component,” and “block” may be implemented as hardware or software. As used herein, multiple “units,” “modules,” “components,” and “blocks” may be implemented as a single component, or a single “unit,” “module,” “component,” and “block” may comprise multiple components.

[0034] It will be understood that when an element is referred to as being “connected” to or “linked” to another element, it may be directly or indirectly connected to the other element, wherein indirect connection includes “connection via a wireless communication network”.

[0035] Furthermore, when a component “includes” or “contains” an element, the component may also include other elements without excluding them, unless there is a specific description to the contrary.

[0036] Throughout the specification, when a component is "on" another component, this includes not only the case where the component is in contact with the other component, but also the case where there is another component between the two components.

[0037] As used herein, the expressions “at least one of a, b, or c” and “at least one of a, b, and c” indicate “only a”, “only b”, “only c”, “both a and b”, “both a and c”, “both b and c”, and “all of a, b, and c”.

[0038] It will be understood that although the terms “first,” “second,” “third,” etc., may be used herein to describe various elements, the disclosure should not be limited by these terms. These terms are used only to distinguish one element from another.

[0039] As used herein, unless the context clearly indicates otherwise, the singular form is intended to include the plural form as well.

[0040] Regarding any methods or processes described herein, identification codes may be used for ease of description, but are not intended to indicate the order of each step or operation. Unless the context clearly indicates otherwise, each step or operation may be performed in a different order than shown. One or more steps or operations may be omitted unless the disclosure context clearly indicates otherwise.

[0041] Various actions, behaviors, blocks, steps, etc., in the flowchart can be executed in the order they are presented, in different orders, or simultaneously. Furthermore, in one or more embodiments, without departing from the scope of disclosure, parts of actions, behaviors, blocks, steps, etc., may be omitted, added, modified, or skipped.

[0042] Figure 1 This is a block diagram of a server system 1000 according to one or more embodiments.

[0043] Reference Figure 1 Server system 1000 (computer system or storage system) may include client server 1001 and storage server 1002. Server system 1000 may include a large-capacity storage system. Server system 1000 may include a data center or data storage center for maintaining various types of data and providing various services related to that data. Server system 1000 may include a system for operating a search engine or database, and may include computing systems used in various organizations. Server system 1000 may include a storage system for providing cloud services or on-premises services.

[0044] Client server 1001 can instruct users, user terminals, or user computing systems that use various services related to various data. Client server 1001 can store data in storage server 1002 or retrieve data stored in storage server 1002.

[0045] In response to a request from client server 1001, storage server 1002 may store data or send stored data to client server 1001. According to one or more embodiments, client server 1001 and storage server 1002 may communicate with each other via a network.

[0046] Storage server 1002 may include storage management system 1100, storage devices (e.g., first storage device 1200_1 and second storage device 1200_2), and memory device group 1003. According to one or more embodiments, storage management system 1100 may include hardware, software, or a combination thereof configured to manage resource allocation operations and resource reallocation operations. However, the scope of disclosure is not limited thereto. According to one or more embodiments, the number of storage devices (e.g., first storage device 1200_1 and second storage device 1200_2) may be increased or decreased. Memory device group 1003 may include memory devices (e.g., first memory device 1300_1 and second memory device 1300_2), compute fast link (CXL) memory devices (e.g., first CXL memory device 1400_1 and second CXL memory device 1400_2), and shared memory devices 1500. However, the scope of disclosure is not limited thereto. According to one or more embodiments, the type of memory devices, the number of memory devices, the number of shared memory devices, and the number of CXL memory devices may vary. The memory device, the shared memory device, and the CXL memory device are included in the memory device group 1003.

[0047] According to one or more embodiments, the memory device group 1003 can be used as a memory for temporarily storing data to be sent to or from the first storage device 1200_1 and the second storage device 1200_2. According to one or more embodiments, the memory device group 1003 can store metadata of the first storage device 1200_1 and the second storage device 1200_2. For example, the metadata may include mapping tables, health / smart information, telemetry information, recovery information, power-related information, etc.

[0048] The first memory device 1300_1 and the second memory device 1300_2 can be used as the main memory devices of the storage server 1002, and may include volatile memory (such as static random access memory (SRAM) and / or dynamic random access memory (DRAM)). However, the scope of the disclosure is not limited thereto, and the first memory device 1300_1 and the second memory device 1300_2 may include non-volatile memory (such as flash memory, ferroelectric random access memory (FRAM), phase-change random access memory (PRAM) and / or resistive random access memory (RRAM)).

[0049] According to one or more embodiments, the first memory device 1300_1 and the second memory device 1300_2 can communicate via a memory interface (such as a Double Data Rate (DDR) or Low Power Double Data Rate (LPDDR) interface or a CXL interface). According to one or more embodiments, the first memory device 1300_1 and the second memory device 1300_2 may include host memory buffers. For example, the first memory device 1300_1 may include a first host memory buffer HMB1, and the second memory device 1300_2 may include a second host memory buffer HMB2.

[0050] The storage management system 1100 may allocate a portion of the first memory device 1300_1 and the second memory device 1300_2 as buffers for the first memory device 1200_1 and the second memory device 1200_2, respectively. Hereinafter, the portion of the first memory device 1300_1 or the second memory device 1300_2 allocated as a buffer for the first memory device 1200_1 or the second memory device 1200_2 is referred to as a host memory buffer. For example, a portion of the first memory device 1300_1 may be referred to as a first host memory buffer HMB1, and a portion of the second memory device 1300_2 may be referred to as a second host memory buffer HMB2.

[0051] According to one or more embodiments, a first host memory buffer HMB1 and a second host memory buffer HMB2 may be allocated to the first storage device 1200_1 and the second storage device 1200_2 to use the first storage device 1200_1 and the second storage device 1200_2 as buffers. The first host memory buffer HMB1 and the second host memory buffer HMB2 may be managed by the first storage device 1200_1 and the second storage device 1200_2. The first host memory buffer HMB1 and the second host memory buffer HMB2 may store data from the first storage device 1200_1 and the second storage device 1200_2. For example, metadata for storage management of the first storage device 1200_1 and the second storage device 1200_2, including mapping tables, may be stored in the first host memory buffer HMB1 and the second host memory buffer HMB2.

[0052] According to one or more embodiments, the first CXL memory device 1400_1 and the second CXL memory device 1400_2 may include a CXL memory controller and memory. According to one or more embodiments, the CXL memory controller may, under the control of the memory management system 1100, store data in the memory or send data stored in the memory to the memory management system 1100. According to one or more embodiments, the CXL memory controller may, under the control of the first memory device 1200_1 and the second memory device 1200_2, store data in the memory or send data stored in the memory to the first memory device 1200_1 and the second memory device 1200_2. According to one or more embodiments, the CXL memory device may include DRAM. However, the scope of disclosure is not limited thereto.

[0053] According to one or more embodiments, the storage management system 1100, the first storage device 1200_1, the second storage device 1200_2, the first CXL memory device 1400_1, and the second CXL memory device 1400_2 can be configured to share the same interface with each other. For example, the storage management system 1100, the first storage device 1200_1, the second storage device 1200_2, the first CXL memory device 1400_1, and the second CXL memory device 1400_2 can communicate with each other via a CXL interface. The storage management system 1100, the first storage device 1200_1, the second storage device 1200_2, the first CXL memory device 1400_1, and the second CXL memory device 1400_2 can communicate with each other based on the CXL protocol.

[0054] According to one or more embodiments, the first storage device 1200_1, the second storage device 1200_2, the first CXL memory device 1400_1, and the second CXL memory device 1400_2 can communicate with each other using CXL.mem, which is a memory access protocol. CXL.mem can indicate the memory access protocol that supports access to the memory. The first storage device 1200_1 and the second storage device 1200_2 can access the first CXL memory device 1400_1 and the second CXL memory device 1400_2 using CXL.mem.

[0055] According to one or more embodiments, the storage management system 1100, the first CXL memory device 1400_1, and the second CXL memory device 1400_2 can communicate with each other using CXL.mem, which is a memory access protocol. The storage management system 1100 can access the first CXL memory device 1400_1 and the second CXL memory device 1400_2 using CXL.mem.

[0056] Shared memory device 1500 may include volatile memory (such as SRAM and / or DRAM), but may also include non-volatile memory (such as flash memory, FRAM, PRAM, and / or RRAM). Shared memory device 1500 may (e.g., based on the CXL.mem protocol) communicate with storage management system 1100, first storage device 1200_1, and second storage device 1200_2. Storage management system 1100 may store data in shared memory device 1500 or retrieve data stored in shared memory device 1500. First storage device 1200_1 and second storage device 1200_2 may store data in shared memory device 1500 or retrieve data stored in shared memory device 1500.

[0057] The storage management system 1100 can be configured to manage a first storage device 1200_1, a second storage device 1200_2, a first memory device 1300_1, a second memory device 1300_2, a first CXL memory device 1400_1, a second CXL memory device 1400_2, and a shared memory device 1500, all included in the storage server 1002. The first storage device 1200_1 and the second storage device 1200_2 can store or output stored data under the control of the storage management system 1100. The first storage device 1200_1 and the second storage device 1200_2 may include storage media with large capacity (such as solid-state drives (SSDs)), but the scope of disclosure is not limited thereto.

[0058] The storage management system 1100 can store data in the first storage device 1200_1 and the second storage device 1200_2, or retrieve data stored in the first storage device 1200_1 and the second storage device 1200_2. For example, the storage management system 1100 can send write commands and write data to the first storage device 1200_1 and the second storage device 1200_2 to store data in the first storage device 1200_1 and the second storage device 1200_2. Optionally, the storage management system 1100 can send read commands to the first storage device 1200_1 and the second storage device 1200_2, and receive data from the first storage device 1200_1 and the second storage device 1200_2 to retrieve data stored in the first storage device 1200_1 and the second storage device 1200_2.

[0059] According to one or more embodiments, the storage management system 1100, the first storage device 1200_1, and the second storage device 1200_2 can communicate with each other based on a predetermined interface. The predetermined interface may support at least one of various interfaces, such as Universal Serial Bus (USB), Small Computer System Interface (SCSI), Peripheral Component Interconnect (PCI) Fast, Advanced Technology Attachment (ATA), Parallel ATA (PATA), Serial ATA (SATA), Serial Attached SCSI (SAS), Universal Flash Storage (UFS), Non-Volatile Memory Fast (NVMe), CXL, etc., but the scope of disclosure is not limited thereto.

[0060] As storage device (or storage system) capacity increases, multiple virtual machines (VMs) with various Service Level Agreements (SLAs) can be simultaneously allocated to the storage system. Multi-tenant (or multi-user) environments are prevalent in high-capacity storage systems. Specifically, in high-capacity storage systems, multiple VMs can share storage resources based on different SLA requirements; therefore, efficient resource management is needed to ensure that all VMs meet their SLAs. By allocating high-performance storage resources to VMs that require high SLAs, interference caused by VMs requiring low SLAs can be reduced. This prevents SLA violations and meets user needs.

[0061] Storage management system 1100 may include SLA manager 1110. SLA manager 1110 can perform resource allocation operations and resource reallocation operations. SLA manager 1110 can obtain SLA information, attribute information, status information, workload characteristics, etc. SLA manager 1110 can allocate internal or external memory resources to multiple virtual functions based on at least one of SLA information, attribute information, status information, and workload characteristics. SLA manager 1110 can allocate memory resources to multiple virtual functions by considering various SLA levels. For example, memory resources may indicate space where metadata for a first storage device 1200_1 and a second storage device 1200_2 is stored. Internal and external memory resources can store metadata managed by the storage devices corresponding to each of the multiple virtual functions.

[0062] According to one or more embodiments, the SLA manager 1110 may include hardware, software, or a combination thereof configured to manage resource allocation operations. The operation of the SLA manager 1110 will be described in more detail below with reference to the accompanying drawings.

[0063] As described above, the storage device according to one or more embodiments can store metadata not only in internal storage resources but also in external storage resources. Storage server 1002 can allocate storage resources to multiple virtual functions by considering various SLA levels in a multi-user environment. Therefore, storage server 1002 can meet various SLA levels and optimize storage resource allocation. The method of optimally allocating resources performed by server system 1000 according to one or more embodiments is described in more detail below with reference to the accompanying drawings.

[0064] Figure 2 yes Figure 1 A block diagram of the software layer of the server system 1000.

[0065] Reference Figure 2 The operating system (OS), the hypervisor (HV), the first virtual machine (VM1), the second virtual machine (VM2), and the third virtual machine (VM3) can operate on the client server 1001. The OS may include system software configured to control various hardware and resources included in the client server 1001, operate various programs, and support various services. The HV may include a logical platform configured to operate the first virtual machine (VM1) through the third virtual machine (VM3) running on the client server 1001.

[0066] Each of the first virtual machines VM1 through the third virtual machine VM3 can operate on the client server 1001. According to one or more embodiments, data associated with the first virtual machine VM1 can be stored in a first storage area SA1 of the storage server 1002, and data associated with the second virtual machine VM2 can be stored in a second storage area SA2 of the storage server 1002. Data associated with the third virtual machine VM3 can be stored in a third storage area SA3 of the storage server 1002. According to one or more embodiments, the first storage area SA1 may correspond to a first storage device 1200_1, and the second storage area SA2 may correspond to a second storage device 1200_2. Optionally, the first storage area SA1 may correspond to a first namespace, and the second storage area SA2 may correspond to a second namespace. A "namespace" may indicate logically or physically separated storage areas within a storage device. That is, data managed by the first virtual machine VM1 may be logically or physically separated from data managed by the second virtual machine VM2. Optionally, the first storage area SA1 may correspond to a first partition namespace, and the second storage area SA2 may correspond to a second partition namespace. Partition namespaces can indicate the namespaces within a storage device that are divided into multiple regions. The third storage region SA3 is essentially the same as described above; therefore, its detailed description is omitted.

[0067] According to one or more embodiments, the operating system (OS) and the first to third containers can operate on the client server 1001. For example, data associated with the first container can be stored in the first storage area SA1 of the storage server 1002, data associated with the second container can be stored in the second storage area SA2 of the storage server 1002, and data associated with the third container can be stored in the third storage area SA3 of the storage server 1002.

[0068] In the following text, for ease of explanation, the terms "user," "virtual machine," "application," "client," "virtual function," etc., are used interchangeably. Depending on the context in which they are used, these terms may have the same or different meanings, and the meaning of each term can be understood in the context of one or more embodiments described below.

[0069] Figure 3 yes Figure 1 A more detailed block diagram of the first storage device 1200_1.

[0070] Reference Figures 1 to 3 The first storage device 1200_1 may include a storage controller 1210, a memory 1220, and a non-volatile memory device 1230. The storage controller 1210 may include one or more physical functions (PFs), multiple virtual functions (VFs) (e.g., first virtual functions VF1 to third virtual functions VF3), and a metadata manager 1211 to support virtualization functions (such as single root input / output virtualization (SR-IOV)). For example, the storage controller 1210 may include first virtual functions VF1 to third virtual functions VF3. For instance, first virtual function VF1 may correspond to a first virtual machine VM1, second virtual function VF2 may correspond to a second virtual machine VM2, and third virtual function VF3 may correspond to a third virtual machine VM3. However, the scope of the disclosure is not limited thereto, and the number of virtual functions may be increased or decreased according to one or more embodiments.

[0071] In one or more embodiments, the memory controller may be implemented as one or more processors that execute one or more instructions stored in the memory (e.g., memory 1220). For example, memory controller 1210 may execute one or more instructions and cause the memory device to provide virtual functionality.

[0072] According to one or more embodiments, the non-volatile memory device 1230 may include a first storage region SA1 to a third storage region SA3. According to one or more embodiments, data associated with a first virtual function VF1 may be stored in the first storage region SA1, data associated with a second virtual function VF2 may be stored in the second storage region SA2, and data associated with a third virtual function VF3 may be stored in the third storage region SA3. The first storage region SA1 may correspond to the first virtual function VF1, the second storage region SA2 may correspond to the second virtual function VF2, and the third storage region SA3 may correspond to the third virtual function VF3.

[0073] Utilizing the SR-IOV function based on the NVMe interface, the first storage device 1200_1 can generate one or more virtual functions. Virtual functions can be implemented in the storage controller 1210 of the first storage device 1200_1 in response to requests from the storage management system 1100, and physical and virtual functions can handle data access requests from the storage management system 1100 independently. Furthermore, each virtual machine can correspond to any physical or virtual function, and each user can provide commands to the non-volatile memory device 1230 through the virtual machine and corresponding physical (or virtual) function assigned to them.

[0074] Metadata manager 1211 can receive resource change information. Metadata manager 1211 can store metadata based on resource change information. Metadata manager 1211 can allocate memory resources for each of multiple virtual functions and each metadata type (or data type). For example, a first virtual machine VM1 may require a high SLA level, and a second virtual machine VM2 may require a low SLA level. The first virtual machine VM1 may correspond to a first virtual function VF1, and the second virtual machine VM2 may correspond to a second virtual function VF2. The first virtual machine VM1 may correspond to a first storage area SA1, and the second virtual machine VM2 may correspond to a second storage area SA2. The first storage area SA1 may store data related to the first virtual machine VM1 or the first virtual function VF1, and the second storage area SA2 may store data related to the second virtual machine VM2 or the second virtual function VF2.

[0075] The first virtual machine VM1 may require a high SLA level; therefore, the metadata manager 1211 may allocate internal memory resources to the first virtual function VF1. The second virtual machine VM2 may require a low SLA level; therefore, the metadata manager 1211 may allocate external memory resources to the second virtual function VF2. For example, the metadata manager 1211 may store the mapping table corresponding to the second virtual function VF2 in external memory resources, and the metadata manager 1211 may store metadata corresponding to recovery information in internal memory resources. In other words, the metadata manager 1211 may allocate memory resources based on the SLA level and the metadata type (or data type).

[0076] Figure 4 yes Figure 1 A more detailed block diagram of the SLA Manager 1110.

[0077] Reference Figure 1 and Figure 4 The SLA manager 1110 may include an SLA analyzer 1111, a resource allocator 1112, an SLA monitor 1113, a workload analyzer 1114, and a resource history storage device 1115.

[0078] SLA analyzer 1111 may receive multiple SLA messages from client server 1001. For example, SLA messages may indicate the requirements of a virtual machine (or user). According to one or more embodiments, SLA messages may include Service Level Objective (SLO) information. SLA messages may include information about Quality of Service (QoS), availability, response time, performance, throughput, bandwidth, error rate, recovery time, etc. SLA messages may indicate a service level defined for provision to a virtual machine (or user or client).

[0079] SLA analyzer 1111 can receive SLA information from each of multiple virtual machines. For example, SLA analyzer 1111 can receive first SLA information from a first virtual machine VM1, and SLA analyzer 1111 can receive second SLA information from a second virtual machine VM2.

[0080] SLA analyzer 1111 may receive attribute information (or characteristics or metrics) from first storage device 1200_1 and second storage device 1200_2. For example, the attribute information may include the performance, response time, capacity, memory size, non-volatile memory state, non-volatile memory type, programming method (or the number of bits stored in memory cells) (e.g., single-level cell (SLC), multi-level cell (MLC), three-level cell (TLC), four-level cell (QLC)), program / erase cycles (or program-erase (PE) cycles), durability / reliability or longevity, access frequency, lifetime, input / output operations per second (IOPS), performance (e.g., performance per TB), throughput, and QoS (or quality of service). For example, performance may represent any of various operational metrics of the storage system, such as data throughput, latency, input / output operations per second (IOPS), or bandwidth. Quality of Service (QoS) can represent a performance control metric that defines the level of service offered to customers. This metric may include guaranteed minimum throughput, latency thresholds, or priorities assigned to data operations. However, the scope of disclosure is not limited to this. Attribute information can indicate information about storage attributes.

[0081] SLA analyzer 1111 can analyze attribute information and SLA information, and generate analysis results. SLA analyzer 1111 can provide the analysis results to resource allocator 1112.

[0082] According to one or more embodiments, the SLA analyzer 1111 can generate a resource allocation map based on attribute information and SLA information. For example, the resource allocation map may include a mapping between a corresponding user identifier and an allocated memory resource type for each of a plurality of virtual functions (or a plurality of virtual machines). However, the scope of disclosure is not limited thereto. For example, the resource allocation map may include a mapping between a corresponding user identifier, metadata type, and memory resource type for each of a plurality of virtual functions.

[0083] Resource allocator 1112 can allocate resources to each of multiple virtual functions. Resource allocator 1112 can receive analysis results from SLA analyzer 1111. Based on the analysis results, resource allocator 1112 can allocate internal memory resources or external memory resources to each of multiple virtual machines. Internal memory resources may correspond to memory 1220 of first storage device 1200_1 and second storage device 1200_2, and external memory resources may correspond to first storage device 1300_1, second storage device 1300_2, first CXL storage device 1400_1, second CXL storage device 1400_2, and shared memory device 1500.

[0084] According to one or more embodiments, resource allocator 1112 can allocate resources to each of a plurality of storage regions. For example, resource allocator 1112 can allocate internal memory resources to a first storage region SA1 and allocate external memory resources to a second storage region SA2.

[0085] According to one or more embodiments, metadata corresponding to each of a plurality of virtual functions, managed by the first storage device 1200_1 and the second storage device 1200_2, can be stored in internal memory resources and external memory resources.

[0086] According to one or more embodiments, resource allocator 1112 may receive workload characteristics for each of a plurality of virtual machines from workload analyzer 1114. Resource allocator 1112 may allocate internal or external memory resources to the plurality of virtual functions based on the analysis results and workload characteristics.

[0087] According to one or more embodiments, the resource allocator 1112 may receive monitoring results from the SLA monitor 1113. The resource allocator 1112 may allocate internal or external memory resources to multiple virtual functions (or multiple storage regions) based on the monitoring and analysis results.

[0088] According to one or more embodiments, resource allocator 1112 may refer to resource history storage device 1115. Resource allocator 1112 may search for a target resource allocation map from historical resource allocation maps included in resource history storage device 1115. The target resource allocation map may indicate a resource allocation map corresponding to analysis results, status information, workload characteristics, SLA information, and attribute information. The target resource allocation map may indicate a resource allocation map generated under conditions similar to the current situation. Resource allocator 1112 may search for the target resource allocation map based on at least one of analysis results, status information, workload characteristics, SLA information, and attribute information. Resource allocator 1112 may use the found resource allocation map. Resource allocator 1112 may allocate internal or external memory resources to multiple virtual functions (or multiple storage regions) based on the found resource allocation map.

[0089] According to one or more embodiments, resource allocator 1112 may receive a resource reallocation request from SLA monitor 1113. Resource allocator 1112 may perform a resource reallocation operation in response to the resource reallocation request. Resource allocator 1112 may collect information again. Resource allocator 1112 may obtain changed or new information. Resource allocator 1112 may reallocate resources based on SLA information, attribute information, monitoring results, or workload characteristics. Resource allocator 1112 may determine resource reallocation based on at least one of SLA information, attribute information, monitoring results, and workload characteristics. Resource allocator 1112 may update the resource allocation mapping based on at least one of SLA information, attribute information, monitoring results, and workload characteristics.

[0090] SLA Monitor 1113 can monitor whether SLA information for multiple virtual functions (or virtual machines or multiple storage regions) is met. SLA Monitor 1113 can determine whether SLA violations exist. SLA Monitor 1113 can determine whether services meeting SLA information are provided to multiple virtual machines. SLA Monitor 1113 can analyze data in real time and predict the likelihood of SLA violations.

[0091] According to one or more embodiments, when the SLA monitor 1113 determines that at least one of a plurality of virtual machines does not meet the SLA information, the SLA monitor 1113 may send a resource reallocation request to the resource allocator 1112. That is, when the SLA monitor 1113 determines that there is an SLA violation in any of the plurality of virtual machines (or plurality of virtual functions), the SLA monitor 1113 may send a resource reallocation request to the resource allocator 1112.

[0092] According to one or more embodiments, the SLA monitor 1113 can monitor the status of memory resources. The SLA monitor 1113 can monitor the status of "memory 1220 of the first storage device 1200_1, memory 1220 of the second storage device 1200_2", first memory device 1300_1, second memory device 1300_2, shared memory device 1500, first CXL memory device 1400_1 and second CXL memory device 1400_2. The SLA monitor 1113 can generate status information for the memory resources. The SLA monitor 1113 can provide the status information to the resource allocator 1112. The status information may include memory resource traffic, utilization, response time, frequency, performance, etc.

[0093] The workload analyzer 1114 can monitor inputs and outputs between multiple virtual machines and storage devices, and can extract workload characteristics. The workload analyzer 1114 can detect and analyze user inputs and outputs. For example, the workload analyzer 1114 can monitor user inputs and outputs between client server 1001 and first storage device 1200_1 and second storage device 1200_2. For example, suppose data related to the first virtual machine VM1 can be stored in the first storage device 1200_1. The workload analyzer 1114 can monitor read / write requests and data sent and received between the first virtual machine VM1 and the first storage device 1200_1 to extract the workload characteristics of the first virtual machine VM1.

[0094] The workload analyzer 1114 can extract the workload characteristics of a virtual machine based on monitoring results. For example, the workload analyzer 1114 can determine whether a first virtual machine VM1 has a first workload characteristic. For example, the workload characteristic may include at least one of read density, write density, read rate, workload, working set size, cache status information (e.g., hit rate), and workflow. However, the scope of disclosure is not limited thereto.

[0095] Resource history storage device 1115 can store historical resource allocation maps. The historical resource allocation maps stored in resource history storage device 1115 can be used as input data for neural networks (NN).

[0096] In one or more embodiments, the SLA manager 1110 and its submodules may be implemented as software that is "stored in the memory of the storage management system 1100 and executed by at least one processor of the storage management system 1100".

[0097] Figure 5 yes Figure 1 A flowchart illustrating an example of how the storage server 1002 operates.

[0098] Reference Figure 1 and Figure 5 Storage server 1002 can perform SLA-based resource allocation operations. In operation S110, storage server 1002 can obtain SLA information from multiple virtual machines. Storage server 1002 can receive multiple SLA messages from client server 1001. In operation S130, storage server 1002 can obtain attribute information from storage devices. Storage management system 1100 can receive attribute information from first storage device 1200_1 and second storage device 1200_2.

[0099] In operation S150, storage server 1002 may allocate resources based on SLA information and / or attribute information (e.g., allocate resources to multiple virtual machines, multiple virtual functions, or multiple storage regions). In operation S170, storage server 1002 may perform monitoring to determine whether an SLA is met. Storage management system 1100 may determine whether the SLA for each of the multiple virtual machines is violated. Optionally, storage management system 1100 may determine whether the SLA for each of the multiple virtual functions is violated. Optionally, storage management system 1100 may determine whether the SLA for each of the multiple storage regions is violated. Storage management system 1100 may monitor user input and output between client server 1001 and first storage device 1200_1 and second storage device 1200_2. For example, storage management system 1100 may monitor read / write requests and data sent and received between first virtual machine VM1 and first storage device 1200_1. Storage management system 1100 may determine whether the SLA for each of the multiple virtual machines is met based on the monitoring results and SLA information. Alternatively, the storage management system 1100 can determine whether the SLA is met by referring to the performance values ​​measured by the storage device.

[0100] As described above, the storage server 1002 according to one or more embodiments can meet the SLA level of each of multiple virtual machines in a multi-tenant environment. The storage server 1002 can optimally allocate internal and external storage resources to multiple virtual functions based on various SLA levels. Therefore, the storage server 1002 can meet SLA levels and improve service quality.

[0101] Figure 6 yes Figure 5 A more detailed flowchart of the operation of S150.

[0102] Reference Figure 1 , Figure 5 and Figure 6 Storage server 1002 can allocate at least one of internal storage resources and external storage resources to each of the multiple virtual functions. Figure 5 Operation S150 may include operations S151 to S159.

[0103] In operation S151, storage server 1002 can analyze SLA information and attribute information and generate analysis results. In operation S153, storage server 1002 can obtain status information of memory resources. Memory resources may include external memory resources and internal memory resources. External memory resources may correspond to memory device group 1003, and internal memory resources may correspond to memory 1220. For example, status information may include response time, frequency, etc.

[0104] In operation S155, storage server 1002 can generate a resource allocation map based on analysis results and status information. In operation S157, storage server 1002 can send resource change information to the first storage device 1200_1 and the second storage device 1200_2. For example, the resource change information may include the resource allocation map.

[0105] In operation S159, storage server 1002 can allocate storage resources to multiple virtual functions based on resource change information. Storage server 1002 can store the metadata of each of the multiple virtual functions in the corresponding storage resource.

[0106] Figure 7 yes Figure 5 A more detailed flowchart of the operation of S150.

[0107] Reference Figure 1 , Figure 5 , Figure 6 and Figure 7 Storage server 1002 can allocate at least one of internal storage resources and external storage resources to each of the multiple virtual functions. Figure 5 Operation S150 may include operations S151 to S159.

[0108] In operation S151, storage server 1002 can analyze SLA information and attribute information and generate analysis results. In operation S153, storage server 1002 can obtain status information of memory resources. Memory resources may include external memory resources and internal memory resources. External memory resources may correspond to memory device group 1003, and internal memory resources may correspond to memory 1220. For example, status information may include response time, frequency, etc.

[0109] In operation S154, storage server 1002 obtains workload characteristics. Storage server 1002 monitors the inputs and outputs between multiple virtual machines and storage devices. Storage server 1002 extracts workload characteristics. In operation S156, storage server 1002 generates a resource allocation map based on workload characteristics, analysis results, and status information. In operation S157, storage server 1002 sends resource change information to the first storage device 1200_1 and the second storage device 1200_2. For example, the resource change information may include the resource allocation map.

[0110] In operation S159, storage server 1002 can allocate storage resources to multiple virtual functions based on resource change information. Storage server 1002 can store the metadata of each of the multiple virtual functions in the corresponding storage resource.

[0111] As described above, storage server 1002 can generate a resource allocation map based on at least one of SLA information, attribute information, status information, and workload characteristics. First storage device 1200_1 and second storage device 1200_2 can allocate storage resources for storing metadata to each of multiple virtual functions based on resource change information including the resource allocation map. Therefore, storage server 1002 can minimize interference between users and improve performance in environments where various SLA levels coexist.

[0112] Figure 8 yes Figure 6 A more detailed flowchart of operation S155.

[0113] Reference Figure 1 , Figure 6 and Figure 8 , Figure 6 Operation S155 may include operations S210 to S230. Storage server 1002 may obtain resource allocation mapping.

[0114] In operation S210, storage server 1002 can search for resource allocation mappings in the resource history storage device. Storage server 1002 can search for resource allocation mappings in the resource history storage device based on at least one of analysis results, status information, and workload characteristics.

[0115] Storage server 1002 can use previously generated resource allocation maps. Storage server 1002 can search for and analyze the resource allocation maps corresponding to the results from the previously generated resource allocation maps in the resource history storage device. When storage server 1002 has found a resource allocation map, storage server 1002 can perform operation S220, and when storage server 1002 has not found a resource allocation map, storage server 1002 can perform operation S230.

[0116] In operation S220, storage server 1002 can use the found resource allocation mapping. Storage server 1002 can use the resource allocation mapping searched in the resource history storage device. Storage server 1002 can use the searched resource allocation mapping without generating a new one.

[0117] In operation S230, storage server 1002 can generate resource allocation mappings. When storage server 1002 has not yet found a resource allocation mapping corresponding to the analysis results, storage server 1002 can generate a new resource allocation mapping.

[0118] As described above, storage server 1002 can search for resource allocation maps in the resource history storage device based on the analysis results. When storage server 1002 has found a resource allocation map, it can allocate internal or external storage resources to each of the multiple virtual functions based on the resource allocation map. When storage server 1002 has not yet found a resource allocation map, it can generate a resource allocation map based on the SLA information, attribute information, and status information of the storage resources.

[0119] Figure 9 yes Figure 5 A more detailed flowchart of operation S170.

[0120] Reference Figure 1 , Figure 5 , Figure 7 and Figure 9 , Figure 5 Operation S170 may include operations S171 and S172. Operation S172 may include operations S310 to S370. In operation S171, storage server 1002 may detect virtual machines that violate SLAs based on monitoring results. In operation S172, storage server 1002 may perform resource reallocation operations for the virtual functions corresponding to the detected virtual machines.

[0121] In operation S310, storage server 1002 can update the resource allocation mapping. Storage server 1002 can obtain changed SLA information, changed attribute information, status information, workload characteristics, etc. Storage server 1002 can generate a new resource allocation mapping based on the changed SLA information, changed attribute information, status information, workload characteristics, etc. That is, storage server 1002 can update the resource allocation mapping. In operation S330, storage server 1002 can send resource change information. Storage server 1002 can send resource change information, including the resource allocation mapping, to the first storage device 1200_1. In operation S350, storage server 1002 can perform a restart operation. Storage server 1002 can perform power-on / power-off operations via the baseboard management controller (BMC). Storage server 1002 can perform power-off, power-on, and then rearrange resources.

[0122] In operation S370, storage server 1002 can allocate storage resources to each of multiple virtual functions. Storage server 1002 can store metadata corresponding to the multiple virtual functions in the corresponding storage resources. First storage device 1200_1 can store metadata in the corresponding storage resources based on resource change information. As described above, when resource reallocation conditions, including the occurrence of SLA violations, are met, storage server 1002 can perform resource reallocation operations. Therefore, storage server 1002 can use resources efficiently and minimize SLA violations.

[0123] Figure 10 yes Figure 1 A flowchart illustrating an example of how the storage server 1002 operates.

[0124] Reference Figure 1 and Figure 10 In operation S401, the storage management system 1100 may receive SLA information. In operation S402, the storage management system 1100 may receive attribute information from the first storage device 1200_1. However, the scope of disclosure is not limited thereto. Figure 10 This diagram shows that only the first storage device 1200_1 sends attribute information. However, the second storage device 1200_2 may also send attribute information to the storage management system 1100.

[0125] In operation S403, storage server 1002 can obtain status information of memory resources. For example, storage server 1002 can obtain status information of internal memory resources. Storage server 1002 can obtain status information of external memory resources. Storage management system 1100 can receive status information of memory 1220 from first storage device 1200_1. Storage server 1002 can obtain status information of memory device group 1003. Storage management system 1100 can receive status information of first memory device 1300_1 and second memory device 1300_2. Storage management system 1100 can receive status information of first CXL memory device 1400_1 and second CXL memory device 1400_2. Storage management system 1100 can receive status information of shared memory device 1500.

[0126] In operation S404, the storage management system 1100 can generate a resource allocation map. The storage management system 1100 can generate the resource allocation map based on at least one of SLA information, attribute information, and status information.

[0127] In operation S405, the storage management system 1100 may send resource change information to the first storage device 1200_1. According to one or more embodiments, the resource change information may include a resource allocation map. According to one or more embodiments, the resource change information may include memory resource allocation information regarding each of a plurality of virtual functions. The storage management system 1100 may send the resource change information to the first storage device 1200_1 via a set-feature command. For example, the storage management system 1100 may send a set-feature command including resource change information to the first storage device 1200_1. The storage management system 1100 may send a set-feature command to the first storage device 1200_1, the set-feature command including the address of a storage area where the resource change information is stored. The first storage device 1200_1 may receive the resource change information.

[0128] In operation S406, storage server 1002 may perform a restart operation. Optionally, storage server 1002 may perform a reset operation. Storage management system 1100 may also include BMC. Storage management system 1100 may send a storage system restart request to BMC. BMC may restart the storage system in response to the storage system restart request. According to one or more embodiments, storage management system 1100 may reset first storage device 1200_1 and second storage device 1200_2.

[0129] In operation S407, the first storage device 1200_1 can allocate memory resources. The first storage device 1200_1 can allocate memory resources based on resource change information. The first storage device 1200_1 can allocate memory resources to each of the plurality of virtual functions based on the resource change information. The first storage device 1200_1 can allocate an area to each of the plurality of virtual functions for storing metadata corresponding to each of the plurality of virtual functions based on the resource change information. For example, the first storage device 1200_1 can allocate internal memory resources to the first virtual function VF1 and external memory resources to the second virtual function VF2. The first storage device 1200_1 can determine to store the first metadata MD1 corresponding to the first virtual function VF1 in memory 1220. The first storage device 1200_1 can determine to store the second metadata MD2 corresponding to the second virtual function VF2 in memory device group 1003.

[0130] In operation S408, the first storage device 1200_1 may store the first metadata MD1 in the memory 1220. The first storage device 1200_1 may store the first metadata MD1, which is metadata of the first virtual function VF1, in internal memory resources. For example, the first storage device 1200_1 may read the first metadata MD1 from the non-volatile memory device 1230 and store the first metadata MD1 in the memory 1220.

[0131] According to one or more embodiments, operation S408 can be omitted. If the first metadata MD1 has already been stored in the memory 1220 before receiving resource change information, the first storage device 1200_1 can skip the operation of storing the first metadata MD1 in the memory 1220.

[0132] In operation S409, the first storage device 1200_1 may store the second metadata MD2 in the memory device group 1003. The first storage device 1200_1 may also store the second metadata MD2, which is metadata for the second virtual function VF2, in external memory resources. For example, the first storage device 1200_1 may read the second metadata MD2 from the non-volatile memory device 1230 and store it in the memory device group 1003. For example, the first storage device 1200_1 may store the second metadata MD2 in the CXL memory device 1400_1. For example, the first storage device 1200_1 may read the second metadata MD2 from the memory 1220 and send it to the memory device group 1003.

[0133] In operation S410, storage server 1002 can perform normal operations. Storage server 1002 can perform normal operations based on allocated storage resources. In operation S411, storage management system 1100 can determine whether an SLA violation exists. Storage management system 1100 can determine whether an SLA violation exists for each of the multiple virtual machines. Storage management system 1100 can detect the virtual machine where the SLA violation occurs. When an SLA violation occurs in a specific virtual machine, storage management system 1100 can perform operation S403, and when no virtual machine has an SLA violation, storage management system 1100 can perform operation S410.

[0134] When there is no SLA violation, storage server 1002 can perform normal operations based on the currently allocated storage resources. When an SLA violation occurs, storage server 1002 can reallocate storage resources.

[0135] As described above, the first storage device 1200_1 can move a portion of metadata to external storage resources. The first storage device 1200_1 can store metadata in internal or external storage resources based on various SLA levels. The first storage device 1200_1 can allocate storage resources to each of a plurality of virtual functions based on various SLA levels to store metadata corresponding to each of the plurality of virtual functions. Furthermore, the first storage device 1200_1 can allocate storage resources for each type of metadata or data type. For example, the first storage device 1200_1 can store metadata in internal storage resources and store user data in external storage resources. Here, user data refers to user data stored in the data cache of the first storage device 1200_1.

[0136] Figure 11 It is used to describe Figure 1 A diagram illustrating the operation of storage server 1002.

[0137] Reference Figure 1 and Figure 11 The SLA analyzer 1111 can obtain SLA information and attribute information. The SLA analyzer 1111 can perform analysis operations based on the SLA information and attribute information. The SLA analyzer 1111 can generate analysis results. The SLA analyzer 1111 can provide the analysis results to the resource allocator 1112.

[0138] In the following text, it is assumed that the first virtual machine VM1 through the third virtual machine VM3 are operating. The storage management system 1100 can identify the first virtual machine VM1 through the third virtual machine VM3 and the first virtual function VF1 through the third virtual function VF3 through user identifiers. The first user identifier UID1 can correspond to the first virtual machine VM1, the second user identifier UID2 can correspond to the second virtual machine VM2, and the third user identifier UID3 can correspond to the third virtual machine VM3. The first user identifier UID1 can correspond to the first virtual function VF1, the second user identifier UID2 can correspond to the second virtual function VF2, and the third user identifier UID3 can correspond to the third virtual function VF3.

[0139] The first SLA information SLAI1 can correspond to the SLA information of the first virtual machine VM1, the second SLA information SLAI2 can correspond to the SLA information of the second virtual machine VM2, and the third SLA information SLAI3 can correspond to the SLA information of the third virtual machine VM3.

[0140] The storage management system 1100 can receive first SLA information SLAI1 from a first virtual machine VM1, second SLA information SLAI2 from a second virtual machine VM2, and third SLA information SLAI3 from a third virtual machine VM3. The first SLA information SLAI1 can correspond to the first virtual machine VM1, the second SLA information SLAI2 can correspond to the second virtual machine VM2, and the third SLA information SLAI3 can correspond to the third virtual machine VM3.

[0141] For example, the SLA analyzer 1111 can generate a first analysis result AR1 based on SLA information. The first analysis result AR1 can correspond to the result of evaluating the SLA level of each virtual machine. For example, the first SLA information SLAI1 can correspond to high performance or high specifications, the second SLA information SLAI2 can correspond to low performance or low specifications, and the third SLA information SLAI3 can correspond to intermediate performance or intermediate specifications. Therefore, the SLA analyzer 1111 can set the first virtual machine VM1 to the first level H, the second virtual machine VM2 to the third level L, and the third virtual machine VM3 to the second level M.

[0142] SLA analyzer 1111 can generate a first analysis result AR1 including a level table of users. The first analysis result AR1 (i.e., the level table of users) may include a first entry, a second entry, and a third entry. The first entry includes a first user identifier UID1 and a first level H. The second entry includes a second user identifier UID2 and a third level L. The third entry includes a third user identifier UID3 and a second level M.

[0143] Storage server 1002 may include internal memory resources and external memory resources. The internal and external memory resources can be determined based on the first storage device 1200_1 and the second storage device 1200_2. For example, when memory resources exist in the first storage device 1200_1 and the second storage device 1200_2, the memory resources may correspond to internal memory resources. That is, memory 1220 may correspond to internal memory resources. When memory resources exist outside the first storage device 1200_1 and the second storage device 1200_2, the memory resources may correspond to external memory resources. That is, the first storage device 1300_1, the second storage device 1300_2, the first CXL storage device 1400_1, the second CXL storage device 1400_2, and the shared memory device 1500 may correspond to external memory resources.

[0144] Storage server 1002 may include various types of memory resources. For example, storage server 1002 may include memory of first memory type MTYPE1 to fourth memory type MTYPE4. For example, memory 1220 may correspond to memory resources of first memory type MTYPE1. First host memory buffer HMB1 and second host memory buffer HMB2 of first memory device 1300_1 and second memory device 1300_2 may correspond to memory resources of second memory type MTYPE2. First CXL memory device 1400_1 and second CXL memory device 1400_2 may correspond to memory resources of third memory type MTYPE3. Shared memory device 1500 may correspond to memory resources of fourth memory type MTYPE4. That is, memory 1220 may correspond to first memory type MTYPE1, first host memory buffer HMB1 and second host memory buffer HMB2 may correspond to second memory type MTYPE2, and first CXL memory device 1400_1 and second CXL memory device 1400_2 may correspond to third memory type MTYPE3. Shared memory device 1500 may correspond to a fourth memory type, MTYPE4. However, the scope of disclosure is not limited thereto. The number of memory types may be increased or decreased according to one or more embodiments. Storage server 1002 may include memory resources of first to sixth memory types. First host memory buffer HMB1 may correspond to a second memory type, second host memory buffer HMB2 may correspond to a third memory type, CXL memory device 1400_1 may correspond to a fourth memory type, CXL memory device 1400_2 may correspond to a fifth memory type, and shared memory device 1500 may correspond to a sixth memory type.

[0145] SLA analyzer 1111 can generate a second analysis result AR2, which includes a resource level table, based on attribute information. The second analysis result AR2 (i.e., the resource level table) may include a fourth, a fifth, and a sixth entry, wherein the fourth entry includes a first memory type MTYPE1 and a first level H, the fifth entry includes a second memory type MTYPE2 and a second level M, and the sixth entry includes a third memory type MTYPE3 and a third level L.

[0146] SLA analyzer 1111 can send a first analysis result AR1 and a second analysis result AR2 to resource allocator 1112. Resource allocator 1112 can receive the first analysis result AR1 and the second analysis result AR2 from SLA analyzer 1111. Resource allocator 1112 can generate a resource allocation map RMAP based on the first analysis result AR1 and the second analysis result AR2. However, the scope of disclosure is not limited thereto. Resource allocator 1112 can generate the resource allocation map RMAP based on at least one of the following: analysis results, status information, workload characteristics, and resource history storage device (e.g., historical resource allocation maps stored in resource history storage device 1115).

[0147] In the following text, for ease of explanation, the terms "user identifier," "virtual machine," "virtual function," etc., are used interchangeably. Depending on the context of the embodiments, these terms may have the same or different meanings, and the meaning of each term may be understood in the context of the embodiments described below.

[0148] According to one or more embodiments, resource allocator 1112 can map virtual machines (or virtual functions) to resource storage based on levels. Resource allocator 1112 can map the storage type of a level corresponding to the level of a user identifier (or virtual machine) to the user identifier (or virtual machine). For example, because the level of a first user identifier UID1 corresponds to a first level H, resource allocator 1112 can allocate a first storage type MTYPE1 having the first level H to the first user identifier UID1. That is, resource allocator 1112 can map the first user identifier UID1 to the first storage type MTYPE1. Resource allocator 1112 can allocate storage 1220 to a first virtual function VF1.

[0149] Because the level of the second user identifier UID2 corresponds to the third level L, the third memory type MTYPE3 with the third level L can be assigned to the second user identifier UID2. That is, resource allocator 1112 can map the second user identifier UID2 to the third memory type MTYPE3. Resource allocator 1112 can also allocate the first CXL memory device 1400_1 and the second CXL memory device 1400_2 to the second virtual function VF2.

[0150] Because the level of the third user identifier UID3 corresponds to the second level M, the second memory type MTYPE2 with the second level M can be assigned to the third user identifier UID3. That is, the resource allocator 1112 can map the third user identifier UID3 to the second memory type MTYPE2. The resource allocator 1112 can also allocate the first host memory buffer HMB1 and the second host memory buffer HMB2 to the third virtual function VF3.

[0151] A resource allocation map (RMAP) may include a mapping relationship between user identifiers and memory types. According to one or more embodiments, the RMAP may include mapping information between user identifiers and memory types. For example, the RMAP may include mapping information between a first user identifier UID1 and a first memory type MTYPE1, mapping information between a second user identifier UID2 and a third memory type MTYPE3, and mapping information between a third user identifier UID3 and a second memory type MTYPE2.

[0152] Figure 12 It is used to describe Figure 1 A diagram illustrating the operation of storage server 1002.

[0153] Reference Figure 1 , Figure 11 and Figure 12 The SLA manager 1110 can generate a resource allocation map. The SLA manager 1110 can generate resource change information based on the resource allocation map. The resource change information may include the resource allocation map. The SLA manager 1110 can send the resource change information to the first storage device 1200_1.

[0154] The first storage device 1200_1 can receive resource change information, including a resource allocation map (RMAP). The first storage device 1200_1 can allocate memory resources to multiple virtual functions based on the resource change information. The first storage device 1200_1 can store metadata or data corresponding to the multiple virtual functions in the memory resources.

[0155] The first storage device 1200_1 can allocate memory 1220 to a first virtual function corresponding to a first virtual machine. The first storage device 1200_1 can allocate CXL memory device 1400_2 to a second virtual function corresponding to a second virtual machine. The first storage device 1200_1 can allocate a first host memory buffer HMB1 to a third virtual function corresponding to a third virtual machine.

[0156] The first storage device 1200_1 can store the first metadata corresponding to the first virtual machine in the memory 1220. The first storage device 1200_1 can store the first metadata corresponding to the first virtual function in the memory 1220. The first storage device 1200_1 can store the second metadata corresponding to the second virtual machine in the CXL memory device 1400_2. The first storage device 1200_1 can store the second metadata corresponding to the second virtual function in the CXL memory device 1400_2. The first storage device 1200_1 can store the third metadata corresponding to the third virtual machine in the first host memory buffer HMB1. The first storage device 1200_1 can store the third metadata corresponding to the third virtual function in the first host memory buffer HMB1.

[0157] Figure 13A and Figure 13B It is used to describe Figure 1 A diagram illustrating the operation of storage server 1002.

[0158] Reference Figure 1 , Figure 13A and Figure 13B Storage server 1002 can perform resource reallocation operations. Storage server 1002 can determine whether resource reallocation conditions are met. When resource reallocation conditions are met, storage server 1002 can perform resource reallocation operations. When resource reallocation conditions are not met, storage server 1002 may not perform resource reallocation operations. For example, resource reallocation conditions may be met when an SLA violation occurs, SLA information changes, attribute information changes, status information changes, or workload characteristics change.

[0159] The first storage device 1200_1 can store metadata and data about multiple virtual functions in the memory 1220. For example, the first storage device 1200_1 can store a first mapping table MT1 corresponding to a first virtual function, a second mapping table MT2 corresponding to a second virtual function, and a third mapping table MT3 corresponding to a third virtual function in the memory 1220. The memory 1220 may include a first region A1 to a fifth region A5. However, the scope of disclosure is not limited thereto, and the first region A1 to the fifth region A5 may be fixed or variable. That is, according to one or more embodiments, the size of the first region A1 to the fifth region A5 may be changed, and the number of regions included in the memory 1220 may be reduced or increased.

[0160] The first mapping table MT1 corresponding to the first virtual function can be stored in the first area A1. The second mapping table MT2 corresponding to the second virtual function can be stored in the second area A2. The third mapping table MT3 corresponding to the third virtual function can be stored in the third area A3.

[0161] The fourth area A4 can be a management data cache area. The fourth area A4 can store metadata or data used for management operations. For example, the fourth area A4 can be used for garbage collection operations. When the first storage device 1200_1 is performing a garbage collection operation, the first storage device 1200_1 can store the valid page data of the sacrificed block in the fourth area A4. The first storage device 1200_1 can also store the valid page data stored in the fourth area in a free block.

[0162] The fifth region A5 can be an input / output data cache region. The fifth region A5 can store user data for input and output operations (write or read operations). For example, the first storage device 1200_1 can store user data in memory 1220 in response to a write command. The first storage device 1200_1 can read the user data stored in memory 1220 and can store the user data in non-volatile memory device 1230. The first storage device 1200_1 can read the user data in non-volatile memory device 1230 in response to a read command and can store the user data in memory 1220. The first storage device 1200_1 can read the user data stored in memory 1220 and can provide the user data to the storage management system 1100.

[0163] The storage management system 1100 can determine if the conditions for resource reallocation are met. The storage management system 1100 can perform resource reallocation operations. The storage management system 1100 can collect the information required to perform the resource reallocation operations. The storage management system 1100 can update the resource allocation mapping based on the changed SLA information, changed attribute information, current status information, and current workload characteristics. The storage management system 1100 can generate a new resource allocation mapping.

[0164] According to one or more embodiments, the storage management system 1100 can generate a state profile based on modified SLA information, modified attribute information, current status information, and current workload characteristics. The storage management system 1100 can obtain a resource allocation map corresponding to the state profile from a resource history storage device. The storage management system 1100 can use the obtained resource allocation map.

[0165] The updated resource allocation mapping may include mapping information between the first user identifier UID1 and the first memory type MTYPE1, mapping information between the second user identifier UID2 and the first memory type MTYPE1, and mapping information between the third user identifier UID3 and the third memory type MTYPE3.

[0166] The storage management system 1100 can analyze the changed SLA information, changed attribute information, current status information, and current workload characteristics, and can determine whether the SLA of the third virtual function is met, the SLA of the first virtual function is violated, and the SLA of the second virtual function is violated. Therefore, the storage management system 1100 can determine to allocate the CXL memory device 1400_2 corresponding to the third level L to the third virtual function. The storage management system 1100 can determine to increase the size of the management data cache area to meet the SLA of the first and second virtual functions. The storage management system 1100 can increase the size of the management data cache area to prevent degradation of input and output performance due to management operations (such as garbage collection) in the first storage device 1200_1. However, the disclosure is not limited to this, and the storage management system 1100 can increase the size of other areas.

[0167] The storage management system 1100 can generate resource change information based on the updated resource allocation map (or a newly acquired resource allocation map). The storage management system 1100 can send the resource change information to the first storage device 1200_1. The storage management system 1100 can also send configuration feature commands, including the resource allocation map, to the first storage device 1200_1.

[0168] According to one or more embodiments, resource change information may include information such as the type and size of the resource to be changed. For example, resource change information may also include information about the size of the management data cache region and information about the increase in the size of the management data cache region.

[0169] The first storage device 1200_1 can receive resource change information. The first storage device 1200_1 can reallocate resources in response to the resource change information. Optionally, the first storage device 1200_1 can reallocate resources in response to a setting feature command including a resource allocation map. The first storage device 1200_1 may allocate the CXL memory device 1400_2, instead of the memory 1220, to the third virtual function VF3. Therefore, the first storage device 1200_1 may move the third mapping table MT3 stored in the memory 1220 to the CXL memory device 1400_2. The first storage device 1200_1 may store the third mapping table MT3 in the CXL memory device 1400_2.

[0170] The first storage device 1200_1 can increase the size of the fourth region A4. Because the third mapping table MT3 can be moved from memory 1220 to CXL memory device 1400_2, the first storage device 1200_1 can remove the third region A3. The first storage device 1200_1 can increase the size of the fourth region A4 to the same size as the removed third region A3. That is, the first storage device 1200_1 can increase the size of the management data cache region. Therefore, memory 1220 can include the first region A1, the second region A2, the fourth region A4, and the fifth region A5. Memory 1220 may not include the third region A3. The size of the fourth region A4 can be increased.

[0171] According to one or more embodiments, after moving the third mapping table of the third virtual function corresponding to the low SLA level to external memory resources, the first storage device 1200_1 may increase the size of the fourth region A4. Therefore, the first storage device 1200_1 may not immediately process management operations (such as garbage collection). The first storage device 1200_1 may have sufficient memory resources for management operations, and thus, the first storage device 1200_1 may perform garbage collection or management operations with sufficient time. Therefore, performance degradation caused by management operations (such as garbage collection) can be minimized.

[0172] As described above, storage server 1002 can perform resource reallocation operations. Marginal resources in storage server 1002 can be used efficiently, allowing storage resources to be additionally allocated to a first or second virtual function corresponding to a high SLA level. Therefore, SLA violations can be prevented and service quality can be improved.

[0173] Figure 14A and Figure 14B It is used to describe Figure 1 A diagram illustrating the operation of storage server 1002.

[0174] Reference Figure 1 , Figure 14A and Figure 14B The storage management system 1100 can group multiple virtual machines (or multiple virtual functions) and allocate the same or substantially the same storage resources to the same group. In the following text, it is assumed that virtual machines 1 through 5 operate on client server 1001.

[0175] Storage server 1002 can group virtual machines based on SLA information. Storage server 1002 can group virtual machines with substantially the same SLA information. Storage server 1002 can receive SLA information from each of the first to fifth virtual machines. Storage server 1002 can generate analysis results based on the SLA information and attribute information.

[0176] For example, the first analysis result AR1 may include a first entry, a second entry, a third entry, a fourth entry, and a fifth entry. The first entry includes a first user identifier UID1 and a first level H corresponding to the first virtual machine. The second entry includes a second user identifier UID2 and a third level L corresponding to the second virtual machine. The third entry includes a third user identifier UID3 and a second level M corresponding to the third virtual machine. The fourth entry includes a fourth user identifier UID4 and a third level L corresponding to the fourth virtual machine. The fifth entry includes a fifth user identifier UID5 and a second level M corresponding to the fifth virtual machine.

[0177] Resource allocator 1112 can group virtual machines based on the first analysis result AR1. Storage server 1002 can group virtual machines with the same level into the same group. For example, storage server 1002 can set the first virtual machine as the first group, the second and fourth virtual machines as the second group, and the third and fifth virtual machines as the third group.

[0178] According to one or more embodiments, the resource allocator 1112 may generate a group table GT. For example, the group table GT may include: an entry including "a first group identifier GID1, a first user identifier UID1 corresponding to a first virtual machine, and a first level H", an entry including "a second group identifier GID2, a second user identifier UID2 corresponding to a second virtual machine, a fourth user identifier UID4 corresponding to a fourth virtual machine, and a third level L", and an entry including "a third group identifier GID3, a third user identifier UID3 corresponding to a third virtual machine, a fifth user identifier UID5 corresponding to a fifth virtual machine, and a second level M".

[0179] According to one or more embodiments, storage server 1002 may generate a resource allocation map (RMAP) based on group table GT and analysis results AR1 and AR2. For example, the resource allocation map RMAP may include mapping information between a first user identifier UID1 and a first memory type MTYPE1, mapping information between second user identifiers UID2 and fourth user identifiers UID4 and a third memory type MTYPE3, and mapping information between third user identifiers UID3 and fifth user identifiers UID5 and a second memory type MTYPE2.

[0180] Storage server 1002 can generate resource change information based on resource allocation mapping. For example, resource change information may include resource allocation mapping. Storage server 1002 can allocate memory resources used to store metadata and data of the first storage device 1200_1 to each of a plurality of virtual functions corresponding to a plurality of virtual machines based on the resource change information. Because the first user identifier UID1 in the resource change information may correspond to the first memory type MTYPE1, storage server 1002 may store a first mapping table corresponding to the first virtual function in memory 1220. Because the second user identifier UID2 and the fourth user identifier UID4 in the resource change information may correspond to the third memory type MTYPE3, storage server 1002 may store a second mapping table corresponding to the second virtual function and a fourth mapping table corresponding to the fourth virtual function in CXL storage device 1400_2. Because the third user identifier UID3 and the fifth user identifier UID5 in the resource change information can correspond to the second memory type MTYPE2, the storage server 1002 can store the third mapping table corresponding to the third virtual function and the fifth mapping table corresponding to the fifth virtual function in the first host memory buffer HMB1.

[0181] Figure 15A and Figure 15B It is used to describe Figure 1 A diagram illustrating the operation of storage server 1002.

[0182] Reference Figure 1 , Figure 15A and Figure 15B The SLA manager 1110 can provide high performance to a first and second virtual machine that require high-specification SLAs, and can provide low performance to a third virtual machine that requires low-specification SLAs. According to one or more embodiments (e.g., see reference...), Figure 15A The first storage device 1200_1 can store a third mapping table corresponding to the third virtual function in a first host memory buffer HMB1. The memory 1220 may include a first region A1, a second region A2, a fourth region A4, and a fifth region A5. The first storage device 1200_1 can store the first mapping table corresponding to the first virtual function in the first region A1, store the second mapping table corresponding to the second virtual function in the second region A2, store data required for management operations in the fourth region A4, and store user data for input and output operations (e.g., read or write operations) in the fifth region A5. Figure 13AAs described above, the first storage device 1200_1 can store the third mapping table in the memory 1220. However, to increase the size of the fifth region A5, the first storage device 1200_1 can store the third mapping table in the first host memory buffer HMB1. The first storage device 1200_1 can increase the size of the fifth region A5 to the same size as the third region A3. By increasing the size of the user data cache region, the first storage device 1200_1 can provide high performance to the first virtual machine and the second virtual machine.

[0183] According to one or more embodiments (e.g., referring to...) Figure 15B The first storage device 1200_1 may store the data of the third virtual function, instead of metadata, in the first host memory buffer HMB1. The first storage device 1200_1 may use external memory resources as a data cache for the third virtual function. The first storage device 1200_1 may store the input and output request data corresponding to the third virtual function in the first host memory buffer HMB1, instead of in memory 1220. Memory 1220 may include first areas A1 to fifth areas A5. The first storage device 1200_1 may store a first mapping table MT1 in the first area A1, a second mapping table MT2 in the second area A2, a third mapping table MT3 in the third area A3, data required for management operations in the fourth area A4, and user data for input and output operations in the fifth area A5. However, with... Figure 15A Unlike other storage devices, the first storage device 1200_1 may store only the user data corresponding to the first virtual function and the second virtual function in the fifth area A5. The first storage device 1200_1 may not store the user data corresponding to the third virtual function in the fifth area A5. The first storage device 1200_1 may store only the user data corresponding to the first user identifier UID1 or the second user identifier UID2 included in read or write commands in the fifth area A5. The first storage device 1200_1 may store the user data corresponding to the third user identifier UID3 included in read or write commands in the first host memory buffer HMB1.

[0184] The first storage device 1200_1 can restrict the use of user identifiers in the fifth region A5 without increasing the size of the fifth region A5, and thus can provide improved performance to the first virtual machine and the second virtual machine. That is, the first storage device 1200_1 can store user data corresponding to the third virtual function in external storage resources without changing the storage location of the third mapping table MT3 (or the third metadata).

[0185] The first storage device 1200_1 can increase the size of the fifth region A5 for a first or second virtual function requiring a high SLA level. The first storage device 1200_1 can also increase the data cache region for the first or second virtual function. Furthermore, the first storage device 1200_1 can increase the flush cycle of the data cache region. When the workload characteristics of the first virtual machine involve frequent access to hot data and the flush cycle is short, data stored in the non-volatile memory device 1230 can be repeatedly invalidated. However, by increasing the flush cycle, the first storage device 1200_1 can change the value of data existing in the data cache region before the data is stored in the non-volatile memory device 1230. Therefore, performance degradation can be prevented.

[0186] As described above, the first storage device 1200_1 can allocate memory resources to each virtual function and adjust the allocation of memory resources. The first storage device 1200_1 can allocate memory resources according to the type of metadata or data stored in the memory resources, and can adjust the allocation of memory resources.

[0187] Figure 16 yes Figure 1 A flowchart illustrating an example of how the storage server 1002 operates.

[0188] Reference Figure 1 and Figure 16 Storage server 1002 can allocate external storage resources based on workload characteristics. For example, storage server 1002 can select external storage resources according to workload.

[0189] In operation S510, storage server 1002 can analyze the workload of virtual machines. For example, storage server 1002 can monitor the inputs and outputs between multiple virtual machines and storage devices, and can extract workload characteristics. Storage server 1002 can determine the workload as a sequential pattern or a random pattern. According to one or more embodiments, workload characteristics can indicate input and output patterns. Workload characteristics may include sequential or random patterns. For example, storage server 1002 can determine the workload characteristics of a first virtual machine as a sequential pattern. Storage server 1002 can determine the workload characteristics of a second virtual machine as a random pattern.

[0190] In operation S520, storage server 1002 can determine whether the workload characteristics correspond to a random mode. When the workload characteristics are determined to be a random mode, storage server 1002 can execute operations S550 to S580, and when the workload characteristics are determined to be a sequential mode instead of a random mode, storage server 1002 can execute operations S530 and S540.

[0191] In operation S530, storage server 1002 can identify the traffic or utilization of external storage resources. When the workload characteristics are determined to be sequential, storage server 1002 can obtain status information of the external storage resources. Storage server 1002 can receive status information from external storage resources.

[0192] In operation S540, storage server 1002 may allocate external storage resources to virtual functions corresponding to virtual machines with workload characteristics of sequential mode. For example, since the workload characteristics of the first virtual machine are determined to be sequential mode, storage server 1002 may allocate external storage resources to the first virtual function corresponding to the first virtual machine based on status information. Storage server 1002 may allocate resources to the first virtual function based on the traffic and utilization of external storage resources. After operation S540, storage server 1002 may execute operation S590.

[0193] In operation S550, storage server 1002 can identify logical block address (LBA) ranges. Storage server 1002 can determine the address range of virtual functions corresponding to virtual machines with workload characteristics of random mode. For example, because the workload characteristics of the second virtual machine are determined to be random mode, storage server 1002 can determine the address range of the second virtual function corresponding to the second virtual machine based on status information.

[0194] In operation S560, storage server 1002 can determine whether the determined address range exceeds a threshold. When the address range exceeds the threshold, storage server 1002 can execute operation S570, and when the address range is equal to or less than the threshold, storage server 1002 can execute operation S580. The threshold can be predetermined.

[0195] In operation S570, storage server 1002 can allocate the first CXL memory device 1400_1 and the second CXL memory device 1400_2 to virtual functions. For example, when the address range of the second virtual function corresponding to the second virtual machine exceeds a threshold, storage server 1002 can allocate the first CXL memory device 1400_1 and the second CXL memory device 1400_2 to the second virtual function. When the address region size is large, storage server 1002 can allocate regions of the first CXL memory device 1400_1 and the second CXL memory device 1400_2 that can be accessed in bytes. Storage server 1002 can allocate regions of the first CXL memory device 1400_1 and the second CXL memory device 1400_2 of external memory resources to virtual functions with large address regions, thus optimizing access to external memory and performance.

[0196] In operation S580, storage server 1002 may allocate the first host memory buffer HMB1 and the second host memory buffer HMB2 to virtual functions. For example, when the address range of the second virtual function corresponding to the second virtual machine is equal to or less than a threshold, storage server 1002 may allocate the first host memory buffer HMB1 and the second host memory buffer HMB2 to the second virtual function. In operation S590, storage server 1002 may identify whether an SLA violation exists. When an SLA violation exists, storage server 1002 may perform a resource reallocation operation. When an SLA violation exists, storage server 1002 may again execute operations S510 to S570.

[0197] As described above, storage server 1002 can select external storage resources based on workload. Storage server 1002 can determine the workload of virtual machines (such as sequential mode or random mode) and determine external storage resources based on the workload of virtual machines.

[0198] Figure 17A The example NN is shown and can be used as a machine learning model. Figure 17B This is a diagram illustrating an example of a method for generating resource allocation maps using a neural network.

[0199] Reference Figure 1 , Figure 17A and Figure 17B The SLA manager 1110 may also include a neural network (NN). For example, the NN may include various derivatives such as artificial neural networks (ANN), convolutional neural networks (CNN), recurrent neural networks (RNN), etc.

[0200] Reference Figure 17A The NN may include first input nodes IN1 to fourth input nodes IN4, first hidden nodes HN1 to tenth hidden nodes HN10, and output node ON. The number of input nodes, the number of hidden nodes, and the number of output nodes can be predetermined when the NN is formed.

[0201] The first input nodes IN1 to the fourth input node IN4 form the input layer. The first hidden nodes HN1 to the fifth hidden nodes HN5 form the first hidden layer. The sixth hidden nodes HN6 to the tenth hidden nodes HN10 form the second hidden layer. The output node ON forms the output layer. The number of hidden layers can be predetermined when the neural network is formed.

[0202] Input data used for learning or inference can be input to first input nodes IN1 through fourth input nodes IN4. The value of each input node can be sent to first hidden nodes HN1 through fifth hidden nodes HN5 of the first hidden layer via the branches (or synapses) shown. Each branch (or synapse) can be assigned a corresponding synaptic value or weight. The value of each input node can be computed with the synaptic value or weight of the corresponding branch (or synapse) (e.g., multiplied by the synaptic value or weight of the corresponding branch (or synapse)) and can be sent to the first hidden layer.

[0203] The values ​​input to the first hidden nodes HN1 through the fifth hidden nodes HN5 can be calculated with weights (or synaptic values) and sent to the sixth hidden nodes HN6 through the tenth hidden nodes HN10 in the second hidden layer. The inputs to the sixth hidden nodes HN6 through the tenth hidden nodes HN10 can also be calculated with weights (or synaptic values) and sent to the output node ON. The value (or output data) of the output node ON indicates the result of the learning or inference.

[0204] The input data for the NN may include at least one of SLA information, attribute information, status information, and workload characteristics. The output data for the NN may include resource allocation maps. The input data for the NN may include historical resource allocation maps stored in resource history storage device 1115.

[0205] For example, input data may include a first table T1 through a third table T3. The first table T1 may include values ​​representing measures of attribute information about the ratios R1 to R3 of internal memory resources used based on data of a first type TY1. The second table T2 may include values ​​representing measures of attribute information about the ratios R1 to R3 of internal memory resources used based on data of a second type TY2. For example, data of the first type TY1 may indicate a mapping table, and data of the second type TY2 may indicate data related to management operations. For example, the first type TY1 may correspond to... Figure 15B The first region A1 and the second type TY2 can correspond to the fourth region A4.

[0206] According to one or more embodiments, the attribute information may include multiple metrics, namely, a first metric M1 to a third metric M3. For example, the multiple metrics may include IOPS, performance (e.g., performance per TB), throughput, and QoS (or quality of service).

[0207] The first table T1 may include multiple values ​​V11 to V19. For example, value V11 may be a value corresponding to the first ratio R1 and the first measure M1, and value V14 may be a value corresponding to the second ratio R2 and the first measure M1. The remaining values ​​V11 to V19 can be interpreted in essentially the same way as described above, therefore, their detailed descriptions are omitted.

[0208] Table T2 may include multiple values ​​V21 to V29. For example, value V21 may be the value corresponding to the first ratio R1 and the first measure M1, and value V24 may be the value corresponding to the second ratio R2 and the first measure M1. The remaining values ​​V21 to V29 can be interpreted in essentially the same way as described above, therefore, their detailed descriptions are omitted.

[0209] The third table T3 may include status information of memory resources. For example, the third table T3 may include the values ​​of sub-information of the status information of the first memory type MTYPE1 to the third memory type MTYPE3. The status information may include multiple sub-information (i.e., first sub-information S1 and second sub-information S2). For example, the first sub-information S1 may correspond to the response time, and the second sub-information S2 may correspond to the frequency. The first memory type MTYPE1 may correspond to memory 1220, the second memory type MTYPE2 may correspond to the first host memory buffer HMB1 and the second host memory buffer HMB2, and the third memory type MTYPE3 may correspond to the first CXL memory device 1400_1 and the second CXL memory device 1400_2.

[0210] The third table T3 may include multiple values ​​V31 to V36. For example, value V31 may be the value corresponding to the first memory type MTYPE1 and the first sub-information S1, and value V33 may be the value corresponding to the second memory type MTYPE2 and the first sub-information S1. The remaining values ​​V31 to V36 can be interpreted in essentially the same way as described above, therefore, their detailed descriptions are omitted.

[0211] The NN can receive a first table T1 to a third table T3 as input data and can output a resource allocation map RMAP as output data. According to one or more embodiments, the resource allocation map RMAP may include the level of SLA information and the value of the rate at which each data type TY1, TY2, or TY3 uses internal memory resources. For example, the level of SLA information may include a first level to a third level H, M, and L. The first level H may correspond to high performance, the second level M may correspond to intermediate performance, and the third level L may correspond to low performance. For example, the first type TY1 may correspond to a mapping table, the second type TY2 may correspond to data related to management operations, and the third type TY3 may correspond to user data for input and output operations. The resource allocation map RMAP may include multiple values ​​V41 to V49. For example, value V41 may be a value corresponding to the first level H and the first type TY1, and value V44 may be a value corresponding to the second level M and the first type TY1. The remaining values ​​V41 to V49 can be interpreted in essentially the same way as described above, therefore, their detailed description is omitted. As described above, the storage server 1002 can optimize resource allocation by using a machine learning model or an NN.

[0212] As described above, a machine learning model (or neural network) can generate an optimal resource allocation map based on input data including SLA information, attribute information, and state information of memory resources. Storage server 1002 can allocate internal or external memory resources to each of the multiple virtual functions based on the resource allocation map.

[0213] Figure 18 This is a block diagram of a server system 2000 according to one or more embodiments.

[0214] Reference Figure 1 and Figure 18 The server system 2000 may include a client server 2001, a first storage server 2002, a second storage server 2003, and a network NT. The client server 2001, the first storage server 2002, and the second storage server 2003 can communicate with each other via the network NT.

[0215] The first storage server 2002 may include a storage management system 2100, a first storage device 2200_1 and a second storage device 2200_2, a first memory device 2300_1, a second memory device 2300_2, a first CXL memory device 2400_1, a second CXL memory device 2400_2, and a shared memory device 2900. The second storage server 2003 may include a storage management system 2500, a storage device 2600, a memory device 2700, a CXL memory device 2800, and a shared memory device 2900.

[0216] First storage device 2200_1 and second storage device 2200_2 can access the CXL storage device 2800 of the second storage server 2003 via network NT. First storage device 2200_1 and second storage device 2200_2 can access the CXL storage device 2800 of the second storage server 2003 via structural NVMe (NVMe-oF). First storage device 2200_1 and second storage device 2200_2 can communicate with the CXL storage device 2800 without intervention from the storage management system 2100. First storage device 2200_1 and second storage device 2200_2 can store a portion of metadata in the CXL storage device 2800.

[0217] The storage management system 2100 can perform resource allocation operations based on SLA information and attribute information. The storage management system 2100 can receive first SLA information to third SLA information. The first SLA information may correspond to a first virtual machine, the second SLA information may correspond to a second virtual machine, and the third SLA information may correspond to a third virtual machine. The storage management system 2100 can evaluate the first SLA information as a first level H, the second SLA information as a second level M, and the third SLA information as a third level L.

[0218] The storage management system 2100 can allocate memory 2220 to a first virtual function corresponding to a first virtual machine based on first SLA information at a first level H. The storage management system 2100 can allocate a first host memory buffer HMB1 to a second virtual function corresponding to a second virtual machine based on second SLA information at a second level M. The storage management system 2100 can allocate CXL memory device 2800 to a third virtual function corresponding to a third virtual machine based on third SLA information at a third level L.

[0219] The second storage device 2200_2 can store the first metadata MD1 corresponding to the first virtual function in the memory 2220. The second storage device 2200_2 can store the second metadata MD2 corresponding to the second virtual function in the first host memory buffer HMB1. The second storage device 2200_2 can store the third metadata MD3 corresponding to the third virtual function in the CXL memory device 2800.

[0220] Figure 19 This is a diagram of a system 3000 for an application storage device according to one or more embodiments. Figure 19 The system 3000 can essentially be a mobile system (such as a portable communication terminal (e.g., a mobile phone), a smartphone, a tablet PC, a wearable device, a healthcare device, or an Internet of Things (IoT) device). However, Figure 19 The system 3000 is not limited to mobile systems and can be a PC, laptop computer, server, media player, or automotive device (e.g., navigation device).

[0221] Reference Figure 19 System 3000 may include a main processor 3100, a memory (e.g., 3200a and 3200b), and a storage device (e.g., 3300a and 3300b). Furthermore, system 3000 may include at least one of an image capture device 3410, a user input device 3420, a sensor 3430, a communication device 3440, a display 3450, a speaker 3460, a power supply device 3470, and a connection interface 3480.

[0222] The main processor 3100 controls all operations of the system 3000; more specifically, the main processor 3100 controls the operation of other components included in the system 3000. The main processor 3100 can be implemented as a general-purpose processor, a special-purpose processor, or an application processor.

[0223] The main processor 3100 may include at least one CPU core 3110 and a controller 3120 configured to control memories 3200a and 3200b and / or storage devices 3300a and 3300b. In one or more embodiments, the main processor 3100 may also include an accelerator 3130, which is dedicated circuitry for high-speed data operations, such as artificial intelligence (AI) data operations. The accelerator 3130 may include a graphics processing unit (GPU), a neural processing unit (NPU), and / or a data processing unit (DPU) and may be implemented as a chip physically separate from other components of the main processor 3100.

[0224] Memory 3200a and 3200b may be used as the main memory device of system 3000. Although each of memory 3200a and 3200b may include volatile memory (such as SRAM and / or DRAM), each of memory 3200a and 3200b may include non-volatile memory (such as flash memory, PRAM and / or RRAM). Memory 3200a and 3200b may be implemented in the same package as main processor 3100.

[0225] Storage devices 3300a and 3300b can be used as non-volatile memory devices configured to store data regardless of whether they are powered on, and have a larger storage capacity than memories 3200a and 3200b. Storage devices 3300a and 3300b may each include storage controllers (STRG CTRL) 3310a and 3310b and NVMs (non-volatile memory) 3320a and 3320b, which are configured to store data via the control of storage controllers 3310a and 3310b. Although NVMs 3320a and 3320b may include flash memory with a two-dimensional (2D) or three-dimensional (3D) V-NAND structure, they may also include other types of NVMs (such as PRAM and / or RRAM).

[0226] Storage devices 3300a and 3300b may be physically separate from the main processor 3100 and included in the system 3000, or implemented in the same package as the main processor 3100. Furthermore, storage devices 3300a and 3300b may be of the type of solid-state device (SSD) or memory card, and may be removably combined with other components of the system 3000 via an interface (such as connection interface 3480 described below). Storage devices 3300a and 3300b may be devices that apply standard protocols (such as UFS, embedded multimedia card (eMMC), or NVMe), and are not limited thereto.

[0227] Image capture device 3410 can capture still images or moving images. Image capture device 3410 may include a camera, video camera, and / or webcam.

[0228] User input device 3420 can receive various types of data input by the user of system 3000, and includes a touchpad, keypad, keyboard, mouse and / or microphone.

[0229] Sensor 3430 can detect various types of physical quantities that can be obtained from outside the system 3000 and convert the detected physical quantities into electrical signals. Sensor 3430 may include temperature sensors, pressure sensors, illuminance sensors, position sensors, acceleration sensors, biosensors, and / or gyroscope sensors.

[0230] The communication device 3440 can send and receive signals between other devices outside the system 3000 according to various communication protocols. The communication device 3440 may include an antenna, a transceiver, and / or a modem.

[0231] The display 3450 and speaker 3460 can be used as output devices for a user configured to output visual and auditory information to the system 3000, respectively.

[0232] The power supply unit 3470 can appropriately convert the power supplied from the battery and / or external power source embedded in the system 3000 and supply the converted power to each component of the system 3000.

[0233] The connection interface 3480 provides connectivity between the system 3000 and external devices, allowing the external devices to connect to the system 3000 and send and receive data from the system 3000. The connection interface 3480 can be implemented using various interface schemes, such as ATA, SATA, e-SATA, SCSI, SAS, PCI, PCIe, NVMe, IEEE 1394, USB, Secure Digital (SD) card interface, Multimedia Card (MMC) interface, eMMC interface, UFS interface, Embedded UFS (eUFS) interface, and Compact Flash (CF) card interface.

[0234] According to one or more embodiments, the main processor 3100 may be a reference Figures 1 to 18 The storage management system 1100 is described. Storage devices 3300a and 3300b can be referenced. Figures 1 to 18 The first storage device 1200_1 and the second storage device 1200_2 are described. Memory devices 3200a and 3200b may be referenced. Figures 1 to 18 The first memory device 1300_1 and the second memory device 1300_2, or the first CXL memory device 1400_1 and the second CXL memory device 1400_2, are described. System 3000 may be based on reference... Figures 1 to 18 The methods described are used to perform resource allocation and resource reallocation operations.

[0235] Figure 20 This is a diagram of a data center 4000 of an application memory device according to one or more embodiments.

[0236] Reference Figure 20 Data center 4000 can be a facility that collects and provides services for various types of data, and is referred to as a data storage center. Data center 4000 can be a system for operating search engines and databases, and can be a computing system used by a company (such as a bank) or government agency. Data center 4000 may include application servers 4100 to 4100n and storage servers 4200 to 4200m. The number of application servers 4100 to 4100n and the number of storage servers 4200 to 4200m may be selected differently depending on the embodiment. The number of application servers 4100 to 4100n may differ from the number of storage servers 4200 to 4200m. For example, storage servers 4200 to 4200m may include switches 4230 to 4230m, network interconnect (NIC) 4240 to 4240m, DRAM 4253 to 4253m, and controllers (CTRL) 4251 to 4251m, etc.

[0237] Application server 4100 or storage server 4200 may include at least one of processors 4110 and 4210 and memories 4120 and 4220. Storage server 4200 will now be described as an example. Processor 4210 may control all operations of storage server 4200, access memory 4220, and execute instructions and / or data loaded in memory 4220. Memory 4220 may be dual data rate synchronous DRAM (DDR SDRAM), high bandwidth memory (HBM), hybrid memory cube (HMC), dual in-line memory module (DIMM), Optane DIMM, and / or non-volatile DIMM (NVMDIMM). In one or more embodiments, the number of processors 4210 and memory 4220 included in storage server 4200 may be selected differently. In one or more embodiments, processors 4210 and memory 4220 may provide a processor-memory pair. In one or more embodiments, the number of processors 4210 may differ from the number of memories 4220. Processor 4210 may include a single-core processor or a multi-core processor. The above description of storage server 4200 can be similarly applied to application server 4100. In one or more embodiments, application server 4100 may not include storage device 4150. Storage server 4200 may include at least one storage device 4250. The number of storage devices 4250 included in storage server 4200 may be selected differently depending on the embodiment.

[0238] Application servers 4100 to 4100n can communicate with storage servers 4200 to 4200m via network 4300. Network 4300 can be implemented using Fibre Channel (FC) or Ethernet. In this case, FC can be the medium for relatively high-speed data transmission, and an optical switch with high performance and high availability can be used. Storage servers 4200 to 4200m can be configured as file storage devices, block storage devices, or object storage devices depending on the access method of network 4300.

[0239] In one or more embodiments, network 4300 may be a storage-specific network (such as a storage area network (SAN)). For example, the SAN may be an FC-SAN, which uses an FC network and is implemented according to the FC protocol (FCP). As another example, the SAN may be an Internet Protocol (IP)-SAN, which uses a Transmission Control Protocol (TCP) / IP network and is implemented according to the SCSI over TCP / IP or Internet SCSI (iSCSI) protocol. In another embodiment, network 4300 may be a general-purpose network (such as a TCP / IP network). For example, network 4300 may be implemented according to protocols such as Ethernet FC (FCoE), Network Attached Storage (NAS), and NVMe-oF.

[0240] The following text will primarily describe application server 4100 and storage server 4200. The description of application server 4100 can be applied to another application server 4100n, and the description of storage server 4200 can be applied to another storage server 4200m.

[0241] Application server 4100 can store data requested by users or clients in one of storage servers 4200 to 4200m via network 4300. Furthermore, application server 4100 can retrieve data requested by users or clients from one of storage servers 4200 to 4200m via network 4300. For example, application server 4100 can be implemented as a web server or a database management system (DBMS).

[0242] Application server 4100 can access memory 4120n or storage device 4150n included in another application server 4100n via network 4300. Optionally, application server 4100 can access memory 4220 to 4220m or storage device 4250 to 4250m included in storage servers 4200 to 4200m via network 4300. Therefore, application server 4100 can perform various operations on data stored in application servers 4100 to 4100n and / or storage servers 4200 to 4200m. For example, application server 4100 can execute instructions for moving or copying data between application servers 4100 to 4100n and / or storage servers 4200 to 4200m. In this scenario, data can be moved directly from storage devices 4250 to 4250m of storage servers 4200 to 4200m to storage devices 4120 to 4120n of application servers 4100 to 4100n, or via storage devices 4220 to 4220m of storage servers 4200 to 4200m to storage devices 4120 to 4120n of application servers 4100 to 4100n. Data moved over network 4300 can be encrypted for security or privacy purposes.

[0243] Storage server 4200 will now be described as an example. Interface 4254 provides physical connectivity between processor 4210 and controller 4251, as well as physical connectivity between network interconnect (NIC) 4240 and controller 4251. For example, interface 4254 can be implemented using a direct-attached storage (DAS) scheme in which storage device 4250 is directly connected to a dedicated cable. For example, interface 4254 can be implemented using various interface schemes, such as ATA, SATA, e-SATA, SCSI, SAS, PCI, PCIe, NVMe, IEEE1394, USB interface, SD card interface, MMC interface, eMMC interface, UFS interface, eUFS interface, and / or CF card interface.

[0244] Storage server 4200 may also include switch 4230 and NIC (Network Interconnect) 4240. Switch 4230 may selectively connect processor 4210 to storage device 4250 or selectively connect NIC 4240 to storage device 4250 via the control of processor 4210. Similarly, application servers 4100 to 4100n may include switches 4130 to 4130n, which may selectively connect processor 4110 to 4110n to storage devices 4150 to 4150n or selectively connect NIC 4140 to 4140n to storage devices 4150 to 4150n via the control of processor 4110 to 4110n.

[0245] In one or more embodiments, NIC 4240 may include a network interface card and a network adapter. NIC 4240 can be connected to network 4300 via a wired interface, a wireless interface, a Bluetooth interface, or an optical interface. NIC 4240 may include internal memory, a digital signal processor (DSP), and a host bus interface, and is connected to processor 4210 and / or switch 4230 via the host bus interface. The host bus interface may be implemented as one of the above examples of interface 4254. In one or more embodiments, NIC 4240 may be integrated with at least one of processor 4210, switch 4230, and storage device 4250.

[0246] In storage servers 4200 to 4200m or application servers 4100 to 4100n, the processor can send commands to storage devices 4150 to 4150n and 4250 to 4250m or memories 4120 to 4120n and 4220 to 4220m, and program or read data. In this case, the data may be data for which errors have been corrected by an ECC engine. This data may be data for which a Data Bus Inversion (DBI) operation or a Data Masking (DM) operation has been performed, and may include Cyclic Redundancy Check (CRC) information. The data may be encrypted for security or privacy purposes.

[0247] Storage devices 4150 to 4150n and 4250 to 4250m can send control signals and command / address signals to NAND flash memory devices 4252 to 4252m in response to a read command received from the processor. Therefore, when reading data from NAND flash memory devices 4252 to 4252m, a read enable (RE) signal can be input as a data output control signal, thus allowing data to be output to the DQ bus. The RE signal can be used to generate a data strobe signal DQS. Command and address signals can be latched in page buffers based on the rising or falling edge of the write enable (WE) signal.

[0248] Controller 4251 controls all operations of storage device 4250. In one or more embodiments, controller 4251 may include SRAM. Controller 4251 may write data to NAND flash memory device 4252 in response to a write command, or read data from NAND flash memory device 4252 in response to a read command. For example, write and / or read commands may be provided from processor 4210 of storage server 4200, processor 4210m of another storage server 4200m, or processors 4110 and 4110n of application servers 4100 and 4100n. DRAM 4253 may temporarily store (or buffer) data to be written to or read from NAND flash memory device 4252. In addition, DRAM 4253 may store metadata. Here, metadata may be user data or data generated by controller 4251 for managing NAND flash memory device 4252. Storage device 4250 may include a security element (SE) for security or privacy.

[0249] According to one or more embodiments, storage servers 4200 to 4200m may include references Figures 1 to 18 The SLA Manager 1110 described, or the executable reference Figures 1 to 18 The resource allocation and reallocation operations are described. Storage server 4200 to 4200m can dynamically manage resources based on the SLA level of each of multiple virtual machines. Therefore, the performance and stability of storage server 4200 to 4200m can be improved.

[0250] As used herein, components such as “processor” or “controller” can be implemented as digital signal processors (DSPs), microprocessors, and timing controllers (TCONs) that process digital signals. However, the disclosure is not limited thereto, and the processors and controllers described herein may include one or more of a central processing unit (CPU), a microcontroller unit (MCU), a microprocessor (MPU), a controller, an application processor (AP), a graphics processing unit (GPU) or a communication processor (CP), and an advanced reduced instruction set computer (RISC) machine (ARM) processor, or as defined by these terms. Furthermore, the processors or controllers described herein may be implemented as system-on-a-chip (SoC) or large-scale integration (LSI) with processing algorithms stored therein, or as a field-programmable gate array (FPGA). The processors or controllers described herein can perform various functions by executing computer-executable instructions stored in memory.

[0251] Including, such as Figures 1 to 4 , Figures 10 to 13B , Figures 14B to 15B as well as Figures 18 to 20 In the embodiments described above with reference to the accompanying drawings, at least one of the components, elements, modules, units, etc. (collectively referred to as "components" in this paragraph) represented by blocks or equivalent indications (collectively referred to as "blocks") (e.g., servers, management systems, managers, memories, storage devices, buffers, controllers, SLA analyzers, resource allocators, SLA monitors, workload analyzers, and resource history storage devices, etc.) can perform one or more of the functions described above. These blocks can be physically implemented by analog and / or digital circuitry (such as logic gates, integrated circuits, microprocessors, microcontrollers, memory circuits, passive electronic components, active electronic components, optical components, hardwired circuitry, etc.) and can optionally be driven by firmware. The circuitry can be implemented, for example, in one or more semiconductor chips or on a substrate support (such as a printed circuit board, etc.). The circuitry constituting a block can be implemented by dedicated hardware, or by a processor (e.g., one or more programmed microprocessors and associated circuitry), or by a combination of dedicated hardware performing some functions of the block and a processor performing other functions of the block. Without departing from the scope of disclosure, each block of the embodiments can be physically divided into two or more interacting and discrete blocks. Similarly, without departing from the scope of disclosure, the blocks of the embodiments can be physically combined into more complex blocks.

[0252] While the disclosure has been specifically shown and described with reference to exemplary embodiments thereof, it will be understood that various changes in form and detail may be made therein without departing from the spirit and scope of the appended claims.

Claims

1. A storage server, comprising: A storage device includes a storage controller, a non-volatile memory device, and a storage device memory storing one or more storage device instructions, wherein the storage controller is configured to execute the one or more storage device instructions and cause the storage device to provide virtual functionality; Memory device, including host memory buffers managed by the memory device; A shared memory device is configured to communicate with a memory device and a memory management system; Compute a fast-link CXL memory device, configured to communicate with the memory device and memory management system based on the CXL.mem protocol; and A storage management system includes a system memory storing one or more system instructions and at least one system processor configured to execute the one or more system instructions, wherein the one or more system instructions, when executed by the at least one system processor, cause the storage management system to: Receive Service Level Agreement (SLA) information from each of multiple virtual machines; Receive attribute information from the storage device; Analyze SLA and attribute information, and generate analysis results; Based on the analysis results, internal or external memory resources will be allocated to virtual functions; and Monitoring SLA violations for virtual functions The internal memory resources include at least a portion of the storage device memory, and the external memory resources include at least a portion of one or more of the CXL memory device, the shared memory device, and the host memory buffer of the memory device.

2. The storage server as described in claim 1, wherein, Metadata corresponding to virtual functions is stored in internal and external memory resources.

3. The storage server as described in claim 1, wherein, When executed by the at least one system processor, the one or more system instructions also cause the storage management system to generate a resource allocation map, which includes a mapping between user identifiers corresponding to virtual functions and the types of allocated memory resources.

4. The storage server as described in claim 1, wherein, When executed by the at least one system processor, the one or more system instructions also cause the memory management system to: Monitor the input and output between the virtual machines and the storage devices in the plurality of virtual machines; Extracting workload characteristics; and Based on the analysis results and workload characteristics, internal or external memory resources are allocated to virtual functions.

5. The storage server as described in claim 1, wherein, When executed by the at least one system processor, the one or more system instructions cause the memory management system to: The status of the storage device's memory, memory device, shared memory device, and CXL memory device is monitored, and based on the monitoring of the status, status information of internal memory resources and external memory resources is generated. Based on the analysis results and status information, internal or external memory resources are allocated to virtual functions.

6. The storage server as described in claim 1, wherein, The system memory stores one or more historical resource allocation maps, and When the one or more system instructions are executed by the at least one system processor, the storage management system searches and analyzes the resource allocation map corresponding to the results in the one or more historical resource allocation maps.

7. The storage server as described in claim 1, wherein, Attribute information includes the number of input or output operations per second, performance, throughput, and quality of service.

8. A method of operating a storage server, the storage server comprising a storage management system, a storage device, a memory device, a shared memory device, and a compute-fast-link (CXL) memory device, the method comprising: Service Level Agreement (SLA) information is received from each of multiple virtual machines through the storage management system; The storage device's attribute information is sent to the storage management system via the storage device. The storage management system allocates internal or external storage resources to one or more virtual functions based on SLA and attribute information. as well as The storage management system monitors SLA violations for each of the multiple virtual functions. The storage device includes a storage controller, a storage device memory storing one or more storage device instructions, and a non-volatile memory device. The storage controller is configured to execute one or more storage device instructions and cause the storage device to provide the plurality of virtual functions, and The internal memory resources include at least a portion of the memory of the storage device, and the external memory resources include at least a portion of one or more of the host memory buffer, shared memory device, and CXL memory device of the storage device.

9. The method of claim 8, wherein, The steps of allocating internal or external storage resources to one or more of the plurality of virtual functions through a storage management system based on SLA information and attribute information include: The storage management system analyzes SLA and attribute information and generates analysis results. The storage management system obtains the status information of internal and external storage resources. Resource allocation mappings are generated based on analysis results and status information through the storage management system. The storage management system sends resource change information, including resource allocation mappings, to the storage device; and The storage device allocates storage resources to one or more of the plurality of virtual functions based on resource change information, and stores metadata in the allocated storage resources.

10. The method of claim 9, further comprising: After sending the resource change information to the storage device, restart the storage server; as well as After the metadata is moved, the storage server is allowed to perform normal operations.

11. The method of claim 8, wherein, The steps for monitoring SLA violations for each of the multiple virtual functions through the storage management system include: Based on the monitoring results, virtual machines with SLA violations were detected among the multiple virtual machines; and Perform a resource reallocation operation on the virtual function corresponding to the detected virtual machine among the multiple virtual functions.

12. The method of claim 11, wherein, The steps for performing a resource reallocation operation include: The resource allocation mapping is updated based on at least one of the following: SLA information, attribute information, status information of internal memory resources, status information of external memory resources, and workload characteristics. Send resource change information, including the updated resource allocation mapping, to the storage device; and Based on resource change information, memory resources are allocated to virtual functions corresponding to the detected virtual machines, and metadata is stored in the allocated memory resources.

13. The method of claim 8, wherein, The steps of allocating internal or external storage resources to one or more of the plurality of virtual functions through a storage management system based on SLA information and attribute information include: Based on the analysis results, search for resource allocation mappings in the resource history storage device; Based on the discovery of the resource allocation map, internal or external memory resources are allocated to one or more of the plurality of virtual functions; and Since the resource allocation map was not found, a resource allocation map was generated based on SLA information, attribute information, status information of internal memory resources, and status information of external memory resources.

14. The method of claim 8, wherein, The steps of allocating internal or external storage resources to one or more of the plurality of virtual functions through a storage management system based on SLA information and attribute information include: Obtain workload characteristics; and Based on workload characteristics, SLA information, and attribute information, internal or external memory resources are allocated to one or more of the plurality of virtual functions.

15. The method of claim 8, wherein, The steps of allocating internal or external storage resources to one or more of the plurality of virtual functions through a storage management system based on SLA information and attribute information include: The optimal resource allocation map is generated using a machine learning model based on input data including SLA information, attribute information, and status information of internal and external memory resources; and Based on the optimal resource allocation mapping, internal memory resources or external memory resources are allocated to one or more of the plurality of virtual functions.

16. A storage system, comprising: A storage server includes: a storage management system including a system memory storing one or more system instructions and at least one system processor configured to execute the one or more system instructions; a storage device including a storage device memory storing one or more storage device instructions, a storage controller configured to execute the one or more storage device instructions, and a non-volatile memory device; a memory device; a shared memory device; and a compute fast link (CXL) memory device; and A client server includes: a client server memory storing one or more client server instructions; and at least one client server processor configured to execute the one or more client server instructions. Wherein, the one or more storage device instructions, when executed by the storage controller, cause the storage device to provide virtual functions. Wherein, when the one or more client server instructions are executed by the at least one client server processor, the client server: Operating multiple virtual machines; and Service Level Agreement (SLA) information for each of the plurality of virtual machines is sent to the storage server. Wherein, the one or more system instructions, when executed by the at least one system processor, cause the memory management system to: Receive SLA information from the client server; Receive attribute information from the storage device; Based on SLA and attribute information, internal or external memory resources are allocated to virtual functions; and Monitoring SLA violations for virtual functions, and The internal memory resources include at least a portion of the memory of the storage device, and the external memory resources include at least a portion of one or more of the host memory buffer, shared memory device, and CXL memory device of the storage device.

17. The storage system of claim 16, wherein, When executed by the at least one system processor, the one or more system instructions cause the memory management system to: Obtain status information of the storage devices (memory, host memory buffer, shared memory, and CXL memory); and Based on status information, SLA information, and attribute information, a resource allocation mapping is generated.

18. The storage system of claim 17, wherein, When executed by the at least one system processor, the one or more system instructions cause the memory management system to: Resource change information is generated based on resource allocation mapping; as well as Send information about changes to resources to the storage device.

19. The storage system of claim 18, wherein, When executed by the at least one system processor, the one or more system instructions cause the storage management system to send resource change information to the storage device by setting a characteristic command.

20. The storage system of claim 18, wherein, When executed by the storage controller, the one or more storage device instructions cause the storage device to: store metadata in a host memory buffer, a shared memory device, or a CXL memory device based on resource change information.