KR20230165571A - Method and system for providing volume to container environment - Google Patents

Method and system for providing volume to container environment Download PDF

Info

Publication number
KR20230165571A
KR20230165571A KR1020220065509A KR20220065509A KR20230165571A KR 20230165571 A KR20230165571 A KR 20230165571A KR 1020220065509 A KR1020220065509 A KR 1020220065509A KR 20220065509 A KR20220065509 A KR 20220065509A KR 20230165571 A KR20230165571 A KR 20230165571A
Authority
KR
South Korea
Prior art keywords
volume
node
client
request
target
Prior art date
Application number
KR1020220065509A
Other languages
Korean (ko)
Inventor
김태욱
오용석
연제성
이은재
송동수
Original Assignee
라인플러스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 라인플러스 주식회사 filed Critical 라인플러스 주식회사
Priority to KR1020220065509A priority Critical patent/KR20230165571A/en
Priority to JP2023080323A priority patent/JP2023174559A/en
Publication of KR20230165571A publication Critical patent/KR20230165571A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Abstract

컨테이너 환경에 볼륨을 제공하기 위한 방법 및 시스템을 개시한다. 일실시예에 따른 볼륨 제공 방법은 컨테이너 환경의 클라이언트로부터 볼륨 생성 요청을 수신하는 단계, 상기 볼륨 생성 요청에 따라 볼륨의 메타데이터를 데이터베이스에 저장하는 단계, 상기 볼륨을 생성할 상기 백엔드 스토리지의 볼륨 노드를 스케줄링하는 단계 및 상기 스케줄링을 통해 선정된 볼륨 노드로 상기 볼륨에 대응하는 논리적 볼륨(Logical Volume, LV)의 생성을 요청하는 단계를 포함할 수 있다.Disclosed is a method and system for providing volumes in a container environment. A volume provision method according to an embodiment includes receiving a volume creation request from a client in a container environment, storing metadata of the volume in a database according to the volume creation request, and a volume node of the backend storage to create the volume. It may include the step of scheduling and requesting the creation of a logical volume (Logical Volume, LV) corresponding to the volume to the volume node selected through the scheduling.

Description

컨테이너 환경에 볼륨을 제공하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR PROVIDING VOLUME TO CONTAINER ENVIRONMENT}Method and system for providing volume to a container environment {METHOD AND SYSTEM FOR PROVIDING VOLUME TO CONTAINER ENVIRONMENT}

아래의 설명은 컨테이너 환경에 볼륨을 제공하기 위한 방법 및 시스템에 관한 것이다.The description below relates to a method and system for providing volumes in a container environment.

로컬 컴퓨팅 환경에서는 CPU(Central Processing Unit)나 메모리 등이 SATA(Serial Advanced Technology Attachment) 프로토콜을 통해 SATA SSD(solid State Drive)와 입출력을 수행하거나 NVMe(Non Volatile Memory express) 프로토콜을 통해 NVMe SSD와 입출력을 수행하는 등 각자의 통신 규격을 통해 스토리지와 통신을 처리할 수 있다.In a local computing environment, a CPU (Central Processing Unit) or memory performs input/output with a SATA SSD (solid state drive) through the SATA (Serial Advanced Technology Attachment) protocol, or input/output with an NVMe SSD through the NVMe (Non Volatile Memory express) protocol. Storage and communication can be handled through each communication standard, such as performing .

반면, 클라이언트-서버 환경에서 서버의 NVMe SSD를 클라이언트가 이용하고자 하는 경우, 클라이언트가 네트워크를 통해 서버의 NVMe SSD에 NVMe 프로토콜로 접근할 수 있도록 하기 위한 NVMe oF(NVMe over Fabrics) 기술이 존재한다.On the other hand, when a client wants to use the server's NVMe SSD in a client-server environment, NVMe oF (NVMe over Fabrics) technology exists to allow the client to access the server's NVMe SSD through the NVMe protocol through the network.

[선행문헌번호] [Prior document number]

한국공개특허 제2019-0106680호Korean Patent Publication No. 2019-0106680

클라이언트-서버 환경에서 클라이언트가 서버의 스토리지를 사용할 수 있도록 서버에서 클라이언트로 볼륨을 제공할 수 있는 볼륨 제공 방법 및 시스템을 제공한다.Provides a volume provision method and system that can provide a volume from a server to a client so that the client can use the server's storage in a client-server environment.

백엔드 스토리지를 구현하는 컴퓨터 장치의 볼륨 제공 방법에 있어서, 상기 컴퓨터 장치가 포함하는 적어도 하나의 프로세서에 의해, 컨테이너 환경의 클라이언트로부터 볼륨 생성 요청을 수신하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 볼륨 생성 요청에 따라 볼륨의 메타데이터를 데이터베이스에 저장하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 볼륨을 생성할 상기 백엔드 스토리지의 볼륨 노드를 스케줄링하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 스케줄링을 통해 선정된 볼륨 노드로 상기 볼륨에 대응하는 논리적 볼륨(Logical Volume, LV)의 생성을 요청하는 단계를 포함하는 볼륨 제공 방법을 제공한다.A volume provision method of a computer device implementing backend storage, comprising: receiving a volume creation request from a client in a container environment by at least one processor included in the computer device; storing volume metadata in a database according to the volume creation request, by the at least one processor; scheduling, by the at least one processor, a volume node of the backend storage to create the volume; and requesting, by the at least one processor, the creation of a logical volume (LV) corresponding to the volume to a volume node selected through the scheduling.

일측에 따르면, 상기 볼륨 생성 요청은 상기 클라이언트에서 PVC(Persistence Volume Claim)가 생성됨에 따른 상기 클라이언트의 API 호출에 의해 수신되는 것을 특징으로 할 수 있다.According to one side, the volume creation request may be received through an API call from the client as a Persistence Volume Claim (PVC) is created in the client.

다른 측면에 따르면, 상기 스케줄링하는 단계는, 스케줄링 알고리즘에 따라 상기 볼륨 노드를 스케줄링하는 모듈을 호출 한 후, 상기 선정된 볼륨 노드로부터의 응답과 무관하게 상기 볼륨 생성 요청에 대한 응답을 상기 클라이언트로 전달하는 단계; 및 상기 호출된 모듈을 이용한 상기 스케줄링을 통해 복수의 볼륨 노드들 중 하나의 볼륨 노드를 선정하는 단계를 포함하는 것을 특징으로 할 수 있다.According to another aspect, the scheduling step includes calling a module for scheduling the volume node according to a scheduling algorithm and then transmitting a response to the volume creation request to the client regardless of the response from the selected volume node. steps; and selecting one volume node among a plurality of volume nodes through the scheduling using the called module.

또 다른 측면에 따르면, 상기 클라이언트로 전달된 응답에 기초하여 상기 클라이언트에서 볼륨을 관리하는 PV(Persistence Volume)가 생성되어 상기 볼륨 생성 요청을 유발한 PVC와 바인딩되는 것을 특징으로 할 수 있다.According to another aspect, a Persistence Volume (PV) that manages the volume in the client may be created based on the response delivered to the client and bound to the PVC that triggered the volume creation request.

또 다른 측면에 따르면, 상기 선정된 볼륨 노드로의 요청에 따라 상기 선정된 볼륨 노드에서 상기 볼륨에 대응하는 논리적 볼륨이 생성되는 것을 특징으로 할 수 있다.According to another aspect, a logical volume corresponding to the volume may be created in the selected volume node according to a request to the selected volume node.

또 다른 측면에 따르면, 상기 볼륨 제공 방법은 상기 적어도 하나의 프로세서에 의해, 상기 클라이언트로부터 볼륨 삭제 요청을 수신하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 볼륨 삭제 요청을 메시지 큐를 통해 상기 선정된 볼륨 노드로 전달하는 단계를 더 포함할 수 있다.According to another aspect, the volume providing method includes receiving, by the at least one processor, a volume deletion request from the client; and transmitting, by the at least one processor, the volume deletion request to the selected volume node through a message queue.

또 다른 측면에 따르면, 상기 볼륨 삭제 요청에 따라 상기 선정된 볼륨 노드에서 대응하는 논리적 볼륨이 삭제되는 것을 특징으로 할 수 있다.According to another aspect, the corresponding logical volume may be deleted from the selected volume node in response to the volume deletion request.

백엔드 스토리지를 구현하는 컴퓨터 장치의 볼륨 제공 방법에 있어서, 상기 컴퓨터 장치가 포함하는 적어도 하나의 프로세서에 의해, 컨테이너 환경의 클라이언트로부터 볼륨 익스포트 요청을 수신하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 볼륨 익스포트 요청에 따라 대응하는 볼륨을 관리하는 볼륨 노드로 타겟의 생성 및 익스포트를 요청하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 볼륨 노드로부터 익스포트된 타겟의 정보를 수신하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 수신된 타겟의 정보를 상기 클라이언트로 전달하는 단계를 포함하는 볼륨 제공 방법을 제공한다.A volume provision method of a computer device implementing backend storage, comprising: receiving a volume export request from a client in a container environment by at least one processor included in the computer device; Requesting, by the at least one processor, creation and export of a target to a volume node that manages a corresponding volume according to the volume export request; Receiving, by the at least one processor, information on a target exported from the volume node; and transmitting, by the at least one processor, the received target information to the client.

일측에 따르면, 상기 볼륨 익스포트 요청은 상기 클라이언트에서 파드(Pod)가 생성됨에 따른 상기 클라이언트의 API 호출에 의해 수신되는 것을 특징으로 할 수 있다.According to one side, the volume export request may be received through an API call from the client as a pod is created in the client.

다른 측면에 따르면, 상기 타겟의 생성 및 익스포트 요청에 응답하여 상기 볼륨 노드에서 상기 볼륨 노드에 생성된 논리적 볼륨에 대응하는 타겟이 생성 및 익스포트되고, 상기 생성된 타겟의 정보가 상기 컴퓨터 장치로 전달되는 것을 특징으로 할 수 있다.According to another aspect, in response to a request for creation and export of the target, a target corresponding to the logical volume created in the volume node is created and exported at the volume node, and information on the created target is transmitted to the computer device. It can be characterized as:

또 다른 측면에 따르면, 상기 타겟의 정보는 상기 볼륨 노드로서의 호스트의 IP, 포트 및 상기 타겟의 식별자를 포함하는 것을 특징으로 할 수 있다.According to another aspect, the information on the target may include the IP of the host as the volume node, the port, and the identifier of the target.

또 다른 측면에 따르면, 상기 타겟의 정보에 기반하여 상기 클라이언트에서 상기 타겟에 접근함으로써 상기 타겟이 상기 클라이언트의 블록 디바이스에 맵핑되고, 상기 클라이언트에서 생성된 파드가 상기 블록 디바이스에 바인딩되어 상기 타겟에 대응하는 상기 볼륨 노드의 논리적 볼륨에 접근 가능해지는 것을 특징으로 할 수 있다.According to another aspect, the target is mapped to the block device of the client by accessing the target from the client based on the information of the target, and the pod created in the client is bound to the block device and corresponds to the target. It may be characterized in that the logical volume of the volume node becomes accessible.

또 다른 측면에 따르면, 상기 볼륨 제공 방법은 상기 적어도 하나의 프로세서에 의해, 상기 클라이언트로부터 익스포트 제거 요청을 수신하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 익스포트 제거 요청을 메시지 큐를 통해 상기 볼륨 노드로 전달하는 단계를 더 포함할 수 있다.According to another aspect, the volume providing method includes receiving, by the at least one processor, an export removal request from the client; and transmitting, by the at least one processor, the export removal request to the volume node through a message queue.

또 다른 측면에 따르면, 상기 익스포트 제거 요청에 따라 상기 볼륨 노드에서 상기 타겟을 제거하는 것을 특징으로 할 수 있다.According to another aspect, the target may be removed from the volume node according to the export removal request.

컴퓨터 장치와 결합되어 상기 방법을 컴퓨터 장치에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램을 제공한다.A computer program stored on a computer-readable recording medium is provided in conjunction with a computer device to execute the method on the computer device.

상기 방법을 컴퓨터 장치에 실행시키기 위한 프로그램이 기록되어 있는 컴퓨터 판독 가능한 기록매체를 제공한다.Provided is a computer-readable recording medium on which a program for executing the above method on a computer device is recorded.

컴퓨터 장치에 있어서, 상기 컴퓨터 장치에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서에 의해, 컨테이너 환경의 클라이언트로부터 볼륨 생성 요청을 수신하는 단계; 상기 볼륨 생성 요청에 따라 볼륨의 메타데이터를 데이터베이스에 저장하는 단계; 상기 볼륨을 생성할 상기 백엔드 스토리지의 볼륨 노드를 스케줄링하는 단계; 및 상기 스케줄링을 통해 선정된 볼륨 노드로 상기 볼륨에 대응하는 논리적 볼륨(Logical Volume, LV)의 생성을 요청하는 것을 특징으로 하는 컴퓨터 장치를 제공한다.A computer device comprising: at least one processor configured to execute instructions readable by the computer device, the method comprising: receiving, by the at least one processor, a volume creation request from a client in a container environment; storing volume metadata in a database according to the volume creation request; Scheduling a volume node of the backend storage to create the volume; and requesting the creation of a logical volume (LV) corresponding to the volume to a volume node selected through the scheduling.

컴퓨터 장치에 있어서, 상기 컴퓨터 장치에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서에 의해, 컨테이너 환경의 클라이언트로부터 볼륨 익스포트 요청을 수신하고, 상기 볼륨 익스포트 요청에 따라 대응하는 볼륨을 관리하는 볼륨 노드로 타겟의 생성 및 익스포트를 요청하고, 상기 볼륨 노드로부터 익스포트된 타겟의 정보를 수신하고, 상기 수신된 타겟의 정보를 상기 클라이언트로 전달하는 것을 특징으로 하는 컴퓨터 장치를 제공한다.A computer device, comprising: at least one processor configured to execute instructions readable by the computer device; receiving, by the at least one processor, a volume export request from a client in a container environment; and responding to the volume export request. A computer device that requests the creation and export of a target to a volume node that manages the corresponding volume, receives information on the exported target from the volume node, and delivers the received target information to the client. provides.

클라이언트-서버 환경에서 클라이언트가 서버의 스토리지를 사용할 수 있도록 서버에서 클라이언트로 볼륨을 제공할 수 있다.In a client-server environment, volumes can be provided from the server to the clients so that the clients can use the server's storage.

도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다.
도 3은 본 발명의 일실시예에 따른 클라우드 스토리지 환경의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 있어서, 볼륨 생성의 과정의 예를 도시한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 볼륨 어태치먼트의 과정의 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 있어서, 볼륨 디태치먼트의 과정의 예를 도시한 도면이다.
도 7은 본 발명의 일실시예에 있어서, 볼륨 삭제의 과정의 예를 도시한 도면이다.
도 8은 본 발명의 일실시예에 있어서, 백엔드 스토리지 관점에서의 볼륨 생성의 과정의 예를 도시한 도면이다.
도 9는 본 발명의 일실시예에 있어서, 백엔드 스토리지 관점에서의 볼륨 어태치먼트의 과정의 예를 도시한 도면이다.
도 10은 본 발명의 일실시예에 있어서, 백엔드 스토리지 관점에서의 볼륨 디태치먼트의 과정의 예를 도시한 도면이다.
도 11은 본 발명의 일실시예에 있어서, 백엔드 스토리지 관점에서의 볼륨 삭제의 과정의 예를 도시한 도면이다.
1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention.
Figure 2 is a block diagram showing an example of a computer device according to an embodiment of the present invention.
Figure 3 is a diagram illustrating an example of a cloud storage environment according to an embodiment of the present invention.
Figure 4 is a diagram illustrating an example of a volume creation process according to an embodiment of the present invention.
Figure 5 is a diagram showing an example of a volume attachment process in one embodiment of the present invention.
Figure 6 is a diagram illustrating an example of a volume detachment process in one embodiment of the present invention.
Figure 7 is a diagram illustrating an example of a volume deletion process according to an embodiment of the present invention.
Figure 8 is a diagram illustrating an example of a volume creation process from a back-end storage perspective, according to an embodiment of the present invention.
Figure 9 is a diagram illustrating an example of a volume attachment process from a back-end storage perspective, according to an embodiment of the present invention.
Figure 10 is a diagram illustrating an example of a volume detachment process from a back-end storage perspective, according to an embodiment of the present invention.
Figure 11 is a diagram illustrating an example of a volume deletion process from a back-end storage perspective, according to an embodiment of the present invention.

이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings.

본 발명의 실시예들에 따른 볼륨 제공 시스템은 적어도 하나의 컴퓨터 장치에 의해 구현될 수 있다. 이때, 컴퓨터 장치에는 본 발명의 일실시예에 따른 컴퓨터 프로그램이 설치 및 구동될 수 있고, 컴퓨터 장치는 구동된 컴퓨터 프로그램의 제어에 따라 본 발명의 실시예들에 따른 볼륨 제공 방법을 수행할 수 있다. 상술한 컴퓨터 프로그램은 컴퓨터 장치와 결합되어 볼륨 제공 방법을 컴퓨터에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장될 수 있다.The volume provision system according to embodiments of the present invention may be implemented by at least one computer device. At this time, the computer program according to an embodiment of the present invention may be installed and driven in the computer device, and the computer device may perform the volume provision method according to the embodiment of the present invention under the control of the driven computer program. . The above-described computer program can be combined with a computer device and stored on a computer-readable recording medium to enable the computer to execute the volume provision method.

도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다. 또한, 도 1의 네트워크 환경은 본 실시예들에 적용 가능한 환경들 중 하나의 예를 설명하는 것일 뿐, 본 실시예들에 적용 가능한 환경이 도 1의 네트워크 환경으로 한정되는 것은 아니다.1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention. The network environment in FIG. 1 shows an example including a plurality of electronic devices 110, 120, 130, and 140, a plurality of servers 150 and 160, and a network 170. Figure 1 is an example for explaining the invention, and the number of electronic devices or servers is not limited as in Figure 1. In addition, the network environment in FIG. 1 only explains one example of environments applicable to the present embodiments, and the environment applicable to the present embodiments is not limited to the network environment in FIG. 1.

복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 도 1에서는 전자 기기(110)의 예로 스마트폰의 형상을 나타내고 있으나, 본 발명의 실시예들에서 전자 기기(110)는 실질적으로 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있는 다양한 물리적인 컴퓨터 장치들 중 하나를 의미할 수 있다.The plurality of electronic devices 110, 120, 130, and 140 may be fixed terminals or mobile terminals implemented as computer devices. Examples of the plurality of electronic devices 110, 120, 130, and 140 include smart phones, mobile phones, navigation devices, computers, laptops, digital broadcasting terminals, PDAs (Personal Digital Assistants), and PMPs (Portable Multimedia Players). ), tablet PC, etc. For example, in FIG. 1, the shape of a smartphone is shown as an example of the electronic device 110. However, in embodiments of the present invention, the electronic device 110 actually communicates with other devices through the network 170 using a wireless or wired communication method. It may refer to one of various physical computer devices capable of communicating with electronic devices 120, 130, 140 and/or servers 150, 160.

통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.The communication method is not limited, and may include not only a communication method utilizing a communication network that the network 170 may include (for example, a mobile communication network, wired Internet, wireless Internet, and a broadcast network), but also short-range wireless communication between devices. For example, the network 170 may include a personal area network (PAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), and a broadband network (BBN). , may include one or more arbitrary networks such as the Internet. Additionally, the network 170 may include any one or more of network topologies including a bus network, star network, ring network, mesh network, star-bus network, tree or hierarchical network, etc. Not limited.

서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 콘텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다. 예를 들어, 서버(150)는 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 서비스(일례로, 클라우드 서비스, 인스턴트 메시징 서비스, 거래(일례로, 송금) 서비스, 결제 서비스, 가상 거래소 서비스, 리스크 모니터링 서비스, 게임 서비스, 그룹 통화 서비스(또는 음성 컨퍼런스 서비스), 메시징 서비스, 메일 서비스, 소셜 네트워크 서비스, 지도 서비스, 번역 서비스, 검색 서비스 및/또는 콘텐츠 제공 서비스 등)를 제공하는 시스템일 수 있다.Each of the servers 150 and 160 is a computer device or a plurality of computers that communicate with a plurality of electronic devices 110, 120, 130, 140 and a network 170 to provide commands, codes, files, content, services, etc. It can be implemented with devices. For example, the server 150 provides services (e.g., cloud services, instant messaging services, transactions (e.g., remittance) to a plurality of electronic devices (110, 120, 130, and 140) connected through the network 170. ) services, payment services, virtual exchange services, risk monitoring services, gaming services, group call services (or voice conference services), messaging services, mail services, social network services, map services, translation services, search services and/or content provision. It may be a system that provides services, etc.).

도 2는 본 발명의 일실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다. 앞서 설명한 복수의 전자 기기들(110, 120, 130, 140) 각각이나 서버들(150, 160) 각각은 도 2를 통해 도시된 컴퓨터 장치(200)에 의해 구현될 수 있다.Figure 2 is a block diagram showing an example of a computer device according to an embodiment of the present invention. Each of the plurality of electronic devices 110, 120, 130, and 140 described above or each of the servers 150 and 160 may be implemented by the computer device 200 shown in FIG. 2.

이러한 컴퓨터 장치(200)는 도 2에 도시된 바와 같이, 메모리(210), 프로세서(220), 통신 인터페이스(230) 그리고 입출력 인터페이스(240)를 포함할 수 있다. 메모리(210)는 컴퓨터에서 판독 가능한 기록매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM과 디스크 드라이브와 같은 비소멸성 대용량 기록장치는 메모리(210)와는 구분되는 별도의 영구 저장 장치로서 컴퓨터 장치(200)에 포함될 수도 있다. 또한, 메모리(210)에는 운영체제와 적어도 하나의 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(210)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 메모리(210)로 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신 인터페이스(230)를 통해 메모리(210)에 로딩될 수도 있다. 예를 들어, 소프트웨어 구성요소들은 네트워크(170)를 통해 수신되는 파일들에 의해 설치되는 컴퓨터 프로그램에 기반하여 컴퓨터 장치(200)의 메모리(210)에 로딩될 수 있다.As shown in FIG. 2, this computer device 200 may include a memory 210, a processor 220, a communication interface 230, and an input/output interface 240. The memory 210 is a computer-readable recording medium and may include a non-permanent mass storage device such as random access memory (RAM), read only memory (ROM), and a disk drive. Here, non-perishable large-capacity recording devices such as ROM and disk drives may be included in the computer device 200 as a separate permanent storage device that is distinct from the memory 210. Additionally, an operating system and at least one program code may be stored in the memory 210. These software components may be loaded into the memory 210 from a computer-readable recording medium separate from the memory 210. Such separate computer-readable recording media may include computer-readable recording media such as floppy drives, disks, tapes, DVD/CD-ROM drives, and memory cards. In another embodiment, software components may be loaded into the memory 210 through the communication interface 230 rather than a computer-readable recording medium. For example, software components may be loaded into memory 210 of computer device 200 based on computer programs installed by files received over network 170.

프로세서(220)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(210) 또는 통신 인터페이스(230)에 의해 프로세서(220)로 제공될 수 있다. 예를 들어 프로세서(220)는 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.The processor 220 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input/output operations. Commands may be provided to the processor 220 by the memory 210 or the communication interface 230. For example, processor 220 may be configured to execute received instructions according to program code stored in a recording device such as memory 210.

통신 인터페이스(230)는 네트워크(170)를 통해 컴퓨터 장치(200)가 다른 장치(일례로, 앞서 설명한 저장 장치들)와 서로 통신하기 위한 기능을 제공할 수 있다. 일례로, 컴퓨터 장치(200)의 프로세서(220)가 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이나 명령, 데이터, 파일 등이 통신 인터페이스(230)의 제어에 따라 네트워크(170)를 통해 다른 장치들로 전달될 수 있다. 역으로, 다른 장치로부터의 신호나 명령, 데이터, 파일 등이 네트워크(170)를 거쳐 컴퓨터 장치(200)의 통신 인터페이스(230)를 통해 컴퓨터 장치(200)로 수신될 수 있다. 통신 인터페이스(230)를 통해 수신된 신호나 명령, 데이터 등은 프로세서(220)나 메모리(210)로 전달될 수 있고, 파일 등은 컴퓨터 장치(200)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.The communication interface 230 may provide a function for the computer device 200 to communicate with other devices (eg, the storage devices described above) through the network 170. For example, a request, command, data, file, etc. generated by the processor 220 of the computer device 200 according to a program code stored in a recording device such as memory 210 is transmitted to the network ( 170) and can be transmitted to other devices. Conversely, signals, commands, data, files, etc. from other devices may be received by the computer device 200 through the communication interface 230 of the computer device 200 via the network 170. Signals, commands, data, etc. received through the communication interface 230 may be transmitted to the processor 220 or memory 210, and files, etc. may be stored in a storage medium (as described above) that the computer device 200 may further include. It can be stored as a permanent storage device).

입출력 인터페이스(240)는 입출력 장치(250)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 마이크, 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(240)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(250) 중 적어도 하나는 컴퓨터 장치(200)와 하나의 장치로 구성될 수도 있다. 예를 들어, 스마트폰과 같이 터치스크린, 마이크, 스피커 등이 컴퓨터 장치(200)에 포함된 형태로 구현될 수 있다. The input/output interface 240 may be a means for interfacing with the input/output device 250. For example, input devices may include devices such as a microphone, keyboard, or mouse, and output devices may include devices such as displays and speakers. As another example, the input/output interface 240 may be a means for interfacing with a device that integrates input and output functions, such as a touch screen. At least one of the input/output devices 250 may be configured as one device with the computer device 200. For example, like a smart phone, a touch screen, microphone, speaker, etc. may be included in the computer device 200.

또한, 다른 실시예들에서 컴퓨터 장치(200)는 도 2의 구성요소들보다 더 적은 혹은 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 장치(200)는 상술한 입출력 장치(250) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.Additionally, in other embodiments, computer device 200 may include fewer or more components than those of FIG. 2 . However, there is no need to clearly show most prior art components. For example, the computer device 200 may be implemented to include at least some of the input/output devices 250 described above, or may further include other components such as a transceiver, a database, etc.

도 3은 본 발명의 일실시예에 따른 클라우드 스토리지 환경의 예를 도시한 도면이다. 도 3은 쿠버네티스(Kubernetes)로 구현된 컨테이너 환경의 클라이언트 단(310)과 오픈스택 신더(OpenStack Cinder)로 구현된 클라우드 환경의 스토리지 서버 단(320)을 나타내고 있다. 여기서 쿠버네티스와 오픈스택 신더는 모두 오픈소스로 이미 잘 알려져 있다.Figure 3 is a diagram illustrating an example of a cloud storage environment according to an embodiment of the present invention. Figure 3 shows a client end 310 in a container environment implemented with Kubernetes and a storage server end 320 in a cloud environment implemented with OpenStack Cinder. Here, both Kubernetes and OpenStack Cinder are already well known as open source.

이때, 본 발명의 실시예들에서는 스토리지 서버 단(320)의 스토리지 서버들에 분산되어 있는 스토리지(NVMe SSDs)를 컨테이너 환경의 클라이언트로 어떻게 제공하는가에 대한 방법 및 시스템을 제공할 수 있다. 스토리지는 가변 크기의 논리적 볼륨(Logical Volume, LV)을 생성할 수 있다. 일실시예에 따른 볼륨 제공 방법에서는 클라이언트의 컨네이너에서 원하는 크기의 볼륨을 요청하면 서버가 요청된 크기의 논리적 볼륨을 컨테이너에 제공하는 방식으로 볼륨이 컨테이너 환경의 클라이언트로 제공될 수 있다. 이때, 쿠버네티스에 오픈스택 신더의 볼륨을 제공하기 위해, 컨테이너 스토리지 인터페이스(Container Storage Interface, CSI)가 이용될 수 있다. 이러한 볼륨 제공 방법의 구체적인 과정에 대해서는 이후 더욱 자세히 설명한다.At this time, embodiments of the present invention can provide a method and system for how to provide storage (NVMe SSDs) distributed among the storage servers of the storage server stage 320 to clients in a container environment. Storage can create a logical volume (LV) of variable size. In the volume provision method according to one embodiment, when the client's container requests a volume of a desired size, the server provides a logical volume of the requested size to the container, so that the volume can be provided to the client in the container environment. At this time, the Container Storage Interface (CSI) can be used to provide the OpenStack Cinder volume to Kubernetes. The specific process of this volume provision method will be described in more detail later.

도 4는 본 발명의 일실시예에 있어서, 볼륨 생성의 과정의 예를 도시한 도면이다. 도 4는 쿠버네티스로 구현된 컨테이너 환경의 클라이언트 단(310)과 오픈스택 신더로 구현된 클라우드 환경의 스토리지 서버 단(320)을 나타내고 있다. 클라이언트 단(310) 및/또는 스토리지 서버 단(320)은 복수 개가 구현되어 이용될 수도 있다.Figure 4 is a diagram illustrating an example of a volume creation process according to an embodiment of the present invention. Figure 4 shows a client end 310 in a container environment implemented with Kubernetes and a storage server end 320 in a cloud environment implemented with OpenStack Cinder. A plurality of client end 310 and/or storage server end 320 may be implemented and used.

본 실시예에서 쿠버네티스(K8s)에는 NVMe oF(NVMe over Fabrics)의 컨테이너 스토리지 인터페이스가 배포될 수 있다. 컨테이너 스토리지 인터페이스의 컴포넌트는 크게 노드 1(node 1, 410)에 나타난 바와 같이 컨트롤러 플러그인(Controller Plugin, 411)과 노드들마다 포함되는 노드 플러그인(Node Plugin, 412)으로 구성될 수 있다. 이때, 컨트롤러 플러그인(411)은 클라이언트 단(310)에서 볼륨의 생성, 삭제 등을 책임질 수 있는 컴포넌트이며, 노드 플러그인(412)은 각 노드에 볼륨을 임포트하여 컨테이너들에게 볼륨을 바인드 마운트하는 컴포넌트일 수 있다.In this embodiment, the container storage interface of NVMe oF (NVMe over Fabrics) may be deployed in Kubernetes (K8s). Components of the container storage interface can largely be composed of a controller plug-in (411) as shown in node 1 (node 1, 410) and a node plug-in (Node Plugin, 412) included in each node. At this time, the controller plug-in 411 is a component responsible for creating and deleting volumes at the client end 310, and the node plug-in 412 is a component that imports volumes to each node and binds and mounts the volumes to containers. You can.

또한, 오픈스택 신더로 관리되는 백엔드 스토리지(Backend Storage)인 스토리지 서버 단(320)의 매니저 노드(manager node, 420)는 신더-api(cinder-api, 421) 및 신더-스케줄러(cinder-scheduler, 422)를 포함할 수 있다. 신더-api(421)와 신더-스케줄러(cinder-scheduler, 422)는 매니저 노드(420)에서의 볼륨 관리를 위해 이용되는 데몬(demon)들일 수 있다. 스토리지 서버 단(320)의 볼륨 노드 1(volume node 1, 430)은 신더-볼륨(cinder-volume, 431)을 포함할 수 있다. 신더-볼륨(431)은 볼륨 노드 1(430)에 포함된 스토리지(일례로, NVMe SSDs)를 관리하는 데몬일 수 있다. 여기서 스토리지 서버 단(320)에는 다수의 볼륨 노드가 존재할 수 있으며, 다수의 볼륨 노드 각각은 자신의 신더-볼륨을 포함할 수 있다. 또한, 데몬은 소프트웨어 모듈일 수 있다. 도 4의 실시예에서는 매니저 노드(420)가 신더-api(421) 및 신더-스케줄러(422)를 포함하는 예를 설명하고 있으나, 신더-api(421)와 신더-스케줄러(422)는 서로 다른 노드에 포함될 수도 있다. 예를 들어, 노드 1이 신더-api(421)와 신더-볼륨 1을, 노드 2가 신더-스케줄러(422)와 신더-볼륨 2를, 노드 3이 신더-볼륨3을 포함하는 형태도 고려될 수 있다. 다시 말해, 다수의 볼륨 노드들 중 적어도 하나의 볼륨 노드가 신더-api(421)와 신더-스케줄러(422)를 포함하는 실시예가 고려될 수 있다.In addition, the manager node (420) of the storage server stage (320), which is the backend storage managed by OpenStack Cinder, has cinder-api (421) and cinder-scheduler (cinder-scheduler). 422) may be included. Cinder-api 421 and cinder-scheduler 422 may be daemons used for volume management in the manager node 420. Volume node 1 (430) of the storage server end (320) may include a cinder-volume (431). Cinder-Volume 431 may be a daemon that manages storage (eg, NVMe SSDs) included in Volume Node 1 (430). Here, a plurality of volume nodes may exist in the storage server end 320, and each of the plurality of volume nodes may include its own cinder-volume. Additionally, a daemon may be a software module. 4 illustrates an example in which the manager node 420 includes the cinder-api 421 and the cinder-scheduler 422, but the cinder-api 421 and the cinder-scheduler 422 are different from each other. It may also be included in a node. For example, node 1 includes cinder-api (421) and cinder-volume 1, node 2 includes cinder-scheduler (422) and cinder-volume 2, and node 3 includes cinder-volume 3. You can. In other words, an embodiment in which at least one volume node among a plurality of volume nodes includes a cinder-api 421 and a cinder-scheduler 422 may be considered.

쿠버네티스에서 볼륨을 관리하는 주체는 PV(Persistence Volume, 440)로서 사용자는 PV(440)에 직접 접근하지 않고, PVC(Persistence Volume Claim, 450)라는 객체를 생성(1. create PVC)하여 사용자가 원하는 볼륨의 스펙을 PVC(450)에 입력할 수 있다. 일례로, NVMe SSDs의 볼륨 100 기가바이트를 사용하겠다는 스펙이 PVC(450)에 입력될 수 있다. 이때, 도 4의 실시예에서는 NVMe oF의 "StorageClass"를 통해 "testpvc"라는 이름의 PVC(450)가 생성된 예를 나타내고 있다. 예를 들어, NVMe-oF를 위한 "StorageClass"라는 객체가 하나 존재하며, PVC(450)는 이 "StorageClass"를 스펙에 기입할 수 있다.The entity that manages the volume in Kubernetes is PV (Persistence Volume, 440), and users do not directly access PV (440), but create an object called PVC (Persistence Volume Claim, 450) (1. create PVC) to claim the user's information. You can enter the specifications of the desired volume into PVC (450). For example, a specification to use a volume of 100 gigabytes of NVMe SSDs may be entered into PVC 450. At this time, the embodiment of FIG. 4 shows an example in which a PVC 450 named “testpvc” is created through “StorageClass” of NVMe oF. For example, there is an object called “StorageClass” for NVMe-oF, and the PVC 450 can write this “StorageClass” into the specification.

한편, 컨트롤러 플러그인(411)은 PVC(450)의 생성을 모니터링할 수 있으며, PVC(450)가 생성됨을 확인함에 따라 클라이언트 단(310)과 스토리지 서버 단(320) 사이의 엔드포인트(endpoint)로 볼륨 생성(2. cinder API: create volume) 요청을 전달할 수 있다. 이때, 볼륨 생성 요청은 신더-api(421)로 전달될 수 있다. 다시 말해, 볼륨 생성 요청은 클라이언트에서 PVC(450)가 생성됨에 따라 클라이언트에서 신더-api(421)를 API 호출함에 따라 신더-api(421)로 전달될 수 있다. 실시예에 따라 컨트롤러 플러그인(411)은 신더-api(421)로 볼륨 생성 요청을 직접 보내거나 DNS(Domain Name System)를 설정하여 볼륨 생성 요청을 전달하는 것 역시 가능하다. 이때, 볼륨 생성 요청은 PVC의 이름(본 실시예에서는 "testpvc")을 포함할 수 있다.Meanwhile, the controller plug-in 411 can monitor the creation of the PVC 450, and as it confirms that the PVC 450 is created, it is connected to the endpoint between the client side 310 and the storage server side 320. A volume creation (2. cinder API: create volume) request can be sent. At this time, the volume creation request may be transmitted to the cinder-api (421). In other words, the volume creation request may be transmitted to the Cinder-api (421) as the PVC (450) is created in the client and the client makes an API call to the Cinder-api (421). Depending on the embodiment, the controller plug-in 411 may directly send a volume creation request to the cinder-api 421 or set a DNS (Domain Name System) to transmit the volume creation request. At this time, the volume creation request may include the name of the PVC (“testpvc” in this embodiment).

신더-api(421)는 볼륨 생성 요청에 따라 볼륨(460)을 생성(3. create volume)할 수 있다. 볼륨(460)은 데이터베이스에 저장되는 메타데이터의 형태로 생성될 수 있다. 이때, 생성되는 볼륨(460)의 이름은 PVC(450)의 이름과 동일할 수 있다. 또한, 신더-api(421)는 생성된 볼륨(460)에 따른 LV(Logical Volume)를 실제로 생성할 노드(스토리지 서버로서의 볼륨 노드(volume node))를 찾기 위해, 신더-스케줄러(422)에게 스케줄링 요청(4. scheduling)을 전달한다. 이때, 신더-api(421)와 신더-스케줄러(422)간의 통신은 비동기적으로 이루어지기 때문에 컨트롤러 플러그인(411)은 스케줄링 요청 후, 바로 컨트롤러 플러그인(411)으로 볼륨 생성 요청에 대한 응답을 전달(5. return after calling scheduling)할 수 있다. 이때, 신더-api(421)는 신더-스케줄러(422)로부터의 응답이나 또는 이후 설명될 신더-볼륨(431) 또는 볼륨 노드 1(430)로부터의 응답과 무관하게 바로 볼륨 생성 요청에 대한 응답을 클라이언트로 전달할 수 있다.Cinder-api 421 can create a volume 460 (3. create volume) according to a volume creation request. Volume 460 may be created in the form of metadata stored in a database. At this time, the name of the created volume 460 may be the same as the name of the PVC 450. In addition, the cinder-api 421 schedules the cinder-scheduler 422 to find a node (volume node as a storage server) that will actually create the LV (Logical Volume) according to the created volume 460. Send request (4. scheduling). At this time, since the communication between Cinder-api (421) and Cinder-Scheduler (422) is asynchronous, the controller plug-in 411 sends a response to the volume creation request to the controller plug-in 411 immediately after the scheduling request ( 5. You can return after calling scheduling. At this time, the cinder-api 421 immediately responds to the volume creation request regardless of the response from the cinder-scheduler 422 or the response from the cinder-volume 431 or volume node 1 430, which will be described later. It can be passed on to the client.

신더-스케줄러(422)는 스케줄링 알고리즘에 따라 신더-api(421)에 의해 생성된 볼륨(460)에 따른 실제 LV를 생성할 노드를 스케줄링할 수 있다. 일례로, 신더-스케줄러(422)는 백엔드 스토리지에 존재하는 복수의 볼륨 노드들 중 하나의 볼륨 노드를 실제 LV를 생성할 노드로서 선정할 수 있다. 도 4의 실시예에서는 볼륨 노드 1(430)이 실제 LV를 생성할 노드로 스케줄링된 예를 나타내고 있다. 이때, 볼륨 노드 1(430)의 신더-볼륨(431)은 스토리지(NVMe SSDs)를 통해 볼륨(460)을 위한 LV(470)를 생성할 수 있다. 스케줄링 알고리즘은 가장 큰 능력(capacity)의 노드를 찾아 스케줄링하는 간단한 알고리즘을 기본 알고리즘으로 이용할 수 있으나, 실제 구현에 따라 스케줄링을 위한 다른 요소들이 더 고려될 수도 있다.The cinder-scheduler 422 may schedule the node that will generate the actual LV according to the volume 460 created by the cinder-api 421 according to the scheduling algorithm. For example, the cinder-scheduler 422 may select one volume node among a plurality of volume nodes existing in the back-end storage as the node that will actually generate the LV. The embodiment of FIG. 4 shows an example in which volume node 1 430 is scheduled as a node that will actually generate LV. At this time, the cinder-volume 431 of volume node 1 430 can create the LV 470 for the volume 460 through storage (NVMe SSDs). The scheduling algorithm can use a simple algorithm that finds and schedules the node with the largest capacity as the basic algorithm, but other factors for scheduling may be further considered depending on the actual implementation.

한편, 신더-api(421)로부터 응답을 받은 컨트롤러 플러그인(411)은 PV(440)를 생성한 후, PV(440)와 PVC(450)를 바인딩할 수 있다. 이 경우, 사용자는 PVC(450)를 통해 실제 볼륨을 사용할 수 있는 상태가 될 수 있다.Meanwhile, the controller plug-in 411 that receives a response from the cinder-api 421 can create the PV 440 and then bind the PV 440 and the PVC 450. In this case, the user may be able to use the actual volume through the PVC 450.

도 4에 도시된 큐블렛(kubelet, 480)은 이후 설명되는 쿠버네티스의 파드와 볼륨의 생성 및 처리를 담당할 수 있다. 각 실시예들에서 큐블렛(480)은 설명의 편의상 동일한 도면부호로 표시하였으나, 실질적으로는 쿠버네티스의 노드들 각각에 포함되는 서로 다른 인스턴스 모듈들일 수 있다. 이러한 큐블렛(480)에 대해서는 이후 더욱 자세히 설명한다.The kubelet (480) shown in FIG. 4 may be responsible for creating and processing pods and volumes of Kubernetes, which will be described later. In each embodiment, the cubelet 480 is indicated by the same reference number for convenience of explanation, but in reality, it may be different instance modules included in each node of Kubernetes. This cubelet 480 will be described in more detail later.

도 5는 본 발명의 일실시예에 있어서, 볼륨 어태치먼트의 과정의 예를 도시한 도면이다. 도 5의 실시예는 PVC(450)를 이용하여 컨테이너에 볼륨을 연결하는 과정의 예를 나타내고 있다.Figure 5 is a diagram showing an example of a volume attachment process in one embodiment of the present invention. The embodiment of Figure 5 shows an example of a process for connecting a volume to a container using PVC 450.

한편, 도 5의 실시예에서는 사용자의 요청에 따라 PV(440)를 마운트하는 파드(510)가 노드 2(520)로 스케줄링되어 생성(1. create Pod)된 예를 나타내고 있다. 이 경우, 노드 2(520)의 노드 플러그인(521)은 파드(510)를 확인함에 따라 신더-api(421)로 익스포트 볼륨(2. cinder API: export volume)을 호출하여 볼륨의 익스포트를 요청할 수 있다. 보다 구체적으로, 파드(510)의 생성을 확인하는 주체는 쿠버네티스의 K8s에서 사용하는 워커노드의 에이전트 데몬일 수 있다. 이 경우, 큐블렛(480)이 파드(510)와 볼륨의 실제 생성 및 처리를 담당할 수 있다. 이때, 생성된 파드(510)가 NVMe-oF 볼륨을 사용한다면 큐블렛(480)이 노드 플러그인(521)에 볼륨 어태치먼트를 요청함으로써, 노드 플러그인(521)이 이러한 파드(510)에 대한 정보를 전달받을 수 있다. 다시 말해, 노드 플러그인(521)은 파드가 생성됨에 따라 API 호출을 통해 볼륨 익스포트 요청을 신더-api(421)로 전달할 수 있다. 이 경우, 신더-api(421)는 볼륨 노드 1(430)의 신더-볼륨(431)으로 타겟(530)을 생성하고 익스포트하라는 명령(3. create target and export)을 내릴 수 있다. 이 경우, 해당 명령을 위한 신더-api(421)와 신더-볼륨(431)간의 통신은 동기 방식으로 이루어질 수 있다. 이를 통해, 신더-api(421)는 신더-볼륨(431)에서 타겟(530)을 생성함에 따라 신더-볼륨(431)이 전달하는 응답에 기반하여 호스트 IP, 포트, 서브시스템 NQN(타겟(530)의 식별자))를 노드 플러그인(521)으로 리턴(4. return with host IP, port, subsystem NQN)할 수 있다.Meanwhile, the embodiment of FIG. 5 shows an example in which the pod 510 that mounts the PV 440 is scheduled to node 2 520 and created (1. create Pod) according to the user's request. In this case, the node plugin 521 of node 2 520 can request export of the volume by calling the export volume (2. cinder API: export volume) with cinder-api 421 as it checks the pod 510. there is. More specifically, the entity that confirms the creation of the pod 510 may be the agent daemon of the worker node used in K8s of Kubernetes. In this case, the cubelet 480 may be responsible for the actual creation and processing of the pod 510 and volume. At this time, if the created pod 510 uses an NVMe-oF volume, the cubelet 480 requests a volume attachment from the node plug-in 521, so that the node plug-in 521 delivers information about this pod 510. You can receive it. In other words, the node plugin 521 can forward a volume export request to the cinder-api 421 through an API call as the pod is created. In this case, the cinder-api (421) can issue a command (3. create target and export) to create and export the target (530) to the cinder-volume (431) of volume node 1 (430). In this case, communication between the cinder-api 421 and the cinder-volume 431 for the corresponding command may be performed in a synchronous manner. Through this, as the cinder-api 421 creates the target 530 in the cinder-volume 431, the host IP, port, and subsystem NQN (target 530) are based on the response delivered by the cinder-volume 431. ) can be returned to the node plug-in 521 (4. return with host IP, port, subsystem NQN).

이 경우, 노드 플러그인(521)은 전달된 정보(호스트 IP, 포트 및 타겟(530)의 식별자)를 이용하여 익스포트된 LV(470) 기반의 타겟(530)에 NVMe 연결을 호출(5. nvme connect)할 수 있다. 이 경우, 타겟(530)은 노드 2(520)의 NVMe 타입의 블록 디바이스(block device, 550)에 맵핑될 수 있으며, 노드 2(520)에 타겟(530)이 어태치(attach)되면 볼륨(460)의 상태를 인-유즈(in-use)로 전환(6. change volume status to in-use)하여 사용자가 NVMe 볼륨을 이용할 수 있게 된다. 이를 위해, 노드 플러그인(521)은 익스포트의 생성 요청 등과 마찬가지로 신더-api(421)로 쿼리를 전달하여 볼륨(460)의 상태를 인-유즈로 전환할 수 있다. 이후, 노드 플러그인(521)은 파드(510)와 타겟(530)이 맵핑된 블록 디바이스(550)를 바인드 마운트(6. bind mount)함으로써, 사용자 어플리케이션이 파드(510)를 통해 NVMe 볼륨을 사용할 수 있게 된다. 일반 mount 커맨드는 새로운 디렉토리 트리를 생성하는 반면, 바인드 마운트는 기존 디렉토리 트리를 그대로 사용해서 컨테이너에 노드의 볼륨을 붙이는 데 사용될 수 있다. 다시 말해, 클라이언트에서 생성된 파드(510)가 블록 디바이스(550)에 바인드 마운트되어 타겟(530)에 대응하는 볼륨 노드 1(430)의 LV에 접근이 가능해질 수 있다.In this case, the node plugin 521 uses the delivered information (host IP, port, and identifier of the target 530) to call an NVMe connection to the target 530 based on the exported LV 470 (5. nvme connect )can do. In this case, the target 530 may be mapped to the NVMe type block device 550 of node 2 520, and when the target 530 is attached to node 2 520, the volume ( By changing the status of 460) to in-use (6. change volume status to in-use), the user can use the NVMe volume. To this end, the node plugin 521 can change the state of the volume 460 to in-use by sending a query to the cinder-api 421, similar to a request for export creation. Afterwards, the node plugin 521 bind mounts the block device 550 to which the pod 510 and the target 530 are mapped (6. bind mount), allowing the user application to use the NVMe volume through the pod 510. There will be. While the regular mount command creates a new directory tree, a bind mount can be used to attach a node's volume to a container using an existing directory tree. In other words, the pod 510 created in the client may be bind mounted on the block device 550 to enable access to the LV of volume node 1 (430) corresponding to the target (530).

도 6은 본 발명의 일실시예에 있어서, 볼륨 디태치먼트의 과정의 예를 도시한 도면이다. PV(440)를 마운트하는 파드(510)가 삭제(1. delete Pod)되면, 노드 플러그인(521)은 해당 PV(440)로 마운트되어 있는 타겟(530)의 백엔드 스토리지 서버(볼륨 노드 1(430))으로 NVMe 연결 해제 명령(2. Nvme disconnect)을 내릴 수 있다. 타겟(530)의 서버 정보로서의 호스트 IP, 포트 및 타겟(530)의 식별자는 신더-api(421)에 요청을 통해 받아올 수 있다. 이 경우에도 파드(510)의 삭제를 확인하는 주체는 쿠버네티스의 K8s에서 사용하는 워커노드의 에이전트 데몬일 수 있다. 다시 말해, 큐블렛(480)이 파드(510)의 삭제를 모니터링하여 노드 플러그인(521)에 볼륨 디태치먼트를 요청함으로써, 노드 플러그인(521)이 이러한 파드(510)의 삭제에 대한 정보를 전달받을 수 있다.Figure 6 is a diagram illustrating an example of a volume detachment process in one embodiment of the present invention. When the Pod 510 that mounts the PV 440 is deleted (1. delete Pod), the node plugin 521 deletes the backend storage server (volume node 1 (430)) of the target 530 mounted with the PV 440. )), you can issue an NVMe disconnect command (2. Nvme disconnect). The host IP, port, and identifier of the target 530 as server information of the target 530 can be received through a request to the cinder-api (421). Even in this case, the entity that confirms the deletion of the pod 510 may be the agent daemon of the worker node used in K8s of Kubernetes. In other words, the cubelet 480 monitors the deletion of the pod 510 and requests volume detachment from the node plug-in 521, so that the node plug-in 521 transmits information about the deletion of the pod 510. You can receive it.

NVMe 연결의 해제가 완료된 후, 노드 플러그인(521)은 신더-api(421)에게 해당 익스포트를 삭제해줄 것을 요청(3. cinder API: remove export)할 수 있다. 이 경우, 신더-api(421)는 해당 호스트(볼륨 노드 1(430))의 신더-볼륨(431)에 익스포트를 제거하라는 메시지를 전달(4. remove export)할 수 있다. 신더-볼륨(431)은 전달된 메시지에 따라 타겟(530)에 대한 익스포트를 삭제할 수 있다.After the NVMe connection is disconnected, the node plugin 521 may request the cinder-api 421 to delete the export (3. cinder API: remove export). In this case, the cinder-api 421 may transmit a message to remove the export (4. remove export) to the cinder-volume 431 of the corresponding host (volume node 1 430). Cinder-volume 431 may delete the export to target 530 according to the delivered message.

이후, 노드 플러그인(521)은 볼륨(460)을 사용 가능하게 해달라는 요청(6. cinder API: enable volume)을 신더-api(421)로 전달할 수 있으며, 신더-api(421)는 요청에 따라 해당 볼륨(460)의 상태를 사용 가능한 상태(available)로 변경(7. make volume status available)할 수 있다.Afterwards, the node plugin 521 may transmit a request to enable the volume 460 (6. cinder API: enable volume) to the cinder-api 421, and the cinder-api 421 responds to the request. The status of the corresponding volume 460 can be changed to available (7. make volume status available).

도 7은 본 발명의 일실시예에 있어서, 볼륨 삭제의 과정의 예를 도시한 도면이다. NVMe oF의 PVC(450)가 삭제(1. delete PVC)되면, 컨트롤러 플러그인(411)은 신더-api(421)로 볼륨 삭제를 요청(2. cinder API: delete volume)할 수 있다. 이 경우, 신더-api(421)는 데이터베이스에서 볼륨(460) 정보를 삭제(3. Delete volume)할 수 있다. 이후, 신더-api(421)는 해당 볼륨을 관리하는 신더-볼륨(431)에게 실제 LV(470)를 제거하라는 메시지를 전송(4. remove volume)할 수 있다. 신더-볼륨(431)은 수신된 메시지에 따라 LV(470)를 삭제(5. delete LV)할 수 있다.Figure 7 is a diagram illustrating an example of a volume deletion process according to an embodiment of the present invention. When the PVC (450) of the NVMe oF is deleted (1. delete PVC), the controller plug-in (411) can request volume deletion (2. cinder API: delete volume) to the cinder-api (421). In this case, cinder-api 421 can delete volume 460 information from the database (3. Delete volume). Afterwards, the cinder-api 421 may send a message (4. remove volume) to remove the actual LV 470 to the cinder-volume 431 that manages the volume. The cinder-volume 431 may delete the LV 470 (5. delete LV) according to the received message.

한편, 컨트롤러 플러그인(411)은 신더-api(421)로 볼륨 삭제를 요청한 후, PV(440)를 삭제(6. delete PV)할 수 있다.Meanwhile, the controller plug-in 411 may request volume deletion through the cinder-api 421 and then delete the PV 440 (6. delete PV).

도 8은 본 발명의 일실시예에 있어서, 백엔드 스토리지 관점에서의 볼륨 생성의 과정의 예를 도시한 도면이다. 도 8은 스토리지 서버 단(320)에 대응하는 백엔드 스토리지의 예로서, 신더-api(cinder-api, 810), 인증 매니저(Auth manager, 820), 신더-스케줄러(cinder-scheduler, 830), 신더 데이터베이스(Cinder DB, 840), 메시지 큐(Message Queue, 850), 신더-볼륨 1(cinder-volume 1, 860) 및 신더-볼륨 2(cinder-volume 2, 870)를 나타내고 있다. 여기서, 신더-api(810), 신더-스케줄러(830) 및 신더-볼륨(860, 870)는 앞서 설명한 신더-api(421), 신더-스케줄러(422) 및 신더-볼륨(431)에 각각 대응할 수 있다. 한편, 인증 매니저(820), 신더 데이터베이스(840) 및 메시지 큐(850)는 마이크로 서비스 아키텍처에 따라서 오픈스택 신더와는 별도로 관리되는 컴포넌트들일 수 있다.Figure 8 is a diagram illustrating an example of a volume creation process from a back-end storage perspective, according to an embodiment of the present invention. Figure 8 is an example of back-end storage corresponding to the storage server stage 320, including cinder-api (cinder-api, 810), authentication manager (Auth manager, 820), cinder-scheduler (830), and cinder. It represents a database (Cinder DB, 840), a message queue (Message Queue, 850), cinder-volume 1 (860), and cinder-volume 2 (cinder-volume 2, 870). Here, cinder-api (810), cinder-scheduler (830), and cinder-volume (860, 870) correspond to the cinder-api (421), cinder-scheduler (422), and cinder-volume (431) described above, respectively. You can. Meanwhile, the authentication manager 820, Cinder database 840, and message queue 850 may be components managed separately from OpenStack Cinder according to the microservice architecture.

클라이언트로부터의 볼륨 생성 요청이 전달되면, 신더-api(810)는 인증 매니저(820)를 통해 사용자 요청의 인증/인가를 확인(1. Auth user, project and role)할 수 있다. 예를 들어, 신더-api(810)는 API를 호출한 사용자의 정보, 사용자가 속한 프로젝트(project)의 정보, 사용자가 볼륨을 생성할 수 있는지에 대한 롤(role) 정보를 확인할 수 있다.When a volume creation request from a client is transmitted, the cinder-api (810) can check the authentication/authorization of the user request (1. Auth user, project and role) through the authentication manager (820). For example, the cinder-api 810 can check information about the user who called the API, information about the project to which the user belongs, and role information about whether the user can create a volume.

인증이 완료된 후, 신더-api(810)는 신더 데이터베이스(840)에 볼륨의 메타데이터로서, 볼륨의 이름, 크기, 생성 타입 등을 저장(2. Create volume metadata)할 수 있다. 신더 데이터베이스(840)의 업데이트는 일례로, SQL(Structured Query Language)을 이용하여 이루어질 수 있다.After authentication is completed, the cinder-api 810 can store the name, size, creation type, etc. of the volume as metadata of the volume in the cinder database 840 (2. Create volume metadata). For example, updates to the Cinder database 840 may be performed using SQL (Structured Query Language).

또한, 신더-api(810)는 메시지 큐(850)를 통해 신더-스케줄러(830)에게 볼륨 생성을 위한 스케줄링을 요청할 수 있다. 이때, 신더-api(810)는 볼륨 스케줄링을 요청하기 위한 메시지를 메시지 큐(850)로 전달(3. Request volume scheduling)할 수 있다. 이후, 신더-스케줄러(830)는 메시지 큐(850)를 통해 메시지를 비동기 방식으로 전달받을 수 있다.Additionally, the cinder-api 810 may request scheduling for volume creation from the cinder-scheduler 830 through the message queue 850. At this time, the cinder-api 810 may transmit a message to request volume scheduling to the message queue 850 (3. Request volume scheduling). Afterwards, the Cinder-Scheduler 830 can receive messages asynchronously through the message queue 850.

신더-스케줄러(830)는 전달받은 메시지에 따라 볼륨을 생성할 신더-볼륨(본 실시예에서는 신더-볼륨 2(870))를 결정할 수 있으며, NVMe 볼륨을 생성하라는 명령(4. Schedule nvme volume)을 메시지 큐(850)에 입력할 수 있다. 이때, 스케줄링 기준은 신더-볼륨이 담당하는 디스크의 잔여 용량 등을 고려하여 이루어질 수 있다.The cinder-scheduler 830 can determine the cinder-volume to create a volume (in this embodiment, cinder-volume 2 870) according to the received message, and sends a command to create an NVMe volume (4. Schedule nvme volume) can be entered into the message queue 850. At this time, the scheduling standard can be established by considering the remaining capacity of the disk handled by the cinder-volume.

한편, 신더-스케줄러(830)는 신더-볼륨을 스케줄링한 후, 볼륨의 식별자와 신더-볼륨의 호스트 정보 등을 신더 데이터베이스(840)에 업데이트할 수 있다.Meanwhile, after scheduling the cinder-volume, the cinder-scheduler 830 may update the volume identifier and host information of the cinder-volume in the cinder database 840.

신더-볼륨 2(870)는 메시지 큐(850)를 통해 명령을 전달받을 수 있으며, 전달받은 명령에 따라 LV로서 NVMe 볼륨을 생성(5. Create nvme volume)할 수 있다.Cinder-Volume 2 (870) can receive commands through the message queue (850), and can create an NVMe volume as an LV according to the received command (5. Create nvme volume).

도 9는 본 발명의 일실시예에 있어서, 백엔드 스토리지 관점에서의 볼륨 어태치먼트의 과정의 예를 도시한 도면이다.Figure 9 is a diagram illustrating an example of a volume attachment process from a back-end storage perspective, according to an embodiment of the present invention.

볼륨 어태치먼트 시, 클라이언트로부터 볼륨 익스포트(타겟 익스포트) 요청이 신더-api(810)에 도착하면, 신더-api(810)는 인증 매니저(820)를 통해 사용자 요청의 인증/인가를 확인(1. Auth user, project and role)할 수 있다. 이후, 신더-api(810)는 해당 볼륨을 담당하는 신더-볼륨(본 실시예에서는 신더-볼륨 2(870))으로 NVMe 타겟을 익스포트하도록 요청(2. Request nvme target export and wait response)을 전달할 수 있다. 이미 설명한 바와 같이 해당 요청은 메시지 큐(850)를 이용한 비동기 방식으로 전달되나, 신더-api(810)는 신더-볼륨 2(870)로부터의 응답을 기다려야 하기 때문에 신더-api(810)에는 신더-볼륨 2(870)로부터의 응답을 기다리기 위한 로직을 포함할 수 있다.During volume attachment, when a volume export (target export) request from a client arrives at Cinder-api (810), Cinder-api (810) verifies the authentication/authorization of the user request through the authentication manager (820) (1. Auth user, project and role). Afterwards, the cinder-api (810) transmits a request (2. Request nvme target export and wait response) to export the NVMe target to the cinder-volume (in this embodiment, cinder-volume 2 (870)) in charge of the volume. You can. As already explained, the request is delivered asynchronously using the message queue 850, but since the cinder-api (810) has to wait for a response from the cinder-volume 2 (870), the cinder-api (810) has a cinder-api (810). It may include logic to wait for a response from volume 2 (870).

신더-볼륨 2(870)는 메시지 큐(850)를 통해 전달된 요청에 따라 NVMe 타겟 익스포트의 작업을 수행(3. Export nvme volume target)할 수 있다. 일례로, 신더-볼륨 2(870)는 커널 모듈인 "nvmet-tcp"를 이용하여 타겟 익스포트를 처리할 수 있다. 또한, 신더-볼륨 2(870)는 익스포트한 타겟의 정보(ip, 포트, 호스트 nqn)를 메시지 큐(850)를 통해 신더-api(810)로 전달할 수 있다. 여기서, ip는 앞서 설명한 호스트 IP에 대응할 수 있으며, 호스트 nqn은 타겟의 식별자로서 설명한 서브시스템 NQN에 대응할 수 있다.Cinder-Volume 2 (870) can perform the NVMe target export operation (3. Export nvme volume target) according to the request delivered through the message queue (850). For example, Cinder-Volume 2 (870) can process target export using the kernel module “nvmet-tcp”. Additionally, Cinder-Volume 2 (870) can transmit information (ip, port, host nqn) of the exported target to Cinder-API (810) through the message queue (850). Here, ip may correspond to the host IP described above, and host nqn may correspond to the subsystem NQN described as the identifier of the target.

신더-api(810)는 신더-볼륨 2(870)의 응답을 기다리다가 익스포트 완료 후 메시지 큐(850)를 통해 신더-볼륨 2(870)의 응답을 전달받게 되면, 클라이언트에게 해당 정보를 리턴(4. Return nvme volume target info (ip, port, host nqn))할 수 있다.Cinder-api (810) waits for a response from Cinder-Volume 2 (870), and when the response from Cinder-Volume 2 (870) is received through the message queue (850) after the export is completed, it returns the corresponding information to the client ( 4. Return nvme volume target info (ip, port, host nqn)).

도 10은 본 발명의 일실시예에 있어서, 백엔드 스토리지 관점에서의 볼륨 디태치먼트의 과정의 예를 도시한 도면이다.Figure 10 is a diagram illustrating an example of a volume detachment process from a back-end storage perspective, according to an embodiment of the present invention.

볼륨 디태치먼트 시, 클라이언트로부터 익스포트 삭제(Remove export) 요청이 들어오면, 신더-api(810)는 인증 매니저(820)를 통해 사용자 요청의 인증/인가를 확인(1. Auth user, project and role)할 수 있다. 이후, 신더-api(810)는 메시지 큐(850)를 통해 해당 볼륨을 담당하는 신더-볼륨 2(870)로 NVMe 타겟을 삭제하도록 요청(2. Request remove nvme target)을 보낼 수 있다. 이때, 신더-볼륨 2(870)는 메시지 큐(850)를 통해 전달된 요청에 따라 NVMe 타겟을 삭제하는 작업을 수행(3. Remove nvme target)할 수 있다.During volume detachment, when a request to remove export is received from a client, Cinder-api (810) verifies authentication/authorization of the user request through the authentication manager (820) (1. Auth user, project and role )can do. Afterwards, Cinder-api (810) may send a request (2. Request remove nvme target) to delete the NVMe target to Cinder-Volume 2 (870) in charge of the volume through the message queue (850). At this time, Cinder-Volume 2 (870) may perform the task of deleting the NVMe target (3. Remove nvme target) according to the request delivered through the message queue (850).

도 11은 본 발명의 일실시예에 있어서, 백엔드 스토리지 관점에서의 볼륨 삭제의 과정의 예를 도시한 도면이다.Figure 11 is a diagram illustrating an example of a volume deletion process from a back-end storage perspective, according to an embodiment of the present invention.

볼륨 삭제 시, 클라이언트로부터 볼륨 삭제 요청(Volume delete)이 들어오면, 신더-api(810)는 인증 매니저(820)를 통해 사용자 요청의 인증/인가를 확인(1. Auth user, project and role)할 수 있다. 이후, 신더-api(810)는 삭제 요청이 들어온 볼륨에 대한 정보를 신더 데이터베이스(840)에서 삭제(2. Delete volume metadata)할 수 있다.When deleting a volume, if a volume delete request is received from the client, the cinder-api (810) verifies the authentication/authorization of the user request (1. Auth user, project and role) through the authentication manager (820). You can. Afterwards, the cinder-api 810 can delete information about the volume for which a deletion request has been received from the cinder database 840 (2. Delete volume metadata).

또한, 신더-api(810)는 메시지 큐(850)를 통해 해당 볼륨을 담당하는 신더-볼륨 2(870)로 LV를 삭제하도록 요청(3. Request volume delete)을 보낼 수 있다. 이때, 신더-볼륨 2(870)는 메시지 큐(850)를 통해 전달된 요청에 따라 LV를 제거하는 작업을 수행(4. Delete LV)할 수 있다.Additionally, Cinder-api (810) may send a request (3. Request volume delete) to delete the LV to Cinder-Volume 2 (870) in charge of the corresponding volume through the message queue (850). At this time, Cinder-Volume 2 (870) can perform the task of removing the LV (4. Delete LV) according to the request transmitted through the message queue (850).

앞선 실시예들에서 설명한 컴포넌트들은 소프트웨어 모듈의 형태로 구현될 수 있으며, 적어도 하나의 프로세서(일례로, 프로세서(220))가 수행하는 동작의 기능적 표현들(functional expressions)일 수 있다. 예를 들어, 클라이언트나 백엔드 스토리지를 구현하는 컴퓨터 장치(200)의 프로세서(220)는 메모리(210)가 포함하는 운영체제의 코드나 적어도 하나의 컴퓨터 프로그램의 코드에 따른 제어 명령(instruction)을 실행하도록 구현될 수 있다. 여기서, 프로세서(220)는 컴퓨터 장치(200)에 저장된 코드가 제공하는 제어 명령에 따라 컴퓨터 장치(200)가 앞서 설명한 실시예들에 따른 과정의 동작들을 수행하도록 컴퓨터 장치(200)를 제어할 수 있다.The components described in the previous embodiments may be implemented in the form of software modules and may be functional expressions of operations performed by at least one processor (eg, processor 220). For example, the processor 220 of the computer device 200 that implements a client or back-end storage executes control instructions according to the code of an operating system or at least one computer program included in the memory 210. It can be implemented. Here, the processor 220 may control the computer device 200 so that the computer device 200 performs the operations according to the above-described embodiments according to control instructions provided by the code stored in the computer device 200. there is.

이처럼, 본 발명의 실시예들에 따르면, 클라이언트-서버 환경에서 클라이언트가 서버의 스토리지를 사용할 수 있도록 서버에서 클라이언트로 볼륨을 제공할 수 있다.As such, according to embodiments of the present invention, in a client-server environment, a volume can be provided from the server to the client so that the client can use the server's storage.

이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The system or device described above may be implemented with hardware components or a combination of hardware components and software components. For example, devices and components described in embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA), etc. , may be implemented using one or more general-purpose or special-purpose computers, such as a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. Additionally, a processing device may access, store, manipulate, process, and generate data in response to the execution of software. For ease of understanding, a single processing device may be described as being used; however, those skilled in the art will understand that a processing device includes multiple processing elements and/or multiple types of processing elements. It can be seen that it may include. For example, a processing device may include a plurality of processors or one processor and one controller. Additionally, other processing configurations, such as parallel processors, are possible.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록매체에 저장될 수 있다.Software may include a computer program, code, instructions, or a combination of one or more of these, which may configure a processing unit to operate as desired, or may be processed independently or collectively. You can command the device. Software and/or data may be used on any type of machine, component, physical device, virtual equipment, computer storage medium or device to be interpreted by or to provide instructions or data to a processing device. It can be embodied in . Software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored on one or more computer-readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, etc., singly or in combination. The medium may continuously store a computer-executable program, or may temporarily store it for execution or download. In addition, the medium may be a variety of recording or storage means in the form of a single or several pieces of hardware combined. It is not limited to a medium directly connected to a computer system and may be distributed over a network. Examples of media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical recording media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, And there may be something configured to store program instructions, including ROM, RAM, flash memory, etc. Additionally, examples of other media include recording or storage media managed by app stores that distribute applications, sites that supply or distribute various other software, or servers. Examples of program instructions include machine language code, such as that produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter, etc.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with limited examples and drawings, various modifications and variations can be made by those skilled in the art from the above description. For example, the described techniques are performed in a different order than the described method, and/or components of the described system, structure, device, circuit, etc. are combined or combined in a different form than the described method, or other components are used. Alternatively, appropriate results may be achieved even if substituted or substituted by an equivalent.

그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents of the claims also fall within the scope of the following claims.

Claims (20)

백엔드 스토리지를 구현하는 컴퓨터 장치의 볼륨 제공 방법에 있어서,
상기 컴퓨터 장치가 포함하는 적어도 하나의 프로세서에 의해, 컨테이너 환경의 클라이언트로부터 볼륨 생성 요청을 수신하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 볼륨 생성 요청에 따라 볼륨의 메타데이터를 데이터베이스에 저장하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 볼륨을 생성할 상기 백엔드 스토리지의 볼륨 노드를 스케줄링하는 단계; 및
상기 적어도 하나의 프로세서에 의해, 상기 스케줄링을 통해 선정된 볼륨 노드로 상기 볼륨에 대응하는 논리적 볼륨(Logical Volume, LV)의 생성을 요청하는 단계
를 포함하는 볼륨 제공 방법.
In a method of providing a volume of a computer device implementing backend storage,
Receiving, by at least one processor included in the computer device, a volume creation request from a client in a container environment;
storing volume metadata in a database according to the volume creation request, by the at least one processor;
scheduling, by the at least one processor, a volume node of the backend storage to create the volume; and
Requesting, by the at least one processor, the creation of a logical volume (LV) corresponding to the volume to a volume node selected through the scheduling
How to provide a volume containing.
제1항에 있어서,
상기 볼륨 생성 요청은 상기 클라이언트에서 PVC(Persistence Volume Claim)가 생성됨에 따른 상기 클라이언트의 API 호출에 의해 수신되는 것을 특징으로 하는 볼륨 제공 방법.
According to paragraph 1,
The volume creation request is received through an API call from the client as a Persistence Volume Claim (PVC) is created in the client.
제1항에 있어서,
상기 스케줄링하는 단계는,
스케줄링 알고리즘에 따라 상기 볼륨 노드를 스케줄링하는 모듈을 호출 한 후, 상기 선정된 볼륨 노드로부터의 응답과 무관하게 상기 볼륨 생성 요청에 대한 응답을 상기 클라이언트로 전달하는 단계; 및
상기 호출된 모듈을 이용한 상기 스케줄링을 통해 복수의 볼륨 노드들 중 하나의 볼륨 노드를 선정하는 단계
를 포함하는 볼륨 제공 방법.
According to paragraph 1,
The scheduling step is,
After calling a module for scheduling the volume node according to a scheduling algorithm, delivering a response to the volume creation request to the client regardless of a response from the selected volume node; and
Selecting one volume node among a plurality of volume nodes through the scheduling using the called module.
How to provide a volume containing.
제3항에 있어서,
상기 클라이언트로 전달된 응답에 기초하여 상기 클라이언트에서 볼륨을 관리하는 PV(Persistence Volume)가 생성되어 상기 볼륨 생성 요청을 유발한 PVC와 바인딩되는 것을 특징으로 하는 볼륨 제공 방법.
According to paragraph 3,
A volume provision method characterized in that a PV (Persistence Volume) that manages the volume in the client is created based on the response delivered to the client and bound to the PVC that triggered the volume creation request.
제1항에 있어서,
상기 선정된 볼륨 노드로의 요청에 따라 상기 선정된 볼륨 노드에서 상기 볼륨에 대응하는 논리적 볼륨이 생성되는 것을 특징으로 하는 볼륨 제공 방법.
According to paragraph 1,
A volume provision method characterized in that a logical volume corresponding to the volume is created at the selected volume node according to a request to the selected volume node.
제1항에 있어서,
상기 적어도 하나의 프로세서에 의해, 상기 클라이언트로부터 볼륨 삭제 요청을 수신하는 단계; 및
상기 적어도 하나의 프로세서에 의해, 상기 볼륨 삭제 요청을 메시지 큐를 통해 상기 선정된 볼륨 노드로 전달하는 단계
를 더 포함하는 볼륨 제공 방법.
According to paragraph 1,
Receiving, by the at least one processor, a volume delete request from the client; and
Forwarding, by the at least one processor, the volume deletion request to the selected volume node through a message queue.
A method of providing a volume further comprising:
제6항에 있어서,
상기 볼륨 삭제 요청에 따라 상기 선정된 볼륨 노드에서 대응하는 논리적 볼륨이 삭제되는 것을 특징으로 하는 볼륨 제공 방법.
According to clause 6,
A volume provision method characterized in that the corresponding logical volume is deleted from the selected volume node in response to the volume deletion request.
백엔드 스토리지를 구현하는 컴퓨터 장치의 볼륨 제공 방법에 있어서,
상기 컴퓨터 장치가 포함하는 적어도 하나의 프로세서에 의해, 컨테이너 환경의 클라이언트로부터 볼륨 익스포트 요청을 수신하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 볼륨 익스포트 요청에 따라 대응하는 볼륨을 관리하는 볼륨 노드로 타겟의 생성 및 익스포트를 요청하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 볼륨 노드로부터 익스포트된 타겟의 정보를 수신하는 단계; 및
상기 적어도 하나의 프로세서에 의해, 상기 수신된 타겟의 정보를 상기 클라이언트로 전달하는 단계
를 포함하는 볼륨 제공 방법.
In a method of providing a volume of a computer device implementing backend storage,
Receiving, by at least one processor included in the computer device, a volume export request from a client in a container environment;
Requesting, by the at least one processor, creation and export of a target to a volume node that manages a corresponding volume according to the volume export request;
Receiving, by the at least one processor, information on a target exported from the volume node; and
Transferring the received target information to the client by the at least one processor
How to provide a volume containing.
제8항에 있어서,
상기 볼륨 익스포트 요청은 상기 클라이언트에서 파드(Pod)가 생성됨에 따른 상기 클라이언트의 API 호출에 의해 수신되는 것을 특징으로 하는 볼륨 제공 방법.
According to clause 8,
A volume provision method, characterized in that the volume export request is received by an API call from the client as a pod is created in the client.
제8항에 있어서,
상기 타겟의 생성 및 익스포트 요청에 응답하여 상기 볼륨 노드에서 상기 볼륨 노드에 생성된 논리적 볼륨에 대응하는 타겟이 생성 및 익스포트되고, 상기 생성된 타겟의 정보가 상기 컴퓨터 장치로 전달되는 것을 특징으로 하는 볼륨 제공 방법.
According to clause 8,
In response to a request for creation and export of the target, a target corresponding to the logical volume created in the volume node is created and exported at the volume node, and information on the created target is transmitted to the computer device. How to provide.
제8항에 있어서,
상기 타겟의 정보는 상기 볼륨 노드로서의 호스트의 IP, 포트 및 상기 타겟의 식별자를 포함하는 것을 특징으로 하는 볼륨 제공 방법.
According to clause 8,
The target information includes the IP of the host serving as the volume node, the port, and the identifier of the target.
제8항에 있어서,
상기 타겟의 정보에 기반하여 상기 클라이언트에서 상기 타겟에 접근함으로써 상기 타겟이 상기 클라이언트의 블록 디바이스에 맵핑되고,
상기 클라이언트에서 생성된 파드가 상기 블록 디바이스에 바인딩되어 상기 타겟에 대응하는 상기 볼륨 노드의 논리적 볼륨에 접근 가능해지는 것을 특징으로 하는 볼륨 제공 방법.
According to clause 8,
The target is mapped to the block device of the client by accessing the target from the client based on the information on the target,
A volume provision method, wherein the pod created in the client is bound to the block device and becomes accessible to the logical volume of the volume node corresponding to the target.
제8항에 있어서,
상기 적어도 하나의 프로세서에 의해, 상기 클라이언트로부터 익스포트 제거 요청을 수신하는 단계; 및
상기 적어도 하나의 프로세서에 의해, 상기 익스포트 제거 요청을 메시지 큐를 통해 상기 볼륨 노드로 전달하는 단계
를 더 포함하는 것을 특징으로 하는 볼륨 제공 방법.
According to clause 8,
receiving, by the at least one processor, an export removal request from the client; and
Forwarding, by the at least one processor, the export removal request to the volume node through a message queue.
A volume providing method further comprising:
제13항에 있어서,
상기 익스포트 제거 요청에 따라 상기 볼륨 노드에서 상기 타겟을 제거하는 것을 특징으로 하는 볼륨 제공 방법.
According to clause 13,
A volume provision method characterized in that the target is removed from the volume node according to the export removal request.
제1항 내지 제14항 중 어느 한 항의 방법을 상기 컴퓨터 장치에 실행시키기 위해 컴퓨터 판독가능한 기록 매체에 저장되는 컴퓨터 프로그램.A computer program stored in a computer-readable recording medium for executing the method of any one of claims 1 to 14 on the computer device. 컴퓨터 장치에 있어서,
상기 컴퓨터 장치에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서
를 포함하고,
상기 적어도 하나의 프로세서에 의해,
컨테이너 환경의 클라이언트로부터 볼륨 생성 요청을 수신하는 단계;
상기 볼륨 생성 요청에 따라 볼륨의 메타데이터를 데이터베이스에 저장하는 단계;
상기 볼륨을 생성할 백엔드 스토리지의 볼륨 노드를 스케줄링하는 단계; 및
상기 스케줄링을 통해 선정된 볼륨 노드로 상기 볼륨에 대응하는 논리적 볼륨(Logical Volume, LV)의 생성을 요청하는 것
을 특징으로 하는 컴퓨터 장치.
In computer devices,
At least one processor implemented to execute readable instructions on the computer device
Including,
By the at least one processor,
Receiving a volume creation request from a client in a container environment;
storing volume metadata in a database according to the volume creation request;
Scheduling a volume node of backend storage to create the volume; and
Requesting the creation of a logical volume (Logical Volume, LV) corresponding to the volume to the volume node selected through the scheduling.
A computer device characterized by a.
제16항에 있어서,
상기 볼륨 생성 요청은 상기 클라이언트에서 PVC(Persistence Volume Claim)가 생성됨에 따른 상기 클라이언트의 API 호출에 의해 수신되는 것
을 특징으로 하는 컴퓨터 장치.
According to clause 16,
The volume creation request is received by an API call from the client as a PVC (Persistence Volume Claim) is created in the client.
A computer device characterized by a.
제16항에 있어서,
상기 스케줄링을 위해, 상기 적어도 하나의 프로세서에 의해,
스케줄링 알고리즘에 따라 상기 볼륨 노드를 스케줄링하는 모듈을 호출 한 후, 상기 선정된 볼륨 노드로부터의 응답과 무관하게 상기 볼륨 생성 요청에 대한 응답을 상기 클라이언트로 전달하고,
상기 호출된 모듈을 이용한 상기 스케줄링을 통해 복수의 볼륨 노드들 중 하나의 볼륨 노드를 선정하는 것
을 특징으로 하는 컴퓨터 장치.
According to clause 16,
For the scheduling, by the at least one processor,
After calling a module for scheduling the volume node according to a scheduling algorithm, a response to the volume creation request is delivered to the client regardless of the response from the selected volume node,
Selecting one volume node among a plurality of volume nodes through the scheduling using the called module.
A computer device characterized by a.
컴퓨터 장치에 있어서,
상기 컴퓨터 장치에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서
를 포함하고,
상기 적어도 하나의 프로세서에 의해,
컨테이너 환경의 클라이언트로부터 볼륨 익스포트 요청을 수신하고,
상기 볼륨 익스포트 요청에 따라 대응하는 볼륨을 관리하는 볼륨 노드로 타겟의 생성 및 익스포트를 요청하고,
상기 볼륨 노드로부터 익스포트된 타겟의 정보를 수신하고,
상기 수신된 타겟의 정보를 상기 클라이언트로 전달하는 것
을 특징으로 하는 컴퓨터 장치.
In computer devices,
At least one processor implemented to execute readable instructions on the computer device
Including,
By the at least one processor,
Receive volume export requests from clients in the container environment,
Request creation and export of a target to the volume node that manages the corresponding volume according to the volume export request,
Receive information about the target exported from the volume node,
Transferring the received target information to the client
A computer device characterized by a.
제19항에 있어서,
상기 볼륨 익스포트 요청은 상기 클라이언트에서 파드(Pod)가 생성됨에 따른 상기 클라이언트의 API 호출에 의해 수신되는 것
을 특징으로 하는 컴퓨터 장치.
According to clause 19,
The volume export request is received by the client's API call as a pod is created in the client.
A computer device characterized by a.
KR1020220065509A 2022-05-27 2022-05-27 Method and system for providing volume to container environment KR20230165571A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220065509A KR20230165571A (en) 2022-05-27 2022-05-27 Method and system for providing volume to container environment
JP2023080323A JP2023174559A (en) 2022-05-27 2023-05-15 Method and system for providing volume in a container environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220065509A KR20230165571A (en) 2022-05-27 2022-05-27 Method and system for providing volume to container environment

Publications (1)

Publication Number Publication Date
KR20230165571A true KR20230165571A (en) 2023-12-05

Family

ID=89030303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220065509A KR20230165571A (en) 2022-05-27 2022-05-27 Method and system for providing volume to container environment

Country Status (2)

Country Link
JP (1) JP2023174559A (en)
KR (1) KR20230165571A (en)

Also Published As

Publication number Publication date
JP2023174559A (en) 2023-12-07

Similar Documents

Publication Publication Date Title
US8627333B2 (en) Message queuing with flexible consistency options
CN112753019A (en) Efficient state maintenance of execution environments in on-demand code execution systems
CN113287286B (en) Input/output processing in distributed storage nodes over RDMA
CN109582441A (en) For providing system, the method and apparatus of container service
US20120096043A1 (en) Data graph cloud system and method
US11409707B2 (en) Sharing resources among remote repositories utilizing a lock file in a shared file system or a node graph in a peer-to-peer system
CN104156216A (en) Heterogeneous storage management system and method oriented to cloud computing
CN114586011B (en) Inserting an owner-specified data processing pipeline into an input/output path of an object storage service
US9372879B1 (en) Balanced append tree data structure
CA2961229C (en) Asynchronous processing of mapping information
US20140324917A1 (en) Reclamation of empty pages in database tables
US20130227232A1 (en) Partition aware quality of service feature
CN103312624A (en) Message queue service system and method
CN106293847B (en) A kind of method of virtual platform supporting
CN111684437B (en) Staggered update key-value storage system ordered by time sequence
CN109144785A (en) Method and apparatus for Backup Data
CN112685499A (en) Method, device and equipment for synchronizing process data of work service flow
CN109032753B (en) Heterogeneous virtual machine hard disk hosting method and system, storage medium and Nova platform
JP2023518136A (en) FILE PROCESSING METHOD, APPARATUS, ELECTRONIC DEVICE, STORAGE MEDIUM, AND PROGRAM
US9578120B1 (en) Messaging with key-value persistence
KR20230165571A (en) Method and system for providing volume to container environment
US11604669B2 (en) Single use execution environment for on-demand code execution
US11778548B2 (en) Deploying containers on a 5G slice network
US20230315543A1 (en) Tightly coupled parallel applications on a serverless computing system
US20230315541A1 (en) Tightly coupled parallel applications on a serverless computing system