KR20130048594A - 지연 요소를 고려한 분산 스토리지 시스템, 분산 스토리지 관리 장치 및 방법 - Google Patents
지연 요소를 고려한 분산 스토리지 시스템, 분산 스토리지 관리 장치 및 방법 Download PDFInfo
- Publication number
- KR20130048594A KR20130048594A KR1020110113529A KR20110113529A KR20130048594A KR 20130048594 A KR20130048594 A KR 20130048594A KR 1020110113529 A KR1020110113529 A KR 1020110113529A KR 20110113529 A KR20110113529 A KR 20110113529A KR 20130048594 A KR20130048594 A KR 20130048594A
- Authority
- KR
- South Korea
- Prior art keywords
- storage
- distributed
- busy
- storage node
- group
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 238000001514 detection method Methods 0.000 claims abstract description 14
- 238000007726 management method Methods 0.000 claims description 46
- 230000004044 response Effects 0.000 claims description 8
- 230000001934 delay Effects 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
분산 스토리지 시스템에서 데이터 읽기/쓰기 요청을 지연 없이 빠르게 처리할 수 있는 장치 및 방법이 제공된다. 일 양상에 따른 장치는, 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 노드를 검출하는 검출부, 및 데이터 읽기 또는 데이터 쓰기와 관련된 요청을 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드로 전달하는 제어부를 포함할 수 있다.
Description
빠른 읽기/쓰기 연산을 위한 분산 스토리지 기술과 관련된다.
일반적으로, 분산 스토리지 시스템(distributed storage system)은 다수의 스토리지 노드로 구성되고, 네트워크로 연결된 다수의 클라이언트에게 스토리지 공간을 제공한다.
클라이언트가 분산 스토리지 시스템에 데이터를 저장할 경우, 분산 스토리지 시스템은 일정 개수의 복사본(replica)을 다른 스토리지 노드에 적절히 분산시켜 저장한다. 이를 통해 분산 스토리지 시스템은 스토리지 노드의 일부에 고장이 발생해도 데이터 손실을 방지할 수 있고, 고장난 스토리지 노드에 저장된 데이터를 다른 스토리지 노드를 통해 계속 서비스할 수 있다.
한편 각각의 스토리지 노드에 구비된 저장장치로 읽기/쓰기 요청이 전달된 경우, 그 저장장치의 특성에 따라 소정의 지연(latency)이 발생할 수가 있다. 예컨대, 스토리지 노드에 구비된 저장장치가 HDD(hard disk drive)인 경우, 일정 속도로 회전하는 디스크를 통해 읽기/쓰기 연산을 수행하는 기계적인 특성 때문에 지연이 발생할 수 있다.
지연 요소가 있는 스토리지 노드를 고려하여 데이터 요청을 처리하는 분산 스토리지 시스템, 분산 스토리지 관리 장치 및 방법이 제공된다.
일 양상에 따른 분산 스토리지 시스템은, 비휘발성 메모리 기반의 다수의 스토리지 노드를 포함하고, 데이터의 복사본을 이용하여 데이터를 분산적으로 저장하는 분산 스토리지, 분산 스토리지의 각 스토리지 노드 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 노드를 검출하는 검출부, 및 데이터 읽기 또는 데이터 쓰기와 관련된 요청을 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드로 전달하는 제어부를 포함할 수 있다.
다른 양상에 따른 분산 스토리지 시스템은, 비휘발성 메모리 기반의 다수의 스토리지 노드를 포함하고, 데이터의 복사본을 이용하여 데이터를 분산적으로 저장하는 분산 스토리지, 분산 스토리지의 각 스토리지 노드를 다수의 스토리지 그룹으로 분류하는 그룹 설정부, 각 스토리지 그룹 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 그룹을 검출하는 검출부, 및 데이터 읽기 또는 데이터 쓰기와 관련된 요청을 검출된 비지 스토리지 그룹을 제외한 나머지 스토리지 그룹으로 전달하는 제어부를 포함할 수 있다.
일 양상에 따른 분산 스토리지 관리 장치는, 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 노드를 검출하는 검출부, 및 데이터 읽기 또는 데이터 쓰기와 관련된 요청을 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드로 전달하는 제어부를 포함할 수 있다.
다른 양상에 따른 분산 스토리지 관리 장치는, 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드를 다수의 스토리지 그룹으로 분류하는 그룹 설정부, 각 스토리지 그룹 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 그룹을 검출하는 검출부, 및 데이터 읽기 또는 데이터 쓰기와 관련된 요청을 검출된 비지 스토리지 그룹을 제외한 나머지 스토리지 그룹으로 전달하는 제어부를 포함할 수 있다.
한편 일 양상에 따른 분산 스토리지 관리 방법은, 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 노드를 검출하는 단계, 및 데이터 읽기 또는 데이터 쓰기와 관련된 요청을 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드로 전달하는 단계를 포함할 수 있다.
다른 양상에 따른 분산 스토리지 관리 방법은, 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드를 다수의 스토리지 그룹으로 분류하는 단계, 각 스토리지 그룹 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 그룹을 검출하는 단계, 및 데이터 읽기 또는 데이터 쓰기와 관련된 요청을 검출된 비지 스토리지 그룹을 제외한 나머지 스토리지 그룹으로 전달하는 단계를 포함할 수 있다.
개시된 내용에 따르면, 분산 스토리지 환경에서 데이터 읽기 및 쓰기 연산 처리를 지연시키는 요소가 있는 스토리지 노드 또는 스토리지 그룹이 그 처리에서 배제되기 때문에 데이터 읽기/쓰기 요청을 지연 없이 빠르게 처리할 수가 있다.
도 1은 일 실시예에 따른 분산 스토리지 시스템 및 분산 스토리지 관리 장치의 구성을 도시한다.
도 2는 다른 실시예에 따른 분산 스토리지 시스템 및 분산 스토리지 관리 장치의 구성을 도시한다.
도 3은 일 실시예에 따른 스토리지 그룹 및 가비지 컬렉션 허용/금지 모드의 스케줄링 방법을 도시한다.
도 4는 일 실시예에 따른 분산 스토리지 관리 방법의 흐름을 도시한다.
도 5는 다른 실시예에 따른 분산 스토리지 관리 방법의 흐름을 도시한다.
도 2는 다른 실시예에 따른 분산 스토리지 시스템 및 분산 스토리지 관리 장치의 구성을 도시한다.
도 3은 일 실시예에 따른 스토리지 그룹 및 가비지 컬렉션 허용/금지 모드의 스케줄링 방법을 도시한다.
도 4는 일 실시예에 따른 분산 스토리지 관리 방법의 흐름을 도시한다.
도 5는 다른 실시예에 따른 분산 스토리지 관리 방법의 흐름을 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 일 실시예에 따른 분산 스토리지 시스템 및 분산 스토리지 관리 장치를 도시한다.
도 1을 참조하면, 분산 스토리지 시스템(100)은 분산 스토리지(101), 분산 스토리지 관리 장치(102), 및 클라이언트(103)를 포함할 수 있다.
분산 스토리지(101)는 다수의 스토리지 노드(예컨대, SN#0~#5)를 포함한다. 설명의 편의를 위해 6개의 스토리지 노드를 도시하였으나, 스토리지 노드의 개수가 여기에 한정되는 것은 아니다. 또한 분산 스토리지(101)는 다수의 복사본(replica)을 이용해서 데이터를 각 스토리지 노드에 분산적으로 저장한다. 즉, 어떤 데이터를 수신한 분산 스토리지(101)는 그 데이터에 대한 복사본을 정해진 개수만큼 생성할 수 있다. 예컨대, 3개의 스토리지 노드를 통해 데이터를 분산적으로 저장하는 경우, 분산 스토리지(101)는 수신된 데이터에 대해 2개의 복사본을 생성하는 것이 가능하다. 원본 데이터 1개와 복사본 데이터 2개는 3개의 스토리지 노드에 각각 저장될 수가 있다. 따라서 분산 스토리지(101)에는 동일한 데이터를 저장하고 있는 스토리지 노드가 여러 개 존재할 수가 있다.
분산 스토리지(101)의 각 스토리지 노드는 CPU, 메모리, 저장장치, 및 네트워크 인터페이스 등을 포함할 수 있다. 예컨대, 각 스토리지 노드는 어떤 작업, 태스크, 또는 인스트럭션을 독립적으로 처리할 수 있는 컴퓨터 장치가 될 수 있다. 또한 각 스토리지 노드는 외부 네트워크를 통해 서로 통신 가능하게 연결될 수 있다. 외부 네트워크는 인터넷이 될 수 있다.
각 스토리지 노드에 구비된 저장장치로는 HDD(hard disk drive), NAND 플래시, 및 SSD(solid-state drive) 등이 사용될 수 있다. 그러나 HDD의 경우, 일정 속도로 회전하는 디스크를 통해 읽기/쓰기 연산을 수행하는 기계적인 특성 때문에 지연이 발생할 수 있으므로, 응용 목적에 따라서는 NAND 플래시 또는 SSD 기반의 저장장치가 더 적절할 수가 있다.
NAND 플래시(또는 SSD)는 HDD와 달리 기계적인 구성요소가 없어 상대적으로 랜덤 읽기/쓰기 지연시간이 짧다. 또한 NAND 플래시는 값이 싸고 비휘발성이기 때문에 스토리지 노드의 저장장치로 적합하다. 그러나 NAND 플래시의 경우, 어느 위치에 쓰기 연산을 수행하기 위해서는 그 위치를 포함하는 블록 전체를 지우는 삭제 연산이 선행되어야 하는 물리적 특성을 가지고 있다. 따라서 삭제 연산이 진행중인 NAND 플래시에 도착한 읽기/쓰기 연산의 처리에 대한 지연 시간은 삭제연산 수행시간만큼 길어질 수 있다. 일 양상에 따라, 삭제 연산이 진행 중인 NAND 플래시는 읽기/쓰기 연산의 처리에서 배제될 수가 있다. 앞서 설명하였듯이 분산 스토리지(101)는 복사본을 이용하여 동일한 데이터를 여러 군데의 스토리지 노드에 저장하므로, 어떤 스토리지 노드가 읽기/쓰기 연산의 처리에서 배제되더라도 다른 스토리지 노드로부터 그 데이터를 독출하거나 다른 스토리지 노드에 그 데이터를 기록하는 것이 가능하다. 보다 자세한 내용은 후술한다.
분산 스토리지 관리 장치(102)는 클라이언트(103)로부터 데이터 요청을 수신하고, 수신된 데이터 요청을 처리한다. 데이터 요청(data request)이란 데이터 쓰기 요청 또는 데이터 읽기 요청이 될 수 있다. 일 양상에 따라, 분산 스토리지 시스템(100)은 key-value 인터페이스를 제공하는 것이 가능하다. 예를 들어, 클라이언트(103)가 데이터를 분산 스토리지(101)에 쓰고자 하는 경우, 클라이언트(103)는 {key, value} 형태의 데이터 쓰기 요청을 분산 스토리지 관리 장치(102)로 전송할 수 있다. 여기서, 'key'은 각 스토리지 노드의 주소 또는 식별 정보를, 'value'은 데이터를 나타낼 수가 있다. 데이터 쓰기 요청을 수신한 분산 스토리지 관리 장치(102)는 정해진 개수의 복사본을 생성하고, 원본과 복사본을 분산 스토리지(101)의 각 스토리지 노드에 저장할 수가 있다. 또한, 클라이언트(103)가 데이터를 분산 스토리지(101)로부터 읽고자 하는 경우, 클라이언트(103)는 {key} 형태의 데이터 읽기 요청을 분산 스토리지 관리 장치(102)로 전송할 수 있다. 데이터 읽기 요청을 수신한 분산 스토리지 관리 장치(102)는 key값을 참조하여 다수의 스토리지 노드에 분산 저장된 데이터 중 어느 하나를 선택하고, 선택된 데이터를 클라이언트(103)로 전송할 수가 있다.
분산 스토리지 관리 장치(102)는 검출부(120) 및 제어부(140)를 포함할 수 있다.
검출부(120)는 분산 스토리지(101)의 다수의 스토리지 노드 중에서 비지(busy) 스토리지 노드를 검출한다. 비지 스토리지 노드란 소정의 지연 요소를 갖고 있는 스토리지 노드가 될 수 있다. 지연 요소는 데이터 읽기 연산 또는 데이터 쓰기 연산의 속도 또는 성능을 떨어트리는 장애 원인이 될 수 있다. 예컨대, 가비지 컬렉션(garbage collection)을 수행하고 있는 스토리지 노드는 그 가비지 컬렉션이 끝날 때까지 읽기/쓰기 연산을 처리할 수 없으므로, 가비지 컬렉션은 지연 요소가 될 수 있다. 또한, 어떤 스토리지 노드의 큐(queue)에 데이터 읽기/쓰기 요청이 정해진 임계값 이상으로 쌓여있는 경우, 과거의 읽기/쓰기 요청이 처리될 때까지 현재의 읽기/쓰기 연산이 처리될 수 없으므로, 큐에 저장된 데이터 요청의 개수도 지연 요소가 될 수 있다. 나아가 어떤 스토리지 노드가 다양한 원인으로 인해 평균 응답 시간이 정해진 임계값 이상인 경우에도 그 스토리지 노드는 어떤 지연 요소를 가진 것으로 볼 수 있다.
따라서 일 양상에 따라 검출부(120)는 가비지 컬렉션을 수행 중인 스토리지 노드를 비지 스토리지 노드로 검출할 수 있다.
또한 추가적 양상에 따라 검출부(120)는 각 스토리지 노드에 대응되는 큐에 저장된 데이터 요청의 개수가 정해진 임계값 이상인 스토리지 노드를 비지 스토리지 노드로 검출할 수도 있다.
또한 다른 추가적 양상에 따라 검출부(120)는 평균 응답 시간이 정해진 임계값 이상인 스토리지 노드를 비지 스토리지 노드로 검출하는 것도 가능하다.
제어부(140)는 데이터 읽기 또는 데이터 쓰기와 관련된 요청을 비지 스토리지 노드를 제외한 나머지 스토리지 노드로 전달한다.
일 예로써, 클라이언트(103)가 어떤 데이터 'A'의 읽기를 요청하였고, 그 데이터 'A'는 SN#1과 SN#2에 분산적으로 저장되어 있고, SN#1이 가비지 컬렉션을 수행하고 있다고 가정하자. 데이터 읽기 요청을 수신한 제어부(140)는 그 데이터 'A'가 저장되어 있는 SN#1과 SN#2를 예비적으로 선택한다. 이때, 검출부(120)에 의해 SN#1이 비지 스토리지 노드인 것으로 검출되었으므로, 제어부(140)는 예비적으로 선택된 SN#1과 SN#2 중에서 비지 스토리지 노드가 아닌 SN#2를 최종적으로 선택한다. 그리고 최종적으로 선택된 SN#2로부터 데이터 'A'를 독출하여 클라이언트(103)로 리턴하거나, 또는 SN#2와 관련된 메타 데이터를 클라이언트(103)로 리턴할 수 있다.
다른 예로써, 클라이언트(103)가 어떤 데이터 'B'의 쓰기를 요청하였고, 분산 스토리지(101)는 두 군데에 나누어서 데이터를 저장하는 정책을 사용하고 있으며, SN#1이 가비지 컬렉션을 수행하고 있다고 가정하자. 데이터 쓰기 요청을 수신한 제어부(140)는 그 데이터 'B'의 복사본 1개 생성한다. 그리고 2개의 데이터 'B'(즉, 원본과 복사본)를 저장할 스토리지 노드를 선택한다. 이때, 검출부(120)에 의해 SN#1이 비지 스토리지 노드인 것으로 검출되었으므로, 제어부(140)는 비지 스토리지 노드인 SN#1을 제외한 나머지 스토리지 노드(예컨대, SN#0, #2)에 각각 데이터 'B'을 전송한다.
도 2는 다른 실시예에 따른 분산 스토리지 시스템 및 분산 스토리지 관리 장치를 도시한다.
도 2를 참조하면, 분산 스토리지 시스템(200)은 분산 스토리지(201), 분산 스토리지 관리 장치(202), 및 클라이언트(203)를 포함할 수 있다.
분산 스토리지(201)는 도 1에서 설명한 것과 동일하다.
분산 스토리지 관리 장치(202)는 클라이언트(203)로부터 데이터 요청을 수신하고, 수신된 데이터 요청을 처리한다. 또한 분산 스토리지 관리 장치(202)는 그룹 설정부(220), 검출부(240), 및 제어부(260)를 포함할 수 있다.
그룹 설정부(220)는 다수의 스토리지 노드를 N개의 스토리지 그룹(예컨대, 221~224)으로 분류한다. 즉, 그룹 설정부(220)는 분산 스토리지(201)의 각 스토리지 노드(예컨대, SN#0~SN#15)를 몇 개씩 묶여서 그룹을 생성할 수가 있다. 예컨대, SN#0~#3은 그룹 1(221)을, SN#4~#7은 그룹 2(222)를, SN#8~#11은 그룹 3(223)을, SN#12~#15는 그룹 4(224)를 형성할 수 있다. 여기서 전체 스토리지 노드의 개수, 각 그룹에 속할 스토리지 노드의 개수, 및 생성될 그룹의 개수는 예시적인 것으로, 응용 목적에 따라 다양하게 변경될 수 있음은 물론이다.
일 양상에 따라, 생성될 스토리지 그룹의 개수(즉 N값)는 생성될 복사본의 개수 또는 데이터가 분산되는 개수에 의존할 수 있다. 예컨대, 생성될 복사본의 개수를 K개라고 하고, 데이터가 저장되는 스토리지 노드의 개수를 M개라고 하면, N값은 (K+2) 또는 (M+1)로 설정될 수 있다. 일 예로써, 어떤 데이터가 분산 스토리지(201)의 각 스토리지 노드에 3군데로 분산되어 저장되는 경우를 가정하면, 생성될 스토리지 그룹의 개수는 4개가 될 수 있다.
검출부(240)는 생성된 스토리지 그룹 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 그룹을 검출한다. 지연 요소는 도 1에서 설명한 것과 동일하다. 예컨대, 검출부(240)는 지연 요소를 갖고 있는 스토리지 노드를 적어도 한 개 포함하는 스토리지 그룹을 비지 스토리지 그룹으로 검출할 수가 있다.
제어부(260)는 데이터 읽기 또는 데이터 쓰기와 관련된 요청을 비지 스토리지 그룹을 제외한 나머지 스토리지 그룹으로 전달한다.
일 예로써, 클라이언트(203)가 어떤 데이터 'A'의 읽기를 요청하였고, 그 데이터 'A'는 SN#0과 SN#4에 분산적으로 저장되어 있고, SN#0이 가비지 컬렉션을 수행하고 있다고 가정하자. 데이터 읽기 요청을 수신한 제어부(260)는 그 데이터 'A'가 저장되어 있는 SN#0과 SN#4를 포함하는 그룹 1(221)과 그룹 2(222)를 예비적으로 선택한다. 이때, 검출부(240)에 의해 SN#0을 포함하고 있는 그룹 1(221)이 비지 스토리지 그룹인 것으로 검출되었으므로, 제어부(260)는 예비적으로 선택된 그룹 1(221)과 그룹 2(222) 중에서 비지 스토리지 그룹이 아닌 그룹 2(222)를 최종적으로 선택한다. 최종적으로 선택된 그룹 2(222)의 SN#4로부터 데이터 'A'를 독출하여 클라이언트(203)로 리턴하거나, 또는 SN#4와 관련된 메타 데이터를 클라이언트(203)로 리턴할 수 있다.
다른 예로써, 클라이언트(203)가 어떤 데이터 'B'의 쓰기를 요청하였고, 분산 스토리지(201)는 세 군데에 나누어서 데이터를 저장하는 정책을 사용하고 있으며, SN#0이 가비지 컬렉션을 수행하고 있다고 가정하자. 데이터 쓰기 요청을 수신한 제어부(260)는 그 데이터 'B'의 복사본 2개 생성한다. 그리고 총 3개의 데이터 'B'(즉, 원본과 복사본)를 저장할 스토리지 노드를 선택한다. 이때, 검출부(240)에 의해 SN#0을 포함하는 그룹 1(221)이 비지 스토리지 그룹인 것으로 검출되었으므로, 제어부(260)는 비지 스토리지 그룹인 그룹 1(221)을 제외한 나머지 그룹(222, 223, 224)의 각 스토리지 노드(예컨대, SN#4, #8, #12)에 각각 데이터 'B'을 전송한다.
도 3은 일 실시예에 따른 스토리지 그룹 및 가비지 컬렉션 스케줄링을 도시한다.
도 3에서, 분산 스토리지(301)가 N개의 데이터를 분산적으로 저장하는 경우, 스토리지 그룹은 (N+1)개가 형성될 수 있다. 다르게 표현하면, 분산 스토리지(301)가 K개의 복사본을 생성하는 경우, 스토리지 그룹은 (K+2)개가 형성될 수 있다. 예를 들어, 분산 스토리지(301)가 2개의 복사본 데이터를 이용해서 총 3개의 데이터를 분산적으로 저장하는 경우, 스토리지 그룹은 4개가 형성될 수 있다.
일 양상에 따라, 각 스토리지 그룹 또는 각 스토리지 그룹에 속하는 스토리지 노드들은 소정의 'GC 허용 모드'과 'GC 금지 모드'을 가질 수 있다. GC 허용 모드는 가비지 컬렉션(garbage collection, 이하, GC라고 함)의 실행을 허용하는 모드이고, GC 금지 모드는 GC의 실행을 금지하는 모드이다. 따라서 GC는 GC 허용 모드에서만 실행될 수가 있다.
추가적 양상에 따라, 분산 스토리지(301)에 관한 GC 허용 모드와 GC 금지 모드는 정해진 스케줄(302)에 따라 스케줄링이 될 수 있다. 예컨대, N개의 데이터가 분산적으로 저장되는 경우, 임의의 시점에 GC 금지 모드에 있는 스토리지 그룹이 적어도 N개가 존재하도록 각 모드가 스케줄링되는 것이 가능하다. 다시 말해, 도 3과 같이, 4개의 스토리지 그룹이 생성되고, 3개의 데이터가 분산적으로 저장되는 경우, 어느 시점에라도 적어도 3개의 스토리지 그룹은 GC 불가 모드에 있도록 각 모드가 스케줄링되는 것이 가능하다.
추가적 양상에 따라, 분산 스토리지 관리 장치(예컨대, 도 2의 202)는 각 스토리지 그룹의 GC 허용 모드와 GC 금지 모드를 적절하게 스케줄링하고, 데이터 읽기/쓰기 요청을 GC 금지 모드에 있는 스토리지 그룹으로 전달하는 것이 가능하다. 예컨대, 시점 T1에서 데이터 읽기/쓰기 요청을 수신한 분산 스토리지 관리 장치(202)는 스토리지 그룹 1, 2, 3 및 4 중 어느 것에 그 요청을 전달할 수 있다. 또한 시점 T2에서 데이터 읽기/쓰기 요청을 수신한 분산 스토리지 관리 장치(202)는 GC 허용 모드에 있는 그룹 1을 제외한 나머지 그룹으로 그 요청을 전달할 수 있다.
다른 추가적 양상에 따라, 각 스토리지 그룹 또는 각 스토리지 그룹에 속하는 스토리지 노드는 소정의 글로벌 타이머(global timer)를 가질 수가 있다. 글로벌 타이머는 전술한 GC 허용/금지 모드에 관한 타이밍 정보 또는 스케줄 정보가 될 수 있다. 분산 스토리지 관리 장치(202)는 데이터 읽기/쓰기 요청에 대하여 글로벌 타이머를 포함한 응답을 클라이언트(예컨대, 도 2의 203)에게 전송할 수 있다. 이 글로벌 타이머를 통해 클라이언트(203)는 다음에 GC 허용 모드로 들어가는 스토리지 그룹을 회피해서 다른 스토리지 그룹으로 접근하는 것이 가능하다. 그 밖에도 글로벌 타이머가 사용되지 않는 경우, GC 실행 중인 스토리지 노드가 직접 읽기 접근을 차단하고 다른 스토리지 노드로 읽기 접근을 전달하는 것도 가능하다.
또 다른 추가적 양상에 따라, GC 허용 모드는 지연 요소로 작용할 수가 있다. 따라서 검출부(예컨대, 도 2의 240)가 비지 스토리지 그룹을 검출할 때, 스케줄 정보(302)를 참조하여 GC 허용 모드에 있는 스토리지 그룹을 비지 스토리지 그룹으로 검출하는 것도 가능하다.
도 4는 일 실시예에 따른 분산 스토리지 관리 방법의 흐름도이다. 도 4를 참조하여 일 실시예에 따른 분산 스토리지 관리 방법을 설명하면 다음과 같다.
먼저 비지(busy) 스토리지 노드가 검출된다(501). 예컨대, 비지 스토리지 노드는 도 1의 검출부(120)에 의해 검출될 수 있다. 비지 스토리지 노드는 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드 중에서 소정의 지연 요소를 갖고 있는 스토리지 노드가 될 수 있다. 지연 요소는 가비지 컬렉션의 수행, 일정 개수 이상으로 쌓인 데이터 읽기/쓰기 요청, 일정 시간 이상의 응답 지연 시간의 존재 등이 될 수 있다.
또한 수신된 데이터 읽기/쓰기 요청은 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드로 전달된다(402). 예컨대, 도 1의 제어부(140)에 의해 수신된 데이터 읽기/쓰기 요청이 비지 스토리지 노드를 회피하여 전달되는 것이 가능하다.
도 5는 다른 실시예에 따른 분산 스토리지 관리 방법의 흐름도이다. 도 5를 참조하여 다른 실시예에 따른 분산 스토리지 관리 방법을 설명하면 다음과 같다.
먼저 다수의 스토리지 그룹이 설정된다(501). 예컨대, 도 2의 그룹 설정부(220)에 의해 다수의 스토리지 그룹이 생성되는 것이 가능하다. 생성되는 스토리지 그룹의 개수는 분산적으로 저장될 데이터의 개수 또는 생성될 복사본의 개수와 연관될 수 있다.
또한 비지 스토리지 그룹이 검출된다(502). 예컨대, 도 2의 검출부(240)가 지연 요소를 갖고 있는 스토리지 노드를 포함하는 스토리지 그룹을 비지 스토리지 그룹으로 검출하는 것이 가능하다.
또한 수신된 데이터 읽기/쓰기 요청은 검출된 비지 스토리지 그룹을 제외한 나머지 스토리지 그룹으로 전달된다(503). 예컨대, 도 2의 제어부(260)가 비지 스토리지 그룹에 속하지 아니한 스토리지 노드로 수신된 데이터 읽기/쓰기 요청을 전달하는 것이 가능하다.
이상에서 살펴본 것과 같이, 개시된 실시예들에 의하면, 데이터 읽기 및 쓰기 연산 처리를 지연시키는 요소가 있는 스토리지 노드 또는 스토리지 그룹이 그 처리에서 배제되기 때문에 데이터 읽기/쓰기 요청을 지연 없이 빠르게 처리할 수가 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.
101: 분산 스토리지
102: 분산 스토리지 관리 장치
103: 클라이언트
120: 검출부
140: 제어부
102: 분산 스토리지 관리 장치
103: 클라이언트
120: 검출부
140: 제어부
Claims (20)
- 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 노드를 검출하는 검출부; 및
데이터 읽기 또는 데이터 쓰기와 관련된 요청을 상기 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드로 전달하는 제어부; 를 포함하는 분산 스토리지 관리 장치.
- 제 1 항에 있어서, 상기 각 스토리지 노드는
비휘발성 메모리를 포함하는 분산 스토리지 관리 장치.
- 제 1 항에 있어서, 상기 검출부는
가비지 컬렉션(garbage collection)을 수행 중인 스토리지 노드를 상기 비지 스토리지 노드로 검출하는 분산 스토리지 관리 장치.
- 제 1 항에 있어서, 상기 검출부는
상기 각각의 스토리지 노드에 대응되는 큐(queue)에 저장된 상기 요청이 정해진 임계값 이상인 스토리지 노드를 상기 비지 스토리지 노드로 검출하는 분산 스토리지 관리 장치.
- 제 1 항에 있어서, 상기 검출부는
평균 응답 시간이 정해진 임계값 이상인 스토리지 노드를 상기 비지 스토리지 노드로 검출하는 분산 스토리지 관리 장치.
- 제 1 항에 있어서, 상기 제어부는
상기 데이터 읽기와 관련된 요청을 상기 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드 중에서 상기 복사본을 가지고 있는 스토리지 노드로 전달하는 분산 스토리지 관리 장치.
- 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드를 다수의 스토리지 그룹으로 분류하는 그룹 설정부;
상기 각 스토리지 그룹 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 그룹을 검출하는 검출부;
데이터 읽기 또는 데이터 쓰기와 관련된 요청을 상기 검출된 비지 스토리지 그룹을 제외한 나머지 스토리지 그룹으로 전달하는 제어부; 를 포함하는 분산 스토리지 관리 장치.
- 제 7 항에 있어서, 상기 각 스토리지 노드는
비휘발성 메모리를 포함하는 분산 스토리지 관리 장치.
- 제 7 항에 있어서, 상기 검출부는
가비지 컬렉션(garbage collection)을 수행 중인 스토리지 노드를 포함하는 스토리지 그룹을 상기 비지 스토리지 그룹으로 검출하는 분산 스토리지 관리 장치.
- 제 7 항에 있어서, 상기 검출부는
상기 각각의 스토리지 노드에 대응되는 큐(queue)에 저장된 상기 요청이 정해진 임계값 이상인 스토리지 노드를 포함하는 스토리지 그룹을 상기 비지 스토리지 그룹으로 검출하는 분산 스토리지 관리 장치.
- 제 7 항에 있어서, 상기 검출부는
평균 응답 시간이 정해진 임계값 이상인 스토리지 노드를 포함하는 스토리지 그룹을 상기 비지 스토리지 그룹으로 검출하는 분산 스토리지 관리 장치.
- 제 7 항에 있어서, 상기 제어부는
상기 데이터 읽기와 관련된 요청을 상기 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드 중에서 상기 복사본을 가지고 있는 스토리지 노드를 포함하는 스토리지 그룹으로 전달하는 분산 스토리지 관리 장치.
- 제 7 항에 있어서, 상기 스토리지 그룹의 개수는
상기 복사본이 K개(K는 정수) 생성되는 경우, K+2개로 설정되는 분산 스토리지 관리 장치.
- 제 13 항에 있어서,
상기 각각의 스토리지 그룹은, 가비지 컬렉션의 실행이 허용되는 가비지 컬렉션 허용 모드와, 가비지 컬렉션 실행이 허용되지 않는 가비지 컬렉션 금지 모드를 가지며,
상기 각 모드는, 임의의 시점에 적어도 K+1개의 스토리지 그룹이 상기 가비지 컬렉션 금지 모드에 있도록 스케줄링되는 분산 스토리지 관리 장치.
- 제 14 항에 있어서, 상기 제어부는
상기 요청을 상기 가비지 컬렉션 금지 모드에 있는 스토리지 그룹으로 전달하는 분산 스토리지 관리 장치.
- 제 14 항에 있어서, 상기 제어부는
상기 요청에 대하여 상기 각 모드의 스케줄 정보를 포함하는 글로벌 타이머(global timer)를 포함하는 응답을 생성하는 분산 스토리지 관리 장치.
- 비휘발성 메모리 기반의 다수의 스토리지 노드를 포함하고, 데이터의 복사본을 이용하여 상기 데이터를 분산적으로 저장하는 분산 스토리지;
상기 분산 스토리지의 각 스토리지 노드 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 노드를 검출하는 검출부; 및
데이터 읽기 또는 데이터 쓰기와 관련된 요청을 상기 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드로 전달하는 제어부; 를 포함하는 분산 스토리지 시스템.
- 비휘발성 메모리 기반의 다수의 스토리지 노드를 포함하고, 데이터의 복사본을 이용하여 상기 데이터를 분산적으로 저장하는 분산 스토리지;
상기 분산 스토리지의 각 스토리지 노드를 다수의 스토리지 그룹으로 분류하는 그룹 설정부;
상기 각 스토리지 그룹 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 그룹을 검출하는 검출부; 및
데이터 읽기 또는 데이터 쓰기와 관련된 요청을 상기 검출된 비지 스토리지 그룹을 제외한 나머지 스토리지 그룹으로 전달하는 제어부; 를 포함하는 분산 스토리지 시스템.
- 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 노드를 검출하는 단계; 및
데이터 읽기 또는 데이터 쓰기와 관련된 요청을 상기 검출된 비지 스토리지 노드를 제외한 나머지 스토리지 노드로 전달하는 단계; 를 포함하는 분산 스토리지 관리 방법.
- 다수의 복사본을 이용하여 데이터를 분산적으로 저장하는 다수의 스토리지 노드를 다수의 스토리지 그룹으로 분류하는 단계;
상기 각 스토리지 그룹 중에서 지연 요소를 갖고 있는 비지(busy) 스토리지 그룹을 검출하는 단계; 및
데이터 읽기 또는 데이터 쓰기와 관련된 요청을 상기 검출된 비지 스토리지 그룹을 제외한 나머지 스토리지 그룹으로 전달하는 단계; 를 포함하는 분산 스토리지 관리 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110113529A KR20130048594A (ko) | 2011-11-02 | 2011-11-02 | 지연 요소를 고려한 분산 스토리지 시스템, 분산 스토리지 관리 장치 및 방법 |
US13/421,228 US20130111153A1 (en) | 2011-11-02 | 2012-03-15 | Distributed storage system, apparatus and method for managing a distributed storage in consideration of latency elements |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110113529A KR20130048594A (ko) | 2011-11-02 | 2011-11-02 | 지연 요소를 고려한 분산 스토리지 시스템, 분산 스토리지 관리 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20130048594A true KR20130048594A (ko) | 2013-05-10 |
Family
ID=48173652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110113529A KR20130048594A (ko) | 2011-11-02 | 2011-11-02 | 지연 요소를 고려한 분산 스토리지 시스템, 분산 스토리지 관리 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130111153A1 (ko) |
KR (1) | KR20130048594A (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101540847B1 (ko) * | 2013-07-09 | 2015-07-30 | 광운대학교 산학협력단 | 스토리지의 부하에 기초한 웹 브라우저 정보 캐싱 장치 및 방법 |
KR20180050180A (ko) * | 2016-11-04 | 2018-05-14 | 에스케이하이닉스 주식회사 | 데이터 분산 처리를 수행하는 데이터 관리 시스템 및 데이터 관리 방법 |
KR20190047484A (ko) | 2017-10-27 | 2019-05-08 | 삼성에스디에스 주식회사 | 복수의 스토리지 장치를 이용한 파일 관리 서비스의 제공 방법 및 그 장치 |
WO2022139921A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Management of distributed shared memory |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140281301A1 (en) * | 2013-03-15 | 2014-09-18 | Silicon Graphics International Corp. | Elastic hierarchical data storage backend |
US9727456B2 (en) * | 2014-11-03 | 2017-08-08 | Pavilion Data Systems, Inc. | Scheduled garbage collection for solid state storage devices |
US9727457B2 (en) * | 2015-10-23 | 2017-08-08 | Linkedin Corporation | Minimizing latency due to garbage collection in a distributed system |
US10409719B2 (en) | 2016-03-17 | 2019-09-10 | Samsung Electronics Co., Ltd. | User configurable passive background operation |
JP2018041153A (ja) * | 2016-09-05 | 2018-03-15 | 東芝メモリ株式会社 | ストレージシステムおよび入出力処理方法 |
JP2019074897A (ja) * | 2017-10-16 | 2019-05-16 | 富士通株式会社 | ストレージ制御装置、及びプログラム |
CN108664223B (zh) * | 2018-05-18 | 2021-07-02 | 百度在线网络技术(北京)有限公司 | 一种分布式存储方法、装置、计算机设备及存储介质 |
JP6942748B2 (ja) * | 2019-03-19 | 2021-09-29 | 株式会社日立製作所 | 分散ストレージシステム、データ管理方法、及びデータ管理プログラム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7069295B2 (en) * | 2001-02-14 | 2006-06-27 | The Escher Group, Ltd. | Peer-to-peer enterprise storage |
US7490205B2 (en) * | 2005-03-14 | 2009-02-10 | International Business Machines Corporation | Method for providing a triad copy of storage data |
US7653668B1 (en) * | 2005-11-23 | 2010-01-26 | Symantec Operating Corporation | Fault tolerant multi-stage data replication with relaxed coherency guarantees |
US7661027B2 (en) * | 2006-10-10 | 2010-02-09 | Bea Systems, Inc. | SIP server architecture fault tolerance and failover |
WO2009032710A2 (en) * | 2007-08-29 | 2009-03-12 | Nirvanix, Inc. | Filing system and method for data files stored in a distributed communications network |
US8423737B2 (en) * | 2009-12-17 | 2013-04-16 | International Business Machines Corporation | Systems and methods for virtualizing storage systems and managing data independently |
-
2011
- 2011-11-02 KR KR1020110113529A patent/KR20130048594A/ko not_active Application Discontinuation
-
2012
- 2012-03-15 US US13/421,228 patent/US20130111153A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101540847B1 (ko) * | 2013-07-09 | 2015-07-30 | 광운대학교 산학협력단 | 스토리지의 부하에 기초한 웹 브라우저 정보 캐싱 장치 및 방법 |
KR20180050180A (ko) * | 2016-11-04 | 2018-05-14 | 에스케이하이닉스 주식회사 | 데이터 분산 처리를 수행하는 데이터 관리 시스템 및 데이터 관리 방법 |
KR20190047484A (ko) | 2017-10-27 | 2019-05-08 | 삼성에스디에스 주식회사 | 복수의 스토리지 장치를 이용한 파일 관리 서비스의 제공 방법 및 그 장치 |
WO2022139921A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Management of distributed shared memory |
Also Published As
Publication number | Publication date |
---|---|
US20130111153A1 (en) | 2013-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20130048594A (ko) | 지연 요소를 고려한 분산 스토리지 시스템, 분산 스토리지 관리 장치 및 방법 | |
KR102352257B1 (ko) | 분산 스토리지 시스템 노드 및 그것의 동작 방법 | |
JP4220724B2 (ja) | ストレージ装置 | |
US9613040B2 (en) | File system snapshot data management in a multi-tier storage environment | |
US9354907B1 (en) | Optimized restore of virtual machine and virtual disk data | |
CN106104502B (zh) | 用于存储系统事务的系统、方法和介质 | |
EP2583183A1 (en) | Data deduplication | |
CN109669822B (zh) | 电子装置、备用存储池的创建方法和计算机可读存储介质 | |
US10162564B2 (en) | Selecting a virtual tape server in a storage system to provide data copy while minimizing system job load | |
US9235588B1 (en) | Systems and methods for protecting deduplicated data | |
JP2005338985A (ja) | 記憶領域管理方法及びシステム | |
KR101907067B1 (ko) | 요청 패턴을 고려한 분산 스토리지 시스템, 분산 스토리지 관리 장치 및 방법 | |
US20180018237A1 (en) | Information processing apparatus and information processing system | |
US9164885B2 (en) | Storage control device, storage control method, and recording medium | |
CN105574008B (zh) | 应用于分布式文件系统的任务调度方法和设备 | |
WO2016123888A1 (zh) | 内存空间调度方法及多系统终端 | |
JP6287308B2 (ja) | レプリケーション制御システム、レプリケーション制御方法、及び、レプリケーション制御プログラム | |
CN114201109B (zh) | 计算系统、介质以及用于计算系统的方法 | |
JP6135430B2 (ja) | 情報処理装置、方法、プログラム、及びシステム | |
US8037242B2 (en) | Contents delivery system using cache and data replication | |
KR102453870B1 (ko) | 파일 영구삭제 방법 및 컴퓨터 프로그램 | |
US20150277780A1 (en) | Server apparatus, recording medium storing information storage program, and information storing method | |
JP2018180758A (ja) | 計算機装置、依頼先選択方法及び依頼先選択プログラム | |
JP5696891B2 (ja) | Io構成によるジョブスケジューリング方法 | |
JP6264454B2 (ja) | 複製管理装置、複製管理方法、及び、複製管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |