Movatterモバイル変換


[0]ホーム

URL:


KR102688568B1 - 오프로드된 디바이스 구동 소거 코딩 - Google Patents

오프로드된 디바이스 구동 소거 코딩
Download PDF

Info

Publication number
KR102688568B1
KR102688568B1KR1020200170404AKR20200170404AKR102688568B1KR 102688568 B1KR102688568 B1KR 102688568B1KR 1020200170404 AKR1020200170404 AKR 1020200170404AKR 20200170404 AKR20200170404 AKR 20200170404AKR 102688568 B1KR102688568 B1KR 102688568B1
Authority
KR
South Korea
Prior art keywords
data
storage device
storage
blocks
storage devices
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020200170404A
Other languages
English (en)
Other versions
KR20210097014A (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 삼성전자주식회사filedCritical삼성전자주식회사
Publication of KR20210097014ApublicationCriticalpatent/KR20210097014A/ko
Application grantedgrantedCritical
Publication of KR102688568B1publicationCriticalpatent/KR102688568B1/ko
Activelegal-statusCriticalCurrent
Anticipated expirationlegal-statusCritical

Links

Classifications

Landscapes

Abstract

데이터를 저장하는 방법은 스토리지 디바이스들의 그룹에서 사용자 데이터를 수신하는 것을 포함할 수 있고, 여기서 스토리지 디바이스들은 상호 연결되고, 사용자 데이터를 스토리지 디바이스의 그룹에서 리던던시 블록들로 소거 코딩하고, 리던던시 블록들을 적어도 두 개의 스토리지 디바이스들에 저장하는 것을 포함할 수 있다. 소거 코딩은 적어도 2 개의 스토리지 디바이스들에 분산될 수 있다. 리던던시 블록들은 신뢰성 그룹들로 배열될 수 있다. 리던던시 블록들은 사용자에 의한 사용자 데이터의 분할과 독립적으로 스토리지 디바이스들에 의해 그룹화될 수 있다. 방법은 리던던시 블록들에 기초하여 데이터를 복구하는 것을 더 포함할 수 있다. 스토리지 디바이스는 스토리지 매체, 네트워크 패브릭을 통해 하나 이상의 다른 스토리지 디바이스들과 통신하도록 구성된 네트워크 인터페이스 및 사용자 데이터를 하나 이상의 다른 스토리지 디바이스들과 협력하여 리던던시 블록들로 소거 코딩하도록 구성된 스토리지 프로세싱 유닛을 포함할 수 있다.

Description

오프로드된 디바이스 구동 소거 코딩{OFFLOADED DEVICE-DRIVEN ERASURE CODING}
본 개시는 일반적으로 데이터 스토리지 시스템의 소거 코딩에 관한 것으로, 더 구체적으로 오프로드된 디바이스 구동 소거 코딩을 위한 방법 및 장치에 관한 것이다.
소거 코딩 (erasure coding, EC)은 하드 디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD)와 같은 다수 스토리지 디바이스를 갖는 데이터 스토리지 시스템에서 신뢰성을 개선하고 데이터 손실을 극복하기 위해 사용될 수 있는 기술을 나타낸다. 소거 코딩을 갖는 스토리지 시스템에서, 파일 또는 다른 데이터 단위는 다수의 고정된 크기의 데이터 블록으로 분할될 수 있다. 리드-솔로몬(Reed-Solomon)과 같은 코딩 알고리즘은 데이터 블록에 기초하여 하나 이상의 패리티 데이터 블록을 계산하는데 사용될 수 있다. 데이터 블록 및 패리티 블록은 별도의 스토리지 디바이스에 저장될 수 있다. 만약 스토리지 디바이스들 중 하나가 고장나면, 고장난 디바이스에 있던 데이터 블록은 나머지 데이터 블록 및 하나 이상의 패리티 블록을 사용하여 재구성될 수 있다. 패리티 블록 대 데이터 블록의 비(the ratio of parity blocks to data blocks)와 같은 코딩 알고리즘의 파라미터는 저장 효율과 데이터 신뢰성 사이의 균형을 이루도록 조정될 수 있다.
데이터를 저장하는 방법은 스토리지 디바이스들의 그룹에서 사용자 데이터를 수신하는 것 - 스토리지 디바이스들은 상호 연결되어 있음 -, 스토리지 디바이스들의 그룹에서 사용자 데이터를 리던던시 블록들로 소거 코딩하는 것 및 리던던시 블록들을 적어도 둘 이상의 스토리지 디바이스들에 저장하는 것을 포함할 수 있다. 소거 코딩은 적어도 둘 이상의 스토리지 디바이스 중으로 분산될 수 있다. 리던던시 블록들은 신뢰성 그룹들로 배열될 수 있다. 각각의 스토리지 디바이스들은 리던던시 블록들의 신뢰성 그룹들에 관한 메타 데이터를 유지할 수 있다. 사용자 데이터는 사용자로부터 수신될 수 있고, 사용자 데이터는 사용자에 의해 스토리지 디바이스들 사이에서 분할될 수 있다. 리던던시 블록들은 사용자에 의한 사용자 데이터의 분할과 독립적으로 스토리지 디바이스들에 의해 그룹화될 수 있다.
스토리지 디바이스들 중 적어도 하나는 계산 저장이 가능할 수 있고, 사용자는 사용자 데이터 상에서 수행될 계산에 기초하여 스토리지 디바이스들 사이에서 사용자 데이터를 분할할 수 있다. 사용자 데이터는 논리 블록들로 배열될 수 있고, 리던던시 블록들은 다수의 논리 블록들을 포함할 수 있다. 스토리지 디바이스들 중 적어도 하나는 사용자 데이터를 수신하는 것에 응답하여 기록 확인(write acknowledgment)을 전송할 수 있다. 스토리지 디바이스들 중 적어도 하나는 사용자 데이터의 소거 코딩에 기초하여 신뢰성 있는 기록 확인(reliable write acknowledgment)을 전송할 수 있다. 방법은 리던던시 블록들에 기초하여 데이터를 복구하는 것을 더 포함할 수 있다. 리던던시 블록들에 기초한 데이터 복구는 라이브 리던던시 블록(live redundancy block)들로부터 데이터를 복구하는 것을 포함할 수 있다. 리던던시 블록들에 기초하여 데이터를 복구하는 것은 라이브 리던던시 블록들로부터만 데이터를 복구하는 것을 포함할 수 있다. 리던던시 블록들은 데이터의 복구를 용이하게 하기 위해 자기-서술적인(self-descriptive) 것일 수 있다.
각각의 스토리지 디바이스는, 소거될 수 있는 신뢰성 그룹의 리던던시 블록에 대해, 신뢰성 그룹에 리던던시 블록을 갖는 모든 다른 스토리지 디바이스에 통지할 수 있고, 신뢰성 그룹에서 리던던시 블록을 갖는 다른 모든 스토리지 디바이스로부터 진행 신호를 수신하는 것에 응답하여 리던던시 블록을 소거할 수 있다. 스토리지 디바이스 그룹의 제1 스토리지 디바이스는 소거될 수 있는 리던던시 블록에 대해 스토리지 디바이스 그룹의 제2 스토리지 디바이스에 통지할 수 있다. 제1 스토리지 디바이스는 제2 스토리지 디바이스로부터 진행 신호를 수신한 것에 응답하여 리던던시 블록을 소거할 수 있다. 스토리지 디바이스 그룹의 제1 스토리지 디바이스는 스토리지 디바이스 그룹의 제2 스토리지 디바이스에 의해 신뢰성 그룹의 리던던시 블록이 제2 스토리지 디바이스에 의해 소거될 것임이 통지될 수 있고, 신뢰성 그룹에 있는 리던던시 블록을 검사할 수 있다. 제1 스토리지 디바이스는 진행 신호를 제2 스토리지 디바이스에 전송할 수 있다. 제1 스토리지 디바이스는 신뢰성 그룹에 있는 리던던시 블록이 새로운 신뢰성 그룹에 추가되도록 신뢰성 그룹 내의 리던던시 블록을 갖는 다른 스토리지 디바이스에 요청을 전송할 수 있다. 스토리지 디바이스 그룹은 신뢰성 그룹에서의 리던던시 블록의 소거에 기초하여 신뢰성 그룹에 대한 패리티를 재계산할 수 있다.
스토리지 디바이스는 스토리지 매체, 하나 이상의 다른 스토리지 디바이스와 통신하도록 구성된 네트워크 인터페이스 및 하나 이상의 다른 스토리지 디바이스와 협력하여 리던던시 블록으로 사용자 데이터를 소거 코딩하도록 구성된 스토리지 프로세싱 유닛을 포함할 수 있다. 스토리지 프로세싱 유닛은 하나 이상의 리던던시 블록들에 기초하여 데이터를 복구하도록 구성될 수 있다. 스토리지 프로세싱 유닛은 하나 이상의 리던던시 블록 상의 가비지 컬렉션 동작에 응답하여 패리티 재계산을 개시하도록 구성될 수 있다. 리던던시 블록은 신뢰성 그룹들로 배열될 수 있다. 스토리지 프로세싱 유닛은 소거될 신뢰성 그룹의 리던던시 블록에 대해 신뢰성 그룹의 리던던시 블록을 갖는 하나 이상의 다른 스토리지 디바이스에 통지하고, 신뢰성 그룹에서 리던던시 블록을 갖는 하나 이상의 다른 스토리지 디바이스들로부터 진행 신호를 수신하는 것에 응답하여 리던던시 블록을 소거하도록 구성될 수 있다.
데이터 스토리지 시스템은 패브릭이 가능한 제1 스토리지 디바이스 및 패브릭 가능하고, 네트워크 패브릭을 통해 제1 스토리지 디바이스에 연결된 제2 스토리지 디바이스를 포함할 수 있고, 여기서 제1 스토리지 디바이스 및 제2 스토리지 디바이스는 사용자로부터 사용자 데이터를 수신하고, 리던던시 블록들로 사용자 데이터를 협력하여 소거 코딩하도록 구성될 수 있다. 사용자 데이터는 사용자에 의해 스토리지 디바이스들 사이에서 분할될 수 있고, 제1 스토리지 디바이스 및 제2 스토리지 디바이스는 사용자에 의한 사용자 데이터의 분할과 독립적으로 사용자 데이터를 리던던시 블록들로 그룹화하도록 구성될 수 있다. 리던던시 블록들은 신뢰성 그룹들로 배열될 수 있다. 제1 스토리지 디바이스 및 제2 스토리지 디바이스는 하나 이상의 리던던시 블록에 기초하여 데이터를 복구하도록 구성될 수 있다.
도면은 반드시 축척대로 도시된 것은 아니며 유사한 구조 또는 기능의 요소는 일반적으로 도면 전체에 걸쳐 예시적인 목적을 위해 유사한 참조 번호로 표시된다. 도면은 단지 여기에 기술된 다양한 실시예의 설명을 용이하게 하도록 의도된다. 도면은 여기에 개시된 교시의 모든 측면을 설명하지 않으며, 청구 범위를 제한하지 않는다. 도면이 모호해지는 것을 방지하기 위해, 모든 구성 요소, 연결 등이 도시되지 않을 수 있고, 모든 구성 요소가 참조 번호를 갖지 않을 수 있다. 그러나, 구성 요소 구성의 패턴은 도면으로부터 쉽게 명백해질 수 있다. 첨부 도면은 본 명세서와 함께 본 개시의 예시적인 실시예를 설명하고, 상세한 설명과 함께 본 개시의 원리를 설명하는 역할을 한다.
도 1은 본 개시에 따른 다수의 스토리지 디바이스를 갖는 스토리지 시스템에서 소거 코딩을 구현하기 위한 기술을 도시한다.
도 2는 본 개시에 따른 데이터 스토리지 시스템의 실시예를 도시한다.
도 3은 본 개시에 따른 스토리지 디바이스의 예시적인 실시예를 도시한다.
도 4는 본 개시에 따른 데이터 스토리지 시스템의 다른 실시예를 도시한다.
도 5는 본 개시에 따른 소거 코딩을 구현하기 위한 기술의 예시적인 실시예를 도시한다.
도 6은 본 개시에 따른 그래프 계산의 시각적 표현이다.
도 7은 본 개시에 따른 다수의 스토리지 디바이스들간의 데이터 분열 상에 동작할 수 있는 그래프 계산을 도시한다.
도 8은 본 개시에 따른 다수의 스토리지 디바이스들간의 그래프 계산을 나누기 위한 기술의 예시적인 실시예를 도시한다.
도 9는 본 개시에 따른 기록 및 인코딩 동작의 실시예를 도시한 시퀀스 다이어그램이다.
도 10은 본 개시에 따른 디바이스 구동 소거 코딩 프로세스가 본 개시에 따른 가비지 컬렉션을 이용하는 스토리지 디바이스에서 소거 동작과 어떻게 상호 작용할 수 있는지의 예시를 도시한다.
도 11은 본 개시에 따른 소거 코딩 및 가비지 컬렉션을 조정하기 위한 프로세스의 예시적인 실시예를 도시한 시퀀스 다이어그램이다.
도 12는 본 개시에 따른 데이터 판독 동작 및 복구(repair) 및/또는 재구성 프로세스의 실시예를 도시한 시퀀스 다이어그램이다.
소거 코딩(EC)은 중앙 집중식 프로세스가 사용자 데이터를 고정된 크기의 데이터 청크로 분할하고 데이터 청크에 기초하여 패리티 청크를 계산할 수 있는 시스템 레벨에서 구현될 수 있는 스토리지 시스템을 의미할 수 있다. 데이터 및 패리티 청크는 다수의 스토리지 디바이스에 걸쳐 분산될 수 있으며, 이는 어떤 청크가 데이터 청크이고 어떤 청크가 패리티 청크인지를 추적할 필요가 없는 수동적인 참가자(passive participant)일 수 있다. 또한 시스템 레벨 EC는 데이터 청크 및/또는 패리티 청크의 크기, 경계 및/또는 저장 위치를 추적해야만 하는 사용자 및/또는 어플리케이션 없이 구현될 수 있다.
도 1은 본 개시에 따른 다수의 스토리지 디바이스를 갖는 스토리지 시스템에서 소거 코딩을 구현하기 위한 기술을 도시한다. 세 가지 상이한 파일 또는 다른 사용자 데이터 단위가 제1 사용자 데이터, 제2 사용자 데이터 및 제3 사용자 데이터로 표시된다. 이 사용자 데이터는 사용자, 어플리케이션, 파일 시스템 및/또는 분산 시스템(100)에 제공되거나 및/또는 사용자, 어플리케이션, 파일 시스템 및/또는 분산 시스템(100)에 의해 생성될 수 있다. (편의를 위해, 사용자 및/또는 어플리케이션 및/또는 파일 시스템 및/또는 분산 시스템(100)은 사용자 또는 사용자/어플리케이션으로 지칭될 수 있다.) 소거 코딩 계층(102)은 사용자 데이터를 고정된 크기의 데이터 청크(data chunk; DC)로 분할 또는 나눌 수 있고, 임의의 적절한 EC 알고리즘을 사용하여 데이터 청크로부터 패리티 청크(parity chunk; PC)를 계산하고, 데이터 및 패리티 청크를 다수의 스토리지 디바이스 Dev 1 내지 Dev 6에 분산시킬 수 있다. 도 1에 도시된 시스템에서, 소거 코딩 계층(102)은 한 번에 4개의 데이터 청크를 처리하고, 4개의 데이터 청크의 각 배치(batch)에 대해 2개의 패리티 청크를 계산할 수 있다. 4개의 데이터 청크 및 2개의 연관된 패리티 청크는 Dev 1 내지 Dev 6에 걸쳐 분산된 신뢰성 그룹(Reliability group; RG)으로 지칭할 수 있다. 예를 들어, 도 1에서, 소거 코딩 계층(102)은 제1 사용자 데이터로부터 4개의 데이터 청크를 처리하고, Dev 1 내지 Dev 6에 걸쳐 저장되는 제1 신뢰성 그룹(RG1)을 형성할 수 있는 2개의 패리티 청크를 생성하는 것으로 도시되어 있다. 유사하게, 소거 코딩 계층(102)은 신뢰성 그룹(RG2)으로서 저장될 수 있는 2개의 패리티 청크를 생성하기 위해, 제2 사용자 데이터로부터의 2개의 데이터 청크와 함께 제1 사용자 데이터로부터의 2개의 잔여 데이터 청크를 처리할 수 있다. 유사하게, 제2 사용자 데이터로부터의 하나의 잔여 데이터 청크는 신뢰성 그룹(RG3)으로서 저장될 수 있는 둘 이상의 패리티 청크를 생성하기 위해, 제3 사용자 데이터로부터의 3개의 데이터 청크로 처리될 수 있다.
제1 사용자 데이터, 제2 사용자 데이터 및 제3 사용자 데이터는 도 1의 상단에 동일한 크기의 청크로 나뉘어져 있지만, 사용자 데이터의 분할이 소거 코딩 계층(102)에 의해 수행될 수 있기 때문에, 데이터를 제공했던 사용자 및/또는 어플리케이션 및/또는 시스템은 청크의 수 및/또는 크기 및/또는 배열을 알지 못할 수 있다. 따라서, 사용자 데이터의 분할 라인은 EC 프로세스 이후에 원래의 사용자 데이터가 스토리지 디바이스 Dev 1 내지 Dev 6에 걸쳐 분산될 수 있는 위치를 이해하기 위한 시각적 보조물로서 도시될 수 있다. 제1 사용자 데이터, 제2 사용자 데이터 및 제3 사용자 데이터에는 각 데이터 청크의 위치를 식별하는데 도움이 되는 다양한 유형의 음영으로 표시된다.
도 1에 도시된 기술에서, 데이터 및/또는 패리티 청크는 논리 블록 어드레스(logical block address, LBA)에 정렬될 수 있다. 이러한 데이터 청크는 논리 블록 어드레스 유닛(LBA 유닛) 또는 간단히 "LBA"로 지칭될 수 있다. 즉, LBA는 논리 블록 주소, 또는 논리 블록 주소 상에 정렬된 데이터 단위를 나타낼 수 있다.
구현 세부사항에 따라, 상술된 중앙 집중식 EC 기술은 다양한 문제와 과제를 제시할 수 있다. 예를 들어, 기록 데이터(write data)의 중앙 집중식 인코딩(및 판독 데이터(read data)의 디코딩)은 시스템 레벨에서 프로세싱 병목 현상을 일으킬 수 있다. 이는 다른 스토리지 디바이스에 대해 서로 다른 유형 및/또는 다른 데이터 소스가 있는 경우 발생할 수 있으며, 다수의 스토리지 디바이스가 있는 시스템에서 일반적으로 발생할 수 있다. 예를 들어, 시스템 레벨의 중앙 집중식 EC 기술에서, 분산된 스토리지 디바이스로 다시 이동하기 전에, EC에 대한 계산이 수행되는 중앙 노드를 통해, 데이터가 다수의 분산된 노드로부터 인위적으로 이동해야할 수 있다. 따라서 프로세싱 병목 현상에 추가하여, 중앙 프로세싱 위치에서 데이터 이동 병목 현상이 있을 수 있다.
중앙 집중식 EC 기술의 추가적인 잠재적 문제는 하나의 스토리지 디바이스에서 데이터 청크를 업데이트하는 것이 다른 스토리지 디바이스로부터 신뢰성 그룹에 있는 하나 이상의 대응하는 데이터 청크를 판독하고, 신뢰성 그룹에 대해 하나 이상의 패리티 청크를 다시 계산하고, 하나 이상의 재계산된 패리티 청크를 다른 스토리지 디바이스에 다시 기록하는 것을 요구할 수 있다는 것이다. 이러한 업데이트 구동(update-driven)의 패리티 재작성은 기록 증폭을 초래하여 스토리지 디바이스의 처리량 및/또는 수명을 줄일 수 있다.
중앙 집중식 EC 기술의 또 다른 잠재적 문제는 전형적으로 LBA를 기반으로 하기 때문에, 드라이브에 기록된 실제 사용자 데이터가 아닌 고장난 드라이브 전체가 재구성될 수 있다는 것이다. 이로 인해 스토리지 디바이스에 대한 복구 프로세스가 오래 걸릴 수 있다. 더욱이, 이는 스토리지 디바이스의 크기 및/또는 밀도(density)가 증가함에 따라 점점 큰 문제가 될 수 있다.
중앙 집중식 EC 기술의 또 다른 잠재적 문제는 계산 스토리지 디바이스 사용에 비효율성을 야기할 수 있다는 것이다. 저장된 데이터 상에 계산이 수행될 수 있도록, 계산 스토리지 디바이스는 디바이스에 계산 자원을 포함할 수 있다. 이는 스토리지 디바이스의 I/O 트래픽뿐만 아니라, 다른 계산, 메모리, 스토리지 및/또는 I/O 자원 상의 부담을 감소시킬 수 있다. 그러나, EC 기술이 계산 스토리지 디바이스에 적용되는 경우, 스토리지 디바이스에 걸친 사용자 데이터의 분할 및 분산은 사용자 및/또는 어플리케이션의 계산 전략을 알지 못하는 시스템-레벨 소거 코딩 계층에 의해 제어될 수 있다. 따라서, 스토리지 디바이스에서의 계산 자원은 EC 알고리즘에 의해 결정된 데이터 파티션 상에서만 동작할 수 있고, 이는 계산에 대해 이상적이거나 효율적이지 않을 수 있다. 일부 경우에, 이는 계산 스토리지 디바이스의 비효율적인 동작 및/또는 과소-이용으로 이어질 수 있다.
도 2는 본 개시에 따른 데이터 스토리지 시스템의 실시예를 도시한다. 도 2에 도시된 시스템은 하나 이상의 패브릭-가능 스토리지 디바이스(110)의 그룹을 포함할 수 있으며, 이들 각각은 스토리지 디바이스(110)를 네트워크 패브릭(116)에 연결하도록 구성된 네트워크 인터페이스(112)를 포함할 수 있다. 또한, 각각의 스토리지 디바이스(110)는 사용자, 어플리케이션, 파일 시스템 또는 다른 데이터 자원(120)으로부터 네트워크 패브릭(116)을 통해 수신된 사용자 데이터(118)에 대해 다른 스토리지 디바이스(110)와 협력하여 소거 코딩을 수행하도록 구성될 수 있는 소거 코딩(EC) 로직(114)을 포함할 수 있다. 사용자, 어플리케이션, 파일 시스템 또는 다른 데이터 자원(120)은 간단히 사용자 또는 사용자/어플리케이션으로 지칭될 수 있다.
도 2에 도시된 시스템에서, EC 프로세스에서 상이한 스토리지 디바이스(110)로의 분산을 위한 사용자 데이터(118)의 분할(partitioning)은 데이터 분할로부터 분리될 수 있다. 더욱이, EC 계산은 스토리지 디바이스(110)로 오프로드될 수 있다. 예를 들어, 사용자(120)는 상이한 스토리지 디바이스(110)에 저장된 데이터 청크의 크기 및 경계 위치에 대한 제어를 유지할 수 있고, 스토리지 디바이스(110)에서의 EC 로직(114)은 사용자에 의해 구현된 분할과 상이한 단위(granularity)로 데이터를 개시 및 소거 코딩할 수 있다. 임의의 스토리지 디바이스(110)가 계산 저장 능력을 갖는 경우, 사용자의 인-스토리지 계산 요구에 적합한 방식 및/또는 스토리지 디바이스(110)에서 임의의 계산 저장 자원의 효율 및/또는 이용을 개선 또는 최적화하는 방식으로 이는 사용자가 사용자 데이터를 분할하고 스토리지 디바이스들(110) 사이에서 사용자 데이터가 분산할 수 있게 할 수 있다. 또한 이 배열은 각각의 스토리지 디바이스(110)의 EC 로직(114)이 EC를 개시하기 위해 다른 스토리지 디바이스(110)의 EC 로직과 통신하고, 임의의 크기, 수 및/또는 배열의 리던던시 블록으로 데이터를 독자적으로 배열하고, 임의의 크기, 수 및/또는 배열의 패리티 블록을 계산하고, 리던던시 블록 및 패리티 블록을 임의의 크기, 수 및/또는 배열의 신뢰성 그룹으로 협력적인 방식으로(cooperative manner) 배열할 수 있게 할 수 있다. 또한, 네트워크 패브릭을 통해 통신할 수 있으면, 스토리지 디바이스(110)는 아래에 설명된 바와 같이 오래되거나, 유효하지 않거나, 데드(dead) 데이터 및 다른 특징의 지연된 소거를 구현할 수 있다.
네트워크 패브릭(116)은 이더넷, 파이버 채널, InfiniBand 등과 같은 임의의 적절한 네트워킹 프로토콜 및/또는 매체뿐만 아니라, 직접적으로든 또는 네트워크 패브릭(116)의 일부일 수 있는, 스위치, 허브 등과 같은 중개 장치를 통해서든, PCIe(peripheral component interconnect express), SATA(Serial ATA), SAS(Serial Attached SCSI), OcuLink 등과 같은 스토리지 디바이스 사이의 통신을 가능하게 할 수 있는 임의의 다른 통신 또는 상호 연결 프로토콜로 구현될 수 있다.
도 3은 본 개시에 따른 스토리지 디바이스의 예시적인 실시예를 도시한다. 도 3에 도시된 스토리지 디바이스(122)는 네트워크 인터페이스(124), 스토리지 프로세싱 유닛(SPU, 126), 스토리지 매체(128), 메모리(130), 및 스토리지 인터페이스(132)를 포함할 수 있다. 이 예시적 실시예에서, 네트워크 인터페이스(124)는 2개의 포트(134, 136) 또는 그 이상을 포함할 수 있고, 직접적으로든 또는 스위치, hub 등과 같은 중간 장치를 통해서든, 도 2와 관련하여 상술한 것처럼 네트워크 패브릭(116)을 구현하는데 사용될 수 있는 모든 적절한 네트워킹 프로토콜 및/또는 매체와 함께 구현할 수 있다. 다른 실시예에서, 다수의 및/또는 여러 타입의 포트 및/또는 인터페이스가 포함될 수 있다. 일 실시예에서, 네트워크 인터페이스(124)는 이더넷으로 구현될 수 있다.
SPU(126)는 마이크로프로세서, 마이크로컨트롤러 등을 포함하는 모든 적절한 프로세싱 장치로 구현될 수 있고, SOC(system on chip), FPGA(field programmable gate array), 표준 및/또는 맞춤형(custom) ICs(integrated circuits)의 조합, ASICs(application specific integrated circuits) 등, 또는 이들의 임의의 조합으로서 구현될 수 있다.
SPU(126)는 본 개시에 따른 소거 코딩 기능을 구현하는데 사용될 수 있는 EC 로직을 포함하거나 또는 구현할 수 있다. SPU(126)는 또한 본 개시에 따른 계산 저장을 위한 처리 기능(processing functionality)을 제공할 수 있는 계산 저장 로직을 포함하거나 구현할 수 있다. SPU(126)는 또한 아래 설명하는 것과 같이 기록 확인, 데이터를 소거(가비지 컬렉션; garbage collect)할 것인지 아니면 새로운 EC 신뢰성 그룹을 요청할 것인지를 결정하는 것과 같은 임의의 다른 기능을 포함하거나 구현할 수 있다.
스토리지 매체(128)는 도 3에 도시된 플래시 메모리와 같은 솔리드 스테이트 스토리지뿐만 아니라, 자기 매체, 광학 매체 등, 또는 다른 모든 적절한 스토리지 매체나 그것들의 조합으로 구현될 수 있다. 메모리(130)는 도 3에 도시된 SRAM(static RAM) 및/또는 DRAM(dynamic RAM)과 같은 임의의 타입의 RAM(random access memory) 뿐만 아니라 PMEM(persistent memory), NVRAM(non-volatile RAM), 또는 다른 임의의 타입의 메모리 및/또는 이들의 조합으로 구현될 수 있다.
스토리지 인터페이스(132)는 도 3에 도시된 NVMe(non-volatile memory express) 뿐만 아니라, SATA, SAS, 또는 임의의 다른 스토리지 인터페이스로 구현될 수 있다. 만일, 네트워크 인터페이스(124)가 이더넷 또는 다른 네트워크 프로토콜로 적어도 부분적으로 구현될 경우, 스토리지 인터페이스(132)로 NVMe를 사용하는 것은 NVMe-oF(NVMe over fabric) 기능을 제공할 수 있다.
예를 들어, 도 3에 도시된 스토리지 디바이스(122)의 예시적 실시예는 위 도 2에 도시된 일부 또는 모든 스토리지 디바이스(110)는 물론 아래의 도 4 및/또는 여기에 논의되거나 개시된 모든 스토리지 디바이스를 구현하기 위해 사용될 수 있다. 몇몇 다른 실시예에서는 도 3에 도시된 모든 요소(elements)를 포함하지 않을 수 있고, 몇몇 실시예에서는 일부 또는 모든 구성이 별도로, 통합하여, 또는 이들의 조합으로 실현될 수 있다.
도 4는 본 개시에 따른 데이터 스토리지 시스템의 다른 실시예를 도시한다. 도 4에 도시된 시스템은 도 2에 도시된 것과 유사할 수 있지만, 예를 들면 본 개시에 따른 디바이스 구동 소거 코딩(device-driven EC) 구현을 위해 인접 스토리지 디바이스(110) 사이에 효율적인 통신을 가능하게 하는 원형이나 링 토폴로지(topology) 또는 임의의 토폴로지로 배열된 도 3에 도시된 것과 같은 스토리지 디바이스(110)를 포함할 수 있다. 일부 실시예에서 네트워크 토폴로지는 사용자나 호스트의 개입 없는, 예컨대 패브릭 가능한 스토리지 디바이스 사이의 동등 계층간 통신(peer-to-peer communication)이 가능할 수 있다.
도 5는 본 개시에 따른 소거 코딩을 구현하기 위한 기술의 예시적인 실시예를 도시한다. 도 5의 실시예예서, EC 기술은 설명을 위해 제1 사용자 데이터, 제2 사용자 데이터 및 제3 사용자 데이터와 같은 사용자 데이터로 시작할 수 있고, 이는 도 1에 도시된 사용자 데이터에서 시작한 것과 근본적으로 동일할 수 있다. 사용자 데이터는, 각각의 데이터 청크 위치의 식별을 돕고 그들이 어떻게 처리되는지 이해를 돕기 위해 도 5에서 서로 다른 음영으로 도시되어 있다.
도 5에 도시된 실시예에서, 사용자 데이터는 사용자에 의해, 만일 청크가 포함되어 있다면, 개별 청크가 저장되어 있는 스토리지 디바이스의 효율성 및/또는 계산 저장 자원의 사용을 향상 또는 최적화할 수 있는, 및/또는 서로 다른 크기의 청크로 나뉠 수 있다. 예를 들면, 사용자는 제1 사용자 데이터를 서로 다른 크기의 데이터 청크 DC 1, DC 2, DC 3, DC 4 및 DC 5로 분할할 수 있는데, 왜냐하면 이들은 각각 계산이 각각의 청크 상에서 효율적으로 또는 최적으로 수행될 수 있는 방식과 관계가 있는 데이터의 양 및/또는 타입을 포함할 수 있기 때문이다. 사용자는 데이터 청크 DC 1, DC 2 및 DC 3을 스토리지 디바이스 Dev1, Dev2 및 Dev3에 각각 저장할 수 있다. 데이터 청크 DC 4 및 DC 5는 스토리지 디바이스 Dev 4에 저장될 수 있다.
비슷하게, 사용자는 제2 사용자 데이터를 Dev 1 및 Dev 3에 각각 저장되어 있는 데이터 청크 DC 6 및 DC 7로 분할할 수 있고, 사용자는 제3 사용자 데이터를 Dev 2, Dev 3 및 Dev 4에 각각 저장되어 있는 데이터 청크 DC 8, DC 9 및 DC 10으로 분할할 수 있다.
게다가, 사용자는 같은 데이터의 다수의 사본을 하나 이상의 스토리지 디바이스에 저장할 수 있다. 이것은, 예를 들면, 만일 동일한 데이터가 다른 스토리지 디바이스에서 다른 데이터와 함께 계산에 사용될 경우에 이로울 수 있다. 도 6 내지 도 8은 본 개시에 따른 이러한 데이터 세트 및 계산의 예시를 도시한다. 도 6은 중앙값 Y가 Y 주변에 바깥을 향하여 방사상으로 위치한 다른 값들과 함께 계산에 포함될 수 있는 그래프 계산의 시각적 표현이다. 만일, 전체 그래프가 두 개의 스토리지 디바이스 사이에서 나뉠 필요가 있다면, 도 7에 도시된 것처럼 오로지 하나의 디바이스에 Y를 저장하는 것은 계산을 끝마치기 위해 스토리지 디바이스(두 스토리지 디바이스 사이를 지나는 실선으로 표시된 것처럼) 사이의 동기화 및 데이터 전송을 더 많이 필요로 할 수 있다. 하지만, 도 8에 도시된 바와 같이 Y의 사본이 두 스토리지 디바이스 모두에 저장된다면(Y의 두 사본을 연결하는 점선으로 표시된 것처럼), 계산은 스토리지 디바이스 간에 더 적은 동기화 및 없거나 아주 적은 데이터 전송으로 완료될 수 있다.
사용자 데이터는 LBAs 및/또는 KVs(key-value sets)의 형태로 스토리지 디바이스에 저장될 수 있다. 상기 스토리지 디바이스는 그러나, LBAs 및/또는 KVs를 리던던시 블록으로 분류할 수 있고, 스토리지 디바이스에 저장된 사용자 데이터에 대하여 RBAs(redundancy block addresses)를 할당할 수 있다. 그러므로, 스토리지 디바이스는 LBA/KV 및 RBA 관리를 모두 수행할 수 있다. 스토리지 디바이스는 LBA/KV 사용자 데이터를 RBA로 그룹화할 수 있고, RBA는, 일부 실시예에서, 함께 소거될 수 있는, 연속적인 새로 기록된 데이터의 블록들일 가능성이 높다. RBA는 임의의 적절한 크기로 구현될 수 있다. 도 5에 도시된 예시에서, 각각의 RBA는 두 개 또는 세 개의 LBA를 포함할 수 있다. RBA는 리던던시 블록 주소(redundancy block addresses) 뿐만 아니라 RBA 경계에 저장된 데이터의 블록 모두를 지칭할 수 있다.
도 5를 다시 참조하면, 스토리지 디바이스는 새로 기록된 사용자 데이터는 하나의 디바이스로, 새롭게 기록된 데이터는 다른 디바이스로 그룹화하기 위해 서로 통신할 수 있다. 사용자 데이터를 데이터 RBA에 그룹화한 후, 각 스토리지 디바이스의 EC 로직은 EC 패리티 계산을 개시 및/또는 참여하여, 데이터 RBA와 함께 최종적으로 하나 이상의 신뢰성 그룹으로 그룹화되는 하나 이상의 패리티 RBA를 계산한다. 대안적으로, 또는 추가적으로, EC 로직은 또한 데이터 RBA에 국부 계산(local computations), 예컨대 컴프레션(compression), 암호화(encryption) 및/또는 기타 유사한 것을 수행하여 데이터를 하나 이상의 다른 디바이스로 보내도록 변환할 수 있다. 각각의 스토리지 디바이스는 RBA의 크기뿐만 아니라, 데이터 RBA에 대한 소거 코딩를 언제 개시할지를 결정 및/또는 다른 디바이스와 절충(negotiate)할 수 있다. 이러한 절충 이후, 신뢰성 그룹의 크기와 배열, 인접 디바이스 참여 등은 스토리지 디바이스에 의해 협조적으로 결정될 수 있다.
RBA의 소거 코딩 시간은 본 개시의 원리에 따른 다양한 고려 사항에 기초한다. 예를 들면, RBA 그룹의 소거 코딩은 하나 이상의 RBA에 사용자 데이터가 특정 절대 백분율에 채워질 때까지 지연될 수 있다. 또 다른 예시와 같이, RBA 그룹의 소거 코딩은 특정한 임계 시간이 지날 때까지 지연될 수 있다. 또 다른 예시에서, RBA 그룹의 소거 코딩의 시간은 프로비저닝(provisioning), 초과 프로비저닝(overprovisioning)등에 대한 충분한 RBA의 가용성(availability)에 기초하여 결정될 수 있다. 또한 이들의 임의의 조합 및/또는 다른 고려 사항도 소거 코딩의 시간을 결정하는데 이용될 수 있다.
다시 도 5를 참조하면, Dev 1부터 Dev 4에 저장된 리던던시 블록의 사용자 데이터에 기초하여, 스토리지 디바이스의 EC 로직은 스토리지 디바이스 Dev 5 및 Dev 6에 각각 저장된 패리티 청크 PC 1 및 PC 2에 대한 값을 계산할 수 있다.
그러므로, 사용자는 제1 사용자 데이터부터 제3 사용자 데이터를 데이터 청크 DC 1부터 DC 10으로 분할할 수 있고, 그것의 계산 저장 필요에 가장 적합한 방식으로 데이터 청크를 스토리지 디바이스 Dev 1 내지 Dev 4에 기록할 수 있다. 별도로, 스토리지 디바이스는 독립적으로 및/또는 독자적으로 데이터 청크를 리던던시 블록 RB1 내지 RB4로 그룹화하고, 리던던시 블록 RB5 및 RB6의 패리티 데이터를 계산할 수 있다. 리던던시 블록 RB1 내지 RB6은 일괄하여(collectively) 신뢰성 그룹으로 다루어질 수 있다.
그러므로, 도 5에 도시된 실시예에서, 사용자 데이터의 판독 및 기록이 LBA/KV 기반인데 반해, 소거 코딩과 관련된 판독 및 기록은 RBA 기반일 수 있다. 또한, 스토리지 디바이스가 근본적인 LBA 구조를 가짐에도 불구하고, EC 로직은 LBA를 EC에 대해 더욱 효율적일 수 있는 RBA 구조로 재배열할 수 있다. 또한, EC 로직은 사용자에 의해 그룹화된 어떠한 사용자 데이터도 분할하지 않는다.
도 5에 도시된 실시예에서, 리던던시 블록은 스토리지 디바이스상의 데이터 스트라이프(data stripe)를 따라 정렬될 수 있지만, 임의의 다른 적절한 정렬도 사용될 수 있다.
도 9는 본 개시에 따른 기록 및 인코딩 동작의 실시예를 도시한 시퀀스 다이어그램이다. 이 동작은 패브릭 가능하고(fabric-enabled) EC 가능한(EC-capable) 스토리지 디바이스 그룹(144)의 제1 스토리지 디바이스(144A)로 기록 데이터를 전송하는 사용자/어플리케이션(142)의 이벤트 E01에서 시작할 수 있다. 이벤트 E02에서, 제1 스토리지 디바이스(144A)는 제1 기록 확인을 사용자/어플리케이션(142)으로 전송할 수 있다. 이 제1 기록 확인은 제1 스토리지 디바이스(144A)가 기록 데이터를 수신하였다는 것을 나타낼 수 있지만, 소거 코딩되었다는 것을 아직 나타내지 않는다. 이벤트 E03에서, 제1 스토리지 디바이스(144A)는 그룹 내의 하나 이상의 다른 스토리지 디바이스와 통신하여 기록 데이터의 소거 코딩을 개시할 수 있다. 소거 코딩 동작(146)은 소거 코딩하기 위한 신규 및/또는 업데이트된 데이터를 가질 수 있는 임의의 개수의 스토리지 디바이스 사이에서 협력적으로 수행될 수 있으며, 다양한 스토리지 디바이스로부터 수신되는 데이터의 양, RBA의 가용성(availability), 임의의 시간 임계점 등에 기초하여 언제든지 수행될 수 있다. 소거 코딩 동작(146)은 예를 들어, 상술한 도 5와 관련하여 설명된 실시예와 유사할 수 있다. 이벤트 E04에서, 사용자/어플리케이션(142)로부터의 기록 데이터의 소거 코딩이 완료될 수 있다. 이벤트 E05에서, 제1 스토리지 디바이스(144A)는 제2 기록 확인을 사용자/어플리케이션(142)로 보낼 수 있다. 제2 기록 확인은 기록 데이터가 저장되었고 소거 코딩 되었다는 것을 나타내는 믿을만한 확인이다.
도 9에 도시된 기록 및 인코딩 동작은 그와 같은 다른 동작, 예컨대, 동일한 사용자/어플리케이션(142) 및/또는 다른 사용자/어플리케이션이 그룹(144) 내의 동일하거나 상이한 스토리지 디바이스로 데이터 전송을 시작하는 동작의 일부일 수 있고, 또는 이와 병렬로 발생할 수 있다. 따라서, 소거 코딩 동작(146)은 다수의 스토리지 디바이스에 걸쳐 여러 소스의 기록 데이터를 인코딩할 수 있다.
일부 스토리지 디바이스는 디바이스가 특정 저장 위치에 대한 디바이스의 기록 능력을 제한할 수 있는 덮어쓰기 제한이 있을 수 있다. 예를 들면, 낸드(NAND) 플래시 스토리지 매체를 갖는 스토리지 디바이스는 오직 전체 소거 블록(erase block)에서 데이터를 소거할 수만 있다. 주어진 어떠한 소거 블록에 있는 데이터의 일부를 업데이트하기 위해, 업데이트된 데이터는 소거 블록의 업데이트할 필요가 없는 다른 데이터와 함께 신규 블록에 기록될 수 있다. 이 업데이트는 시스템 레벨의 소거 코딩과 함께 스토리지 시스템의 패리티 데이터의 재계산 및 재기록을 트리거할 수 있다. 오래된 데이터는 가비지 컬렉션 프로세스에서 나중에 소거하도록 표시(marked)될 수 있다. 그러므로, 이전 버전의 사용자 데이터는 가비지 컬렉션 프로세스를 이용하는 스토리지 디바이스에 상당한 시간 동안 존재할 수 있다.
위에서 설명한 바와 같이, 데이터 업데이트에 의해 트리거된 패리티 데이터의 재계산 및 재기록(re-writing)은 스토리지 디바이스의 성과 및 수명을 감소시키는 기록 증폭(write amplification)의 원인이 될 수 있다. 본 개시에 따른 오프로드된 소거 코딩을 갖는 시스템에서, 가비지 컬렉션 프로세스를 활용하는 스토리지 디바이스는 이전 버전의 데이터를 활용하여 업데이트 촉발된(update-triggered) 패리티 재계산에 따른 판독 및 기록 증폭을 줄일 수 있는 방식으로 소거 코딩을 구현할 수 있다. 게다가, 몇몇 실시예에서, 본 개시에 따른 디바이스 구동 소거 코딩은 가비지 컬렉션보다 우선하는 오래된 데이터를 활용하여 다른 리던던시 블록의 복구(recovery) 및/또는 복구(repair)를 용이하게 할 수 있다.
도 10은 본 개시에 따른 디바이스 구동 EC 프로세스가 가비지 컬렉션을 이용하는 스토리지 디바이스에서 소거 동작과 어떻게 상호 작용할 수 있는지의 예시를 도시한다. 스토리지 디바이스 Dev 1, Dev 2 및 Dev 3은 각각 예컨대 낸드 플래시 스토리지를 위한 소거 블록을 형성할 수 있는 줄지어 배치된 많은 LBA를 포함할 수 있다. 이러한 예시에서, EC 프로세스는 사용자 데이터를 각각 3개의 LBA를 포함하는 RBA로 분할할 수 있다. 예를 들어, Dev 1의 RBAx, Dev 2의 RBAy 및 Dev 3의 RBAz는, RBAz가 그룹의 패리티 데이터를 포함할 수 있는 신뢰성 그룹(또는 소거 그룹)을 형성할 수 있다.
만일, LBA1의 데이터에 업데이트가 필요할 경우, 소거 블록을 형성하는 상단 행에 있는 모든 다른 LBA와 마찬가지로, 도 10에 도시된 바와 같이 그 다음 행의 아래쪽에 있는 업데이트된 데이터로 재기록될 수 있다. 시스템 레벨의 EC를 갖는 시스템에서 LBA1이 업데이트되면, 소거 블록, 즉 상단 행에 있는 모든 LBA의 즉각적인 업데이트를 트리거할 수 있다.
그러나, 본 개시에 따른 드라이브 구동 EC를 갖는 시스템에서, 예를 들어 하나 이상의 LBA가 변경된 데이터와 다른 RBA에 존재할 수 있기 때문에, 소거 블록의 모든 LBA에 대하여 패리티 데이터를 업데이트할 필요가 없을 수 있다. 도 10에 도시된 예시에서, RBAx의 데이터는 LBA1의 업데이트에 의해 변경되지 않을 수 있고, 상단 행(소거 블록) 전체가 가비지 컬렉션 될 때까지 변경되지 않을 수 있다. 그러므로, RBAx에 대한 패리티 재계산 및 재기록이 가비지 컬렉션이 발생할 때까지 지연되어 판독 및 기록 증폭을 줄일 수 있다. 따라서, 본 개시에 따른 스토리지 디바이스에서는 소거 코딩에 대한 일부 계산이 데이터 업데이트 대신 가비지 컬렉션에 결부될 수 있다.
도 11은 본 개시에 따른 소거 코딩 및 가비지 컬렉션을 조정하기 위한 프로세스의 예시적인 실시예를 도시한 시퀀스 다이어그램이다. 프로세스의 초기 단계에서, 패브릭 가능하고(fabric-enabled) EC 가능한(EC-capable) 스토리지 디바이스 그룹(150)의 제1 스토리지 디바이스(150A)는 예를 들어 가비지 컬렉션이 임박(imminent)할 수 있기 때문에 RBA가 소거되어야 한다고 결정할 수 있다. 이 RBA는 신뢰성 그룹(X)의 일부일 수 있다. 제1 스토리지 디바이스(150A)가 신뢰성 그룹(X) 내에 RBA를 가질 수 있는 다른 모든 스토리지 디바이스에게 제1 스토리지 디바이스(150A)의 RBA의 소거가 임박했음을 통지할 수 있을 때, 프로세스는 이벤트 E01에서 시작될 수 있다. 신뢰성 그룹(X) 내에 RBA를 갖는 다른 모든 스토리지 디바이스는 의사 결정 프로세스(152)를 수행할 수 있는데, 이 프로세스에서는 각각의 스토리지 디바이스가 신뢰성 그룹(X) 내의 자체 RBA를 검사하여 가비지 컬렉션을 위해 신뢰성 그룹(X) 내의 자체 RBA를 표시해야 하는지를 결정하거나, 또는, 신뢰성 그룹(X) 내의 자체 RBA가 새로운 신뢰성 그룹(소거 그룹)에 추가되도록 요청할 수 있다. 가비지 컬렉션을 위해 신뢰성 그룹(X) 내의 RBA를 표시하거나, 또는 신뢰성 그룹(X) 내의 자체 RBA를 새로운 신뢰성 그룹에 추가하도록 요청(및 완료를 확인)한 후, 이벤트 E02에서 각각의 다른 스토리지 디바이스는 제1 스토리지 디바이스(150A)에 진행 신호를 보낼 수 있다. 따라서, 만일, LBA 블록이 죽은 것(dead)으로 확인되면, 해당 LBA를 포함하는 RBA는 가비지 컬렉션되기 전에 복구를 위해, 해당 RBA가 잠재적으로 여전히 필요할 수 있는 다른 모든 스토리지 디바이스에 걸쳐 점검될 수 있다.
신뢰성 그룹(X) 내에 RBA를 갖는 다른 모든 스토리지 디바이스로부터 진행 신호를 수신한 후에, 이벤트 E03에서, 제1 스토리지 디바이스(150A)는 신뢰성 그룹(X) 내에 RBA가 있는 다른 모든 스토리지 디바이스에게 가비지 컬렉션 프로세스를 시작하도록 통보할 수 있다. 신뢰성 그룹(X) 내에 RBA를 갖는 각각의 서로 다른 스토리지 디바이스가 신뢰성 그룹(X) 내에 있는 자체 RBA의 가비지 컬렉션 프로세스를 완료한 후에, 이벤트 E04에서 제1 스토리지 디바이스(150A)에 가비지 컬렉션 완료 신호를 보낼 수 있다. 그런 다음, 이벤트 E05에서, 제1 스토리지 디바이스(150A)는 신뢰성 그룹(X) 내에 이전의 RBA를 갖고 있었던 다른 모든 스토리지 디바이스에게 신뢰성 그룹(X)에 대한 소거 프로세스를 시작하도록 통지할 수 있다. 신뢰성 그룹(X) 내에 RBA를 가진 각각의 다른 스토리지 디바이스가 신뢰성 그룹(X)에 대한 소거 프로세스를 완료한 후, 이벤트 E06에서 제1 스토리지 디바이스(150A)에 소거 완료 신호를 보낼 수 있다.
본 개시에 따른 EC를 포함하는 시스템이나 디바이스의 판독 동작은 오류가 감지되지 않는 한, 시스템에서와 동일하게 진행될 수 있으며, 이때 스토리지 디바이스는 오류 복구 프로세스를 시작할 수 있다.
도 12는 본 개시에 따른 데이터 판독 동작 및 복구(repair) 및/또는 재구성 프로세스의 실시예를 도시한 시퀀스 다이어그램이다. 사용자/어플리케이션(154)은 패브릭 가능하고 EC 가능한 스토리지 디바이스 그룹(156)의 제1 스토리지 디바이스(156A)에 판독 요청을 전송하여 이벤트 E01에서 데이터 판독을 시작할 수 있다. 이 판독에서는 오류가 감지되지 않았을 수 있으므로, 제1 스토리지 디바이스(156A)는 이벤트 E02에서 판독 데이터를 리턴할 수 있다. 사용자/어플리케이션(154)은 이벤트 E03에서 제2 데이터 판독을 시작할 수 있다. 이 판독 동작 중에 오류가 감지되었을 수 있으므로, 제1 스토리지 디바이스(156A)는 이벤트 E04에서 복구(repair) 및 재구성 동작(158)을 개시할 수 있다.
복구 및/또는 재구성 동작(158) 중에, 하나 이상의 스토리지 디바이스 그룹(156)은 사용자 데이터를 포함하는 하나 이상의 RBA 전체 또는 일부를 재구성하는 기능을 활용할 수 있다. 예를 들어, 하나 이상의 스토리지 디바이스 그룹(156)이 그들의 RBA와 관련된 신뢰성 그룹에 대한 메타 데이터를 유지 관리함으로써 이러한 동작을 가능하게 할 수 있다. 데이터는 예를 들어 LBA 및/또는 KV로서 RBA에 저장될 수 있으므로, 하나 이상의 스토리지 디바이스가 LBA 및/또는 KV 매핑 테이블을 유지할 수 있다. 또한 하나 이상의 스토리지 디바이스는 자기-서술적(self-descriptive)일 수 있고 및/또는 RBA에 포함된 LBA 및/또는 KV에 대한 정보를 포함할 수 있는 RBA를 구현할 수 있다. 또한, RBA는 데이터 복구를 용이하게 하기 위해 타임 스탬프 및/또는 시퀀스 번호 정보를 포함할 수 있다.
그러므로, 스토리지 디바이스가 고장나면(fails), 스토리지 디바이스는 메타 데이터, 매핑 테이블, 타임 스탬프, 시퀀스 번호 및/또는 위에서 언급한 기타 정보의 일부 또는 전부를 사용하여 LBA 및/또는 KV를 새로운 RBA에 저장하거나 및/또는 새로운 RBA에 대한 매핑 테이블을 재구성함으로써 새로운 RBA를 재구성할 수 있다. 하나 이상의 스토리지 디바이스가 위에서 논의된 정보의 일부 또는 전부를 액세스할 수 있기 때문에, 하나 이상의 스토리지 디바이스는 전체 스토리지 디바이스에서 가능한 모든 RBA가 아닌 라이브 RBA(live RBAs)만 재구성할 수 있을 것이다. 예를 들어, 네트워크 패브릭에 의해 상호 연결된 인접 스토리지 디바이스는 어떤 라이브 RBA가 복구되어야 하는지 인지할 수 있다. 따라서, 전체 스토리지 디바이스가 아닌 리던던시 블록만 복구할 수 있다.
이벤트 E05에서 복구 및/또는 재구성 동작(158)이 완료된 후, 복구된(recovered) 판독 데이터는 이벤트 E06에서 사용자/어플리케이션(154)으로 리턴될 수 있다.
일부 실시예에서는 사용자가 계산 저장을 위해 분할했을 수 있는 사용자 데이터가 LBA 경계에 정렬될 수 있다. 이러한 실시예에서 LBA 정렬된 청크는 블록 지향(block oriented)의 디바이스 및/또는 KV 디바이스(key value devices)에 저장될 수 있으며, 이 경우 사용자 데이터의 청크의 저장 및/또는 관리가 간단(straightforward)할 수 있다. 사용자 데이터가 LBA 경계에 정렬되지 않는 구현에 있어서, 사용자 데이터는 KV 디바이스에 저장될 수 있으며, 이 경우 디바이스 자체는 비교적 간단하고 효율적인 데이터 구조의 크기 관리를 처리할 수 있다. 대안적으로, 사용자 데이터가 LBA 경계에 정렬되지 않는 구현에서, 데이터 청크 및/또는 LBA 크기에 기초하여 최대 한계(ceiling)를 설정할 수 있고, 사용자 데이터는 최대 한계에서 허용하는 것만큼 많은 LBA에 저장될 수 있다. 이러한 구현에서 공간 효율성과 관리 오버헤드는 다른 스토리지 시스템과 비교될 수 있다. 또 다른 대안으로, 사용자 데이터가 LBA 경계에 정렬되지 않는 구현에서, 상이한 사용자 청크로부터의 데이터는 다른 청크를 식별하기에 충분히 세분화된 색인 정보를 사용하여 단일 LBA로 패킹될 수 있다. 이러한 실시예는 공간 효율적이며, 사용자 데이터의 패킹 및 언패킹(unpacking)과 관련된 오버헤드를 관리하기 위한 추가 자원을 사용할 수 있다.
여기에 개시된 실시예는 다양한 구현 세부사항의 맥락에서 설명되었을 수 있지만, 본 개시의 원리는 이러한 내용이나 그 밖의 특정 세부사항으로 제한되지 않는다. 예를 들어, 어떠한 기능성은 특정 구성 요소에 의해 구현되는 것으로 설명되었지만, 다른 실시예에서는 상기 기능성이 다른 위치에서 다른 시스템과 구성 요소 사이에 분산되고 다양한 사용자 인터페이스를 가질 수 있다. 특정 실시예는 구체적인 프로세스, 단계 등을 갖는 것으로 설명되었으나, 이 용어들은 또한 특정 프로세스, 단계 등을 복수의 프로세스, 단계 등으로 구현할 수 있거나, 복수의 프로세스, 단계 등을 하나의 프로세스, 단계 등으로 통합할 수 있는 실시예도 포함한다. 구성 요소(component) 또는 요소(element)에 대한 참조는 구성 또는 요소의 오직 일부만 참조할 수 있다. 본 개시 및 청구 범위에서 "제1" 및 "제2"와 같은 용어를 사용하는 것은 그들이 한정하는 것들을 구별하기 위한 목적일 뿐이며, 맥락에서 달리 분명하게 드러나지 않는 한 공간적 또는 시간적 순서를 나타내지 않을 수 있다. 첫 번째 것에 대한 언급은 두 번째 것의 존재를 의미하지 않을 수도 있다.
위에서 설명한 다양한 세부사항과 실시예가 결합되어 본 특허 개시의 발명적 원리에 따른 추가적인 실시예를 만들 수 있다. 본 특허 개시의 발명적 원리는 발명의 컨셉에서 벗어나지 않으면 그 배열과 구체 내용에서 수정될 수 있기 때문에, 그러한 변경과 수정은 이하의 청구범위의 범위에 포함되는 것으로 간주된다.

Claims (20)

  1. 네트워크 패브릭에 의해 연결된 2 이상의 스토리지 디바이스들에서 사용자 데이터를 수신하는 단계;
    상기 2 이상의 스토리지 디바이스들에서 상기 사용자 데이터를 소거 코딩된 데이터를 포함하는 블록들로 분할하는 단계; 및
    상기 블록들을 상기 적어도 두 개의 스토리지 디바이스들에 저장하는 단계를 포함하고,
    상기 블록들은 상기 스토리지 디바이스들에 의해 신뢰성 그룹들로 배열되고,
    상기 스토리지 디바이스들의 그룹의 제1 스토리지 디바이스는,
    상기 스토리지 디바이스들의 그룹의 제2 스토리지 디바이스에 의해, 신뢰성 그룹의 블록이 상기 제2 스토리지 디바이스에 의해 소거될 것이라는 통지를 받고, 상기 신뢰성 그룹 내의 자체 블록을 검사하는 것을 특징으로 하는 데이터 저장 방법.
  2. 스토리지 매체;
    네트워크 패브릭을 통해 하나 이상의 다른 스토리지 디바이스들과 통신하도록 구성된 네트워크 인터페이스; 및
    사용자 데이터를 상기 하나 이상의 다른 스토리지 디바이스들과 협력하여 소거 코드된 데이터가 포함된 블록들로 분할하도록 구성된 스토리지 프로세싱 유닛을 포함하고,
    상기 블록들은 신뢰성 그룹들로 배열되고,
    상기 스토리지 프로세싱 유닛은,
    신뢰성 그룹의 블록을 갖는 하나 이상의 다른 스토리지 디바이스들에, 소거될 상기 신뢰성 그룹의 블록에 대해 통지하고, 상기 신뢰성 그룹에 상기 블록을 갖는 하나 이상의 다른 스토리지 디바이스들로부터 진행 신호를 수신하는 것에 기초하여 상기 블록을 소거하도록 구성되는 것을 특징으로 하는 스토리지 디바이스.
  3. 패브릭 가능한 제1 스토리지 디바이스; 및
    패브릭 가능하고, 네트워크 패브릭을 통해 상기 제1 스토리지 디바이스에 연결된 제2 스토리지 디바이스를 포함하고,
    상기 제1 스토리지 디바이스 및 상기 제2 스토리지 디바이스는
    사용자로부터 사용자 데이터를 수신하고,
    상기 사용자 데이터를 협력하여 소거 코딩된 데이터를 포함하는 블록들로 분할하고,
    상기 블록들은 신뢰성 그룹들로 배열되고,
    상기 제1 스토리지 디바이스는,
    상기 제2 스토리지 디바이스에 의해, 신뢰성 그룹의 블록이 상기 제2 스토리지 디바이스에 의해 소거될 것이라는 통지를 받고, 상기 신뢰성 그룹 내의 자체 블록을 검사하는 것을 특징으로 하는 데이터 스토리지 시스템.
KR1020200170404A2020-01-292020-12-08오프로드된 디바이스 구동 소거 코딩ActiveKR102688568B1 (ko)

Applications Claiming Priority (4)

Application NumberPriority DateFiling DateTitle
US202062967573P2020-01-292020-01-29
US62/967,5732020-01-29
US15/930,4222020-05-12
US15/930,422US11210002B2 (en)2020-01-292020-05-12Offloaded device-driven erasure coding

Publications (2)

Publication NumberPublication Date
KR20210097014A KR20210097014A (ko)2021-08-06
KR102688568B1true KR102688568B1 (ko)2024-07-25

Family

ID=74186596

Family Applications (1)

Application NumberTitlePriority DateFiling Date
KR1020200170404AActiveKR102688568B1 (ko)2020-01-292020-12-08오프로드된 디바이스 구동 소거 코딩

Country Status (5)

CountryLink
US (3)US11210002B2 (ko)
EP (1)EP3859527B1 (ko)
KR (1)KR102688568B1 (ko)
CN (1)CN113268374A (ko)
TW (1)TWI855220B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US12074962B2 (en)2021-08-102024-08-27Samsung Electronics Co., Ltd.Systems, methods, and apparatus for dividing and encrypting data
US12413243B2 (en)2021-08-102025-09-09Samsung Electronics Co., Ltd.Systems, methods, and apparatus for dividing and compressing data
CN114895856B (zh)*2022-07-122022-09-16创云融达信息技术(天津)股份有限公司一种基于高密度存储硬件的分布式存储系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20090089612A1 (en)2007-09-282009-04-02George MathewSystem and method of redundantly storing and retrieving data with cooperating storage devices
US20150301934A1 (en)2014-04-212015-10-22Lsi CorporationFlash-based data storage with dual map-based serialization
WO2016022993A2 (en)2014-08-072016-02-11Pure Storage, Inc.Adjustable error correction based on memory health in a storage unit
US20160217040A1 (en)2013-08-272016-07-28Agency For Science, Technology And ResearchRaid parity stripe reconstruction
US20160334996A1 (en)*2015-05-152016-11-17ScaleFluxIn-flash immutable object processing
US20160371145A1 (en)*2014-09-302016-12-22Hitachi, Ltd.Distributed storage system
US20180357019A1 (en)*2017-06-122018-12-13Pure Storage, Inc.Recovering data within a unified storage element

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US9047306B1 (en)*2005-10-172015-06-02Hewlett-Packard Development Company, L.P.Method of writing data
WO2007115317A2 (en)2006-04-042007-10-11Permabit, IncStorage assignment and erasure coding technique for scalable and fault tolerant storage system
US8019938B2 (en)2006-12-062011-09-13Fusion-I0, Inc.Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
US9098519B2 (en)2008-09-162015-08-04File System Labs LlcMethods and apparatus for distributed data storage
US8458287B2 (en)*2009-07-312013-06-04Microsoft CorporationErasure coded storage aggregation in data centers
KR20110119408A (ko)*2010-04-272011-11-02삼성전자주식회사데이터 저장 장치 및 그것의 동작 방법
US8713405B2 (en)*2011-11-222014-04-29Simplivity CorporationMethod and apparatus for allocating erasure coded data to disk storage
US8683296B2 (en)2011-12-302014-03-25Streamscale, Inc.Accelerated erasure coding system and method
US8799746B2 (en)2012-06-132014-08-05Caringo, Inc.Erasure coding and replication in storage clusters
US8862818B1 (en)*2012-09-272014-10-14Emc CorporationHandling partial stripe writes in log-structured storage
US9244761B2 (en)2013-06-252016-01-26Microsoft Technology Licensing, LlcErasure coding across multiple zones and sub-zones
US10289547B2 (en)2014-02-142019-05-14Western Digital Technologies, Inc.Method and apparatus for a network connected storage system
US10608784B2 (en)2016-03-152020-03-31ClineHair Commercial EndeavorsDistributed storage system data management and security
WO2015188008A1 (en)*2014-06-042015-12-10Pure Storage, Inc.Mechanism for persisting messages in a storage system
US9465692B2 (en)*2014-06-252016-10-11Quantum CorporationHigh reliability erasure code distribution
US9817750B2 (en)*2014-07-032017-11-14Pure Storage, Inc.Profile-dependent write placement of data into a non-volatile solid-state storage
US20160219120A1 (en)*2015-01-232016-07-28Netapp, Inc.Methods for providing a staging area for objects prior to erasure coding and devices thereof
US10552058B1 (en)*2015-07-172020-02-04Radian Memory Systems, Inc.Techniques for delegating data processing to a cooperative memory controller
US9946642B2 (en)2015-11-132018-04-17Samsung Electronics Co., LtdDistributed multimode storage management
JP6696280B2 (ja)*2016-04-132020-05-20富士通株式会社情報処理装置、raid制御方法、およびraid制御プログラム
US10254969B2 (en)*2016-05-132019-04-09Seagate Technology LlcData refresh in flash memory
US10740294B2 (en)*2017-01-122020-08-11Pure Storage, Inc.Garbage collection of data blocks in a storage system with direct-mapped storage devices
US10079612B1 (en)2017-03-152018-09-18Alibaba Group Holding LimitedDistributed erasure coding pool deployed in hyperscale infrastructure
US10275180B2 (en)*2017-05-082019-04-30Samsung Electronics Co., Ltd.Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
US10402266B1 (en)*2017-07-312019-09-03Pure Storage, Inc.Redundant array of independent disks in a direct-mapped flash storage system
US11221958B2 (en)*2017-08-292022-01-11Samsung Electronics Co., Ltd.System and method for LBA-based RAID
US10379948B2 (en)*2017-10-022019-08-13Western Digital Technologies, Inc.Redundancy coding stripe based on internal addresses of storage devices
US10817392B1 (en)*2017-11-012020-10-27Pure Storage, Inc.Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices
US10901848B2 (en)*2018-08-032021-01-26Western Digital Technologies, Inc.Storage systems with peer data recovery
US11662933B2 (en)*2018-10-242023-05-30Kyndryl, Inc.Datacenter relocation utilizing storage carriers and erasure coding
US10673463B2 (en)*2018-10-252020-06-02Hewlett Packard Enterprise Development LpCombined blocks of parts of erasure coded data portions
US10761779B2 (en)*2018-12-052020-09-01Intel CorporationStorage compute offloads on sharded and erasure-coded data
US11074129B2 (en)2019-10-312021-07-27Western Digital Technologies, Inc.Erasure coded data shards containing multiple data objects
US12112055B2 (en)*2020-05-042024-10-08Intel CorporationErasure coding write hole closure for solid-state drive (SSD) erasure coding

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20090089612A1 (en)2007-09-282009-04-02George MathewSystem and method of redundantly storing and retrieving data with cooperating storage devices
US20160217040A1 (en)2013-08-272016-07-28Agency For Science, Technology And ResearchRaid parity stripe reconstruction
US20150301934A1 (en)2014-04-212015-10-22Lsi CorporationFlash-based data storage with dual map-based serialization
WO2016022993A2 (en)2014-08-072016-02-11Pure Storage, Inc.Adjustable error correction based on memory health in a storage unit
US20160371145A1 (en)*2014-09-302016-12-22Hitachi, Ltd.Distributed storage system
US20160334996A1 (en)*2015-05-152016-11-17ScaleFluxIn-flash immutable object processing
US20180357019A1 (en)*2017-06-122018-12-13Pure Storage, Inc.Recovering data within a unified storage element

Also Published As

Publication numberPublication date
US20220326852A1 (en)2022-10-13
TW202129500A (zh)2021-08-01
CN113268374A (zh)2021-08-17
US20220121363A1 (en)2022-04-21
US12299302B2 (en)2025-05-13
TWI855220B (zh)2024-09-11
US20210232310A1 (en)2021-07-29
KR20210097014A (ko)2021-08-06
EP3859527B1 (en)2024-05-01
EP3859527A3 (en)2021-11-24
EP3859527A2 (en)2021-08-04
US11210002B2 (en)2021-12-28
US12321625B2 (en)2025-06-03

Similar Documents

PublicationPublication DateTitle
KR102688568B1 (ko)오프로드된 디바이스 구동 소거 코딩
US11669396B2 (en)Storage system
US10318375B2 (en)Configurable multi-level error correction in a storage controller
KR101821001B1 (ko)Raid 어레이에서 장치내 데이터 보호
KR101769883B1 (ko)저장부 할당 장치, 시스템, 및 방법
CN110383251B (zh)存储系统、计算机可读记录介质、系统的控制方法
KR101824286B1 (ko)적응적 지오메트리를 구비한 raid 어레이에서의 복원 판독
JP2022512064A (ja)様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
CN113176858B (zh)数据处理方法、存储系统及存储设备
CN107422983A (zh)用于租户感知存储共享平台的方法和装置
US20180307426A1 (en)Storage apparatus and storage control method
US11442645B2 (en)Distributed storage system expansion mechanism
US12046292B2 (en)Erase blocks having differing sizes
CN113342258B (zh)用以进行全快闪存储器阵列伺服器的数据存取管理的方法与设备
US12045133B2 (en)Storage system
WO2021088586A1 (zh)一种存储系统中的元数据的管理方法及装置
JPWO2018229944A1 (ja)ストレージシステム及びストレージシステムの制御方法
CN110865901A (zh)组建ec条带的方法和装置
KR20190085743A (ko)계층적 소거 코딩을 이용한 분산 파일시스템의 장애 복구 방법 및 이를 위한 장치

Legal Events

DateCodeTitleDescription
PA0109Patent application

Patent event code:PA01091R01D

Comment text:Patent Application

Patent event date:20201208

PG1501Laying open of application
E902Notification of reason for refusal
PE0902Notice of grounds for rejection

Comment text:Notification of reason for refusal

Patent event date:20240321

Patent event code:PE09021S01D

E701Decision to grant or registration of patent right
PE0701Decision of registration

Patent event code:PE07011S01D

Comment text:Decision to Grant Registration

Patent event date:20240614

GRNTWritten decision to grant
PR0701Registration of establishment

Comment text:Registration of Establishment

Patent event date:20240722

Patent event code:PR07011E01D

PR1002Payment of registration fee

Payment date:20240723

End annual number:3

Start annual number:1

PG1601Publication of registration

[8]ページ先頭

©2009-2025 Movatter.jp