KR20230000412A - 키-밸류 스토리지 장치, 호스트, 및 호스트-스토리지 시스템 - Google Patents

키-밸류 스토리지 장치, 호스트, 및 호스트-스토리지 시스템 Download PDF

Info

Publication number
KR20230000412A
KR20230000412A KR1020220034937A KR20220034937A KR20230000412A KR 20230000412 A KR20230000412 A KR 20230000412A KR 1020220034937 A KR1020220034937 A KR 1020220034937A KR 20220034937 A KR20220034937 A KR 20220034937A KR 20230000412 A KR20230000412 A KR 20230000412A
Authority
KR
South Korea
Prior art keywords
key
value
file
storage device
host
Prior art date
Application number
KR1020220034937A
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 CN202210688337.0A priority Critical patent/CN115525604A/zh
Priority to US17/807,933 priority patent/US20220414059A1/en
Publication of KR20230000412A publication Critical patent/KR20230000412A/ko

Links

Images

Classifications

    • 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
    • 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/164File meta data generation
    • 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/1724Details of de-fragmentation performed by the file system
    • 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/18File system types
    • G06F16/1865Transactional file systems
    • 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/18File system types
    • G06F16/188Virtual file systems
    • G06F16/192Implementing virtual folder structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시는 키-밸류 스토리지 장치, 호스트 및 호스트-스토리지 시스템을 개시한다. 본 개시의 기술적 사상에 따른 호스트는 키-밸류 스토리지 장치와 통신하는 호스트로서, 어플리케이션 및 어플리케이션에서 수신한 파일 데이터에 관련된 파일 또는 디렉토리를 키-밸류 스토리지 장치에 제공하기 위해 파일 또는 디렉토리를 가공하는 파일 시스템을 포함한다. 파일 시스템은 파일 또는 디렉토리를 키-밸류 스토리지 장치에서 저장 가능한 키-밸류 오브젝트로 맵핑하는 맵핑 모듈, 어플리케이션에서 요청된 파일 연산을 키-밸류 스토리지 장치에서 수행 가능한 키-밸류 연산으로 변환하는 변환 모듈, 및 키-밸류 오브젝트 및 키-밸류 연산에 관련된 트랜잭션을 관리하고 트랜잭션을 키-밸류 스토리지 장치에 제공하는 트랜잭션 관리 모듈을 포함하고, 맵핑 모듈은 파일 또는 디렉토리를 메타 오브젝트 또는 데이터 오브젝트로 추상화한다.

Description

키-밸류 스토리지 장치, 호스트, 및 호스트-스토리지 시스템{Key-value storage device, host and host-storage system}
본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 키-밸류 스토리지 장치, 키-밸류 스토리지 장치와 통신하는 호스트, 및 키-밸류 스토리지 장치 및 호스트를 포함하는 호스트-스토리지 시스템에 관한 것이다.
스토리지 장치는 데이터를 관리하는 단위에 따라 오브젝트 기반 스토리지 장치 및 블록 기반 스토리지 장치로 구분될 수 있다. 오브젝트 기반 스토리지 장치는 데이터를 오브젝트 형식으로 저장하고 관리하는 스토리지 구조이다. 오브젝트는 임의의 사이즈를 가질 수 있는 데이터로, 예를 들어 동영상, 이미지 등의 멀티미디어 데이터, 파일 등을 의미하며, 오브젝트 스토리지 장치는 오브젝트를 관리하기 위해 사용될 수 있다. 오브젝트 기반 스토리지 장치의 일 예로서, 키-밸류 스토리지 장치가 있다.
본 개시의 기술적 사상은 파일 또는 디렉토리를 가상화하기 위한 파일 시스템의 소프트웨어 부하를 감소시키고 호스트와 스토리지 장치 사이의 입출력 데이터 양을 감소시킬 수 있는 호스트, 키-밸류 스토리지 장치 및 호스트-스토리지 시스템을 제공한다.
본 개시의 기술적 사상에 따른 호스트는, 키-밸류 스토리지 장치와 통신하는 호스트로서, 어플리케이션, 및 상기 어플리케이션에서 수신한 파일 데이터에 관련된 파일 또는 디렉토리를 상기 키-밸류 스토리지 장치에 제공하기 위해 상기 파일 또는 상기 디렉토리를 가공하는 파일 시스템을 포함하고, 상기 파일 시스템은, 상기 파일 또는 상기 디렉토리를, 상기 키-밸류 스토리지 장치에서 저장 가능한 키-밸류 오브젝트로 맵핑하는 맵핑 모듈, 상기 어플리케이션에서 요청된 파일 연산을, 상기 키-밸류 스토리지 장치에서 수행 가능한 키-밸류 연산으로 변환하는 변환 모듈, 및 상기 키-밸류 오브젝트 및 상기 키-밸류 연산에 관련된 트랜잭션을 관리하고, 상기 트랜잭션을 상기 키-밸류 스토리지 장치에 제공하는 트랜잭션 관리 모듈을 포함하고, 상기 맵핑 모듈은 상기 파일 또는 상기 디렉토리를 메타 오브젝트 또는 데이터 오브젝트로 추상화한다.
본 개시의 기술적 사상에 따른 키-밸류 스토리지 장치는, 복수의 키-밸류 오브젝트들을 저장하고, 상기 복수의 키-밸류 오브젝트들은 파일의 정보를 포함하는 메타 오브젝트 및 상기 파일의 콘텐츠를 포함하는 데이터 오브젝트를 포함하는, 비휘발성 메모리, 및 호스트로부터 키-밸류 오브젝트를 수신하고, 수신한 상기 키-밸류 오브젝트를 기초로 상기 비휘발성 메모리를 제어하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는, 상기 키-밸류 오브젝트를 인덱싱하는 오브젝트 인덱싱 모듈; 및 상기 키-밸류 오브젝트에 대한 트랜잭션을 지원하는 트랜잭션 서포팅 모듈을 포함하고, 상기 스토리지 장치는 상기 호스트와 키-밸류 인터페이스에 따라 통신한다.
본 개시의 기술적 사상에 따른 호스트-스토리지 시스템은, 키-밸류 스토리지 장치, 및 키-밸류 인터페이스에 따라 상기 키-밸류 스토리지 장치와 통신하는 호스트를 포함하고, 상기 호스트는, 어플리케이션에서 수신한 파일 데이터에 관련된 파일 또는 디렉토리를 상기 키-밸류 스토리지 장치에 제공하기 위해 상기 파일 또는 상기 디렉토리를 가공하는 파일 시스템을 포함하고, 상기 파일 시스템은, 상기 파일 또는 상기 디렉토리를, 상기 키-밸류 스토리지 장치에서 저장 가능한 키-밸류 오브젝트로 맵핑하고, 상기 어플리케이션에서 요청된 파일 연산을, 상기 키-밸류 스토리지 장치에서 수행 가능한 키-밸류 연산으로 변환하며, 상기 키-밸류 오브젝트 및 상기 키-밸류 연산에 관련된 트랜잭션을 관리하고, 상기 트랜잭션을 상기 키-밸류 스토리지 장치에 제공한다.
본 개시의 기술적 사상에 따르면, 스토리지 장치는 장치 내 인덱싱 기술과 트랜잭션 기능이 탑재된 키-밸류 스토리지 장치로서 구현될 수 있고, 호스트는 스토리지 장치의 장치 내 인덱싱 기술을 활용하여 파일 또는 디렉토리 및 파일 연산을 키-밸류 형태로 변환하고, 스토리지 장치의 트랜잭션 기능을 활용하여 파일 시스템의 일관성을 보장할 수 있다. 이에 따라, 호스트와 스토리지 장치 사이의 입출력 데이터 양을 크게 감소시켜, 호스트의 파일 시스템의 성능을 향상시킬 수 있다. 또한, 스토리지 장치가 유지하지 않는 메타데이터(예를 들어, 비트맵 등)에 대한 파편화가 발생하지 않으며, 스토리지 장치 내부에서 주기적인 연산(예를 들어, 컴팩션, 가비지 컬렉션 등)을 통해 오브젝트 조각 모음을 수행할 수 있으므로, 호스트의 파일 시스템의 노후화에 따른 성능 하락을 감소시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 호스트-스토리지 시스템을 나타낸다.
도 2는 도 1의 호스트를 설명하기 위한 블록도이다.
도 3은 본 개시의 일 실시예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
도 4는 본 개시의 일 실시예에 따른 파일 시스템의 키-밸류 맵핑 동작을 예시적으로 나타낸다.
도 5는 본 개시의 일 실시예에 따른 파일 시스템의 키-밸류 연산 변환 동작을 예시적으로 나타낸다.
도 6은 본 개시의 일 실시예에 따른 파일 시스템의 파일 연산과 키-밸류 연산을 나타낸다.
도 7은 본 개시의 일 실시예에 따른 파일 시스템의 트랜잭션 관리 동작을 예시적으로 나타낸다.
도 8 내지 도 11은 본 개시의 일부 실시예들에 따른 파일 시스템의 동작을 예시적으로 나타낸다.
도 12는 본 개시의 일 실시예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
도 13은 본 개시의 일 실시예에 따른 스토리지 컨트롤러를 나타내는 블록도이다.
도 14는 본 개시의 일 실시예에 따른 호스트와 스토리지 장치 사이의 동작을 나타내는 흐름도이다.
도 15는 본 개시의 일 실시예에 따른 스토리지 장치가 적용된 시스템을 나타낸다.
도 1은 본 개시의 일 실시예에 따른 호스트-스토리지 시스템(10)을 나타낸다.
도 1을 참조하면, 호스트-스토리지 시스템(10)은 스토리지 장치(100) 및 호스트(200)를 포함할 수 있다. 본 실시예에서, 스토리지 장치(100)는 키(K) 및 밸류(V)를 포함하는 오브젝트 형식으로 데이터를 저장하고 관리할 수 있다. 이에 따라, 스토리지 장치(100)는 "키-밸류 스토리지 장치"라고 지칭할 수 있다. 본 명세서에서, 스토리지 장치(100)는 "키-밸류 스토리지 장치"를 의미할 수 있다. 예를 들어, 스토리지 장치(100)는 키-밸류 SSD(solid state drive)에 대응할 수 있다.
스토리지 장치(100) 및 호스트(200)는 키-밸류 인터페이스(key-value interface)(KV-IF)를 통해 통신할 수 있다. 구체적으로, 키-밸류 인터페이스(KV-IF)에 따라, 호스트(200)는 스토리지 장치(100)에 키-밸류 연산에 대응하는 키-밸류 커맨드, 키를 포함하는 커맨드, 또는 키-밸류 오브젝트 등을 제공할 수 있다. 또한, 스토리지 장치(100)는 호스트(200)에 키-밸류 오브젝트, 또는 키를 포함하는 응답 등을 제공할 수 있다.
스토리지 장치(100)는 복수의 키-밸류 오브젝트들을 저장할 수 있고, 복수의 키-밸류 오브젝트들은 수퍼 오브젝트(101), 메타 오브젝트들(102) 및 데이터 오브젝트들(103)을 포함할 수 있다. 수퍼 오브젝트(101)는 파일 시스템 정보를 저장할 수 있다. 메타 오브젝트들(102)은 파일에 대한 메타데이터, 즉, 파일 또는 디렉토리의 속성들을 저장하는 복수의 메타 오브젝트들(MO)을 포함할 수 있고, 각 메타 오브젝트(MO)는 키(K) 및 밸류(V)를 포함할 수 있다. 데이터 오브젝트들(103)은 파일에 대한 실제 데이터, 즉, 파일 콘텐츠를 저장하는 복수의 데이터 오브젝트들(DO)을 포함할 수 있고, 각 데이터 오브젝트(DO)는 키(K) 및 밸류(V)를 포함할 수 있다. 각 키-밸류 오브젝트는 가변 사이즈를 가질 수 있다.
일반적인 블록 스토리지 장치는 스토리지 매체를 고정된 사이즈의 논리 블록들로서 추상화하고 블록 입출력 동작들을 제공한다. 이러한 블록 스토리지 장치 위에서 파일들과 디렉토리들을 가상화하기 위하여, 호스트의 파일 시스템은 디스크 포인터, 비트맵, 디렉토리 엔트리 등과 같은 다양한 온-디스크(on-disk) 데이터 구조를 유지해야 한다. 이때, 파일들과 디렉토리들은 데이터를 추상화하는 일반적인 방식이다.
일반적인 블록 스토리지 장치는 고정된 사이즈의 로직 블록들을 내보내고(export), 호스트의 파일 시스템들이 스토리지 공간(storage space)(예를 들어, 비트맵) 및 데이터 위치들(예를 들어, 아이노드)을 관리함으로써, 로직 블록들을 사용자 데이터를 포함하는 파일들 및 디렉토리들로 추상화한다. 이때, 호스트에서 파일들 및 디렉토리들이 생성되거나 삭제될 때마다, 시스템의 새롭게 업데이트된 상태를 반영하도록 파일 시스템 메타데이터(예를 들어, 비트맵 및 아이노드 등)가 검색(retrieve) 및 업데이트되어야 한다. 이에 따라, 일반적인 블록 스토리지 장치의 경우 파일 시스템에 대한 소프트웨어 부하가 크고, 호스트와 블록 스토리지 장치 사이의 입출력 데이터 양이 많다.
그러나, 본 실시예에 따른 스토리지 장치(100)는 스토리지 장치(100)의 물리적 주소 공간에서 키-밸류 오브젝트들의 스토리지 내 인덱싱을 구현할 수 있다. 구체적으로, 파일 시스템에 노출되는 키-밸류 오브젝트들은 스토리지 장치(100) 내의 오브젝트 인덱싱 모듈(예를 들어, 도 3의 111)에 의해 관리될 수 있다. 스토리지 장치(100)는 키-밸류 오브젝트들을 물리적 주소 공간에 맵핑하고, 키-밸류 오브젝트들에 대한 독출 및 기입 요청들을 핸들링할 수 있다. 그러므로, 호스트(200)에서 파일들 및 디렉토리들이 생성되거나 삭제될 때마다, 호스트(200)에서 파일 시스템 메타데이터를 업데이트하지 않아도 되고, 호스트(200)와 스토리지 장치(100) 사이에서 파일 시스템 메타데이터가 송수신되지 않아도 된다. 이에 따라, 호스트(200)의 파일 시스템에 대한 소프트웨어 부하가 크게 감소하고, 호스트(200)와 스토리지 장치(100) 사이의 입출력 데이터 양을 크게 감소시킬 수 있다.
호스트(200)는 호스트 컨트롤러(201) 및 호스트 메모리(202)를 포함할 수 있다. 호스트 메모리(202)는 스토리지 장치(100)로 전송될 키-밸류 커맨드 또는 키-밸류 오브젝트, 혹은 스토리지 장치(100)로부터 전송된 키-밸류 오브젝트를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다. 예를 들어, 호스트 메모리(202)는 입출력 큐(queue)를 포함할 수 있다. 호스트 컨트롤러(201)는 호스트 메모리(202)의 버퍼 영역의 키-밸류 오브젝트(예컨대, 기록 데이터)를 비휘발성 메모리(120)에 저장하거나, 비휘발성 메모리(120)의 키-밸류 오브젝트(예컨대, 독출 데이터)를 호스트 메모리(202)의 버퍼 영역에 저장하는 동작을 관리할 수 있다.
일 실시예에 따라, 호스트 컨트롤러(201)와 호스트 메모리(202)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(201)와 호스트 메모리(202)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(201)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(202)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
이와 같이, 본 실시예에 따르면, 스토리지 장치(100)는 장치 내 인덱싱 기술과 트랜잭션 기능이 탑재된 키-밸류 스토리지 장치로서 구현될 수 있다. 또한, 본 실시예에 따르면, 호스트(200)는 스토리지 장치(100)의 장치 내 인덱싱 기술을 활용하여 파일 또는 디렉토리 및 파일 연산을 키-밸류 형태로 변환하고, 스토리지 장치(100)의 트랜잭션 기능을 활용하여 파일 시스템의 일관성을 보장할 수 있다. 이에 따라, 호스트(200)와 스토리지 장치(100) 사이의 입출력 데이터 양을 크게 감소시켜, 호스트(200)의 파일 시스템의 성능을 향상시킬 수 있다. 또한, 스토리지 장치(100)가 유지하지 않는 메타데이터(예를 들어, 비트맵 등)에 대한 파편화가 발생하지 않으며, 스토리지 장치(100) 내부에서 주기적인 연산(예를 들어, 컴팩션, 가비지 컬렉션 등)을 통해 오브젝트 조각 모음을 수행할 수 있으므로, 호스트(200)의 파일 시스템의 노후화에 따른 성능 하락을 감소시킬 수 있다.
도 2는 도 1의 호스트(200)를 설명하기 위한 블록도이다.
도 2를 참조하면, 호스트(200)는 사용자 스페이스(user space)(21)와 커널 스페이스(kernel space)(22)를 포함한다. 도 2에 도시된 각 구성요소는 소프트웨어 또는 FPGA(field-programmable gate array), ASIC(application-specific integrated circuit) 등과 같은 하드웨어를 의미할 수 있다. 그러나, 상기 구성요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성요소들 안에서 제공되는 기능은 더 세분화된 구성요소에 의하여 구현될 수 있으며, 복수의 구성요소들을 합하여 특정한 기능을 수행하는 하나의 구성요소로 구현할 수도 있다.
사용자 스페이스(21)는 사용자 어플리케이션(user application)(AP)이 실행되는 영역이고, 커널 스페이스(22)는 커널 실행을 위해서 제한적으로 보장된(restrictively reserved) 영역이다. 사용자 스페이스(21)에서 커널 스페이스(22)를 접근하기 위해서, 시스템 콜(system call)이 이용될 수 있다.
커널 스페이스(22)는 가상 파일 시스템(VFS), 파일 시스템(FS), 장치 드라이버(DD) 등을 포함할 수 있고, 파일 시스템(FS)은 하나 이상일 수 있다. 가상 파일 시스템(VFS)은 하나 이상의 파일 시스템(FS)이 서로 상호 동작할 수 있도록 한다. 가상 파일 시스템(VFS)은 서로 다른 미디어의 서로 다른 파일 시스템(FS)에 대해 리드/라이트 작업을 하기 위해서, 표준화된 시스템 콜을 사용할 수 있도록 한다. 따라서, 예를 들어, open(), read(), write()와 같은 시스템 콜은, 파일 시스템(FS)의 종류에 관계없이 사용될 수 있다. 즉, 가상 파일 시스템(VFS)은 사용자 스페이스(21)와 파일 시스템(FS) 사이에 존재하는 추상화 계층일 수 있다. 장치 드라이버(DD)는 하드웨어와 사용자 어플리케이션(AP)(또는 운영체제) 사이의 인터페이스를 담당한다. 장치 드라이버(DD)는 하드웨어가 특정 운영체제 하에서 정상적으로 동작하기 위해 필요한 프로그램이다.
도 3은 본 개시의 일 실시예에 따른 호스트-스토리지 시스템(10a)을 나타내는 블록도이다.
도 3을 참조하면, 호스트-스토리지 시스템(10a)은 도 1의 호스트-스토리지 시스템(10)의 일 구현 예에 대응할 수 있다. 호스트(200)는 사용자 어플리케이션 또는 어플리케이션(AP) 및 파일 시스템(FS)을 포함할 수 있다. 일 실시예에서, 호스트(200)는 어플리케이션(AP) 및 파일 시스템(FS)은 소프트웨어로 구현될 수 있고, 어플리케이션(AP) 및 파일 시스템(FS)은 호스트 컨트롤러(도 1의 201)에 의해 실행될 수 있다. 호스트(200)는 도 2에 예시된 바와 같이, 가상 파일 시스템(VFS) 및 장치 드라이버(DD)를 더 포함할 수 있으나, 편의상 도 3에서는 어플리케이션(AP) 및 파일 시스템(FS)만 도시하였다.
도 3에서는 하나의 어플리케이션(AP)이 도시되어 있으나, 본 발명은 이에 한정되지 않는다. 실시예에 따라, 호스트(200)는 다양한 어플리케이션들을 실행할 수 있고, 호스트(200)에서 실행하는 어플리케이션의 종류는 사용자 입력에 의해 결정될 수 있다. 예를 들어, 어플리케이션(AP)은 멀티미디어 재생 어플리케이션, 이미지 인식 어플리케이션, 음성 인식 어플리케이션, 암호화 어플리케이션, 검색 어플리케이션 등일 수 있다.
파일 시스템(FS)은 스토리지 장치(100)에 파일을 저장하기 위한 자료 구조이다. 호스트(200)는 어플리케이션(AP)을 통해 사용자 데이터 또는 데이터가 입력되면, 파일 시스템(FS)을 통해 데이터를 가공하고, 가공된 데이터를 스토리지 장치(100)에 저장할 수 있다. 이하에서는, 파일 시스템(FS)이 어플리케이션(AP)으로부터 제공받은 데이터를 "파일 데이터" 또는 "호스트 데이터"라고 지칭하기로 한다. 또한, 호스트(200)는 어플리케이션(AP)을 실행하기 위해 필요한 연산들 중 적어도 일부가 스토리지 장치(100)에서 수행될 수 있도록, 스토리지 장치(100)에 트랜잭션을 제공할 수 있다. 이하에서는, 어플리케이션(AP)을 실행하기 위해 호스트(200)에서 수행 가능한 연산을 "파일 연산" 또는 "호스트 연산"이라고 지칭하기로 한다.
파일 시스템(FS)은 어플리케이션(AP)으로부터 파일 데이터를 수신하고, 수신한 파일 데이터에 관련된 파일 또는 디렉토리를 스토리지 장치(100)에 제공하기 위해 파일 또는 디렉토리를 가공할 수 있다. 일 실시예에서, 파일 시스템(FS)은 맵핑 모듈(210), 변환 모듈(220) 및 트랜잭션 관리 모듈(230)을 포함할 수 있다. 맵핑 모듈(210)은 파일 데이터를, 스토리지 장치(100)에 저장 가능한 "키-밸류 오브젝트"로 맵핑할 수 있다. 변환 모듈(220)은 파일 연산을, 스토리지 장치(100)에서 수행 가능한 "키-밸류 연산"으로 변환할 수 있다. 트랜잭션 관리 모듈(230)은 스토리지 장치(100)에서 수행 가능한 트랜잭션을 관리 또는 핸들링할 수 있다. 이와 같이, 파일 시스템(FS)은 호스트(200)의 파일 데이터를 스토리지 장치(100)의 키-밸류 오브젝트로 맵핑하고, 호스트(200)의 파일 연산을 스토리지 장치(100)의 키-밸류 연산으로 변환하므로, 파일 시스템(FS)은 "키-밸류 파일 시스템"이라고 지칭될 수 있다.
도 1 및 도 3을 함께 참조하면, 맵핑 모듈(210)은 파일 또는 디렉토리를, 스토리지 장치(100)에서 저장 가능한 키-밸류 오브젝트로 맵핑할 수 있다. 구체적으로, 맵핑 모듈(210)은 파일 또는 디렉토리를 메타 오브젝트(MO) 또는 데이터 오브젝트(DO)로 추상화할 수 있다. 맵핑 모듈(210)은 파일의 정보 또는 디렉토리를 메타 오브젝트(MO)로 맵핑하고, 파일의 콘텐츠를 데이터 오브젝트(DO)로 맵핑할 수 있다. 일 실시예에서, 맵핑 모듈(210)은 파일 또는 디렉토리의 아이노드를 기반으로 메타 오브젝트(MO)의 제1 키 및 데이터 오브젝트(DO)의 제2 키를 할당할 수 있다. 구체적으로, 맵핑 모듈(210)은 메타 오브젝트(MO)의 제1 키가 부모의 아이노드 넘버 및 파일 이름을 포함하도록 제1 키를 생성하고, 데이터 오브젝트(DO)의 제2 키가 파일의 아이노드 넘버를 포함하도록 제2 키를 생성할 수 있다. 맵핑 모듈(210)의 구체적인 동작은 이하에서 도 4를 참조하여 상술하기로 한다.
변환 모듈(220)은 파일 연산에 대응하는 시스템 콜을 키-밸류 연산으로 변환할 수 있고, 키-밸류 연산은 메타 오브젝트(MO) 또는 데이터 오브젝트(DO)에 대한 키-밸류 커맨드를 포함할 수 있다. 일 실시예에서, 변환 모듈(220)은 파일 연산에 대응하는 하나의 시스템 콜을 복수의 키-밸류 연산들로 변환할 수 있다. 일 실시예에서, 변환 모듈(220)은 키-밸류 연산을 스토리지 장치(100)에서 수행하기 전에, 파일 시스템(FS) 내 캐시 메모리에서 해당 연산을 처리할 수 있다. 변환 모듈(220)의 구체적인 동작은 이하에서 도 5 및 도 6을 참조하여 상술하기로 한다.
트랜잭션 관리 모듈(230)은 하나의 시스템 콜에 대응하는 복수의 키-밸류 연산들을 하나의 트랜잭션으로 관리할 수 있고, 이로써, 다수의 키-밸류 오브젝트들에 대한 원자성(atomicity)을 보장할 수 있다. 실시예에 따라, 트랜잭션 관리 모듈(230)은 트랜잭션 처리기(handler)라고 지칭할 수도 있다. 트랜잭션 관리 모듈(230)은 스토리지 장치(100)가 제공하는 트랜잭션 기능을 활용하여 파일 시스템(FS)의 일관성을 낮은 부하로 유지할 수 있다. 트랜잭션 관리 모듈(230)은 파일 연산들을 모두 추적하며, 파일 연산들 사이의 순서 및 연관성을 고려하여 스토리지 장치(100)에 대한 입출력을 수행할 수 있다. 트랜잭션 관리 모듈(230)의 구체적인 동작은 이하에서 도 7을 참조하여 상술하기로 한다.
스토리지 장치(100)는 오브젝트 인덱싱 모듈(111), 트랜잭션 서포팅 모듈(112) 및 비휘발성 메모리(120)를 포함할 수 있다. 일 실시예에서, 오브젝트 인덱싱 모듈(111) 및 트랜잭션 서포팅 모듈(112)은 소프트웨어로 구현될 수 있고, 워킹 메모리에 로딩될 수 있다. 일 실시예에서, 오브젝트 인덱싱 모듈(111) 및 트랜잭션 서포팅 모듈(112)은 호스트 인터페이스 레이어(host interface layer)에 구현될 수 있다. 실시예에 따라, 오브젝트 인덱싱 모듈(111)은 인-스토리지 인덱싱 엔진이라고 지칭할 수도 있다.
오브젝트 인덱싱 모듈(111)은 키-밸류 오브젝트를 인덱싱할 수 있다. 이로써, 스토리지 장치(100)는 키-밸류 오브젝트를 인덱싱하기 위한 데이터 입출력이 스토리지 장치(100) 내에서 발생하므로, 호스트(200)와 스토리지 장치(100) 사이의 입출력 데이터 양이 감소할 수 있다. 또한, 스토리지 장치(100)가 키-밸류 오브젝트 인덱싱을 수행함으로써, 호스트(200)의 파일 시스템(FS)은 파일에 대한 아이노드, 비트맵, 디스크 포인터, 디렉토리 엔트리 등을 관리하지 않아도 되므로 소프트웨어 부하가 감소할 수 있다. 이와 같이, 본 실시예에 따르면, 오브젝트 인덱싱 기능을 스토리지 장치(100)에 오프로딩함으로써, 호스트(200)의 파일 시스템(FS)은 경량(light weight) 파일 시스템으로 구현될 수 있다.
도 1 및 도 3을 함께 참조하면, 오브젝트 인덱싱 모듈(111)은 메타 오브젝트(MO) 및 데이터 오브젝트(DO)를 인덱싱할 수 있다. 메타 오브젝트(MO)의 키는 일반적인 파일 시스템에서 파일 또는 디렉토리 네임에 대응하고, 메타 오브젝트(MO)의 밸류는 아이노드에 대응할 수 있다. 종래의 파일 시스템은 디렉토리 엔트리들의 리스트를 수정하기 위하여 블록들에 대한 독출 및 기입 동작을 수행하였다. 그러나, 본 발명에 따르면, 오브젝트 인덱싱 모듈(111)은 메타 오브젝트(MO)를 기입(예를 들어, SET(MO)) 또는 제거(예를 들어, DETETE(MO))함으로써, 디렉토리 엔트리들을 업데이트할 수 있다. 이에 따라, 호스트(200)와 스토리지 장치(100) 사이의 입출력 데이터 양을 감소시킬 수 있다.
데이터 오브젝트의 사이즈가 큰 라지(large) 오브젝트를 단일 키-밸류 페어(pair)의 형태로 인덱싱할 경우, 라지 오브젝트의 일부를 독출 또는 업데이트하는 경우에도, 큰 입출력 오버헤드를 야기한다. 그러나, 본 발명에 따르면, 오브젝트 인덱싱 모듈(111)은 데이터 오브젝트(DO)를 고유의 서픽스들(suffixes)을 갖는 서브 오브젝트들로 분할(split)하고, 서브 오브젝트들을 독립적인 키-밸류 페어들인 것과 같이 관리할 수 있다. 데이터 오브젝트(DO), 예를 들어, "/home/alice/bob.txt"의 사이즈가 32 KB이면, 오브젝트 인덱싱 모듈(111)은 데이터 오브젝트(DO)를 서로 다른 서픽스들을 갖는 8개의 4 KB 사이즈의 서브 오브젝트들, 예를 들어, d:100:0, d:100:1, d:100:2, d:100:3, d:100:4, d:100:5, d:100:6, d:100:7로 분할할 수 있다. 이에 따라, 라지 오브젝트의 일부만 검색 또는 업데이트되는 경우, 대응하는 서브 오브젝트에 대한 독출 또는 기입 동작만을 수행할 수 있으므로, 입출력 오버헤드를 감소시킬 수 있다.
트랜잭션 서포팅 모듈(112)은 키-밸류 오브젝트에 대한 트랜잭션을 지원할 수 있다. 구체적으로, 트랜잭션 서포팅 모듈(112)은 트랜잭션 API(Application Programming Interface)를 제공할 수 있고, 이로써, 다수의 키-밸류 오브젝트들에 대한 원자성(atomicity) 및 내구성(durability)를 제공할 수 있다. 이와 같이, 스토리지 장치(100)는 키-밸류 오브젝트에 대한 다양한 연산 동작들을 수행할 수 있으며, 이에 따라, 스토리지 장치(100)는 연산 스토리지 장치 또는 연산 키-밸류 스토리지 장치라고 지칭할 수도 있다.
구체적으로, 트랜잭션 서포팅 모듈(112)은 세 개의 데이터 구조들, 즉, 트랜잭션 테이블(TxTable), 트랜잭션 로그들(TxLogs) 및 리커버리 로그(TxRecovery)를 이용할 수 있다. 트랜잭션 테이블(TxTable)은 트랜잭션들의 정보를 저장할 수 있다. 트랜잭션 로그들(TxLogs)은 트랜잭션에 관련된 키-밸류 오브젝트들의 키-밸류 인덱스들을 저장하며, 비휘발성 메모리(120) 또는 DRAM에 저장될 수 있다. 리커버리 로그(TxRecovery)는 리커버리 동안 트랜잭션들을 회복(recover) 또는 중단(abort)시키는데 이용될 수 있다.
비휘발성 메모리(120)는 복수의 키-밸류 오브젝트들을 저장하고, 복수의 키-밸류 오브젝트들은 파일의 정보를 포함하는 메타 오브젝트 및 파일의 콘텐츠를 포함하는 데이터 오브젝트를 포함할 수 있다. 실시예에 따라, 비휘발성 메모리(120)는 복수의 메모리 칩들 또는 복수의 메모리 다이(die)들로 구현될 수 있다. 예를 들어, 복수의 메모리 칩들 각각은 DDP(Dual Die Package), QDP(Quadruple Die Package), 또는 ODP(Octuple Die Package)일 수 있다.
비휘발성 메모리(120)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(100)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(100)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
도 4는 본 개시의 일 실시예에 따른 파일 시스템의 키-밸류 맵핑 동작을 예시적으로 나타낸다.
도 3 및 도 4를 함께 참조하면, 맵핑 모듈(210)은 파일의 정보 또는 디렉토리를 메타 오브젝트로 맵핑하고, 파일의 콘텐츠를 데이터 오브젝트로 맵핑할 수 있다. 일 실시예에서, 맵핑 모듈(210)은 파일 또는 디렉토리의 아이노드 넘버(inode number)를 기반으로 키를 할당함으로써, 메타 오브젝트의 제1 키 및 데이터 오브젝트의 제2 키를 할당할 수 있다. 이때, 일반 파일만 메타 오브젝트 및 데이터 오브젝트로 맵핑되며, 디렉토리는 메타 오브젝트로만 맵핑될 수 있다. 이에 따라, 본 실시예에 따르면, 기존 파일 시스템에서 존재하는 디렉토리 엔트리에 대한 부하를 제거할 수 있다.
구체적으로, 맵핑 모듈(210)은 메타 오브젝트의 제1 키가 부모의 아이노드 넘버 및 파일 이름을 포함하도록 제1 키를 생성할 수 있다. 예를 들어, 맵핑 모듈(210)은 메타 오브젝트의 키는 "M:부모의 아이노드 넘버:파일 이름"으로 할당할 수 있다. 이와 같이, 메타 오브젝트의 키를 설정함으로써, 같은 부모 디렉토리 내의 모든 자식 파일들은 인접하게 저장할 수 있고, 이로써, 높은 읽기 성능을 보장할 수 있다. 또한, 맵핑 모듈(210)은 데이터 오브젝트의 제2 키가 파일의 아이노드 넘버를 포함하도록 제2 키를 생성할 수 있다. 예를 들어, 맵핑 모듈(210)은 데이터 오브젝트의 키는 "D:해당 파일의 아이노드 넘버"로 할당할 수 있다.
예를 들어, 맵핑 모듈(210)은 루트 디렉토리(411)를 메타 오브젝트(421)로 맵핑할 수 있고, 메타 오브젝트(421)의 "M:0/"로 할당된 키(K1) 및 밸류(V1)를 포함할 수 있다. 예를 들어, 루트 디렉토리(411)의 아이노드 넘버가 2인 경우, 맵핑 모듈(210)은 서브 디렉토리(412)를 메타 오브젝트(422)로 맵핑할 수 있고, 메타 오브젝트(422)는 키(K2) 및 밸류(V2)를 포함할 수 있다. 여기서, 키(K2)는 루트 디렉토리(411)의 아이노드 넘버 2와 파일 이름 'pet'을 포함하는 "M:2:pet/"로 할당될 수 있다.
예를 들어, 서브 디렉토리(412)의 아이노드 넘버는 50이고 제1 파일(413)의 아이노드 넘버가 100인 경우, 맵핑 모듈(210)은 제1 파일(413)을 메타 오브젝트(423a) 및 데이터 오브젝트(423b)로 맵핑할 수 있고, 메타 오브젝트(423a)는 키(K3a) 및 밸류(V3a)를 포함할 수 있고, 데이터 오브젝트(423b)는 키(K3b) 및 밸류(V3b)를 포함할 수 있다. 이때, 메타 오브젝트(423a)의 키(K3a)는 서브 디렉토리(412)의 아이노드 넘버 50과 파일 이름 'cat'을 포함하는 "M:50:cat"로 할당될 수 있고, 데이터 오브젝트(423b)의 키(K3b)는 제1 파일(413)의 아이노드 넘버 100를 포함하는 "D:100"로 할당될 수 있다. 메타 오브젝트(423a)의 밸류(V3a)는 제1 파일(413)의 파일 정보, 메타 데이터의 생성 시간 등을 포함할 수 있고, 데이터 오브젝트(423b)의 밸류(V3b)는 실제 콘텐츠, 예를 들어, 고양이의 사진 또는 비디오 등에 대응할 수 있다.
예를 들어, 서브 디렉토리(412)의 아이노드 넘버는 50이고 제2 파일(414)의 아이노드 넘버가 101인 경우, 맵핑 모듈(210)은 제2 파일(414)을 메타 오브젝트(424a) 및 데이터 오브젝트(434b)로 맵핑할 수 있고, 메타 오브젝트(424a)는 키(K4a) 및 밸류(V4a)를 포함할 수 있고, 데이터 오브젝트(424b)는 키(K4b) 및 밸류(V4b)를 포함할 수 있다. 이때, 메타 오브젝트(424a)의 키(K4a)는 서브 디렉토리(412)의 아이노드 넘버 50과 파일 이름 'dog'를 포함하는 "M:50:dog"로 할당될 수 있고, 데이터 오브젝트(424b)의 키(K4b)는 제2 파일(414)의 아이노드 넘버 101를 포함하는 "D:101"로 할당될 수 있다. 메타 오브젝트(424a)의 밸류(V4a)는 제2 파일(414)의 파일 정보, 메타 데이터의 생성 시간 등을 포함할 수 있고, 데이터 오브젝트(424b)의 밸류(V4b)는 실제 콘텐츠, 예를 들어, 강아지의 사진 또는 비디오 등에 대응할 수 있다.
상술한 실시예에 따라 키를 구성함으로써, 키-밸류를 정렬하여 저장하는 스토리지 장치(100)의 사용 시 높은 ITERATE 성능을 보장할 수 있다. 또한, 키를 파일의 절대 경로로 구성할 때 나타날 수 있는 높은 rename 연산 부하를 제거할 수 있다.
도 5는 본 개시의 일 실시예에 따른 파일 시스템의 키-밸류 연산 변환 동작을 예시적으로 나타낸다.
도 3 및 도 5를 함께 참조하면, 변환 모듈(220)은 시스템 콜에 대응하는 파일 연산을 키-밸류 연산으로 변환할 수 있다. 일 실시예에서, 파일 연산 POSIX(portable operating system interface) 시스템 콜에 대응할 수 있다. 키-밸류 연산은 메타 오브젝트(MO)에 대한 키-밸류 연산 및 데이터 오브젝트(DO)에 대한 키-밸류 연산을 포함할 수 있다.
예를 들어, 변환 모듈(220)은 mkdir()을 SET(MO)로 변환하고, creat()를 SETM(MO)로 변환하고, write()를 SET(DO)로 변환하고, rmdir()를 DELETE(MO)로 변환하고, unlink()를 DELETE(MO + DO)로 변환하고, setattr()를 SET(MO)로 변환하고, open()를 GET(MO)로 변환하고, lookup()를 GET(MO)로 변환하고, read()를 GET(DO)로 변환하고, readdir()를 ITERATE(MO)로 변환할 수 있다.
일반적인 블록 저장 장치의 경우, 기입 동작을 수행하기 위해서는 호스트와 스토리지 장치 사이에서 비트맵, 아이노드, 디렉토리 엔트리, 디스크 포인터 등과 같은 파일 시스템 메타데이터의 입출력이 수행된다. 그러나, 본 실시예에 따른 스토리지 장치(100)의 경우, 키-밸류 인터페이스(KV-IF)에 따라 호스트(200)와 스토리지 장치(100)가 통신하므로, 상기 파일 시스템 메타데이터의 입출력이 수행되지 않는다. 따라서, 호스트(200)와 스토리지 장치(100) 사이의 입출력 데이터 양을 크게 줄일 수 있다. 또한, 파일 시스템(FS)은 직관적이고 간편한 연산 변환을 제공할 수 있고, 기존의 파일 시스템에 비해 입출력 연산이 매우 감소할 수 있다.
도 6은 본 개시의 일 실시예에 따른 파일 시스템(FS)의 파일 연산과 키-밸류 연산을 나타낸다.
도 3 및 도 6을 함께 참조하면, 어플리케이션(AP)과 파일 시스템(FS)은 예를 들어, POSIX에 따라 통신할 수 있다. 어플리케이션(AP)은 파일 시스템(FS)에 예를 들어, open(), creat(), readdir() 등과 같은 POSIX 연산, 즉, 파일 연산을 요청할 수 있다. 파일 시스템(FS)의 변환 모듈(220)은 POSIX 연산을 예를 들어, GET(), SET(), ITERATE() 등과 같은 키-밸류 연산으로 변환할 수 있다.
파일 시스템(FS)은 키-밸류 인터페이스(KV-IF)를 통해 스토리지 장치(100)에 다양한 키-밸류 연산들에 각각 따른 키-밸류 커맨드들을 제공할 수 있다. 이에 따라, 스토리지 장치(100)는 수신한 키-밸류 커맨드들에 각각 대응하는 키-밸류 연산들에 따른 오브젝트 인덱싱, 트랜잭션, 오브젝트 저장 또는 오브젝트 독출 등과 같은 다양한 동작을 수행할 수 있다.
도 7은 본 개시의 일 실시예에 따른 파일 시스템의 트랜잭션 관리 동작을 예시적으로 나타낸다.
도 3 및 도 7을 함께 참조하면, 변환 모듈(220)은 하나의 시스템 콜(71), 예를 들어, unlink()를 복수의 키-밸류 연산들, 예를 들어, DELETE(meta) 및 DELETE(data)와 같은 두 개의 키-밸류 연산들로 변환할 수 있다. 트랜잭션 관리 모듈(230)은 하나의 시스템 콜(71)에 대응하는 복수의 키-밸류 연산들, 예를 들어, 두 개의 키-밸류 연산들 DELETE(meta) 및 DELETE(data)을 하나의 트랜잭션(72)으로 관리할 수 있다.
이에 따라, 호스트(200)는 키-밸류 인터페이스(KV-IF)를 통해 트랜잭션(72)을 스토리지 장치(100)에 제공할 수 있고, 스토리지 장치(100)의 트랜잭션 서포팅 모듈(112)는 트랜잭션(72)을 수행할 수 있다. 예를 들어, 호스트(200)는 새로운 트랜잭션의 시작을 지시하는 BeginTx()를 스토리지 장치(100) 제공하고, DELETE(meta) 및 DELETE(data)에 대응하는 키-밸류 커맨드를 스토리지 장치(100) 제공하고, 상기 트랜잭션의 종료를 지시하는 EndTx()를 스토리지 장치(100) 제공할 수 있다. 이와 같이, 트랜잭션 서포팅 모듈(112)은 BeginTx() 및 EndTx()의 트랜잭션 관련 기능을 제공함으로써, 하나의 트랜잭션(72) 안에 포함되는 연산들의 원자성을 보장할 수 있다.
일 실시예에서, BeginTx()가 수신되면, 스토리지 장치(100)는 트랜잭션 테이블(TxTable)에 신규 엔트리(new entry)를 생성할 수 있다. 트랜잭션에 속하는 후속 커맨드가 도착하면, 스토리지 장치(100)는 메모리에 존재하는 트랜잭션 로그(TxLogs)에 키-밸류 인덱스들을 유지하고, 관련된 밸류들을 버퍼링할 수 있다. EndTx(TID)가 수신되면, 스토리지 장치(100)는 관련된 트랜잭션을 커밋(commit)하고, 트랜잭션의 상태를 COMMITTED로 변경할 수 있다. 또한, 스토리지 장치(100)는 트랜잭션이 커밋되었음을 호스트(200)에 노티파이(notify)할 수 있다.
파일 시스템(FS)는 입출력 연산을 사용할 때, 파일 연산 별로 트랜잭션 기능을 활용할 수 있다. 이와 같이, 하나의 파일 연산이 발생시키는 입출력들은 하나의 트랜잭션으로 취급되어 연산의 원자성을 보장할 수 있다. 하지만 모든 파일 연산을 각각 트랜잭션 처리할 때, 스토리지 장치(100)의 부하가 커질 수 있으므로, 파일 시스템(FS)은 예를 들어, fsync()와 같은 명시적 동기화 함수가 없을 경우에는 주기 별로 여러 개의 트랜잭션들을 한꺼번에 처리할 수 있다. 한편, 파일 시스템(FS)은 예를 들어, fsync() 함수와 같은 명시적 동기화 함수가 호출될 경우, 버퍼링 되어있는 파일 연산들 중, 해당 파일에 연관된 연산들만 골라 내어 해당 연산과 함께 트랜잭션 처리를 진행할 수 있다. 이때, 파일 연산 간의 상관 관계를 유지하기 위해 파일 시스템(FS)은 해당 상관 관계를 파일 시스템(FS) 내부에 유지할 수 있다.
도 8은 본 개시의 일 실시예에 따른 파일 시스템(FS)의 동작을 예시적으로 나타낸다.
도 3 및 도 8을 함께 참조하면, 파일 시스템(FS)은 새롭게 생성된 제3 파일(415)을 스토리지 장치(100)에 저장하기 위하여 제3 파일(415)에 대응하는 파일 정보를 메타 오브젝트(415a)로 맵핑하고, 제3 파일(415)과 관련된 파일 연산을 키-밸류 연산으로 변환할 수 있다. 구체적으로, 파일 시스템(FS)의 변환 모듈(220)은 제3 파일(415)의 파일 정보를 스토리지 장치(100)에 저장하기 위한 시스템 콜(81a), 예를 들어, creat("/pet/fish")을 키-밸류 연산(81b), 예를 들어, SET(meta)로 변환할 수 있다.
또한, 파일 시스템(FS)의 맵핑 모듈(210)은 제3 파일(415)의 정보를, 키(K5a)와 밸류(V5a)를 포함하는 메타 오브젝트(425a)로 맵핑할 수 있다. 이때, 메타 오브젝트(425a)의 키(K5a)는 부모의 아이노드 넘버인 50과 파일 이름인 'fish'를 포함하도록 "M:50:fish"로 할당될 수 있고, 메타 오브젝트(425a)의 밸류(V5a)는 제3 파일(415)의 파일 정보, 메타 데이터의 생성 시간 등을 포함할 수 있다.
도 9는 본 개시의 일 실시예에 따른 파일 시스템(FS)의 동작을 예시적으로 나타낸다.
도 3 및 도 9를 함께 참조하면, 파일 시스템(FS)은 새롭게 생성된 제3 파일(415)을 스토리지 장치(100)에 저장하기 위하여 제3 파일(415)의 콘텐츠를 데이터 오브젝트(415b)로 맵핑하고, 제3 파일(415)과 관련된 파일 연산을 키-밸류 연산으로 변환할 수 있다. 구체적으로, 파일 시스템(FS)의 변환 모듈(220)은 제3 파일(415)의 콘텐츠를 스토리지 장치(100)에 저장하기 위한 시스템 콜(82a), 예를 들어, write("/pet/fish", 4KB)을 키-밸류 연산(82b), 예를 들어, SET(data)로 변환할 수 있다.
또한, 파일 시스템(FS)의 맵핑 모듈(210)은 제3 파일(415)의 콘텐츠를, 키(K5b)와 밸류(V5b)를 포함하는 데이터 오브젝트(425b)로 맵핑할 수 있다. 이때, 데이터 오브젝트(425b)의 키(K5b)는 제3 파일(415)의 아이노드 넘버인 102를 포함하도록 "D:102"로 할당될 수 있다. 예를 들어, 데이터 오브젝트(425b)의 밸류(V5b)는 물고기에 대응하는 사진 또는 비디오 등의 데이터에 대응할 수 있다.
도 10 및 도 11은 본 개시의 일 실시예에 따른 파일 시스템(FS)의 동작을 예시적으로 나타낸다.
도 3, 도 10 및 도 11을 함께 참조하면, 파일 시스템(FS)은 'pet'과 관련된 제1 내지 제3 파일들(413, 414, 415)에 대응하는 오브젝트들을 스토리지 장치(100)로부터 검색하기 위하여 제1 내지 제3 파일들(413, 414, 415)의 검색과 관련된 파일 연산을 키-밸류 연산으로 변환할 수 있다. 구체적으로, 파일 시스템(FS)의 변환 모듈(220)은 서브 디렉토리(412)의 하위 콘텐츠들을 스토리지 장치(100)로부터 독출하기 위한 시스템 콜(83a), 예를 들어, readdir("/pet/")을 키-밸류 연산(83b), 예를 들어, ITERATE('M:50')로 변환할 수 있다. 파일 시스템(FS)은 키-밸류 연산(83b)에 대응하는 키-밸류 커맨드, 즉, ITERATE('M:50')을 스토리지 장치(100)에 제공할 수 있다. 이어서, 스토리지 장치(100)는 키에 'M:50'이 포함된 복수의 메타 오브젝트들(423a, 424a, 425a)을 호스트(200)에 리턴(return), 즉, 제공할 수 있다.
도 12는 본 개시의 일 실시예에 따른 호스트-스토리지 시스템(10b)을 나타낸다.
도 12를 참조하면, 호스트-스토리지 시스템(10b)은 도 1의 호스트-스토리지 시스템(10)의 일 구현 예에 대응할 수 있고, 도 1 내지 도 11을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다. 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 비휘발성 메모리(120)를 포함할 수 있다. 실시예에 따라, 스토리지 컨트롤러(110)는 컨트롤러, 디바이스 컨트롤러, 또는 메모리 컨트롤러로 지칭될 수도 있다. 이하에서는, 도 1 및 도 12를 함께 참조하여 설명하기로 한다.
스토리지 컨트롤러(110)는 호스트(200)로부터의 기입 커맨드(예를 들어, SET(DO))에 응답하여 비휘발성 메모리(120)에 데이터 오브젝트(DO)를 기입하도록 비휘발성 메모리(120)를 제어할 수 있다. 또한, 컨트롤러(110)는 호스트(200)로부터의 독출 커맨드(예를 들어, GET(DO))에 응답하여 비휘발성 메모리(120)에 저장된 데이터 오브젝트(DO)를 독출하도록 비휘발성 메모리(120)를 제어할 수 있다. 이와 같이, 스토리지 장치(100)는 일반적인 스토리지 장치와 같은 데이터 저장 및 독출 동작을 수행할 수 있다.
또한, 본 실시예에 따르면, 스토리지 컨트롤러(110)는 오브젝트 인덱싱 모듈(111) 및 트랜잭션 서포팅 모듈(112)을 포함할 수 있다. 예를 들어, 오브젝트 인덱싱 모듈(111) 및 트랜잭션 서포팅 모듈(112)은 소프트웨어로 구현될 수 있고, 비휘발성 메모리(120)에 저장될 수 있다. 스토리지 장치(100)에 전원이 인가되면, 오브젝트 인덱싱 모듈(111) 및 트랜잭션 서포팅 모듈(112)은 비휘발성 메모리(120)로부터 스토리지 컨트롤러(110)의 동작 메모리에 로딩될 수 있다.
도 13은 본 개시의 일 실시예에 따른 스토리지 컨트롤러(110)를 나타낸다.
도 13을 참조하면, 스토리지 컨트롤러(110)는 오브젝트 인덱싱 모듈(111), 트랜잭션 서포팅 모듈(112), 프로세서(113), 버퍼 메모리(114), FTL(Flash Translation Layer)(115), 호스트 인터페이스(116), 및 비휘발성 메모리 인터페이스(117)를 포함할 수 있고, 이들은 버스(118)를 통해 통신할 수 있다. 이하에서는 도 12 및 도 13을 함께 참조하여 설명하기로 한다.
프로세서(113)은 CPU(Central Processing Unit)나 마이크로 프로세서 등을 포함할 수 있으며, 스토리지 컨트롤러(110)의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(113)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드(quad) 코어 프로세서로 구현될 수 있다. 오브젝트 인덱싱 모듈(111), 트랜잭션 서포팅 모듈(112) 및 FTL(115)은 스토리지 컨트롤러(110)의 동작 메모리에 로딩될 수 있다. 예를 들어, 메모리는 SRAM, DRAM 등과 같은 휘발성 메모리 또는 플래시 메모리, PRAM 등과 같은 비휘발성 메모리로 구현될 수 있다.
프로세서(113)가 메모리에 로딩된 FTL(115)을 실행하는 것에 의해 비휘발성 메모리(120)에 대한 메타 오브젝트 또는 데이터 오브젝트에 대한 기입 및 리드 동작이 제어될 수 있다. FTL(115)은 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection) 등과 같은 여러 기능을 수행할 수 있다. 웨어-레벨링은 비휘발성 메모리(120) 내의 메모리 블록들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은 메모리 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거하는 방식을 통해 비휘발성 메모리(120) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
버퍼 메모리(114)는 비휘발성 메모리(120)에 기록될 메타 오브젝트 및 데이터 오브젝트 또는 비휘발성 메모리(120)로부터 리드되는 메타 오브젝트 및 데이터 오브젝트를 임시로 저장할 수 있다. 버퍼 메모리(114)는 스토리지 컨트롤러(110) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(110)의 외부에 배치되어도 무방하다.
호스트 인터페이스(116)는 호스트(200)와 키-밸류 커맨드 및 키-밸류 오브젝트를 송수신할 수 있다. 호스트(200)로부터 호스트 인터페이스(116)로 전송되는 키-밸류 오브젝트는 비휘발성 메모리(120)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(116)로부터 호스트(200)로 전송되는 키-밸류 오브젝트는 키-밸류 커맨드에 대한 응답 혹은 비휘발성 메모리(120)로부터 리드된 데이터 등을 포함할 수 있다.
비휘발성 메모리 인터페이스(117)는 비휘발성 메모리(120)에 기록될 데이터를 비휘발성 메모리(120)로 송신하거나, 비휘발성 메모리(120)로부터 리드된 데이터를 수신할 수 있다. 이러한 비휘발성 메모리 인터페이스(117)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
도 14는 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작을 나타내는 흐름도이다. 도 1 내지 도 13을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있고, 중복된 설명은 생략하기로 한다.
도 14를 참조하면, 단계 S110에서, 호스트(200)는 파일 또는 디렉토리를 키-밸류 오브젝트로 맵핑한다. 단계 S120에서, 호스트(200)는 파일 연산을 키-밸류 연산으로 변환한다. 실시예에 따라, 단계 S120은 단계 S110보다 먼저 수행될 수도 있고, 단계 S110과 단계 S120은 실질적으로 동시에 수행될 수도 있다. 단계 S130에서, 호스트(200)는 적어도 하나의 키-밸류 연산을 포함하는 트랜잭션을 관리한다. 단계 S140에서, 호스트(200)는 스토리지 장치(100)에 키-밸류 커맨드를 전송한다.
단계 S150에서, 스토리지 장치(100)는 키-밸류 오브젝트를 인덱싱한다. 단계 S160에서, 스토리지 장치(100)는 트랜잭션을 서포팅한다. 단계 S170에서, 스토리지 장치(100)는 트랜잭션에 따라, 비휘발성 메모리에 대한 독출 동작 및 기입 동작 등을 포함하는 메모리 동작을 수행한다. 단계 S180에서, 스토리지 장치(100)는 호스트(200)에 응답을 제공한다. 예를 들어, 응답은 키를 포함하거나 키 및 밸류를 모두 포함할 수 있다.
도 15는 본 개시의 일 실시예에 따른 스토리지 장치가 적용된 시스템(1000)을 나타낸다. 도 15의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 15의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 15를 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다. 일 실시예에서, 메인 프로세서(1100)는 도 1 내지 도 14를 참조하여 상술된 호스트(200)에 대응할 수 있다. 이에 따라, 메인 프로세서(1100)는 경량 파일 시스템을 포함할 수 있고, 경량 파일 시스템은 파일 데이터를 키-밸류 오브젝트로 맵핑하고, 파일 연산을 키-밸류 연산으로 변환하고, 키-밸류 오브젝트 및 키-밸류 연산을 기초로 트랜잭션을 관리할 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
일 실시예에서, 스토리지 장치(1300a, 1300b)는 도 1 내지 도 14를 참조하여 상술된 스토리지 장치(100)에 대응할 수 있다. 이에 따라, 스토리지 장치(1300a, 1300b)는 키-밸류 오브젝트를 인덱싱하는 장치 내 인덱싱 기술 및 키-밸류 오브젝트에 대한 트랜잭션 기능을 지원할 수 있다. 구체적으로, 스토리지 컨트롤러(1310a, 1310b)는 오브젝트 인덱싱 모듈(111) 및 트랜잭션 서포팅 모듈(112)을 포함할 수 있다. 또한, 비휘발성 메모리(1320a, 1320b)는 복수의 키-밸류 오브젝트들을 저장할 수 있고, 복수의 키-밸류 오브젝트들은 파일의 정보를 포함하는 메타 오브젝트 및 파일의 콘텐츠를 포함하는 데이터 오브젝트를 포함할 수 있다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. 사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keypad), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다. 디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다. 전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 키-밸류 스토리지 장치와 통신하는 호스트로서,
    어플리케이션; 및
    상기 어플리케이션에서 수신한 파일 데이터에 관련된 파일 또는 디렉토리를 상기 키-밸류 스토리지 장치에 제공하기 위해 상기 파일 또는 상기 디렉토리를 가공하는 파일 시스템을 포함하고,
    상기 파일 시스템은,
    상기 파일 또는 상기 디렉토리를, 상기 키-밸류 스토리지 장치에서 저장 가능한 키-밸류 오브젝트로 맵핑하는 맵핑 모듈;
    상기 어플리케이션에서 요청된 파일 연산을, 상기 키-밸류 스토리지 장치에서 수행 가능한 키-밸류 연산으로 변환하는 변환 모듈; 및
    상기 키-밸류 오브젝트 및 상기 키-밸류 연산에 관련된 트랜잭션을 관리하고, 상기 트랜잭션을 상기 키-밸류 스토리지 장치에 제공하는 트랜잭션 관리 모듈을 포함하고,
    상기 맵핑 모듈은,
    상기 파일 또는 상기 디렉토리를 메타 오브젝트 또는 데이터 오브젝트로 추상화하는 것을 특징으로 하는 호스트.
  2. 제1항에 있어서, 상기 맵핑 모듈은,
    상기 파일의 정보 또는 상기 디렉토리를 상기 메타 오브젝트로 맵핑하고,
    상기 파일의 콘텐츠를 상기 데이터 오브젝트로 맵핑하는 것을 특징으로 하는 호스트.
  3. 제1항에 있어서, 상기 맵핑 모듈은,
    상기 파일 또는 상기 디렉토리의 아이노드를 기반으로 상기 메타 오브젝트의 제1 키 및 상기 데이터 오브젝트의 제2 키를 할당하는 것을 특징으로 하는 호스트.
  4. 제3항에 있어서, 상기 맵핑 모듈은,
    상기 메타 오브젝트의 상기 제1 키가 부모의 아이노드 넘버 및 파일 이름을 포함하도록 상기 제1 키를 생성하고,
    상기 데이터 오브젝트의 상기 제2 키가 상기 파일의 아이노드 넘버를 포함하도록 상기 제2 키를 생성하는 것을 특징으로 하는 호스트.
  5. 제1항에 있어서, 상기 변환 모듈은,
    상기 파일 연산에 대응하는 시스템 콜을 상기 키-밸류 연산으로 변환하고,
    상기 키-밸류 연산은 메타 오브젝트 또는 데이터 오브젝트에 대한 키-밸류 커맨드를 포함하는 것을 특징으로 하는 호스트.
  6. 제5항에 있어서, 상기 변환 모듈은,
    상기 파일 연산에 대응하는 상기 시스템 콜을 복수의 키-밸류 연산들로 변환하는 것을 특징으로 하는 호스트.
  7. 제6항에 있어서, 상기 트랜잭션 관리 모듈은,
    상기 시스템 콜에 대응하는 상기 복수의 키-밸류 연산들을 하나의 트랜잭션으로 관리하는 것을 특징으로 하는 호스트.
  8. 키-밸류 스토리지 장치로서,
    복수의 키-밸류 오브젝트들을 저장하고, 상기 복수의 키-밸류 오브젝트들은 파일의 정보를 포함하는 메타 오브젝트 및 상기 파일의 콘텐츠를 포함하는 데이터 오브젝트를 포함하는, 비휘발성 메모리; 및
    호스트로부터 키-밸류 오브젝트를 수신하고, 수신한 상기 키-밸류 오브젝트를 기초로 상기 비휘발성 메모리를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는,
    상기 키-밸류 오브젝트를 인덱싱하는 오브젝트 인덱싱 모듈; 및
    상기 키-밸류 오브젝트에 대한 트랜잭션을 지원하는 트랜잭션 서포팅 모듈을 포함하고,
    상기 스토리지 장치는 상기 호스트와 키-밸류 인터페이스에 따라 통신하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  9. 제8항에 있어서, 상기 스토리지 컨트롤러는,
    상기 호스트로부터 키-밸류 커맨드를 더 수신하고, 상기 키-밸류 오브젝트에 대해 상기 키-밸류 커맨드에 대응하는 키-밸류 연산을 수행하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  10. 제8항에 있어서,
    상기 트랜잭션은, 하나의 시스템 콜에 대응하는 복수의 키-밸류 연산들을 포함하고,
    상기 트랜잭션 서포팅 모듈은, 상기 트랜잭션에 따라 상기 복수의 키-밸류 연산들을 지원하는 것을 특징으로 하는 키-밸류 스토리지 장치.
KR1020220034937A 2021-06-24 2022-03-21 키-밸류 스토리지 장치, 호스트, 및 호스트-스토리지 시스템 KR20230000412A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210688337.0A CN115525604A (zh) 2021-06-24 2022-06-16 键-值存储设备、主机和主机存储系统
US17/807,933 US20220414059A1 (en) 2021-06-24 2022-06-21 Key-value storage device, host, and host-storage system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210082336 2021-06-24
KR20210082336 2021-06-24

Publications (1)

Publication Number Publication Date
KR20230000412A true KR20230000412A (ko) 2023-01-02

Family

ID=84925502

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220034937A KR20230000412A (ko) 2021-06-24 2022-03-21 키-밸류 스토리지 장치, 호스트, 및 호스트-스토리지 시스템

Country Status (1)

Country Link
KR (1) KR20230000412A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117521149A (zh) * 2024-01-03 2024-02-06 中电信量子科技有限公司 基于量子密码设备的文件系统流加解密方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117521149A (zh) * 2024-01-03 2024-02-06 中电信量子科技有限公司 基于量子密码设备的文件系统流加解密方法及系统
CN117521149B (zh) * 2024-01-03 2024-03-19 中电信量子科技有限公司 基于量子密码设备的文件系统流加解密方法及系统

Similar Documents

Publication Publication Date Title
US11989160B2 (en) Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US10067684B2 (en) File access method and apparatus, and storage device
US9778860B2 (en) Re-TRIM of free space within VHDX
US9430492B1 (en) Efficient scavenging of data and metadata file system blocks
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
US11921639B2 (en) Method for caching data, a host device for caching data, and a storage system for caching data
US20220221987A1 (en) Computing system including host and storage system
KR20230000412A (ko) 키-밸류 스토리지 장치, 호스트, 및 호스트-스토리지 시스템
KR20210012085A (ko) 저널 리플레이를 개선하기 위한 스토리지 장치, 그것의 동작 방법, 및 스토리지 장치를 포함하는 전자 장치
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
EP3436973A1 (en) File system support for file-level ghosting
US11907568B2 (en) Storage controller, storage device, and operation method of storage device
KR102509987B1 (ko) 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템
US20230168841A1 (en) Synchronous write method and device, storage system and electronic device
US20220414059A1 (en) Key-value storage device, host, and host-storage system
US10162526B2 (en) Logical address history management in memory device
TWI741357B (zh) 用於記憶體操作之運算系統及其操作方法
US20220291864A1 (en) Operation method of storage device configured to support multi-stream
US20230141936A1 (en) Secure processor, operating method thereof, and storage device including same
CN117008826A (zh) 数据压缩方法和装置
CN117130551A (zh) 存储装置及其数据访问方法