KR102050725B1 - 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법 - Google Patents

컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법 Download PDF

Info

Publication number
KR102050725B1
KR102050725B1 KR1020120109162A KR20120109162A KR102050725B1 KR 102050725 B1 KR102050725 B1 KR 102050725B1 KR 1020120109162 A KR1020120109162 A KR 1020120109162A KR 20120109162 A KR20120109162 A KR 20120109162A KR 102050725 B1 KR102050725 B1 KR 102050725B1
Authority
KR
South Korea
Prior art keywords
data
block
node
extent
data block
Prior art date
Application number
KR1020120109162A
Other languages
English (en)
Other versions
KR20140042419A (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 KR1020120109162A priority Critical patent/KR102050725B1/ko
Priority to US14/038,938 priority patent/US9489388B2/en
Priority to JP2013202222A priority patent/JP6343438B2/ja
Publication of KR20140042419A publication Critical patent/KR20140042419A/ko
Application granted granted Critical
Publication of KR102050725B1 publication Critical patent/KR102050725B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Abstract

컴퓨팅 시스템이 제공된다. 컴퓨팅 시스템은, 적어도 하나의 데이터 블록을 통해 저장되는 파일데이터와, 노드 블록을 통해 저장되는 메타데이터가 저장된 스토리지 장치, 스토리지 장치에 저장된 파일데이터와 메타데이터를 관리하는 파일 시스템을 포함하되, 노드 블록은, 적어도 하나의 데이터 블록을 각각 가리키는 적어도 하나의 데이터 포인터와 적어도 하나의 데이터 블록 중 연속된 물리 어드레스를 갖는 데이터 블록을 그룹핑하여 가리키는 익스텐트를 포함한다.

Description

컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법{Computing system and method for managing data in the system}
본 발명은 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법에 관한 것이다.
파일시스템이 스토리지 장치에 파일을 저장하고자 할 때, 파일데이터와 메타데이터를 스토리지 장치에 저장한다. 파일데이터는 사용자 어플리케이션이 저장하고자 하는 파일의 내용을 포함하고, 메타데이터는 파일의 속성과 파일데이터가 저장되는 블록의 위치 등을 포함한다.
한편, 파일시스템이 스토리지 장치로부터 파일을 리드하고자 할 때는, 저장되어 있는 메타데이터를 스토리지 장치로부터 리드한 후, 리드된 메타데이터를 바탕으로 파일데이터를 리드하게 된다. 따라서, 메타데이터와 파일데이터의 연관 관계를 효율적으로 구성할 경우, 스토리지 장치로부터 파일데이터를 리드하는 시간이 단축될 수 있다.
본 발명이 해결하고자 하는 기술적 과제는 스토리지 장치 내의 저장 공간을 효율적으로 사용하면서 리드 시간을 단축시킬 수 있는 컴퓨팅 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 스토리지 장치 내의 저장 공간을 효율적으로 사용하면서 리드 시간을 단축시킬 수 있는 컴퓨팅 시스템의 데이터 관리 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 컴퓨팅 시스템은, 적어도 하나의 데이터 블록을 통해 저장되는 파일데이터와, 노드 블록을 통해 저장되는 메타데이터가 저장된 스토리지 장치, 스토리지 장치에 저장된 파일데이터와 메타데이터를 관리하는 파일 시스템을 포함하되, 노드 블록은, 적어도 하나의 데이터 블록을 각각 가리키는 적어도 하나의 데이터 포인터와 적어도 하나의 데이터 블록 중 연속된 물리 어드레스를 갖는 데이터 블록을 그룹핑하여 가리키는 익스텐트를 포함한다.
본 발명의 몇몇 실시예에서, 상기 익스텐트는 상기 파일데이터 내에서 상기 그룹핑된 데이터 블록을 통해 저장되는 데이터의 오프셋 정보와, 상기 그룹핑된 데이터 블록을 가리키는 블록 포인터와, 상기 그룹핑된 데이터 블록의 길이 정보를 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 노드 블록에 포함된 상기 익스텐트의 개수는 미리 정한 N(여기서, N은 상기 데이터 포인터의 개수 보다 작은 자연수) 이하로 관리될 수 있다. 이 때, 상기 N은 상기 데이터 포인터의 개수의 절반 이하일 수 있다.
본 발명의 몇몇 실시예에서, 상기 노드 블록은 상기 데이터 블록을 가리키는 다이렉트 노드 블록과, 상기 다이렉트 노드 블록을 가리키는 인다이렉트 노드 블록과, 상기 다이렉트 노드 블록 및 상기 인다이렉트 노드 블록을 가리키는 아이노드 블록을 포함하고, 상기 익스텐트는 상기 아이노드 블록 또는 상기 다이렉트 노드 블록에 포함될 수 있다.
본 발명의 몇몇 실시예에서, 상기 파일 시스템은, 상기 스토리지 장치로부터 상기 파일데이터를 리드할 경우, 상기 데이터 포인터와 상기 익스텐트 중 상기 익스텐트를 먼저 참조하여 상기 파일데이터를 리드할 수 있다.
본 발명의 몇몇 실시예에서, 상기 스토리지 장치는 랜덤 접근(random access) 방식으로 라이트되는 제1 영역과, 순차 접근(sequential access) 방식으로 라이트되는 제2 영역을 포함하고, 상기 적어도 하나의 데이터 블록과 상기 노드 블록은 상기 제2 영역에 저장될 수 있다. 이 때, 상기 스토리지 장치에서 상기 제1 영역의 물리 어드레스는 상기 제2 영역의 물리 어드레스보다 앞설 수 있으며, 상기 제1 영역에는 상기 노드 블록에 대응되는 노드 식별자(NODE ID)와, 상기 노드 식별자에 대응되는 물리 어드레스를 포함하는 노드 어드레스 테이블이 저장될 수 있다.
본 발명의 몇몇 실시예에서, 상기 스토리지 장치는 SSD(Static Solid Disk)를 포함할 수 있다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 관리 방법은, 파일데이터를 저장하는 제1 데이터 블록을 생성하고, 제1 데이터 블록과 연관된 노드 블록에, 제1 데이터 블록을 가리키는 데이터 포인터와 제1 데이터 블록과 연속된 물리 어드레스를 갖는 데이터 블록을 그룹핑하여 가리키는 익스텐트를 생성하는 것을 포함하되, 노드 블록에 포함된 익스텐트의 개수는 미리 정한 N(여기서, N은 데이터 포인터의 개수 보다 작은 자연수) 이하로 관리된다.
본 발명의 몇몇 실시예에서, 상기 익스텐트를 생성하는 것은, 상기 제1 데이터 블록이 제2 데이터 블록과 연속된 물리 어드레스를 가질 경우, 상기 노드 블록에 포함되고 상기 제2 데이터 블록을 가리키는 익스텐트가 상기 제1 데이터 블록과 상기 제2 데이터 블록을 그룹핑하여 가리키도록 하는 것을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 익스텐트를 생성하는 것은, 상기 제1 데이터 블록이 제2 데이터 블록과 불연속된 물리 어드레스를 가지고, 상기 제2 데이터 블록이 제3 데이터 블록과 연속된 물리 어드레스를 가질 경우, 상기 노드 블록에 포함되고 상기 제2 데이터 블록을 가리키는 제1 익스텐트와, 상기 노드 블록에 포함되고 상기 제3 데이터 블록을 가리키는 제2 익스텐트를 머지하고, 상기 제1 데이터 블록을 가리키는 익스텐트를 신규로 생성하는 것을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 익스텐트를 생성하는 것은, 상기 제1 데이터 블록이 제2 데이터 블록과 불연속된 물리 어드레스를 가지고, 상기 제2 데이터 블록이 제3 데이터 블록과 불연속된 물리 어드레스를 가질 경우, 상기 노드 블록에 포함되고 상기 제2 데이터 블록을 가리키는 제1 익스텐트와, 상기 노드 블록에 포함되고 상기 제3 데이터 블록을 가리키는 제2 익스텐트 중 길이 정보가 작은 익스텐트를 삭제하고, 상기 제1 데이터 블록을 가리키는 익스텐트를 신규로 생성하는 것을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 N은 상기 데이터 포인터의 개수의 절반 이하일 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 설명하기 위한 블록도이다.
도 2는 도 1의 호스트를 설명하기 위한 블록도이다.
도 3은 도 1의 스토리지 장치를 설명하기 위한 블록도이다.
도 4는 도 1의 스토리지 장치에 저장되는 파일의 구조를 설명하기 위한 도면이다.
도 5는 도 4의 다이렉트 노드 블록의 일 예를 도시한 도면이다.
도 6은 도 1의 스토리지 장치를 설명하기 위한 블록도이다.
도 7은 노드 어드레스 테이블을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 리드 방법을 설명하기 위한 순서도이다.
도 9는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 라이트 방법을 설명하기 위한 순서도이다.
도 10은 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 라이트 방법을 설명하기 위한 도면이다.
도 11 내지 도 13은 도 6의 스토리지 장치의 다른 구성예들을 설명하기 위한 블록도들이다.
도 14는 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템의 구체적인 일 예를 설명하기 위한 블록도이다.
도 15 내지 도 17은 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템의 구체적인 다른 예를 설명하기 위한 블록도들이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 설명하기 위한 블록도이다. 도 2는 도 1의 호스트를 설명하기 위한 블록도이다. 도 3은 도 1의 스토리지 장치를 설명하기 위한 블록도이다. 도 4는 도 1의 스토리지 장치에 저장되는 파일의 구조를 설명하기 위한 도면이다. 도 5는 도 4의 다이렉트 노드 블록의 일 예를 도시한 도면이다. 도 6은 도 1의 스토리지 장치를 설명하기 위한 블록도이다. 도 7은 노드 어드레스 테이블을 설명하기 위한 도면이다.
우선, 도 1을 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 시스템(1)은 호스트(10)와 스토리지 장치(20)를 포함한다.
호스트(10)와 스토리지 장치(20)는 특정한 프로토콜(protocol)을 이용하여 서로 통신한다. 예를 들어, USB(Universal Serial Bus) 프로토콜, MMC(multimedia card) 프로토콜, PCI(peripheral component interconnection) 프로토콜, PCI-E(PCI-express) 프로토콜, ATA(Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI(enhanced small disk interface) 프로토콜, 그리고 IDE(Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜 중 적어도 하나를 통해 통신할 수 있으나, 이에 한정되는 것은 아니다.
호스트(10)는 스토리지 장치(20)를 컨트롤한다. 예를 들어, 호스트(10)는 스토리지 장치(20)에 데이터를 라이트하거나, 스토리지 장치(20)로부터 데이터를 리드할 수 있다.
도 2를 참조하면, 이러한 호스트(10)는 사용자 스페이스(user space)(11)와 커널 스페이스(kernel space)(13)를 포함한다.
사용자 스페이스(11)는 사용자 어플리케이션(user application)(12)이 실행되는 영역이고, 커널 스페이스(13)는 커널 실행을 위해서 제한적으로 보장된(restrictively reserved) 영역이다. 사용자 스페이스(11)에서 커널 스페이스(13)를 접근하기 위해서, 시스템 콜(system call)이 이용될 수 있다.
커널 스페이스(13)는 가상 파일시스템(14), 파일시스템(16), 장치 드라이버(18) 등을 포함할 수 있다. 여기서, 파일시스템(16)은 하나 이상일 수 있다. 한편, 본 발명의 몇몇 실시예에서 컴퓨팅 시스템(1)은 F2FS 파일시스템을 포함할 수 있다. 이러한 F2FS 파일시스템에 대해서는 후술하도록 한다.
가상 파일시스템(14)은 하나 이상의 파일시스템(16)이 서로 상호 동작할 수 있도록 한다. 가상 파일시스템(14)은 서로 다른 미디어의 서로 다른 파일시스템(16)에 대해 리드/라이트 작업을 하기 위해서, 표준화된 시스템 콜을 사용할 수 있도록 한다. 따라서, 예를 들어, open(), read(), write()와 같은 시스템 콜은, 파일시스템(16)의 종류에 관계없이 사용될 수 있다. 즉, 가상 파일시스템(14)은 사용자 스페이스(11)와 파일시스템(16) 사이에 존재하는 추상화 계층이다.
장치 드라이버(18)는 하드웨어와 사용자 어플리케이션(또는 운영체제) 사이의 인터페이스를 담당한다. 장치 드라이버(18)는 하드웨어가 특정 운영체제 하에서 정상적으로 동작하기 위해 필요한 프로그램이다.
이하에서는, F2FS 파일시스템이 스토리지 장치(20)를 어떻게 제어하는지를 설명한다. 하지만, 본 실시예에 따른 파일시스템(16)이 이에 제한되는 것은 아니며, 파일시스템(16)의 종류는 얼마든지 변형될 수 있다.
스토리지 장치(20)는 SSD(Static Solid Disk), HDD(Hard Disk Drive), eMMC와 같은 각종 카드 스토리지, 데이터 서버 등일 수 있으나, 이에 한정되지 않는다.
스토리지 장치(20)는 도 3에 도시된 것과 같이, 구성될 수 있다. 세그먼트(SEGMENT)(53)는 다수의 블록(BLK)(51)을 포함하고, 섹션(SECTION)(55)은 다수의 세그먼트(53)를 포함하고, 존(ZONE)(57)은 다수의 섹션(55)을 포함할 수 있다. 예를 들어, 블록(51)은 4Kbyte이고, 세그먼트(53)는 512개의 블록(51)을 포함하여 2M byte일 수 있다. 이러한 구성은, 스토리지 장치(20)의 포맷(format) 시점에서 결정될 수 있으나, 이에 한정되는 것은 아니다. 섹션(55)과 존(57)의 사이즈는 포맷 시점에서 수정될 수도 있다. F2FS 파일시스템은 모든 데이터를 4Kbyte의 페이지 단위로 리드/라이트할 수 있다. 즉, 블록(51)에 하나의 페이지가 저장되고, 세그먼트(53)에 다수의 페이지가 저장될 수 있다.
한편, 스토리지 장치(20)에 저장되는 파일은 도 4에 도시된 것과 같은, 인덱싱 구조(indexing structure)를 가질 수 있다. 하나의 파일은 사용자 어플리케이션(도 2의 12)이 저장하고자 하는 파일의 내용을 포함하는 파일데이터와, 파일의 속성과 파일데이터가 저장되는 블록의 위치 등을 포함하는 메타데이터를 포함할 수 있다. 여기서, 데이터 블록(70)은 파일데이터를 저장하는 부분이고, 노드 블록(80, 81~88, 91~95)은 메타데이터를 저장하는 부분이다.
노드 블록(80, 81~88, 91~95)은 다이렉트 노드 블록(direct node block)(81~88), 인다이렉트 노드 블록(indirect node block)(91~95), 아이노드 블록(inode block)(80)을 포함할 수 있다.
다이렉트 노드 블록(81~88)은, 데이터 블록(70)을 직접 가리키는 데이터 포인터(data pointer)와 연속된 물리 주소를 갖는 데이터 블록(70)을 그룹핑하여 가리키는 익스텐트(extent)를 포함한다. 이하, 도 5를 참조하여, 이에 대해 보다 구체적으로 설명하도록 한다.
도 5를 참조하면, 다이렉트 노드 블록(81)은 데이터 블록(70) 각각을 가리키는 데이터 포인터(81-1)와, 연속된 물리 주소를 갖는 데이터 블록(70-2, 70-3)을 그룹핑하여 가리키는 익스텐트(81-2)를 포함한다. 예를 들어, 파일데이터가 도시된 것과 같이 ABCDEF라고 가정하면, 데이터 포인터(81-1)는 ABCDEF를 저장하고 있는 각각의 데이터 블록(70)을 가리키고, 익스텐트(81-2)는 BCD를 저장하고 있는 연속된 물리 주소를 갖는 데이터 블록(70-2)과, EF를 저장하고 있는 연속된 물리 주소를 갖는 데이터 블록(70-3)을 가리킬 수 있다.
한편, 각 익스텐트(81-2)는 도시된 것과 같이, 그룹핑된 데이터 블록(70-2, 70-3)을 통해 저장되는 데이터의 파일데이터 내에서 오프셋 정보, 그룹핑된 데이터 블록(70-2, 70-3)을 가리키는 블록 포인터와, 그룹핑된 데이터 블록(70-2, 70-3)의 길이 정보를 포함할 수 있다. 앞서 설명한 예에서, 그룹핑된 데이터 블록(70-2)을 가리키는 익스텐트(81-2)의 오프셋 정보로는 2가 저장되고(ABCDEF에서 B는 오프셋이 2이다), 블록 포인터는 B를 저장하고 있는 데이터 블록(70-2)을 가리키게되며, 길이 정보로는 3이 저장될 수 있다. 또한, 그룹핑된 데이터 블록(70-3)을 가리키는 익스텐트(81-2)의 오프셋 정보로는 5가 저장되고, 블록 포인터는 E를 저장하고 있는 데이터 블록(70-3)을 가리키게되며, 길이 정보로는 2가 저장될 수 있다.
여기서, 데이터 포인터(81-1)의 개수는 다이렉트 노드 블록(81)이 가리키는 데이터 블록(70)의 개수와 동일할 수 있으나, 익스텐트(81-2)의 개수는 미리 정한 N(여기서 N은 자연수)보다 작을 수 있다. 본 발명의 몇몇 실시예에서, N은 다이렉트 노드 블록(81)이 가리키는 데이터 블록(70)의 개수보다 작을 수 있다. 구체적으로, N은 다이렉트 노드 블록(81)이 가리키는 데이터 블록(70)의 개수 또는 데이터 포인터(81-1)의 개수의 절반 이하일 수 있으나, 본 발명이 이에 제한되는 것은 아니다.
본 실시예에 따른 컴퓨팅 시스템(1)은, 이렇게 다이렉트 노드 블록(81) 내에 데이터 포인터(81-1)와 익스텐트(81-2)를 함께 포함시키고, 익스텐트(81-2)의 개수를 N이하로 관리함으로써 데이터 처리 성능을 향상시킬 수 있게 된다. 이에 관한 보다 구체적인 설명은 후술하도록 한다.
다시 도 4를 참조하면, 인다이렉트 노드 블록(91~95)은 데이터 블록(70)이 아닌, 다른 노드 블록(83~88)(즉, 하위의 노드 블록)을 가리키는 포인터를 포함한다. 인다이렉트 노드 블록(91~95)은 예를 들어, 제1 인다이렉트 노드 블록(91~94), 제2 인다이렉트 노드 블록(95) 등을 포함할 수 있다. 제1 인다이렉트 노드 블록(91~94)은 다이렉트 노드 블록(83~88)을 가리키는 제1 노드 포인터를 포함한다. 제2 인다이렉트 노드 블록(95)은 제1 인다이렉트 노드 블록(93, 94)을 가리키는 제2 노드 포인터를 포함한다.
아이노드 블록(80)은 데이터 블록(70)을 직접 가리키는 데이터 포인터, 다이렉트 노드 블록(81, 82)를 가리키는 제1 노드 포인터, 제1 인다이렉트 노드 블록(91, 92)을 가리키는 제2 노드 포인터, 제2 인다이렉트 노드 블록(95)를 가리키는 제3 노드 포인터, 연속된 물리 주소를 갖는 데이터 블록(70)을 그룹핑하여 가리키는 익스텐트 중 적어도 하나를 포함할 수 있다. 여기서, 아이노드 블록(80)이 포함하는 익스텐트에 관한 설명은 앞서 다이렉트 노드 블록(81)에 포함된 익스텐트에 관한 설명과 동일한 바 중복된 설명은 생략하도록 한다.
여기서, 하나의 파일은 예를 들어, 최대 3Tbyte일 수 있고, 이러한 대용량의 파일은 다음과 같은 인덱스 구조를 가질 수 있다. 예를 들어, 아이노드 블록(80) 내의 데이터 포인터는 994개이고, 994개의 데이터 포인터 각각은 994개의 데이터 블록(70) 각각을 가리킬 수 있다. 제1 노드 포인터는 2개이고, 2개의 제1 노드 포인터 각각은 2개의 다이렉트 노드 블록(81, 82)를 가리킬 수 있다. 제2 노드 포인터는 2개이고, 2개의 제2 노드 포인터 각각은 2개의 제1 인다이렉트 노드 블록(91, 92)을 가리킬 수 있다. 제3 노드 포인터는 1개이고, 제2 인다이렉트 노드 블록(95)를 가리킬 수 있다.
또한, 파일별로 아이노드 메타데이터를 포함하는 아이노드 페이지가 존재한다.
한편, 도 6에서와 같이, 본 발명의 일 실시예에 따른 컴퓨팅 시스템(1)에서, 스토리지 장치(20)는 제1 영역(I)과 제2 영역(II)으로 나누어질 수 있다. 파일시스템(16)은 포맷(format)할 때, 스토리지 장치(20)를 제1 영역(I)과 제2 영역(II)으로 나눌 수 있으나, 이에 한정되는 것은 아니다. 제1 영역(I)은 시스템 전체로 관리되는 각종 정보가 저장되는 영역으로, 예를 들어, 현재 할당된 파일 수, 유효한 페이지 수, 위치 등의 정보를 포함할 수 있다. 제2 영역(II)은 실제 사용자가 사용하고 있는 각종 디렉토리 정보, 데이터, 파일 정보 등을 저장하는 공간이다.
또한, 제1 영역(I)은 스토리지 장치(20)의 앞부분에 저장되고, 제2 영역(II)은 스토리지 장치(20)의 뒷부분에 저장될 수 있다. 여기서, 앞부분은 뒷부분보다 물리 어드레스(physical address)를 기준으로 앞에 있음을 의미한다.
구체적으로, 제1 영역(I)은 슈퍼블록(61, 62), 체크포인트 영역(CheckPoint area, CP)(63), 세그먼트 정보 테이블(Segment Information Table, SIT)(64), 노드 어드레스 테이블(Node Address Table, NAT)(65), 세그먼트 요약 영역(Segment Summary Area, SSA)(66) 등을 포함할 수 있다.
먼저, 슈퍼블록(61, 62)에는, 파일시스템(16)의 디폴트 정보가 저장된다. 예를 들어, 블록(51)의 크기, 블록(51)의 개수, 파일시스템(16)의 상태 플러그(clean, stable, active, logging, unknown) 등이 저장될 수 있다. 도시된 것과 같이, 슈퍼블록(61, 62)은 2개일 수 있고, 각각에는 동일한 내용이 저장될 수 있다. 따라서, 둘 중 어느 하나에 문제가 발생하더라도, 다른 하나를 이용할 수 있다.
체크포인트 영역(63)은 체크포인트를 저장한다. 체크포인트는 논리적인 중단점으로서, 이러한 중단점까지의 상태가 완전하게 보존된다. 컴퓨팅 시스템의 동작 중에 사고(예를 들어, 파워 오프(sudden power off))가 발생하면, 파일시스템(16)은 보존된 체크포인트를 이용하여 데이터를 복구할 수 있다. 이러한 체크포인트의 생성 시점은, 예를 들어, 주기적으로 생성, System shutdown 시점 등일 수 있으나, 이에 한정되는 것은 아니다.
노드 어드레스 테이블(65)은 도 7에 도시된 것과 같이, 노드 각각에 대응되는 다수의 노드 식별자(NODE ID)와, 다수의 노드 식별자 각각에 대응되는 다수의 물리 어드레스를 포함할 수 있다. 예를 들어, 노드 식별자 N0에 대응되는 노드 블록은 물리 어드레스 a에 대응되고, 노드 식별자 N1에 대응되는 노드 블록은 물리 어드레스 b에 대응되고, 노드 식별자 N2에 대응되는 노드 블록은 물리 어드레스 c에 대응될 수 있다. 모든 노드(아이노드, 다이렉트 노드, 인다이렉트 노드 등)는 각각 고유의 노드 식별자를 갖는다. 다르게 설명하면, 모든 노드(아이노드, 다이렉트 노드, 인다이렉트 노드 등)는 노드 어드레스 테이블(65)로부터 고유의 노드 식별자를 할당 받을 수 있다. 노드 어드레스 테이블(65)은 아이노드의 노드 식별자, 다이렉트 노드의 노드 식별자 및 인다이렉트 노드의 노드 식별자 등을 저장할 수 있다. 각 노드 식별자에 대응되는 각 물리 어드레스는 업데이트(update)될 수 있다.
세그먼트 정보 테이블(64)는 각 세그먼트의 유효한 페이지의 개수와, 다수의 페이지의 비트맵을 포함한다. 비트맵은 각 페이지가 유효한지 여부를 0 또는 1로 표시한 것을 의미한다. 세그먼트 정보 테이블(64)은 클리닝(cleaning) 작업(또는 가비지 컬렉션(garbage collection))에서 사용될 수 있다. 특히 비트맵은 클리닝 작업을 수행할 때, 불필요한 리드 요청을 줄일 수 있고, 어댑티브 데이터 로깅(adaptive data logging)시 블록 할당할 때 이용될 수 있다.
세그먼트 요약 영역(66)는 제2 영역(II)의 각 세그먼트의 요약 정보를 모아둔 영역이다. 구체적으로, 세그먼트 요약 영역(66)은 제2 영역(II)의 각 세그먼트의 다수의 블록이 속하는 노드의 정보를 기술한다. 세그먼트 요약 영역(66)은 클리닝(cleaning) 작업(또는 가비지 컬렉션(garbage collection))에서 사용될 수 있다. 구체적으로 설명하면, 노드 블록(80, 81~88, 91~95)은 데이터 블록(70) 또는 하위의 노드 블록(예를 들어, 다이렉트 노드 블록 등)의 위치를 확인하기 위해, 노드 식별자 목록 또는 어드레스를 가지고 있다. 이와는 반대로, 세그먼트 요약 영역(66)은 데이터 블록(70) 또는 하위의 노드 블록(80, 81~88, 91~95)이 상위의 노드 블록(80, 81~88, 91~95)의 위치를 확인할 수 있는 인덱스(index)를 제공한다. 세그먼트 요약 영역(66)은 다수의 세그먼트 요약 블록을 포함한다. 하나의 세그먼트 요약 블록은, 제2 영역(II)에 위치한 하나의 세그먼트에 대한 정보를 가지고 있다. 또한, 세그먼트 요약 블록은 다수의 요약 정보로 구성되어 있으며, 하나의 요약 정보는 하나의 데이터 블록 또는 하나의 노드 블록에 대응된다.
제2 영역(II)은 서로 분리된 데이터 세그먼트(data segment)(DS0, DS1)과 노드 세그먼트(node segment)(NS0, NS1)을 포함할 수 있다. 다수의 데이터는 데이터 세그먼트(DS0, DS1)에 저장되고, 다수의 노드는 노드 세그먼트(NS0, NS1)에 저장될 수 있다. 데이터와 노드가 분리되는 영역이 서로 다르면, 효율적으로 세그먼트를 관리할 수 있고, 데이터를 리드할 때 보다 효과적으로 빠른 시간 내에 리드할 수 있다.
한편, 제2 영역(II)은 순차 접근(sequential acess) 방식으로 라이트되는 영역이고, 제1 영역(I)은 랜덤 접근(random acess) 방식으로 라이트되는 영역일 수 있다. 제2 영역(II)은 스토리지 장치(20)의 뒷부분에 저장될 수 있고, 제1 영역(I)은 스토리지 장치(20)의 앞부분에 저장된다. 여기서, 앞부분은 뒷부분보다 물리 어드레스(physical address)를 기준으로 앞에 있음을 의미할 수 있다.
스토리지 장치(20)가 예를 들어, SSD(Static Solid Disk)인 경우, SSD 내부에 버퍼(buffer)가 있을 수 있다. 버퍼는 예를 들어, 리드/라이트 속도가 빠른 SLC(Single Layer Cell) 메모리일 수 있다. 따라서, 이러한 버퍼는 한정된 공간의 랜덤 접근 방식의 라이트 속도를 빠르게 할 수 있다.
도면에서는, 제1 영역(I)은 슈퍼블록(61, 62), 체크포인트 영역(62), 세그먼트 정보 테이블(64), 노드 어드레스 테이블(65), 세그먼트 요약 영역(66) 순서로 되어 있으나, 이에 한정되는 것은 아니다. 예를 들어, 세그먼트 정보 테이블(64)과 노드 어드레스 테이블(65)의 위치가 바뀌어도 무방하고, 노드 어드레스 테이블(65)과 세그먼트 요약 영역(66)의 위치가 바뀌어도 무방하다.
다음 도 8 내지 도 10을 참조하여, 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 관리 방법을 설명하도록 한다.
도 8은 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 리드 방법을 설명하기 위한 순서도이다.
먼저, 도 8을 참조하여, 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 리드 방법에 대해 설명하도록 한다.
도 8을 참조하면, 파일 리드 요청을 제공받는다(S100). 예를 들어, 가상 파일 시스템(도 2의 14) 또는 파일 시스템(도 2의 16)은 사용자 어플리케이션(도 2의 12)으로부터 파일을 리드할 것을 요청받을 수 있다.
다음 도 8을 참조하면, 파일데이터를 리드하기 위해 익스텐트를 참조할 수 있는지 확인한다(S110). 만약, 참조할 수 있는 익스텐트가 없다면, 데이터 포인터를 이용하여 파일데이터를 리드한다(S120). 하지만, 참조할 수 있는 익스텐트가 있다면, 익스텐트를 이용하여 파일데이터를 리드한다(S130). 그리고, 데이터 포인터 또는 익스텐트를 이용하여 리드한 데이터가 파일데이터의 끝인지 확인한다(S140). 만약, 파일데이터의 끝이 아니라면 상기 S110~S130을 반복하고, 파일데이터의 끝이라면 리드 동작을 종료한다.
이하에서는 이해의 편의를 위해, 도 5에 도시된 예를 이용하여 본 발명의 일 실시예에 따른 컴퓨팅 시스템(1)의 데이터 리드 방법에 대해 보다 구체적으로 설명하도록 한다.
먼저, 도 5의 예에서, 파일데이터 A는 이를 참조하는 익스텐트(81-2)가 존재하지 않는다(S110). 따라서, 파일데이터 A는 데이터 포인터(81-1)를 참조하여 리드된다(S120). 아직 파일데이터가 모두 리드되지 않았으므로 리드 동작을 계속한다(S130).
다음, 파일데이터 B는 이를 참조하는 익스텐트(81-2)가 존재한다(S110). 따라서, 파일데이터 B를 익스텐트(81-2)를 참조하여 리드한다(S130). 이 때, 파일데이터 B를 참조하는 익스텐트(81-2)를 이용하여 파일데이터를 리드할 경우, 한 번에 파일데이터 BCD를 리드할 수 있게 된다. 아직 파일데이터가 모두 리드되지 않았으므로 리드 동작을 계속한다(S130).
다음, 파일데이터 E도 이를 참조하는 익스텐트(81-2)가 존재한다(S110). 따라서, 파일데이터 E를 익스텐트(81-2)를 참조하여 리드한다(S130). 이 때, 파일데이터 E를 참조하는 익스텐트(81-2)를 이용하여 파일데이터를 리드할 경우, 한 번에 파일데이터 EF를 리드할 수 있게 된다. 이제 파일데이터가 모두 리드되었으므로 리드 동작을 종료한다(S130).
이처럼, 본 실시예에 따른 컴퓨팅 시스템(1)은 다이렉트 노드 블록(81) 또는 아이노드 블록(80) 내에, 데이터 포인터(81-1)와 함께 익스텐트(81-2)를 포함시킴으로써, 데이터 포인터(81-1)만 이용하여 데이터를 리드 하는 경우에 비해, 데이터 리드 시간을 단축시킬 수 있는 장점이 있다. 여기서, 하나의 익스텐트(81-2)가 가리키는 파일데이터의 양이 많아질수록(즉, 데이터 블록(70)의 개수가 많아질수록) 데이터 리드에 소요되는 시간은 더 짧아질 수 있다.
한편, 도 5에 도시된 것과 달리, 스토리지 장치(20)에 저장된 파일데이터가 모두 물리적으로 연속되지 않은 어드레스를 갖는 데이터 블록(예를 들어, 70-1)에 분산되어 저장된다면, 최악의 경우 데이터 포인터(81-1)의 개수와 익스텐트(81-2)의 개수가 모두 데이터 노드(70)의 개수와 동일해질 수 있다. 이 경우에는, 추가적으로 포함되는 익스텐트(81-2)에 의해 저장 공간이 낭비될 우려가 있다.
따라서, 본 실시예에 따른 컴퓨팅 시스템(1)은 익스텐트(81-2)의 개수를 미리 정한 N이하로 관리한다. 이럴 경우, 익스텐트(81-2)를 이용한 리드 동작을 통해 데이터 리드 시간을 단축시키면서 동시에 저장 공간이 낭비되는 것도 막을 수 있게 된다.
이하에서는, 도 9 및 도 10를 참조하여, 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 라이트 방법에 대해 설명하도록 한다.
도 9는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 라이트 방법을 설명하기 위한 순서도이다. 도 10은 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 데이터 라이트 방법을 설명하기 위한 도면이다.
도 9를 참조하면, 새로운 파일데이터를 데이터 블록에 라이트한다(S200). 여기서는 설명의 편의를 위해, 앞서 설명한 ABCDEF로 이루어진 파일데이터(도 5 참조)에 파일데이터 G가 추가로 라이트되는 것을 예로 들어 설명하도록 한다. 이렇게 파일데이터 G가 추가되면 도 10에 도시된 것과 같이 새로운 데이터 블록(70-4)이 할당되고, 이를 가리키는 데이터 포인터(81-1)가 생성된다.
다시 도 9을 참조하면, 새롭게 생성된 데이터 블록을 가리키는 신규 익스텐트가 로그 익스텐트(log extent)와 머지(merge) 가능한지 판단한다(S210). 판단 결과, 머지가 가능하다면, 신규 익스텐트를 로그 익스텐트에 머지한다(S220). 구체적으로 도 10를 참조하면, 여기서 로그 익스텐트(81-2b)는 가장 최근에 추가된 파일데이터를 가리키는 익스텐트를 의미한다. 따라서, 도 10의 예에서는 신규 익스텐트(81-2c)가 로그 익스텐트(81-2b)에 머지 가능한지 판단한다. 만약, 데이터 블록(70-4)의 물리 어드레스가 데이터 블록(70-3)에 연속적으로 배치되었다면, 신규 익스텐트(81-2c)는 로그 익스텐트(81-2b)에 머지 가능하다. 따라서, 이 경우, 신규 익스텐트(81-2c)를 로그 익스텐트(81-2b)에 머지한다. 두 익스텐트(81-2b, 81-2c)가 머지되면, 로그 익스텐트(81-2b)의 길이 정보(length)는 이제 3으로 늘어나게 되며, 노드 블록(81) 내의 전체 익스텐트의 개수는 파일데이터 G 입력 전과 동일하게 2개로 유지될 수 있다.
다시 도 9을 참조하면, 그런데, 판단 결과, 신규 익스텐트가 로그 익스텐트와 머지 가능하지 않다면, 로그 익스텐트와 다른 익스텐트들이 머지 가능한지 판단한다(S230). 판단 결과, 로그 익스텐트와 다른 익스텐트들이 머지 가능하다면, 로그 엑스텐트와 다른 익스텐트들을 머지한다(S240). 그리고, 신규 익스텐트를 로그 익스텐트로 할당한다(S250).
구체적으로, 도 10의 예에서, 데이터 블록(70-4)의 물리 어드레스가 데이터 블록(70-3)에 연속적으로 배치되어 있지 않아, 신규 익스텐트(81-2c)를 로그 익스텐트(81-2b)에 머지하는 것이 불가능하다면, 로그 익스텐트(81-2b)와 다른 익스텐트들(81-2a)이 머지 가능한지 판단한다. 파일데이터는 지속적으로 갱신되므로 파일데이터를 저장하는 데이터 블록(70-2, 70-3)의 물리 어드레스는 지속적으로 변경될 수 있다. 따라서, 처음 익스텐트(81-2)가 생성되었을 때에는 머지할 수 없었으나, 이와 같은 데이터 갱신에 의해 시간이 지난 후, 로그 익스텐트(81-2b)와 머지가 가능한 익스텐트(81-2)가 존재할 수 있다. 본 예에서는 파일데이터 BCD가 저장된 데이터 블록(70-2)의 물리 어드레스와, 파일데이터 EF가 저장된 데이터 블록(70-3)의 물리 어드레스를 비교하여, 로그 익스텐트(81-2b)와 기존 익스텐트(81-2a)가 머지 가능한지 비교한다. 비교 결과 만약 머지 가능하다면, 로그 익스텐트(81-2b)를 기존 익스텐트(81-2a)에 머지한다. 그 결과 기존 익스텐트(81-2a)의 길이 정보는 5로 늘어날 것이다. 그 후, 신규 익스텐트(81-2c)를 로그 익스텐트(81-2b)로 할당한다. 이럴 경우, 전체 익스텐트의 개수는 파일데이터 G 입력 전과 동일하게 2개로 유지될 수 있다.
다시 도 9을 참조하면, 판단 결과, 로그 익스텐트와 다른 익스텐트들이 머지 가능하지 않다면, 노드 블록에 포함된 총 익스텐트의 개수가 미리 정한 N보다 작은지 판단한다(S260). 그 결과, N 보다 작다면, 신규 익스텐트를 로그 익스텐트로 할당한다(S250). 그러나, 판단 결과과 N 이상이라면, 가장 작은 길이 정보를 갖는 익스텐트를 삭제하고(S270), 신규 익스텐트를 로그 익스텐트로 할당한다(S250).
즉, 본 실시예에서는 도 10에 도시된 신규 익스텐트(81-2c)가 추가됨으로써 노드 블록(81)에 포함되는 총 익스텐트(81-2)의 개수가 미리 정한 N이하라면, 신규 익스텐트(81-2c)를 로그 익스텐트(81-2b)로 할당한다. 하지만, 신규 익스텐트(81-2c)가 추가됨으로써 노드 블록(81)에 포함되는 총 익스텐트(81-2)의 개수가 미리 정한 N을 넘게 된다면, 가장 작은 길이 정보를 갖는 익스텐트(81-2)를 삭제하고(도 10의 예에서는 익스텐트(81-2b)가 삭제될 수 있다), 신규 익스텐트(81-2c)를 로그 익스텐트(81-2b)로 할당함으로써, 총 익스텐트(81-2)의 개수를 언제난 미리 정한 N이하로 유지하게 된다.
한편, 본 발명의 몇몇 실시예에서, 이러한 N은 노드 블록(81)이 가리키는 데이터 블록(70)의 개수 또는 데이터 포인터(81-1)의 개수의 절반 이하일 수 있다. 이렇게 노드 블록(81)에 포함된 익스텐트(81-2) 개수를 제한할 경우, 익스텐트(81-2)를 이용함으로써 저장 공간이 불필요하게 낭비되는 것을 막을 수 있다.
도 11 내지 도 13은 도 6의 스토리지 장치의 다른 구성예들을 설명하기 위한 블록도들이다. 이하에서 설명의 편의를 위해서, 도 6을 이용하여 설명한 내용과 다른 점을 위주로 설명한다.
도 11을 참조하면, 본 발명의 다른 실시예에 따른 컴퓨팅 시스템의 스토리지 장치에서, 제2 영역(II)은 서로 분리된 다수의 세그먼트(S1~Sn, 단, n은 자연수)를 포함할 수 있다. 각 세그먼트(S1~Sn)에는, 데이터와 노드 구분없이 저장될 수 있다.
반면, 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서, 스토리지 장치는 서로 분리된 데이터 세그먼트(DS0, DS1), 노드 세그먼트(NS0, NS1)를 포함한다. 다수의 데이터는 데이터 세그먼트(DS0, DS1)에 저장되고, 다수의 노드는 노드 세그먼트(NS0, NS1)에 저장될 수 있다.
도 12를 참조하면, 본 발명의 또 다른 실시예에 따른 컴퓨팅 시스템의 스토리지 장치에서, 제1 영역(I)은 세그먼트 요약 영역(도 6의 66 참조)을 포함하지 않는다. 즉, 제1 영역(I)은 슈퍼블록(61, 62), 체크포인트 영역(62), 세그먼트 정보 테이블(64), 노드 어드레스 테이블(65)을 포함한다.
세그먼트 요약 정보는 제2 영역(II)내에 저장될 수 있다. 구체적으로, 제2 영역(II)은 다수의 세그먼트(S0~Sn)를 포함하고, 각 세그먼트(S0~Sn)는 다수의 블록으로 구분된다. 각 세그먼트(S0~Sn)의 적어도 하나의 블록(SS0~SSn)에 세그먼트 요약 정보를 저장할 수 있다.
도 13을 참조하면, 본 발명의 또 다른 실시예에 따른 컴퓨팅 시스템의 스토리지 장치에서, 제1 영역(I)은 세그먼트 요약 영역(도 6의 66 참조)을 포함하지 않는다. 즉, 제1 영역(I)은 슈퍼블록(61, 62), 체크포인트 영역(62), 세그먼트 정보 테이블(64), 노드 어드레스 테이블(65)을 포함한다.
세그먼트 요약 정보는 제2 영역(II) 내에 저장될 수 있다. 제2 영역(II)은 다수의 세그먼트(53)를 포함하고, 각 세그먼트(53)는 다수의 블록(BLK0~BLKm)으로 구분되고, 각 블록(BLK0~BLKm)은 OOB(Out Of Band)(OOB1~OOBm, 단, m은 자연수) 영역을 포함할 수 있다. OOB 영역(OOB1~OOBm)에 세그먼트 요약 정보를 저장할 수 있다.
이하에서, 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템이 적용될 수 있는 구체적인 시스템을 설명한다. 이하에서 설명되는 시스템은 예시적인 것에 불과하고, 이에 한정되는 것은 아니다.
도 14는 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템의 구체적인 일 예를 설명하기 위한 블록도이다.
도 14을 참조하면, 호스트 서버(300)는 네트워크(20)를 통해서 다수의 데이터 베이스 서버(330, 340, 350, 360)와 접속되어 있다. 호스트 서버(300) 내에, 데이터 베이스 서버(330, 340, 350, 360)의 데이터를 관리하기 위한 파일시스템(316)을 설치될 수 있다. 파일시스템(316)은 도 1 내지 도 13을 이용하여 설명한 파일시스템 중 어느 하나일 수 있다.
도 15 내지 도 17은 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템의 구체적인 다른 예를 설명하기 위한 블록도들이다.
우선, 도 15를 참조하면, 스토리지 장치(100)(도 1의 20에 대응됨)는 비휘발성 메모리 장치(1100) 및 컨트롤러(1200)를 포함할 수 있다.
여기서, 비휘발성 메모리 장치(1100)에는, 전술한 슈퍼블록(61, 62), 체크포인트 영역(63), 세그먼트 정보 테이블(64), 노드 어드레스 테이블(65) 등이 저장되어 있을 수 있다.
컨트롤러(1200)는 호스트 및 비휘발성 메모리 장치(1100)에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 컨트롤러(1200)는 비휘발성 메모리 장치(1100)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(1200)는 비휘발성 메모리 장치(1100)의 리드, 라이트, 이레이즈, 그리고 백그라운드(background) 동작을 제어하도록 구성된다. 컨트롤러(1200)는 비휘발성 메모리 장치(1100) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(1200)는 비휘발성 메모리 장치(1100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
예시적으로, 컨트롤러(1200)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 그리고 메모리 인터페이스(memory interface)와 같은 잘 알려진 구성 요소들을 더 포함한다. 램(RAM)은 프로세싱 유닛의 동작 메모리, 비휘발성 메모리 장치(1100) 및 호스트(Host) 사이의 캐시 메모리, 그리고 비휘발성 메모리 장치(1100) 및 호스트(Host) 사이의 버퍼 메모리 중 적어도 하나로서 이용된다. 프로세싱 유닛은 컨트롤러(1200)의 제반 동작을 제어한다.
컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 것이다.
컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적되어 SSD(Solid State Drive)를 구성할 수 있다. SSD는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함한다. 시스템(1000)이 반도체 드라이브(SSD)로 이용되는 경우, 시스템(1000)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선될 수 있다.
다른 예로서, 시스템(1000)은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공된다.
예시적으로, 비휘발성 메모리 장치(1100) 또는 시스템(1000)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 비휘발성 메모리 장치(1100) 또는 시스템(1000)은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
이어서, 도 16을 참조하면, 시스템(2000)은 비휘발성 메모리 장치(2100) 및 컨트롤러(2200)를 포함한다. 비휘발성 메모리 장치(2100)는 복수의 비휘발성 메모리 칩들을 포함한다. 복수의 비휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 비휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(2200)와 통신하도록 구성된다. 예를 들어, 복수의 비휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(2200)와 통신하는 것으로 도시되어 있다.
도 16에서, 하나의 채널에 복수의 비휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 비휘발성 메모리 칩이 연결되도록 시스템(2000)이 변형될 수 있음이 이해될 것이다.
이어서, 도 17을 참조하면, 시스템(3000)은 중앙 처리 장치(3100), 램(3200, RAM, Random Access Memory), 사용자 인터페이스(3300), 전원(3400), 그리고 도 16의 시스템(2000)을 포함한다.
시스템(2000)은 시스템 버스(3500)를 통해, 중앙처리장치(3100), 램(3200), 사용자 인터페이스(3300), 그리고 전원(3400)에 전기적으로 연결된다. 사용자 인터페이스(3300)를 통해 제공되거나, 중앙 처리 장치(3100)에 의해서 처리된 데이터는 시스템(2000)에 저장된다.
도 17에서, 비휘발성 메모리 장치(2100)는 컨트롤러(2200)를 통해 시스템 버스(3500)에 연결되는 것으로 도시되어 있다. 그러나, 비휘발성 메모리 장치(2100)는 시스템 버스(3500)에 직접 연결되도록 구성될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 호스트 14: 가상 파일시스템
16: 파일시스템 18: 장치 드라이버
20: 스토리지 장치

Claims (10)

  1. 적어도 하나의 데이터 블록을 통해 저장되는 파일데이터와, 노드 블록을 통해 저장되는 메타데이터가 저장된 스토리지 장치; 및
    상기 스토리지 장치에 저장된 상기 파일데이터와 상기 메타데이터를 관리하는 파일 시스템을 포함하되,
    상기 노드 블록은, 상기 적어도 하나의 데이터 블록을 각각 가리키는 적어도 하나의 데이터 포인터를 포함하고,
    상기 노드 블록은, 상기 적어도 하나의 데이터 블록이 2 이상의 데이터 블록을 포함하는 경우, 상기 적어도 하나의 데이터 블록 중 연속된 물리 어드레스를 갖는 데이터 블록을 그룹핑하여 가리키는 익스텐트를 포함하되,
    상기 데이터 포인터의 개수가 2 이상인 경우, 상기 노드 블록에 포함된 상기 익스텐트의 개수는 미리 정한 N(여기서, N은 상기 데이터 포인터의 개수 보다 작은 자연수) 이하로 관리되며,
    상기 N은 상기 데이터 포인터의 개수의 절반 이하인 컴퓨팅 시스템.
  2. 제 1항에 있어서,
    상기 익스텐트는 상기 파일데이터 내에서 상기 그룹핑된 데이터 블록을 통해 저장되는 데이터의 오프셋 정보와, 상기 그룹핑된 데이터 블록을 가리키는 블록 포인터와, 상기 그룹핑된 데이터 블록의 길이 정보를 포함하는 컴퓨팅 시스템.
  3. 삭제
  4. 삭제
  5. 제 1항에 있어서,
    상기 노드 블록은 상기 데이터 블록을 가리키는 다이렉트 노드 블록과, 상기 다이렉트 노드 블록을 가리키는 인다이렉트 노드 블록과, 상기 다이렉트 노드 블록 및 상기 인다이렉트 노드 블록을 가리키는 아이노드 블록을 포함하고,
    상기 익스텐트는 상기 아이노드 블록 또는 상기 다이렉트 노드 블록에 포함되는 컴퓨팅 시스템.
  6. 제 1항에 있어서,
    상기 파일 시스템은, 상기 스토리지 장치로부터 상기 파일데이터를 리드할 경우, 상기 데이터 포인터와 상기 익스텐트 중 상기 익스텐트를 먼저 참조하여 상기 파일데이터를 리드하는 컴퓨팅 시스템.
  7. 파일데이터를 저장하는 제1 데이터 블록을 생성하고,
    상기 제1 데이터 블록과 연관된 노드 블록에, 상기 제1 데이터 블록을 가리키는 데이터 포인터와 상기 제1 데이터 블록과 연속된 물리 어드레스를 갖는 데이터 블록을 그룹핑하여 가리키는 익스텐트를 생성하는 것을 포함하되,
    상기 노드 블록에 포함된 상기 익스텐트의 개수는 미리 정한 N(여기서, N은 상기 데이터 포인터의 개수 보다 작은 자연수) 이하로 관리되며,
    상기 N은 상기 데이터 포인터의 개수의 절반 이하인 컴퓨팅 시스템의 데이터 관리 방법.
  8. 제 7항에 있어서,
    상기 익스텐트를 생성하는 것은,
    상기 제1 데이터 블록이 제2 데이터 블록과 연속된 물리 어드레스를 가질 경우,
    상기 노드 블록에 포함되고 상기 제2 데이터 블록을 가리키는 익스텐트가 상기 제1 데이터 블록과 상기 제2 데이터 블록을 그룹핑하여 가리키도록 하는 것을 포함하는 컴퓨팅 시스템의 데이터 관리 방법.
  9. 제 7항에 있어서,
    상기 익스텐트를 생성하는 것은,
    상기 제1 데이터 블록이 제2 데이터 블록과 불연속된 물리 어드레스를 가지고, 상기 제2 데이터 블록이 제3 데이터 블록과 연속된 물리 어드레스를 가질 경우,
    상기 노드 블록에 포함되고 상기 제2 데이터 블록을 가리키는 제1 익스텐트와, 상기 노드 블록에 포함되고 상기 제3 데이터 블록을 가리키는 제2 익스텐트를 머지하고,
    상기 제1 데이터 블록을 가리키는 익스텐트를 신규로 생성하는 것을 포함하는 컴퓨팅 시스템의 데이터 관리 방법.
  10. 제 7항에 있어서,
    상기 익스텐트를 생성하는 것은,
    상기 제1 데이터 블록이 제2 데이터 블록과 불연속된 물리 어드레스를 가지고, 상기 제2 데이터 블록이 제3 데이터 블록과 불연속된 물리 어드레스를 가질 경우,
    상기 노드 블록에 포함되고 상기 제2 데이터 블록을 가리키는 제1 익스텐트와, 상기 노드 블록에 포함되고 상기 제3 데이터 블록을 가리키는 제2 익스텐트 중 길이 정보가 작은 익스텐트를 삭제하고,
    상기 제1 데이터 블록을 가리키는 익스텐트를 신규로 생성하는 것을 포함하는 컴퓨팅 시스템의 데이터 관리 방법.
KR1020120109162A 2012-09-28 2012-09-28 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법 KR102050725B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120109162A KR102050725B1 (ko) 2012-09-28 2012-09-28 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
US14/038,938 US9489388B2 (en) 2012-09-28 2013-09-27 Computing system, host system and method for managing data
JP2013202222A JP6343438B2 (ja) 2012-09-28 2013-09-27 コンピュータシステム及びコンピュータシステムのデータ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120109162A KR102050725B1 (ko) 2012-09-28 2012-09-28 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법

Publications (2)

Publication Number Publication Date
KR20140042419A KR20140042419A (ko) 2014-04-07
KR102050725B1 true KR102050725B1 (ko) 2019-12-02

Family

ID=50386227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120109162A KR102050725B1 (ko) 2012-09-28 2012-09-28 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법

Country Status (3)

Country Link
US (1) US9489388B2 (ko)
JP (1) JP6343438B2 (ko)
KR (1) KR102050725B1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9763518B2 (en) 2014-08-29 2017-09-19 Cisco Technology, Inc. Systems and methods for damping a storage system
US9846703B2 (en) * 2014-09-30 2017-12-19 Vivint, Inc. Page-based metadata system for distributed filesystem
US9900250B2 (en) 2015-03-26 2018-02-20 Cisco Technology, Inc. Scalable handling of BGP route information in VXLAN with EVPN control plane
US10108344B1 (en) * 2015-05-06 2018-10-23 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm
US10222986B2 (en) 2015-05-15 2019-03-05 Cisco Technology, Inc. Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system
US11588783B2 (en) 2015-06-10 2023-02-21 Cisco Technology, Inc. Techniques for implementing IPV6-based distributed storage space
US9892075B2 (en) 2015-12-10 2018-02-13 Cisco Technology, Inc. Policy driven storage in a microserver computing environment
KR102545067B1 (ko) 2016-03-02 2023-06-20 한국전자통신연구원 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
US20170351639A1 (en) 2016-06-06 2017-12-07 Cisco Technology, Inc. Remote memory access using memory mapped addressing among multiple compute nodes
US11563695B2 (en) 2016-08-29 2023-01-24 Cisco Technology, Inc. Queue protection using a shared global memory reserve
US10545914B2 (en) * 2017-01-17 2020-01-28 Cisco Technology, Inc. Distributed object storage
US10243823B1 (en) 2017-02-24 2019-03-26 Cisco Technology, Inc. Techniques for using frame deep loopback capabilities for extended link diagnostics in fibre channel storage area networks
US10713203B2 (en) 2017-02-28 2020-07-14 Cisco Technology, Inc. Dynamic partition of PCIe disk arrays based on software configuration / policy distribution
US10254991B2 (en) 2017-03-06 2019-04-09 Cisco Technology, Inc. Storage area network based extended I/O metrics computation for deep insight into application performance
US10303534B2 (en) 2017-07-20 2019-05-28 Cisco Technology, Inc. System and method for self-healing of application centric infrastructure fabric memory
US10404596B2 (en) 2017-10-03 2019-09-03 Cisco Technology, Inc. Dynamic route profile storage in a hardware trie routing table
US10942666B2 (en) 2017-10-13 2021-03-09 Cisco Technology, Inc. Using network device replication in distributed storage clusters
US10915640B2 (en) * 2018-10-01 2021-02-09 International Business Machines Corporation Cyber security testing for authorized services
US11010479B2 (en) * 2018-10-01 2021-05-18 International Business Machines Corporation Cyber security for space-switching program calls
CN109933570B (zh) * 2019-03-15 2020-02-07 中山大学 一种元数据管理方法、系统及介质
US11336679B2 (en) 2020-01-28 2022-05-17 International Business Machines Corporation Combinatorial test design for optimizing parameter list testing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353115A (ja) * 1999-04-28 2000-12-19 Emc Corp 多用途な間接指定又は複数ボリュームを有するエクステント・ベース・ファイルシステム
JP2007526528A (ja) 2003-05-30 2007-09-13 ヴェリタス・オペレーティング・コーポレーション マルチボリュームファイルサポート
US20100274773A1 (en) * 2009-04-27 2010-10-28 Dnyaneshwar Pawar Nearstore compression of data in a storage system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520142A (ja) * 1991-07-15 1993-01-29 Nec Corp ブロツク管理方式
JPH0793192A (ja) 1993-09-28 1995-04-07 Toshiba Corp ファイル管理方法
JPH07325669A (ja) * 1994-05-31 1995-12-12 Mitsubishi Electric Corp ディスク管理方法
US5991862A (en) * 1996-12-30 1999-11-23 Sun Microsystems, Inc. Modified indirect addressing for file system
US6505217B1 (en) 1998-11-25 2003-01-07 Compaq Computer Corporation Method and apparatus for file placement
US6895418B1 (en) * 1999-04-28 2005-05-17 Emc Corporation Versatile indirection in an extent based file system
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6578121B1 (en) 2001-02-05 2003-06-10 Emc Corporation File mapping system and related techniques
KR100484942B1 (ko) 2002-03-14 2005-04-25 한국전자통신연구원 대용량 파일시스템의 디렉토리 관리방법
DE10227255B4 (de) 2002-06-19 2008-06-26 Hyperstone Gmbh Verfahren zur Wiederherstellung von Verwaltungsdatensätzen eines blockweise löschbaren Speichers
US7159073B2 (en) 2003-03-27 2007-01-02 Stmicroelectronics, Inc. Data storage and caching architecture
JP2005135126A (ja) * 2003-10-30 2005-05-26 Hitachi Ltd フラグメント防止ファイルシステム
US7711916B2 (en) 2005-05-11 2010-05-04 Oracle International Corporation Storing information on storage devices having different performance capabilities with a storage system
US7873601B1 (en) * 2006-06-29 2011-01-18 Emc Corporation Backup of incremental metadata in block based backup systems
KR100791325B1 (ko) 2006-10-27 2008-01-03 삼성전자주식회사 비휘발성 메모리를 관리하는 장치 및 방법
US8683228B2 (en) 2007-01-16 2014-03-25 Terry Lee Stokes System and method for WORM data storage
JP4331220B2 (ja) 2007-03-07 2009-09-16 株式会社東芝 未使用物理領域自律管理機能を持つストレージ装置
US8533410B1 (en) * 2007-03-29 2013-09-10 Netapp, Inc. Maintaining snapshot and active file system metadata in an on-disk structure of a file system
US8903772B1 (en) * 2007-10-25 2014-12-02 Emc Corporation Direct or indirect mapping policy for data blocks of a file in a file system
JP2009205591A (ja) * 2008-02-29 2009-09-10 Panasonic Corp アクセスモジュール、情報記録モジュール、及び情報記録システム
EP2261803B1 (en) * 2008-04-04 2021-07-07 Panasonic Corporation Access device, information recording device, information recording system, file management method, and program
KR101086857B1 (ko) * 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US8204871B1 (en) 2010-09-28 2012-06-19 Emc Corporation Extended file mapping cache for fast input-output
US8612382B1 (en) * 2012-06-29 2013-12-17 Emc Corporation Recovering files in data storage systems
US8954383B1 (en) * 2012-06-29 2015-02-10 Emc Corporation Analyzing mapping objects of file systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353115A (ja) * 1999-04-28 2000-12-19 Emc Corp 多用途な間接指定又は複数ボリュームを有するエクステント・ベース・ファイルシステム
JP2007526528A (ja) 2003-05-30 2007-09-13 ヴェリタス・オペレーティング・コーポレーション マルチボリュームファイルサポート
US20100274773A1 (en) * 2009-04-27 2010-10-28 Dnyaneshwar Pawar Nearstore compression of data in a storage system

Also Published As

Publication number Publication date
JP6343438B2 (ja) 2018-06-13
JP2014071905A (ja) 2014-04-21
US9489388B2 (en) 2016-11-08
US20140095556A1 (en) 2014-04-03
KR20140042419A (ko) 2014-04-07

Similar Documents

Publication Publication Date Title
KR102050725B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
KR102050732B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
KR102050723B1 (ko) 컴퓨팅 시스템 및 그 데이터 관리 방법
KR102002830B1 (ko) 세그먼트 클리닝 장치 및 방법
KR102007650B1 (ko) 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법
KR101977575B1 (ko) 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
KR102148889B1 (ko) 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
US8856469B2 (en) Apparatus and method for logging optimization using non-volatile memory
KR101907059B1 (ko) 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템
US10468077B2 (en) Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage
CN108121813B (zh) 数据管理方法、装置、系统、存储介质及电子设备
KR20210068699A (ko) 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US20140095771A1 (en) Host device, computing system and method for flushing a cache
CN112306898A (zh) 存储设备、其操作方法及包括其的电子设备
KR101979715B1 (ko) 컴퓨팅 시스템 및 그 데이터 관리 방법
KR20140042428A (ko) 컴퓨팅 시스템 및 그 데이터 관리 방법
KR101716348B1 (ko) 메모리 시스템, 그것의 동작 방법, 그리고 그것을 포함하는 컴퓨팅 시스템
KR20140042520A (ko) 비트맵을 이용한 세그먼트 클리닝 장치 및 상기 비트맵을 저장하는 스토리지 장치

Legal Events

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