KR102599116B1 - 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 - Google Patents

데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 Download PDF

Info

Publication number
KR102599116B1
KR102599116B1 KR1020230022266A KR20230022266A KR102599116B1 KR 102599116 B1 KR102599116 B1 KR 102599116B1 KR 1020230022266 A KR1020230022266 A KR 1020230022266A KR 20230022266 A KR20230022266 A KR 20230022266A KR 102599116 B1 KR102599116 B1 KR 102599116B1
Authority
KR
South Korea
Prior art keywords
storage
data
deduplication
processor core
stored
Prior art date
Application number
KR1020230022266A
Other languages
English (en)
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 KR1020230022266A priority Critical patent/KR102599116B1/ko
Application granted granted Critical
Publication of KR102599116B1 publication Critical patent/KR102599116B1/ko

Links

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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 입출력의 레이턴시를 줄일 수 있는 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 서버가 개시된다. 개시된 데이터 중복 제거 방법은 쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링하는 단계; 상기 사용량에 따라서, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하는 단계; 및 상기 선택된 프로세서 코어를 이용하여, 상기 중복 제거를 수행하는 단계를 포함한다.

Description

데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치{DATA INPUT AND OUTPUT METHOD USING STORAGE NODE BASED KEY-VALUE SROTRE}
본 발명은 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치에 관한 것이다.
클라우드 스토리지 서비스에서 처리되는 데이터가 기하급수적으로 증가하고 있다. 클라우드 스토리지 서비스를 통해 처리되는 데이터는, 높은 가용성, 안정성 및 실패(failure) 관리를 위해 분산 스토리지 시스템에 복제된다. 이러한 중복 데이터는 스토리지 성능, 스토리지 시스템의 효율성 및 네트워크 대역폭(bandwidth) 등 시스템 전반에 영향을 미치므로, 클라우드 스토리지 서비스 업체들은 데이터 중복 제거(data deduplication)를 통해, 사용자가 저장한 중복 데이터를 제거한다.
데이터 중복 제거 기술은, 중복 제거 시점을 기준으로 인라인 중복 제거(inline deduplication)와 오프라인 중복 제거(offline deduplication)으로 나뉠 수 있다. 인라인 중복 제거는 쓰기 요청된 데이터가 스토리지에 저장되기 전에 중복 제거가 수행되는 방식으로서, 스토리지에 저장되기 전에 중복 제거가 수행되므로, 상대적으로 필요한 저장 공간이 적어지는 장점이 있지만, 데이터가 저장되는 과정에서 중복 제거가 수행되므로, 레이턴시가 증가하는 단점이 있다. 오프라인 중복 제거는 쓰기 요청된 데이터가 스토리지에 저장된 이후, 중복 저장된 데이터가 제거되는 방식으로, 데이터가 저장된 이후 중복 제거가 수행되므로 중복 제거에 따른 레이턴시가 증가하는 문제는 발생하지 않지만, 상대적으로 필요한 저장 공간이 증가한다는 단점이 있다.
관련 선행문헌으로 대한민국 등록특허 제10-2471966호, 제10-1685839호, 대한민국 공개특허 제2022-00772008호가 있다.
본 발명은 데이터 입출력의 레이턴시를 줄일 수 있는 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 서버를 제공하기 위한 것이다.
상기한 목적을 달성하기 위한 본 발명의 일 실시예에 따르면, 쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링하는 단계; 상기 사용량에 따라서, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하는 단계; 및 상기 선택된 프로세서 코어를 이용하여, 상기 중복 제거를 수행하는 단계를 포함하는 데이터 중복 제거 방법이 제공된다.
또한 상기한 목적을 달성하기 위한 본 발명의 다른 실시예에 따르면, 쓰기 요청이 발생한 경우, 상기 쓰기 요청에 대한 제1스레드를 생성하는 단계; 후보 프로세서 코어의 사용량을 모니터링하여, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하는 단계; 및 상기 선택된 프로세서 코어에 처리되며, 상기 쓰기 요청된 데이터에 대한 중복 제거 수행을 위한 제2스레드를 생성하는 단계를 포함하는 데이터 중복 제거 방법이 제공된다.
또한 상기한 목적을 달성하기 위한 본 발명의 또 다른 실시예에 따르면, 스토리지; 메모리; 및 상기 메모리와 전기적으로 연결된 적어도 하나의 멀티코어 프로세서를 포함하며, 상기 멀티코어 프로세서는 포그라운드 이벤트인 상기 스토리지에 대한 쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링하며, 상기 사용량에 따라서, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하며, 백그라운드 이벤트인 상기 중복 제거는 상기 선택된 프로세서 코어에 할당된 스레드를 통해 수행되는, 데이터 중복 제거를 수행하는 스토리지 서버가 제공된다.
본 발명의 일실시예에 따르면, 프로세서 코어의 사용량에 따라서, 포그라운드 이벤트인 쓰기 요청이 처리되는 프로세서 코어와 독립적으로 백그라운드 이벤트인 중복 제거를 위한 프로세서 코어를 할당함으로써, 중복 제거 처리에 의한 데이터 입출력 레이턴시가 줄어들 수 있다.
도 1은 본 발명의 일실시예에 따른 데이터 중복 제거를 수행하는 스토리지 서버를 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 도면이다.
도 4는 SPDK에서 처리되는 입출력 요청을 나타내는 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
SPDK(Storage Performance Development Kit)는 커널 영역(kernel space)이 아닌 사용자 영역(user space)에 구현되는 디바이스 드라이버(device driver)로, NVMe와 같은 스토리지 인터페이스를 위한 드라이버이다. SPDK는 사용자 영역에 구현되기 때문에, 커널 I/O 스택을 경량화하여 낮은 레이턴시를 제공하며, 포그라운드(foreground) 입출력(I/O)이 처리되는 과정에서, 데이터 중복 제거, 컴팩션(compaction) 등과 같은 백그라운드 서비스(background service)가 제공될 수 있는 모듈을 제공한다. 즉 SPDK는, 데이터 입출력이 처리되는 과정에서 데이터 중복 제거를 수행한다.
SPDK는, 데이터 입출력 작업을 위한 프로세서 코어를 이용해, 데이터 중복 제거 또한 처리한다. 즉, SPDK 환경에서는 포그라운드 입출력과 백그라운드 서비스가 서로 분리되어 서로 다른 프로세서 코어 기반으로 처리되지 않고, 동일한 프로세서 코어에서 처리된다. 따라서 SPDK가 이용되는 환경에서는, 데이터 중복 제거에 의해 데이터 입출력 처리 과정의 레이턴시가 증가될 수 있다.
이에 본 발명은 SPDK와 같이 사용자 영역에 구현되며, 하나의 프로세서 코어를 통해 데이터 입출력 프로세서가 수행되는 스토리지 인터페이스 드라이버가 이용되는 환경에서, 데이터 입출력 레이턴시를 줄일 수 있는 데이터 중복 제거 방법을 제안한다.
본 발명의 일실시예에 따른 데이터 중복 제거 방법은 메모리 및 멀티코어 프로세서를 포함하는 컴퓨팅 장치에서 수행될 수 있으며, 클라우드 스토리지 서비스를 제공하는 스토리지 서버는 이러한 컴퓨팅 장치의 일예일 수 있다.
이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 데이터 중복 제거를 수행하는 스토리지 서버를 설명하기 위한 도면이다.
도 1을 참조하면 본 발명의 일실시예에 따른 스토리지 서버는, 스토리지(110), 메모리(120) 및 적어도 하나의 멀티코어 프로세서(130)를 포함한다.
스토리지(110)는 예컨대 단말의 응용과 같은 계산 노드의 쓰기 요청 데이터를 저장하며, 스토리지(110)에 저장된 데이터는, 응용의 읽기 요청에 따라 응용으로 전달될 수 있다. 스토리지(110)는 일실시예로서 NVMe SSD일 수 있으며, SPDK가 스토리지 인터페이스 드라이버로 이용될 수 있다.
메모리(120)와 전기적으로 연결된 멀티코어 프로세서(130)는 응용의 I/O 요청을 처리하며, 스토리지(110)를 제어한다. 또한 멀티코어 프로세서(130)는 데이터 입출력 처리 과정에서 데이터 중복 제거를 수행한다.
멀티코어 프로세서(130)는 SPDK와 같이, 사용자 영역에 구현된 스토리지 인터페이스 드라이버가 이용되는 환경에서, 포그라운드 이벤트인 쓰기 요청이 발생한 경우, 백그라운드 이벤트인 데이터 중복 제거를 수행한다. 이 때 데이터 중복 제거를 위한 스레드(thread)가 처리되는 프로세서 코어는, 멀티코어 프로세서(130)에 포함된 프로세서 코어의 사용량에 따라 동적으로 결정된다.
멀티코어 프로세서(130)는 포그라운드 이벤트인 스토리지(110)에 대한 쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링하며, 모니터링된 사용량에 따라서, 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택한다. 그리고 선택된 프로세서 코어에 할당된 스레드를 통해, 백그라운드 이벤트인 중복 제거가 수행된다. 여기서 후보 프로세서 코어는, 사용자 영역에 구현된 스토리지 인터페이스 드라이버에 의해 사용중인 프로세서 코어로서, 쓰기 요청을 처리하는 프로세서 코어를 포함한다.
멀티코어 프로세서(130)는 일실시예로서, 후보 프로세서 코어 중에서, 사용량이 최소인 프로세서 코어를, 중복 제거를 수행할 프로세서 코어로 선택할 수 있다. 스토리지 인터페이스 드라이버에 의해 사용되는 프로세서 코어가 제1 내지 제4코어이며, 이 중 제1코어에 의해 쓰기 요청이 처리되는 상황에서, 제4코어의 사용량이 최소라면, 제4코어가 중복 제거를 수행할 프로세서 코어로 선택될 수 있다. 그리고 제1코어의 사용량이 최소라면, 제1코어에 쓰기 요청이 처리되고 있더라도, 제1코어가 중복 제거를 수행할 프로세서 코어로 선택될 수 있다. 즉, 중복 제거를 수행할 프로세서 코어는 쓰기 요청이 처리되는 프로세서 코어와 무관하게 독립적으로 선택된다.
이와 같이, 본 발명의 일실시예에 따르면, 프로세서 코어의 사용량에 따라서, 포그라운드 이벤트인 쓰기 요청이 처리되는 프로세서 코어와 독립적으로 백그라운드 이벤트인 중복 제거를 위한 프로세서 코어를 할당함으로써, 중복 제거 처리에 의한 데이터 입출력 레이턴시가 줄어들 수 있다.
멀티코어 프로세서(130)는 쓰기 요청된 데이터가 스토리지에 저장된 이후, 쓰기 요청된 데이터의 중복 저장 여부를 판단하여, 판단 결과에 따라서, 쓰기 요청된 데이터에 대한 중복 제거를 수행하며, 구체적인 중복 제거 방법은 이하 도면에서 상세히 설명된다.
도 2는 본 발명의 일실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 도면이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 스토리지 서버는 쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링(S210)하고, 모니터링된 사용량에 따라서, 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택(S230)한다.
전술된 바와 같이, 후보 프로세서 코어는 사용자 영역에 구현된 스토리지 인터페이스 드라이버에 의해 사용중인 프로세서 코어로서, 스토리지 인터페이스 드라이버는 SPDK일 수 있다. 그리고 단계 S230에서 스토리지 서버는 후보 프로세서 코어 중에서, 사용량이 최소인 프로세서 코어를, 중복 제거를 수행할 프로세서 코어로 선택할 수 있다.
그리고 스토리지 서버는 단계 S230에서 선택된 프로세서 코어를 이용하여, 중복 제거를 수행하며, 쓰기 요청된 데이터를 스토리지에 저장한 이후 중복 제거를 수행한다. 즉, 스토리지 서버는, 쓰기 요청된 데이터가 스토리지에 저장된 이후, 쓰기 요청된 데이터의 중복 저장 여부를 판단하고, 중복 저장 여부의 판단 결과에 따라서, 중복 제거를 수행할 수 있다.
스토리지 서버는 중복 저장 여부를 판단하기 위해, 쓰기 요청된 데이터를 미리 설정된 크기의 청크(chunk)로 분할한다. 스토리지 서버는 쓰기 요청된 데이터를 일예로서, 512byte 또는 1024byte 크기의 청크로 분할할 수 있다. 그리고 스토리지 서버는 미리 설정된 해시 함수에 청크 각각을 입력하여, 청크 각각에 대한 해시값을 계산한다. 그리고 스토리지 서버는 청크에 대한 해시값이 중복 제거 테이블에 포함되어 있는지 여부를 확인함으로써, 청크 별로 중복 저장 여부를 확인할 수 있다. 중복 제거 테이블은 스토리지에 저장된 데이터에 대한 해시값 및 저장 주소값이 기록된 테이블로서, 스토리지 서버는 청크에 대한 해시값이 중복 제거 테이블에 이미 기록되어 있는 경우, 해당 청크가 중복 저장된 것으로 판단할 수 있다.
그리고 스토리지 서버는, 청크가 중복 저장된 것으로 판단된 경우, 중복 저장된 청크에 대한 중복 저장 정보를, 중복 제거 테이블에 기록한다. 중복 저장 정보는 중복 저장된 청크의 해시값, 저장 주소값 및 중복 저장 여부에 대한 플래그값을 포함할 수 있다.
스토리지 서버는 중복 저장된 청크를 스토리지에서 바로 제거하지 않고, 중복 제거 테이블에 중복 저장 정보를 기록하는 방식으로 중복 제거를 수행할 수 있다. 중복 저장된 청크는 제거될 데이터로서, 스토리지는 추후 중복 저장 정보를 이용하여 중복 저장된 청크의 저장 위치를 확인한 후, 중복 저장된 청크를 삭제하고 중복 저장된 청크가 삭제된 저장 영역에, 새로운 데이터를 덮어쓸 수 있다.
또는 실시예에 따라서 스토리지 서버는 청크가 스토리지에 저장된 직후, 중복 저장된 청크를 스토리지에서 바로 삭제함으로써, 스토리지의 가용 저장 공간을 늘릴 수 있다. 이 경우 중복 저장된 청크에 대한 해시값과 저장 주소값은 중복 제거 테이블에 기록될 필요가 없으므로, 스토리지 서버는 중복 저장되지 않은 청크의 해시값과 저장 주소값을 중복 제거 테이블에 기록할 수 있다.
[표 1]은 본 발명의 일실시예에 따른 데이터 중복 제거 방법의 성능을 설명하기 위한 표이다.
[표 1]에서 no dedup은 데이터 중복 제거 없이 데이터 입출력이 처리되는 경우를 나타내며, inline dedup은 인라인 데이터 중복 제거와 함께 데이터 입출력이 처리되는 경우를 나타낸다. 그리고 Sema-inline dedup은 본 발명의 일실시예에 따른 데이터 중복 제거 방법과 함께 데이터 입출력이 처리되는 경우를 나타낸다.
[표 1]에 도시된 바와 같이, 본 발명의 일실시예에 따르면, 데이터 중복 제거가 수행되지 않는 경우와 유사한 성능을 나타내며, 데이터 중복 제거에 의한 레이턴시 증가없이 데이터 입출력이 처리될 수 있음을 알 수 있다.
도 3은 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 도면이며, 도 4는 SPDK에서 처리되는 입출력 요청을 나타내는 도면이다.
도 3을 참조하면 본 발명의 일실시예에 따른 스토리지 서버는 쓰기 요청이 발생한 경우, 쓰기 요청에 대한 제1스레드를 생성(S310)한다. 제1스레드는 스토리지 인터페이스 드라이버에 의해 사용중인 프로세서 코어중 하나에 할당된다.
그리고 스토리지 서버는 후보 프로세서 코어의 사용량을 모니터링하여, 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택(S320)한다. 후보 프로세서 코어는 사용자 영역에 구현된 스토리지 인터페이스 드라이버에 의해 사용중인 프로세서 코어이며, 스토리지 서버는 최소 사용량의 프로세서 코어를 선택할 수 있다.
그리고 스토리지 서버는 선택된 프로세서 코어에 처리되며, 쓰기 요청된 데이터에 대한 중복 제거 수행을 위한 제2스레드를 생성(S330)한다. 그리고 스토리지 서버는 제1스레드를 통해 쓰기 요청된 데이터가 스토리지에 저장된 이후, 제2스레드에서 쓰기 요청된 데이터의 중복 저장 여부를 판단하고 판단 결과에 따라서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 수 있다. 스토리지 서버는 도 3에 설명된 바와 같이, 중복 제거를 수행할 수 있다.
전술된 데이터 중복 제거 방법은 SPDK에서 도 4와 같이 처리될 수 있다. 쓰기 요청(Write I/O)에 대한 제1스레드는, SPDK에 의해 사용중인 프로세서 코어 중 하나에서 처리된다. 응용으로부터 전달된 포그라운드 I/O인 쓰기 요청은 NVMe-oF target BDEV를 거쳐, 사용자 정의 BEDV(Block Device Abstraction Layer)인 Passthru BEDV에 도달한다. 그리고 SPDK의 Passthru BEDV는 중복 제거에 대한 백그라운드 I/O(Dedup I/O)를 생성하고 후보 프로세서 코어의 사용량을 모니터링하여, 중복 제거를 수행할 프로세서 코어를 선택한다. 백그라운드 I/O는 선택된 프로세서 코어로 전달되며, 중복 제거 수행을 위한 제2스레드가, 선택된 프로세서 코어에서 제1스레드와 독립적으로 처리된다.
앞서 설명한 기술적 내용들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예들을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 하드웨어 장치는 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (19)

  1. 클라우드 스토리지 서비스를 제공하는 스토리지 서버에 의해 수행되는 데이터 중복 제거 방법에 있어서,
    쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링하는 단계;
    상기 사용량에 따라서, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하는 단계; 및
    상기 선택된 프로세서 코어를 이용하여, 상기 중복 제거를 수행하는 단계를 포함하며,
    상기 중복 제거를 수행하는 단계는
    상기 쓰기 요청된 데이터가 스토리지에 저장된 이후, 상기 쓰기 요청된 데이터의 중복 저장 여부를 판단하는 단계; 및
    상기 판단 결과에 따라서, 상기 중복 제거를 수행하는 단계를 포함하며,
    상기 중복 저장 여부를 판단하는 단계는
    상기 쓰기 요청된 데이터를 미리 설정된 크기의 청크로 분할하는 단계;
    상기 청크 각각에 대한 해시값을 계산하는 단계; 및
    상기 스토리지에 저장된 데이터에 대한 해시값 및 저장 주소값이 기록된 중복 제거 테이블에, 상기 청크에 대한 해시값이 포함되어 있는지 여부를 확인하는 단계를 포함하며,
    상기 중복 제거를 수행하는 단계는, 중복 저장된 상기 청크에 대한 중복 저장 정보를, 상기 중복 제거 테이블에 기록하고, 상기 중복 저장 정보를 이용해 상기 중복 저장된 청크의 저장 위치를 확인하여, 상기 중복 저장된 청크를 삭제하며,
    상기 중복 저장 정보는, 상기 중복 저장된 청크의 해시값, 저장 주소값 및 중복 저장 여부에 대한 플래그값을 포함하며,
    상기 후보 프로세서 코어는, 사용자 영역에 구현된 스토리지 인터페이스 드라이버에 의해 사용중인 프로세서 코어인
    데이터 중복 제거 방법.
  2. 삭제
  3. 제 1항에 있어서,
    상기 스토리지 인터페이스 드라이버는
    SPDK인
    데이터 중복 제거 방법.
  4. 제 1항에 있어서,
    상기 프로세서 코어를 선택하는 단계는
    상기 후보 프로세서 코어 중에서, 상기 사용량이 최소인 프로세서 코어를, 상기 중복 제거를 수행할 프로세서 코어로 선택하는
    데이터 중복 제거 방법.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 클라우드 스토리지 서비스를 제공하는 스토리지 서버에 의해 수행되는 데이터 중복 제거 방법에 있어서,
    쓰기 요청이 발생한 경우, 상기 쓰기 요청에 대한 제1스레드를 생성하는 단계;
    후보 프로세서 코어의 사용량을 모니터링하여, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하는 단계;
    상기 선택된 프로세서 코어에 처리되며, 상기 쓰기 요청된 데이터에 대한 중복 제거 수행을 위한 제2스레드를 생성하는 단계;
    상기 쓰기 요청된 데이터가 스토리지에 저장된 이후, 상기 쓰기 요청된 데이터의 중복 저장 여부를 판단하는 단계; 및
    상기 판단 결과에 따라서, 상기 쓰기 요청된 데이터에 대한 중복 제거를 수행하는 단계를 포함하며,
    상기 후보 프로세서 코어는, 사용자 영역에 구현된 스토리지 인터페이스 드라이버에 의해 사용중인 프로세서 코어이며,
    상기 중복 저장 여부를 판단하는 단계는
    상기 쓰기 요청된 데이터를 미리 설정된 크기의 청크로 분할하는 단계;
    상기 청크 각각에 대한 해시값을 계산하는 단계; 및
    상기 스토리지에 저장된 데이터에 대한 해시값 및 저장 주소값이 기록된 중복 제거 테이블에, 상기 청크에 대한 해시값이 포함되어 있는지 여부를 확인하는 단계를 포함하며,
    상기 중복 제거를 수행하는 단계는, 중복 저장된 상기 청크에 대한 중복 저장 정보를, 상기 중복 제거 테이블에 기록하고, 상기 중복 저장 정보를 이용해 상기 중복 저장된 청크의 저장 위치를 확인하여, 상기 중복 저장된 청크를 삭제하며,
    상기 중복 저장 정보는, 상기 중복 저장된 청크의 해시값, 저장 주소값 및 중복 저장 여부에 대한 플래그값을 포함하는
    데이터 중복 제거 방법.
  9. 삭제
  10. 제 8항에 있어서,
    상기 스토리지 인터페이스 드라이버는
    SPDK인
    데이터 중복 제거 방법.
  11. 제 8항에 있어서,
    상기 중복 제거를 수행할 프로세서 코어를 선택하는 단계는
    상기 후보 프로세서 코어 중에서, 상기 사용량이 최소인 프로세서 코어를, 상기 중복 제거를 수행할 프로세서 코어로 선택하는
    데이터 중복 제거 방법.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 스토리지;
    메모리; 및
    상기 메모리와 전기적으로 연결된 적어도 하나의 멀티코어 프로세서를 포함하며,
    상기 멀티코어 프로세서는
    포그라운드 이벤트인 상기 스토리지에 대한 쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링하며,
    상기 사용량에 따라서, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하며,
    상기 쓰기 요청된 데이터를 미리 설정된 크기의 청크로 분할하고, 상기 청크 각각에 대한 해시값을 계산하고, 상기 스토리지에 저장된 데이터에 대한 해시값 및 저장 주소값이 기록된 중복 제거 테이블에, 상기 청크에 대한 해시값이 포함되어 있는지 여부를 확인하여, 상기 쓰기 요청된 데이터의 중복 저장 여부를 판단하며,
    중복 저장된 상기 청크에 대한 중복 저장 정보를, 상기 중복 제거 테이블에 기록하며, 상기 쓰기 요청된 데이터가 상기 스토리지에 저장된 이후, 상기 중복 저장 정보를 이용해 상기 중복 저장된 청크의 저장 위치를 확인하여, 상기 중복 저장된 청크를 삭제하며,
    상기 중복 저장 정보는, 상기 중복 저장된 청크의 해시값, 저장 주소값 및 중복 저장 여부에 대한 플래그값을 포함하며,
    백그라운드 이벤트인 상기 중복 제거는
    상기 선택된 프로세서 코어에 할당된 스레드를 통해 수행되며,
    상기 후보 프로세서 코어는, 사용자 영역에 구현된 스토리지 인터페이스 드라이버에 의해 사용중인 프로세서 코어인
    데이터 중복 제거를 수행하는 스토리지 서버.
  16. 삭제
  17. 제 15항에 있어서,
    상기 스토리지 인터페이스 드라이버는
    SPDK인
    데이터 중복 제거를 수행하는 스토리지 서버.
  18. 제 17항에 있어서,
    상기 멀티코어 프로세서는
    상기 후보 프로세서 코어 중에서, 상기 사용량이 최소인 프로세서 코어를, 상기 중복 제거를 수행할 프로세서 코어로 선택하는
    데이터 중복 제거를 수행하는 스토리지 서버.
  19. 삭제
KR1020230022266A 2023-02-20 2023-02-20 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 KR102599116B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230022266A KR102599116B1 (ko) 2023-02-20 2023-02-20 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230022266A KR102599116B1 (ko) 2023-02-20 2023-02-20 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치

Publications (1)

Publication Number Publication Date
KR102599116B1 true KR102599116B1 (ko) 2023-11-07

Family

ID=88747083

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230022266A KR102599116B1 (ko) 2023-02-20 2023-02-20 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치

Country Status (1)

Country Link
KR (1) KR102599116B1 (ko)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101229851B1 (ko) * 2011-12-27 2013-02-05 한국과학기술원 데이터의 병렬적 중복제거 시스템
KR20160046649A (ko) * 2014-10-21 2016-04-29 삼성에스디에스 주식회사 파일 동기화 방법
KR101812583B1 (ko) * 2011-07-21 2018-01-30 삼성전자주식회사 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체
KR20180059197A (ko) * 2016-11-25 2018-06-04 인하대학교 산학협력단 총 플래시 어레이 기반 오픈스택 클라우드 블록 스토리지에서의 패리티 데이터 중복제거 방법
KR20220077208A (ko) * 2020-11-30 2022-06-09 삼성전자주식회사 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법
KR20220094601A (ko) * 2020-12-29 2022-07-06 삼성전자주식회사 스토리지 장치 및 그 구동 방법
KR102471966B1 (ko) * 2021-11-25 2022-11-30 (주)글루시스 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101812583B1 (ko) * 2011-07-21 2018-01-30 삼성전자주식회사 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체
KR101229851B1 (ko) * 2011-12-27 2013-02-05 한국과학기술원 데이터의 병렬적 중복제거 시스템
KR20160046649A (ko) * 2014-10-21 2016-04-29 삼성에스디에스 주식회사 파일 동기화 방법
KR20180059197A (ko) * 2016-11-25 2018-06-04 인하대학교 산학협력단 총 플래시 어레이 기반 오픈스택 클라우드 블록 스토리지에서의 패리티 데이터 중복제거 방법
KR20220077208A (ko) * 2020-11-30 2022-06-09 삼성전자주식회사 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법
KR20220094601A (ko) * 2020-12-29 2022-07-06 삼성전자주식회사 스토리지 장치 및 그 구동 방법
KR102471966B1 (ko) * 2021-11-25 2022-11-30 (주)글루시스 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법

Similar Documents

Publication Publication Date Title
US10977124B2 (en) Distributed storage system, data storage method, and software program
US9501365B2 (en) Cloud-based disaster recovery of backup data and metadata
US10545987B2 (en) Replication to the cloud
JP5732536B2 (ja) 重複排除に基づくストレージシステムにおけるスケーラブル参照管理のためのシステム、方法及び非一時的なコンピュータ可読ストレージ媒体
US7546321B2 (en) System and method for recovery from failure of a storage server in a distributed column chunk data store
US9996421B2 (en) Data storage method, data storage apparatus, and storage device
US11068405B2 (en) Compression of host I/O data in a storage processor of a data storage system with selection of data compression components based on a current fullness level of a persistent cache
KR20170054299A (ko) 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법
EP2330519A1 (en) Distributed file system and data block consistency managing method thereof
US8135918B1 (en) Data de-duplication for iSCSI
US9959049B1 (en) Aggregated background processing in a data storage system to improve system resource utilization
CN108268344B (zh) 一种数据处理方法和装置
US10628298B1 (en) Resumable garbage collection
US9367256B2 (en) Storage system having defragmentation processing function
CN108228390B (zh) 数据回档方法及装置
US20190347165A1 (en) Apparatus and method for recovering distributed file system
US20230350760A1 (en) Physical size api for snapshots backed up to object store
EP3449372B1 (en) Fault-tolerant enterprise object storage system for small objects
US11775193B2 (en) System and method for indirect data classification in a storage system operations
US9575679B2 (en) Storage system in which connected data is divided
US20200372001A1 (en) Deduplication storage method, deduplication storage control device, and deduplication storage system
WO2023197937A1 (zh) 数据处理方法及其装置、存储介质、计算机程序产品
KR102599116B1 (ko) 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치
US11640339B2 (en) Creating a backup data set
US7949632B2 (en) Database-rearranging program, database-rearranging method, and database-rearranging apparatus

Legal Events

Date Code Title Description
AMND Amendment
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant