KR102599116B1 - 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 - Google Patents
데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000012544 monitoring process Methods 0.000 claims abstract description 5
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space 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
본 발명은 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치에 관한 것이다.
클라우드 스토리지 서비스에서 처리되는 데이터가 기하급수적으로 증가하고 있다. 클라우드 스토리지 서비스를 통해 처리되는 데이터는, 높은 가용성, 안정성 및 실패(failure) 관리를 위해 분산 스토리지 시스템에 복제된다. 이러한 중복 데이터는 스토리지 성능, 스토리지 시스템의 효율성 및 네트워크 대역폭(bandwidth) 등 시스템 전반에 영향을 미치므로, 클라우드 스토리지 서비스 업체들은 데이터 중복 제거(data deduplication)를 통해, 사용자가 저장한 중복 데이터를 제거한다.
데이터 중복 제거 기술은, 중복 제거 시점을 기준으로 인라인 중복 제거(inline deduplication)와 오프라인 중복 제거(offline deduplication)으로 나뉠 수 있다. 인라인 중복 제거는 쓰기 요청된 데이터가 스토리지에 저장되기 전에 중복 제거가 수행되는 방식으로서, 스토리지에 저장되기 전에 중복 제거가 수행되므로, 상대적으로 필요한 저장 공간이 적어지는 장점이 있지만, 데이터가 저장되는 과정에서 중복 제거가 수행되므로, 레이턴시가 증가하는 단점이 있다. 오프라인 중복 제거는 쓰기 요청된 데이터가 스토리지에 저장된 이후, 중복 저장된 데이터가 제거되는 방식으로, 데이터가 저장된 이후 중복 제거가 수행되므로 중복 제거에 따른 레이턴시가 증가하는 문제는 발생하지 않지만, 상대적으로 필요한 저장 공간이 증가한다는 단점이 있다.
관련 선행문헌으로 대한민국 등록특허 제10-2471966호, 제10-1685839호, 대한민국 공개특허 제2022-00772008호가 있다.
본 발명은 데이터 입출력의 레이턴시를 줄일 수 있는 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 서버를 제공하기 위한 것이다.
상기한 목적을 달성하기 위한 본 발명의 일 실시예에 따르면, 쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링하는 단계; 상기 사용량에 따라서, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하는 단계; 및 상기 선택된 프로세서 코어를 이용하여, 상기 중복 제거를 수행하는 단계를 포함하는 데이터 중복 제거 방법이 제공된다.
또한 상기한 목적을 달성하기 위한 본 발명의 다른 실시예에 따르면, 쓰기 요청이 발생한 경우, 상기 쓰기 요청에 대한 제1스레드를 생성하는 단계; 후보 프로세서 코어의 사용량을 모니터링하여, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하는 단계; 및 상기 선택된 프로세서 코어에 처리되며, 상기 쓰기 요청된 데이터에 대한 중복 제거 수행을 위한 제2스레드를 생성하는 단계를 포함하는 데이터 중복 제거 방법이 제공된다.
또한 상기한 목적을 달성하기 위한 본 발명의 또 다른 실시예에 따르면, 스토리지; 메모리; 및 상기 메모리와 전기적으로 연결된 적어도 하나의 멀티코어 프로세서를 포함하며, 상기 멀티코어 프로세서는 포그라운드 이벤트인 상기 스토리지에 대한 쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링하며, 상기 사용량에 따라서, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하며, 백그라운드 이벤트인 상기 중복 제거는 상기 선택된 프로세서 코어에 할당된 스레드를 통해 수행되는, 데이터 중복 제거를 수행하는 스토리지 서버가 제공된다.
본 발명의 일실시예에 따르면, 프로세서 코어의 사용량에 따라서, 포그라운드 이벤트인 쓰기 요청이 처리되는 프로세서 코어와 독립적으로 백그라운드 이벤트인 중복 제거를 위한 프로세서 코어를 할당함으로써, 중복 제거 처리에 의한 데이터 입출력 레이턴시가 줄어들 수 있다.
도 1은 본 발명의 일실시예에 따른 데이터 중복 제거를 수행하는 스토리지 서버를 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 도면이다.
도 4는 SPDK에서 처리되는 입출력 요청을 나타내는 도면이다.
도 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항에 있어서,
상기 스토리지 인터페이스 드라이버는
SPDK인
데이터 중복 제거 방법.
- 제 1항에 있어서,
상기 프로세서 코어를 선택하는 단계는
상기 후보 프로세서 코어 중에서, 상기 사용량이 최소인 프로세서 코어를, 상기 중복 제거를 수행할 프로세서 코어로 선택하는
데이터 중복 제거 방법.
- 삭제
- 삭제
- 삭제
- 클라우드 스토리지 서비스를 제공하는 스토리지 서버에 의해 수행되는 데이터 중복 제거 방법에 있어서,
쓰기 요청이 발생한 경우, 상기 쓰기 요청에 대한 제1스레드를 생성하는 단계;
후보 프로세서 코어의 사용량을 모니터링하여, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하는 단계;
상기 선택된 프로세서 코어에 처리되며, 상기 쓰기 요청된 데이터에 대한 중복 제거 수행을 위한 제2스레드를 생성하는 단계;
상기 쓰기 요청된 데이터가 스토리지에 저장된 이후, 상기 쓰기 요청된 데이터의 중복 저장 여부를 판단하는 단계; 및
상기 판단 결과에 따라서, 상기 쓰기 요청된 데이터에 대한 중복 제거를 수행하는 단계를 포함하며,
상기 후보 프로세서 코어는, 사용자 영역에 구현된 스토리지 인터페이스 드라이버에 의해 사용중인 프로세서 코어이며,
상기 중복 저장 여부를 판단하는 단계는
상기 쓰기 요청된 데이터를 미리 설정된 크기의 청크로 분할하는 단계;
상기 청크 각각에 대한 해시값을 계산하는 단계; 및
상기 스토리지에 저장된 데이터에 대한 해시값 및 저장 주소값이 기록된 중복 제거 테이블에, 상기 청크에 대한 해시값이 포함되어 있는지 여부를 확인하는 단계를 포함하며,
상기 중복 제거를 수행하는 단계는, 중복 저장된 상기 청크에 대한 중복 저장 정보를, 상기 중복 제거 테이블에 기록하고, 상기 중복 저장 정보를 이용해 상기 중복 저장된 청크의 저장 위치를 확인하여, 상기 중복 저장된 청크를 삭제하며,
상기 중복 저장 정보는, 상기 중복 저장된 청크의 해시값, 저장 주소값 및 중복 저장 여부에 대한 플래그값을 포함하는
데이터 중복 제거 방법.
- 삭제
- 제 8항에 있어서,
상기 스토리지 인터페이스 드라이버는
SPDK인
데이터 중복 제거 방법.
- 제 8항에 있어서,
상기 중복 제거를 수행할 프로세서 코어를 선택하는 단계는
상기 후보 프로세서 코어 중에서, 상기 사용량이 최소인 프로세서 코어를, 상기 중복 제거를 수행할 프로세서 코어로 선택하는
데이터 중복 제거 방법.
- 삭제
- 삭제
- 삭제
- 스토리지;
메모리; 및
상기 메모리와 전기적으로 연결된 적어도 하나의 멀티코어 프로세서를 포함하며,
상기 멀티코어 프로세서는
포그라운드 이벤트인 상기 스토리지에 대한 쓰기 요청이 발생한 경우, 후보 프로세서 코어의 사용량을 모니터링하며,
상기 사용량에 따라서, 상기 후보 프로세서 코어 중에서, 쓰기 요청된 데이터에 대한 중복 제거를 수행할 프로세서 코어를 선택하며,
상기 쓰기 요청된 데이터를 미리 설정된 크기의 청크로 분할하고, 상기 청크 각각에 대한 해시값을 계산하고, 상기 스토리지에 저장된 데이터에 대한 해시값 및 저장 주소값이 기록된 중복 제거 테이블에, 상기 청크에 대한 해시값이 포함되어 있는지 여부를 확인하여, 상기 쓰기 요청된 데이터의 중복 저장 여부를 판단하며,
중복 저장된 상기 청크에 대한 중복 저장 정보를, 상기 중복 제거 테이블에 기록하며, 상기 쓰기 요청된 데이터가 상기 스토리지에 저장된 이후, 상기 중복 저장 정보를 이용해 상기 중복 저장된 청크의 저장 위치를 확인하여, 상기 중복 저장된 청크를 삭제하며,
상기 중복 저장 정보는, 상기 중복 저장된 청크의 해시값, 저장 주소값 및 중복 저장 여부에 대한 플래그값을 포함하며,
백그라운드 이벤트인 상기 중복 제거는
상기 선택된 프로세서 코어에 할당된 스레드를 통해 수행되며,
상기 후보 프로세서 코어는, 사용자 영역에 구현된 스토리지 인터페이스 드라이버에 의해 사용중인 프로세서 코어인
데이터 중복 제거를 수행하는 스토리지 서버.
- 삭제
- 제 15항에 있어서,
상기 스토리지 인터페이스 드라이버는
SPDK인
데이터 중복 제거를 수행하는 스토리지 서버.
- 제 17항에 있어서,
상기 멀티코어 프로세서는
상기 후보 프로세서 코어 중에서, 상기 사용량이 최소인 프로세서 코어를, 상기 중복 제거를 수행할 프로세서 코어로 선택하는
데이터 중복 제거를 수행하는 스토리지 서버.
- 삭제
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)
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 | (주)글루시스 | 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법 |
-
2023
- 2023-02-20 KR KR1020230022266A patent/KR102599116B1/ko active IP Right Grant
Patent Citations (7)
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 |