KR101986579B1 - Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법 - Google Patents

Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법 Download PDF

Info

Publication number
KR101986579B1
KR101986579B1 KR1020160170422A KR20160170422A KR101986579B1 KR 101986579 B1 KR101986579 B1 KR 101986579B1 KR 1020160170422 A KR1020160170422 A KR 1020160170422A KR 20160170422 A KR20160170422 A KR 20160170422A KR 101986579 B1 KR101986579 B1 KR 101986579B1
Authority
KR
South Korea
Prior art keywords
parity
update
data
log
ssd array
Prior art date
Application number
KR1020160170422A
Other languages
English (en)
Other versions
KR20180069176A (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 한국과학기술원
Priority to KR1020160170422A priority Critical patent/KR101986579B1/ko
Publication of KR20180069176A publication Critical patent/KR20180069176A/ko
Application granted granted Critical
Publication of KR101986579B1 publication Critical patent/KR101986579B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system

Abstract

본 발명은 SSD 기반 대규모 클러스터 환경에서 파일을 패리티를 사용하는 RAID 형태로 분산 저장 할 때 패리티 갱신으로 인해 증가하는 쓰기 증폭 문제를 해결하는 SSD 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함을 복구하는 방법에 관한 것이다.

Description

SSD 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법{System and method for log-based parity update of SSD array and to defect block and node failures recovery method using the same}
본 발명은 SSD 기반 대규모 클러스터 환경에서 파일을 패리티를 사용하는 RAID 형태로 분산 저장 할 때 패리티 갱신으로 인해 증가하는 쓰기 증폭 문제를 해결하는 SSD 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함을 복구하는 방법에 관한 것이다.
최근에 낸드(NAND) 플래시 메모리의 가격이 하락함에 따라 SSD(Solid State Drives)의 활용이 개인용 디바이스로부터 데이터 센터의 서버 시스템까지 활발히 사용되고 있다. 기계적인 동작으로 데이터를 읽고 쓰며 디스크 헤드의 탐색 시간, 회전 지연 시간 등의 데이터 접근 오버헤드가 큰 HDD(Hard Disk Drives)에 비해 SSD는 빠른 데이터 접근 시간, 저전력, 저소음, 저발열, 경량의 무게 등이 장점을 가진다. 낸드 플래시 메모리의 가격이 하락함에 따라 SSD는 다양한 환경에서 HDD를 대신하는 주 저장 매체로 사용되기 시작하며 분산 파일 시스템의 클러스터 노드들에도 장착되기 시작하였다. HDD기반의 저장 시스템이 SSD로 저장 장치를 교체하면, 전력 사용량을 17% 줄일 수 있고 저장 장치를 위한 비용도 30% 감소시키며, 60% 높은 입출력 성능을 도모할 수 있다.
그런데, 낸드 플래시 메모리는 데이터의 제자리 갱신이 불가능하고 읽기/쓰기 연산의 단위와 지우기 연산의 단위가 다른 물리적 특성이 있다. 읽기/쓰기 연산은 낸드 플래시 메모리를 구성하는 물리적인 페이지 단위로 수행되며 지우기 연산은 물리적 블록 단위로 가능하다. 또한, 블록은 정해진 횟수만큼만 지우기 연산이 가능하고, 낸드 플래시 메모리는 일정 횟수 이상의 지우기 연산이 수행된 블록은 저장된 데이터가 손상 될 수 있는 약점을 가진다.
읽고 쓰기를 위한 물리적인 연산 단위와 지우기 연산의 물리적인 단위가 다른 SSD는 지우기 연산을 수행하기 전에 지우고자 하는 블록 내에 존재하는 유효한 페이지들의 데이터를 다른 비어있는 블록으로 복사하는 과정이 발생하며 이 때 호스트로부터 요청 된 쓰기 연산 이외의 낸드 플래시 메모리 내부에서 발생하는 추가적인 쓰기 연산이 발생하게 된다. 이러한 특성으로 인해 SSD는 갱신 연산이 계속해서 주어지면 빈 블록이 점점 고갈되며 가비지 콜렉션(garbage collection) 을 통해 유효 데이터 페이지와 비 유효 데이터 페이지들을 정리하는 기능을 수행한다. 따라서, SSD는 논리적인 쓰기 요청보다 물리적으로 내부에서 발생하는 쓰기 연산이 많이 발생하게 되며 쓰기 증폭 문제(write amplification)를 가지게 된다. 쓰기 증폭 문제는 추가적인 쓰기 연산을 처리하는 과정에서 SSD 의 입출력 성능을 저하시키고 소거 연산의 횟수를 증가하게 만들어 SSD 의 수명을 저하시킨다.
KR 1014450250000 B1
본 발명은 이와 같은 문제점을 해결하기 위하여 창안된 것으로서, SSD를 저장 장치로 사용하는 대규모 저장 시스템에서 발생하는 SSD의 쓰기 증폭 문제를 해결하는 방법에 관한 것으로, 보다 상세하게는 사용 할수록 결함 발생률이 증가하는 SSD의 신뢰성을 향상 시키고자 SSD 배열에 데이터를 패리티 기반 RAID 형태로 배치하고 이를 운용할 때 패리티 갱신으로 더욱 커지는 쓰기 증폭을 줄이는 SSD 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함을 복구하는 방법을 제공하는데 목적이 있다.
이와 같은 목적을 달성하기 위하여 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템은 SSD 기반 대규모 저장 시스템을 컨트롤하는 레이드(RAID) 컨트롤러; 및 상기 레이드(RAID) 컨트롤러로부터 입력되는 파일을 저장하는 SSD 배열을 포함하며, 상기 레이드(RAID) 컨트롤러는, 상기 입력되는 파일이 상기 SSD 배열에 저장되도록 논리 주소를 기반으로 하여 데이터를 분배하는 주소 관리부; 상기 주소 관리부로부터 전달되는 상기 논리 주소들로 스트라이프를 생성하는 스트라이프 관리부; 상기 스트라이프 관리부로부터 전달되는 데이터의 삽입/삭제/갱신을 관리하는 데이터 관리부; 및 상기 스트라이프 관리부로부터 전달되는 패리티를 관리하는 패리티 관리부를 포함하고, 상기 상기 패리티 관리부는, 데이터 갱신 요청이 있을 경우 상기 데이터 갱신이 발생하기 이전의 데이터와 이후 데이터의 변경값을 계산하는 패리티 로그 계산부; 상기 데이터 관리부와 상기 패리티 로그 계산부에서 계산된 데이터의 변경값에 의하여 계산된 패리티 로그를 전달 받으며, 이 전달받은 패리티 로그를 상기 SSD 배열에 저장하는 패리티 로깅부; 및 상기 패리티 로깅부에서 상기 패리티 로그를 상기 SSD 배열에 저장할 때, 상기 패리티 로그가 저장될 공간이 부족한 경우 패리티 합병을 처리하는 패리티 합병부를 포함하며, 상기 패리티 합병부는, 갱신 이전 패리티들을 랜덤하게 읽어 수집하는 갱신 이전 패리티 수집모듈; 상기 갱신 이전 패리티 수집모듈을 통해 수집된 갱신 이전 패리티들이 소속된 스트라이프를 선정하는 합병 대상 스트라이프 선정모듈; 합병할 패리티들을 랜덤하게 읽는 기능을 하는 패리티 로그 수집모듈; 상기 랜덤하게 읽은 갱신 이전 패리티들과 패리티 로그들로 새로운 패리티를 계산하는 새로운 패리티 계산모듈; 새로운 패리티가 생성된 후, 패리티 합병에 사용된 패리티 로그들을 비유효화 처리하는 패리티 로그 비유효화모듈; 및 새로운 패리티가 생성된 후, 갱신 이전 패리티들을 비유효화 처리하는 갱신 전 패리티 비유효화모듈을 포함한다.
삭제
삭제
이와 같은 목적을 달성하기 위하여 본 발명의 다른 측면은 청구항 1에 기재된 시스템을 통한 SSD 배열의 로그 기반 패리티 갱신 방법에 있어서, (a) 데이터 갱신을 요청하는 단계; (b) 상기 단계 (a)에서 갱신 요청된 데이터가 속한 스트라이프를 검색한 후, 패리티 로그를 계산하는 단계; (c) 상기 단계 (b)에서 계산된 패리티 로그가 쓰여질 패리티 로그 영역이 있는지를 판단하는 단계; 및 (d) 상기 단계 (c)의 판단결과, 패리티 로그 영역이 없을 경우, 패리티 합병을 수행하는 단계를 포함한다.
바람직하게는 상기 단계 (b)의 패리티 로그 계산은 갱신 이전 데이터와 갱신 데이터 간의 변경된 부분을 로그 연산하여 계산하는 것이다.
바람직하게는 상기 단계 (d)의 패리티 합병을 수행하는 단계는, (d1) 패리티 합병을 요청하는 단계; (d2) 순차적으로 저장되어 있는 패리티 로그와 랜덤하게 저장되어 있는 갱신되기 이전의 패리티를 읽는 단계; (d3) 상기 단계 (d2)에서 읽은 순차적으로 저장되어 있는 패리티 로그와 랜덤하게 저장되어 있는 갱신되기 이전의 패리티들을 XOR하여 새로운 패리티를 계산하는 단계; 및 (d4) 상기 단계 (d3)에서 계산된 새로운 패리티를 쓰는 단계를 포함한다.
이와 같은 목적을 달성하기 위한 본 발명의 또 다른 측면은 청구항 1에 기재된 로그 기반 패리티 갱신을 수행하는 SSD 배열에서의 블록 및 노드 결함을 복구하는 방법에 있어서, (a) 결함 데이터의 소속 스트라이프를 검색하는 단계; (b) 상기 단계 (a)의 결함 데이터의 종류를 구분하는 단계; 및 (c) 상기 단계 (b)의 종류에 따라 서로 다른 데이터를 읽은 후, 이 읽은 서로 다른 데이터를 XOR하여 새로운 데이터로 복구하는 단계를 포함한다.
바람직하게는 상기 단계 (b)의 결함 데이터의 종류는 패리티 로그, 새로운 데이터, 갱신 이전 데이터, 갱신 이전 패리티 중 어느 하나 인 것이다.
바람직하게는 상기 결함 데이터의 종류가 패리티 로그일 경우, 상기 단계 (c)의 서로 다른 데이터는 갱신 이후 데이터들과 순차적인 나머지 패리티 로그들인 것이다.
바람직하게는 상기 결함 데이터의 종류가 새로운 데이터일 경우, 상기 단계 (c)의 서로 다른 데이터는 갱신 이전 데이터와 블록들에 순차적으로 배치되어 있는 패리티 로그들인 것이다.
바람직하게는 상기 결함 데이터의 종류가 갱신 이전 데이터인 경우, 상기 단계 (c)의 서로 다른 데이터는 랜덤하게 배치되어 있는 갱신 이전 상태의 패리티들과 오류가 발생한 갱신 이전 데이터 이외의 나머지 갱신 이전 데이터들인 것이다.
바람직하게는 상기 결함 데이터의 종류가 갱신 이전 패리티인 경우에는 상기 단계 (c)의 서로 다른 데이터는 갱신 이전 데이터인 것이다.
본 발명에 의하면, SSD를 장착한 노드들로 구성되는 대규모 클러스터에 패리티 기반 RAID 형태로 데이터를 배치하여 높은 신뢰성을 제공하는 효과가 있는데, 이는 패리티 갱신으로 인해 증가하는 쓰기 증폭 문제는 로그 기반 데이터 갱신 기술을 통해 크게 감소시키도록 하여 SSD 기반 클러스터의 성능을 향상시키고 수명을 연장시키는 효과가 있다.
또한 본 발명은 대규모 클러스터를 기반으로 운영되는 클라우드 컴퓨팅, 빅데이터 처리 및 분석, 인공 지능 및 IoT 분야에서 저장 공간 효율성을 높임으로써 높은 경제성을 가질 수 있는 효과가 있다.
도 1은 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템의 전체 구조를 개략적으로 나타낸 도면.
도 2는 본 발명에 다른 SSD 배열의 로그 기반 패리티 갱신 시스템을 이용하여 데이터 갱신 시 발생하는 패리티 갱신이 처리되는 호출 과정을 나타낸 도면.
도 3은 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템을 이용하여 패리티 합병 요청이 발생했을 경우 패리티 합병부의 구성이 호출되는 과정을 나타낸 도면.
도 4는 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템을 이용하여 SSD 배열의 데이터 블록과 패리티 블록이 갱신되는 과정을 나타낸 순서도.
도 5는 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템을 이용하여 결함 블록이 복구 되는 과정을 나타낸 순서도.
이하 첨부된 도면을 참조로 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 이에 앞서, 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서, 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
도 1은 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템을 개략적으로 나타낸 도면이다. 도 1에 도시된 바와 같이 SSD 배열의 로그 기반 패리티 갱신 시스템은 SSD 기반 대규모 저장 시스템을 컨트롤하는 레이드(RAID) 컨트롤러(100)와, 사용자 입력부(도시되지 않음)에 의하여 이 레이드(RAID) 컨트롤러(100)로 입력되는 파일을 저장하는 SSD 배열(200)로 구성된다.
일반적으로 레이드(RAID)는 여러 개의 디스크를 하나로 묶어 하나의 논리적 디스크로 작동하게 하는데, 하드웨어적인 방법과 소프트웨어적인 방법이 있다. 하드웨어적인 방법은 운영 체제에 이 디스크가 하나의 디스크처럼 보이게 하며, 소프트웨어적인 방법은 주로 운영체제 안에서 구현되며, 사용자에게 디스크를 하나의 디스크처럼 보이게 한다.
한편 레이드(RAID)는 레벨로 나누는데 'RAID 0'은 패리티(오류 검출 기능)가 없는 스트라이핑된 세트가 적어도 2 개의 디스크로 구성되며,'RAID 1'은 패리티(오류 검출 기능)가 없는 미러링된 세트가 적어도 2 개의 디스크로 구성된다. 그리고'RAID 3 및 RAID 4'는 패리티가 단순 제공되어(dedicated) 스트라이핑된 세트가 적어도 3 개의 디스크로 구성되며 'RAID 5'는 패리티가 배분되는(distributed) 스트라이핑된 세트가 적어도 3 개의 디스크로 구성된다. 그리고 'RAID 6'은 패리티가 배분되는(distributed) 스트라이핑된 세트가 적어도 4개의 디스크로 구성된다.
상기 레이드(RAID) 컨트롤러(100)는, 파일 시스템으로부터 논리 주소를 입력받으며, 이 입력받은 논리 주소를 기반으로 데이터와 패리티를 분배하는 주소 관리부(110)와, 이 주소 관리부(110)로부터 전달되는 상기 논리 주소들로부터 스트라이프를 생성하는 스트라이프 관리부(120)와, 상기 스트라이프 관리부(120)로부터 전달되는 데이터의 삽입/삭제/갱신을 관리하는 데이터 관리부(130)와, 데이터 갱신에 따른 패리티의 갱신을 담당하는 패리티 관리부(140)를 포함한다.
또한 패리티 관리부(140)는 데이터 갱신 요청이 있을 경우, 상기 데이터의 갱신이 발생하기 이전의 데이터와 이후 데이터의 변경값을 계산하는 패리티 로그 계산부(141)와, 데이터 관리부(130)와 상기 패리티 로그 계산부(141)에서 계산된 데이터의 변경값에 의하여 계산된 패리티 로그를 전달 받으며, 이 전달받은 패리티 로그를 상기 SSD 배열(200)에 저장하는 패리티 로깅부(142) 및 이 패리티 로깅부(142)에서 패리티 로그를 상기 SSD 배열(200)에 저장할 때, 상기 패리티 로그를 저장할 공간이 부족한 경우 패리티 합병을 처리하는 패리티 합병부(143)를 포함한다.
SSD 배열(200)은 다수의 SSD를 포함하며, 이때 개별 SSD는 블록데이터를 저장하는 데이터 페이지, 패리티를 저장하는 패리티 페이지, 패리티 로그를 저장하는 패리티 로그 페이지로 구성된다. 또한 SSD의 블록은 페이지들의 집합으로 구성되며 본 발명에서는 예제의 단순화를 위해 하나의 블록이 2개의 페이지로 구성되도록 표기하며, 보통의 경우 하나의 블록은 64 또는 128개의 페이지로 구성된다.
도 2는 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템을 이용하여 데이터 갱신(update) 시에 발생하는 패리티의 갱신이 처리되는 호출 과정을 나타낸 도면이다. 데이터 갱신(update) 요청이 RAID 컨트롤러(100)로 들어오면 RAID 컨트롤러(100)의 주소 관리부(110)는 스트라이프 관리부(120)로 논리 주소들로 레이드(RAID) 레벨과 SSD 배열(200)의 개수에 따라 갱신이 요청된 스트라이프를 찾는다. 이후, 데이터 관리부(130)는 해당 스트라이프의 데이터를 갱신하고 패리티 갱신은 패리티 관리부(140)로 요청된다. 여기서 패리티 관리부(140)는 패리티 갱신을 위하여 패리티 로그 계산부(140)는 데이터가 변경된 부분을 계산하고 업데이트 명령부(300)로 계산된 패리티 로그를 전달한다. 이때 업데이트 명령부(300)는 RAID 컨트롤러(100)와 SSD 배열(200) 사이에 존재할 수 있다. 전달된 패리티 로그는 패리티 로깅부(142)를 통해 패리티 로그가 저장될 SSD 배열(200)에 전달되어 저장되며, 이때 만약 패리티 로그가 저장 될 SSD 배열(200)의 패리티 로그 영역이 부족한 경우는 패리티 합병부(143)로 패리티 로그가 전달된다.
도 3은 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템을 이용하여 패리티 합병 요청이 발생했을 경우, 패리티 합병부(143)의 구성 모듈이 호출되는 과정을 나타낸 도면으로, 패리티 합병부(143)는 갱신 이전의 패리티들을 읽어 오는 갱신 이전 패리티 수집모듈(151)과, 패리티 합병의 대상이 되는 스트라이프를 선정하는 합병 대상 스트라이프 선정모듈(152)과, 갱신할 패리티의 패리티 로그를 수집하는 패리티 로그 수집 모듈(153)과, 수집된 갱신 이전 패리티와 수집된 패리티 로그를 XOR 연산하여 새로운 패리티를 계산하는 새로운 패리티 계산모듈(154)과, 갱신된 패리티 로그들을 비유효화하는 패리티 로그 비유효화모듈(155)과, 갱신 이전 패리티들을 비유효화 시키는 갱신 전 패리티 비유효화모듈(156)을 포함한다.
도 3에 도시된 바와 같이 패리티 로그로 할당 해 놓은 공간이 가득 차서 패리티 합병이 요청되면, 갱신 이전 패리티 수집모듈(151)은 쌓여있는 패리티 로그들의 패리티 갱신이 발생하기 이전의 패리티들을 랜덤하게 읽고, 합병 대상 스트라이프 선정모듈(152)은 패리티 합병의 대상이 되는 스트라이프를 선정한다. 이후, 패리티 로그 수집모듈(153)이 쌓여있는 패리티 로그들을 읽어 갱신 이전 패리티들과 XOR 연산을 통해 새로운 패리티 계산모듈(154)에서 새롭게 생성되는 패리티들을 계산한다. 새로운 패리티가 SSD 배열(200)에 쓰이고 나면, 패리티 로그 비유효화모듈(155)은 합병이 수행된 패리티 로그들을 비유효화 하고, 갱신 전 패리티 비유효화모듈(156)은 갱신 되기 이전의 패리티들을 비유효화 처리하여 SSD 배열(200) 들에 가비지 컬렉션이 수행될 때 수거해 지워질 수 있도록 한다.
도 4는 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템을 이용하여 SSD 배열의 데이터 블록과 패리티 블록이 갱신되는 과정을 나타낸 순서도이다.
도 4에 도시된 바와 같이 호스트는 데이터 블록에 데이터 갱신을 요청한다(S110).
이후 데이터 블록의 데이터 갱신이 요청되면(S110), 이 갱신 요청된 데이터가 속한 스트라이프를 검색한다(S111). 여기서 갱신 요청이 발생한 데이터 블록을 갱신 할 때에는, 해당 데이터가 소속되어 있는 스트라이프의 패리티를 함께 갱신해야 하기 때문에 데이터가 속한 스트라이프를 검색하는 것이다.
갱신 대상 데이터의 소속 스트라이프가 검색되면(S111), 갱신 이전 데이터와 갱신 데이터 간의 변경된 부분을 일련의 로그 연산의 통해 패리티 로그를 계산한다(S112).
이어서, 패리티 로그가 계산되면(S112), 패리티 로그 쓰기를 요청한다(S113).
이때 패리티 로그 쓰기 요청(S113)이 되면, 패리티 로그가 쓰이는 패리티 로그 영역이 남아 있는지를 판단한다(S114).
판단 결과(S114), 패리티 로그 영역이 남아 있으면, 패리티 로그를 남아 있는 영역에 순차적으로 쓴다(S115).
반면, 판단 결과(S114) 패리티 로그 영역이 남아 있지 않을 경우, 패리티 로그 영역에 순차적으로 저장되어 있는 패리티 합병을 수행해야 한다. 이는 갱신되기 이전의 패리티들과 순차적으로 저장되어 있는 패리티 로그들을 합병하여 패리티들을 갱신한 후, 패리티 로그 영역을 모두 비운 후 현재 계산된 패리티 로그를 저장할 수 있는 공간을 확보해야 하기 때문이다. 이를 위하여 패리티 합병을 요청한다(S116).
이와 같이 패리티 합병이 요청되면(S116), 기존에 순차적으로 저장 되어 있는 다수의 패리티 로그들을 읽고(S117), 랜덤하게 저장되어 있는 갱신되기 이전의 다수의 패리티들을 읽은 후(S118), 앞서 단계 (S117)에서 읽은 순차적으로 저장 되어 있는 다수의 패리티 로그들과 단계 (S118)에서 읽은 갱신되기 이전의 패리티 값들을 XOR하여 새로운 패리티를 계산한다(S119).
패리티들이 새롭게 갱신되면 갱신된 패리티들을 해당 SSD 배열에 쓴다(S120). 이후 갱신된 패리티들의 패리티 로그들을 비유효화 하고(S121), 갱신된 패리티들이 소속 되어 있는 스트라이프의 갱신 이전 데이터들을 비유효화 한다(S122).
도 5는 본 발명에 따른 SSD 배열의 로그 기반 패리티 갱신 시스템을 이용하여 결함 블록이 디코드 되는 과정을 나타낸 순서도로, 결함이 발생하는 경우는 크게 네 가지로, 패리티 로그 결함이 발생하는 경우, 새로운 데이터에 결함이 발생하는 경우, 갱신 이전 데이터에 결함이 발생하는 경우, 갱신 이전 패리티에 결함이 발생하는 경우로 나뉜다.
시스템에서 결함 발생이 감지되면, 가장 먼저 결함이 발생한 블록의 소속 스트라이프를 검색하고(S210), 이후 결함 데이터 종류 구분을 요청한다(S221).
만약 결함 데이터의 종류가 패리티 로그이면(S222), 갱신 이후 데이터(a)들을 읽고(S223), 나머지 패리티 로그(b)들을 순차 읽기(S224) 한 후, 단계 (S222)와 단계 (S223)에서 읽은 데이터(a, b)를 XOR 하여 복구 데이터를 쓴다(S280).
반면, 결함 데이터의 종류가 새로운 데이터인 경우(S232). 갱신 이전 데이터들(a)을 읽고(S233), 블록들에 순차적으로 배치되어 있는 패리티 로그(b)를 읽은(S234) 후, 단계 (S270)에서 단계 (S233)과 단계 (S234)에서 읽은 데이터(a, b)를 XOR하여 복구한 데이터를 쓰고(S280), 데이터 결함 프로세스를 종료한다.
그리고 결함 데이터의 종류가 갱신 이전 데이터인 경우(S242), 랜덤하게 배치되어 있는 갱신 이전 상태의 패리티(a)를 읽는다(S243). 이후 랜덤하게 배치되어 있는 오류가 발생한 갱신 이전 데이터 이외의 나머지 갱신 이전 데이터들(b)을 읽고(S244), 단계 (S270)에서 단계 (S243)과 단계 (S244)에서 읽은 데이터(a, b)를 XOR 하여 복구 데이터를 쓰고(S280) 데이터 결함 프로세서를 종료한다.
마지막으로 결함 데이터의 종류가 갱신 이전 패리티인 경우(S252)에는, 랜덤하게 저장되어 있는 갱신 이전 데이터들(a)을 랜덤하게 읽은(S253) 후, 이 랜덤하게 읽은 갱신 이전 데이터(a)들을 XOR 하여(S270) 결함이 발생한 갱신 이전 패리티를 복구하고, 복구된 갱신 이전 패리티를 SSD에 쓰므로 데이터 결함 복구 프로세서를 종료한다.
이상과 같이, 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 이것에 의해 한정되지 않으며 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 본 발명의 기술사상과 아래에 기재될 특허청구범위의 균등범위 내에서 다양한 수정 및 변형이 가능함은 물론이다.
100: RAID 컨트롤러
110: 주소 관리부
120: 스트라이프 관리부
130: 데이터 관리부
140: 패리티 관리부
141: 패리티 로그 계산부
142: 패리티 로깅부
143: 패리티 합병부

Claims (12)

  1. SSD 기반 대규모 저장 시스템을 컨트롤하는 레이드(RAID) 컨트롤러; 및
    상기 레이드(RAID) 컨트롤러로부터 입력되는 파일을 저장하는 SSD 배열
    을 포함하며,
    상기 레이드(RAID) 컨트롤러는,
    상기 입력되는 파일이 상기 SSD 배열에 저장되도록 논리 주소를 기반으로 하여 데이터를 분배하는 주소 관리부;
    상기 주소 관리부로부터 전달되는 상기 논리 주소들로 스트라이프를 생성하는 스트라이프 관리부;
    상기 스트라이프 관리부로부터 전달되는 데이터의 삽입/삭제/갱신을 관리하는 데이터 관리부; 및
    상기 스트라이프 관리부로부터 전달되는 패리티를 관리하는 패리티 관리부
    를 포함하고,
    상기 패리티 관리부는,
    데이터 갱신 요청이 있을 경우 상기 데이터 갱신이 발생하기 이전의 데이터와 이후 데이터의 변경값을 계산하는 패리티 로그 계산부;
    상기 데이터 관리부와 상기 패리티 로그 계산부에서 계산된 데이터의 변경값에 의하여 계산된 패리티 로그를 전달 받으며, 이 전달받은 패리티 로그를 상기 SSD 배열에 저장하는 패리티 로깅부; 및
    상기 패리티 로깅부에서 상기 패리티 로그를 상기 SSD 배열에 저장할 때, 상기 패리티 로그가 저장될 공간이 부족한 경우 패리티 합병을 처리하는 패리티 합병부
    를 포함하며,
    상기 패리티 합병부는,
    갱신 이전 패리티들을 랜덤하게 읽어 수집하는 갱신 이전 패리티 수집모듈;
    상기 갱신 이전 패리티 수집모듈을 통해 수집된 갱신 이전 패리티들이 소속된 스트라이프를 선정하는 합병 대상 스트라이프 선정모듈;
    합병할 패리티들을 랜덤하게 읽는 기능을 하는 패리티 로그 수집모듈;
    상기 랜덤하게 읽은 갱신 이전 패리티들과 패리티 로그들로 새로운 패리티를 계산하는 새로운 패리티 계산모듈;
    새로운 패리티가 생성된 후, 패리티 합병에 사용된 패리티 로그들을 비유효화 처리하는 패리티 로그 비유효화모듈; 및
    새로운 패리티가 생성된 후, 갱신 이전 패리티들을 비유효화 처리하는 갱신 전 패리티 비유효화모듈
    를 포함하는 SSD 배열의 로그 기반 패리티 갱신 시스템.
  2. 삭제
  3. 삭제
  4. 청구항 1에 기재된 시스템을 통한 SSD 배열의 로그 기반 패리티 갱신 방법에 있어서,
    (a) 데이터 갱신을 요청하는 단계;
    (b) 상기 단계 (a)에서 갱신 요청된 데이터가 속한 스트라이프를 검색한 후, 패리티 로그를 계산하는 단계;
    (c) 상기 단계 (b)에서 계산된 패리티 로그가 쓰여질 패리티 로그 영역이 있는지를 판단하는 단계; 및
    (d) 상기 단계 (c)의 판단결과, 패리티 로그 영역이 없을 경우, 패리티 합병을 수행하는 단계
    를 포함하는 SSD 배열의 로그 기반 패리티 갱신 방법.
  5. 청구항 4에 있어서,
    상기 단계 (b)의 패리티 로그 계산은 갱신 이전 데이터와 갱신 데이터 간의 변경된 부분을 로그 연산하여 계산하는 것
    을 특징으로 하는 SSD 배열의 로그 기반 패리티 갱신 방법.
  6. 청구항 4에 있어서,
    상기 단계 (d)의 패리티 합병을 수행하는 단계는,
    (d1) 패리티 합병을 요청하는 단계;
    (d2) 순차적으로 저장되어 있는 패리티 로그와 랜덤하게 저장되어 있는 갱신되기 이전의 패리티를 읽는 단계;
    (d3) 상기 단계 (d2)에서 읽은 순차적으로 저장되어 있는 패리티 로그와 랜덤하게 저장되어 있는 갱신되기 이전의 패리티들을 XOR하여 새로운 패리티를 계산하는 단계; 및,
    (d4) 상기 단계 (d3)에서 계산된 새로운 패리티를 쓰는 단계
    를 포함하는 것을 특징으로 하는 SSD 배열의 로그 기반 패리티 갱신 방법.
  7. 청구항 1에 기재된 로그 기반 패리티 갱신 시스템을 수행하는 SSD 배열에서의 블록 및 노드 결함을 복구하는 방법에 있어서,
    (a) 결함 데이터의 소속 스트라이프를 검색하는 단계;
    (b) 상기 단계 (a)의 결함 데이터의 종류를 구분하는 단계; 및
    (c) 상기 단계 (b)의 종류에 따라 서로 다른 데이터를 읽은 후, 이 읽은 서로 다른 데이터를 XOR하여 새로운 데이터로 복구하는 단계
    를 포함하는 SSD 배열의 로그 기반 패리티 갱신을 이용한 블록 및 노드 결함을 복구하는 방법.
  8. 청구항 7에 있어서,
    상기 단계 (b)의 결함 데이터의 종류는 패리티 로그, 새로운 데이터, 갱신 이전 데이터, 갱신 이전 패리티 중 어느 하나 인 것
    을 특징으로 하는 SSD 배열의 로그 기반 패리티 갱신을 이용한 블록 및 노드 결함을 복구하는 방법.
  9. 청구항 7에 있어서,
    상기 결함 데이터의 종류가 패리티 로그일 경우, 상기 단계 (c)의 서로 다른 데이터는 갱신 이후 데이터들과 순차적인 나머지 패리티 로그들인 것
    을 특징으로 하는 SSD 배열의 로그 기반 패리티 갱신을 이용한 블록 및 노드 결함을 복구하는 방법.
  10. 청구항 7에 있어서,
    상기 결함 데이터의 종류가 새로운 데이터일 경우, 상기 단계 (c)의 서로 다른 데이터는 갱신 이전 데이터와 블록들에 순차적으로 배치되어 있는 패리티 로그들인 것
    을 특징으로 하는 SSD 배열의 로그 기반 패리티 갱신을 이용한 블록 및 노드 결함을 복구하는 방법.
  11. 청구항 7에 있어서,
    상기 결함 데이터의 종류가 갱신 이전 데이터인 경우, 상기 단계 (c)의 서로 다른 데이터는 랜덤하게 배치되어 있는 갱신 이전 상태의 패리티들과 오류가 발생한 갱신 이전 데이터 이외의 나머지 갱신 이전 데이터들인 것
    을 특징으로 하는 SSD 배열의 로그 기반 패리티 갱신을 이용한 블록 및 노드 결함을 복구하는 방법.
  12. 청구항 7에 있어서,
    상기 결함 데이터의 종류가 갱신 이전 패리티인 경우에는 상기 단계 (c)의 서로 다른 데이터는 갱신 이전 데이터인 것
    을 특징으로 하는 SSD 배열의 로그 기반 패리티 갱신을 이용한 블록 및 노드 결함을 복구하는 방법.











KR1020160170422A 2016-12-14 2016-12-14 Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법 KR101986579B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160170422A KR101986579B1 (ko) 2016-12-14 2016-12-14 Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160170422A KR101986579B1 (ko) 2016-12-14 2016-12-14 Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법

Publications (2)

Publication Number Publication Date
KR20180069176A KR20180069176A (ko) 2018-06-25
KR101986579B1 true KR101986579B1 (ko) 2019-10-01

Family

ID=62805859

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160170422A KR101986579B1 (ko) 2016-12-14 2016-12-14 Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법

Country Status (1)

Country Link
KR (1) KR101986579B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115793985B (zh) * 2023-01-09 2023-04-21 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014041645A (ja) * 2008-02-12 2014-03-06 Netapp Inc ハイブリッド媒体ストレージシステムアーキテクチャ

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100449485B1 (ko) * 2001-10-26 2004-09-21 한국전자통신연구원 스트라이핑 시스템 및 이의 매핑 및 처리방법
KR101445025B1 (ko) * 2012-02-09 2014-09-26 서울시립대학교 산학협력단 신뢰성 있는 ssd를 위한 효율적인 raid 기법
KR101748717B1 (ko) * 2013-09-27 2017-06-19 인하대학교 산학협력단 Ssd 기반 raid 시스템에서 패리티 데이터의 중복제거

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014041645A (ja) * 2008-02-12 2014-03-06 Netapp Inc ハイブリッド媒体ストレージシステムアーキテクチャ

Also Published As

Publication number Publication date
KR20180069176A (ko) 2018-06-25

Similar Documents

Publication Publication Date Title
US10042853B2 (en) Flash optimized, log-structured layer of a file system
US9619351B2 (en) Clustered RAID assimilation management
US9710317B2 (en) Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10133511B2 (en) Optimized segment cleaning technique
US8880787B1 (en) Extent metadata update logging and checkpointing
US9529546B2 (en) Global in-line extent-based deduplication
US9946616B2 (en) Storage apparatus
US8738963B2 (en) Methods and apparatus for managing error codes for storage systems coupled with external storage systems
US10229009B2 (en) Optimized file system layout for distributed consensus protocol
US9104599B2 (en) Apparatus, system, and method for destaging cached data
US20120198174A1 (en) Apparatus, system, and method for managing eviction of data
US10740187B1 (en) Systems and methods of managing and creating snapshots in a cache-based storage system
US10235059B2 (en) Technique for maintaining consistent I/O processing throughput in a storage system
US20160004644A1 (en) Storage Controller and Method for Managing Modified Data Flush Operations From a Cache
Chan et al. Elastic parity logging for SSD RAID arrays: Design, analysis, and implementation
US20210034289A1 (en) User stream aware file systems with user stream detection
US10474587B1 (en) Smart weighted container data cache eviction
KR101986579B1 (ko) Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법
CN104205097A (zh) 一种去重方法装置与系统
US11132140B1 (en) Processing map metadata updates to reduce client I/O variability and device time to ready (TTR)
US10769020B2 (en) Sharing private space among data storage system data rebuild and data deduplication components to minimize private space overhead
US11797525B2 (en) One path metadata page reconstruction with no dynamical memory allocation for delta-log based storage
US11592988B2 (en) Utilizing a hybrid tier which mixes solid state device storage and hard disk drive storage
US20240111649A1 (en) Multi-tier heat maps
KR101542222B1 (ko) 하이브리드 저장 시스템 및 이를 이용한 데이터 캐싱 방법

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