KR102567971B1 - 스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법 - Google Patents

스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR102567971B1
KR102567971B1 KR1020160149590A KR20160149590A KR102567971B1 KR 102567971 B1 KR102567971 B1 KR 102567971B1 KR 1020160149590 A KR1020160149590 A KR 1020160149590A KR 20160149590 A KR20160149590 A KR 20160149590A KR 102567971 B1 KR102567971 B1 KR 102567971B1
Authority
KR
South Korea
Prior art keywords
server node
segment
server
memory
information
Prior art date
Application number
KR1020160149590A
Other languages
English (en)
Other versions
KR20180052369A (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 KR1020160149590A priority Critical patent/KR102567971B1/ko
Priority to US15/601,171 priority patent/US10200462B2/en
Publication of KR20180052369A publication Critical patent/KR20180052369A/ko
Application granted granted Critical
Publication of KR102567971B1 publication Critical patent/KR102567971B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1088Scrubbing in RAID systems with parity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions

Abstract

본 개시에 일 실시예에 따른 메모리 시스템 동작의 방법에서, 상기 메모리 시스템은 다수 개의 세그먼트들을 포함하는 스토리지 어레이, 상기 세그먼트들을 할당하여 관리하는 제1 서버 노드 및 제2 서버 노드를 포함하고,
상기 제1 서버 노드가 메모리 동작을 수행하기 전에 상기 제2 서버 노드에 로드 정보를 요청하는 단계, 상기 제1 서버 노드가 상기 제2 서버 노드로부터 상기 로드 정보를 수신하고, 상기 제1 서버 노드의 로드 정보와 상기 제2 서버 노드의 로드 정보를 비교하는 단계, 상기 제1 서버 노드가 상기 비교 결과를 기반으로 로드 밸런싱 동작을 수행하는 단계 및 상기 제1 서버 노드가 상기 로드 밸런싱 동작에 부합하는 상기 스토리지 어레이에 대한 세그먼트 다이나믹 할당 동작을 수행하는 단계를 포함한다.

Description

스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법{Memory system including a plurality of sercer nodes sharing storage array and operating method thereof}
본 개시의 기술적 사상은 메모리 시스템에 관한 것으로, 더욱 상세하게는 스토리지 어레이를 공유하여 세그먼트 다이나믹 할당 동작을 수행하는 메모리 시스템 및 및 그 동작 방법에 관한 것이다.
메모리 시스템에서 다수의 서버 노드들은 하나의 JBOD(Just a Bunch of Disks or Drives) 형태의 스토리지 어레이를 공유할 수 있으며, 이를 이용하여 호스트로 스토리지 서비스를 제공할 수 있다. 또한, 메모리 시스템이 RAID(Redundant Array of Inexpensive Disk)를 지원할 수 있어 스토리지 어레이에 대한 입출력 작업의 균형을 이룰수 있고 서버 노드들의 전체적인 성능이 개선되었다.
본 개시의 기술적 사상이 해결하려는 과제는 각각의 서버 노드들간의 세그먼트 다이나믹 할당 동작을 수행하기 위한 메모리 시스템 및 그의 동작 방법을 제공하는 데에 있다.
본 개시에 일 실시예에 따른 메모리 시스템 동작의 방법에서, 상기 메모리 시스템은 다수 개의 세그먼트들을 포함하는 스토리지 어레이, 상기 세그먼트들을 할당하여 관리하는 제1 서버 노드 및 제2 서버 노드를 포함하고, 상기 제1 서버 노드가 메모리 동작을 수행하기 전에 상기 제2 서버 노드에 로드 정보를 요청하는 단계, 상기 제1 서버 노드가 상기 제2 서버 노드로부터 상기 로드 정보를 수신하고, 상기 제1 서버 노드의 로드 정보와 상기 제2 서버 노드의 로드 정보를 비교하는 단계, 상기 제1 서버 노드가 상기 비교 결과를 기반으로 로드 밸런싱 동작을 수행하는 단계 및 상기 제1 서버 노드가 상기 로드 밸런싱 동작에 부합하는 상기 스토리지 어레이에 대한 세그먼트 다이나믹 할당 동작을 수행하는 단계를 포함한다.
본 개시에 다른 실시예에 따른 메모리 시스템 동작의 방법에서, 상기 메모리 시스템은 다수 개의 세그먼트들을 포함하는 스토리지 어레이, 상기 세그먼트들을 볼륨 단위로 할당하여 관리하는 제1 서버 노드 및 제2 서버 노드를 포함하고, 상기 제1 서버 노드가 메모리 동작 수행하기 전에 상기 제2 서버 노드에 로드 정보를 요청하는 단계, 상기 제1 서버 노드가 상기 제2 서버 노드로부터 상기 로드 정보를 수신하고, 상기 제1 서버 노드의 로드 정보와 상기 제2 서버 노드의 로드 정보를 비교하는 단계, 상기 제1 서버 노드가 상기 비교 결과를 기반으로 볼륨 마이그레이션 동작을 수행하는 단계 및 상기 제1 서버 노드가 볼륨 마이그레이션 동작에 부합하는 상기 스토리지 어레이에 대한 세그먼트 다이나믹 할당 동작을 수행하는 단계를 포함한다.
본 개시에 따른 서버 노드들 및 적어도 하나의 스토리지 어레이를 포함하는 메모리 시스템의 각 서버 노드들의 로드 정도를 고려한 세그먼트 다이나믹 할당 동작 및 로드 밸런싱 동작을 통해, 메모리 시스템의 입출력 성능을 향상시킬 수 있으며, 메모리 시스템이 호스트에 좀더 빠르게 스토리지 서비스 결과를 제공할 수 있는 효과가 있다.
도 1은 본 개시의 일 실시예에 따른 클러스터의 연결 관계를 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 서버 노드를 나타내는 블록도이다.
도 3a 및 도 3b는 본 개시의 일 실시예에 따른 스토리지 어레이를 공유하는 다수의 서버 노드들을 설명하기 위한 도면이다.
도 4a 및 도 4b는 도 2의 세그먼트 다이나믹 할당부와 로드 밸런싱 체커의 동작을 설명하기 위한 도면이다.
도 5는 본 개시의 일 실시예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 6은 본 개시의 일 실시예에 따라 가비지 콜렉션 동작을 수행할 때에 메모리 시스템의 동작 방법을 설명하기 위한 블록도이다.
도 7a 및 도 7b, 도 8은 본 개시의 다양한 실시예에 따라 가비지 콜렉션 동작을 수행할 때에 메모리 시스템의 동작을 예시적으로 설명하기 위한 도면이다.
도 9는 본 개시의 일 실시예에 따라 RAID 리빌드 동작을 수행할 때에 메모리 시스템의 동작을 구체적으로 설명하기 위한 도면이다.
도 10은 본 개시의 일 실시예에 따라 RAID 리빌드 동작을 수행할 때에 메모리 시스템의 동작을 예시적으로 설명하기 위한 도면이다.
도 11은 본 개시의 일 실시예에 따라 RAID 스크러빙 동작을 수행할 때에 메모리 시스템의 동작을 구체적으로 설명하기 위한 도면이다.
도 12는 본 개시의 일 실시예에 따라 RAID 스크러빙 동작을 수행할 때에 메모리 시스템의 동작을 예시적으로 설명하기 위한 도면이다.
도 13은 본 개시의 다른 실시예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 14a 및 도 14b는 포그라운드 동작을 수행할 때에 메모리 시스템의 동작 방법을 설명하기 위한 도면이다.
도 15a 및 도 15b는 본 개시의 일 실시예에 따라 포그라운드 동작을 수행할 때에 메모리 시스템의 동작 방법을 설명하기 위한 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 클러스터의 연결 관계를 나타내는 블록도이다 .
도 1을 참조하면, 클러스터(cluster, 100)는 다수의 호스트들(110), 다수의 서버 노드들(130) 및 다수의 스토리지 어레이(160)를 포함할 수 있다. 다수의 서버 노드들(130)은 스토리지 장치에 저장된 정보를 호스트(110)에 제공하는 스토리지 서비스를 수행할 수 있도록 구성될 수 있다. 다수의 서버 노드들(130)은 적어도 하나의 호스트(110)와 연결(connect)되기 위한 하드 웨어 및 소프트 웨어를 포함할 수 있다. 또한, 다수의 서버 노드들(130)은 적어도 하나의 스토리지 어레이(160)와 스토리지 인터커넥트(150)를 통해 연결되어 스토리지 아키텍쳐에 부합하는 스토리지 서비스를 호스트(110)에 제공할 수 있다. 일 실시예로, 다수의 서버 노드들(130) 및 적어도 하나의 스토리지 어레이(160)를 포함하는 구성을 메모리 시스템으로 정의할 수 있다. 메모리 시스템의 서버 노드들(130)은 하나의 스토리지 어레이(160)를 공유할 수 있다. 다만, 이는 일 예에 불과하며, 서버 노드들(130)은 다수의 스토리지 어레이들(160)을 각각 공유할 수 있다.
각각의 호스트들(110)은 서버 노드(130)와 클라이언트/서버 모델에 부합하는 통신을 수행할 수 있다. 일 실시예로, 호스트(120)는 서버 노드(130)에 데이터에 대한 기록 또는 독출 등과 같은 메모리 동작을 네트워크(120)를 통해 요청할 수 있으며, 서버 노드(130)는 요청에 응답하여 스토리지 서비스의 결과를 호스트(110)에 네트워크(130)를 통해 제공할 수 있다. 호스트(110)에서 서버 노드(130)에 네트워크(120)를 통해 송신하는 데이터 패킷(Packet) 포맷은 파일 기반 접근 프로토콜(예를 들면, NFS(Network File System) 프로토콜)에 부합할 수 있다.
다수의 서버 노드들(130)은 다수의 세그먼트들을 포함하는 스토리지 어레이(160)를 공유할 수 있다. 세그먼트(Segment)는 스토리지 어레이(160)에 대한 소정의 메모리 공간 단위를 지칭할 수 있다. 각각의 서버 노드들(130)은 스토리지 어레이(160)의 세그먼트들 중 일부를 자신의 세그먼트로 할당하여 호스트(120)로부터 요청된 메모리 동작을 수행할 수 있다.
본 개시의 일 실시예에 따라, 서버 노드(130)는 로드 밸런싱 체커(132) 및 세그먼트 다이나믹 할당부(134)를 포함할 수 있다. 각각의 서버 노드들(130)은 클러스터 인터커넥트(140)를 통해 연결되어 로드 밸런싱을 체킹하기 위해 필요한 로드 정보들을 주기적으로 서로 송수신할 수 있다. 또한, 각각의 서버 노드들(130)은 클러스터 인터커넥트(140)를 통해 세그먼트를 다이나믹하게 할당하기 위해 필요한 세그먼트 할당 정보들을 주기적으로 서로 송수신할 수 있다.
로드 밸런싱 체커(132)는 다른 서버 노드들(130)로부터 수신한 로드 정보를 이용하여 다른 서버 노드들(130)의 처리중인 프로세스에 관한 로드 정도를 체크할 수 있고, 호스트(110)로부터 수신한 메모리 동작(예를 들면, 포그라운드 동작(Foreground operation)) 요청을 배분하여 다른 서버 노드들(130)이 수행하도록 하는 로드 밸런싱 동작을 수행할 수 있다. 또한, 로드 밸런싱 체커(132)는 호스트(110)의 요청과는 무관한 메모리 동작(예를 들면, 백그라운드 동작(Background operation))을 배분하여 다른 서버 노드들(130)이 수행하도록 하는 로드 밸런싱 동작을 수행할 수 있다. 세그먼트 다이나믹 할당부(134)는 로드 밸런싱 체커(132)의 로드 밸런싱 동작에 부합하는 세그먼트 다이나믹 할당 동작을 수행할 수 있다. 즉, 세그먼트 다이나믹 할당부(134)는 다이나믹 할당 동작을 수행하여, 서버 노드(130)에 할당된 세그먼트를 나타내는 세그먼트 할당 정보를 변경할 수 있으며, 변경된 세그먼트 할당 정보를 다른 서버들(130)에 제공하고, 다른 서버들(130)에 대한 세그먼트 다이나믹 할당 동작을 요청할 수 있다. 다른 서버들(130)에 포함된 세그먼트 다이나믹 할당부(134)는 다이나믹 할당 동작 요청에 응답하여 변경된 세그먼트 할당 정보에 기반한 세그먼트 다이나믹 할당 동작을 수행할 수 있다. 각각의 서버 노드들(130)은 세그먼트 다이나믹 할당 동작을 통해 변경된 각각의 세그먼트 할당 정보를 기반으로, 호스트(110)로부터 수신한 요청에 의한 포그라운드 동작을 수행하거나, 백그라운드 동작을 수행할 수 있다.
이와 같은, 서버 노드들(130) 및 적어도 하나의 스토리지 어레이(160)를 포함하는 메모리 시스템의 세그먼트 다이나믹 할당 동작을 통해, 메모리 시스템의 입출력 성능을 향상시킬 수 있으며, 호스트(110)에 좀더 빠르게 스토리지 서비스 결과를 제공할 수 있는 효과가 있다.
도 2는 본 개시의 일 실시예에 따른 서버 노드를 나타내는 블록도이다 .
도 2를 참조하면, 서버 노드(200)는 스토리지 컨트롤러(210), 메모리(220), 네트워크 어댑터(230) 및 클러스터 인터커넥트 인터페이스(240)를 포함할 수 있다. 메모리(220)는 스토리지 컨트롤러(210)와 메모리 버스를 통해 연결될 수 있으며, 소프트웨어 프로그램인 스토리지 I/O 스택(222) 및 스토리지 어레이(160)에 관한 데이터 구조에 대한 정보를 저장할 수 있다.
네트워크 어댑터(230)는 호스트(HOST)와 연결되는 하나 이상의 포트들을 포함할 수 있다. 또한, 네트워크 어댑터(230)는 호스트(HOST)와 서버 노드(200)간의 네트워크를 위한 전기적인 시그널링 회로를 포함할 수 있다. 네트워크 어댑터(230)는 호스트(HOST)로부터 논리 어드레스, 메모리 동작 요청 및 데이터 등을 수신하여, 스토리지 컨트롤러(210)에 제공할 수 있다.
클러스터 인터커넥트 인터페이스(240)는 하나의 클러스터 내의 다른 서버 노드들과 연결되는 하나 이상의 포트들을 포함할 수 있다. 스토리지 컨트롤러(210)는 클러스터 인터커넥트 인터페이스(240)를 통해 다른 서버들에 서버 노드(200)의 로드 정보, 로드 밸런싱 동작 관련 요청, 세그먼트 할당 정보 및 세그먼트 다이나믹 할당 동작 요청 등을 제공할 수 있으며, 다른 서버들로부터 다른 서버들의 로드 정보, 로드 밸런싱 동작 관련 요청, 세그먼트 할당 정보 및 세그먼트 다이나믹 할당 동작 요청 등을 수신할 수 있다.
스토리지 컨트롤러(210)는 메모리(220)에 저장된 스토리지 I/O 스택(222)과 같은 소프트웨어 프로그램을 실행할 수 있으며, 데이터 구조를 관리할 수 있다. 또한, 스토리지 컨트롤러(210)는 로드 밸런싱 체커(212), 세그먼트 다이나믹 할당부(214) 및 세그먼트 할당 정보 저장부(SAI storage, Segment Allocating Information storage)(216)를 포함할 수 있다. 스토리지 컨트롤러(210)는 스토리지 컨트롤러(210)와 연결된 스토리지 어레이(160)를 이용하여 메모리 동작을 수행할 수 있다. 일 실시예로, 로드 밸런싱 체커(210)는 메모리 동작을 수행할 때에, 다른 서버 노드들과 자신의 서버 노드(200)간의 로드 밸런싱을 체크할 수 있다. 로드 밸런싱 체커(210)는 로드 밸런싱 체크 결과 자신의 서버 노드(200)와 다른 서버 노드들간의 로드 정도 차이가 임계값 이상인 때에는 서버 노드(200)가 수행하려는 메모리 동작을 배분하여, 다른 서버 노드들 중 적어도 어느 하나가 대신 메모리 동작을 수행하도록 로드 밸런싱 동작을 수행할 수 있다. 다만, 이는 예시적 실시예에 불과한 바, 이에 국한되지 않으며, 로드 밸런싱 체커(210)는 다른 서버 노드들이 수행해야 되는 메모리 동작을 배분하여 자신의 서버 노드(200)가 대신 수행하도록 로드 밸런싱 동작을 수행할 수도 있다.
세그먼트 다이나믹 할당부(214)는 로드 밸런싱 동작에 부합하는 세그먼트 다이나믹 할당 동작을 수행할 수 있다. 예를 들면, 세그먼트 다이나믹 할당부(214)는 자신의 서버 노드(200)에 할당된 제n 세그먼트에 대응하는 메모리 동작이 다른 서버 노드에서 대신 수행되는 것이 결정된 경우에는, 세그먼트 할당 정보 저장부(216)에 저장된 세그먼트 할당 정보를 변경하여 제1 세그먼트에 대한 할당을 해제하고, 다른 서버 노드에 제n 세그먼트를 할당할 것을 요청할 수 있다.
서버 노드(200)는 이와 같이, 각각의 서버 노드들의 로드 정도에 따른 세그먼트 다이나믹 할당 동작에 기반하여 메모리 동작을 수행할 수 있어, 효율적인 스토리지 서비스를 호스트(HOST)에 제공할 수 있다.
도 3a 및 도 3b는 본 개시의 일 실시예에 따른 스토리지 어레이를 공유하는 다수의 서버 노드들을 설명하기 위한 도면이다.
도 3a를 참조하면, 다수의 서버 노드들(300_a~300_k)은 적어도 하나의 스토리지 어레이(360)를 스토리지 인터커넥터를 통해 공유할 수 있다. 스토리지 어레이(360)는 다수의 메모리 장치들(360_1~360_m)을 포함할 수 있다. 스토리지 어레이(360)는 JBOD(Just a Bunch of Disks or Drives) 일 수 있으며, 각각의 메모리 장치들(360_1~360_m)은 SSD(Solid State Drive)로 구현될 수 있다. 다만, 이는 예시적 실시예에 불과한 바, 메모리 장치들(360_1~360_m)은 비휘발성 메모리 장치로 구현될 수 있다. 다수의 서버 노드들(300_a~300_k)은 스토리지 어레이(360)를 세그먼트 단위로 공유하여 메모리 동작을 수행할 수 있다. 즉, 스토리지 어레이(360)는 다수의 세그먼트들(Seg#1~Seg#n)을 포함할 수 있으며, 서버 노드들(300_a~300_k)은 각각 서로 다른 세그먼트들을 자신에게 할당할 수 있다. 일 실시예로, 메모리 장치들(360_1~360_m)은 다수의 세그먼트 청크들(Segment Chunk, SC)을 포함할 수 있으며, 세그먼트 청크(SC)는 데이터(DATA)가 저장되는 다수의 페이지들을 포함할 수 있다. 각각의 메모리 장치들(360_1~360_m)의 하나의 세그먼트 청크(SC)를 하나로 묶어 세그먼트로 정의할 수 있다.
구체적으로, 제1 서버 노드(300_a)는 제1 세그먼트(Seg#1), 제3 세그먼트(Seg#3) 및 제5 세그먼트(Seg#5)를 자신에게 할당하고, 그에 대한 세그먼트 할당 정보(SAI_1)를 저장할 수 있다. 제2 서버 노드(300_b)는 제2 세그먼트(Seg#2) 및 제4 세그먼트(Seg#4)를 자신에게 할당하고, 그에 대한 세그먼트 할당 정보(SAI_2)를 저장할 수 있다. 제k 서버 노드(300_k)는 제n-2 세그먼트(Seg#n-2) 및 제n 세그먼트(Seg#n)를 자신에게 할당하고, 그에 대한 세그먼트 할당 정보(SAI_k)를 저장할 수 있다.
일 예로, 제1 서버 노드(300_a)는 제1 세그먼트(Seg#1), 제3 세그먼트(Seg#3) 및 제5 세그먼트(Seg#5)를 이용하여 메모리 동작을 수행할 수 있다. 이와 같은 서버 노드들(300_a~300_k)에 대한 세그먼트 할당은 각 서버 노드들(300_a~300k)의 로드 정도에 따라 다이나믹하게 변경될 수 있으며, 이에 대한 구체적인 내용은 후술한다.
도 3b를 참조하면, 도 3a와 비교하여, 세그먼트 단위 크기를 작게하여 다수의 서버 노드들(300_a~300_k)이 스토리지 어레이(360)를 공유할 수 있다. 일 실시예로, 다수의 서버 노드들(300_a~300_k)은 동작 모드에 따라 세그먼트 단위 크기를 변경할 수 있다. 예를 들면, 다수의 서버 노드들(300_a~300_k)은 제1 동작 모드에서는 세그먼트 단위 크기를 제1 크기로 설정하고, 제2 동작 모드에서는 세그먼트 단위 크기를 제1 크기보다 작은 제2 크기로 설정할 수 있다. 다수의 서버 노드들(300_a~300_k)의 동작 모드는 호스트에 의해 설정되거나, 다수의 서버 노드들(300_a~300_k)이 호스트로부터 수신하는 단위 시간당 메모리 요청의 회수 또는 호스트로부터 수신하는 데이터의 크기 등을 고려하여 메모리 동작 환경에 부합하는 동작 모드를 설정할 수 있다.
예시적으로 도 3b의 스토리지 어레이(360)는 도 3a보다 많은 세그먼트들(Seg#1~Seg#2n)을 포함할 수 있다. 또한, 제1 서버 노드(300_a)는 제1 세그먼트(Seg#1), 제3 세그먼트(Seg#3), 제5 세그먼트(Seg#5), 제7 세그먼트(Seg#7), 제9 세그먼트(Seg#9) 및 제10 세그먼트(Seg#10)를 자신에게 할당하고, 그에 대한 세그먼트 할당 정보(SAI_1')를 저장할 수 있다. 제2 서버 노드(300_b)는 제2 세그먼트(Seg#2), 제4 세그먼트(Seg#4), 제6 세그먼트(Seg#6) 및 제8 세그먼트(Seg#8)를 자신에게 할당하고, 그에 대한 세그먼트 할당 정보(SAI_2')를 저장할 수 있다. 제k 서버 노드(300_k)는 제n-4 세그먼트(Seg#n-2), 제n-2 세그먼트(Seg#n-2) 및 제n 세그먼트(Seg#n)를 자신에게 할당하고, 그에 대한 세그먼트 할당 정보(SAI_k')를 저장할 수 있다.
이와 같이, 다수의 서버 노드들(300_a~300_b)은 세그먼트 단위 크기를 변경할 수 있으며, 메모리 동작 환경에 부합하도록 스토리지 어레이(360)의 세그먼트를 자신에게 할당하여 효율적인 메모리 동작을 수행할 수 있는 효과가 있다.
도 4a 및 도 4b는 도 2의 세그먼트 다이나믹 할당부와 로드 밸런싱 체커의 동작을 설명하기 위한 도면이다.
도 4a를 참조하면, 제1 서버 노드의 제1 세그먼트 다이나믹 할당부(134_1)는 제1 세그먼트 할당 정보(SAI_1)를 관리하여, 스토리지 어레이의 세그먼트를 다이나믹하게 제1 서버 노드로 할당할 수 있다. 제2 서버 노드의 제2 세그먼트 다이나믹 할당부(134_2)는 제2 세그먼트 할당 정보(SAI_2)를 관리하여, 스토리지 어레이의 세그먼트를 다이나믹하게 제2 서버 노드로 할당할 수 있다.
일 실시예로, 세그먼트 할당 정보(SAI_1, SAI_2)는 세그먼트 ID 및 세그먼트 ID에 대응하는 비트 맵(Bit map)을 포함할 수 있다. 비트 맵(Bit map)은 세그먼트가 어느 서버 노드에 할당되어 있는지를 나타내는 비트 데이터일 수 있다. 도 4a에 도시된 바와 같이, 비트 맵이 '01'인 것은 제1 서버 노드에 할당된 세그먼트를 가르키고, '10'인 것은 제2 서버 노드에 할당된 세그먼트를 가르키며, '00'인 것은 어느 서버 노드에도 할당되지 않은 세그먼트를 가르킬 수 있다. 비트 맵의 비트 수는 메모리 시스템에 포함된 서버 노드의 개수에 따라 달라질 수 있다. 예를 들어, 메모리 시스템에 포함된 서버 노드의 개수가 4개 이상 7개 이하인 때에는 비트 맵은 3 비트 데이터로 구현될 수 있다.
제1 세그먼트 다이나믹 할당부(134_1)는 제1 서버 노드에서 수행된 로드 밸런싱 동작에 부합하도록 제2 세그먼트(Seg#2)를 제2 서버 노드에 할당하는 세그먼트 다이나믹 할당 동작(DA_operation)을 수행할 수 있다. 제1 세그먼트 다이나믹 할당부(134_1)는 제1 세그먼트 할당 정보(SAI_1)에서 제2 세그먼트(Seg#2)에 대응하는 비트 맵을 '01' 에서 '10'으로 변경함으로써, 세그먼트 할당 동작(DA_operation)을 수행할 수 있다. 또한, 제1 세그먼트 다이나믹 할당부(134_1)는 제2 세그먼트 다이나믹 할당부(134_2)에 세그먼트 다이나믹 할당 동작 요청(DA_operation Req.)과 함께 변경된 제1 세그먼트 할당 정보(SAI_1')를 제공할 수 있다. 제2 세그먼트 다이나믹 할당부(134_2)는 세그먼트 다이나믹 할당 동작 요청(DA_operation Req.)에 응답하여, 제2 세그먼트 할당 정보(SAI_2)를 변경할 수 있다.
이를 통해, 제2 서버 노드에는 제2 세그먼트(Seg#2)가 다이나믹하게 할당되어, 제2 세그먼트(Seg#2)에 대한 메모리 동작을 제2 서버 노드가 제1 서버 노드 대신에 수행할 수 있다.
도 4b에 도시된 바와 같이, 제1 서버 노드(Server node1)에 포함된 제1 로드 밸런싱 체커는 제1 서버 노드(Server node1)의 제1 로드 정보(Load Information, LI_1)를 관리할 수 있다. 제2 서버 노드(Server node2)에 포함된 제2 로드 밸런싱 체커는 제2 서버 노드(Server node2)의 제2 로드 정보(LI_2)를 관리할 수 있다. 먼저, 도 4b의 그래프는 시간의 지남에 따라 제1 서버 노드(server node1) 및 제2 서버 노드(Server node2)의 노드 활용도(node utilization)을 예시적으로 나타낸다. 노드 활용도는 각 서버 노드들(Server node1, Sever node2)의 프로세스를 처리할 때에 CPU(Central Process Unit) 또는 메모리를 활용하는 정도를 나타내는 지표일 수 있다.
로드 밸런싱 체커는 서버 노드(Server node1, Server node2)의 노드 활용도를 검출하여 이를 소정의 공통 레벨 단위로 변환하여 로드 정보(LI_1, LI_2)로써 생성할 수 있다. 예를 들면, 제1 로드 밸런싱 체커와 제2 로드 밸런싱 체커가 각각 tc 시간에 각 서버 노드(Server node1, Server node2)에 대한 로드 정보를 생성할 수 있다. 제1 서버 노드(Server node1)는 tc 시간에서의 노드 활용도가 X7 내지 X8 범위에 대응되는 제8 레벨(level 8)로 변환하여 제1 로드 정보(LI_1)를 생성할 수 있다. 또한, 제2 서버 노드(Server node2)는 tc 시간에서의 노드 활용도가 X2 내지 X3 범위에 대응되는 제3 레벨(level 3)로 변환하여 제2 로드 정보(LI_2)를 생성할 수 있다.
제1 로드 밸런싱 체커와 제2 로드 밸런싱 체커는 도 1의 클러스터 인터커넥트(140)를 통해 각 로드 정보(LI_1, LI_2)를 서로 송수신할 수 있다. 일 실시예로, 제1 로드 밸런싱 체커는 제2 로드 정보(LI_2)를 수신하여, 제1 로드 정보(LI_1)와 비교하여 비교 결과를 기반으로 로드 밸런싱 동작을 수행할 수 있다. 제1 로드 밸런싱 체커는 제1 로드 정보(LI_1)와 제2 로드 정보(LI_2) 의 차이가 임계값을 초과하는 때에는 로드 밸런싱 동작을 수행할 수 있다. 또한, 제1 로드 밸런싱 체커는 제1 로드 정보(LI_1)와 제2 로드 정보(LI_2)의 차이를 기반으로 로드 밸런싱 동작을 수행할 수 있다. 예를 들면, 제1 로드 밸런싱 체커는 제1 로드 정보(LI_1)와 제2 로드 정보(LI_2)의 차이가 클수록 제1 서버 노드(Server node1)로부터 제2 서버 노드(Server node2)에 배분하는 메모리 동작량을 크게할 수 있다.
도 4a 내지 도 4b는 본 개시의 사상을 예시적으로 설명하기 위하여 메모리 시스템이 2개의 서버 노드들을 포함하는 경우 중심으로 서술하였으나, 이에 국한되지 않고, 메모리 시스템이 다수의 서버 노드들을 포함하는 때에도 도 4a 내지 도4b에서 설명된 사상이 적용될 수 있음은 분명하다.
도 5는 본 개시의 일 실시예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다 .
도 5를 참조하면, 제1 서버 노드(Server node1)는 백그라운드 동작을 수행하기 전에 다른 서버 노드들(Server node2, 3, 4,...)에 다른 서버 노드들(Server node2, 3, 4...)의 로드 정보를 요청할 수 있다(S100). 다른 서버 노드들(Server node2, 3, 4,...)은 로드 정보 요청에 응답하여 각각의 로드 정보를 제1 서버 노드(Server node1)에 전송할 수 있다. 제1 서버 노드(Server node1)는 제1 서버 노드(Server node1)의 로드 정보와 수신한 로드 정보들을 비교할 수 있다(S120). 제1 서버 노드(Server node1)는 비교 결과를 기반으로 로드 밸런싱 동작을 수행할 수 있다(S130). 일 예로, 제1 서버 노드(Server node1)의 로드 정보와 제2 서버 노드(Server node2)의 로드 정보 차이가 임계값을 초과한 때에는, 제1 서버 노드(Server node1)가 수행할 것이 예정되어 있는 메모리 동작 중 일부를 제2 서버 노드(Server node1)로 배분하여 다른 서버 노드들(Server node2, 3, 4,...)이 대신 수행할 수 있도록 로드 밸런싱 동작을 수행할 수 있다. 따라서, S130 단계는 제1 서버 노드(Server node1)가 로드 밸런싱 동작을 수행하는 때에, 로드 밸런싱 동작 관련 요청을 다른 서버 노드들(Server node2, 3, ,4...)에 제공하는 단계(S135)를 포함할 수 있다. 구체적으로, 제1 서버 노드(Server node1)는 제2 서버 노드(Server node2)로 배분된 메모리 동작에 대한 요청을 제2 서버 노드(Server node2)에 제공할 수 있다.
제1 서버 노드(Server node1)는 로드 밸런싱 동작에 부합하는 세그먼트 다이나믹 할당 동작을 수행할 수 있다(S140). 일 예로, 제1 서버 노드(Server node1)는 로드 밸런싱 동작 결과 다른 서버 노드들(Server node2, 3, 4,...)에 배분된 메모리 동작과 연관된 세그먼트들을 다른 서버 노드들(Server node2, 3, 4,...)에 할당하거나 제1 서버 노드(Server node1)에 할당하도록 세그먼트 할당 정보를 변경할 수 있다. 따라서, S140 단계는 제1 서버 노드(Server node1)와 다른 서버 노드들(Server node2, 3, 4,...)간에는 세그먼트 다이나믹 할당 동작 관련 요청 및 관련 정보를 송수신하는 단계(S145)를 포함할 수 있다.
도 6은 본 개시의 일 실시예에 따라 가비지 콜렉션 동작을 수행할 때에 메모리 시스템의 동작 방법을 설명하기 위한 블록도이다 .
도 6을 참조하면, 메모리 시스템(MS)은 제1 서버 노드(400_a), 제2 서버 노드(400_b) 및 스토리지 어레이(460)를 포함할 수 있다. 제1 서버 노드(400_a)는 로드 밸런싱 체커(402), 세그먼트 다이나믹 할당부(404) 및 세그먼트 할당 정보 저장부(406)를 포함할 수 있다. 제1 서버 노드(400_a)가 백그라운드 동작의 일환으로 가비지 콜렉션(Garbage collection) 동작을 수행하기 전에, 로드 밸런싱 체커(402)는 제2 서버 노드(400_b)에 GC 로드 정보 요청 신호(GC_LI req.)를 제공할 수 있다. GC 로드 정보는 제2 서버 노드(400_b)에 할당된 적어도 하나의 세그먼트에 대한 가비지 콜렉션 비용 및 제2 서버 노드(400_b)에 대한 CPU/메모리 활용도 중 적어도 하나에 관한 정보를 포함할 수 있다. 더 나아가, GC 로드 정보는 제2 서버 노드(400_b)에 할당된 적어도 하나의 세그먼트에 대한 가비지 콜렉션 비용 및 제2 서버 노드(400_b)에 대한 CPU/메모리 활용도를 기반으로 생성한 정보에 해당할 수 있다. 로드 밸런싱 체커(402)는 제2 서버 노드(400_b)로부터 GC 로드 정보가 포함된 GC 로드 정보 응답 신호(GC_LI res.)를 수신할 수 있다.
로드 밸런싱 체커(402)는 제1 서버 노드(400_a)의 GC 로드 정보와 제2 서버 노드(400_b)의 GC 로드 정보를 비교하여, 비교 결과를 기반으로 로드 밸런싱 동작을 수행할 수 있다. 구체적으로, 로드 밸런싱 체커(402)는 제1 서버 노드(400_a)에 할당된 세그먼트에 대한 가비지 콜렉션 비용과 제2 서버 노드(400_b)에 할당된 세그먼트에 대한 가비지 콜렉션 비용을 비교하여, 그 차이가 임계값을 초과하는 때에는 로드 밸런싱 체커(402)는 제2 서버 노드(400_b)가 제1 서버 노드(400_a) 대신에 가비지 콜렉션 동작을 수행하도록 할 수 있다. 또한, 로드 밸런싱 체커(402)는 제1 서버 노드(400_a)의 CPU/메모리 활용도와 제2 서버 노드(400_b)의 CPU/메모리 활용도를 비교하여, 그 차이가 임계값을 초과하는 때에는 로드 밸런싱 체커(402)는 제2 서버 노드(400_b)가 제1 서버 노드(400_a) 대신에 가비지 콜렉션 동작을 수행하도록 할 수 있다. 로드 밸런싱 체커(402)는 제2 서버 노드(400_b)에 GC 동작 요청 신호(GC_operation req.)를 제공할 수 있다. 제2 서버 노드(400_b)는 가비지 콜렉션 동작을 수행한 결과 프리 세그먼트를 생성할 수 있으며, 세그먼트 다이나믹 할당부(404)에 GC 동작 완료 신호(GC_operation res.) 및 생성된 프리 세그먼트를 제1 서버 노드(400_a)에 할당하기 위한 세그먼트 다이나믹 할당 동작 요청(DA_operation req.)을 제공할 수 있다. 세그먼트 다이나믹 할당부(404)는 세그먼트 다이나믹 할당 동작 요청(DA_operation req.)에 응답하여 제1 서버 노드(400_a)의 세그먼트 할당 정보를 변경함으로써, 프리 세그먼트를 제1 서버 노드(400_a)에 할당할 수 있다.
7a 및 도 7b, 도 8은 본 개시의 다양한 실시예에 따라 가비지 콜렉션 동작을 수행할 때에 메모리 시스템의 동작을 예시적으로 설명하기 위한 도면이다.
도 7a를 참조하면, 메모리 시스템(MS)은 제1 서버 노드(400_a), 제2 서버 노드(400_b) 및 스토리지 어레이(460)를 포함할 수 있다. 스토리지 어레이(460)는 데이터가 저장된 제1 내지 제5 세그먼트들(Seg#1~Seg#5)을 포함할 수 있다. 제1 서버 노드(400_a)에는 제1 세그먼트(Seg#1), 제2 세그먼트(Seg#2) 및 제4 세그먼트(Seg#4)가 할당된 상태일 수 있으며, 제2 서버 노드(400_b)에는 제3 세그먼트(Seg#3) 및 제5 세그먼트(Seg#5)가 할당된 상태일 수 있다.
제1 서버 노드(400_a)가 프리 세그먼트를 생성하기 위하여 가비지 콜렉션 동작을 수행하기 전에 제2 서버 노드(400_b)에 GC 로드 정보 요청 신호(GC_LI req.)를 제공할 수 있다. 제2 서버 노드(400_b)는 이에 응답하여 제2 서버 노드(400_b)의 GC 로드 정보(GC_LI)를 제1 서버 노드(400_a)에 제공할 수 있다. GC 로드 정보(GC_LI)는 전술한 바와 같이, 가비지 콜렉션 비용 및 제2 서버 노드(400_b)의 CPU/메모리 활용도 중 적어도 하나를 포함할 수 있다. 일 실시예로, 제1 서버 노드(400_a)는 제2 서버 노드(400_b)로부터 제2 희생 세그먼트(Victim Segment_2)로 선택된 제5 세그먼트(Seg#5)에 대한 가비지 콜렉션 비용을 수신할 수 있으며, 제1 서버 노드(400_a)는 제1 희생 세그먼트(Victim Segment_1)로 선택된 제1 세그먼트(Seg#1)에 대한 가비지 콜렉션 비용과 제2 희생 세그먼트(Victim Segment_2)로 선택된 제5 세그먼트(Seg#5)에 대한 가비지 콜렉션 비용을 비교할 수 있다. 가비지 콜렉션 비용은 각각의 희생 세그먼트(Victim Segment_1, Victim Segment_2)의 유효 페이지 데이터의 개수를 기반으로 계산될 수 있다. 다른 실시예로, 제1 서버 노드(400_a)는 제2 서버 노드(400_b)에 대한 CPU/메모리 활용도를 소정의 공통 레벨 단위로 변환한 정보를 수신하여, 제1 서버 노드(400_a)에 대한 CPU/메모리 활용도를 소정의 공통 레벨 단위로 변환한 정보와 비교할 수 있다.
도 7b를 참조하면, 제1 서버 노드(400_a)는 제1 서버 노드(400_a)의 GC 로드 정보와 제2 서버 노드(400_b)의 GC 로드 정보를 비교하여 비교 결과를 기반으로 제2 서버 노드(400_b)에 GC 동작 요청 신호(GC_operatin req.)를 제공하는 로드 밸런싱 동작을 수행할 수 있다. 예를 들어, 가비지 콜렉션 동작을 수행할 때의 제1 서버 노드(400_a)의 로드가 제2 서버 노드(400_b)의 로드보다 더 큰 경우에는 제1 서버 노드(400_a)가 제2 서버 노드(400_b)에 GC 동작 요청 신호(GC_operation req.)를 제공하여 제2 서버 노드(400_b)가 제1 서버 노드(400_a)를 대신하여 프리 세그먼트를 확보하도록 할 수 있다. 제2 서버 노드(400_b)는 가비지 콜렉션 동작(GC_operation)을 수행하여 제2 희생 세그먼트로 선택된 제5 세그먼트(Seg#5)를 프리 세그먼트로 만들 수 있다. 제2 서버 노드(400_b)는 GC 동작 완료 신호(GC_operation res.) 및 제5 세그먼트(Seg#5)에 대한 세그먼트 다이나믹 할당 동작 요청(DA_operation req.)을 제1 서버 노드(400_a)에 제공할 수 있다. 이와 동시에 제2 서버 노드(400_b)는 제5 세그먼트(Seg#5)의 할당을 해제하고, 자신의 세그먼트 할당 정보를 변경할 수 있다. 제1 서버 노드(400_a)는 세그먼트 다이나믹 할당 동작 요청(DA_operation req.)에 응답하여 제5 세그먼트(Seg#5)를 자신의 세그먼트로 다이나믹하게 할당(Dynamic allocation)하고, 자신의 세그먼트 할당 정보를 변경하여 향후 메모리 동작을 위한 프리 세그먼트를 확보할 수 있다.
도 8을 참조하면, 제1 서버 노드(400_a)가 가비지 콜렉션 동작을 수행하기 전에 제2 서버 노드(400_b)에 GC 로드 정보 요청 신호(GC_LI req)를 제공할 수 있다. 이 때, 제2 서버 노드(400_b)에 할당된 세그먼트들(Seg#3, Seg#5) 중 프리 세그먼트가 있는 때에는, 제2 서버 노드(400_b)는 제1 서버 노드(400_a)에 프리 세그먼트에 대한 세그먼트 다이나믹 할당 동작 요청(DA_operation req.)을 제공할 수 있다. 즉, 제2 서버 노드(400_b)에 할당된 제5 세그먼트(Seg#5)는 프리 세그먼트이므로, 제2 서버 노드(400_b)는 별도의 가비지 콜렉션 동작을 수행하지 않고, 제1 서버 노드(400_a)에 제5 세그먼트(Seg#5)에 대한 세그먼트 다이나믹 할당 동작 요청(DA_operation req.)을 제공할 수 있다. 제1 서버 노드(400_a)는 세그먼트 다이나믹 할당 동작 요청(DA_operation req.)에 응답하여 제5 세그먼트(Seg#5)를 자신의 세그먼트로 다이나믹하게 할당(Dynamic allocation)함으로써, 향후 메모리 동작을 위한 프리 세그먼트를 확보할 수 있다. 도 7a, 도 7b 및 도8에서 서술한 내용은 예시적인 실시예에 불과한 바, 다수의 서버 노드들을 포함하는 메모리 시스템에서도 본 개시의 사상이 적용될 수 있음은 분명하다.
도 9는 본 개시의 일 실시예에 따라 RAID 리빌드 동작을 수행할 때에 메모리 시스템의 동작을 구체적으로 설명하기 위한 도면이다.
도 9를 참조하면, 메모리 시스템(MS)은 제1 서버 노드(500_a), 제2 서버 노드(500_b) 및 스토리지 어레이(560)를 포함할 수 있다. 메모리 시스템(MS)은 RAID(Redundant Array of Inexpensive Disk)를 지원할 수 있다. 제1 서버 노드(500_a)는 로드 밸런싱 체커(502), 세그먼트 다이나믹 할당부(504) 및 세그먼트 할당 정보 저장부(506)를 포함할 수 있으며, 제2 서버 노드(500_b)도 이와 동일한 구성을 포함할 수 있다. 제1 서버 노드(500_a)는 스토리지 어레이(560)로부터 일부 메모리 장치의 디스에이블 상태를 리포트(Report)받은 후에 백그라운드 동작의 일환으로 RAID 리빌드 동작을 수행할 수 있다. 일 실시예로, 제1 서버 노드(500_a)는 RAID 리빌드 동작을 수행하기 전에, 로드 밸런싱 체커(502)는 제2 서버 노드(500_b)에 리빌드 로드 정보 요청 신호(Rebuild_LI req.)를 제공할 수 있다. 리빌드 로드 정보는 제2 서버 노드(500_b)에 대한 CPU/메모리 활용도에 관한 정보를 포함할 수 있다. 로드 밸런싱 체커(502)는 제2 서버 노드(500_b)로부터 리빌드 로드 정보가 포함된 리빌드 로드 정보 응답 신호(Rebuild_LI res.)를 수신할 수 있다.
로드 밸런싱 체커(502)는 제1 서버 노드(500_a)의 리빌드 로드 정보와 제2 서버 노드(500_b)의 리빌드 로드 정보를 비교하여, 비교 결과를 기반으로 로드 밸런싱 동작을 수행할 수 있다. 구체적으로, 제1 서버 노드(500_a)의 리빌드 로드 정보와 제2 서버 노드(500_b)의 리빌드 로드 정보의 차이가 임계값을 초과하는 때에는 로드 밸런싱 체커(502)는 제1 서버 노드(500_a)에 할당된 세그먼트들 중 일부를 제2 서버 노드(500_b)에 할당하여, 다이나믹하게 할당된 세그먼트들에 대한 RAID 리빌드 동작을 제2 서버 노드(500_b)가 제1 서버 노드(500_a) 대신 수행하도록 할 수 있다. 로드 밸런싱 체커(502)는 제1 서버 노드(500_a)에서 제2 서버 노드(500_b)로 할당될 타겟 세그먼트를 선택할 수 있다. 세그먼트 다이나믹 할당부(504)는 로드 밸런싱 동작에 부합하는 세그먼트 다이나믹 할당 동작을 수행하여, 제1 서버 노드(500_a)의 세그먼트 할당 정보를 변경할 수 있다. 또한, 세그먼트 다이나믹 할당부(504)는 제2 서버 노드(500_b)에 로드 밸런싱 동작에 부합하는 세그먼트 다이나믹 할당 동작 요청 신호(DA_operation req.) 및 제1 서버 노드(500_a)의 변경된 세그먼트 할당 정보를 제공할 수 있다. 제2 서버 노드(500_b)는 세그먼트 다이나믹 할당 동작 요청 신호(DA_operation req.)에 응답하여, 다이나믹 할당 동작을 수행할 수 있으며, 세그먼트 다이나믹 할당 동작 완료 신호(DA_operation res)를 제1 서버 노드(500_a)에 제공할 수 있다. 이와 같이, 제1 서버 노드(500_a) 및 제2 서버 노드(500_b)는 다이나믹하게 할당이 변경된 세그먼트들에 대한 RAID 리빌드 동작을 수행함으로써, 스토리지 어레이(560)를 관리할 수 있다.
도 10은 본 개시의 일 실시예에 따라 RAID 리빌드 동작을 수행할 때에 메모리 시스템의 동작을 예시적으로 설명하기 위한 도면이다.
도 10을 참조하면, 메모리 시스템(MS)은 제1 서버 노드(500_a), 제2 서버 노드(500_b) 및 스토리지 어레이(560)를 포함할 수 있다. 스토리지 어레이(560)는 제1 내지 제6 메모리 장치(560_1~560_6)를 포함할 수 있으며, 제6 메모리 장치(560_6)는 RAID 리빌드 동작을 위한 스페어(Spare) 메모리 장치일 수 있다. 이하, 제4 메모리 장치(560_4)는 오류가 발생하여 디스에이블 상태에 해당된 것을 가정한다. 또한, 제1 서버 노드(500_a)에는 제1 세그먼트(Seg#1), 제2 세그먼트(Seg#2), 제4 세그먼트(Seg#4) 및 제5 세그먼트(Seg#5)가 할당되고, 제2 서버 노드(500_b)에는 제3 세그먼트(Seg#3)가 할당됨으로써, 제1 서버 노드(500_a)와 제2 서버 노드(500_b)는 스토리지 어레이(560)를 공유할 수 있다.
각각의 세그먼트들(Seg#1~Seg#5)은 데이터(DATA)가 저장된 세그먼트 청크들(SCa) 및 RAID 패리티(Parity)가 저장된 세그먼트 청크(SCb)를 포함할 수 있다. 각각의 세그먼트들(Seg#1~Seg#5)은 RAID 스트라이프에 해당될 수 있으며, RAID 리빌드 동작의 메모리 단위일 수 있다.
제4 메모리 장치(560_4)가 디스에이블 상태가 되어 제4 메모리 장치(560_4)의 세그먼트 청크(SCc)에 저장된 페일 데이터(F_DATA)가 정상적으로 독출될 수 없는 경우, 제1 서버 노드(500_a)는 세그먼트를 구성하는 나머지 세그먼트 청크들(SCa, SCb)에 저장된 데이터(DATA)와 RAID 패리티(Parity)를 이용한 RAID 리빌드 동작을 수행할 수 있다. 제1 서버 노드(500_a)는 RAID 리빌드 동작을 수행하기 전에 제2 서버 노드(500_b)에 리빌드 로드 정보를 요청하여 제2 서버 노드(500_b)의 리빌드 로드 정보를 수신할 수 있다. 제1 서버 노드(500_a)는 자신의 리빌드 로드 정보와 제2 서버 노드(500_b)의 리빌드 로드 정보를 비교하여, 비교 결과가 임계값을 초과하는 때에 로드 밸런싱 동작을 수행하여 제1 서버 노드(500_a)에 할당된 세그먼트들 중 일부에 대한 RAID 리빌드 동작을 제2 서버 노드(500_b)가 대신 수행할 수 있다.
예를 들어, 제1 서버 노드(500_a)는 로드 밸런싱 동작을 수행한 결과 제1 서버 노드(500_a)에 할당된 제2 세그먼트(Seg#2), 제4 세그먼트(Seg#4), 제5 세그먼트(Seg#5)를 타겟 세그먼트들로 선택하여 타겟 세그먼트들에 대한 RAID 리빌드 동작을 제2 서버 노드(500_b)에서 수행하도록 할 수 있다. 제1 서버 노드(500_a)는 로드 밸런싱 동작에 부합되는 세그먼트 다이나믹 할당 동작을 수행하여 제1 서버 노드(500_a)의 제1 세그먼트 할당 정보(SAI_1)를 변경할 수 있다. 제1 서버 노드(500_a)는 제2 서버 노드(500_b)에 로드 밸런싱 동작에 부합하는 세그먼트 다이나믹 할당 동작을 요청할 수 있으며, 제2 서버 노드(500_b)는 이에 응답하여, 제2 서버 노드(500_b)의 제2 세그먼트 할당 정보(SAI_2)를 변경할 수 있다.
제1 서버 노드(500_a)는 변경된 제1 세그먼트 할당 정보(SAI_1')에 기반하여 제1 세그먼트(Seg#1)에 대한 RAID 리빌드 동작을 수행할 수 있다. 구체적으로, 제1 서버 노드(500_a)는 제1 세그먼트(Seg#1)의 데이터(DATA)와 RAID 패리티(Parity)를 이용한 논리 연산을 기반으로 복구 데이터(R_DATA)를 생성하여 제6 메모리 장치(560_6)의 세그먼트 청크들(SCd) 중 제1 세그먼트(Seg#1)에 포함되는 세그먼트 청크에 저장할 수 있다.
제2 서버 노드(500_b)는 변경된 제2 세그먼트 할당 정보(SAI_2')에 기반하여 제2 내지 제5 세그먼트(Seg#2~Seg#5)에 대한 RAID 리빌드 동작을 수행할 수 있다. 도 10에서 서술한 내용은 예시적인 실시예에 불과한 바, 다수의 서버 노드들을 포함하는 메모리 시스템에서도 본 개시의 사상이 적용될 수 있음은 분명하다.
도 11은 본 개시의 일 실시예에 따라 RAID 스크러빙 동작을 수행할 때에 메모리 시스템의 동작을 구체적으로 설명하기 위한 도면이다.
도 11을 참조하면, 메모리 시스템(MS)은 제1 서버 노드(600_a), 제2 서버 노드(600_b) 및 스토리지 어레이(660)를 포함할 수 있다. 메모리 시스템(MS)은 RAID(Redundant Array of Inexpensive Disk)를 지원할 수 있다. 제1 서버 노드(600_a)는 로드 밸런싱 체커(602), 세그먼트 다이나믹 할당부(604) 및 세그먼트 할당 정보 저장부(606)를 포함할 수 있으며, 제2 서버 노드(600_b)도 이와 동일한 구성을 포함할 수 있다. 제1 서버 노드(600_a)는 백그라운드 동작의 일환으로 RAID 스크러빙 동작을 수행할 수 있다. 일 실시예로, 제1 서버 노드(600_a)는 RAID 스크러빙 동작을 수행하기 전에, 로드 밸런싱 체커(602)는 제2 서버 노드(600_b)에 스크러빙 로드 정보 요청 신호(Scrub_LI req.)를 제공할 수 있다. 스크러빙 로드 정보는 제2 서버 노드(600_b)에 대한 CPU/메모리 활용도에 관한 정보를 포함할 수 있다. 로드 밸런싱 체커(602)는 제2 서버 노드(600_b)로부터 스크러빙 로드 정보가 포함된 스크러빙 로드 정보 응답 신호(Scrub_LI res.)를 수신할 수 있다.
로드 밸런싱 체커(602)는 제1 서버 노드(600_a)의 스크러빙 로드 정보와 제2 서버 노드(600_b)의 스크러빙 로드 정보를 비교하여, 비교 결과를 기반으로 제1 서버 노드(600_a)에서 제2 서버 노드(600_b)로 할당될 타겟 세그먼트를 선택하는 로드 밸런싱 동작을 수행할 수 있다. 세그먼트 다이나믹 할당부(604)는 로드 밸런싱 동작에 부합하는 세그먼트 다이나믹 할당 동작을 수행하여, 제1 서버 노드(600_a)의 세그먼트 할당 정보를 변경할 수 있다. 또한, 세그먼트 다이나믹 할당부(604)는 제2 서버 노드(600_b)에 로드 밸런싱 동작에 부합하는 세그먼트 다이나믹 할당 동작 요청 신호(DA_operation req.) 및 제1 서버 노드(600_a)의 변경된 세그먼트 할당 정보를 제공할 수 있다. 제2 서버 노드(600_b)는 세그먼트 다이나믹 할당 동작 요청 신호(DA_operation req.)에 응답하여, 다이나믹 할당 동작을 수행할 수 있으며, 세그먼트 다이나믹 할당 동작 완료 신호(DA_operation res)를 제1 서버 노드(600_a)에 제공할 수 있다. 이와 같이, 제1 서버 노드(600_a) 및 제2 서버 노드(600_b)는 다이나믹하게 할당이 변경된 세그먼트들에 대한 RAID 스크러빙 동작을 수행함으로써, 스토리지 어레이(660)를 관리할 수 있다.
도 12는 본 개시의 일 실시예에 따라 RAID 스크러빙 동작을 수행할 때에 메모리 시스템의 동작을 예시적으로 설명하기 위한 도면이다.
도 12를 참조하면, 메모리 시스템(MS)은 제1 서버 노드(600_a), 제2 서버 노드(600_b) 및 스토리지 어레이(660)를 포함할 수 있다. 스토리지 어레이(660)는 제1 내지 제5 메모리 장치(660_1~660_5)를 포함할 수 있다. 제1 서버 노드(600_a)에는 제1 세그먼트(Seg#1), 제2 세그먼트(Seg#2), 제4 세그먼트(Seg#4) 및 제5 세그먼트(Seg#5)가 할당되고, 제2 서버 노드(600_b)에는 제3 세그먼트(Seg#3)가 할당됨으로써, 제1 서버 노드(600_a)와 제2 서버 노드(600_b)는 스토리지 어레이(660)를 공유할 수 있다.
제1 서버 노드(600_a)는 세그먼트를 구성하는 데이터(DATA)와 RAID 패리티(Parity)를 이용하여 RAID 스크러빙 동작을 수행할 수 있다. RAID 스크러빙 동작은 데이터(DATA)와 RAID 패리티(Parity)를 이용한 논리 연산을 기반으로 현재 RAID 패리티(Parity)의 일치 여부를 체크하는 동작을 정의할 수 있다.
제1 서버 노드(600_a)는 RAID 스크러빙 동작을 수행하기 전에 제2 서버 노드(600_b)에 스크러빙 로드 정보를 요청하여 제2 서버 노드(600_b)의 스크러빙 로드 정보를 수신할 수 있다. 제1 서버 노드(600_a)는 자신의 스크러빙 로드 정보와 제2 서버 노드(600_b)의 스크러빙 로드 정보를 비교하여, 비교 결과가 임계값을 초과하는 때에, 로드 밸런싱 동작을 수행하여 제1 서버 노드(600_a)에 할당된 세그먼트들 중 일부에 대한 RAID 스크러빙 동작을 제2 서버 노드(600_b)가 대신 수행하도록 할 수 있다.
예를 들어, 제1 서버 노드(600_a)는 로드 밸런싱 동작을 수행한 결과 제1 서버 노드(600_a)에 할당된 제2 세그먼트(Seg#2), 제4 세그먼트(Seg#4), 제5 세그먼트(Seg#5)를 타겟 세그먼트들로 선택하여 타겟 세그먼트들에 대한 RAID 스크러빙 동작을 제2 서버 노드(600_b)에서 수행하도록 할 수 있다. 제1 서버 노드(600_a)는 로드 밸런싱 동작에 부합되는 세그먼트 다이나믹 할당 동작을 수행하여 제1 서버 노드(600_a)의 제1 세그먼트 할당 정보(SAI_1)를 변경할 수 있다. 제1 서버 노드(600_a)는 제2 서버 노드(600_b)에 로드 밸런싱 동작에 부합하는 세그먼트 다이나믹 할당 동작을 요청할 수 있으며, 제2 서버 노드(600_b)는 이에 응답하여, 제2 서버 노드(600_b)의 제2 세그먼트 할당 정보(SAI_2)를 변경할 수 있다.
제1 서버 노드(500_a)는 변경된 제1 세그먼트 할당 정보(SAI_1')에 기반하여 제1 세그먼트(Seg#1)에 대한 RAID 스크러빙 동작을 수행할 수 있다. 제2 서버 노드(500_b)는 변경된 제2 세그먼트 할당 정보(SAI_2')에 기반하여 제2 내지 제5 세그먼트(Seg#2~Seg#5)에 대한 RAID 스크러빙 동작을 수행할 수 있다. 도 12에서 서술한 내용은 예시적인 실시예에 불과한 바, 다수의 서버 노드들을 포함하는 메모리 시스템에서도 본 개시의 사상이 적용될 수 있음은 분명하다
도 13은 본 개시의 다른 실시예에 따른 메모리 시스템의 동작 방법을 설명하기 위한 순서도이다 .
도 13을 참조하면, 제1 서버 노드(Server node1)는 포그라운드 동작을 수행하기 전에 다른 서버 노드들(Server node2, 3, 4,...)에 로드 정보를 요청할 수 있다(S200). 다른 서버 노드들(Server node2, 3, 4,...)은 로드 정보 요청에 응답하여 각각의 로드 정보를 제1 서버 노드(Server node1)에 전송할 수 있다. 제1 서버 노드(Server node1)는 제1 서버 노드(Server node1)의 로드 정보와 수신한 로드 정보들을 비교할 수 있다(S220). 제1 서버 노드(Server node1)는 비교 결과를 기반으로 볼륨 마이그레이션 동작을 수행할 수 있다(S230). 일 예로, 제1 서버 노드(Sever node1)의 로드 정보와 제2 서버 노드(Server node2)의 로드 정보 차이가 임계값을 초과한 때에는, 제1 서버 노드(Server node1)에 할당된 볼륨들 중 적어도 하나의 타겟 볼륨을 선택하여 제2 서버 노드(Server node2)로 마이그레이션할 수 있다. 제1 서버 노드(Server node1)는 볼륨 마이그레이션 동작에 부합하는 다이나믹 세그먼트 할당 동작을 수행할 수 있다(S240). S240 단계는 제1 서버 노드(Server node1)가 다른 서버 노드들(Server node2, 3, 4,...)에 볼륨 마이그레이션 요청 및 세그먼트 다이나믹 할당 동작 관련 요청을 제공하는 단계(S245)를 포함할 수 있다. 다른 서버 노드들(Server node2, 3, 4,...)은 요청에 응답하여 타겟 볼륨에 대한 볼륨 마이그레이션 동작 및 타겟 볼륨에 포함된 세그먼트들에 대한 다이나믹 세그먼트 할당 동작을 수행할 수 있다(S250). 이후, 다른 서버 노드들(Server node2, 3, 4,...)은 마이그레이션된 볼륨에 대한 포그라운드 동작을 수행할 수 있다(S260).
이와 같이, 호스트로부터 메모리 동작 요청을 수신하여 메모리 동작을 수행하는 포그라운드 동작에서도 각각의 서버 노드의 로드 정도를 비교하여 비교 결과에 따라 하나의 서버 노드에 할당된 타겟 볼륨을 다른 서버 노드에 마이그레이션한 후에 다른 서버 노드가 타겟 볼륨에 대한 포그라운드 동작을 진행함으로써, 각 서버 노드의 로드 정도를 고려한 메모리 동작을 수행할 수 있어 메모리 시스템의 동작 성능을 향상시킬 수 있는 효과가 있다.
도 14a 및 도 14b는 포그라운드 동작을 수행할 때에 메모리 시스템의 동작 방법을 설명하기 위한 도면이다.
도 14a를 참조하면, 메모리 시스템(MS)은 제1 서버 노드(700_a), 제2 서버 노드(700_b) 및 스토리지 어레이(760)를 포함할 수 있다. 일 실시예로, 호스트(HOST)는 IP 주소(a,b,c,d)를 통해 제1 서버 노드(700_a)와 네트워킹할 수 있으며, 호스트(HOST)는 메모리 동작 요청(Req_H), 논리 어드레스(ADD_H) 및 데이터(DATA)를 제1 서버 노드(700_a)에 제공할 수 있다. 도면에는 도시되지 않았으나, 호스트(HOST)는 제1 서버 노드(700_a)와 네트워킹할 때와 다른 IP 주소를 통해 제2 서버 노드(700_b)와 네트워크할 수 있으며, 호스트(HOST)는 메모리 동작 요청(Req_H), 논리 어드레스(ADD_H) 및 데이터(DATA)를 제2 서버 노드(700_b)에 제공할 수 있다. 제1 서버 노드(700_a)는 로드 밸런싱 체커(702), 세그먼트 다이나믹 할당부(704), 볼륨 할당 정보(VAI), 매핑 정보(MI), 세그먼트 할당 정보(SAI)를 저장하는 정보 스토리지(706) 및 트랜스레이션 레이어(708)를 포함할 수 있다. 또한, 세그먼트 다이나믹 할당부(704)는 볼륨 마이그레이션부(704_a)를 포함할 수 있다. 제2 서버 노드(700_b)도 제1 서버 노드(700_a)와 동일한 구성을 가질 수 있다.
트랜스레이션 레이어(708)는 볼륨 ID(VolID), 논리 블록 어드레스(LBA)을 가르키는 논리 어드레스(ADD_H)를 세그먼트 ID(Segment ID), 세그먼트 오프셋(Segment Offset)를 가르키는 어드레스(ADD)로 변환하고, 논리 어드레스(ADD_H)와 어드레스(ADD)간의 매핑 관계를 나타내는 매핑 정보(MI)를 생성할 수 있다. 제1 서버 노드(700_a)는 메모리 동작 요청(Req_H)에 대응되는 커맨드(CMD), 어드레스(ADD), 데이터(DATA)를 스토리지 어레이(760)에 제공함으로써, 메모리 동작을 수행할 수 있다.
도 14b를 더 참조하면, 제1 서버 노드(700_a)에는 제1 볼륨(Vol#1) 및 제2 볼륨(Vol#2)이 할당된 상태이며, 이러한 할당 상태를 나타내는 제1 볼륨 할당 정보(VAI_1)는 정보 스토리지(706)에 저장될 수 있다. 제2 서버 노드(700_b)에는 제3 볼륨(Vol#3) 및 제4 볼륨(Vol#4)이 할당된 상태이며, 이러한 할당 상태를 나타내는 제2 볼륨 할당 정보(VAI_2)는 제2 서버 노드(700_b)의 정보 스토리지에 저장될 수 있다. 트랜스레이션 레이어(708)는 볼륨 단위로 매핑 정보를 생성할 수 있다. 즉, 트랜스레이션 레이어(708)는 제1 서버 노드(700_a)에 할당된 제1 볼륨(Vol#1) 및 제2 볼륨(Vol#2)에 대한 매핑 정보(MI_1)를 생성할 수 있다. 제2 서버 노드(700_b)의 트랜스레이션 레이어는 제2 서버 노드(700_b)에 할당된 제3 볼륨(Vol#3) 및 제4 볼륨(Vol#4)에 대한 매핑 정보(MI_2)를 생성할 수 있다. 도 14b에 도시된 바와 같이, 하나의 볼륨은 다수의 세그먼트들을 포함할 수 있다.
제1 서버 노드(700_a) 및 제2 서버 노드(700_b)는 매핑 정보(MI_1, MI_2)를 참조하여 메모리 동작을 수행할 수 있다.
도 15a 및 도 15b는 본 개시의 일 실시예에 따라 포그라운드 동작을 수행할 때에 메모리 시스템의 동작 방법을 설명하기 위한 도면이다.
도 15a를 참조하면, 제1 서버 노드(700_a)는 호스트(HOST)로부터 기록 동작 요청(Req_W), 제2 볼륨(Vol#2) 및 논리 블록 어드레스(LBA)를 나타내는 논리 어드레스(ADD_H) 및 제1 데이터(DATA_1)를 수신할 수 있다. 로드 밸런싱 체커(702)는 기록 동작 요청(Req_W)에 응답하여 기록 동작을 수행하기 전에 제2 서버 노드(700_b)에 로드 정보 요청 신호(LI req.)를 제공할 수 있다. 로드 밸런싱 체커(702)는 제2 서버 노드(700_b)의 로드 정보와 제1 서버 노드(700_a)의 로드 정보를 비교할 수 있으며, 볼륨 마이그레이션부(704_a)는 비교 결과를 기반으로 제1 서버 노드(700_a)에 할당된 볼륨들(Vol#1, Vol#2) 중 타겟 볼륨을 선택하여 마이그레이션 동작을 수행할 수 있다.
마이그레이션부(704_a)는 마이그레이션 동작을 수행하여, 제1 서버 노드(700_a)의 볼륨 할당 정보를 변경할 수 있으며, 세그먼트 다이나믹 할당부(704)는 타겟 볼륨에 포함되는 다수의 세그먼트들에 대한 세그먼트 다이나믹 할당 동작을 수행하여, 제1 서버 노드(700_a)의 세그먼트 할당 정보를 변경할 수 있다. 이하에서는 타겟 볼륨을 제2 볼륨(Vol#2)으로 가정한다. 세그먼트 다이나믹 할당부(704)는 제2 서버 노드(700_b)에 제2 볼륨(Vol#2)에 대한 마이그레이션 요청 신호(Vol_Migration req.) 및 제2 볼륨(Vol#2)에 포함되는 다수의 세그먼트들(Y1_2, Y2_2,...)에 대한 세그먼트 다이나믹 할당 동작 요청 신호(DA_operation req.)를 제공할 수 있다. 이에, 제2 서버 노드(700_b)는 제2 볼륨(Vol#2)을 자신의 볼륨으로 할당하고, 제2 볼륨(Vol#2)에 포함되는 다수의 세그먼트들(Y1_2, Y2_2,...)을 자신의 세그먼트로 할당할 수 있다.
제2 서버 노드(700_b)는 제1 서버 노드(700_a) 대신에 호스트(HOST)부터 수신한 기록 동작 요청(Req_W)에 응답한 기록 동작을 수행할 수 있다. 또한, 향후, 제2 볼륨(Vol#2)에 대한 메모리 동작 요청시에는 제2 서버 노드(700_b)와 직접 네트워킹할 수 있도록 제2 서버 노드(700_b)에 대한 IP 주소:e,f,g,h와 함께 IP 변경 요청(IP_change_req.)을 호스트(HOST)에 제공할 수 있다. 다만, 이는 예시적인 실시예에 불과한 바, 이에 국한되지 않고, 본 개시의 사상은 제2 볼륨(Vol#2)에 대한 메모리 동작 요청시에 호스트(HOST)가 제2 서버 노드(700_b)와 직접 네트워킹할 수 있도록 하는 실시예를 모두 포함할 수 있다.
도 15b를 더 참조하면, 도 14b와 비교하여 제1 서버 노드(700_a)는 제2 볼륨(Vol#2)에 대한 마이그레이션 동작을 수행하고 제1 볼륨(Vol#1)만이 제1 서버 노드(700_a)에 할당되었음을 나타내도록 제1 볼륨 할당 정보(VAI_1')를 변경할 수 있다. 또한, 제2 서버 노드(700_b)는 제2 볼륨(Vol#2)에 대한 마이그레이션 동작을 수행하고 제2 볼륨(Vol#2), 제2 볼륨(Vol#3), 제2 볼륨(Vol#4)이 제2 서버 노드(700_b)에 할당되었음을 나타내도록 제2 볼륨 할당 정보(VAI_2')를 변경할 수 있다. 또한, 제1 서버 노드(700_a)는 정보 저장부(706)에 저장되었던 제2 볼륨(Vol#2)에 대한 매핑 정보를 제2 서버 노드(700_b)에 제공할 수 있다. 따라서, 제1 서버 노드(700_a)는 제1 볼륨(Vol#1)에 대한 매핑 정보(MI_1')만을 정보 저장부(706)에 저장할 수 있다. 제2 서버 노드(700_b)는 제1 서버 노드(700_a)로부터 제2 볼륨(Vol#2)에 대한 매핑 정보를 수신하고, 제2 볼륨(Vol#2), 제2 볼륨(Vol#3), 제2 볼륨(Vol#4)에 대한 매핑 정보(MI_2')를 제2 서버 노드(700_b)의 정보 저장부에 저장할 수 있다. 제2 서버 노드(700_b)는 매핑 정보(MI_2')를 이용하여 호스트(HOST)로부터 수신한 제2 볼륨(Vol#2)에 대한 메모리 동작 요청을 제1 서버 노드(700_a) 대신 수행할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.

Claims (10)

  1. 다수 개의 세그먼트들을 포함하는 스토리지 어레이, 상기 세그먼트들을 할당하여 관리하는 제1 서버 노드 및 제2 서버 노드를 포함하는 메모리 시스템의 동작 방법에 있어서,
    상기 제1 서버 노드가 메모리 동작을 수행하기 전에 상기 제2 서버 노드에 로드 정보를 요청하는 단계;
    상기 제1 서버 노드가 상기 제2 서버 노드로부터 상기 로드 정보를 수신하고, 상기 제1 서버 노드의 로드 정보와 상기 제2 서버 노드의 로드 정보를 비교하는 단계;
    상기 제1 서버 노드가 상기 비교 결과를 기반으로 로드 밸런싱 동작을 수행하는 단계; 및
    상기 제1 서버 노드가 상기 로드 밸런싱 동작에 부합하는 상기 스토리지 어레이에 대한 세그먼트 다이나믹 할당 동작을 수행하는 단계를 포함하는 메모리 시스템의 동작 방법.
  2. 제1항에 있어서,
    상기 로드 밸런싱 동작을 수행하는 단계는,
    상기 제1 서버 노드는 상기 제2 서버 노드의 로드 정보와 상기 제1 서버 노드의 로드 정보의 차이가 임계값을 초과하는 때에, 상기 메모리 동작에 대한 상기 제2 서버 노드로의 배분 동작을 수행하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  3. 제2항에 있어서,
    상기 로드 밸런싱 동작을 수행하는 단계는,
    상기 제1 서버 노드가 상기 메모리 동작 중에서 상기 제2 서버 노드에 배분된 메모리 동작을 수행하도록 요청하는 단계를 더 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  4. 제1항에 있어서,
    상기 세그먼트 다이나믹 할당 동작을 수행하는 단계는,
    상기 제1 서버 노드가 상기 제1 서버 노드에 할당된 세그먼트를 나타내는 제1 세그먼트 할당 정보를 변경하는 단계를 포함하고,
    상기 메모리 시스템의 동작 방법은,
    상기 제1 서버 노드는 상기 변경된 제1 세그먼트 할당 정보를 기반으로 상기 메모리 동작을 수행하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  5. 제4항에 있어서,
    상기 세그먼트 다이나믹 할당 동작을 수행하는 단계는,
    상기 제1 서버 노드가 상기 변경된 제1 세그먼트 할당 정보를 상기 제2 서버 노드에 송신하고, 상기 제2 서버 노드에 대한 세그먼트 다이나믹 할당 동작 수행을 요청하는 단계를 더 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  6. 제1항에 있어서,
    상기 메모리 동작은 가비지 콜렉션(Gabage Collection) 동작일 때에,
    상기 제1 서버 노드의 로드 정보는, 상기 제1 서버 노드에 할당된 적어도 하나의 세그먼트에 대한 가비지 콜렉션 비용 및 상기 제1 서버 노드에 대한 CPU/메모리 활용도 중 적어도 하나를 포함하며,
    상기 제1 서버 노드가 상기 제2 서버 노드에 요청하는 로드 정보는, 상기 제2 서버 노드에 할당된 적어도 하나의 세그먼트에 대한 가비지 콜렉션 비용 및 상기 제2 서버 노드에 대한 CPU/메모리 활용도 중 적어도 하나를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  7. 제6항에 있어서,
    상기 로드 밸런싱 동작을 수행하는 단계는,
    상기 제1 서버 노드가 상기 비교 결과를 기반으로 상기 제2 서버 노드에 상기 제2 서버 노드에 할당된 적어도 하나의 세그먼트에 대한 가비지 콜렉션 동작 수행을 요청하는 단계를 포함하고,
    상기 세그먼트 다이나믹 할당 동작을 수행하는 단계는,
    상기 제1 서버 노드가 상기 제2 서버 노드에 의한 가비지 콜렉션 동작 결과 생성된 프리 세그먼트에 대한 정보를 수신하는 단계; 및
    상기 제1 서버 노드가 상기 프리 세그먼트에 대한 정보를 기반으로 상기 세그먼트 다이나믹 할당 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  8. 제1항에 있어서,
    상기 메모리 동작은 RAID 리빌드(Redundant Array of Inexpensive Disk Rebuild) 동작 또는 RAID 스크러빙(Redundant Array of Inexpensive Disk Scrubbing) 동작일 때에,
    상기 로드 밸런싱 동작을 수행하는 단계는,
    상기 제1 서버 노드가 상기 비교 결과를 기반으로, 상기 RAID 리빌드 동작 또는 RAID 스크러빙 동작 대상이 되는 상기 제1 서버 노드에 할당된 세그먼트들 중 상기 제2 서버 노드에 할당할 적어도 하나의 타겟 세그먼트를 선택하는 단계를 포함하고,
    상기 세그먼트 다이나믹 할당 동작을 수행하는 단계는,
    상기 제1 서버 노드가 상기 타겟 세그먼트를 참조하여 상기 제1 서버 노드에 할당된 세그먼트를 나타내는 제1 세그먼트 할당 정보를 변경하는 단계; 및
    상기 제1 서버 노드가 상기 제2 서버 노드에 상기 타겟 세그먼트에 대한 할당을 요청하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  9. 다수 개의 세그먼트들을 포함하는 스토리지 어레이, 상기 세그먼트들을 볼륨 단위로 할당하여 관리하는 제1 서버 노드 및 제2 서버 노드를 포함하는 메모리 시스템의 동작 방법에 있어서,
    상기 제1 서버 노드가 메모리 동작 수행하기 전에 상기 제2 서버 노드에 로드 정보를 요청하는 단계;
    상기 제1 서버 노드가 상기 제2 서버 노드로부터 상기 로드 정보를 수신하고, 상기 제1 서버 노드의 로드 정보와 상기 제2 서버 노드의 로드 정보를 비교하는 단계;
    상기 제1 서버 노드가 상기 비교 결과를 기반으로 볼륨 마이그레이션 동작을 수행하는 단계; 및
    상기 제1 서버 노드가 볼륨 마이그레이션 동작에 부합하는 상기 스토리지 어레이에 대한 세그먼트 다이나믹 할당 동작을 수행하는 단계를 포함하는 메모리 시스템의 동작 방법.
  10. 제9항에 있어서,
    상기 볼륨 마이그레이션 동작을 수행하는 단계는,
    상기 제1 서버 노드가 상기 비교 결과를 기반으로 상기 제1 서버 노드에 할당된 볼륨들 중 상기 제2 서버 노드로의 마이그레이션 동작 대상이 되는 적어도 하나의 타겟 볼륨을 선택하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
KR1020160149590A 2016-11-10 2016-11-10 스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법 KR102567971B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160149590A KR102567971B1 (ko) 2016-11-10 2016-11-10 스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법
US15/601,171 US10200462B2 (en) 2016-11-10 2017-05-22 Memory system including plurality of server nodes sharing storage array and operating method of memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160149590A KR102567971B1 (ko) 2016-11-10 2016-11-10 스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20180052369A KR20180052369A (ko) 2018-05-18
KR102567971B1 true KR102567971B1 (ko) 2023-08-17

Family

ID=62064944

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160149590A KR102567971B1 (ko) 2016-11-10 2016-11-10 스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법

Country Status (2)

Country Link
US (1) US10200462B2 (ko)
KR (1) KR102567971B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102107770B1 (ko) * 2018-08-09 2020-05-07 주식회사 앤다스 영상 저장 시스템
US20200357198A1 (en) * 2019-05-09 2020-11-12 Toyota Motor North America, Inc. Vehicle sensor tracking for customized vehicle profile
JP7253007B2 (ja) * 2021-05-28 2023-04-05 株式会社日立製作所 ストレージシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520783A (ja) 2003-05-16 2007-07-26 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. データストレージシステムにおける冗長データ割り当て
KR100892885B1 (ko) 2007-03-08 2009-04-09 (주)에임투지 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법
US20160231948A1 (en) 2015-02-11 2016-08-11 Netapp, Inc. Load balancing technique for a storage array

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6467022B1 (en) 1998-04-16 2002-10-15 International Business Machines Corporation Extending adapter memory with solid state disks in JBOD and RAID environments
JP2004506980A (ja) 2000-08-11 2004-03-04 3ウェア、 インコーポレイテッド コンピュータネットワークを介してブロックレベルストレージアクセスを提供するためのアーキテクチャ
US20040236798A1 (en) * 2001-09-11 2004-11-25 Sudhir Srinivasan Migration of control in a distributed segmented file system
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US20070294319A1 (en) * 2006-06-08 2007-12-20 Emc Corporation Method and apparatus for processing a database replica
US9063655B2 (en) 2010-05-12 2015-06-23 Silicon Image, Inc. Multi-level port expansion for port multipliers
US8683480B2 (en) 2011-06-01 2014-03-25 International Business Machines Corporation Resource allocation for a plurality of resources for a dual activity system
US10069903B2 (en) * 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US9817723B2 (en) 2014-04-02 2017-11-14 International Business Machines Corporation Efficient FlashCopy backup and mount, clone, or restore collision avoidance using dynamic volume allocation with reuse
US9697130B2 (en) 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US9672216B2 (en) 2014-12-09 2017-06-06 Dell International L.L.C. Managing deduplication in a data storage system using a bloomier filter data dictionary

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520783A (ja) 2003-05-16 2007-07-26 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. データストレージシステムにおける冗長データ割り当て
KR100892885B1 (ko) 2007-03-08 2009-04-09 (주)에임투지 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법
US20160231948A1 (en) 2015-02-11 2016-08-11 Netapp, Inc. Load balancing technique for a storage array

Also Published As

Publication number Publication date
KR20180052369A (ko) 2018-05-18
US10200462B2 (en) 2019-02-05
US20180131758A1 (en) 2018-05-10

Similar Documents

Publication Publication Date Title
US11070479B2 (en) Dynamic resource allocation based upon network flow control
CN111373362B (zh) 具有分布式读取/写入处理的多设备存储系统
US11438411B2 (en) Data storage system with redundant internal networks
US11237772B2 (en) Data storage system with multi-tier control plane
US10484015B2 (en) Data storage system with enforced fencing
KR102457611B1 (ko) 터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치
JP2019071100A (ja) 分散型ストレージシステム
CN110413201B (zh) 用于管理存储系统的方法、设备和计算机程序产品
US8984221B2 (en) Method for assigning storage area and computer system using the same
US11734137B2 (en) System, and control method and program for input/output requests for storage systems
US10956058B2 (en) Tiered storage system with tier configuration by peer storage devices
EP3796149B1 (en) Method and device for processing i/o request
US9760314B2 (en) Methods for sharing NVM SSD across a cluster group and devices thereof
CN109791522B (zh) 数据迁移的方法、系统及智能网卡
CN111149081A (zh) 负载平衡分配式存储系统中的元数据控制
US11520715B2 (en) Dynamic allocation of storage resources based on connection type
KR102567971B1 (ko) 스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법
US11567883B2 (en) Connection virtualization for data storage device arrays
KR20230088215A (ko) 분산 스토리지 시스템
US10768834B2 (en) Methods for managing group objects with different service level objectives for an application and devices thereof
US11258877B2 (en) Methods for managing workloads in a storage system and devices thereof
US11507321B1 (en) Managing queue limit overflow for data storage device arrays
US20230418490A1 (en) Rate Levelling Among Peer Data Storage Devices
US20220011942A1 (en) Multi-dimensional i/o service levels

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right