KR102245113B1 - 저장 제어 디바이스, 저장 제어 방법, 및 기록 매체 - Google Patents

저장 제어 디바이스, 저장 제어 방법, 및 기록 매체 Download PDF

Info

Publication number
KR102245113B1
KR102245113B1 KR1020190011938A KR20190011938A KR102245113B1 KR 102245113 B1 KR102245113 B1 KR 102245113B1 KR 1020190011938 A KR1020190011938 A KR 1020190011938A KR 20190011938 A KR20190011938 A KR 20190011938A KR 102245113 B1 KR102245113 B1 KR 102245113B1
Authority
KR
South Korea
Prior art keywords
data
data block
storage
write
unit
Prior art date
Application number
KR1020190011938A
Other languages
English (en)
Other versions
KR20190094108A (ko
Inventor
유스케 스즈키
유스케 구라사와
노리히데 구보타
요시히토 곤타
마리노 가지야마
유지 다나카
도시오 이가
가즈야 다케다
다케시 와타나베
Original Assignee
후지쯔 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20190094108A publication Critical patent/KR20190094108A/ko
Application granted granted Critical
Publication of KR102245113B1 publication Critical patent/KR102245113B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/064Management of blocks
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • G06F2003/0691
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

저장 제어 디바이스는 메타 정보 및 맵 정보를 저장하도록 구성된 메모리 - 메타 정보는 스토리지를 이용하는 정보 프로세싱 디바이스로부터의 데이터를 식별하기 위한 논리적 어드레스를, 스토리지 상의 데이터의 배열을 위하여 이용된 데이터 블록을 식별하기 위한 데이터 블록 식별자와 연관시키고, 헤더 영역 및 페이로드 영역 및 데이터의 추가적 기입의 순서를 표시하는 인덱스를 포함하고, 맵 정보는 데이터 블록 식별자를, 스토리지 상의 물리적 위치를 표시하는 물리적 식별자와 연관시킴 -; 및 물리적 식별자 및 인덱스에 기초하여, 데이터 블록 및 페이로드 영역에서의 기입 위치를 특정하고, 특정된 데이터 블록에서 데이터를 기입하고, 오프셋 및 데이터 길이를 포함하는 데이터 유닛 헤더를, 인덱스에 의해 지정된 위치에서 기입하기 위한 기입 제어를 수행하는 프로세서를 포함한다.

Description

저장 제어 디바이스, 저장 제어 방법, 및 기록 매체{STORAGE CONTROL DEVICE, STORAGE CONTROL METHOD, AND RECORDING MEDIUM}
본원에서 논의된 실시형태는 저장 제어 디바이스, 저장 제어 방법, 및 저장 제어 프로그램에 관련된다.
최근, 저장 디바이스의 저장 매체는 하드 디스크 드라이브(hard disk drive; HDD)로부터, 더 높은 액세스 속력을 가지는 솔리드 스테이트 드라이브(solid state drive; SSD)와 같은 플래시 메모리(flash memory)로 이전되었다. SSD는 메모리 셀 상에서 직접적으로 겹쳐쓰기(overwriting)를 수행하는 것을 불가능하게 하고, 예를 들어, 데이터가 1 메가바이트(megabyte; MB) 크기 블록의 단위로 소거된 후에 데이터가 기입(write)되게 한다.
이러한 이유로, 블록에서의 데이터의 일부를 업데이트할 경우, 블록에서의 다른 데이터는 저장되고, 블록은 소거(erase)되고, 그 다음으로, 저장된 데이터 및 업데이트 데이터가 기입된다. 그러므로, 작은 데이터를 업데이트하는 프로세싱은 블록의 크기와 비교하여 느리다. SSD는 기입의 횟수에 대한 상한을 가진다. 그러므로, SSD는 바람직하게는, 블록의 크기와 비교하여 작은 데이터를 업데이트하는 것을 가능한 한 많이 회피한다. 그러므로, 블록에서의 데이터의 일부를 업데이트할 경우, 블록에서의 다른 데이터 및 업데이트 데이터는 새로운 블록에서 기입된다.
관련된 기술은 일본 특허 공개 제2016-21246호 및 국제 공개 팜플렛 제WO 2016/185573호에서 개시되어 있다.
SSD를 이용하는 저장 디바이스는, 블록에서의 데이터의 일부를 업데이트할 경우, 블록에서의 다른 데이터 및 업데이트 데이터를 새로운 블록에서 기입함으로써 기입의 횟수를 감소시킬 수 있을 뿐만 아니라, 기입의 횟수를 추가로 감소시킬 수 있는 데이터 구조를 요구한다.
기입의 횟수를 감소시킬 수 있는 데이터 구조가 제공될 수도 있다.
실시형태들의 양태에 따르면, 저장 제어 디바이스는 메타 정보(meta information) 및 맵 정보(map information)를 저장하도록 구성된 메모리 - 메타 정보는 스토리지(storage)를 이용하는 정보 프로세싱 디바이스로부터의 데이터를 식별하기 위한 논리적 어드레스를, 스토리지 상의 데이터의 배열을 위하여 이용되는 데이터 블록을 식별하기 위한 데이터 블록 식별자와 연관시키고, 복수의 인덱스들에 대응하는 데이터에 관련된 헤더 정보를 저장하기 위한 용량을 갖는 헤더 영역(header area), 및 복수의 인덱스들에 대응하는 데이터 및 데이터 블록에서의 데이터의 추가적 기입(additional writing)의 순서를 표시하는 인덱스를 저장하기 위한 용량을 갖는 페이로드 영역(payload area)을 포함하고, 맵 정보는 데이터 블록 식별자를, 데이터 블록에 대한 스토리지 상의 물리적 위치를 표시하는 물리적 식별자와 연관시킴 -; 및 데이터 블록의 물리적 식별자 및 인덱스에 기초하여, 데이터 블록, 및 데이터 블록의 페이로드 영역에서의 기입 위치를 특정하고; 특정된 데이터 블록에서 데이터를 기입하고; 데이터 블록에서의 기입 위치를 표시하는 오프셋 및 데이터의 길이를 표시하는 데이터 길이를 포함하는 데이터 유닛 헤더를, 헤더 영역에서의 인덱스에 의해 지정되는 위치에서 기입하기 위한 기입 제어를 수행하도록 구성된 프로세서를 포함한다.
도 1은 실시형태에 따른 저장 디바이스의 저장 구성을 예시하는 도면이다;
도 2는 실시형태에 따른 저장 제어 디바이스에 의해 이용된 메타데이터(metadata)를 설명하기 위한 도면이다;
도 3은 데이터 블록을 설명하기 위한 도면이다;
도 4는 데이터 블록 맵을 설명하기 위한 도면이다;
도 5는 물리적 영역을 설명하기 위한 도면이다;
도 6은 RAID 유닛의 추가적 기입을 설명하기 위한 도면이다;
도 7은 RAID 유닛의 집합적 기입을 설명하기 위한 도면이다;
도 8a는 논리적-물리적 메타의 포맷을 예시하는 도면이다;
도 8b는 데이터 유닛 헤더의 포맷을 예시하는 도면이다;
도 8c는 데이터 블록 헤더의 포맷을 예시하는 도면이다;
도 9는 논리적-물리적 메타, 데이터 유닛 헤더, 및 참조 정보 사이의 관계를 예시하는 도면이다;
도 10a 및 도 10b는 용량 효율에서의 개선을 설명하기 위한 도면들이다;
도 11은 실시형태에 따른 정보 프로세싱 시스템의 구성을 예시하는 도면이다;
도 12는 중복(duplication)을 갖지 않는 데이터를 기입하는 프로세싱의 시퀀스를 예시하는 도면이다;
도 13은 추가적 기입 위치를 결정하기 위한 프로세싱의 흐름을 예시하는 플로우차트이다;
도 14는 데이터 유닛 헤더 및 데이터 블록 헤더를 업데이트하는 프로세싱의 흐름을 예시하는 플로우차트이다;
도 15는 중복을 갖는 데이터를 기입하는 프로세싱의 시퀀스를 예시하는 도면이다;
도 16은 판독 프로세싱의 시퀀스를 예시하는 도면이다; 그리고
도 17은 실시형태에 따른 저장 제어 프로그램을 실행하는 저장 제어 디바이스의 하드웨어 구성을 예시하는 도면이다.
이하, 본 출원에 의해 개시된 저장 제어 디바이스, 저장 제어 방법, 및 저장 제어 프로그램의 실시형태들은 도면들을 참조하여 상세하게 설명될 것이다. 실시형태들은 개시된 기술을 제한하지 않는다.
[실시형태]
먼저, 실시형태에 따른 저장 디바이스의 저장 구성이 설명될 것이다. 도 1은 실시형태에 따른 저장 디바이스의 저장 구성을 예시하는 도면이다. 도 1에서 예시된 바와 같이, 실시형태에 따른 저장 디바이스는 저가 디스크들의 중복적 배열들(redundant arrays of inexpensive disks; RAID)에 기초한 풀(pool)(3a)을 관리하기 위하여 복수의 SSD들을 이용한다. 실시형태에 따른 저장 디바이스는 복수의 풀들(3a)을 포함한다.
풀들(3a)은 가상화 풀(virtualization pool) 및 티어드 풀(tiered pool)을 포함한다. 가상화 풀은 하나의 티어(tier)(3b)를 포함하고, 티어드 풀은 2 개 이상의 티어들(3b)을 포함한다. 티어(3b)는 하나 이상의 드라이브 그룹(drive group)들(3c)을 포함한다. 드라이브 그룹들(3c)의 각각은 SSD들(3d)의 그룹이고, 6 내지 24 개의 SSD들(3d)을 포함한다. 예를 들어, 하나의 스트라이프(stripe)를 저장하는 6 개의 SSD들(3d) 중의 3 개는 사용자 데이터(이하, 간단하게 "데이터"로서 지칭됨)를 저장하기 위하여 이용되고, 2 개는 패리티 저장(parity storage)을 위하여 이용되고, 1 개는 핫 스페어(hot spare)를 위하여 이용된다. 드라이브 그룹들(3c)의 각각은 25 개 이상의 SSD들(3d)을 포함할 수도 있다.
다음으로, 실시형태에 따른 저장 제어 디바이스에 의해 이용된 메타데이터가 설명될 것이다. 여기서, 메타데이터는 저장 디바이스에서 저장된 데이터를 관리하기 위하여 저장 제어 디바이스에 의해 이용된 데이터이다.
도 2는 실시형태에 따른 저장 제어 디바이스에 의해 이용된 메타데이터를 설명하기 위한 도면이다. 도 2에서 예시된 바와 같이, 메타데이터는 논리적-물리적 메타, 데이터 블록 맵, 및 참조 정보를 포함한다.
논리적-물리적 메타는 논리적 번호를 데이터 블록 번호 및 인덱스와 연관시키는 정보이다. 논리적 번호는 저장 디바이스를 이용하는 정보 프로세싱 디바이스에 의해 데이터를 식별하기 위하여 이용된 논리적 어드레스이고, 논리적 유닛 번호(logical unit number; LUN) 및 논리적 블록 어드레스(logical block address; LBA)의 조합이다. 논리적 블록의 크기는 중복제거(deduplication)를 위한 단위 크기인 8 KB(킬로바이트들)이다. 정보 프로세싱 디바이스(호스트)로부터 저장 디바이스로의 커맨드(command)에 의한 프로세싱은 512 바이트들의 단위이다. 그러므로, 본 실시형태에서는, 중복제거를 더 효율적으로 하기 위하여, 512 바이트들의 정수 배에 대응하는 8 KB(8192 바이트들)의 블록들의 세트는 여기에서 하나의 논리적 블록인 것으로 가정된다. 데이터 블록 번호는 논리적 번호에 의해 식별된 8 KB의 데이터를 저장하는 데이터 블록을 식별하기 위한 번호이다. 인덱스는 데이터 블록에서의 데이터 번호이다.
도 3은 데이터 블록을 설명하기 위한 도면이다. 도 3에서, 데이터 블록 번호 (DB #)는 "101"이다. 도 3에서 예시된 바와 같이, 데이터 블록의 크기는 384 KB이다. 데이터 블록은 8 KB의 헤더 영역 및 376 KB의 페이로드 영역을 가진다. 페이로드 영역은 압축된 데이터를 저장하기 위한 영역인 데이터 유닛을 가진다. 데이터 유닛은 페이로드 영역에서 추가적으로 기입된다.
헤더 영역은 192 바이트들의 데이터 블록 헤더, 및 40 바이트들의 200 개 이하의 데이터 유닛 헤더들을 포함한다. 데이터 블록 헤더는 데이터 블록에 관한 정보를 저장하기 위한 영역이다. 데이터 블록 헤더는 예를 들어, 데이터 유닛의 추가적 기입이 가능한지 아닌지 여부에 관한 정보, 추가적으로 기입되는 데이터 유닛들의 수, 및 데이터 유닛이 다음에 추가적으로 기입되어야 하는 위치를 포함한다.
데이터 유닛 헤더는 페이로드 영역에서 포함된 데이터 유닛에 대응한다. 데이터 유닛 헤더는 대응하는 데이터 유닛에서 저장된 데이터의 인덱스에 대응하는 위치에 있다. 데이터 유닛 헤더는 오프셋(offset), 길이, 및 사이클릭 리던던시 체크(cyclic redundancy check; CRC)를 포함한다. 오프셋은 대응하는 데이터 유닛의 데이터 블록에서의 기입 시작 위치(선두 위치)를 표시한다. 길이는 대응하는 데이터 유닛의 길이를 표시한다. CRC는 대응하는 데이터 유닛의 압축 전의 에러 검출 코드이다.
도 2에서의 논리적-물리적 메타에서, 예를 들어, "1-1"의 논리적 번호를 가지는 데이터는 "B1"의 데이터 블록 번호를 가지는 데이터 블록에서 먼저 저장된다. 여기서, "1-1"은 LUN이 1이고 LBA가 1인 것을 표시한다. 동일한 데이터는 중복제거로 인해 동일한 데이터 블록 번호 및 동일한 인덱스를 가진다. 도 2에서, "1-2", "2-1", 및 "2-4"에 의해 식별된 데이터들은 서로 동일하다. 그러므로, "1-2", "2-1", 및 "2-4"는 데이터 블록 번호 "B2" 및 인덱스 "2"와 연관된다.
데이터 블록 맵은 데이터 블록 번호를 물리적 번호와 연관시키기 위한 테이블(table)이다. 물리적 번호는 드라이브 그룹(DG)(3c)을 식별하기 위한 DG 번호(DG #), RAID 유닛(RU)을 식별하기 위한 RU 번호(RU #), 및 슬롯(slot)을 식별하기 위한 슬롯 번호(슬롯 #)의 조합이다. RAID 유닛(집합적 기입 단위 영역)은 데이터가 저장 디바이스에서 기입될 경우에 주 메모리 상에서 버퍼링된 집합적 기입 단위 영역이고, 복수의 데이터 블록들은 RAID 유닛에서 배열될 수도 있다. 데이터는 RAID 유닛의 단위로 수집되고, 저장 디바이스에서 추가적으로 기입된다. RAID 유닛의 크기는 예를 들어, 24 메가바이트들(MB)이다. RAID 유닛에서, 각각의 데이터 블록은 슬롯을 이용하여 관리된다.
도 4는 데이터 블록 맵을 설명하기 위한 도면이다. 도 4는 "1"의 DG 번호(DG #1) 및 "1"의 RU 번호(RU #1)를 가지는 RAID 유닛에 관한 데이터 블록 맵을 예시한다. 도 4에서 예시된 바와 같이, RAID 유닛의 크기는 24 MB이고, 데이터 블록의 크기는 384 KB이다. 그러므로, 슬롯들의 수는 64이다.
도 4는 데이터 블록이 데이터 블록의 어드레스의 오름차순으로 각각의 슬롯에 할당되는 예를 예시한다. 데이터 블록 #101은 슬롯 #1에서 저장되고, 데이터 블록 #102는 슬롯 #2에서 저장되고, ... 그리고 데이터 블록 #164는 슬롯 #64에서 저장된다.
도 2의 데이터 블록 맵에서, 예를 들어, 데이터 블록 번호 "B1"은 물리적 번호 "1-1-1"과 연관된다. 데이터 블록 번호 "B1"의 데이터는 압축되고, 풀(3a)의 데이터 그룹 #1에서 "1"의 RU 번호를 가지는 RAID 유닛에서 "1"의 슬롯 번호를 가지는 슬롯에서 저장된다. 도 2의 풀(3a)에서, 티어(3b) 및 그 슬롯은 생략된다.
참조 정보는 인덱스, 물리적 번호, 및 참조 카운터를 서로 연관시킨다. 참조 카운터는 인덱스 및 물리적 번호에 의해 식별된 데이터의 중복들의 수이다. 도 2에서, 인덱스는 물리적 번호 내에 포함될 수도 있다.
도 5는 물리적 영역을 설명하기 위한 도면이다. 도 5에서 예시된 바와 같이, 논리적-물리적 메타는 주 메모리 및 스토리지(storage) 양자에서 저장된다. 논리적-물리적 메타의 오직 일부는 주 메모리에서 저장된다. 논리적-물리적 메타에 대하여, 오직 하나의 페이지(4 KB)가 주 메모리에서 각각의 LUN에 대하여 저장된다. LUN 및 LBA의 조합에 대응하는 페이지가 주 메모리 상에 있지 않을 경우, LUN의 페이지는 페이지 아웃(page out)되고, LUN 및 LBA의 조합에 대응하는 페이지는 스토리지로부터 주 메모리로 판독된다.
스토리지에서, 32 GB의 논리적-물리적 메타 영역(논리적-물리적 메타가 저장되는 영역)(3e)은 4 테라바이트들(terabytes; TB)의 각각의 용적(volume)에 대하여 저장된다. 논리적-물리적 메타 영역(3e)은 동적 영역으로부터 할당되고, LUN을 생성할 시에 고정된 영역이 된다. 여기서, 동적 영역은 풀(3a)로부터 동적으로 할당된 영역이다. 논리적-물리적 메타 영역(3e)은 가비지 수집(garbage collection; GC)의 대상이 아니다. RAID 유닛은 데이터가 스토리지에서 추가적으로 기입될 때에 동적 영역으로부터 할당된다. 실제적으로, RAID 유닛은 스토리지에서 데이터를 기입하기 전에 데이터를 일시적으로 저장하는 기입 버퍼에서 데이터를 추가적으로 기입할 시에 할당된다. RAID 유닛이 저장되는 데이터 유닛 영역(3f)은 GC의 대상이다.
도 6은 RAID 유닛의 추가적 기입을 설명하기 위한 도면이다. 도 6에서 예시된 바와 같이, 8 KB의 기입 I/O(스토리지에서 데이터를 기입하기 위한 명령)가 LUN #1에서 수신될 때, 데이터 유닛 헤더는 기입 버퍼 상의 데이터 블록의 헤더 영역에서 기입되고, 데이터는 압축되고 페이로드 영역에서 기입되고, 데이터 블록 헤더는 업데이트된다. 그 후에, 8 KB의 기입 I/O가 LUN #2에서 수신될 때, 도 6의 예에서, 데이터 유닛 헤더는 동일한 데이터 블록의 헤더 영역에서 추가적으로 기입되고, 데이터는 압축되고 페이로드 영역에서 추가적으로 기입되고, 데이터 블록 헤더는 업데이트된다.
그 다음으로, 기입 버퍼에서 확보된 데이터 블록의 용량에 대응하는 저장 영역에서, 데이터 블록에서의 헤더 영역 또는 페이로드 영역이 가득 차게 될 때(이용가능한 비어 있는 영역이 없음), 데이터는 그 후에 데이터 블록에서 추가적으로 기입되지 않는다. 그 다음으로, 기입 버퍼에서의 RAID 유닛의 모든 데이터 블록들이 가득 차게 될 때(이용가능한 비어 있는 영역이 없음), 기입 버퍼의 내용들은 스토리지에서 기입된다. 그 후에, RAID 유닛에 할당된 기입 버퍼의 저장 영역은 해방(release)된다. 도 6에서, DG #1 및 RU #15의 RAID 유닛들은 동적 영역으로부터 할당된다.
LUN #1로의 기입 I/O는 논리적-물리적 메타의 LUN #1에 대응하는 영역에 반영되고, LUN #2로의 기입 I/O는 논리적-물리적 메타의 LUN #2에 대응하는 영역에 반영된다. 기입 I/O의 데이터에 관한 참조 카운트는 업데이트되고, 기입 I/O는 참조 정보에 반영된다.
RU #15에 관한 RU 정보 #15에서 포함된 총 데이터 유닛 카운트(total data unit count; TDUC) 및 GC 데이터 유닛 카운트(GC data unit count; GDUC)가 업데이트되고, 기입 I/O는 가비지 미터(garbage meter)에 반영된다. 여기서, 가비지 미터는 RU 정보에서 포함된 GC-관련된 정보이다. TDUC는 RU에서의 데이터 유닛들의 총 수이고, 데이터 유닛이 기입될 때에 업데이트된다. GDUC는 RU에서의 무효 데이터 유닛들의 수이고, 참조 카운터가 업데이트될 때에 업데이트된다.
데이터 블록 맵에서, DG #1, RU #15, 및 슬롯 #1은 DB #101과 연관되고, 기입 I/O는 데이터 블록 맵에 반영된다.
도 7은 RAID 유닛의 집합적 기입을 설명하기 위한 도면이다. 도 7에서 예시된 바와 같이, 데이터 블록들은 기입 버퍼에서 버퍼링되고, RAID 유닛의 단위로 수집되고, 스토리지에서 기입된다. 예를 들어, 데이터 블록 #1은 하나의 스트라이프를 저장하는 6 개의 SSD들(3d)에서 기입된다. 도 7에서, P 및 Q는 각각 패리티를 나타내고, H는 핫 스페어를 나타낸다. 데이터 블록 #1은 매 128 바이트들에 대하여 도 7에서 "0", "1",..., 및 "14"의 영역들에서 기입된다.
도 8a는 논리적-물리적 메타의 포맷을 예시하는 도면이다. 도 8a에서 예시된 바와 같이, 32 바이트들의 논리적-물리적 메타는 1 바이트의 스테이터스(status), 1 바이트의 데이터 유닛 인덱스, 2 바이트들의 체크섬(checksum), 2 바이트들의 노드 No., 및 6 바이트들의 BID를 포함한다. 32 바이트들의 논리적-물리적 메타는 8 바이트들의 데이터 블록 No.를 더 포함한다.
스테이터스는 논리적-물리적 메타의 상태를 표시한다. 유효 및 무효 상태들이 있다. 유효 상태는 논리적-물리적 메타가 대응하는 LBA에 이미 할당되었다는 것을 의미한다. 무효 상태는 논리적-물리적 메타가 대응하는 LBA에 할당되지 않았다는 것을 의미한다. 데이터 유닛 인덱스는 인덱스이다. 체크섬은 대응하는 데이터의 에러 코드 검출 값이다. 노드 No.는 저장 디바이스(노드)를 식별하기 위한 번호이다. BID는 블록 ID(위치 정보), 즉, LBA이다. 데이터 블록 No.는 데이터 블록 번호이다. 예약됨은 모든 비트들이 미래의 확장을 위하여 0인 것을 표시한다.
도 8b는 데이터 유닛 헤더의 포맷을 예시하는 도면이다. 도 8b에서 예시된 바와 같이, 40 바이트들의 데이터 유닛 헤더는 1 바이트의 데이터 유닛 스테이터스, 2 바이트들의 체크섬, 및 2 바이트들의 오프셋 블록 카운트를 포함한다. 40 바이트들의 데이터 유닛 헤더는 2 바이트들의 압축 바이트 크기 및 32 바이트들의 CRC를 더 포함한다.
데이터 유닛 스테이터스는 데이터 유닛의 추가적 기입이 가능한지 아닌지 여부를 표시한다. 데이터 유닛 헤더에 대응하는 데이터 유닛이 없을 경우, 추가적 기입이 가능하다. 데이터 유닛 헤더에 대응하는 데이터 유닛이 있을 경우, 추가적 기입이 불가능하다. 체크섬은 대응하는 데이터 유닛의 에러 코드 검출 값이다.
오프셋 블록 카운트는 대응하는 데이터 유닛의 페이로드 영역의 선두로부터의 오프셋이다. 오프셋 블록 카운트는 블록들의 수에 의해 나타내어진다. 그러나, 여기에서의 블록은 SSD의 소거 유닛의 블록이 아니라, 512 바이트들의 블록이다. 이하, 512 바이트들의 블록은 512 바이트들의 블록을 SSD의 소거 유닛의 블록과 구별하기 위하여 작은 블록으로서 지칭된다. 압축 바이트 크기는 압축 후의 대응하는 데이터의 크기이다. CRC는 대응하는 데이터 유닛의 에러 검출 코드이다.
도 8c는 데이터 블록 헤더의 포맷을 예시하는 도면이다. 도 8c에서 예시된 바와 같이, 192 바이트들의 데이터 블록 헤더는 1 바이트의 데이터 블록 풀 플래그(data block full flag) 및 1 바이트의 기입 데이터 유닛 카운트를 포함한다. 192 바이트들의 데이터 블록 헤더는 1 바이트의 다음 데이터 유닛 헤더 인덱스, 8 바이트들의 다음 기입 블록 오프셋, 및 8 바이트들의 데이터 블록 No.를 포함한다.
데이터 블록 풀 플래그는 데이터 유닛의 추가적 기입이 가능한지 아닌지 여부를 표시하는 플래그이다. 데이터 블록의 남아 있는 기입 용량이 문턱 값 이상이고 데이터 유닛을 추가적으로 기입하기 위한 충분한 비어 있는 용량이 있을 경우, 데이터 유닛의 추가적 기입이 가능하다. 한편, 데이터 블록의 남아 있는 기입 용량이 문턱 값 미만이고 데이터 유닛을 추가적으로 기입하기 위한 충분한 비어 있는 용량이 없을 경우, 데이터 유닛의 추가적 기입이 불가능하다.
기입 데이터 유닛 카운트는 데이터 블록에서 추가적으로 기입된 데이터 유닛들의 수이다. 다음 데이터 유닛 헤더 인덱스는 다음으로 기입되어야 할 데이터 유닛 헤더의 인덱스이다. 다음 기입 블록 오프셋은 다음으로 기입되어야 할 데이터 유닛의 페이로드 영역의 선두로부터의 오프셋 위치이다. 유닛은 작은 블록들의 수이다. 데이터 블록 No.는 슬롯에 할당된 데이터 블록 번호이다.
도 9, 도 10a, 및 도 10b는 실시형태에 따른 메타데이터 시스템의 특성들을 설명하기 위한 도면들이다. 도 9는 논리적-물리적 메타, 데이터 유닛 헤더, 및 참조 정보 사이의 관계를 예시하는 도면이다. 도 9에서 예시된 바와 같이, 실시형태에 따른 메타데이터 시스템에서는, 논리적-물리적 메타, 데이터 유닛 헤더, 및 참조 정보가 이용된다. 데이터 유닛 헤더의 저장 위치는 논리적-물리적 메타의 DB # 및 인덱스에 의해 특정된다. 데이터 블록에서의 데이터 유닛의 위치는 데이터 유닛 헤더의 오프셋 및 길이로부터 특정된다.
동일한 복수의 데이터들이 논리적-물리적 메타에서 저장될 경우, 동일한 복수의 데이터들은 중복제거 기능에 의해 하나로 수집되고, 중복들의 수는 참조 카운터(reference counter; RC)로서 카운팅된다. 도 9에서, DG #1의 RU #2에서 저장된 DB #102의 인덱스들 "1" 및 "2"의 각각의 데이터는 2 개의 위치들로부터 참조된다. 이 때, 인덱스들 "1" 및 "2"의 각각의 참조 카운터는 "2"이다. 인덱스들 "1" 및 "2"의 데이터는 유효 데이터이다. 인덱스들 "3" 및 "4"의 데이터는 "0"의 참조 카운터를 가지기 때문에 무효 데이터이다.
도 10a 및 도 10b는 용량 효율에서의 개선을 설명하기 위한 도면들이다. 도 10a 및 도 10b는 8 KB의 데이터가 압축되지 않으면서 기입될 경우를 예시한다. LUN/LBA에 의해 지정된 데이터는 작은 블록의 단위로 데이터 유닛에서 기입된다. 이러한 이유로, 도 10a는 비-압축 데이터 및 CRC가 페이로드 영역에서 팩킹(pack)되고 16 개의 작은 블록들이 데이터 유닛에서 팩킹되는 경우를 예시한다. 데이터 유닛 헤더는 CRC를 포함하지 않고, 그러므로, 32 바이트들의 크기를 가진다. 전체 데이터 블록은 384 KB의 저장 용량, 2 KB의 헤더 영역 및 382 KB의 페이로드 영역을 가진다.
이 경우, 비-압축의 경우의 페이로드 영역의 이용 용량은 LUN/LBA에 의해 지정된 512 바이트들 x 16 개의 작은 블록들 + CRC 32 바이트들 = 8224 바이트들이다. 그러나, SSD에 대한 커맨드는 512 바이트들의 1 이상의 정수 배에 의해 지정된다. 그러므로, 8224 바이트들을 판독하기 위한 커맨드는 512 바이트들 x 17 개의 작은 블록들 = 8704 바이트들이다. 하나의 데이터 유닛의 페이로드 영역은 최대로 8704 바이트들로 설정된다. 즉, 예를 들어, 8704 - 8224 = 480 바이트들의 저장 영역은 이용되지 않고 낭비된다. 비-압축 데이터 유닛들의 수가 증가할수록, 480 바이트들의 정수 배의 저장 영역이 낭비된다.
한편, 도 10b에서 예시된 바와 같이, CRC가 데이터 유닛 헤더 내에 포함될 경우, 512 바이트들 x 16 개의 작은 블록들 = 8192 바이트들의 데이터가 페이로드 영역에서 배열된다. 즉, 예를 들어, 하나의 데이터 유닛의 페이로드 영역은 최대로 8192 바이트들로 설정될 수도 있다. 그러므로, 480 바이트들의 전술된 낭비는 회피될 수도 있다. 게다가, 17 번째 작은 블록의 불필요한 기입이 감소될 수도 있고, 이것은 기입의 횟수를 감소시키는 효과에 기여할 수도 있다. 전체 데이터 블록의 저장 용량의 384 KB가 고정되므로, 헤더 영역은 8 KB이고, 페이로드 영역은 376 KB이다. 그러므로, 실시형태에 따른 메타데이터 시스템은 비-압축의 경우에도 페이로드 영역을 완전히 이용할 수도 있다. 게다가, 비-압축 데이터 및 압축된 데이터는 효율적으로 팩킹될 수도 있다.
다음으로, 실시형태에 따른 정보 프로세싱 시스템의 구성이 설명될 것이다. 도 11은 실시형태에 따른 정보 프로세싱 시스템의 구성을 예시하는 도면이다. 도 11에서 예시된 바와 같이, 실시형태에 따른 정보 프로세싱 시스템(1)은 저장 디바이스(1a) 및 서버(1b)를 포함한다. 저장 디바이스(1a)는 서버(1b)에 의해 이용된 데이터를 저장한다. 서버(1b)는 정보 프로세싱과 같은 프로세싱을 수행하는 정보 프로세싱 디바이스이다. 저장 디바이스(1a) 및 서버(1b)는 섬유 채널(fibre channel; FC) 및 인터넷 소형 컴퓨터 시스템 인터페이스(Internet small computer system interface; iSCSI)에 의해 서로 접속된다.
저장 디바이스(1a)는 저장 디바이스(1a)를 제어하는 저장 제어 디바이스(2), 및 데이터를 저장하는 스토리지(저장 디바이스)(3)를 포함한다. 여기서, 스토리지(3)는 복수의 SSD들(3d)의 세트이다.
도 11에서, 저장 디바이스(1a)는 저장 제어 디바이스 #0 및 저장 제어 디바이스 #1에 의해 나타내어진 2 개의 저장 제어 디바이스들(2)을 포함한다. 그러나, 저장 디바이스(1a)는 3 개 이상의 저장 제어 디바이스들(2)을 포함할 수도 있다. 도 11에서, 정보 프로세싱 시스템(1)은 하나의 서버(1b)를 포함한다. 그러나, 정보 프로세싱 시스템(1)은 2 개 이상의 서버들(1b)을 포함할 수도 있다.
저장 제어 디바이스(2)는 스토리지(3)를 공유하고 관리하고, 하나 이상의 풀들(3a)을 담당한다. 저장 제어 디바이스(2)는 상위 접속 유닛(21), 캐시 관리 유닛(22), 중복 관리 유닛(23), 메타 관리 유닛(24), 추가적 기입 유닛(25), 및 IO 유닛(26)을 포함한다.
상위 접속 유닛(21)은 FC 드라이버 및 iSCSI 드라이버 및 캐시 관리 유닛(22)의 각각 사이에서 정보를 교환한다. 캐시 관리 유닛(22)은 캐시 메모리 상의 데이터를 관리한다. 중복 관리 유닛(23)은 데이터 중복제거/복원을 제어함으로써 저장 디바이스(1a)에서 저장된 고유한 데이터를 관리한다.
메타 관리 유닛(24)은 논리적-물리적 메타, 데이터 블록 맵, 및 참조 카운트를 관리한다. 게다가, 메타 관리 유닛(24)은 논리적-물리적 메타 및 데이터 블록 맵을 이용하여, 가상적인 용적에서의 데이터를 식별하기 위하여 이용된 논리적 어드레스, 및 SSD(3d)에서의 데이터가 저장되는 위치를 표시하는 물리적 어드레스를 변환한다. 여기서, 물리적 어드레스는 데이터 블록 번호 및 인덱스의 조합이다.
메타 관리 유닛(24)은 논리적-물리적 메타 저장 유닛(24a), DBM 저장 유닛(24b), 및 참조 저장 유닛(24c)을 포함한다. 논리적-물리적 메타 저장 유닛(24a)은 논리적-물리적 메타를 저장한다. DBM 저장 유닛(24b)은 데이터 블록 맵을 저장한다. 참조 저장 유닛(24c)은 참조 정보를 저장한다.
추가적 기입 유닛(25)은 연속적인 데이터 유닛들로 데이터를 관리하고, RAID 유닛의 단위로 SSD(3d)에서 추가적으로 그리고 집합적으로 데이터를 기입한다. 추가적 기입 유닛(25)은 데이터를 압축하고 압축해제한다. 추가적 기입 유닛(25)은 주 메모리 상의 버퍼인 기입 버퍼에서 기입 데이터를 축적하고, 기입 데이터가 기입 버퍼에서 기입될 때마다, 기입 버퍼의 비어 있는 영역이 어떤 문턱 값이 되는지 아닌지 여부를 판정한다. 그 다음으로, 추가적 기입 유닛(25)은 기입 버퍼의 비어 있는 영역이 어떤 문턱 값 이하로 될 때에 SSD(3d)에서 기입 버퍼를 기입한다. 추가적 기입 유닛(25)은 풀(3a)의 물리적 공간을 관리하고 RAID 유닛들을 배열한다. IO 유닛(26)은 스토리지(3)에서 RAID 유닛들을 기입한다.
상위 접속 유닛(21)은 데이터 중복제거/복원을 제어하고, 추가적 기입 유닛(25)은 데이터를 압축하고 압축해제한다. 저장 제어 디바이스(2)는 이에 의해, 기입 데이터를 감소시킬 수도 있고, 기입의 횟수를 추가로 감소시킬 수도 있다.
다음으로, 기입 프로세싱의 시퀀스가 설명될 것이다. 도 12는 중복을 갖지 않는 데이터를 기입하는 프로세싱의 시퀀스를 예시하는 도면이다. 도 15는 중복을 갖는 데이터를 기입하는 프로세싱의 시퀀스를 예시하는 도면이다.
중복을 갖지 않는 데이터를 기입하는 프로세싱에서는, 도 12에서 예시된 바와 같이, 캐시 관리 유닛(22)은 데이터를 재기입(write back)할 것을 중복 관리 유닛(23)에 요청한다(t1). 그 다음으로, 중복 관리 유닛(23)은 데이터의 중복 판정을 행하고, 중복이 없다(t2). 그러므로, 중복 관리 유닛(23)은 새로운 데이터 유닛을 기입할 것을 추가적 기입 유닛(25)에 요청한다(t3).
그 다음으로, 추가적 기입 유닛(25)은 기입 버퍼를 취득하고(t4), RU #가 기입 버퍼에 할당되지 않을 때에 RU #를 할당할 것을 IO 유닛(26)에 요청한다(t5). 그 다음으로, 추가적 기입 유닛(25)은 IO 유닛(26)에 의해 할당된 RU #를 수신한다(t6). RU #가 기입 버퍼에 할당될 때, t5 및 t6의 프로세싱이 생략된다.
그 다음으로, 추가적 기입 유닛(25)은 추가적 기입 위치를 결정하고(t7), 데이터를 압축하고, 데이터를 추가적으로 기입한다(t8). 그 다음으로, 추가적 기입 유닛(25)은 데이터 유닛 헤더 및 데이터 블록 헤더를 업데이트하고(t9), 집합적 기입 판정을 행한다(t10). 그 다음으로, 추가적 기입 유닛(25)이 기입 버퍼가 가득 차 있고 집합적 기입이 바람직한 것으로 판정할 때, 추가적 기입 유닛(25)은 기입 버퍼를 집합적으로 기입할 것을 IO 유닛(26)에 요청한다. 그 다음으로, 추가적 기입 유닛(25)은 완료의 응답을 중복 관리 유닛(23)으로 전송한다(t11).
그 다음으로, 중복 관리 유닛(23)은 참조 카운터를 업데이트할 것을 메타 관리 유닛(24)에 요청하고(t12), 메타 관리 유닛(24)은 참조 카운터를 업데이트한다(t13). 구체적으로, 예를 들어, 메타 관리 유닛(24)은 기입된 데이터의 참조 카운터를 증분(increment)시킨다. 데이터가 겹쳐쓰기 될 때, 메타 관리 유닛(24)은 겹쳐쓰기 하기 전에 데이터의 참조 카운터를 감분(decrement)시킨다.
그 다음으로, 메타 관리 유닛(24)은 업데이트 완료의 응답을 중복 관리 유닛(23)으로 전송하고(t14), 데이터들의 유효 수를 업데이트할 것을 IO 유닛(26)에 요청한다(t15). 여기서, 데이터들의 유효 수는 TDLC 및 GDLC를 지칭한다. IO 유닛(26)은 기입된 데이터의 TDLC를 증분시킨다. 데이터가 겹쳐쓰기 될 경우, 겹쳐쓰기 하기 전의 데이터의 RC가 0으로 될 때, IO 유닛(26)은 겹쳐쓰기 하기 전의 데이터가 저장되었던 RU의 GLDC를 감분시킨다. 그 다음으로, IO 유닛(26)은 데이터들의 유효 수의 업데이트 완료의 응답을 메타 관리 유닛(24)으로 전송한다(t16).
그 다음으로, 중복 관리 유닛(23)은 논리적-물리적 메타를 업데이트할 것을 메타 관리 유닛(24)에 요청한다(t17). 그 다음으로, 메타 관리 유닛(24)은 논리적-물리적 메타를 업데이트하고(t18), 업데이트 완료의 응답을 중복 관리 유닛(23)으로 전송한다(t19). 그 다음으로, 중복 관리 유닛(23)은 재기입의 완료의 응답을 캐시 관리 유닛(22)으로 전송한다(t20). 캐시 관리 유닛(22)은 기입 버퍼를 해방한다.
이러한 방식으로, 추가적 기입 유닛(25)은 추가적 기입 위치를 결정하고, 데이터를 압축하고 데이터를 데이터 블록에서 추가적으로 기입하고, 데이터 유닛 헤더 및 데이터 블록 헤더를 업데이트한다. 그 결과, 중복을 갖지 않는 데이터가 스토리지(3)에서 기입될 수도 있다. 데이터의 압축/비-압축의 스위칭이 가능하고, 추가적 기입 유닛(25)에서 선택적으로 설정될 수도 있다.
도 13은 추가적 기입 위치를 결정하기 위한 프로세싱의 흐름을 예시하는 플로우차트이다. 도 13에서 예시된 프로세싱은 도 12에서의 t7의 프로세싱에 대응한다. 도 13에서 예시된 바와 같이, 추가적 기입 유닛(25)은 기입 버퍼의 선두에서의 데이터 블록으로부터 순차적으로 추가적 기입이 데이터 블록에서 가능한지 아닌지 여부를 판정한다(단계(S1)). 추가적 기입 유닛(25)은 추가적 기입이 데이터 블록에서 가능한지 아닌지 여부를 판정하기 위하여, 데이터 블록 헤더의 데이터 블록 풀 플래그를 체크한다. 추가적 기입이 기입 버퍼에서 불가능할 때, 새로운 기입 버퍼가 준비된다. 그러므로, 추가적 기입이 가능한 데이터 블록은 기입 버퍼에서 발견될 수도 있다.
그 다음으로, 추가적 기입이 가능한 데이터 블록이 발견될 때, 추가적 기입 유닛(25)은 데이터 블록 번호가 미할당되는지 아닌지 여부를 판정한다(단계(S2)). 데이터 블록 번호가 미할당될 경우, 추가적 기입 유닛(25)은 데이터 블록 번호를 할당할 것을 메타 관리 유닛(24)에 요청한다(단계(S3)). 메타 관리 유닛(24)은 데이터 블록 번호를 할당하고, 데이터 블록 맵에서 물리적 번호 및 데이터 블록 번호를 서로에 연관시킨다.
그 다음으로, 추가적 기입 유닛(25)은 다음 데이터 유닛 헤더 인덱스를 이용하여 데이터 유닛 헤더의 인덱스를 특정하고(단계(S4)), 데이터 블록 번호 및 데이터 유닛 헤더의 인덱스를 추가적 기입 위치로서 결정한다.
이러한 방식으로, 추가적 기입 유닛(25)은 데이터 블록 헤더 및 데이터 유닛 헤더를 이용하여 데이터의 추가적 기입 위치를 결정할 수도 있다.
도 14는 데이터 유닛 헤더 및 데이터 블록 헤더를 업데이트하는 프로세싱의 흐름을 예시하는 플로우차트이다. 도 14에서 예시된 프로세싱은 도 12에서의 t9의 프로세싱에 대응한다. 도 14에서 예시된 바와 같이, 추가적 기입 유닛(25)은 기입된 데이터에 대응하는 데이터 유닛 헤더를 업데이트한다(단계(S11)). 구체적으로, 예를 들어, 추가적 기입 유닛(25)은 추가적 기입이 불가능하도록, 데이터 유닛 스테이터스를 업데이트한다.
그 다음으로, 추가적 기입 유닛(25)은 데이터가 기입되는 데이터 블록의 데이터 블록 헤더를 업데이트한다(단계(S12)). 구체적으로, 예를 들어, 추가적 기입 유닛(25)은 기입 데이터 유닛 카운트, 다음 데이터 유닛 헤더 인덱스, 및 다음 기입 블록 오프셋을 업데이트한다.
그 다음으로, 추가적 기입 유닛(25)은 추가적 기입이 데이터 블록에서 여전히 가능한지 아닌지 여부를 판정한다(단계(S13)). 추가적 기입 유닛(25)은 다음 기입 블록 오프셋이 문턱 값 이하인지 아닌지 여부에 기초하여, 추가적 기입이 가능한지 아닌지 여부를 판정한다. 페이로드 영역의 크기는 376 KB이고, 8 KB의 비어 있는 영역이 비-압축의 경우의 추가적 기입을 위하여 바람직할 수도 있다. 그러므로, 376 KB - 8 KB = 368 KB
Figure 112019010997718-pat00001
736 개의 작은 블록들(736 × 512 바이트들) 및 다음 기입 블록 오프셋 > 736이 충족될 경우, 추가적 기입이 불가능하다.
그 다음으로, 데이터 블록에서의 추가적 기입이 불가능할 경우, 추가적 기입 유닛(25)은 데이터 블록 헤더의 데이터 블록 풀 플래그를, 추가적 기입이 불가능하다는 것을 의미하는 값으로 업데이트한다(단계(S14)).
이러한 방식으로, 데이터를 기입할 때에 데이터 유닛 헤더 및 데이터 블록 헤더를 업데이트함으로써, 추가적 기입 유닛(25)은 다음으로 데이터를 기입할 때에 데이터 블록 헤더 및 데이터 유닛 헤더를 이용하여 데이터의 추가적 기입 위치를 결정할 수도 있다.
중복을 갖는 데이터를 기입하는 프로세싱에서는, 도 15에서 예시된 바와 같이, 캐시 관리 유닛(22)은 데이터를 재기입할 것을 중복 관리 유닛(23)에 요청한다(t31). 그 다음으로, 중복 관리 유닛(23)은 데이터의 중복 판정을 행하고, 중복이 있다(t32). 그러므로, 중복 관리 유닛(23)은 데이터를 저장하기 위한 데이터 블록의 번호 및 그 인덱스를 특정하고, DB → RU 변환을 수행할 것을 메타 관리 유닛(24)에 요청한다(t33). 여기서, DB → RU 변환은 데이터 블록 번호를 물리적 번호로 변환하기 위한 것이다.
그 다음으로, 메타 관리 유닛(24)은 DB → RU 변환을 수행하고(t34), 물리적 번호의 응답을 중복 관리 유닛(23)으로 전송한다(t35). 그 다음으로, 중복 관리 유닛(23)은 물리적 번호 및 인덱스에 대응하는 참조 카운터를 업데이트할 것을 메타 관리 유닛(24)에 요청하고(t36), 메타 관리 유닛(24)은 참조 카운터를 업데이트한다(t37).
그 다음으로, 메타 관리 유닛(24)은 데이터들의 유효 수를 업데이트할 것을 IO 유닛(26)에 요청한다(t38). 그 다음으로, IO 유닛(26)은 데이터들의 유효 수를 업데이트하고, 데이터들의 유효 수의 업데이트 완료의 응답을 메타 관리 유닛(24)으로 전송한다(t39). 그 다음으로, 메타 관리 유닛(24)은 참조 카운터의 업데이트 완료의 응답을 중복 관리 유닛(23)으로 전송한다(t40).
그 다음으로, 중복 관리 유닛(23)은 논리적-물리적 메타를 업데이트할 것을 메타 관리 유닛(24)에 요청한다(t41). 그 다음으로, 메타 관리 유닛(24)은 논리적-물리적 메타를 업데이트하고(t42), 업데이트 완료의 응답을 중복 관리 유닛(23)으로 전송한다(t43). 그 다음으로, 중복 관리 유닛(23)은 재기입의 완료의 응답을 캐시 관리 유닛(22)으로 전송한다(t44).
이러한 방식으로, 중복 관리 유닛(23)은 참조 카운터를 업데이트하고 논리적-물리적 메타를 업데이트할 것을 메타 관리 유닛(24)에 요청함으로써, 중복을 갖는 기입 데이터의 프로세싱을 수행할 수도 있다.
다음으로, 판독 프로세싱의 시퀀스가 설명될 것이다. 도 16은 판독 프로세싱의 시퀀스를 예시하는 도면이다. 도 16에서 예시된 바와 같이, 캐시 관리 유닛(22)은 논리적 어드레스를 이용하여 데이터의 스테이징(staging)을 수행할 것을 중복 관리 유닛(23)에 요청한다(t51). 그 다음으로, 중복 관리 유닛(23)은 논리적 어드레스에 대응하는 논리적-물리적 메타를 취득할 것을 메타 관리 유닛(24)에 요청한다(t52).
그 다음으로, 메타 관리 유닛(24)은 논리적-물리적 메타를 판독할 것을 IO 유닛(26)에 요청한다(t53). 대응하는 논리적-물리적 메타가 캐시 상에 있지 않을 경우, 캐시 상의 LUN 및 LBA에 의해 특정된 페이지는 페이지 아웃되고, 대응하는 논리적-물리적 메타에 대응하는 페이지는 페이지 인(page in)된다. 그 다음으로, IO 유닛(26)은 판독된 논리적-물리적 메타의 응답을 메타 관리 유닛(24)으로 전송한다(t54). 메타 관리 유닛(24)은 취득된 논리적-메타 메타의 응답을 중복 관리 유닛(23)으로 전송한다(t55).
그 다음으로, 중복 관리 유닛(23)은 취득된 논리적-물리적 메타 내에 포함된 데이터 블록 번호에 대하여, DB → RU 변환을 수행할 것을 메타 관리 유닛(24)에 요청한다(t56). 메타 관리 유닛(24)은 DB → RU 변환을 수행하고(t57), 물리적 번호의 응답을 중복 관리 유닛(23)으로 전송한다(t58). 그 다음으로, 중복 관리 유닛(23)은 전송된 물리적 번호 및 논리적-물리적 메타 내에 포함된 인덱스를 이용하여 데이터 유닛을 판독할 것을 추가적 기입 유닛(25)에 요청한다(t59).
그 다음으로, 추가적 기입 유닛(25)은 요청된 데이터 유닛에 대응하는 데이터 유닛 헤더를 판독할 것을 IO 유닛(26)에 요청하고(t60), IO 유닛(26)으로부터 데이터 유닛 헤더를 수신한다(t61). 그 다음으로, 추가적 기입 유닛(25)은 수신된 데이터 유닛 헤더로부터 데이터 유닛의 오프셋 위치를 취득하고(t62), 취득된 오프셋 위치에서의 데이터 유닛을 판독할 것을 IO 유닛(26)에 요청한다(t63).
그 다음으로, 추가적 기입 유닛(25)은 IO 유닛(26)으로부터 데이터 유닛을 수신하고(t64), 압축된 데이터를 압축해제한다(t65). 그 다음으로, 추가적 기입 유닛(25)은 압축해제된 데이터의 응답을 중복 관리 유닛(23)으로 전송한다(t66). 중복 관리 유닛(23)은 데이터를 수신하고, 데이터의 응답을 캐시 관리 유닛(22)으로 전송한다(t67).
이러한 방식으로, 중복 관리 유닛(23)은 논리적 어드레스에 대응하는 논리적-물리적 메타를 취득하고, 취득된 논리적-물리적 메타 내에 포함된 데이터 블록 번호를 물리적 번호로 변환하고, 취득된 논리적-물리적 메타 내에 포함된 물리적 번호 및 인덱스를 지정하고, 데이터 유닛을 판독할 것을 추가적 기입 유닛(25)에 요청한다. 그러므로, 중복 관리 유닛(23)은 스토리지(3)로부터 캐시 관리 유닛(22)에 의해 요청된 데이터를 판독할 수도 있다.
위에서 설명된 바와 같이, 실시형태에서, 논리적-물리적 메타 저장 유닛(24a)은 데이터의 논리적 어드레스를, 데이터를 저장하기 위한 데이터 블록 번호 및 데이터 블록에서의 데이터의 위치를 표시하는 인덱스와 연관시키는 논리적-물리적 메타를 저장한다. DBM 저장 유닛(24b)은 데이터 블록 번호를, 스토리지(3)에서의 데이터 블록의 저장 위치를 표시하는 물리적 번호와 연관시키는 데이터 블록 맵을 저장한다. 데이터 블록은 저장되어야 할 각각의 데이터에 대하여 데이터 블록에서의 위치를 표시하는 오프셋 및 데이터 길이를 포함하는 데이터 유닛 헤더를 인덱스에 의해 지정된 위치에서 저장하기 위한 헤더 영역, 및 데이터를 저장하기 위한 페이로드 영역을 가진다. 그러므로, 논리적-물리적 메타 저장 유닛(24a), DBM 저장 유닛(24b), 및 헤더 영역을 이용하여 데이터를 페이로드 영역에서 추가적으로 기입함으로써, 저장 제어 디바이스(2)는 스토리지(3)에서의 기입의 횟수를 감소시킬 수도 있다.
실시형태에서, 데이터는 스토리지(3)를 판독하고 기입하기 위한 단위 길이의 정수 배의 크기를 단위로서 저장되고, 데이터의 CRC는 데이터 유닛 헤더에서 저장된다. 그러므로, 데이터가 압축되지 않을 경우, 페이로드 영역은 효과적으로 이용될 수도 있다.
실시형태에서, 참조 저장 유닛(24c)은 데이터의 중복들의 수를 표시하는 참조 카운터를 물리적 번호 및 인덱스와 연관시켜서 저장한다. 그러므로, 저장 제어 디바이스(2)는 중복제거를 수행할 수도 있다.
실시형태에서, 데이터 블록에서 저장되어야 할 데이터들의 수, 다음으로 기입되어야 할 데이터의 인덱스, 및 다음으로 기입되어야 할 데이터의 오프셋을 포함하는 데이터 블록 헤더는 헤더 영역에 저장된다. 그러므로, 저장 제어 디바이스(2)는 데이터를 페이로드 영역에서 효율적으로 기입할 수도 있다.
실시형태에서, 저장 제어 디바이스(2)는 드라이브 그룹(3c)의 번호, RAID 유닛 번호의 번호, 슬롯의 번호를 물리적 번호들로서 이용하고, 그러므로, 스토리지(3)에서의 데이터 블록의 저장 위치를 고유하게 특정할 수도 있다.
실시형태에서, 추가적 기입 유닛(25)은 데이터를 스토리지(3)에서 추가적으로 그리고 집합적으로 기입하기 위하여 메타 관리 유닛(24) 및 IO 유닛(26)과 협력한다. 그러므로, 스토리지(3)에서의 기입의 횟수는 감소될 수도 있다.
저장 제어 디바이스(2)는 실시형태에서 설명되었다. 그러나, 유사한 기능을 가지는 저장 제어 프로그램은 소프트웨어로 저장 제어 디바이스(2)의 구성을 달성함으로써 획득될 수도 있다. 그러므로, 저장 제어 프로그램을 실행하는 저장 제어 디바이스(2)의 하드웨어 구성이 설명될 것이다.
도 17은 실시형태에 따른 저장 제어 프로그램을 실행하는 저장 제어 디바이스(2)의 하드웨어 구성을 예시하는 도면이다. 도 17에서 예시된 바와 같이, 저장 제어 디바이스(2)는 주 메모리(41), 프로세서(42), 호스트 I/F(43), 통신 I/F(44), 및 접속 I/F(45)를 포함한다.
주 메모리(41)는 프로그램, 프로그램을 실행하는 중간 결과 등을 저장하는 랜덤 액세스 메모리(random access memory; RAM)이다. 프로세서(42)는 주 메모리(41)로부터 프로그램을 판독하고 프로그램을 실행하는 프로세싱 디바이스이다.
호스트 I/F(43)는 서버(1b)와의 인터페이스이다. 통신 I/F(44)는 또 다른 저장 제어 디바이스(2)와 통신하기 위한 인터페이스이다. 접속 I/F(45)는 스토리지(3)와의 인터페이스이다.
프로세서(42)에서 실행된 저장 제어 프로그램은 휴대용 기록 매체(51)에서 저장되고 주 메모리(41)로 판독된다. 대안적으로, 저장 제어 프로그램은 통신 I/F(44)를 통해 접속된 컴퓨터 시스템의 데이터베이스 등에서 저장되고, 데이터베이스로부터 판독되고, 주 메모리(41)로 판독된다.
실시형태에서는, SSD(3d)가 비휘발성 저장 매체로서 이용될 경우가 설명되었다. 그러나, 실시형태는 그것으로 제한되지는 않고, SSD(3d)와 같은, 기입의 횟수에 대한 제한을 가지는 또 다른 비휘발성 저장 매체가 이용될 경우에 또한 적용될 수도 있다.

Claims (17)

  1. 저장 제어 디바이스로서,
    메타 정보(meta information) 및 맵 정보(map information)를 저장하도록 구성된 메모리; 및
    프로세서
    를 포함하고,
    상기 메타 정보는 스토리지(storage)를 이용하는 정보 프로세싱 디바이스로부터의 데이터를 식별하기 위한 논리적 어드레스를, 상기 스토리지 상의 상기 데이터의 배열을 위하여 이용되는 데이터 블록을 식별하기 위한 데이터 블록 식별자와 연관시키고, 복수의 인덱스들에 대응하는 데이터에 관련된 헤더 정보를 저장하기 위한 용량을 갖는 헤더 영역(header area), 및 상기 복수의 인덱스들에 대응하는 데이터 및 상기 데이터 블록에서의 상기 데이터의 추가적 기입(additional writing)의 순서를 표시하는 인덱스를 저장하기 위한 용량을 갖는 페이로드 영역(payload area)을 포함하고, 상기 맵 정보는 상기 데이터 블록 식별자 및 상기 복수의 인덱스들에 기초하여 생성되고, 상기 맵 정보는 상기 데이터 블록 식별자를, 상기 데이터 블록에 대한 상기 스토리지 상의 물리적 위치를 표시하는 물리적 식별자와 연관시키고,
    상기 프로세서는,
    상기 맵 정보를 사용하여, 상기 데이터 블록 식별자에 대응하는 상기 물리적 식별자를 획득함으로써, 상기 획득된 물리적 식별자에 의해 특정되는 상기 데이터 블록, 및 상기 데이터 블록의 페이로드 영역에서의 기입 위치를 특정하고;
    상기 특정된 데이터 블록에서 상기 데이터를 기입하고;
    상기 데이터 블록에서의 상기 기입 위치를 표시하는 오프셋 및 상기 데이터의 길이를 표시하는 데이터 길이를 포함하는 데이터 유닛 헤더를, 상기 헤더 영역에서의 상기 인덱스에 의해 지정되는 위치에서 기입하기 위한 기입 제어를 수행하도록
    구성되는 것인, 저장 제어 디바이스.
  2. 제 1 항에 있어서,
    상기 프로세서는,
    버퍼 상의 대응하는 데이터 블록에서 상기 데이터를 기입하고;
    복수의 데이터 블록들이 각각의 기입에 대하여 상기 버퍼 상에서 배열되는 용량에 대응하는 집합적 기입 단위 영역에서 이용가능한 비어 있는 영역이 없는지 여부를 판정하고;
    판정의 결과에 따라 상기 스토리지에서의 집합적 기입을 수행하도록
    구성되는 것인, 저장 제어 디바이스.
  3. 제 1 항에 있어서,
    상기 기입 제어는 상기 데이터 유닛 헤더에서의 상기 데이터의 에러를 검출하기 위한 코드를 기입하기 위한 제어를 포함하는 것인, 저장 제어 디바이스.
  4. 제 1 항에 있어서,
    상기 기입 제어는 상기 데이터 블록에서 저장되어야 할 데이터의 수, 다음으로 기입되어야 할 데이터의 인덱스, 및 다음으로 기입되어야 할 상기 데이터의 오프셋을 포함하는 데이터 블록 헤더를 상기 헤더 영역에서 기입하기 위한 제어를 포함하는 것인, 저장 제어 디바이스.
  5. 제 1 항에 있어서,
    상기 물리적 식별자는,
    복수의 저장 매체들을 그룹화함으로써 획득된 드라이브 그룹을 식별하는 DG 식별자;
    상기 데이터 블록들을 상기 스토리지에서 집합적으로 기입하기 위한 단위인 집합적 기입 단위 영역을 식별하는 RU 식별자; 및
    상기 데이터 블록을 상기 집합적 기입 단위 영역에 저장하는 슬롯을 식별하는 슬롯 식별자
    를 포함하는 것인, 저장 제어 디바이스.
  6. 제 1 항에 있어서,
    상기 프로세서는,
    데이터의 중복이 있을 때, 상기 메타 정보에서의 데이터 블록 식별자 및 인덱스를 참조에서의 데이터 블록 식별자 및 인덱스와 동일하게 되도록 설정하고;
    상기 데이터의 중복들의 수를 표시하는 참조 카운트를 상기 메모리에서의 상기 데이터와 연관시키는 참조 정보를 저장하고;
    데이터의 중복이 없을 때, 데이터를 압축하도록
    구성되는 것인, 저장 제어 디바이스.
  7. 제 1 항에 있어서,
    상기 스토리지는 기입의 횟수에 대한 제한을 가지는 저장 매체를 이용하는 것인, 저장 제어 디바이스.
  8. 저장 제어 방법으로서,
    메모리에서, 스토리지를 이용하는 정보 프로세싱 디바이스로부터의 데이터를 식별하기 위한 논리적 어드레스를, 상기 스토리지 상의 상기 데이터의 배열을 위하여 이용되는 데이터 블록을 식별하기 위한 데이터 블록 식별자와 연관시키고, 복수의 인덱스들에 대응하는 데이터에 관련된 헤더 정보를 저장하기 위한 용량을 갖는 헤더 영역, 및 상기 복수의 인덱스들에 대응하는 데이터 및 상기 데이터 블록에서의 상기 데이터의 추가적 기입의 순서를 표시하는 인덱스를 저장하기 위한 용량을 갖는 페이로드 영역을 포함하는 메타 정보를 저장하는 단계;
    상기 메모리에서, 상기 데이터 블록 식별자 및 상기 복수의 인덱스들에 기초하여 생성되고, 상기 데이터 블록 식별자를, 상기 데이터 블록에 대한 상기 스토리지 상의 물리적 위치를 표시하는 물리적 식별자와 연관시키는 맵 정보를 저장하는 단계;
    상기 맵 정보를 사용하여, 상기 데이터 블록 식별자에 대응하는 상기 물리적 식별자를 획득함으로써, 상기 획득된 물리적 식별자에 의해 특정되는 상기 데이터 블록, 및 상기 데이터 블록의 페이로드 영역에서의 기입 위치를 특정하는 단계;
    상기 특정된 데이터 블록에서 상기 데이터를 기입하는 단계; 및
    상기 데이터 블록에서의 상기 기입 위치를 표시하는 오프셋 및 상기 데이터의 길이를 표시하는 데이터 길이를 포함하는 데이터 유닛 헤더를, 상기 헤더 영역에서의 상기 인덱스에 의해 지정되는 위치에서 기입하기 위한 기입 제어를 수행하는 단계
    를 포함하는, 저장 제어 방법.
  9. 제 8 항에 있어서,
    버퍼 상의 대응하는 데이터 블록에서 상기 데이터를 기입하는 단계; 및
    복수의 데이터 블록들이 각각의 기입에 대하여 상기 버퍼 상에서 배열되는 용량에 대응하는 집합적 기입 단위 영역에서 이용가능한 비어 있는 영역이 없는지 여부를 판정하는 단계; 및
    판정의 결과에 따라 상기 스토리지에서의 집합적 기입을 수행하는 단계
    를 더 포함하는, 저장 제어 방법.
  10. 제 8 항에 있어서,
    상기 기입 제어는 상기 데이터 유닛 헤더에서의 상기 데이터의 에러를 검출하기 위한 코드를 기입하기 위한 제어를 포함하는 것인, 저장 제어 방법.
  11. 제 8 항에 있어서,
    상기 기입 제어는 상기 데이터 블록에서 저장되어야 할 데이터의 수, 다음으로 기입되어야 할 데이터의 인덱스, 및 다음으로 기입되어야 할 상기 데이터의 오프셋을 포함하는 데이터 블록 헤더를 상기 헤더 영역에서 기입하기 위한 제어를 포함하는 것인, 저장 제어 방법.
  12. 제 8 항에 있어서,
    상기 스토리지는 기입의 횟수에 대한 제한을 가지는 저장 매체를 이용하는 것인, 저장 제어 방법.
  13. 컴퓨터로 하여금, 프로세싱을 실행하게 하기 위한 저장 제어 프로그램을 기록하는 비-일시적 컴퓨터-판독가능 기록 매체로서,
    상기 프로세싱은,
    메모리에서, 스토리지를 이용하는 정보 프로세싱 디바이스로부터의 데이터를 식별하기 위한 논리적 어드레스를, 상기 스토리지 상의 상기 데이터의 배열을 위하여 이용되는 데이터 블록을 식별하기 위한 데이터 블록 식별자와 연관시키고, 복수의 인덱스들에 대응하는 데이터에 관련된 헤더 정보를 저장하기 위한 용량을 갖는 헤더 영역, 및 상기 복수의 인덱스들에 대응하는 데이터 및 상기 데이터 블록에서의 상기 데이터의 추가적 기입의 순서를 표시하는 인덱스를 저장하기 위한 용량을 갖는 페이로드 영역을 포함하는 메타 정보를 저장하는 것;
    상기 메모리에서, 상기 데이터 블록 식별자 및 상기 복수의 인덱스들에 기초하여 생성되고, 상기 데이터 블록 식별자를, 상기 데이터 블록에 대한 상기 스토리지 상의 물리적 위치를 표시하는 물리적 식별자와 연관시키는 맵 정보를 저장하는 것;
    상기 맵 정보를 사용하여, 상기 데이터 블록 식별자에 대응하는 상기 물리적 식별자를 획득함으로써, 상기 획득된 물리적 식별자에 의해 특정되는 상기 데이터 블록, 및 상기 데이터 블록의 페이로드 영역에서의 기입 위치를 특정하는 것;
    상기 특정된 데이터 블록에서 상기 데이터를 기입하는 것; 및
    상기 데이터 블록에서의 상기 기입 위치를 표시하는 오프셋 및 상기 데이터의 길이를 표시하는 데이터 길이를 포함하는 데이터 유닛 헤더를, 상기 헤더 영역에서의 상기 인덱스에 의해 지정되는 위치에서 기입하기 위한 기입 제어를 수행하는 것
    을 포함하는 것인, 비-일시적 컴퓨터-판독가능 기록 매체.
  14. 제 13 항에 있어서,
    버퍼 상의 대응하는 데이터 블록에서 상기 데이터를 기입하는 것;
    복수의 데이터 블록들이 각각의 기입에 대하여 상기 버퍼 상에서 배열되는 용량에 대응하는 집합적 기입 단위 영역에서 이용가능한 비어 있는 영역이 없는지 여부를 판정하는 것; 및
    판정의 결과에 따라 상기 스토리지에서의 집합적 기입을 수행하는 것
    을 더 포함하는, 비-일시적 컴퓨터-판독가능 기록 매체.
  15. 제 13 항에 있어서,
    상기 기입 제어는 상기 데이터 유닛 헤더에서의 상기 데이터의 에러를 검출하기 위한 코드를 기입하기 위한 제어를 포함하는 것인, 비-일시적 컴퓨터-판독가능 기록 매체.
  16. 제 13 항에 있어서,
    상기 기입 제어는 상기 데이터 블록에서 저장되어야 할 데이터의 수, 다음으로 기입되어야 할 데이터의 인덱스, 및 다음으로 기입되어야 할 상기 데이터의 오프셋을 포함하는 데이터 블록 헤더를 상기 헤더 영역에서 기입하기 위한 제어를 포함하는 것인, 비-일시적 컴퓨터-판독가능 기록 매체.
  17. 제 13 항에 있어서,
    상기 스토리지는 기입의 횟수에 대한 제한을 가지는 저장 매체를 이용하는 것인, 비-일시적 컴퓨터-판독가능 기록 매체.
KR1020190011938A 2018-02-02 2019-01-30 저장 제어 디바이스, 저장 제어 방법, 및 기록 매체 KR102245113B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018017655A JP6443572B1 (ja) 2018-02-02 2018-02-02 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JPJP-P-2018-017655 2018-02-02

Publications (2)

Publication Number Publication Date
KR20190094108A KR20190094108A (ko) 2019-08-12
KR102245113B1 true KR102245113B1 (ko) 2021-04-26

Family

ID=64899534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190011938A KR102245113B1 (ko) 2018-02-02 2019-01-30 저장 제어 디바이스, 저장 제어 방법, 및 기록 매체

Country Status (4)

Country Link
US (1) US10866743B2 (ko)
JP (1) JP6443572B1 (ko)
KR (1) KR102245113B1 (ko)
CN (1) CN110134618A (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752466B (zh) * 2019-03-27 2024-02-13 深圳市茁壮网络股份有限公司 一种数据存储方法及装置
CN112114753B (zh) * 2020-09-17 2022-09-30 杭州海康威视系统技术有限公司 一种数据写入方法、装置及设备
CN112181732A (zh) * 2020-10-29 2021-01-05 第四范式(北京)技术有限公司 参数服务器节点的恢复方法和恢复系统
CN114442903A (zh) * 2020-10-30 2022-05-06 伊姆西Ip控股有限责任公司 管理存储系统的方法、电子设备和计算机程序产品
CN112559388B (zh) * 2020-12-14 2022-07-12 杭州宏杉科技股份有限公司 数据缓存方法及装置
KR102486980B1 (ko) * 2021-01-08 2023-01-11 주식회사 앤다스 블록 데이터 스토리지 시스템, 블록 데이터 스토리지 방법 및 기록 매체에 저장된 프로그램
CN114356232B (zh) * 2021-12-30 2024-04-09 西北工业大学 数据读写方法和装置
CN117891414A (zh) * 2024-03-14 2024-04-16 支付宝(杭州)信息技术有限公司 一种基于完美哈希的数据存储方法及相关设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198368A (ja) 2009-02-25 2010-09-09 Hitachi Information & Communication Engineering Ltd 補助記憶装置用フィルタドライバ手段を備えた電子計算機、補助記憶装置用フィルタドライバプログラム、及び、補助記憶装置用フィルタドライバプログラムの記録媒体
JP2011209973A (ja) 2010-03-30 2011-10-20 Hitachi Ltd ディスクアレイ構成プログラム、計算機、計算機システム
JP2012064094A (ja) 2010-09-17 2012-03-29 Fujitsu Ten Ltd 情報記録装置
JP2015036981A (ja) 2013-08-16 2015-02-23 エルエスアイ コーポレーション 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ
WO2015118630A1 (ja) 2014-02-05 2015-08-13 株式会社日立製作所 ストレージシステムおよびストレージシステム用キャッシュ制御装置
WO2015162766A1 (ja) 2014-04-24 2015-10-29 株式会社日立製作所 ストレージシステム及び半導体記憶装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3954698B2 (ja) * 1997-08-29 2007-08-08 パナソニック コミュニケーションズ株式会社 メモリー制御装置
US6721316B1 (en) * 2000-02-14 2004-04-13 Cisco Technology, Inc. Flexible engine and data structure for packet header processing
JP4001280B2 (ja) * 2002-10-22 2007-10-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 記憶装置、記憶装置を制御するプログラム、記憶装置の制御方法、及び記録媒体
US8055745B2 (en) * 2004-06-01 2011-11-08 Inmage Systems, Inc. Methods and apparatus for accessing data from a primary data storage system for secondary storage
US7831747B2 (en) * 2004-12-08 2010-11-09 Intel Corporation Method and apparatus to generate a data descriptor
ATE467893T1 (de) * 2005-11-22 2010-05-15 Sandisk Corp Verfahren und speichersystem für legacy-hosts
WO2008057833A2 (en) * 2006-11-08 2008-05-15 Sicortex, Inc. System and method for remote direct memory access without page locking by the operating system
US8819208B2 (en) * 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
IN2014DN05977A (ko) * 2012-02-08 2015-06-26 Hitachi Ltd
US8874850B1 (en) * 2012-05-10 2014-10-28 Netapp, Inc. Hierarchically tagged cache
JP5802804B2 (ja) 2012-06-19 2015-11-04 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
JP5586718B2 (ja) 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US9582219B2 (en) * 2013-03-12 2017-02-28 Netapp, Inc. Technique for rapidly converting between storage representations in a virtualized computing environment
US10452316B2 (en) * 2013-04-17 2019-10-22 Apeiron Data Systems Switched direct attached shared storage architecture
US9557937B2 (en) * 2013-08-21 2017-01-31 Netapp, Inc. Systems, methods, and computer program products implementing hybrid file structures for data storage
US20160232103A1 (en) * 2013-09-26 2016-08-11 Mark A. Schmisseur Block storage apertures to persistent memory
US9875180B2 (en) * 2014-02-24 2018-01-23 Sandisk Technologies Llc Systems and methods for managing storage compression operations
US9286209B2 (en) * 2014-04-21 2016-03-15 Avago Technologies General Ip (Singapore) Pte. Ltd. System, method and computer-readable medium using map tables in a cache to manage write requests to a raid storage array
US20150347310A1 (en) * 2014-05-30 2015-12-03 Lsi Corporation Storage Controller and Method for Managing Metadata in a Cache Store
US9639268B2 (en) * 2014-08-21 2017-05-02 Datrium, Inc. Distributed data storage system with key-based addressing
US9417955B2 (en) * 2014-08-21 2016-08-16 Datrium, Inc. Data reconstruction in distributed data storage system with key-based addressing
WO2016185573A1 (ja) 2015-05-20 2016-11-24 株式会社日立製作所 重複排除ストレージにおけるボリュームバックアップ・リストア方法
US10802740B2 (en) * 2016-04-21 2020-10-13 Netapp, Inc. Systems, methods, and computer readable media providing arbitrary sizing of data extents

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198368A (ja) 2009-02-25 2010-09-09 Hitachi Information & Communication Engineering Ltd 補助記憶装置用フィルタドライバ手段を備えた電子計算機、補助記憶装置用フィルタドライバプログラム、及び、補助記憶装置用フィルタドライバプログラムの記録媒体
JP2011209973A (ja) 2010-03-30 2011-10-20 Hitachi Ltd ディスクアレイ構成プログラム、計算機、計算機システム
JP2012064094A (ja) 2010-09-17 2012-03-29 Fujitsu Ten Ltd 情報記録装置
JP2015036981A (ja) 2013-08-16 2015-02-23 エルエスアイ コーポレーション 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ
WO2015118630A1 (ja) 2014-02-05 2015-08-13 株式会社日立製作所 ストレージシステムおよびストレージシステム用キャッシュ制御装置
US20170139842A1 (en) 2014-02-05 2017-05-18 Hitachi, Ltd. Storage system and cache control apparatus for storage system
WO2015162766A1 (ja) 2014-04-24 2015-10-29 株式会社日立製作所 ストレージシステム及び半導体記憶装置

Also Published As

Publication number Publication date
JP2019133601A (ja) 2019-08-08
CN110134618A (zh) 2019-08-16
US10866743B2 (en) 2020-12-15
US20190243563A1 (en) 2019-08-08
JP6443572B1 (ja) 2018-12-26
KR20190094108A (ko) 2019-08-12

Similar Documents

Publication Publication Date Title
KR102245113B1 (ko) 저장 제어 디바이스, 저장 제어 방법, 및 기록 매체
US11042487B2 (en) Memory system and method for controlling nonvolatile memory
US9916248B2 (en) Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache
CN112930520B (zh) 用于使用以太网驱动器及以太网络开放通道驱动器存储数据的系统及方法
US8943265B2 (en) Storage array controller
EP2254053B1 (en) FAT-analysis for optimized sequential cluster management
EP1782211B1 (en) Fat analysis for optimized sequential cluster management
US7584229B2 (en) Method and system for priority-based allocation in a storage pool
WO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
US20110264884A1 (en) Data storage device and method of operating the same
KR102603070B1 (ko) 메모리 시스템, 메모리 시스템에 데이터를 기록하는 방법 및 메모리 시스템으로부터 데이터를 판독하는 방법
US7415653B1 (en) Method and apparatus for vectored block-level checksum for file system data integrity
US20170185625A1 (en) Key-value store with partial data access
WO2015162758A1 (ja) ストレージシステム
JP6443571B1 (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
US20150121003A1 (en) Storage controllers
US20180307440A1 (en) Storage control apparatus and storage control method
US11579786B2 (en) Architecture utilizing a middle map between logical to physical address mapping to support metadata updates for dynamic block relocation
US10452606B1 (en) Continuous metadata formatting
US20220413707A1 (en) Automatic data separation and placement for compressed data in a storage device
US20180307419A1 (en) Storage control apparatus and storage control method
US20180307615A1 (en) Storage control apparatus and storage control method
US7437528B1 (en) Gang blocks

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant