KR101530463B1 - 데이터 기억 시스템에 대한 엔드포인트 캐싱 - Google Patents

데이터 기억 시스템에 대한 엔드포인트 캐싱 Download PDF

Info

Publication number
KR101530463B1
KR101530463B1 KR1020137015421A KR20137015421A KR101530463B1 KR 101530463 B1 KR101530463 B1 KR 101530463B1 KR 1020137015421 A KR1020137015421 A KR 1020137015421A KR 20137015421 A KR20137015421 A KR 20137015421A KR 101530463 B1 KR101530463 B1 KR 101530463B1
Authority
KR
South Korea
Prior art keywords
data
storage
endpoint
accelerator
computer system
Prior art date
Application number
KR1020137015421A
Other languages
English (en)
Other versions
KR20130086373A (ko
Inventor
라얀 자차리아센
스티븐 람브
라린-조 페르난데스
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20130086373A publication Critical patent/KR20130086373A/ko
Application granted granted Critical
Publication of KR101530463B1 publication Critical patent/KR101530463B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

데이터 기억 시스템은, 중앙 기억 시스템, 네트워크 기반 구조에 의해 중앙 기억 시스템과 네트워크 통신하는 적어도 하나의 엔드포인트 컴퓨터 시스템, 및 컴퓨터 시스템의 CPU와 통신하는 기억 장치 가속기를 포함하고, 기억 장치 가속기는 적어도 하나의 엔드포인트 컴퓨터에 액세스할 수 있는 중앙 기억 시스템 상의 데이터의 엔드포인트 캐싱을 제공한다. 양호하게, CPU로부터 기억 장치 가속기로의 데이터의 처리량이 CPU로부터 중앙 기억 시스템으로의 커넥션을 통한 데이터의 처리량보다 더 많은 로케이션에 기억 장치 가속기가 위치한다.

Description

데이터 기억 시스템에 대한 엔드포인트 캐싱{ENDPOINT CACHING FOR DATA STORAGE SYSTEMS}
본 출원은, 그 전체 내용이 본 명세서에 참조로서 인용된, 2010년 11월 16일에 출원된, 미국 임시 출원 번호 제61/414,191호의 우선권을 주장한다.
본 발명은 일반적으로 데이터 기억 시스템들 및 방법의 분야들에 관한 것으로, 특히, 데이터 입력 및 출력 동작들의 효율 및 속도를 향상시키기 위해 데이터 기억 시스템들에 대한 캐싱을 제공하는 시스템 및 방법에 관한 것이다.
데이터 기억 장치 기술의 상당한 문제점은 데이터 기억 장치 성능이 효율적인 시스템들을 달성하기 위해 컴퓨터들의 처리 성능을 어떻게 따라가는 지에 있다. 컴퓨터 시스템들의 데이터 기억 장치의 분야에서의 효율적인 시스템들은 일반적으로 모든 주요 컴포넌트들이 정상 작업량 하에서 비례하는 방식으로 사용되는 시스템들을 말한다. 즉, 컴퓨터 시스템 및 연관된 데이터 기억 디바이스는 각각 피크 기능들에서 최적으로 동작한다. 본 발명 및 본 명세서에 기술된 연관된 배경은, 컴퓨터들에 내장된 단기 기억 장치(대개 랜덤 액세스 메모리라고 함)가 아닌, 각종 종류들의 디스크들 등의 영구적인 기억 장치와 통상 관련된다. 현재, 컴퓨터 시스템들 및 연관된 중앙 처리 유닛들이 데이터 기억 시스템들의 속도 및 효율 역량들을 훨씬 능가하기에, 한계 요인은 기억 성능이다.
어떻게 데이터 기억 성능을 향상시킬 지에 대한 종래 기술의 해결책들은 기억 장치, 및 컴퓨터들과 기억 장치 간의 커넥션들을 더 빠르게 하는데 있었다. 이러한 일례들은, RAID 스트라이핑 등의 기억 장치를 종합하고, 기억 장치 제어기들의 미가공 성능(raw performance)을 향상시키며, 기억 장치 기기에서, 또는 기억 장치 앞의 네트워크 서버에서, 대부분의 RAID 제어기들에 의해 행해지는 바와 같이 기억 장치 제어기 내의 캐시들을 추가하고, 기억 장치 활동 로드를 다수의 기억 노드들에 분배하는 각종 방법들을 포함한다.
또한, 강한 추세는, 기억 장치를 조직 및 종합하기 위한 SAN(Storage Area Network) 및 NAS(Network Attached Storage) 시스템들의 출현으로 가장 잘 예시되는 바와 같이, 관리를 용이하게 하기 위한 중앙 집중 기억 장치 쪽으로 향하고 있다. 이 해결책들(더 신속하고 더 중앙 집중된 기억 장치)과 관련된 기반 구조 모델은 네트워크에 의해 기억 장치 시스템에 연결된 컴퓨터들에서 실행중인 다수의 애플리케이션들의 흐름 그래프로서 기술될 수 있다.
이러한 모델에서, 기억 장치 시스템 성능이 컴퓨터들의 잠정적인 성능과 일치하도록 하기 위해, 기억 장치 시스템 성능과 컴퓨터 성능 간의 균형을 가능케 하기 위해, 컴퓨터들과 기억 장치 시스템 간의 개별 네트워크 성능(더 높은 대역폭 및 더 낮은 대기 시간)이 증가돼야만 한다.
문제점은 심지어 아주 작은 개수의 컴퓨터들에 의해 제공되는 잠정적인 로드가 경제적인 네트워크 또는 중앙 기억 장치 시스템이 서비스하기에 실제적인 것보다 훨씬 더 높다는 점이다. 버스인, 컴퓨터의 내부 네트워크는 외부 네트워크 컴퓨터들이 일반적으로 지원하는 것보다 10배 또는 100배 더 빠른 속도들 및 더 높은 기능들로 동작한다.
특정 종래 기술의 해결책들은 중앙 기억 장치에서의 네트워크 성능이 기억 장치 자체의 성능을 만족시키게 하기 위해 캐싱 또는 티어링(tiering) 기능들을 형성하는 것 등의, 기억 장치에 부착된 기억 장치 가속기들의 사용을 포함한다. 이러한 문제점에 대한 시도된 다른 해결책들이 수개의 블록 기반 구현들, 예를 들어, bcache, fastcache, dmcache를 가진; 및 FS-cache로 공지된, 변경된 파일시스템들을 위해 의도된 특정 구현을 가진, Linux 커널 설비들의 문맥에서 실험되어 왔다. 또한, 광역 네트워크 링크들을 통한 판독 전용 캐싱을 위해 설계된, BranchCache라고 하는 관련 기능을 가진 WindowsTM 설비가 있다.
따라서, 본 발명의 목적은 데이터 기억 시스템들의 효율을 향상시키기 위한 신규 시스템 및 방법을 제공하는 데 있다.
본 발명의 일 실시예에 따라, 중앙 기억 시스템, 네트워크 기반 구조에 의해 중앙 기억 시스템과 네트워크 통신하는 적어도 하나의 엔드포인트 컴퓨터 시스템, 및 컴퓨터 시스템의 CPU와 통신하는 기억 장치 가속기를 포함하는 데이터 기억 시스템이 제공되고; 기억 장치 가속기는 적어도 하나의 엔드포인트 컴퓨터에 액세스할 수 있는 중앙 기억 시스템 상의 데이터의 엔드포인트 캐싱을 제공한다.
본 실시예의 일 양상에 따라, 기억 장치 가속기는 컴퓨터 시스템의 버스에 부착된 물리적 기억 유닛을 제어하는 CPU에서 실행중인 적어도 하나의 소프트웨어 모듈을 포함한다.
본 실시예의 다른 양상에 따라, CPU로부터 기억 장치 가속기로의 데이터의 처리량이 CPU로부터 중앙 기억 시스템으로의 커넥션을 통한 데이터의 처리량보다 더 많은 로케이션에 기억 장치 가속기가 위치한다.
본 실시예의 다른 양상에 따라, 중앙 기억 시스템은 티어 1 내지 N(N >= 1)을 가진 티어드 데이터 구조를 포함하고, 기억 장치 가속기는 티어 0인 중앙 기억 장치에 대한 캐시를 포함한다.
본 실시예의 다른 양상에 따라, 물리적 기억 유닛은 고체 상태 메모리 디바이스를 포함한다.
본 실시예의 다른 양상에 따라, 기억 장치 가속기는 데이터 캐싱 구조를 포함한다.
본 실시예의 다른 양상에 따라, 기억 장치 가속기와 통신하는 필터 드라이버가 제공된다.
본 실시예의 다른 양상에 따라, 소프트웨어 모듈은 필터 드라이버에서 제공되고, 필터 드라이버는 판독 또는 기록되는 파일이 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하기 위한 명령어들을 포함한다.
본 실시예의 다른 양상에 따라, 판독 또는 기록되는 파일이 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하기 위한 명령어들은 파일 메타데이터 정보에 액세스하기 위한 명령어들을 포함한다.
본 실시예의 다른 양상에 따라, 필터 드라이버는 데이터 판독 동작이 컴퓨터 시스템에 의해 요청중인 지를 결정하고, 요청중이라면, 판독되는 데이터가 기억 장치 가속기에 존재하는 지를 결정하며, (a) 존재한다면, 기억 장치 가속기로부터 데이터 판독 동작을 이행하고; (b) 존재하지 않는다면, 중앙 기억 시스템으로부터 데이터를 요청하고 데이터의 복사본을 기억 장치 가속기에 제공하기 위한 명령어들을 더 포함한다.
본 실시예의 다른 양상에 따라, 필터 드라이버는 데이터 기록 동작이 컴퓨터 시스템에 의해 요청중인 지를 결정하고, 요청중이라면, 데이터를 기억 장치 가속기에 기록하기 위한 명령어들을 더 포함한다.
본 실시예의 다른 양상에 따라, 필터 드라이버는 데이터를 중앙 기억 시스템에 기록하기 위한 명령어들을 더 포함한다.
본 실시예의 다른 양상에 따라, 필터 드라이버는 중앙 기억 시스템에 기록될 데이터를 큐잉(queuing)하기 위한 명령어들을 더 포함한다.
본 실시예의 다른 양상에 따라, 필터 드라이버는 중앙 기억 시스템과 기억 장치 가속기 간의 데이터의 일관성(consistency)을 유지하기 위한 명령어들을 더 포함한다.
본 실시예의 다른 양상에 따라, 컴퓨터 시스템은 모바일 디바이스를 포함한다.
본 발명의 다른 실시예에 따라, 중앙 기억 시스템을 제공하는 단계, 네트워크 기반 구조에 의해 중앙 기억 시스템과 네트워크 통신하는 적어도 하나의 엔드포인트 컴퓨터 시스템을 제공하는 단계, 및 컴퓨터 시스템의 CPU와 통신하는 기억 장치 가속기를 제공하는 단계를 포함하는 데이터 기억 방법이 제공되고, 기억 장치 가속기는 적어도 하나의 엔드포인트 컴퓨터에 액세스할 수 있는 중앙 기억 시스템 상의 데이터의 엔드포인트 캐싱을 제공한다.
본 실시예의 일 양상에 따라, 기억 장치 가속기는 컴퓨터 시스템의 버스에 부착된 물리적 기억 유닛을 제어하는 CPU에서 실행하는 적어도 하나의 소프트웨어 모듈을 포함한다.
본 실시예의 다른 양상에 따라, CPU로부터 기억 장치 가속기로의 데이터의 처리량이 CPU로부터 중앙 기억 시스템으로의 커넥션을 통한 데이터의 처리량보다 더 많은 로케이션에 기억 장치 가속기가 위치한다.
본 실시예의 다른 양상에 따라, 중앙 기억 시스템은 티어 1 내지 N(N >= 1)을 가진 티어드 데이터 구조를 포함하고, 기억 장치 가속기는 티어 0인 중앙 기억 장치에 대한 캐시를 포함한다.
본 실시예의 다른 양상에 따라, 물리적 기억 유닛은 고체 상태 메모리 디바이스를 포함한다.
본 실시예의 다른 양상에 따라, 기억 장치 가속기는 데이터 캐싱 구조를 포함한다.
본 실시예의 다른 양상에 따라, 엔드포인트 컴퓨터 시스템은 데이터 판독 또는 데이터 기록 동작들을 실행하도록 구성되고, 본 방법은 판독 또는 기록되는 파일이 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하는 단계를 더 포함한다.
본 실시예의 다른 양상에 따라, 본 방법은 파일 메타데이터 정보에 액세스함으로써 판독 또는 기록되는 파일이 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하는 단계를 더 포함한다.
본 실시예의 다른 양상에 따라, 본 방법은 데이터 판독 동작이 컴퓨터 시스템에 의해 요청중인 지를 결정하고, 요청중이라면, 판독되는 데이터가 기억 장치 가속기에 존재하는 지를 결정하며, (a) 존재한다면, 기억 장치 가속기로부터 데이터 판독 동작을 이행하고; (b) 존재하지 않는다면, 중앙 기억 시스템으로부터 데이터를 요청하고 데이터의 복사본을 기억 장치 가속기에 제공하는 단계를 더 포함한다.
본 실시예의 다른 양상에 따라, 본 방법은 데이터 기록 동작이 컴퓨터 시스템에 의해 요청중인 지를 결정하고, 요청중이라면, 데이터를 기억 장치 가속기에 기록하는 단계를 더 포함한다.
본 실시예의 다른 양상에 따라, 본 방법은 데이터를 중앙 기억 시스템에 기록하는 단계를 더 포함한다.
본 실시예의 다른 양상에 따라, 본 방법은 중앙 기억 시스템에 기록될 데이터를 큐잉하는 단계를 더 포함한다.
본 실시예의 다른 양상에 따라, 본 방법은 중앙 기억 시스템과 기억 장치 가속기 간의 데이터의 일관성을 유지하는 단계를 더 포함한다.
본 실시예의 다른 양상에 따라, 기록 단계는 버퍼링되지 않은 데이터를 기록하는 단계를 포함한다.
본 실시예의 다른 양상에 따라, 데이터 판독 동작이 버퍼링된다.
본 발명의 다른 실시예에 따라, 데이터 기억 방법은 운영 체제 버퍼에 데이터를 능동적으로 제공하거나 또는 운영 체제 버퍼로부터 데이터를 제거함으로써 판독 및/또는 기록 I/O 동작들을 위해 애플리케이션에 의해 요청되는 데이터의 효과적인 운영 체제 버퍼링 방침을 투명하게 변경하는 단계; 상기 I/O 동작들을 위해 요구되는 운영 체제 버퍼 캐시를 인에이블 또는 디스에이블하는 단계를 포함하고; 상기 운영 체제 버퍼 캐시에 데이터를 제공하는 단계는 애플리케이션이 운영 체제에 의해 캐싱된 상기 데이터를 사용하도록 구성하는 단계를 포함한다.
본 발명의 다른 실시예에 따라, 애플리케이션에 의해 판독 및/또는 기록 동작들을 위해 요청되는 데이터를 캐시 로케이션에 캐싱하는 단계; 판독 및 기록 I/O 동작들을 위해 애플리케이션에 의해 요청되는 데이터의 효과적인 버퍼링 방침을 투명하게 변경하는 단계를 포함하는 데이터 기억 방법이 제공되고; 효과적인 버퍼링 방침을 변경하는 단계는 캐시 로케이션에서 애플리케이션에 의해 요청되는 데이터의 적어도 일부분을 버퍼링하는 단계를 포함한다.
본 발명의 일 양상에 따라, 상술된 캐시 로케이션은 본 명세서에 기술된 바와 같이 엔드포인트 캐시이다.
실시예들은, 첨부 도면들을 참조해서, 오직 일례로서만, 이제 기술될 것이다.
도 1은 네트워크를 통해 중앙 기억 장치에 액세스하는 컴퓨터 시스템의 일반적인 종래 기술의 구성을 도시한다.
도 2는 도 1의 시스템의 데이터 전송율들을 개략적으로 도시한다.
도 3은 도 1의 시스템에 적용된 종래 기술의 기억 장치 가속기의 구성을 도시한다.
도 4는 본 발명에 따른 시스템의 일 실시예를 개략적으로 도시한다.
도 5는 도 3의 시스템의 네트워크에 의해 실행되는 로드를 도시한다.
도 6은 도 4의 시스템의 네트워크에 의해 실행되는 로드를 도시한다.
도 7은 본 발명에 따른 일반적인 엔드포인트 컴퓨터 시스템을 개략적으로 도시한다.
도 8은 본 발명에 따른 한 방법의 일 실시예를 도시한 흐름도이다.
본 발명이 향상을 제공하고 있는 일반적인 컴퓨팅 기반 구조는, 도 1에 도시된 바와 같이, 중앙, 또는 공통 기억 장치(103)에 네트워크 링크(102)에 의해 접속된 컴퓨터(101) 또는 컴퓨터들로 구성된다. 컴퓨터(101)는 양호하게 도 7에 도시된 일반적인 컴퓨터 시스템(20)이다. 컴퓨터 시스템(20)은 중앙 처리 유닛("CPU")(24), 랜덤 액세스 메모리("RAM")(28), 입력/출력("I/O") 인터페이스(32), 네트워크 인터페이스(36), 비휘발성 기억 장치(40), 및 CPU(24)를 다른 컴포넌트들과 통신할 수 있게 하는 로컬 버스(44)를 포함하는, 다수의 물리적 및 논리적 컴포넌트들을 가진다. CPU(24)는 운영 체제 및 다수의 소프트웨어 시스템들을 실행한다. RAM(28)은 비교적 민감한 휘발성 기억 장치를 CPU(24)에 제공한다. I/O 인터페이스(32)는, 키보드, 마우스 등의 하나의 또는 그 이상의 디바이스들로부터 입력이 수신될 수 있게 하고, 디스플레이 및/또는 스피커들 등의 출력 디바이스들에 정보를 출력한다. 네트워크 인터페이스(36)는, 도 1의 기억 장치(103)를 포함하는, 다른 시스템들과의 통신을 허용한다. 비휘발성 기억 장치(40)는 운영 체제 및 프로그램들을 저장한다. 컴퓨터 시스템(20)의 동작 중에, 운영 체제, 프로그램들 및 데이터는 비휘발성 기억 장치(40)로부터 검색되어, 실행을 용이하게 하기 위해 RAM(28)에 배치될 수 있다.
이제 도 2를 참조하면, 중앙 기억 장치(210)와 네트워크(209) 통신하는 컴퓨터 시스템(201)의 개략도가 도시되어 있다. 컴퓨터 시스템은 로컬 컴퓨터 기억 장치 디스크들과 링크(208)를 통해 통신하는 디스크 인터페이스와 통신 링크(205)를 통해 통신 접촉하는 CPU(204)와 통신 링크(203)를 통해 통신 접촉하는 네트워크 인터페이스(202)를 포함한다. 통신 링크들(203, 205 및 207)은 컴퓨터 시스템(203)의 각각의 소자들 간의 통신 수단으로서 일반적으로 본 기술 분야에 공지되어 있다. 도시된 바와 같이, 각각의 소자들 간의 데이터 전송률들은, 예를 들어, 네트워크 인터페이스(202)와 CPU(204) 간에 초당 32 내지 128 기가비트들 사이에서, CPU(204)와 디스크 인터페이스(206) 간에 초당 32 내지 128 기가비트들 사이에서, 및 디스크 인터페이스(206)와 디스크(들)(208) 간에 초당 3 내지 6 기가비트들 사이에서, 변할 수 있다. 자체가 컴퓨터 시스템일 수 있는, 기억 장치(210)는, 이에 상응하여, 각각, 통신 링크들(212, 214 및 216)을 통해 연결된, 동작 네트워크 인터페이스(211), CPU(213), 디스크 인터페이스(215) 및 디스크들(217)을 포함한다. 네트워크(209)는 컴퓨터 시스템(201)과 중앙 기억 장치(210) 사이에 존재한다. 네트워크 통신들은 현재 물리적 및 소프트웨어 제약들로 인해 초당 0.1 내지 10 기가비트들 사이로 제한된다. 명백하게 되는 바와 같이, 컴퓨터 시스템(201) 및 기억 시스템(210) 내에는, CPU에 더 가까운 매우 높은 성능으로부터 시작해서 CPU로부터 더 멀리 있는 비교적 낮은 성능을 가지는 성능 역량들의 계층이 존재한다. 그러나, 가장 느린 커넥션은, 일반적으로, 컴퓨터와 기억 시스템 간의 네트워크 커넥션이다.
멀티-컴퓨터 네트워크 내에는, 또한, 상이한 컴퓨터들과 중앙 기억 장치 간의 다수의 데이터 흐름들을 지원하는 공유 기반 구조로 인한 성능의 계층이 있다. 이러한 문맥에서, 애플리케이션을 위해, 중앙 기억 장치로부터 데이터의 최종적인 수신지인 각각의 컴퓨터 시스템으로서 엔드포인트가 정의된다. 본 발명은, 중앙 기억 장치로부터 엔드포인트 컴퓨터 시스템으로 데이터를 전송할 때 네트워크 기반 구조의 내재하는 한계들이 있는 경우 이러한 엔드포인트들로의 데이터의 전달을 향상시키는 것에 관한 것이다.
도 3은 네트워크(302)와 기억 장치(304) 사이에 가속기(303)를 배치하고, 컴퓨터 시스템(301)으로의 전송을 위해 네트워크(302)에 데이터가 들어가기 전에, 기억 장치(304)의 성능과 일치하도록 기억 장치(304)의 네트워크 성능을 구성함으로써 데이터 전송의 효율을 향상시키고자 시도한 한 종래 기술의 해결책을 도시한다. 가속기(303)가 캐싱 또는 티어링 모듈 타입일 때, 티어 0의 기억 계층이라고 할 수 있으며, 여기서, 기억 시스템 자체는 이미 존재하는 기억 계층들 티어 1, 티어 2,... 티어 n을 포함한다.
도 4에 도시된 바와 같이, 본 발명에 따라, 가속기(402)의 티어 0의 기억 계층은, 컴퓨터 시스템(401)에 대한 네트워크의 먼 단부로부터, 컴퓨터 시스템(401)에 로컬이도록 이동되며, 여기서, 컴퓨터 시스템(401)의 CPU와 가속기(402)의 티어 0의 기억 계층 간의 성능은 도 3의 종래 기술의 해결책보다 훨씬 더 높을 수 있다. 따라서, 데이터가 실제로 지속되는 티어 1(또는 티어 N)과 컴퓨터 간의 중간 대신 기억 장치 흐름의 엔드포인트에 티어 0이 있기 때문에, 용어 엔드포인트 캐싱(endpoint caching)이 사용된다. 게다가, 본 명세서에서, 캐싱은 다음 티어로의 데이터의 이동에 대한 결정이 "if necessary(필요한 경우)" 등의 다른 티어링 방침들이 아니라 "as soon as possible(가능한 한 빨리)"인 티어링의 특별 부집합이고, 그렇지 않으면 해당 티어의 데이터가 (또는 티어링의 타입에 따라 추가로) 어떤 티어 M(M>N)에 존재한다는 점에서 특정 티어 N이 캐시라고 생각될 수 있기 때문에, 용어 캐싱 및 티어링은 일반적으로 상호 교환 가능하게 사용된다.
이하의 설명의 견지에서 명백하게 되는 바와 같이, (a) 본 발명은 파일 액세스에 기초하고, 액세스 문맥이 유용하기 때문에 엔드포인트 캐시가 데이터를 선택적으로 캐싱할 수 있게 하고 따라서 덜 분별력이 있는 다른 해결책들보다 더 효율적이게 할 수 있게 하기 위해 미세한 매칭 방침을 지원할 수 있다는 점; (b) 본 발명은 파일 액세스에 기초하여서, (블록 기반 시스템들이 그러하듯이) 모두 동일하거나, 또는 파일 콘텐츠에 따라 변하거나(문맥 민감), 또는 애플리케이션 요청들에 따라 변하거나, 또는 문맥에 따라 하나 보다 더 많은 방법으로 작업하는 데이터 청크에서 동작할지를 선택할 수 있다는 점; (c) 본 발명은 존재하는 파일시스템들에 대한 최종 사용자들에게 완전히 투명하다는 점; 및 (d) 본 발명은 불가지론적이며, 동작하기 위해 파일시스템 구현들에 대한 변경을 요구하지 않는다는 점에서, 본 명세서에 기술된 본 발명은 종래 기술의 해결책들과 상이하다.
구체적으로 말해서, (a) 본 발명의 엔드포인트 캐시의 데이터는 CPU와 무관하게 유지되고, 캐시 유지 프로세스가 비우고(새롭게 기록된 데이터를 티어 1로 플러싱함) 제거할 때까지 로컬 티어 0 레벨에서, 버퍼 캐시의 휘발성 속성과 대조적이기 때문에; 또한, (b) 엔드포인트 캐시는 현재 버퍼 캐시들이 사용하는 통계적 기반 예측 방식(예를 들어, 판독-먼저(read-ahead), 또는 브랜치 예측)에 반해 예지력(foresight)(내부 또는 외부 정보에 기초한 선제 캐싱 또는 프리페치)을 사용할 수 있기 때문에, 본 발명에 따른 엔드포인트 캐싱은 대부분의 컴퓨터 시스템들이 RAM 내에서 유지하는 공지된 "버퍼 캐시"와 상이하다.
(a) (예를 들어, Sun MicrosystemsTM CacheFS의 경우가 아니기에) 본 발명이 원격 기억 시스템에 불가지론적이기 때문에; (b) (예를 들어, Coda 및 Intermezzo로 공지된 해결책들의 경우가 아니기에) 본 발명이 원격 기억 시스템에 의해 사용되는 프로토콜에 불가지론적이기 때문에; 또한, (c) 본 발명이 컴퓨터가 대체로 기억 장치를 어떻게 사용하는 지에 투명하기 때문에(TsumuFS 또는 xCachefs 등의 다수의 시스템들이 원격 기억 시스템의 타입과 무관하지만, 특별화된 방식으로 원격 기억 장치를 장착할 것을 요구하기 때문에 투명하지는 않음), 본 발명에 따른 엔드포인트 캐싱은 종래 기술의 캐싱 네트워크 파일시스템들과 상이하다.
본 발명을 구현하는 각종 무제한 일례들이 이제 기술될 것이다. 이하의 설명들이 네트워크와 통신하는 단일 컴퓨터의 단일 엔드포인트 캐시와 관련해서 제공되지만, 본 발명은 네트워크에 액세스하는 임의의 수의 컴퓨터들에도 동일하게 적용될 수 있다. 게다가, 하나 보다 많은 컴퓨터 시스템이 단일 엔드포인트를 형성할 수 있어서, 하나의 엔드포인트 캐시가 전체 시스템의 엔드포인트로서 구성된 하나의 또는 그 이상의 컴퓨터들을 위해 제공될 수 있음이 예상된다.
엔드포인트 캐싱을 구현하기 위해, 한 엔드포인트에서의 컴퓨터 시스템은 원격 기억 장치가 어떠한 변경도 모르는 채로 로컬 티어 0에 투명하게 액세스하도록 프로그래밍된다. 티어 0이 캐시이기에, 시간-상관되고 프리페치된 I/O가 로컬 티어 0 캐시로부터 우선적으로 서비스받기 때문에, 천상, (티어 1을 향한) 컴퓨터와 원격 기억 장치 간의 네트워크의 성능 요건들이 감소되며, 따라서, 컴퓨터가 원격 티어 0 또는 티어 1에 직접 액세스한 경우보다 티어 1의 기억 계층을 갱신하기 위해 티어 0 캐시에 대한 네트워크 트래픽(및 따라서, 각각의 엔드포인트에 대해 개별적으로, 또한, 네트워크 기반 구조에 대해 종합해서, 네트워크 성능)이 덜 필요하다. 즉, 엔드포인트 가속기에 의해 구현된 티어 0 캐시는 네트워크로부터 임의의 로드량을 덜어주고 엔드포인트 컴퓨터 시스템의 CPU와 통신할 수 있다. 이러한 구별은 도 5 및 도 6에 도시되어 있다. 도 5는 그 전체가 네트워크(502)에 의해 전달되고 또한 로드 L로서 중앙 기억 장치(503)에서 서비스받는 제공된 로드 L을 컴퓨터 시스템(501)이 갖는 종래 기술의 시스템을 도시한다. 도 6은 컴퓨터 시스템(601)이 제공된 로드 L을 가진 본 발명의 일 실시예를 도시한다. 가속기(602)에서 구현된 티어 0 캐시는 로드의 일부분 HR을 취하며, 여기서, HR은 0 보다 크고 1 보다 작다. 따라서, 네트워크(603)는, 중앙 기억 장치(604)에 의해 서비스받는 로드인, 로드 L(1-HR)을 가진다. 유사하게, 임의의 티어 0의 기억 계층의 부재시 컴퓨터에 의해 생성된, 다이렉트 피크 로드 요건 대신, 캐시를 통해 제시된 평균 로드 요건들을 이제 서비스해야만 하기 때문에, 중앙 기억 장치(604)의 티어 1의 기억 계층의 성능 요건들은 감소된다.
따라서, 본 발명은 컴퓨팅 기반 구조의 경제적인 효율을 야기하는 기술적인 해결책을 제공한다.
WindowsTM 운영 체제에서 본 발명을 구현할 때, 도 8을 참조하면, 본 발명의 일 구현은 필터 드라이버를 생성하고 필터 드라이버를 필터 스택에 배치하는 단계를 포함하고, 필터 스택은 모든 파일시스템 입력/출력 동작들의 통신 경로 내에 있다. 필터 드라이버는 파일이 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하는 단계(805)를 포함하는 본 발명의 본 구현에 따른 방법을 실행하도록 프로그래밍 또는 적응된다. 이는 엔드포인트 캐싱을 위해 지정됨을 나타내는 헤더 또는 다른 기술자 정보를 파일이 포함하는 지를 결정하기 위해 구성된 문맥 패터들 및 방침들과 파일의 문맥을 매칭함으로써 실행될 수 있다. 이는 바람직하게 각각의 파일이 오픈될 때 실행된다. 단계(810)에서, 파일이 엔드포인트 캐싱을 위해 표시되어 있다고 파일 기술자가 나타내고, 필터 드라이버가 판독 동작을 보면, 가속기의 티어 0 캐시에 이미 존재하는지를 알기 위해 요청된 데이터가 검사되고, 이미 존재한다면, 티어 0 캐시로부터 판독이 이행된다. 요청된 데이터가 티어 0 캐시에서 발견되지 않으면, 데이터는 판독을 이행하기 위해 소스 로케이션(즉, 중앙 기억 장치)으로부터 검색된다. 티어 0 캐시는 또한 데이터의 복사본을 수신 및 저장한다. 대안으로, 필터 드라이버가 기록 동작을 보면, 단계(815)에서, 티어 0 캐시는 기록될 새로운 데이터로 갱신되고, 이 데이터는 또한 중앙 기억 장치의 소스 로케이션에 즉시 기록된다. 대안으로, 지연된 기록 동작이 또한 가능하며, 이 경우, 티어 0 캐시는 새로운 데이터로 즉시 기록되며, 데이터를 중앙 기억 장치에 기록하기 위한 액션은 큐잉된다. 이는 네트워크를 통해 전송되는 우선 순위가 더 높은 우선 순위 데이터에게 제공될 수 있도록, 네트워크에서의 로드가 감시 및 제어되게 한다.
단계(820)에서, 데이터의 일관성을 유지하기 위해, 요구되는 대로, 다른 동작들이 인터셉트된다. 예를 들어, 소스 파일시스템의 변경은 티어 0 캐시의 대응 변경들에 매핑돼야만 하며, 또는 캐시가 파일명으로 키잉되면, 적합한 재명명 동작들이 본 단계에서 처리된다. 다른 일례들은 본 단계에서 인터셉트 및 처리되는 파일 삭제 동작들, 파일 속성 변경들 등을 포함한다.
단계(830)에서, 티어 0 캐시가 채워질 때, 필요하면, 티어 0 캐시에서 공간을 해방하기 위해 캐시 유지 기능 또는 모듈이 제공된다. 공간을 해방하는 프로세스 중에 티어 0 캐시로부터 제거된 데이터는 캐시 유지 기능으로 프로그래밍된 방침들에 기초할 수 있다. 예를 들어, 가장 오래된 데이터, 적어도 액세스된 데이터, 최저 우선 순위 데이터(예를 들어, 정의된 사용자 파일들 대 시스템 파일들), 및 임의의 다른 데이터 방침들 중 임의의 방침이 본 발명의 특정 구현들에 따라 결정될 수 있다.
단계(840)에서, 소스 파일들에 대한 적합한 액세스를 가능케 하기 위해 운영 체제 커널의 내부이든 외부이든, 소스 파일 액세스 메커니즘이 협동 프로세스를 사용해서 제공된다. 원격 소스 파일들의 경우, 이 기능은 커널의 외부에서 제공된다. 소스 파일들은 상술된 바와 같이 티어 0 캐시 또는 중앙 기억 장치에 존재할 수 있지만, 이러한 메커니즘을 통해, CPU는 항상 티어 0 캐시를 통해 엔드포인트 캐싱을 위해 표시된 파일들의 통신 프로세스들을 라우팅할 것이다.
상술된 본 발명의 구현은 공지된 캐싱 기술 및 프로세스들을 사용하지만, 신규의 쉽게 도출가능하지 않은 방식으로 적용한다. 예를 들어, CPU가 가속기 및 티어 0 기억 장치와 통신하기 위한 방법들 및 프로세스들은 상세히 기술되지 않는다. 또한, 본 발명을 구현하는 이러한 프로세스들 및 캐싱 기술들이 공지된 것일 수 있지만, 네트워크에서 상당히 감소된 로드의 결과들, 엔드포인트 CPU 및 네트워크에 대한 티어 0 캐시의 투명성, 및 중앙 기억 장치 및/또는 엔드포인트 컴퓨터 시스템 자체에 대한 총 불가지론은 새로운 것이다. 본 발명에 따른 소자들의 구성은 더 효율적인 전체 컴퓨터/네트워크/기억 시스템을 생성한다.
단계들(805 및 810)의 구성된 문맥 패턴들은 가장 기본적이며 티어 0 캐시에서 모든 데이터를 캐싱할 수 있으며, 또는 복잡하고 특정적일 수 있어서, 예를 들어, 파일명 패터들, 액티브 사용자, 액티브 애플리케이션 또는 다른 관련 방침들에 의해 식별된, 오직 특정한 타입들의 파일들이 티어 0 캐시에 캐싱된다. 본 발명이 액티브일 때, 이러한 문맥 패턴들이 데이터의 흐름을 제어하는데 사용되어서, 티어 0 캐시의 미세한 제어 및 더 효율적인 사용을 가능케 한다. 더욱이, 캐싱이 일반적으로 본 기술 분야에 공지되어 있지만, 도 2에서 도시된 바와 같이, 기억 장치 가속기들의 사용에서와 같이, 본 명세서에 기술된 티어 0 캐시의 기능을 실행하는 가속기의 사용은 신규하고, 쉽게 도출가능하지 않으며, 본 기술 분야에서는 이전에 공지되지 않은 본 명세서에서 분명히 표현된 놀라운 결과들을 야기한다고 출원인은 믿는다.
특히 엔드포인트 캐싱이 (엔드포인트에) 로컬인 고속 기억 장치와 통신할 때, 본 발명, 또는 각종 단계들을 구현하는 각종 다른 방법들이 예상된다. 예를 들면, Zachariassen 외 다수에 의해 2011년 8월 24일에 출원된 계류중인 PCT 국제 출원 번호 PCT/CA2011/050514에 기술된 바와 같은 파일시스템 확장이며, 그 내용은 본 명세서에 참조용으로 인용된다. 이러한 파일시스템 확장 메커니즘은, 로컬 기억 장치에서 사용된 특정 파일시스템과 무관하게, 티어 0 캐시의 기억 매체에 데이터를 배치할 수 있게 하기 위해 로컬 기억 장치에서 파일시스템을 확장할 수 있다. 따라서, 본 발명의 가속기의 티어 0 캐시는 동작하는 컴퓨터 시스템에 대해 로컬 파일시스템의 일부로 나타날 수 있으며, 티어 0 캐시와 로컬 기억 장치 간의 통신들은 완전히 투명할 것이다.
또한, 기존 파일시스템이 티어 0 캐시의 기능을 본질적으로 제공하기 위해 변경될 수 있다고 예상된다. 이는 필터 드라이버와 관련해서 상술된 바와 유사한 방식으로 달성될 수 있지만, 필터 드라이버 없이 파일시스템 기능을 확장함으로써 구현된다. 본 발명을 구현하기 위해 파일시스템 기능이 확장되고, 티어 0 캐시가 전형적인 로컬 컴퓨터 캐시와 구별해서 상이하게 동작하며, 캐싱되는 데이터는 네트워크 및 중앙 기억 유닛의 먼 측에서의 판독/기록 동작을 위해 의도된 것임을 주지해야만 한다. 이 동작은 컴퓨터 시스템의 RAM에 의한 더 빠른 액세스를 위해 의도된 데이터를 캐싱하도록 통상 작용하는 로컬 컴퓨터 캐시들과 상이하다. 일 변형에서, 기존 파일시스템의 상부에 티어 0 캐시 기능을 계층화하는 목적에 유효한 운영 체제 설비들을 사용하는 스택 가능 파일시스템이 제공될 수 있다. 기존 파일시스템의 상부에 비협동으로 스택된 독립형 파일시스템이 또한 사용될 수 있다.
대기 시간 최소화가 중요한 환경들에서, 운영 체제 커널의 요구된 사용을 최소화하는 방식으로 본 발명이 구현될 수 있다고 예상된다. 이는 애플리케이션이 실행중인 하드웨어(또는 가상 하드웨어)에서 구현된 일부분 및 각각의 애플리케이션과 연관된 방식으로 기억 장치 가속기 기능들의 일부분을 제공함으로써 실행될 수 있다. 이를 달성하기 위해, 특정 애플리케이션에 의해 실행되는 I/O 동작들은 커널에 들어가기 전에 인터셉트되어야만 하고, 파일 또는 I/O가 엔드포인트 캐싱을 위해 표시될 때, 커널을 통해 직접 또는 커널 주위에서, - 예를 들어, 다이렉트 블록 액세스(커널을 통해 직접), 또는 메모리 매핑 액세스(커널 주위에서), - 전달하는 소프트웨어 모듈로 I/O 동작을 재지향시킨다. 이러한 액세스 방법들은, 본 명세서에 기술된 바와 같이, 각각의 애플리케이션과 연관된 일부분과 협동해서, 본 발명의 풀 티어 0 및 기억 장치 가속기 기능을 제공하는 (프로그램에 따른 API에 반해) 프로토콜 API를 제공할 것을 기저의 기억 장치 가속기 디바이스에 요구한다. 이는 사용자 레벨이 투명한 방식으로 제공될 수 있는 I/O 동작들을 인터셉트하는데 사용되는 방법으로서 여전히 애플리케이션에 투명할 수 있다. 이러한 방법은 본 발명에 의해 요구된 인터셉션, 방침, 및 협동 기능을 구현하는 버전에 대해 모든 출원인에 의해 사용되는 동적으로 로딩된 시스템 호출 라이브러리를 (추가된 커널 보조를 통해) 리다이렉트하는 단계를 수반한다. 메모리 매핑 인터페이스를 사용하는 커널을 회피한다고 예상되는 일 구현은, 문맥 스위칭에 수반되는 모든 리소스들 및 시간, 커널 IO 관리, 파일시스템 프로세싱, -필터들, 및 모든 I/O 동작에 대한 디바이스 드라이버 스택을 방지해서, 대기 시간의 영향을 완화할 것이다.
운영 체제 버퍼 캐싱 메커니즘이 티어 0 캐시가 제공될 수 있는 유효한 RAM 외에 로컬 고속 기억 장치를 사용하도록 변경될 수 있다고 예상된다.
일 변형에서, NFS 또는 CIFS 등의 원격 기억 드라이버, 또는 원격 블록 디바이스 드라이버는 상술된 바와 같이 티어 0 캐시를 통해 데이터의 방침 라우팅을 적용하도록 변경될 수 있다. 이러한 변경들은 본 명세서의 설명의 견지에서 당업자에게 명백해질 것이다.
논리적 볼륨 드라이버가 본 명세서에 기술된 바와 같이 티어 0 캐시를 제공하기 위해 실제 블록 디바이스들로부터 가상 블록 디바이스를 생성하도록 생성 또는 변경될 수 있다. 이미 파일시스템들에 내장된 설비들이 컴퓨터 시스템에서 로컬로 파일들을 캐싱함으로써 이를 보충하는데 사용될 수 있다. 문맥 정보를 블록 기반 캐싱 시스템에 제공하기 위해 블록 기억 드라이버와 협동하는 파일시스템 또는 필터 드라이버가 또한 사용될 수 있다.
대안으로, 기억 프로토콜이 이러한 참조를 허용하면, 원격 중앙 기억 시스템은 또한 로컬 티어 0 캐시 기억 장치에 대한 제어 또는 정보를 유지할 수 있다. 본 실시예에서, 티어 0 캐시에 대한 일부 제어는 중앙 기억 장치에 의해 유지될 것이다. 그러나, 상술된 바와 같이, 방침 또는 문맥 규칙들을 유지하기 위한 책임은 바람직하게 엔드포인트 CPU에서 유지된다.
출원인은 기존 파일들에 대해 투명하게 엔드포인트 캐싱 기능을 제공하는 임의의 종래 기술을 알지 못한다. NFS 또는 CIFS 등의 흔한 원격 파일시스템들은 중앙 기억 장치의 로컬 지속 캐싱을 사용하지 않으며, 또한, 본 명세서에 기술된 본 발명을 구현하기 위한 기능 또는 제안들을 포함하지 않는다. 기억 서비스들(또는 객체 저장소들)을 클라우드하기 위한 일부 파일시스템 인터페이스들은 지속적인 로컬 캐싱(예를 들어, DropboxTM)을 사용하지만, 기존 파일들과 투명하게 작업하는 바와 달리 독립적인 파일시스템들 또는 특별 동기화된 디렉토리들로서 존재한다. 기존 파일들과 투명하게 작업하는 기능은 원격 기억 장치의 티어 1 내지 N(N >= 1)을 가지며, 네트워크에서 원격 기억 장치 자체로부터 다운스트림이고 엔드포인트 CPU와 통신하는, 원격 중앙 기억 장치의 티어 0 캐시에 의해 배타적으로 제공된다.
양호한 실시예가 Windows 운영 체제의 특정 문맥으로 기술되었지만, 동일한 일반적인 방법이 Linux, 다른 Unix들 등의 다른 운영 체제들을 포함하는 다른 문맥들에서, 및 물론, 전형적인 파일시스템들을 최종 사용자들에게 노출하지 않을 수 있는 모바일 시스템들의 문맥에서도 적용될 수 있다.
본 발명의 일부 변형들에서, 통상 블록 디바이스들이 아닌 원격 파일시스템 프로토콜들의 경우일 수 있는 바와 같이, 원격 기억 시스템이 공유될 수 있다. 이러한 변형에서, 엔드포인트 캐싱 기능이 다수의 독립적인 클라이언트들 간의 캐시 일관성을 보장하기 위해 구성된다. 클라이언트들 간의 일관성을 보장할 필요가 있기에, 원격 파일시스템 프로토콜은 통상 이러한 상황을 위해 제공된다. 이는 원격 중앙 기억 장치가 복수의 원격 기억 디바이스들로 이루어진 경우이거나, 또는 대안으로, 다수의 엔드포인트 컴퓨터 시스템들이 데이터를 원격 기억 장치에 기록중인 경우이거나, 데이터 자체가 2개의 또는 그 이상의 엔드포인트 컴퓨터 시스템들 간에 공유되는 경우이다. 데이터에 대한 대여, 또는 취소가능한 로크의 개념이 이러한 일관성을 보장하기 위해 통상 사용되고, 엔드포인트 캐싱 가속기 또는 티어 0은 캐시 의미론들을 유지하기 위해 데이터를 적절히 플러싱(즉, 완전히 클리어 또는 기록)함으로써 데이터에 대한 배타적인 액세스를 야기하는 프로토콜 메시지들과 협동해야만 한다. 양호한 실시예에서, 소스 파일들에 대한 액세스를 제공하는 프로세스는, 적합한 액션이 취해질 수 있도록, 이러한 취소들을 알도록 구성된다.
본 발명의 한가지 추가 장점은, 원격 기억 시스템이 유효하지 않을 때, 또는 네트워크로부터 접속해제될 때 발생한다. 이러한 상황에서, 구성 가능한 방침 제어들은 엔드포인트 캐시의 거동을 제어하기 위해 구현될 수 있다. 디폴트 거동은, 예를 들어, 가능한 경우 티어 0 캐시로부터 판독 동작들이 이행되고, 다른 경우, 실패하는 것이며, 기록 동작들이 티어 0 캐시에서 채워지고 중앙 기억 장치로의 차후 기록을 위해 큐잉되는 것일 수 있다. 다음 충돌 해결책이 다른 시스템으로부터의 기록들이 동시 충돌하는 경우에 요구될 수 있다.
본 발명의 일 변형에서, 애플리케이션들에 의해 사용되는 효과적인 I/O 버퍼링 방침이 투명하게 변경될 수 있다. 현대의 운영 체제들의 애플리케이션들은 일반적으로 버퍼링된 I/O 및 버퍼링되지 않은 I/O 사이에서 선택할 수 있다. 버퍼링된 I/O는, 애플리케이션에 의해 요청된 I/O 동작들이 판독을 위해서는 커널 버퍼 캐시에서 요청된 데이터를 조사하고, 기록을 위해서는 제공된 데이터를 커널 버퍼 캐시에 기록할 운영 체제 커널의 캐시 관리자를 통과하며, 커널은 (주요 기억 장치의 어딘가에서) I/O의 실제 목표의 갱신을 담당함을 의미한다. 버퍼링되지 않은 I/O는, 애플리케이션에 의해 요청된 I/O 동작들이 상술된 바와 같이 캐시 관리자를 통과하지 않고, 대신 실시간으로 주요 기억 장치에서 I/O의 목표로부터 데이터를 판독하거나, 또는 그곳에 각각 데이터를 기록함을 의미한다. 물리적 로케이션에 기록하기 위해 단지 큐잉 되는 대신, 성공이 다시 애플리케이션에 보고되기 전에 데이터를 나타내는 물리적 로케이션에 데이터가 실제로 기록됨을 보장하기 위해 이에 대한 변형들이 존재한다. 이 변형에서, 본 발명은 운영 체제 버퍼에 데이터를 능동적으로 제공하거나 또는 운영 체제 버퍼로부터 데이터를 제거함으로써 판독 및/또는 기록 I/O 동작들을 위해 애플리케이션에 의해 요청되는 데이터의 효과적인 운영 체제 버퍼링 방침을 변경하는 단계; 상기 I/O 동작들을 위해 요구되는 운영 체제 버퍼 캐시를 인에이블 또는 디스에이블하는 단계를 포함하고; 상기 운영 체제 버퍼 캐시에 데이터를 제공하는 단계는 애플리케이션이 운영 체제에 의해 캐싱된 상기 데이터를 사용하도록 구성하는 단계를 포함한다.
본 발명은 각각의 I/O 타입의 버퍼링을 독립적으로 제어함으로써 본 시나리오에 적용될 수 있다. 예를 들어, 판독들은 버퍼링될 수 있지만, 기록들은 버퍼링되지 않을 수 있다. 일례로서, 버퍼링되지 않은 I/O 동작들로 통상 동작하는 데이터베이스는 동작 의미론들을 변경하지 않고 실제로 버퍼링된 판독들 및 버퍼링되지 않은 기록들을 실행할 수 있다. I/O를 요청하는 애플리케이션으로부터 외부적으로 또한 투명하게 I/O 동작들의 버퍼링을 제어하기 위해, 한가지 간단한 방법은 완전히 본 발명의 기억 장치 가속기 기능의 제어하에 있는 티어 0 캐시 기억 장치의 데이터의 버퍼링을 제어하는 것이다. 이는 이러한 방법을 이행하기 위해 외부 방침들에 의해 설정될 수 있는, 그 내용이 본 명세서에 참조용으로 인용된, 2011년 8월 24일에 출원된, Zachariassen 외 다수에 의한 계류중인 PCT 국제 출원 번호 PCT/CA2011/050515에 기술된 바와 같이 인터셉트하는 캐싱 모듈에 의해 실행될 수 있다. 상술된 PCT 출원의 인터셉트하는 캐싱 모듈은 따라서 3가지 방법들로: 특정 종류의 버퍼링을 요청하고 이를 적합하게 변경할 수 있는 애플리케이션으로부터 파일 오프닝 파라미터들을 인터셉트함으로써, 및/또는 티어 0 캐시에 유지된 데이터의 버퍼링을 변경함으로써, 및/또는 운영 체제 캐시 관리자에 대한 질의들 및 요청들을 인터셉트함으로써, 애플리케이션 캐싱을 제어할 수 있다. 이러한 방법으로, 엔드포인트 캐싱은 본 발명 없이 원격 기억 장치로의 네트워크를 가로질러야만 하는 I/O를 위한 엔드포인트 컴퓨터 시스템 내의 멀티-레벨 캐시를 제공할 수 있다.
상술된 실시예들은 본 발명의 일례들로서 의도된 것이며, 변형들 및 변경들이, 오직 첨부된 청구항들에 의해서만 정의되는 본 발명의 범위로부터 벗어나지 않은 채로, 당업자에 의해 달성될 수 있다.

Claims (40)

  1. 데이터 기억 시스템으로서,
    중앙 기억 시스템,
    네트워크 기반 구조에 의해 상기 중앙 기억 시스템과 네트워크 통신하는 적어도 하나의 엔드포인트 컴퓨터 시스템,
    파일시스템 메커니즘, 및
    상기 적어도 하나의 엔드포인트 컴퓨터 시스템의 CPU와 통신하는 기억 장치 가속기를 포함하고,
    상기 중앙 기억 시스템은 티어(tier) 1 내지 N(N >= 1)을 가진 티어드 데이터 구조(tiered data structure)를 포함하고,
    상기 기억 장치 가속기는 상기 적어도 하나의 엔드포인트 컴퓨터 시스템의 로컬 캐시와 상이한, 상기 중앙 기억 시스템에 대한 티어 0 캐시를 포함하고,
    상기 기억 장치 가속기는 상기 적어도 하나의 엔드포인트 컴퓨터 시스템이 액세스할 수 있는 상기 중앙 기억 시스템 상의 데이터의 엔드포인트 캐싱을 제공하며,
    상기 엔드포인트 캐싱이 상기 적어도 하나의 엔드포인트 컴퓨터 시스템의 로컬 기억 장치 유닛과 통신할 때, 상기 파일 시스템 확장 메커니즘은 상기 로컬 기억 장치 유닛으로 상기 티어 0 캐시에 저장된 제1 파일 시스템을 확장하여, 상기 적어도 하나의 엔드포인트 컴퓨터 시스템이 상기 제1 파일시스템을 상기 적어도 하나의 엔드포인트 컴퓨터 시스템에 로컬인 제2 파일시스템의 일부로서 보도록 하고(view),
    상기 기억 장치 가속기는 상기 적어도 하나의 엔드포인트 컴퓨터 시스템의 버스 또는 다른 고속 네트워크에 부착된 물리적 기억 유닛을 제어하는, 상기 CPU에 의해 실행 가능한 컴퓨터 판독 가능한 명령어들을 갖는 컴퓨터 판독 가능 매체를 포함하는, 데이터 기억 시스템.
  2. 삭제
  3. 제1항에 있어서,
    상기 물리적 기억 유닛은 고체 상태 메모리 디바이스를 포함하는, 데이터 기억 시스템.
  4. 제3항에 있어서,
    상기 기억 장치 가속기는 데이터 캐싱 구조를 포함하는, 데이터 기억 시스템.
  5. 제1항, 제3항 및 제4항 중 어느 한 항에 있어서,
    상기 기억 장치 가속기와 통신하는 필터 드라이버를 더 포함하는, 데이터 기억 시스템.
  6. 제5항에 있어서,
    소프트웨어 모듈은 상기 필터 드라이버 상에 제공되고, 상기 필터 드라이버는 판독 또는 기록되는 파일이 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하기 위한 명령어들을 포함하는, 데이터 기억 시스템.
  7. 제6항에 있어서,
    상기 판독 또는 기록되는 파일이 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하기 위한 명령어들은 파일 메타데이터에 액세스하기 위한 명령어들을 포함하는, 데이터 기억 시스템.
  8. 제7항에 있어서,
    상기 필터 드라이버는 데이터 판독 동작이 상기 컴퓨터 시스템에 의해 요청중인 지를 결정하고, 요청중이라면, 판독되는 데이터가 상기 기억 장치 가속기에 존재하는 지를 결정하며, (a) 존재한다면, 상기 기억 장치 가속기로부터 상기 데이터 판독 동작을 이행하고; (b) 존재하지 않는다면, 상기 중앙 기억 시스템으로부터 상기 데이터를 요청하고 상기 데이터의 복사본을 상기 기억 장치 가속기에 제공하기 위한 명령어들을 더 포함하는, 데이터 기억 시스템.
  9. 제7항에 있어서,
    상기 필터 드라이버는 데이터 기록 동작이 상기 컴퓨터 시스템에 의해 요청중인 지를 결정하고, 요청중이라면, 상기 데이터를 상기 기억 장치 가속기에 기록하기 위한 명령어들을 더 포함하는, 데이터 기억 시스템.
  10. 제9항에 있어서,
    상기 필터 드라이버는 상기 데이터를 상기 중앙 기억 시스템에 기록하기 위한 명령어들을 더 포함하는, 데이터 기억 시스템.
  11. 제9항에 있어서,
    상기 필터 드라이버는 상기 중앙 기억 시스템에 기록될 상기 데이터를 큐잉(queuing)하기 위한 명령어들을 더 포함하는, 데이터 기억 시스템.
  12. 제10항에 있어서,
    상기 필터 드라이버는 상기 중앙 기억 시스템 및 상기 기억 장치 가속기 간의 데이터의 일관성(consistency)을 유지하기 위한 명령어들을 더 포함하는, 데이터 기억 시스템.
  13. 제1항, 제3항 및 제4항 중 어느 한 항에 있어서,
    상기 컴퓨터 시스템은 모바일 디바이스를 포함하는, 데이터 기억 시스템.
  14. 데이터 기억 방법으로서,
    중앙 기억 시스템을 제공하는 단계,
    네트워크 기반 구조에 의해 상기 중앙 기억 시스템과 네트워크 통신하는 적어도 하나의 엔드포인트 컴퓨터 시스템을 제공하는 단계,
    파일시스템 메커니즘을 제공하는 단계, 및
    상기 적어도 하나의 엔드포인트 컴퓨터 시스템의 CPU와 통신하는 기억 장치 가속기를 제공하는 단계를 포함하고,
    상기 중앙 기억 시스템은 티어(tier) 1 내지 N(N >= 1)을 가진 티어드 데이터 구조(tiered data structure)를 포함하고,
    상기 기억 장치 가속기는 상기 적어도 하나의 엔드포인트 컴퓨터 시스템의 로컬 캐시와 상이한, 상기 중앙 기억 시스템에 대한 티어 0 캐시를 포함하고,
    상기 기억 장치 가속기는 상기 적어도 하나의 엔드포인트 컴퓨터 시스템이 액세스할 수 있는 상기 중앙 기억 시스템 상의 데이터의 엔드포인트 캐싱을 제공하며,
    상기 엔드포인트 캐싱이 상기 적어도 하나의 엔드포인트 컴퓨터 시스템의 로컬 기억 장치 유닛과 통신할 때, 상기 파일 시스템 확장 메커니즘은 상기 로컬 기억 장치 유닛에서 상기 티어 0 캐시에 저장된 제1 파일 시스템을 확장하여, 상기 적어도 하나의 엔드포인트 컴퓨터 시스템이 상기 제1 파일시스템을 상기 적어도 하나의 엔드포인트 컴퓨터 시스템에 로컬인 제2 파일시스템의 일부로서 보도록 하고(view),
    상기 기억 장치 가속기는 상기 적어도 하나의 엔드포인트 컴퓨터 시스템의 버스 또는 다른 고속 네트워크에 부착된 물리적 기억 유닛을 제어하는, 상기 CPU에서 실행 가능한 컴퓨터 판독 가능한 명령어들을 갖는 컴퓨터 판독 가능 매체를 포함하는, 데이터 기억 방법.
  15. 제14항에 있어서,
    상기 CPU로부터 상기 기억 장치 가속기로의 데이터의 처리량이 상기 CPU로부터 상기 중앙 기억 시스템으로의 커넥션을 통한 데이터의 처리량보다 더 많은 로케이션에 상기 기억 장치 가속기가 위치하는, 데이터 기억 방법.
  16. 삭제
  17. 제14항에 있어서,
    상기 물리적 기억 유닛은 고체 상태 메모리 디바이스를 포함하는, 데이터 기억 방법.
  18. 제17항에 있어서,
    상기 기억 장치 가속기는 데이터 캐싱 구조를 포함하는, 데이터 기억 방법.
  19. 제18항에 있어서,
    상기 엔드포인트 컴퓨터 시스템은 데이터 판독 또는 데이터 기록 동작들을 실행하도록 구성되고, 상기 방법은 판독 또는 기록되는 파일이 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하는 단계를 더 포함하는, 데이터 기억 방법.
  20. 제19항에 있어서,
    파일 메타데이터 정보에 액세스함으로써 판독 또는 기록되는 파일이 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하는 단계를 더 포함하는, 데이터 기억 방법.
  21. 제20항에 있어서,
    데이터 판독 동작이 상기 컴퓨터 시스템에 의해 요청중인 지를 결정하고, 요청중이라면, 판독되는 데이터가 상기 기억 장치 가속기에 존재하는 지를 결정하며, (a) 존재한다면, 상기 기억 장치 가속기로부터 상기 데이터 판독 동작을 이행하고; (b) 존재하지 않는다면, 상기 중앙 기억 시스템으로부터 상기 데이터를 요청하고 상기 데이터의 복사본을 상기 기억 장치 가속기에 제공하는 단계를 더 포함하는, 데이터 기억 방법.
  22. 제21항에 있어서,
    데이터 기록 동작이 상기 컴퓨터 시스템에 의해 요청중인 지를 결정하고, 요청중이라면, 상기 데이터를 상기 기억 장치 가속기에 기록하는 단계를 더 포함하는, 데이터 기억 방법.
  23. 제22항에 있어서,
    상기 데이터를 상기 중앙 기억 시스템에 기록하는 단계를 더 포함하는, 데이터 기억 방법.
  24. 제22항에 있어서,
    상기 중앙 기억 시스템에 기록될 상기 데이터를 큐잉(queuing)하는 단계를 더 포함하는, 데이터 기억 방법.
  25. 제22항 또는 제23항에 있어서,
    상기 중앙 기억 시스템과 상기 기억 장치 가속기 간의 데이터의 일관성을 유지하는 단계를 더 포함하는, 데이터 기억 방법.
  26. 제14항 또는 제15항에 있어서,
    판독 및 기록 I/O 동작들에 대해 독립적으로 또는 조합해서 애플리케이션에 의해 요청되는 데이터의 효과적인 버퍼링 방침을 투명하게 변경하는 단계들을 더 포함하는, 데이터 기억 방법.
  27. 데이터 기억 방법으로서,
    중앙 기억 시스템에 대해 판독 또는 기록되는 파일이 엔드포인트 컴퓨터 시스템의 기억 장치 가속기에서의 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하는 단계;
    데이터 판독 동작이 요청중인 지를 결정하고, 요청중이라면, 판독되는 데이터가 상기 기억 장치 가속기에 존재하는 지를 결정하며, (a) 존재한다면, 상기 기억 장치 가속기로부터 상기 데이터 판독 동작을 이행하고, (b) 존재하지 않는다면, 상기 중앙 기억 시스템으로부터 상기 데이터를 요청하고 상기 데이터의 복사본을 상기 기억 장치 가속기에 제공하는 단계; 및
    데이터 기록 동작이 상기 컴퓨터 시스템에 의해 요청중인 지를 결정하고, 요청중이라면, 상기 데이터를 상기 기억 장치 가속기에 기록하는 단계를 포함하고,
    상기 엔드포인트 캐싱이 적어도 하나의 엔드포인트 컴퓨터 시스템의 로컬 기억 장치 유닛과 통신할 때, 파일 시스템 확장 메커니즘은 상기 로컬 기억 장치 유닛으로 티어 0 캐시에 저장된 제1 파일 시스템을 확장하여, 적어도 하나의 엔드포인트 컴퓨터 시스템이 상기 제1 파일시스템을 적어도 하나의 엔드포인트 컴퓨터 시스템에 로컬인 제2 파일시스템의 일부로서 보도록 하는(view), 데이터 기억 방법.
  28. 제27항에 있어서,
    파일 메타데이터 정보에 액세스함으로써 상기 판독 또는 기록되는 파일이 상기 엔드포인트 캐싱을 위해 표시되어 있는 지를 결정하는 단계를 더 포함하는, 데이터 기억 방법.
  29. 제27항 또는 제28항에 있어서,
    상기 중앙 기억 시스템과 상기 기억 장치 가속기 간의 데이터의 일관성을 유지하는 단계를 더 포함하는, 데이터 기억 방법.
  30. 제28항에 있어서,
    판독 및 기록 I/O 동작들에 대해 독립적으로 또는 조합해서 애플리케이션에 의해 요청되는 데이터의 효과적인 버퍼링 방침을 투명하게 변경하는 단계들을 더 포함하는, 데이터 기억 방법.
  31. 제27항 또는 제28항에 따른 방법을 실행하기 위한 컴퓨터 실행 가능 명령어들을 가진 컴퓨터 판독 가능 매체.
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
KR1020137015421A 2010-11-16 2011-11-15 데이터 기억 시스템에 대한 엔드포인트 캐싱 KR101530463B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US41419110P 2010-11-16 2010-11-16
US61/414,191 2010-11-16
PCT/CA2011/050708 WO2012065265A1 (en) 2010-11-16 2011-11-15 Endpoint caching for data storage systems

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020157004937A Division KR101578642B1 (ko) 2010-11-16 2011-11-15 데이터 기억 시스템에 대한 엔드포인트 캐싱

Publications (2)

Publication Number Publication Date
KR20130086373A KR20130086373A (ko) 2013-08-01
KR101530463B1 true KR101530463B1 (ko) 2015-06-29

Family

ID=46083458

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137015421A KR101530463B1 (ko) 2010-11-16 2011-11-15 데이터 기억 시스템에 대한 엔드포인트 캐싱
KR1020157004937A KR101578642B1 (ko) 2010-11-16 2011-11-15 데이터 기억 시스템에 대한 엔드포인트 캐싱

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020157004937A KR101578642B1 (ko) 2010-11-16 2011-11-15 데이터 기억 시스템에 대한 엔드포인트 캐싱

Country Status (5)

Country Link
US (1) US9692825B2 (ko)
JP (1) JP5717864B2 (ko)
KR (2) KR101530463B1 (ko)
CN (1) CN103282889B (ko)
WO (1) WO2012065265A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2852897B1 (en) * 2012-05-20 2020-10-07 Microsoft Technology Licensing, LLC Server-based hierarchical mass storage system
US20140059293A1 (en) * 2012-08-27 2014-02-27 Samsung Electronics Co., Ltd. Method for protecting a gpt cached disks data integrity in an external operating system environment
US9183271B2 (en) * 2012-12-04 2015-11-10 Pivotal Software, Inc. Big-fast data connector between in-memory database system and data warehouse system
WO2015017147A1 (en) * 2013-07-29 2015-02-05 Silicon Graphics International Corp. I/o acceleration in hybrid storage
US20150254196A1 (en) * 2014-03-10 2015-09-10 Riverscale Ltd Software Enabled Network Storage Accelerator (SENSA) - network - disk DMA (NDDMA)
US10366242B2 (en) * 2014-12-23 2019-07-30 Hewlett Packard Enterprise Development Lp Prevention of a predetermined action regarding data
JP2016167215A (ja) * 2015-03-10 2016-09-15 株式会社東芝 メモリ装置
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
TW201935306A (zh) 2018-02-02 2019-09-01 美商多佛微系統公司 用於安全初始化的策略連結及/或載入之系統和方法
US11797398B2 (en) 2018-04-30 2023-10-24 Dover Microsystems, Inc. Systems and methods for checking safety properties
US10824598B2 (en) * 2018-08-07 2020-11-03 Dell Products L.P. Handling file commit and commit-delete operations in an overlay optimizer
US11216314B2 (en) * 2018-11-02 2022-01-04 EMC IP Holding Company LLC Dynamic reallocation of resources in accelerator-as-a-service computing environment
TW202022678A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US10862781B2 (en) * 2018-11-07 2020-12-08 Saudi Arabian Oil Company Identifying network issues using an agentless probe and end-point network locations
US10924328B2 (en) 2018-11-16 2021-02-16 Saudi Arabian Oil Company Root cause analysis for unified communications performance issues
US10944622B2 (en) 2018-11-16 2021-03-09 Saudi Arabian Oil Company Root cause analysis for unified communications performance issues
US11112972B2 (en) 2018-12-05 2021-09-07 Samsung Electronics Co., Ltd. System and method for accelerated data processing in SSDs
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
CN111787062B (zh) * 2020-05-28 2021-11-26 北京航空航天大学 面向广域网络文件***的自适应快速增量预读方法
CN114489506B (zh) * 2022-01-21 2024-02-27 杭州海康存储科技有限公司 存储访问控制装置、方法及存储设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050027798A1 (en) * 2000-12-14 2005-02-03 Lih-Sheng Chiou Caching system and method for a network storage system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0726074A (ja) 1993-07-06 1995-01-27 Toyobo Co Ltd ポリオレフィン樹脂フイルム
US6119151A (en) * 1994-03-07 2000-09-12 International Business Machines Corp. System and method for efficient cache management in a distributed file system
US6721847B2 (en) * 2001-02-20 2004-04-13 Networks Associates Technology, Inc. Cache hints for computer file access
US7552223B1 (en) * 2002-09-16 2009-06-23 Netapp, Inc. Apparatus and method for data consistency in a proxy cache
US7155571B2 (en) 2002-09-30 2006-12-26 International Business Machines Corporation N-source in-kernel cache for high performance in computer operating systems
KR20050114028A (ko) 2004-05-31 2005-12-05 정보통신연구진흥원 San 파일시스템을 위한 협력 캐시 장치 및 방법
US8055702B2 (en) 2005-04-25 2011-11-08 Netapp, Inc. System and method for caching network file systems
US8037240B2 (en) * 2007-10-24 2011-10-11 International Business Machines Corporation System and method for using reversed backup operation for minimizing the disk spinning time and the number of spin-up operations
US8862689B2 (en) * 2007-10-24 2014-10-14 International Business Machines Corporation Local flash memory and remote server hybrid continuous data protection
GB0811422D0 (en) * 2008-06-20 2008-07-30 Symbian Software Ltd Efficient caching
US8762642B2 (en) * 2009-01-30 2014-06-24 Twinstrata Inc System and method for secure and reliable multi-cloud data replication
GB201004449D0 (en) * 2010-02-22 2010-05-05 Corbett Sean Data accelerator
US8898324B2 (en) * 2010-06-24 2014-11-25 International Business Machines Corporation Data access management in a hybrid memory server
US8484242B1 (en) * 2010-08-24 2013-07-09 ScalArc, Inc. Method and system for transparent database connection pooling and query queuing
US9032017B1 (en) * 2010-08-10 2015-05-12 Scalarc Inc Method and system for transparent read-write query routing when load balancing databases
US8543554B1 (en) * 2010-08-10 2013-09-24 ScalArc Inc. Method and system for transparent database query caching
US20140052848A1 (en) * 2012-08-16 2014-02-20 Data Accelerator Ltd. Latency virtualization
US9043923B2 (en) * 2012-12-27 2015-05-26 Empire Technology Development Llc Virtual machine monitor (VMM) extension for time shared accelerator management and side-channel vulnerability prevention

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050027798A1 (en) * 2000-12-14 2005-02-03 Lih-Sheng Chiou Caching system and method for a network storage system

Also Published As

Publication number Publication date
US9692825B2 (en) 2017-06-27
KR101578642B1 (ko) 2015-12-17
CN103282889A (zh) 2013-09-04
JP2013541788A (ja) 2013-11-14
JP5717864B2 (ja) 2015-05-13
US20130304842A1 (en) 2013-11-14
CN103282889B (zh) 2017-02-22
WO2012065265A1 (en) 2012-05-24
KR20150038362A (ko) 2015-04-08
KR20130086373A (ko) 2013-08-01

Similar Documents

Publication Publication Date Title
KR101530463B1 (ko) 데이터 기억 시스템에 대한 엔드포인트 캐싱
EP2761473B1 (en) Intelligence for controlling virtual storage appliance storage allocation
US11372544B2 (en) Write type based crediting for block level write throttling to control impact to read input/output operations
CA3027756C (en) Systems and methods for efficient distribution of stored data objects
US9671960B2 (en) Rate matching technique for balancing segment cleaning and I/O workload
US9348842B2 (en) Virtualized data storage system optimizations
US7631148B2 (en) Adaptive file readahead based on multiple factors
US11561930B2 (en) Independent evictions from datastore accelerator fleet nodes
US20140052892A1 (en) Methods and apparatus for providing acceleration of virtual machines in virtual environments
US20060200470A1 (en) System and method for managing small-size files in an aggregated file system
US8656119B2 (en) Storage system, control program and storage system control method
US20140089562A1 (en) Efficient i/o processing in storage system
US20200042453A1 (en) Pre-allocating cache resources for a range of tracks in anticipation of access requests to the range of tracks
US8862813B2 (en) Method, computer program product and appartus for accelerating responses to requests for transactions involving data operations
JP5938528B2 (ja) ストレージ装置及びストレージ装置の制御方法
US11068184B2 (en) Method, device, and computer program product for managing a storage system
AU2011293014A1 (en) Method and system for extending data storage system functions
CN107577733A (zh) 一种数据复制的加速方法及***
US20230126129A1 (en) Methods for hierarchical propagation in tree structures and devices thereof
TWI824392B (zh) 適用於分散式深度學習計算的隨需即組共用資料快取方法、電腦程式、電腦可讀取媒體
Vallath et al. Tuning the Storage Subsystem

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180529

Year of fee payment: 4