KR20220105612A - 해시 기반의 키 밸류에 관한 블록 변환 방법 및 시스템 - Google Patents

해시 기반의 키 밸류에 관한 블록 변환 방법 및 시스템 Download PDF

Info

Publication number
KR20220105612A
KR20220105612A KR1020220008242A KR20220008242A KR20220105612A KR 20220105612 A KR20220105612 A KR 20220105612A KR 1020220008242 A KR1020220008242 A KR 1020220008242A KR 20220008242 A KR20220008242 A KR 20220008242A KR 20220105612 A KR20220105612 A KR 20220105612A
Authority
KR
South Korea
Prior art keywords
segment
index
metadata
hash
key
Prior art date
Application number
KR1020220008242A
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
Priority claimed from US17/321,326 external-priority patent/US12010214B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20220105612A publication Critical patent/KR20220105612A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

블록 변환 방법 및 시스템이 제공된다. 해시 기반의 키 밸류에 관한 블록 변환 방법에 있어서, 메모리 장치에 저장될 제1 오브젝트(Object)에 대한 제1 키의 해시에 기초하여 제1 인덱스를 계산하는 단계; 상기 제1 인덱스에 대응하는 상기 메모리 장치 상의 제1 세그먼트의 이용 가능성을 결정하는 단계; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트가 저장에 이용 불가능하다는 결정에 응답하여, 상기 제1 오브젝트에 대한 상기 제1 키의 상기 해시에 기초하여 제2 인덱스를 계산하는 단계; 상기 제2 인덱스에 대응하는 상기 메모리 장치 상의 제2 세그먼트의 이용 가능성을 결정하는 단계; 그리고 상기 제1 세그먼트의 제1 메타데이터의 충돌 테이블에 상기 제2 세그먼트의 위치 지시자를 추가하는 단계를 포함하는 블록 변환 방법을 제공한다.

Description

해시 기반의 키 밸류에 관한 블록 변환 방법 및 시스템{HASH BASED KEY VALUE TO BLOCK TRANSLATION METHODS AND SYSTEMS}
본 개시는 키 밸류 시스템에 관한 것으로, 특히 해시 기반의 효율적인 키 밸류에 관련한 블록 변환 방법 및 시스템에 관한 것이다.
일부 저장 장치는 키 밸류를 블록으로 또는 그 반대로 변환하는 변환기에 의존하지 않고 응용 프로그램(예를 들어, 소프트웨어 응용 프로그램)과 통신할 수 없다. 기존 기술은 리소스가 리소스가 많고 오버헤드가 높다. 또한 일부 기술은 확장할 때 제대로 작동하지 않을 수 있다. 따라서, 보다 효율적인 변환 기술이 필요하다.
본 발명의 목적은 해시 기반의 효율적인 키 밸류에 관련한 블록 변환 방법 및 시스템을 제공하는 데 있다.
본 개시의 몇몇 실시 예들에 따르면, 방법이 설명된다. 해시 기반의 키 밸류에 관한 블록 변환 방법에 있어서: 메모리 장치에 저장될 제1 오브젝트에 대한 제1 키의 해시에 기초하여 제1 인덱스를 계산하는 단계; 상기 제1 인덱스에 대응하는 상기 메모리 장치 상의 제1 세그먼트의 이용 가능성을 결정하는 단계; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트가 저장에 이용 불가능하다는 결정에 응답하여, 상기 제1 오브젝트에 대한 상기 제1키의 상기 해시에 기초하여 제2 인덱스를 계산하는 단계; 상기 제2 인덱스에 대응하는 상기 메모리 장치 상의 제2 세그먼트의 이용 가능성을 결정하는 단계; 그리고 상기 제1 세그먼트의 제1 메타데이터의 충돌 테이블에 상기 제2 세그먼트의 위치 지시자를 추가하는 단계를 포함할 수 있다.
해시 기반의 키 밸류에 관한 블록 변환 방법은 상기 제2 세그먼트가 이용 가능하다는 결정에 응답하여, 상기 제1 오브젝트를 상기 제2 세그먼트에 기록하는 단계를 더 포함할 수 있다.
상기 제2 인덱스를 계산하는 단계는 상기 제2 인덱스를 형성하기 위해 상기 해시의 모든 바이트로부터 비트를 추출하는 단계를 더 포함할 수 있다.
상기 제1 세그먼트의 이용 가능성을 결정하는 단계는 상기 제1 메타데이터로부터 상태 식별자를 판독하는 단계를 포함하고, 상기 상태 식별자는 저장에 사용할 수 없는 상기 제1 세그먼트에 대응하는 상태를 표시할 수 있다.
해시 기반의 키 밸류에 관한 블록 변환 방법은 상기 충돌 테이블이 비어 있는 것에 응답하여, 상기 제1 키의 상기 해시와 상기 제2 세그먼트의 상기 위치 지시자 사이의 연관을 상기 충돌 테이블에 기록하는 단계를 더 포함할 수 있다.
제1 인덱스를 계산하는 단계는 SHA-256을 사용하여 계산하는 단계를 포함할 수 있다.
해시 기반의 키 밸류에 관한 블록 변환 방법은 상기 제1 키를 지시하는 획득 요청을 수신하는 단계; 상기 제1 키의 상기 해시에 기초하여 상기 제1 인덱스를 계산하는 단계; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트의 상기 제1 메타데이터를 읽는 단계; 상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치하지 않는 것으로 결정하는 단계; 상기 제1 오브젝트가 상기 제2 세그먼트에 저장되어 있다고 결정하기 위해 상기 제1 메타데이터에서 상기 충돌 테이블을 읽는 단계; 그리고 상기 충돌 테이블을 읽는 것에 응답하여, 상기 제2 세그먼트로부터 상기 제1 오브젝트를 검색하는 단계를 더 포함할 수 있다.
해시 기반의 키 밸류에 관한 블록 변환 방법은 상기 제1 키를 식별하는 삭제 요청을 수신하는 단계; 상기 제1 키의 상기 해시에 기초하여 상기 제1 인덱스를 계산하는 단계; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트의 상기 제1 메타데이터를 읽는 단계; 상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치하지 않는 것으로 결정하는 단계; 상기 제1 오브젝트가 상기 제2 세그먼트에 저장되어 있다는 것을 결정하기 위해 상기 제1 메타데이터에서 상기 충돌 테이블을 읽는 단계; 그리고 상기 충돌 테이블을 읽는 것에 응답하여 상기 제2 세그먼트로부터 상기 제1 오브젝트를 삭제하는 단계를 더 포함할 수 있다.
해시 기반의 키 밸류에 관한 블록 변환 방법은 상기 제1 키를 식별하는 삭제 요청을 수신하는 단계; 상기 제1 키의 상기 해시에 기초하여 상기 제1 인덱스를 계산하는 단계; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트의 상기 제1 메타데이터를 읽는 단계; 상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치한다고 결정하는 단계; 상기 제1 메타데이터의 상기 충돌 테이블이 상기 제2 세그먼트의 상기 위치 지시자를 포함한다고 결정하는 단계; 상기 충돌 테이블의 밸류 크기를 0으로 설정하는 단계; 그리고 상기 제2 세그먼트로부터 상기 제1 오브젝트를 삭제하는 단계를 더 포함할 수 있다.
해시 기반의 키 밸류에 관한 블록 변환 방법은 상기 제1 키를 식별하는 삭제 요청을 수신하는 단계; 상기 제1 키의 상기 해시에 기초하여 상기 제1 인덱스를 계산하는 단계; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트의 상기 제1 메타데이터를 읽는 단계; 상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치한다고 결정하는 단계; 상기 제1 키의 해시가 상기 제1 메타데이터에 저장된 해시와 일치한다는 결정에 응답하여, 상기 제1 메타데이터의 상기 충돌 테이블이 비어 있다고 결정하는 단계; 그리고 상기 충돌 테이블을 비어 있는 것에 응답하여, 상기 제2 세그먼트로부터 상기 제1 오브젝트를 삭제하는 단계를 더 포함할 수 있다.
본 개시의 몇몇 실시 예들에 따르면, 오브젝트들을 저장하도록 구성된 오브젝트 스토리지 시스템에 있어서, 세그먼트들로 분할되는 메모리 장치를 포함하고, 상기 메모리 장치는: 상기 메모리 장치에 저장될 제1 오브젝트에 대한 제1 키의 해시에 기초하여 제1 인덱스를 계산하고; 상기 제1 인덱스에 대응하는 상기 메모리 장치 상의 제1 세그먼트의 이용 가능성을 결정하고; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트가 저장에 이용 불가능하다는 결정에 응답하여, 상기 제1 오브젝트에 대한 상기 제1 키의 상기 해시에 기초하여 제2 인덱스를 계산하고; 상기 제2 인덱스에 대응하는 상기 메모리 장치 상의 제2 세그먼트의 이용 가능성을 결정하고; 그리고 상기 제1 세그먼트의 제1 메타데이터의 충돌 테이블에 상기 제2 세그먼트의 위치 지시자를 추가하는 단계를 포함할 수 있다.
상기 메모리 장치는 상기 제2 세그먼트가 이용 가능하다는 결정에 응답하여상기 제1 오브젝트를 상기 제2 세그먼트에 기록하도록 더 구성될 수 있다.
상기 제2 인덱스를 계산하는 하는 것은, 상기 해시의 모든 바이트로부터 비트를 추출하여 상기 제2 인덱스를 형성하는 것을 포함할 수 있다.
상기 제1 세그먼트의 이용 가능성을 결정하는 것은, 상기 제1 메타데이터로부터 상태 식별자를 읽는 단계를 포함하고, 상기 상태 식별자는 상기 제1 세그먼트가 저장에 이용 불가능하다는 것에 대응하는 상태를 나타낼 수 있다.
상기 메모리 장치의 상기 충돌 테이블이 비어 있는 것에 응답하여, 상기 제1 키의 상기 해시와 상기 제2 세그먼트의 위치 지시자 사이의 연관을 상기 충돌 테이블에 기록하도록 더 구성될 수 있다.
상기 제1 인덱스를 계산하는 것은 SHA-256을 이용하여 계산하는 것을 포함할 수 있다.
상기 메모리 장치는: 상기 제1 키를 지시하는 획득 요청을 수신하고; 상기 제1 키의 상기 해시에 기초하여 상기 제1 인덱스를 계산하고; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트의 상기 제1 메타데이터를 읽고; 상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치하지 않는다고 결정하고; 상기 제1 오브젝트가 상기 제2 세그먼트에 저장되어 있다고 결정하기 위해 상기 제1 메타데이터에서 상기 충돌 테이블을 읽고; 그리고 상기 충돌 테이블을 읽는 것에 응답하여, 상기 제2 세그먼트로부터 상기 제1 오브젝트를 검색하도록 더 구성될 수 있다.
상기 메모리 장치는: 상기 제1 키를 식별하는 삭제 요청을 수신하고; 상기 제1 키의 상기 해시에 기초하여 상기 제1 인덱스를 계산하고; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트의 상기 제1 메타데이터를 읽고; 상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치하지 않는다고 결정하고; 상기 제1 오브젝트가 상기 제2 세그먼트에 저장되어 있다는 것을 결정하기 위해 상기 제1 메타데이터에서 상기 충돌 테이블을 읽고; 그리고 상기 충돌 테이블을 읽는 것에 응답하여, 상기 제2 세그먼트로부터 상기 제1 오브젝트를 삭제하도록 더 구성될 수 있다.
상기 메모리 장치는: 상기 제1 키를 식별하는 삭제 요청을 수신하고; 상기 제1 키의 상기 해시에 기초하여 상기 제1 인덱스를 계산하고; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트의 상기 제1 메타데이터를 읽고; 상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치한다고 결정하고; 상기 제1 메타데이터의 상기 충돌 테이블이 상기 제2 세그먼트의 위치 지시자를 포함한다고 결정하고; 상기 충돌 테이블의 밸류 크기를 0으로 설정하고; 그리고 상기 제2 세그먼트로부터 상기 제1 오브젝트를 삭제하도록 더 구성될 수 있다.
상기 메모리 장치는: 상기 제1 키를 식별하는 삭제 요청을 수신하고; 상기 제1 키의 상기 해시에 기초하여 상기 제1 인덱스를 계산하고; 상기 제1 인덱스에 대응하는 상기 제1 세그먼트의 상기 제1 메타데이터를 읽고; 상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치한다고 결정하고; 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치한다는 결정에 응답하여, 상기 제1 메타데이터의 상기 충돌 테이블이 비어 있다고 결정하고; 그리고 상기 충돌 테이블을 비어 있는 것에 응답하여, 상기 제2 세그먼트로부터 상기 제1 오브젝트를 삭제하도록 구성될 수 있다.
해시 기반의 키 밸류에 관한 블록 변환 방법에 있어서: 제1 키를 지시하는 획득 요청을 수신하는 단계; 메모리 장치로부터 검색될 오브젝트에 대한 상기 제1 키의 해시에 기초하여 제1 인덱스를 계산하는 단계; 상기 제1 인덱스에 대응하는 제1 세그먼트의 제1 메타데이터를 읽는 단계; 상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치하지 않는 것으로 결정하는 단계; 오브젝트가 제2 세그먼트에 저장되어 있다고 결정하기 위해 상기 제1 메타데이터에서 충돌 테이블을 읽는 단계; 그리고 상기 충돌 테이블 읽는 것에 응답하여, 상기 제2 세그먼트로부터 상기 오브젝트를 검색하는 단계를 포함할 수 있다.
상기 충돌 테이블은 상기 제1 키의 상기 해시에 기초하는 제2 인덱스 및 상기 제1 키의 상기 해시와 상기 제2 세그먼트의 위치 지시자 간의 제1 세그먼트 연관에 저장된 오브젝트의 오프셋을 포함할 수 있다.
본 발명의 범위는 참조에 의해 이 섹션에 통합된 청구범위에 의해 정의될 수 있다. 본 발명의 실시 예들에 대한 완전한 이해는 하나 이상의 실시 예에 대한 다음의 상세한 설명을 고려함으로써 통상의 기술자에게 제공될 뿐만 아니라 추가적인 이점을 실현할 수 있을 것이다. 첫 번째로 간략하게 설명될 첨부된 도면 시트들을 참조할 것이다.
본 개시의 몇몇 실시 예들에 따르면, 키 밸류에 기초하는 해시에 관한 블록 변환 방법 및 시스템이 설명될 수 있다. 본 개시의 몇몇 실시 예들에 따르면, 키 밸류를 블록으로 또는 그 반대로 변환함에 있어 보다 효율적인 변환 기술을 제공할 수 있다.
도 1은 본 개시의 예시적인 실시 예들에 따라 응용 프로그램과 통신하는 키 밸류 저장을 위해 블록 변환에 기초하는 해시를 사용하는 메모리 장치를 예시하는 블록도를 도시한다.
도 2는 본 개시의 예시적인 실시 예들에 따라 메모리 장치에서 이용 가능한 슬롯을 찾는 방법에 대한 흐름도를 도시한다.
도 3은 본 개시의 예시적인 실시 예들에 따라 메모리 장치의 이용 가능한 슬롯에 오브젝트를 두는 방법에 대한 흐름도를 도시한다.
도 4는 본 개시의 예시적인 실시 예들에 따라 메모리 장치로부터 오브젝트를 얻기 위한 방법에 대한 흐름도를 도시한다.
도 5는 본 개시의 예시적인 실시 예들에 따라 메모리 장치 상의 오브젝트를 삭제하는 방법에 대한 흐름도를 도시한다.
도 6은 본 개시의 예시적인 실시 예에 따라 시스템 충돌 또는 재시작에서 복구하는 방법에 대한 흐름도를 도시한다.
도 7은 본 개시의 예시적인 실시 예에 따라 메타데이터의 예를 도시한다.
본 개시 내용의 실시 예들 및 이들의 이점은 다음의 상세한 설명을 참조함으로써 가장 잘 이해될 것이다. 다른 언급이 없는 한, 첨부된 도면 및 명세서 전체에 걸쳐 동일한 참조번호는 동일한 구성요소를 나타내므로 중복되는 설명은 생략할 수 있다. 도면에서 구성요소들, 층들, 및 영역들의 상대적인 크기는 명확성을 위해 과장될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시 예들을 상세하게 설명할 것이다. 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 여기에서 설명하는 실시 예들에만 한정되는 것은 아니다. 본 개시의 몇몇 실시 예들은 본 개시가 철저하고 완전할 수 있고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 본 발명의 양상 및 특징이 충분히 전달될 수 있도록 하기 위해, 예로서 제공된다. 따라서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 양상 및 특징에 대한 완전한 이해를 위해 필요하지 않은 프로세스들, 구성요소들, 및 기술들에 대해서는 설명하지 않을 수 있다.
도 1은 예를 들어, 컴퓨터에 응용 프로그램에 의해 제공되는 정보를 저장하도록 구성된 메모리 장치를 포함하는 시스템을 나타내는 블록도이다. 메모리 장치의 한 예는 블록 저장 기술들을 사용하여 SSD(Solid State Drive)에 데이터를 저장하기 위한 SSD일 수 있다. 블록 저장 장치들에서, 원시 데이터는 특정 장치 주소의 메모리 장치에 저장되고, 응용 프로그램은 장치 블록 오프셋(논리적 블록 어드레싱(Logical Block Addressing)(LBA))과 장치에 저장될 데이터의 길이를 제공할 수 있다. 반면에, 오브젝트(Object) 스토리지를 사용하는 응용 프로그램들은 키-밸류(Key-Value) 의미를 이해할 수 있다. 따라서, 데이터 쓰기, 읽기, 삭제 등의 작업을 수행하기 위해서는 오브젝트 스토리지의 키를 블록 저장 장치의 밸류 위치(예를 들어, LBA)에 맵핑하는 변환기가 필요할 수 있다. 따라서, 저장된 오브젝트를 검색하는 것이 바람직할 때, 응용 프로그램(예를 들어, 소프트웨어 응용 프로그램)은 키를 메모리 장치에 제공할 수 있고, 변환기는 키에 기초하여 메모리 장치로부터 오브젝트를 검색하도록 밸류 위치에 키를 맵핑할 수 있다. 이와 유사하게, 저장된 오브젝트를 삭제하고자 하는 경우, 응용 프로그램은 오브젝트에 대응하는 키를 제공할 수 있고, 변환기는 밸류 위치에 키를 맵핑할 수 있고, 오브젝트를 삭제할 수 있다. 그러므로, 변환기를 사용함으로써, 오브젝트 저장 응용 프로그램들에서 사용하는 키를 장치 동작들을 수행하기 위해 블록 저장 장치 상의 밸류 위치에 맵핑할 수 있다. 그러나, 이러한 변환들을 실행하면 리소스가 많이 소모되어 전체 시스템의 속도가 느려지고, 메모리 장치의 크기가 축소됨에 따라 성능이 부정적인 영향을 받을 수도 있다. 따라서, 확장할 때 성능을 저하시키지 않는 보다 효율적인 기술이 필요할 수 있다.
본 개시의 다양한 몇몇 실시예들은 응용 프로그램과 메모리 장치 사이의 넣기 동작(예를 들어, 저장), 가져오기 동작(예를 들어, 검색), 및 삭제 동작 동안 블록 저장 변환 기술에 대한 키 밸류를 설명할 수 있다. 본 개시의 몇몇 실시 예에서, 블록 저장 변환에 대한 키 밸류는 충돌 복구 또는 시스템 재시작 동작들 동안 사용될 수 있다. 도 1은 예를 들어, 데이터를 저장하기 위한 SSD와 같은 메모리 장치(114)에 연결된 적어도 프로세서(106)를 포함하는 컴퓨터와 같은 시스템(100)의 예시적인 블록도이다. 본 개시의 몇몇 실시 예에서, 프로세서(106)는 프로세서(106)의 I/O 인터페이스(104) 및 메모리 장치(114)의 I/O 인터페이스(108)를 통해 블록 저장을 사용하는 메모리(112)와 통신하는 응용 프로그램(102)을 포함할 수 있다. 컨트롤러(110)는 메모리(112)에 연결될 수 있고, 메모리(112)와 응용 프로그램(102) 사이에서 흐르는 데이터 트래픽을 조절하도록 구성될 수 있다. 메모리 장치(114)의 예는 SSD이고, SSD는 복수의 동일한 크기의 세그먼트(Segment)로 분할될 수 있다. 예를 들어, 16TB의 SSD는 약 40억 개의 동일 크기의 4KB 세그먼트로 분할될 수 있다. 그러나 SSD는 응용 프로그램이나 최조 사용자의 선호도에 따라 더 크거나 작은 크기의 세그먼트로 나눌 수 있다.
본 개시의 몇몇 실시 예들에 따르면, 응용 프로그램(102)에 의해 저장될 오브젝트는 키를 가지며, 해시(Hash)를 생성하기 위해 키에 해싱 기능(Hashing function)이 적용될 수 있다. 그 다음 해시는 인덱스(Index)를 생성하기 위해 사용될 수 있고, 오브젝트는 생성된 인덱스에 대응하는 메모리 장치의 세그먼트에 밸류로 저장될 수 있다. 메모리 장치 내의 세그먼트의 위치는 해시에서 생성된 인덱스에 의해 결정될 수 있다. 예를 들어, 키에 해싱 함수를 적용하여 해시(예를 들어, 256비트 숫자)를 생성하고 이 해시를 기반으로 인덱스를 생성할 수 있다. 그런 다음 인덱스를 사용하여 인덱스와 일치하는 세그먼트 지시자(Indicator)(40억 세그먼트 중의)를 찾을 수 있다. 예를 들어, 세그먼트 지시자는 장치 내의 세그먼트의 주소 또는 위치일 수 있으며, 인덱스와 일치하는 세그먼트 지시자가 발견되면 오브젝트가 해당 세그먼트에 저장될 수 있다. 이와 마찬가지로, 세그먼트에 저장된 오브젝트를 검색하려는 경우, 검색하고자 하는 오브젝트에 대응하는 키는, 인덱스를 생성하기 위해 해시될 수 있고, 오브젝트는 인덱스 상의 세그먼트로부터 검색될 수 있다. 따라서, 본 개시의 예시적인 몇몇 실시 예들에 따른 해시 기반의 키 밸류 변환 기술은 크기가 축소될 때 리소스 소모를 줄이고 성능을 더욱 향상시키는 방법을 제공할 수 있다. 하지만, 실제 전술한 내용들을 구현하는 것은 어려울 수 있다. 예를 들어, 해시에서 생성된 인덱스는 인덱스가 사용 가능한 세그먼트 범위를 벗어날 수 있으므로, 세그먼트와 일치하지 않을 수 있다. 즉, 40억 개의 세그먼트가 있는 경우, 40억보다 큰 인덱스 번호는 범위를 벗어날 수 있다. 또한, 경우에 따라 생성된 인덱스에 해당하는 세그먼트가 다른 킹 해당하는 오브젝트에 의해 이미 점유되어 오브젝트에 의한 충돌이 발생할 수 있다. 따라서, 본 개시의 예시적인 실시 예들은 여기에 설명된 다양한 인덱스 생성 및 충돌 처리 기술을 구현할 수 있다.
도 2는 본 개시의 예시적인 실시 예에 따라 메모리 장치 상의 이용 가능한 슬롯을 찾기 위한 방법에 대한 흐름도를 도시한다. 본 개시의 예시적인 몇몇 실시 예들에서, 응용 프로그램이 오브젝트를 메모리 장치(예를 들어, SSD)에 기록하기를 원할 때, 그 오브젝트를 SSD에 넣기 위해 다양한 단계가 실행될 수 있다. 본 개시의 목적을 위해, 그리고 본 개시의 다양한 몇몇 실시 예들을 설명하는 것을 용이하게 하기 위해, 동일한 크기의 4KB 세그먼트로 분할된 16TB SSD가 실시 예를 설명하기 위한 예시적인 메모리 장치로서 사용될 수 있다. 따라서, 16TB SSD는 약 40억 개의 세그먼트로 나뉘며 각 세그먼트에는 관련 지시자(Indicator)(예를 들어, 주소 또는 위치)가 있을 수 있다. 본 개시의 예시적인 몇몇 실시 예들에서, 각각의 세그먼트는 그 세그먼트에 대응하는 메타데이터를 포함하고, 이는 예를 들어 세그먼트가 데이터를 포함하는지 또는 세그먼트가 비어 있는 지를 나타낼 수 있다. 메타데이터의 예는 도 4에 도시되어 있다. 본 개시의 예시적인 몇몇 실시 예들에서 메모리 장치의 하나의 세그먼트는 세그먼트 벡터로 예약될 수 있고, 세그먼트 벡터 내에는 메타데이터를 저장하는 데 사용될 수 있는 메타 벡터가 있을 수 있다. 메타 벡터는 각 세그먼트에 저장되는 메타데이터와 유사하지만, 개별 세그먼트의 메타데이터 정보를 읽을 필요 없이 메타데이터 정보를 빠르게 제공하기 위한 것일 수 있다.
본 개시의 예시적인 실시 예에 따르면, 오브젝트에 대응하는 키가 숫자 밸류를 생성하기 위해 해싱될 수 있다(202). 다양한 해싱 기술이 당업계에 알려져 있으며, 일부 해싱 기술이 다른 것보다 더 바람직할 수 있다. 본 개시의 예시적인 실시 예는 보안 해싱 알고리즘 256(Secure Hashing Algorithm 256)(SHA-256)을 사용할 수 있다. 그러나, 통상의 기술자는 SHA-256 대신에 다른 적합한 해싱 기술들이 사용될 수 있음을 알 수 있다. 본 개시의 예시적인 몇몇 실시 예들에서 통상의 기술자에게 공지된 다른 기술이 해시된 키로부터 인덱스를 생성하는 데 사용될 수 있다. 여기서 SHA-256 해시는 실제 해시 밸류인 인덱스(예를 들어, 제1 인덱스)를 생성하는 데 사용되는 256 비트 숫자를 생성할 수 있다. 본 개시의 예시적인 몇몇 실시 예들에서, 해시에 기초하여 생성된 인덱스는 SSD에 대응하는 지시자(예를 들어, 주소)를 갖는 세그먼트를 식별하는 데 사용되며, 오브젝트는 해당 세그먼트에 저장될 수 있다. 그러나, 경우에 따라 해싱 함수에 의해 생성된 인덱스가 세그먼트에 해당하지 않을 수 있다. 예를 들어 세그먼트보다 잠재적인 인덱스 밸류가 더 많을 수 있기 때문이다. 따라서, 일부 인덱스는 SSD에서 사용 가능한 세그먼트 범위를 벗어날 수 있다. 생성할 수 있는 인덱스의 수는 사용하는 해싱 기법의 종류에 따라 다를 수 있다. 설명을 위해 인덱스는 해싱 기술에 의해 생성된 256 비트 숫자일 수 있는 반면 세그먼트는 32 비트 지시자를 가질 수 있다. 따라서, 세그먼트 지시자 밸류는 0 내지 232-1의 범위일 수 있고, 해시 밸류로부터 생성된 제1 인덱스는 0 내지 2256-1일 수 있다. 다른 경우에 인덱스는 사용할 수 없는 세그먼트에 해당할 수 있다. 예를 들어 해당 세그먼트가 다른 키를 기반으로 다른 오브젝트에 의해 이미 점유되어 있을 수 있기 때문이다. 따라서, 본 개시의 예시적인 실시 예들에서는 오브젝트를 저장할 수 있는 해당 세그먼트를 보다 효율적으로 찾을 수 있는 기술을 제공할 수 있다.
따라서, 제1 키가 해시된 후, 제1 키의 해시를 기반으로 256 비트 인덱스(예를 들어, 제1 인덱스)가 생성되고(202), 제1 인덱스가 대응하는 세그먼트 지시자 범위(예를 들어, [0…232-1]) 내에 있는지 여부를 결정할 수 있다(204). 제1 인덱스가 해당 세그먼트 지시자들의 범위 내에 있지 않으면 제1 키의 동일한 해시 밸류를 기반으로 다른 인덱스(예를 들어, 제2 인덱스)를 생성하여 제2 인덱스가 세그먼트 지시자들의 범위에 속하는지 여부를 결정할 수 있다. 위에서 언급한 바와 같이 제1 인덱스는 해싱 함수에 의해 생성된 실제 해싱된 밸류이고, 제2 인덱스는 해싱된 밸류를 기반으로 생성된 새로운 밸류일 수 있다. 따라서, 본 개시의 예시적인 실시 예에 따르면, 제2 인덱스는 256 비트 해시의 각 바이트로부터 제1 비트를 추출하여 새로운 인덱스(예를 들어, 제2 인덱스)를 생성할 수 있다. 즉, 256 비트 해시는 32 바이트이며, 각각의 32 바이트 중 제1 비트를 추출 및 결합하여 새로운 32 비트 인덱스(예를 들어, 제2 인덱스)를 생성할 수 있다(214). 제2 인덱스가 세그먼트 지시자의 범위 내에 있으면, 제2 인덱스에 해당하는 세그먼트의 메타 벡터가 조회 또는 판독될 수 있고(206), 해당 세그먼트가 비어있는지 또는 다른 오브젝트가 점유하는지 결정할 수 있다(208). 세그먼트가 비어 있으면 해당 세그먼트를 오브젝트에 쓸 수 있다. 반면에 세그먼트가 다른 오브젝트에 의해 점유되고 있는 경우 이는 충돌의 표시이며, 각각 다른 키에 해당하는 여러 오브젝트가 공통 인덱스를 가질 수 있다. 이러한 경우, 충돌에 관한 정보는 충돌 분류를 용이하게 하기 위해 메타데이터에 저장될 수 있다.
본 개시의 예시적인 실시 예에 따르면, 제1 오브젝트가 저장된 세그먼트의 메타데이터는 제1 오브젝트와 충돌한 제2 오브젝트와 관련된 정보(예를 들어, 제1 및 제2 오브젝트에 대해 생성된 세그먼트에 대응하는 공통 인덱스)를 포함할 수 있는 충돌 테이블을 포함할 수 있다. 예를 들어, 충돌 테이블(또는 다른 데이터 구조들)은 세그먼트에서 제1 오브젝트와 충돌한 제2 오브젝트의 오프셋(Offset)(예를 들어, 세그먼트로부터 제 오브젝트와 관련된 정보를 저장하는 다른 세그먼트의 거리를 나타낼 수 있다) 및 그 제2 오브젝트에 대응하는 키의 해시를 포함할 수 있는 정보의 어레이(Array)일 수 있다. 따라서, 충돌이 발생하지 않는 경우 충돌 테이블은 비어 있을 수 있지만, 충돌이 발생할 때마다 충돌 테이블은 해당 세그먼트의 제1 오브젝트와 출동한 제2 오브젝트와 관련된 정보의 어레이를 포함하도록 업데이트될 수 있다. 예를 들어, 제1 키에 대응하는 제1 오브젝트는 세그먼트에 저장될 수 있다. 이 시점에서 세그먼트가 사용 가능하고 충돌이 존재하지 않기 때문에 충돌 테이블은 여전히 비어 있을 수 있다. 그 후, 제2 오브젝트에 대한 제2 키에 해당하는 인덱스는 제1 오브젝트가 저장된 동일한 세그먼트를 가리킬 수 있다. 세그먼트가 이미 제1 오브젝트에 의해 점유되어 있기 때문에 충돌이 발생할 수 있다. 이 경우, 제2 오브젝트는 다른 세그먼트에 저장되고, 충돌 테이블은 제2 오브젝트의 실제 위치에 대한 정보로 업데이트 될 수 있다. 따라서, 나중에 제2 오브젝트를 검색하고 제2 키에 대한 제2 인덱스가 제1 오브젝트를 포함하는 세그먼트를 가리킬 때 충돌 테이블은 제2 오브젝트의 실제 위치를 가리킬 수 있다. 오브젝트 검색에 대한 자세한 내용은 나중에 더 자세히 설명한다.
(208) 단계를 다시 참조하면, 선택된 세그먼트가 이미 오브젝트를 포함한 것으로 결정되면 충돌이 존재할 수 있다. 이 경우, 충돌이 처음 발생한 경우 충돌 테이블이 아직 존재하지 않으므로, 충돌 테이블이 비어 있을 수 있다. 이것이 첫 번째 충돌이 아닌 경우(예를 들어, 충돌이 이전에 이미 발생한 경우) 충돌 테이블이 이미 존재할 가능성이 높을 수 있다. 충돌 테이블이 이미 존재하는 경우, 충돌 테이블이 판독되었는지 여부가 결정될 수 있다(210). 충돌 테이블이 아직 읽히지 않았거나 충돌 테이블이 여전히 비어 있으면, 메타데이터를 더 읽어 세그먼트에 저장된 오브젝트와 연결된 키를 결정하고, 이것이 충돌 테이블에 없는 경우, 충돌 테이블은 이 정보로 업데이트될 수 있다(226). 다음으로, 메타데이터 또는 충돌 테이블(충돌 테이블이 이미 있는 경우)에서 읽은 해시를 현재 키의 해시와 비교하고, 일치하면 덮어쓰기 조건이다(232). 덮어쓰기 조건에 대한 과정은 후술한다.
(226) 및 (232) 단계가 수행되는 것과 동시에, (204) 단계에서 결정된 인덱스(예를 들어, 제1 인덱스)가 세그먼트 지시자들의 범위 내에 있는지 여부가 결정될 수 있다(212). 범위 내에 있으면, 256 비트 해시의 각 바이트 중 제1 비트가 추출되어 새 인덱스(예를 들어, 제2 인덱스)가 생성될 수 있다(214). 범위 내에 있지 않은 경우, 제2 인덱스는 이미 (214) 단계에서 생성되었으므로, 다른 인덱스를 생성하기 위해 256 비트 해시의 각 바이트의 제2 비트를 추출하여(즉, 해시된 밸류에 기초하여) 제3 인덱스가 생성될 수 있다(216).
본 개시의 예시적인 몇몇 실시 예들에서, 각 바이트로부터 비트를 추출하는 인덱스 생성이 8회 반복 실행되었다면, 256 비트 해시의 각 바이트의 8 비트 모두가 소진되고, 새로운 인덱스를 생성하는 데 더 이상 비트가 이용 가능하지 않을 수 있다. 따라서, 모든 비트가 소진되면(218), 메모리 장치의 세그먼트는 한 번에 한 세그먼트씩 프로빙(Probing)될 수 있다(220, 222). 보다 구체적으로, 프로빙 프로세스는 시작점을 설정하기 위한 제1 인덱스를 생성하기 위해 모든 바이트에서 제1 비트를 다시 추출함으로써 수행될 수 있다(이는 (202) 단계에서 생성된 것과 동일한 제1 인덱스일 수 있다). 그런 다음, 각 세그먼트의 메타 벡터는 여유 세그먼트가 발견될 때까지 프로빙될 수 있다(222). 여유 세그먼트가 발견되면(204), 여유 세그먼트에 해당하는 메타데이터가 판독되고(226), 프로빙을 통해 발견된 세그먼트의 인덱스를 메타데이터 또는 충돌 테이블과 비교함으로써 전술한 바와 같이 세그먼트를 덮어써야 하는지 여부를 결정할 수 있다(232, 234). 일치하면 덮어쓰기 조건이지만, 일치하지 않으면 덮어쓰기 조건이 아닐 수 있다. 덮어쓰기 조건이 아니고 빈 슬롯을 사용할 수 없는 경우(프로빙이 소진되었기 때문), 공간이 없기 때문에 쓰기는 실패할 수 있다(228). 한편, 덮어쓰기 조건이면 세그먼트가 그 세그먼트에 오브젝트를 기록할 만큼 충분히 큰지 여부를 판단할 수 있다(250). 세그먼트가 충분히 크지 않으면 세그먼트에 공간이 부족하고 쓰기는 실패할 수 있다(228). 세그먼트가 충분히 크면 오브젝트가 해당 세그먼트에 들어갈 수 있고, 트랜잭션(Transaction)이 처리되고 메타데이터 및 오브젝트가 세그먼트에 기록될 수 있기 때문에 덮어쓰기가 발생할 수 있다(246).
(216) 단계로 돌아가서, 일단 각 바이트로부터 제2 비트를 추출함으로써 새로운 인덱스가 생성되면, 해당 세그먼트의 메타 벡터가 판독되어(206) 해당 세그먼트가 비어 있는지 또는 점유되어 있는지 결정할 수 있다(208). 본 개시의 예시적인 몇몇 실시 예들에서, 이 프로세스는 빈 세그먼트가 발견될 때까지 반복될 수 있다.
본 개시의 예시적인 몇몇 실시 예들에서, 이용 가능한 세그먼트가 식별되면, 오브젝트의 크기에 기초하여 오브젝트를 저장하는 데 필요한 세그먼트의 총 수가 결정될 수 있다(230). 예를 들어, 오브젝트 크기가 8KB이고 각 세그먼트가 4KB인 경우, 오브젝트를 저장하는 데 두 개의 세그먼트가 필요할 수 있다. 본 개시의 예시적인 몇몇 실시 예들에서, 어느 세그먼트 및 세그먼트에 대응하는 여유 슬롯이 어디에 위치하는지를 결정하기 위해 여유 목록(Free list)이 참조될 수 있다. 예를 들어, 8KB 오브젝트를 쓰기 위해 두 개의 세그먼트가 필요하고 두 개의 세그먼트가 인접하면 전체 오브젝트가 한 디스크 쓰기로 기록될 수 있다.
본 개시의 예시적인 몇몇 실시 예들에서, 여유 목록은 메모리 장치의 일부에서 이용 가능할 수 있다. 여유 목록은 세그먼트 오프셋의 위치와 여유 세그먼트의 수를 보여주는 목록일 수 있으며, 여유 목록은 사용 가능한 세그먼트의 상태로 지속적으로 업데이트될 수 있다. 따라서, 필요한 여유 세그먼트의 총 수가 (230) 단계에서 계산되면, 기록될 오브젝트의 크기에 따라 정확히 일치하는 세그먼트(예를 들어, 4KB 오브젝트의 경우 4KB 세그먼트 또는 8KB 오브젝트의 경우 2개의 4KB 세그먼트)(236) 및 수정된 세그먼트의 수가 최대 임계값 디스크 쓰기 내에 있도록 이러한 여유 세그먼트들을 얻기 위한 최상의 솔루션(Solution)(예를 들어, 하나의 디스크 크기 제한)(238)을 결정하기 위해 여유 목록은 참조될 수 있다. 즉, 여유 목록은 여러 세그먼트가 순차적인 최상의 솔루션을 결정하여 더 적은 수의 디스크 쓰기(예를 들어, 하나의 디스크 쓰기)에서 사용 가능한 세그먼트를 사용하는 가장 좋은 방법을 최적화할 수 있다. 다음으로, 필요한 여유 세그먼트가 발견되었는지 여부에 대한 결정이 이루어질 수 있다(240). 세그먼트가 발견되면 충돌 또는 수정된 세그먼트가 최대 하나의 디스크 쓰기 제한 내에 있지 않은지에 대한 결정이 내려질 수 있다(242). 즉, 여러 세그먼트가 순차적이거나 하나의 디스크 쓰기 단위(Granularity) 범위 내에 있으면 데이터 쓰기가 한 번의 쓰기로 실행될 수 있으며, 트랜잭션이 필요하지 않지만, 여러 세그먼트가 순차적이지 않거나 또는 하나의 디스크 쓰기 단위 내에 있지 않는 경우 여러 세그먼트들에 쓰기 위해(즉, 하나 이상의 디스크 쓰기) 트랜잭션이 필요하므로 최대 하나의 디스크 쓰기 제한 내에 있지 않을 수 있다. 충돌 또는 수정된 세그먼트가 세그먼트 크기 내에 있지 않으면 메타데이터에 대한 트랜잭션이 필요할 수 있다(248). 충돌 또는 수정된 세그먼트가 세그먼트 크기 내에 있으면 트랜잭션이 필요하지 않을 수 있다(244).
세그먼트가 발견되지 않은 것으로 결정되면 (240) 단계로 돌아가서, 이것이 덮어쓰기인지 여부가 결정될 수 있다(234). 만약 덮어쓰기가 아니라면, 쓰기 프로세스는 실패한 것일 수 있다(228). 만약 덮어쓰기라면 오브젝트의 크기에 기초하여 세그먼트가 충분히 큰 지 판단할 수 있다(250). 세그먼트가 충분히 크지 않으면 세그먼트가 실패한 것일 수 있다(228). 세그먼트가 충분히 크면 사용 가능한 여유 세그먼트가 없기 때문에, 트랜잭션이 처리되고 메타데이터 및 오브젝트가 세그먼트에 기록될 수 있다(246). 따라서, 도 2의 흐름도는 트랜잭션이 메타데이터 쓰기에 필요한 지(248), 트랜잭션이 메타데이터 및 오브젝트 쓰기 모두에 필요한지(246), 또는 트랜잭션이 필요하지 않은지(244)를 결정하는 데 사용될 수 있다.
도 3은 이용 가능한 슬롯이 식별되면 메모리 장치의 하나 이상의 슬롯에 오브젝트를 두기 위한 방법의 흐름도를 도시한다. 본 개시의 예시적인 실시 예에 따르면, 트랜잭션이 필요한지 여부에 따라 도 2로부터의 결과에 기초하여 2 개의 경로 중 하나가 선택될 수 있다(302). 예를 들어, 트랜잭션이 필요하지 않다고 결정되면, 예를 들어 도 2의 (238) 단계에서 발견된 여유 슬롯이 순차적인지에 기초하여(304) 메타데이터와 오브젝트가 여러 순차적인 세그먼트들에 기록될 수 있는지 여부가 결정될 수 있다. 만약 순차적인 세그먼트들에 기록할 수 있는 경우, 메타데이터와 오브젝트가 모두 동시에 기록될 수 있고(312), 세그먼트 벡터가 업데이트되고(310), 쓰기 프로세스가 완료될 수 있다(314). 본 개시의 예시적인 실시 예들에 따라, 세그먼트 벡터는 예를 들어 SSD의 시작 부분에서 메모리 장치 상의 일부분일 수 있고, 각 세그먼트의 상태의 지시자에 기초하여 비트를 포함할 수 있다. 예를 들어, 지시자는 각 세그먼트의 상태를 사용 가능한 것으로 나타내는 2 비트 지시자, 메타데이터, 데이터 청크(Chunk)(또는 오브젝트), 또는 충돌 엔트리(Collision entry)일 수 있다. 따라서, 메타 벡터는 메모리 장치 상의 임의의 세그먼트의 상태를 신속하게 결정하기 위해 참조될 수 있다. 각 세그먼트가 2 비트로 표현되기 때문에 40억 개의 세그먼트가 있는 16TB SSD의 예는 약 950MB의 메모리 공간을 소비할 수 있다. 본 개시의 예시적인 실시 예에 따라, 여유 목록 또한 참조되고, 그에 따라 업데이트 될 수 있다.
(304) 단계로 돌아가서, 메타데이터 및 오브젝트가 다수의 순차적인 세그먼트들에 기록될 수 없다고 결정되면, 오브젝트는 기록되고(306), 메타데이터는 별도의 쓰기로 기록될 수 있다(308). 본 개시의 예시적인 실시 예들에 따라, 오브젝트가 다중 순차적인 세그먼트들에 기록될 수 없는 경우, 오브젝트는 여러 쓰기로 기록될 수 있다. 예를 들어, 오브젝트의 전반부가 작성된 다음 오브젝트의 후반부가 기록될 수 있으며, 이어서 메타데이터가 기록될 수 있다. 다음으로, 세그먼트 벡터가 업데이트되고(310), 쓰기 프로세스가 종료될 수 있다(314).
(302) 단계로 돌아가서, 트랜잭션이 필요하다고 결정되면, 도 2의 (248) 단계에서 결정된 바와 같이 메타데이터 쓰기만을 위한 트랜잭션이 필요한지 또는 도 2의 (246) 단계에서 결정된 바와 같이 메타데이터 및 오브젝트를 위한 트랜잭션이 필요한지 여부가 결정될 수 있다(316). 오브젝트 부분이 필요하지 않다고 결정되면(즉, 메타데이터 쓰기만 필요한 경우), 메타데이터 및 오브젝트가 순차적인 세그먼트들에 기록될 수 있는지 여부가 결정될 수 있다(318). 메타데이터 및 오브젝트가 순차적인 세그먼트들에 기록될 수 없다고 결정되면, 오브젝트가 기록되고(320), 메타데이터가 기록될 수 있다(322). 메타데이터와 오브젝트가 순차적인 세그먼트들에 기록될 수 있다고 판단되면, 메타데이터와 오브젝트가 동시에 기록될 수 있다(324). 다음으로, 충돌이 있었는지 여부에 기초하여, 예를 들어 세그먼트가 비어 있지 않은지 여부가 결정될 때, 도 2의 (208) 단계에서 결정된 바와 같이 2개의 경로 중 하나가 취해질 수 있다(326). 충돌이 있었다면, 첫 번째 충돌 엔트리로부터의 오래된 메타데이터(예를 들어, 도 2의 (208)단계에서 충돌이 결정될 때 세그먼트에 이미 저장된 오브젝트에 대응하는 메타데이터)가 메타 트랜잭션 오브젝트에 추가될 수 있고(328), 수정이 일어날 오래된 세그먼트 벡터 영역이 메타 트랜잭션 오브젝트에 추가될 수 있다(330). 한편, 충돌이 없으면 (328) 단계를 건너 뛰고 수정이 일어날 오래된 세그먼트 벡터 영역을 메타 오브젝트(330)에 추가할 수 있다. 다음으로 메타 트랜잭션 오브젝트는 메모리 장치의 미리 정의된 영역에 기록될 수 있다(330). 다음으로, 메타 트랜잭션 오브젝트는 메모리 장치의 미리 정의된 영역에 기록될 수 있다(332). 다음으로, 충돌이 있었는지 여부에 기초하여, 예를 들어 세그먼트가 비어 있지 않은지 여부가 결정된 도 2의 (208) 단계에서 결정된 바와 같이 2개의 경로 중 하나가 취해질 수 있다(334). 충돌이 없으면(334), 세그먼트 벡터가 업데이트 되고(338), 메타 트랜잭션 오브젝트가 삭제될 수 있다(340). 반면에 충돌이 있는 경우, 충돌 테이블은 오프셋 또는 방금 쓰여진 오브젝트에 대한 메타데이터가 저장된 세그먼트의 다른 위치 지시자로 업데이트될 수 있고(336), 세그먼트 벡터 엔트리는 방금 수정된 세그먼트에 해당하는 항목으로 업데이트하여 기록되고(338), 쓰기가 성공하면 메타 트랜잭션 오브젝트가 삭제될 수 있다(340). 이에 따라, 쓰기 동작이 완료될 수 있다(314).
(316) 단계로 돌아가서, 트랜잭션의 일부를 기록하는 오브젝트가 필요하다고 결정되면, 키에 대응하는 오래된 오브젝트가 판독될 수 있다(342). 그런 다음 오래된 오브젝트는 오래된 온디스크 메타 정보와 함께 데이터 트랜잭션 오브젝트의 일부로 추가될 수 있다(344). 그 후, 데이터 트랜잭션 오브젝트는 메모리 장치의 미리 정의된 영역에 기록될 수 있다(346). 다음으로, 키에 대한 메타데이터 및 오브젝트가 업데이트되고(348), 데이터 트랜잭션 오브젝트가 삭제될 수 있다(350). 이에 따라, 쓰기 동작이 완료될 수 있다(314).
도 4는 메모리 장치로부터 오브젝트를 얻기 위한 흐름도를 도시한다. 본 개시의 예시적인 실시 예에 따르면, 응용 프로그램이 메모리 장치로부터 오브젝트를 검색하고자 하는 경우, 응용 프로그램은 그 오브젝트에 대응하는 키를 제공할 수 있고, 오브젝트는 메모리 장치로부터 검색될 수 있다. 넣기 동작과 유사하게, 가져오기 동작에서, 오브젝트 저장 변환에 대한 키 밸류는 오브젝트 검색을 요청하는 응용 프로그램과 오브젝트가 저장된 메모리 장치 사이에서 수행될 수 있다. 본 개시의 예시적인 실시 예들에서, 오브젝트에 대응하는 키는 키의 해시에 기초하여 제1 인덱스를 생성하기 위해 해시될 수 있다(402). 본 개시의 예시적인 실시 예들에서, 오브젝트를 기록할 때 사용된 동일한 해싱 기술이 가져오기 동작 동안 사용될 수 있다. 따라서, SHA-256 해싱 기법을 사용할 수 있다. 그러나 동일한 해싱 기술을 사용하여 오브젝트를 작성하는 한 다른 해싱 기술도 적합할 수 있다. 본 개시의 예시적인 실시 예들에서, 통상의 기술자에게 알려진 다른 기술이 해시된 키로부터 인덱스를 생성하는 데 사용될 수 있다. 일단 제1 인덱스가 생성되면, 제1 인덱스가 메모리 장치의 대응하는 세그먼트 지시자의 범위 내에 있는지 여부에 대한 결정이 이루어질 수 있다(404). 제1 인덱스가 해당 세그먼트 지시자의 범위 내에 있지 않으면 해시의 32 바이트 각각의 제1 비트가 추출된 다음 결합되어 새로운 32비트 인덱스(예를 들어, 제2 인덱스)를 생성할 수 있다(412). 본 개시의 예시적인 실시 예에서, 생성된 제1 인덱스가 대응하는 세그먼트 지시자의 범위 내에 있을 경우, 응용 프로그램은 제1 인덱스에 대응하는 세그먼트에 대한 메타 벡터의 존재를 확인할 수 있다(406). 본 개시의 예시적인 실시 예에서, 이 결정은 메타데이터의 존재를 나타내는 비트 기반 상태 지시자를 검사함으로써 이루어질 수 있다(408). 메타데이터가 없으면 해시된 키에 해당하는 오브젝트를 찾을 수 없기 때문에, 가져오기 동작이 실패한 것일 수 있다(414). 메타데이터가 존재하는 경우, 메타데이터가 판독되고(410), 제1 키의 해시가 메타데이터에 저장되어 있는 저장된 해시와 일치하거나 일치하지 않는지 여부가 결정될 수 있다(416). 해시가 일치하고 오브젝트가 메타데이터와 동일한 세그먼트에 있으면(420), 오브젝트가 검색되고 가져오기가 성공할 수 있다(424). 오브젝트가 메타데이터와 동일한 세그먼트에 있지 않다면, 오브젝트의 데이터 청크가 순차적으로 저장되는지 여부에 대한 결정이 이루어질 수 있다(426). 오브젝트가 순차적으로 저장되면 전체 오브젝트가 판독되고 한 번의 판독으로 검색될 수 있다(428). 오브젝트가 순차적으로 저장되지 않으면 오브젝트가 다중 오프셋(예를 들어, 비연속 세그먼트)에 걸쳐 흩어져 있기 때문에 오브젝트가 다중 판독으로 읽힐 수 있다(430).
(416) 단계로 돌아가서, 제1 키의 해시가 메타데이터에 저장되어 있는 저장된 해시와 일치하지 않으면, 해시 키 중 어느 것이 거기에 일치하는지 확인하기 위해 충돌 테이블 엔트리들이 참조될 수 있다(418). 충돌 테이블이 세그먼트를 제공하지 않으면 오브젝트를 찾을 수 없기 때문에 가져오기 프로세스가 실패한 것일 수 있다(414). 충돌 테이블에 오브젝트가 위치한 세그먼트를 나타내는 지시자가 포함되어 있으면 해당 세그먼트의 메타데이터가 판독되고(422), 오브젝트가 이전에 설명된 메타데이터와 동일한 세그먼트에 있는지 여부가 결정될 수 있다(420). 따라서, 메타데이터의 충돌 테이블이 넣기 동작 중에 업데이트되기 때문에 충돌이 있는 경우에도 가져오기 동작을 효율적으로 수행할 수 있다. 따라서, 가져오기 중 충돌이 발생하면 충돌 테이블을 사용하여 오브젝트가 실제로 위치한 세그먼트를 결정할 수 있다.
도 5는 메모리 장치에서 오브젝트를 삭제하기 위한 방법의 흐름도이다. 본 개시의 예시적인 실시 예에 따라, 오브젝트를 삭제 동작은 가져오기 동작과 유사할 수 있다. 따라서, 삭제될 오브젝트에 대응하는 키는 해싱되어 키의 해시에 기초하여 제1 인덱스를 생성할 수 있다(502). 본 개시의 예시적인 실시 예에서, 오브젝트를 기록할 때 사용되었던 동일한 해싱 기술이 삭제 프로세스 동안 사용될 수 있다. 따라서 SHA-256 해싱 기법을 사용할 수 있다. 그러나 동일한 해싱 기술을 사용하여 오브젝트를 작성하는 한 다른 해싱 기술도 적합할 수 있다. 일단 제1 인덱스가 생성되면, 제1 인덱스가 메모리 장치의 대응하는 세그먼트 지시자들의 범위 내에 있는지 여부에 대한 결정이 이루어질 수 있다(504). 제1 인덱스가 해당 세그먼트 지시자들의 범위 내에 있지 않으면 인덱스의 32 바이트 각각에서 제1 비트가 추출된 다음 결합되어 새로운 32비트 인덱스(예를 들어, 제2 인덱스)를 생성할 수 있다(512). 본 개시의 예시적인 실시 예에서, 생성된 제1 인덱스가 대응하는 세그먼트 지시자들의 범위 내에 있으면, 시스템은 인덱스에 대응하는 세그먼트에 대한 메타 벡터의 존재를 검색할 수 있다(506). 본 개시의 예시적인 실시 예에서, 이 결정은 메타데이터의 존재를 나타내는 비트 상태 지시자를 검사함으로써 이루어질 수 있(508). 메타데이터가 없으면 해시된 키에 해당하는 오브젝트를 찾을 수 없기 때문에 삭제 프로세스가 실패한 것일 수 있다(514). 메타데이터가 존재하는 경우, 메타데이터가 판독되고(510), 제1 키의 해시가 메타데이터에 저장되어 있는 저장된 해시와 일치하거나 일치하지 않는지 여부가 결정될 수 있다(516). 해시가 일치하고 충돌 테이블이 비어 있으면 충돌이 없고 해당 세그먼트의 오브젝트는 오브젝트 삭제를 진행할 수 있다(520). 다음으로, 세그먼트 벡터가 1회 기록으로 기록될 수 있는 지 여부가 결정된다(528). 한 번의 쓰기로 쓸 수 없으면 트랜잭션이 시작될 수 있다(530). 한 번의 쓰기로 작성할 수 없는 경우, 트랜잭션 시작을 건너뛰고 필요에 따라 온디스크 메타 밸류 크기 또는 충돌 테이블을 업데이트할 수 있다(532). 다음으로, 세그먼트 벡터의 메타데이터 및 오브젝트 세그먼트가 업데이트되어 현재 사용 가능함을 표시할 수 있다(534). 다음으로 쓰기가 트랜잭션의 일부인지 여부가 결정될 수 있다(536). 트랜잭션의 일부가 아니면 삭제 프로세스가 종료될 수 있다(540). 트랜잭션의 일부인 경우 트랜잭션이 먼저 종료되고(538), 삭제 프로세스가 종료될 수 있다(540).
(524) 단계로 돌아가서, 충돌 테이블이 비어 있지 않다면, 메타데이터의 밸류 크기 지시자는 0으로 설정될 수 있다(524). 여기서 밸류 크기가 0이면 세그먼트에 저장된 오브젝트가 이미 삭제되었으므로, 향후 삭제 또는 가져오기 동작 중에 읽지 않아야 할 수 있다. 밸류 크기가 0으로 설정되면 해당 세그먼트의 오브젝트(메타데이터로 표시됨)가 삭제될 수 있다.
본 개시의 예시적인 실시 예들에서, 메타데이터가 (510)단계에서 판독되고, 제1 키의 해시가 일치하지 않아 메타데이터(516)에 저장되어 있는 저장된 해시와 일치하지 않는 경우, 충돌 테이블은 어떤 세그먼트가 오브젝트에 대응하는 실제 메타데이터를 포함하는지 결정하고(518), 이 메타데이터가 판독될 수 있다(522). 메타데이터에 저장된 해시가 키의 해시와 일치하면 충돌 테이블 엔트리의 수가 1개 감소하고(526), 그 오브젝트가 삭제될 수 있다. 메타데이터에 저장된 해시가 키의 해시와 일치하지 않으면 삭제 프로세스가 실패한 것일 수 있다(514).
도 6은 시스템 충돌 또는 재시작으로부터 복구하기 위한 방법의 흐름도를 도시한다. 쓰기 동작과 같은 디스크 작업 중에 시스템이나 응용 프로그램이 충돌하면 데이터가 손상될 가능성이 있을 수 있다. 따라서, 본 개시의 예시적인 실시 예에 따르면, 데이터를 복구하는 방법이 설명된다. 본 개시의 예시적인 실시 예들에서, 시스템이 충돌 후 재시작될 때, 트랜잭션 오브젝트에 사용되는 미리 정의된 디스크 공간이 판독되어(602), 보류 중이거나 완료되지 않은 트랜잭션이 있었는지 여부를 결정할 수 있다(604). 보류 중인 트랜잭션이 있는 경우 트랜잭션이 실행되고 메타데이터 및 오브젝트가 되돌려질 수 있다(620). 그것이 완료되면, 트랜잭션 오브젝트가 삭제될 수 있다(622). 보류 중인 트랜잭션이 없으면 (602) 단계 및 (622) 단계를 건너뛰고, 세그먼트 벡터를 읽고(606), 메모리에 여유 목록(608) 및 메타 벡터(610)를 형성할 수 있다. 캐싱이 충돌 테이블을 저장하기 위해 활성화 된 경우(612), 해당 메타데이터는 캐시로부터 읽히고(614), 해당 메타데이터에 해당하는 충돌 테이블 또한 캐시로부터 읽히고(616), 이 정보는 캐시와 메타데이터에 저장된 충돌 테이블에 추가될 수 있다(618). 따라서 시스템이나 응용 프로그램이 충돌하는 경우에도 다시 시작하면 보류 중인 트랜잭션이 복구될 수 있다. 따라서, 본 개시의 다양한 실시 예에 따른 해시 기반 키 밸류 변환 기술은 크기가 축소될 때 리소스 소비를 줄이고 성능을 더욱 향상시키는 방법을 제공할 수 있다.
“제1”, “제2”, ”제3” 등의 용어가 다양한 요소들, 구성요소들, 영역들, 레이어들(Layers) 및/또는 섹션들(Sections)을 설명하기 위해 본 명세서에서 사용될 수 있지만, 이러한 요소들, 구성요소들, 영역들, 레이어들 및/또는 섹션들은 이러한 용어로 제한되어서는 안될 것이다. 이러한 용어는 하나의 요소, 구성요소, 레이어 또는 섹션을 다른 요소, 구성요소, 영역, 레이어 또는 섹션과 구별하는 데 사용될 수 있다. 따라서, 이하에서 설명하는 제1 요소, 구성요소, 영역, 레이어 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않으면서 제2 요소, 구성요소, 영역, 레이어 또는 섹션으로 명명될 수 있다.
요소 또는 레이어가 다른 요소 또는 레이어에 “있는” 또는 “연결된” 것으로 언급될 때, 다른 요소 또는 레이어에 직접 연결되거나, 다른 요소에 연결되거나 결합될 수 있으며, 하나 이상의 중간 요소 또는 레이어가 존재할 수 있다. 또한, 요소 또는 레이어가 2개의 요소 또는 레이어 “사이에” 있는 것으로 언급되는 경우, 이는 2개의 요소 또는 레이어 사이의 유일한 요소 또는 레이어일 수 있으며, 하나 이상의 중간 요소 또는 레이어도 존재할 수 있다.
본 명세서에서 사용한 용어는 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아닐 수 있다. 본 명세서에 사용된 바와 같이, 단수 형태는 문맥이 명백하게 달리 나타내지 않는 한 복수 형태도 포함하는 것으로 의도된다. 본 명세서에서 사용될 때 “포함한다”, “포함하는”, “포함하고 있는”이라는 용어는 명시된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 구성요소들을 포함하지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 구성요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하는 것은 아니다. 본 명세서에 사용된 바와 같이, “및/또는”이라는 용어는 관련되어 있는 나열된 항목들 중 하나 이상의 모든 조합을 의미할 수 있다. “적어도 하나”와 같은 표현은 요소들의 목록 앞에 올 때, 요소들의 전체 목록을 수정하고 목록의 개별 요소를 수정하지 않을 수 있다.
본 명세서에 사용된 용어인 “실질적으로”, “약” 및 유사한 용어들은 정도의 용어가 아니라 근사치의 용어로 사용되며, 통상의 기술자가 인식할 수 있는 측정 또는 계산된 밸류의 고유한 편차를 설명하기 위한 것일 수 있다. 또한, 본 발명의 예시적인 실시 예를 설명할 때 “~할 수 있다”의 사용은 “본 발명의 하나 이상의 실시 예”르 의미할 수 있다. 본 명세서에 사용된 바와 같이, “사용하다”, “사용하는” 및 “사용된”같은 용어는 각각 “활용하다”, “활용하는” 및 “활용된”같은 용어와 동의어로 간주될 수 있다.
본 명세서에 기재된 본 발명의 실시 예에 따른 전자 또는 전기 장치들 및/또는 임의의 다른 관련 장치들 또는 구성요소들은 임의의 적절한 하드웨어, 펌웨어(예를 들어, 특정 응용 프로그램 집적 회로), 소프트웨어, 또는 소프트웨어, 펌웨어 및/또는 하드웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이러한 장치들의 다양한 구성요소들은 하나의 집적 회로(IC) 칩 또는 별도의 IC 칩들에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성요소들은 연성 인쇄 회로 필름, 테이프 캐리어 패키지(Tape carrier package)(TCP), 인쇄 회로 기판(PCB) 또는 하나의 기판에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성요소들은 하나 이상의 컴퓨팅 장치의 하나 이상의 프로세서에서 실행될 수 있고, 컴퓨터 프로그램 명령을 실행하고 여기에 설명된 다양한 기능을 수행하기 위해 다른 시스템 구성요소들과 상호작용하는 프로세스 또는 쓰레드일 수 있다. 컴퓨터 프로그램 명령은 예를 들어 랜덤 액세스 메모리(RAM)와 같은 표준 메모리 장치를 사용하여 컴퓨팅 장치에서 구현될 수 있는 메모리에 저장될 수 있다. 컴퓨터 프로그램 명령은 또한 예를 들어, CD-ROM, 플래시 드라이브 등의 다른 비일시적 컴퓨터 판독 가능 매체에 저장될 수 있다. 또한, 통상의 기술자는 다양한 컴퓨팅 장치의 기능이 단일 컴퓨팅 장치로 결합 또는 통합될 수 있거나, 또는 특정 컴퓨팅 장치의 기능이 본 발명의 예시적인 실시 예의 범위를 벗어나지 않고 하나 이상의 다른 컴퓨팅 장치에 걸쳐 분산될 수 있다는 것을 인식해야할 것이다.
본 개시 내용 전체에 걸쳐 설명된 임의의 구성요소들 또는 구성요소들의 임의의 조합이 흐름도에 설명된 동작들 중 하나 이상을 수행하는 데 사용될 수 있음을 이해할 것이다. 더욱이, 설명된 동작들은 단지 예시적인 동작들이고, 여기에 명시적으로 설명되지 않은 다양한 추가 단계들을 포함할 수 있다. 또한 동작의 시간 순서는 다를 수 있다.
달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 용어(기술 용어 및 과학 용어를 포함한다)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 일반적으로 이해하는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의된 것과 같은 용어는 관련 기술 및/또는 본 명세서의 맥락에서 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 여기에 명시적으로 정의되지 않는 한 이상화하거나 지나치게 형식적인 의미로 해석되어서는 안될 것이다.
여기에 설명된 실시 예들은 예시일 뿐이다. 통상의 기술자는 구체적으로 개시된 것들로부터 다양한 대안적인 실시 예들을 인식할 수 있다. 이러한 대안적인 실시 예들은 또한 본 개시의 범위 내에 있는 것으로 의도될 수 있다. 따라서, 실시 예들은 다음 청구범위 및 그 균등범위에 의해서만 제한될 것이다.
100: 시스템
102: 응용 프로그램
104: I/O 인터페이스
106: 프로세서
108: I/O
110: 컨트롤러
112: 메모리
114: 메모리 장치

Claims (10)

  1. 방법에 있어서:
    메모리 장치에 저장될 제1 오브젝트(Object)에 대한 제1 키의 해시에 기초하여 제1 인덱스를 계산하는 단계;
    상기 제1 인덱스에 대응하는 상기 메모리 장치 상의 제1 세그먼트의 이용 가능성을 결정하는 단계;
    상기 제1 인덱스에 대응하는 상기 제1 세그먼트가 저장에 이용 불가능하다는 결정에 응답하여, 상기 제1 오브젝트에 대한 상기 제1 키의 상기 해시에 기초하여 제2 인덱스를 계산하는 단계;
    상기 제2 인덱스에 대응하는 상기 메모리 장치 상의 제2 세그먼트의 이용 가능성을 결정하는 단계; 그리고
    상기 제1 세그먼트의 제1 메타데이터의 충돌 테이블에 상기 제2 세그먼트의 위치 지시자를 추가하는 단계를 포함하는 블록 변환 방법.
  2. 제 1 항에 있어서,
    상기 제2 세그먼트가 이용 가능하다는 결정에 응답하여, 상기 제1 오브젝트를 상기 제2 세그먼트에 기록하는 단계를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 제2 인덱스를 계산하는 단계는, 상기 제2 인덱스를 형성하기 위해 상기 해시의 모든 바이트로부터 비트를 추출하는 단계를 더 포함하는 방법.
  4. 제 2 항에 있어서,
    상기 제1 세그먼트의 이용 가능성을 결정하는 단계는 상기 제1 메타데이터로부터 상태 식별자를 판독하는 단계를 포함하고, 상기 상태 식별자는 저장에 사용할 수 없는 상기 제1 세그먼트에 대응하는 상태를 표시하는 방법.
  5. 제 4 항에 있어서,
    상기 충돌 테이블이 비어 있는 것에 응답하여, 상기 제1 키의 상기 해시와 상기 제2 세그먼트의 상기 위치 지시자 사이의 연관을 상기 충돌 테이블에 기록하는 단계를 더 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 제1 인덱스를 계산하는 단계는 SHA-256을 이용하여 계산하는 단계를 포함하는 방법.
  7. 제 4 항에 있어서,
    상기 제1 키를 지시하는 획득 요청을 수신하는 단계;
    상기 제1 키의 상기 해시에 기초하여 상기 제1 인덱스를 계산하는 단계;
    상기 제1 인덱스에 대응하는 상기 제1 세그먼트의 상기 제1 메타데이터를 읽는 단계;
    상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치하지 않는 것으로 결정하는 단계;
    상기 제1 오브젝트가 상기 제2 세그먼트에 저장되어 있다고 결정하기 위해 상기 제1 메타데이터에서 상기 충돌 테이블을 읽는 단계; 그리고
    상기 충돌 테이블을 읽는 것에 응답하여, 상기 제2 세그먼트로부터 상기 제1 오브젝트를 검색하는 단계를 더 포함하는 방법.
  8. 오브젝트(Object)들을 저장하도록 구성된 오브젝트 스토리지 시스템에 있어서,
    세그먼트들로 분할되는 메모리 장치를 포함하고,
    상기 메모리 장치는:
    상기 메모리 장치에 저장될 제1 오브젝트에 대한 제1 키의 해시에 기초하여 제1 인덱스를 계산하고;
    상기 제1 인덱스에 대응하는 상기 메모리 장치 상의 제1 세그먼트의 이용 가능성을 결정하고;
    상기 제1 인덱스에 대응하는 상기 제1 세그먼트가 저장에 이용 불가능하다는 결정에 응답하여, 상기 제1 오브젝트에 대한 상기 제1 키의 상기 해시에 기초하여 제2 인덱스를 계산하고;
    상기 제2 인덱스에 대응하는 상기 메모리 장치 상의 제2 세그먼트의 이용 가능성을 결정하고; 그리고
    상기 제1 세그먼트의 제1 메타데이터의 충돌 테이블에 상기 제2 세그먼트의 위치 지시자를 추가하는 단계를 포함하는 오브젝트 스토리지 시스템.
  9. 제 8 항에 있어서,
    상기 메모리 장치는 상기 제2 세그먼트가 이용 가능하다는 결정에 응답하여 상기 제1 오브젝트를 상기 제2 세그먼트에 기록하도록 더 구성되는 오브젝트 스토리지 시스템.
  10. 방법에 있어서:
    제1 키를 지시하는 획득 요청을 수신하는 단계;
    메모리 장치로부터 검색될 오브젝트에 대한 상기 제1 키의 해시에 기초하여 제1 인덱스를 계산하는 단계;
    상기 제1 인덱스에 대응하는 제1 세그먼트의 제1 메타데이터를 읽는 단계;
    상기 제1 메타데이터를 읽는 것에 응답하여, 상기 제1 키의 상기 해시가 상기 제1 메타데이터에 저장된 해시와 일치하지 않는 것으로 결정하는 단계;
    오브젝트가 제2 세그먼트에 저장되어 있다고 결정하기 위해 상기 제1 메타데이터에서 충돌 테이블을 읽는 단계; 그리고
    상기 충돌 테이블 읽는 것에 응답하여, 상기 제2 세그먼트로부터 상기 오브젝트를 검색하는 단계를 포함하는 방법.
KR1020220008242A 2021-01-20 2022-01-20 해시 기반의 키 밸류에 관한 블록 변환 방법 및 시스템 KR20220105612A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163139655P 2021-01-20 2021-01-20
US63/139,655 2021-01-20
US17/321,326 2021-05-14
US17/321,326 US12010214B2 (en) 2021-05-14 Hash based key value to block translation methods and systems

Publications (1)

Publication Number Publication Date
KR20220105612A true KR20220105612A (ko) 2022-07-27

Family

ID=78414318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220008242A KR20220105612A (ko) 2021-01-20 2022-01-20 해시 기반의 키 밸류에 관한 블록 변환 방법 및 시스템

Country Status (3)

Country Link
EP (1) EP4033371A1 (ko)
KR (1) KR20220105612A (ko)
CN (1) CN114817142A (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397051B2 (en) * 2009-02-23 2013-03-12 Autonomy, Inc. Hybrid hash tables
US9256549B2 (en) * 2014-01-17 2016-02-09 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
US11232075B2 (en) * 2018-10-25 2022-01-25 EMC IP Holding Company LLC Selection of hash key sizes for data deduplication

Also Published As

Publication number Publication date
CN114817142A (zh) 2022-07-29
EP4033371A1 (en) 2022-07-27
US20220231836A1 (en) 2022-07-21

Similar Documents

Publication Publication Date Title
CN108804350B (zh) 一种内存访问方法及计算机系统
US9767140B2 (en) Deduplicating storage with enhanced frequent-block detection
CN105843551B (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
JP6205650B2 (ja) 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置
TWI683217B (zh) 使用去重複dram系統演算法架構的去重複記憶體模組及其方法
JP2017182803A (ja) メモリの重複除去方法及び重複除去dramメモリモジュール
CN108431783B (zh) 访问请求处理方法、装置及计算机系统
KR102190403B1 (ko) 물리적 메모리 크기보다 큰 메모리 용량을 가능하게 하기 위한 방법 및 장치
US20080195801A1 (en) Method for operating buffer cache of storage device including flash memory
CN104881334A (zh) 缓存数据的防掉电保护方法及系统
CN106886370B (zh) 一种基于ssd去重技术的数据安全删除方法及系统
US11030092B2 (en) Access request processing method and apparatus, and computer system
US11169968B2 (en) Region-integrated data deduplication implementing a multi-lifetime duplicate finder
US11537582B2 (en) Data access method, a data access control device, and a data access system
US20130046736A1 (en) Recovering method and device for linux using fat file system
KR102071072B1 (ko) 데이터 저장장치의 주소 맵핑 테이블 운용 방법
KR20220105612A (ko) 해시 기반의 키 밸류에 관한 블록 변환 방법 및 시스템
US20220358051A1 (en) Non-volatile storage controller with partial logical-to-physical (l2p) address translation table
US12010214B2 (en) Hash based key value to block translation methods and systems
US8713067B1 (en) Stable file system
CN117453632B (zh) 一种数据存储方法及装置
US11409665B1 (en) Partial logical-to-physical (L2P) address translation table for multiple namespaces
Weng et al. HF-Dedupe: Hierarchical Fingerprint Scheme for High Efficiency Data Deduplication on Flash-based Storage Systems
US10860233B2 (en) Half-match deduplication
CN116185949A (zh) 缓存存储方法以及相关设备

Legal Events

Date Code Title Description
E902 Notification of reason for refusal