KR20130111283A - 파일 시스템 힌팅 - Google Patents

파일 시스템 힌팅 Download PDF

Info

Publication number
KR20130111283A
KR20130111283A KR1020130023526A KR20130023526A KR20130111283A KR 20130111283 A KR20130111283 A KR 20130111283A KR 1020130023526 A KR1020130023526 A KR 1020130023526A KR 20130023526 A KR20130023526 A KR 20130023526A KR 20130111283 A KR20130111283 A KR 20130111283A
Authority
KR
South Korea
Prior art keywords
file system
hint
request
layer
context information
Prior art date
Application number
KR1020130023526A
Other languages
English (en)
Other versions
KR101445481B1 (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 KR20130111283A publication Critical patent/KR20130111283A/ko
Application granted granted Critical
Publication of KR101445481B1 publication Critical patent/KR101445481B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

파일 시스템 힌트를 생성하고 통신하는 방법이 개시된다. 이 방법은 파일 시스템 레이어로부터 I/O 요청을 수신하는 단계와, 파일 시스템 문맥 정보에 대한 I/O 요청을 검사하는 단계를 포함할 수 있다. 방법은 파일 시스템 문맥 정보의 속성을 결정하기 위해 파일 시스템 레이어에 액세스하는 단계와, 파일 시스템 레이어로부터 파일 시스템 문맥 정보의 속성을 수신하는 단계를 또한 포함할 수 있다. 방법은 파일 시스템 문맥 정보의 속성을 분석하는 단계와, 파일 시스템 문맥 정보의 속성을 분석하는 것에 기초하여 힌트를 생성하는 단계를 더 포함할 수 있다. 방법은 애플리케이션으로부터 통과된 웨이트-에이지를 제공하기 위한 메커니즘을 포함할 수 있다. 힌트는 I/O 요청과 연관될 수 있고, 힌트는 하위 레벨 저장 계층에서 데이터 접근성의 효율을 증가시키기 위해 핫트니스(hotness) 정보를 포함할 수 있다. 방법은 힌트를 하위 레벨 저장 계층으로 송신하는 단계를 포함할 수 있다.

Description

파일 시스템 힌팅{FILE SYSTEM HINTING}
본 발명은 일반적으로 파일 시스템 힌트 및/또는 애플리케이션 구동 힌트를 유도하고, 생성하고, 통신하는 방법 및 장치에 관한 것이다. 파일 시스템 힌트는 파일 시스템 레이어에 의해 발행된 I/O 요청으로부터 인터셉트된 시스템 문맥 정보(contextural information)에 기초하여 생성되어 더 하위 레벨 저장 계층으로 통신될 수 있다.
현재의 캐시 기반 저장 시스템은 파일 시스템 인식 문맥 정보를 효과적으로 결정하거나 유도하는 것이 불가능하다. 계층-2 캐시와 같이 매우 낮은 레벨에서 동작하는 캐시 기반 저장 시스템과 같은 현재의 캐시 기반 저장 시스템은 파일 시스템 I/O의 문맥 및 근접도가 결여되어 있다. 문맥의 결여 및 근접도의 결여에 기인하여, 현재의 캐시 기반 저장 시스템은 수신되는 데이터의 중요도에 기초하여 데이터 접근성(accessibility)을 향상시키는 능력이 결여되어 있다. 부가적으로, 현재의 캐시 기반 저장 시스템은 파일 시스템 I/O의 문맥 및 근접도가 결여되어 있기 때문에, 현재의 캐시 기반 저장 시스템은 필수적으로 애플리케이션의 데이터 액세스 패턴에 대한 정보를 얻는 능력이 결여되어 있다.
매우 낮은 레벨에서, 하위 레벨 저장 시스템 또는 디바이스의 계층화된 저장 시스템 또는 저장 제어기는 애플리케이션 또는 파일 시스템의 데이터 액세스 패턴을 인식하지 않는다. 하위 레벨[하위 레벨 저장 시스템(예를 들어, 하위 레벨 RAID 저장 시스템)을 수용하는 것들과 같은]은 파일 시스템으로부터 또는 애플리케이션으로부터 액세스되는 데이터의 유형에 대한 정보를 직접 얻기 위한 수단을 갖지 않는다. 하위 레벨 저장 시스템은 계층-2 캐싱 계층화 저장 시스템으로서 동작할 수 있지만, 호스트측 캐싱 정보는 하위 레벨 저장 시스템의 캐시로 통과되지 않는다.
현재, 애플리케이션 특정 정보가 하위 레벨 저장 시스템으로 하향 전송되거나 하향 통과되게 하는 어떠한 메커니즘도 존재하지 않는다.
따라서, 전술된 문제점을 처리하는 방법 및 장치를 제공하는 것이 바람직할 수 있다.
따라서, 파일 시스템 힌트를 생성하고 통신하는 방법이 포함된다. 방법은 파일 시스템 레이어로부터 I/O 요청을 수신하는 단계와, 파일 시스템 문맥 정보에 대한 I/O 요청을 검사하는 단계를 포함할 수 있다. 방법은 파일 시스템 문맥 정보의 속성을 결정하기 위해 파일 시스템 레이어에 액세스하는 단계와, 파일 시스템 레이어로부터 파일 시스템 문맥 정보의 속성을 수신하는 단계를 또한 포함할 수 있다. 방법은 파일 시스템 문맥 정보의 속성을 분석하는 단계와, 파일 시스템 문맥 정보의 속성을 분석하는 것에 기초하여 적어도 하나의 힌트를 생성하는 단계를 더 포함할 수 있다. 힌트는 파일 시스템 문맥 정보의 속성에 의해 결정된 바와 같은 데이터의 중요도를 나타낼 수 있고, 힌트와 연관된 데이터의 상대적 중요도는 데이터가 비교적 고속의 저장 매체 또는 비교적 저속의 저장 매체 내에 존재하는지 여부를 판정한다. 부가적으로, 방법은 적어도 하나의 힌트를 하위 레벨 저장 계층으로 송신하는 단계를 포함할 수 있다.
부가적으로, 디바이스가 포함된다. 디바이스는 파일 시스템 힌트를 생성하고 통신하기 위한 시스템 토폴로지(topology)에 부착하도록 구성될 수 있다. 디바이스는 시스템 토폴로지의 파일 시스템 레이어, 블록 레이어 및 하위 레벨 저장 계층과 통신하도록 구성된 적어도 하나의 필터 드라이버를 포함할 수 있다. 필터 드라이버는 적어도 힌트 엔진 및 통신 구성 요소를 포함할 수 있다. 부가적으로, 필터 드라이버는 적어도 파일 시스템 레이어로부터 I/O 요청을 수신하고, 파일 시스템 문맥 정보에 대한 I/O 요청을 검사하고, 파일 시스템 문맥 정보의 속성을 결정하기 위해 파일 시스템 레이어에 액세스하고, 파일 시스템 레이어로부터 파일 시스템 문맥 정보의 속성을 수신하고, 파일 시스템 문맥 정보의 속성을 분석하고, 파일 시스템 문맥 정보의 속성을 분석하는 것에 기초하여 적어도 하나의 힌트를 생성 - 상기 적어도 하나의 힌트는 I/O 요청 데이터와 연관되고, 적어도 하나의 힌트는 파일 시스템 문맥 정보의 속성에 의해 결정된 바와 같은 데이터의 중요도를 나타낼 수 있고, 힌트와 연관된 데이터의 상대적 중요도는 데이터가 비교적 고속의 저장 매체 또는 비교적 저속의 저장 매체 내에 존재하는지 여부를 판정함 - 하고, 적어도 하나의 힌트를 하위 레벨 저장 계층으로 송신하도록 더 구성될 수 있다.
또한, 실시예는 컴퓨팅 디바이스로 하여금 파일 시스템 힌트를 생성하고 통신하는 방법을 수행하게 하기 위한 컴퓨터 코드를 구현하는 비일시적 컴퓨터 판독 가능 매체를 포함할 수 있고, 컴퓨터 코드는 컴퓨팅 디바이스로 하여금 파일 시스템 레이어로부터 I/O 요청을 수신하는 것과, 파일 시스템 문맥 정보에 대한 I/O 요청을 검사하는 것과, 파일 시스템 문맥 정보의 속성을 결정하기 위해 파일 시스템 레이어에 액세스하는 것과, 파일 시스템 레이어로부터 파일 시스템 문맥 정보의 속성을 수신하는 것과, 파일 시스템 문맥 정보의 속성을 분석하는 것과, 파일 시스템 문맥 정보의 속성을 분석하는 것에 기초하여 적어도 하나의 힌트를 생성하는 것 - 상기 적어도 하나의 힌트는 시스템 문맥 정보의 속성에 의해 결정된 바와 같은 데이터의 중요도를 나타낼 수 있고, 힌트와 연관된 데이터의 상대적 중요도는 데이터가 비교적 고속의 저장 매체 또는 비교적 저속의 저장 매체 내에 존재하는지 여부를 판정함 - 과, 힌트를 하위 레벨 저장 계층으로 송신하는 것을 실행하게 한다.
상기 일반적인 설명 및 이하의 상세한 설명은 단지 예시적이고 설명적이며, 청구된 발명을 한정하는 것은 아니라는 것이 이해되어야 한다. 명세서에 합체되어 그 부분을 구성하는 첨부 도면은 본 발명의 실시예를 도시하고, 일반적인 설명과 함께 원리를 설명하는 기능을 한다.
도 1은 일반적으로 구현된 시스템 토폴리지에서 사용자 공간 및 커널 공간 내의 레이어의 다이어그램.
도 2는 힌팅(hinting)을 위해 구성된 시스템 토폴로지의 흐름도.
도 3은 힌트 엔진을 포함하는 필터 드라이버의 블록 다이어그램.
도 4는 파일 시스템 힌트를 위해 구성된 파일 시스템 레이어 및 필터 드라이버 내의 I/O 요청의 흐름도.
도 5는 애플리케이션 힌트를 위해 구성된 파일 시스템 레이어 및 필터 드라이버 내의 I/O 요청의 흐름도.
도 6은 힌트 통신을 위한 제 1 접근법의 흐름도.
도 7은 힌트 통신을 위한 제 2 접근법의 흐름도.
도 8은 힌트 프로세싱을 위한 흐름도.
도 9는 파일 시스템 힌트를 생성하고 통신하기 위한 방법을 도시하는 도면.
본 발명의 수많은 목적 및 장점은 첨부 도면을 참조하여 당 기술 분야의 숙련자들에 의해 더 양호하게 이해될 수 있다.
이제, 첨부 도면에 도시되어 있는 개시된 요지를 상세히 참조할 것이다. 본 발명의 범주는 단지 청구범위에 의해서만 한정되고, 수많은 대안, 수정 및 등가물이 포함된다. 명료화를 위해, 실시예에 관련된 기술 분야에 공지된 기술적인 자료는 설명을 불필요하게 불명료하게 하는 것을 회피하기 위해 상세히 설명되지 않는다.
본 발명의 실시예는 힌팅을 포함할 수 있다. 힌팅은 특정 호스트 또는 애플리케이션 특정 정보가 하위 레벨 저장 계층과 같은 하위 레벨로 통과될 수 있게 한다. 힌팅은 그렇지 않으면 하위 레벨에 이용 가능하지 않을 수 있는 정보가 더 효율적인 캐싱을 위해 사용될 수 있게 한다. 예를 들어, 힌팅 정보는 향상된 캐싱 또는 자동-계층화를 위해 이용될 수 있다. 힌팅은 다양한 메타데이터 정보의 가중 평균[웨이트-에이지(weight-age)]이 하위 레벨로 하향 통과되는 것을 가능하게 할 수 있다. 힌팅은 파일 시스템 또는 애플리케이션의 데이터 액세스 패턴을 하위 레벨로 하향 통과시키는 것을 추가로 포함할 수 있다. 하위 레벨은 이어서 힌팅을 통해 얻어진 데이터의 특성에 기초하여 더 효율적으로 또는 적절하게 작용하거나 응답할 수 있다. 예를 들어, 힌트는 하위 레벨 저장 제어기(예를 들어, MegaRAID
Figure pat00001
저장 제어기), 드라이버, 시스템 또는 연관 소프트웨어 또는 펌웨어를 위한 어드바이저 또는 디렉터로서 제공될 수 있다.
힌팅은 파일 시스템 특정 힌팅 및/또는 애플리케이션 특정 힌팅을 포함할 수 있다. 파일 시스템 힌팅은 다른 애플리케이션에 대한 의존성 없이 유도될 수 있다. 애플리케이션 특정 힌팅은 하나 이상의 각각의 애플리케이션으로부터의 지원을 포함할 수 있다. 힌팅 솔루션은 또한 디폴트 애플리케이션 힌팅 알고리즘/메커니즘을 오버라이드할 수 있는 API를 노출시킬 수 있고, 이들 API는 애플리케이션이 더 특정 힌트를 제공할 수 있게 하고 힌트에 대한 더 양호한 제어를 가질 수 있다. 부가적으로, 애플리케이션이 힌트를 하위 레벨로 통과시키기 위해 API를 사용할 수 있도록 일반적 API의 세트가 이용 가능해질 수 있다.
본 발명의 실시예는 파일 시스템 또는 파일 시스템 아키텍처를 수정하지 않고 파일 시스템 문맥 정보를 얻기 위해 파일 시스템 아키텍처에 액세스할 수 있다. 본 발명의 실시예는 또한 파일 시스템 어그노스틱(agnostic)이거나 거의 파일 시스템 어그노스틱일 수 있다. 파일 시스템 어그노스틱인 것은 본 발명의 실시예가 파일 시스템의 특정 포맷 또는 언어에 종속되지 않고 다양한 유형의 파일 시스템 상에서 이를 가로질러 동작할 수 있게 한다. 부가적으로, 본 발명의 실시예는 영역의 액세스 패턴 뿐만 아니라 데이터의 유형을 고려할 수 있기 때문에, 실시예는 애플리케이션 문맥 정보를 얻을 수 있다. 따라서, 구현예 및 실시예는 파일 시스템 힌트 및 애플리케이션 구동 힌트 중 하나 또는 모두를 생성하고 통신하도록 구성될 수 있다.
도 1을 참조하면, 일반적으로 구현된 시스템 토폴로지(100)가 도시된다. 시스템 토폴로지(100)는 통상적으로 사용자 공간(110) 및 커널 공간(120)을 포함할 수 있다. 데이터베이스/사용자 애플리케이션(112)이 통상적으로 사용자 공간(110) 내에 존재할 수 있다. 데이터베이스/사용자 애플리케이션은 사용자 공간(110)으로부터 커널 공간(120)으로 I/O 요청을 행할 수 있다. 데이터베이스/사용자 애플리케이션 요청은 순차적 또는 비순차적 I/O 요청을 포함할 수 있고, 랜덤 I/O 요청을 포함할 수 있다. 시스템 토폴로지의 상이한 구현예는 사용자 공간(110)에 존재하는 부가의 구성 요소, 하드웨어, 소프트웨어 또는 레이어를 포함할 수 있다.
커널 공간(120)은 사용자 공간(110) 아래에서 동작할 수 있다. 커널 공간은 직접 I/O(122), 시스템 호출 인터페이스(124), 하나 이상의 가상 파일 시스템(126), 하나 이상의 파일 시스템(128), 블록 레이어(130), 복수의 LBA(논리 블록 어드레스)를 포함하는 요청(132), SCSI 레이어(140)를 포함할 수 있다. 시스템 토폴로지의 상이한 구현예는 커널 공간(110) 상에 존재하는 부가의 구성 요소, 하드웨어, 소프트웨어 또는 레이어를 포함할 수 있고, 예를 들어 저장 제어기(예를 들어, 152) 및 저장 시스템(150)을 포함할 수 있다.
직접 I/O(122)는 I/O 요청을 블록 레이어(130)에 송신할 수 있다. I/O 요청은 애플리케이션 특정 데이터를 포함할 수 있다.
시스템 호출 인터페이스(124)는 커널 공간(120) 내에 요구된 서비스를 위해 사용자 공간(110) 상에서 실행되는 애플리케이션으로부터 호출 또는 I/O 요청을 송신하거나 수신하도록 구성될 수 있다.
가상 파일 시스템(126)은 파일 시스템(예를 들어, 128)의 상부에 추상적 레이어를 포함할 수 있다. 가상 파일 시스템(126)은 다수의 및 상이한 유형의 물리적 파일 시스템(예를 들어, 128)을 허용하도록 구성될 수 있다. 예를 들어, 가상 파일 시스템(126)은 VM웨어 제품으로 구현될 수 있다. 파일 시스템(128)은 파일 또는 데이터를 편제하도록 구성될 수 있다. 파일 시스템(128)은 파일 및 데이터를 포함할 수 있고, 여기서 파일 및 데이터는 메타데이터를 구비하거나 포함할 수 있다. 파일 시스템(128)은 I/O 레이어를 블록 레이어(130)에 송신할 수 있고, 블록 레이어(130)의 I/O 요청은 사용자 데이터, 파일 시스템 메타데이터, 다른 데이터 또는 다른 메타데이터 중 적어도 하나를 포함할 수 있다.
파일 시스템 레이어의 파일 시스템, 뿐만 아니라 가상 파일 시스템 레이어의 가상 파일 시스템은 데이터(예를 들어, 파일) 및 메타데이터를 포함할 수 있다. 메타데이터는 소정 데이터 구조에 대한 정보를 포함할 수 있다. 파일은 아이노드(인덱스 노드) 또는 브이노드(가상 인덱스 노드)와 연관될 수 있다. 아이노드 또는 브이노드는 정수에 의해 식별될 수 있다. 아이노드 또는 브이노드는 파일 및 디렉토리(예를 들어, 폴더)에 대한 정보를 저장할 수 있다. 예를 들어, 아이노드 또는 브이노드는 파일, 파일 소유권 또는 액세스 모드(예를 들어, 판독, 기록, 허가 등)에 대한 정보를 포함할 수 있다.
블록 레이어(130)는 파일 시스템(128) 및 직접 I/O(122)로부터 I/O 요청을 수신하도록 구성될 수 있다. 마찬가지로, 파일 시스템(128) 및 직접 I/O는 블록 레이어에 액세스하도록 구성될 수 있다. 블록 레이어(130)는 SCSI 레이어(140)에 통신적으로 접속될 수 있다. 블록 레이어(130)는 SCSI 레이어(14) 상의 저장 시스템(150) 및 저장 시스템 제어기(152)에 하나 또는 복수의 요청을 송신하도록 구성될 수 있다.
SCSI 레이어(140)는 SAS(직렬 부착 SCSI) 접속성 또는 파이버 채널 접속성을 포함할 수 있다. SCSI 레이어(140)는 블록 레이어(130)를 저장 시스템(150)에 통신적으로 접속할 수 있다. SCSI 레이어는 호스트 시스템, 저장 시스템, 저장 제어기, 제어기, 확장기, 저장 네트워크, 컴퓨터 네트워크, 다른 블록 레이어 등과 같은 복수의 디바이스, 레이어 또는 시스템을 또한 통신적으로 접속할 수 있다.
저장 시스템(150)은 하드 디스크 드라이브(HDD) 또는 고체 상태 드라이브(SSD)의 소정의 조합과 같은 하나 또는 복수의 저장 디바이스를 포함할 수 있다. 저장 시스템(150)은 저장 제어기(152)를 포함할 수 있다. 저장 시스템(150)은 하위 레벨 저장 시스템일 수 있다. 하위 레벨 저장 시스템은 RAID 저장 시스템 및 RAID 계층화 저장 시스템을 포함할 수 있다.
저장 시스템(150)은 일체형, 일체화 가능, 접속형 또는 연관형 저장 제어기(152)를 포함할 수 있다. 저장 제어기(152)는 판독/기록 I/O 요청을 라우팅하고 수신하는 것과 같은 저장 작업을 효율적으로 취급하고, 전송하고, 조정하고, 관리하도록 구성될 수 있다. 저장 제어기는 컴퓨터 판독 가능 저장 매체 내에 저장된 코드를 포함하는 소프트웨어 또는 펌웨어를 포함할 수 있다. 저장 제어기의 소프트웨어 또는 펌웨어는 저장 제어기 작업을 동작하고 취급하도록 구성될 수 있다.
도 2를 참조하면, 힌트 엔진(260)을 포함하는 시스템 토폴로지(200)가 도시된다. 도 1과 유사하게, 시스템 토폴로지(200)는 사용자 공간(110), 커널 공간(120), 데이터베이스/사용자 애플리케이션(112), 파일 시스템(128), 블록 레이어(130), SCSI 레이어(140), 저장 시스템 드라이버(142), 저장 시스템(150) 및 저장 제어기(152)를 포함할 수 있다. 파일 시스템(128)은 파일 시스템 아이노드(인덱스 노드) 캐시(229A) 및 버퍼 캐시(229B)를 추가로 포함할 수 있다. 시스템 토폴로지(200)는 힌트 엔진(260)을 또한 포함할 수 있다.
바람직한 구현예에서, 저장 시스템(150)은 계층화된 저장 시스템 또는 MegaRAID
Figure pat00002
저장 시스템과 같은 계층화된 RAID(독립 디스크의 중복 어레이) 저장 시스템을 포함할 수 있다. 계층화된 저장 시스템 또는 계층화된 RAID 저장 시스템은 하나 이상의 HDD, 하나 이상의 SSD 또는 하나 이상의 다른 저장 디바이스를 포함할 수 있다. 계층화된 저장 시스템 또는 계층화된 RAID 저장 시스템은 하나 이상의 메모리, 하나 이상의 캐시 및 하나 이상의 프로세서, 뿐만 아니라 소프트웨어 또는 펌웨어를 추가로 포함할 수 있다. 바람직한 구현예에서, 저장 제어기(152)는 MegaRAID
Figure pat00003
CacheCade 소프트웨어의 버전(예를 들어, MegaRAID
Figure pat00004
Cachecade Pro v. 2.0)을 실행하는 MegaRAID
Figure pat00005
CacheCade 저장 제어기 카드를 포함할 수 있다. 부가적으로, 저장 시스템 드라이버 또는 저장 제어기 드라이버(예를 들어, 142)가 저장 제어기(152) 또는 저장 시스템(150)과 인터페이스하도록 구성될 수 있고, 저장 시스템 드라이버(142)는 SCSI 레이어 상에 접속된 디바이스 또는 시스템 상에 존재할 수 있다. 대안적으로, 저장 시스템 드라이버(142)는 저장 제어기(152) 상에 위치될 수 있다. 저장 시스템 및 저장 제어기는 핫 데이터가 SSD와 같은 더 신속하게 액세스 가능한 저장 유형 내에 저장되고 더 콜드 데이터가 표준 HDD와 같은 덜 신속하게 액세스 가능한 저장 유형 내에 저장되도록 계층화된 저장 시스템 내에 구성될 수 있다.
도 2를 계속 참조하면, 힌트 엔진(260)은 파일 시스템(128) 레이어로부터 블록 레이어(130)로 통과된 I/O 요청으로부터 힌트를 수신하고, 유도하거나 인터셉트하도록 구성될 수 있다. 힌트 엔진이 그로부터 힌트를 인터셉트하고 유도할 수 있는 I/O 요청은 파일 판독, 기록, 첨부, 삭제, 이동, 카피 등을 포함할 수 있다. 힌트 엔진(260)은 파일 시스템(128) 레이어 내에 또는 아래에 존재할 수 있다. 부가적으로, 힌트 엔진(260)은 블록 레이어(130) 내에 또는 위에 존재할 수 있다. 예를 들어, 힌트 엔진(260)은 파일 시스템(128) 레이어와 블록 레이어(130) 사이에 존재할 수 있다. 힌트 엔진은 파일 시스템 문맥 정보를 위한 I/O 요청을 검사하도록 구성될 수 있다. 예를 들어, 파일 시스템 문맥 정보는 파일 시스템 메타데이터, 파일 시스템 액세스 패턴, 파일 시스템 아이노드(인덱스 노드), 파일 시스템 브이노드(가상 인덱스 노드), 파일 시스템 슈퍼 블록, 특정 중요도를 갖고 파일 시스템 레이아웃에 영향을 미치거나 반영하는 저널링 파일 시스템 블록(그룹 디스크립터 테이블, 블록 비트맵, 아이노드 비트맵 또는 아이노드 테이블과 같은)의 트랜잭션 로그 또는 특정 중요도를 갖고 파일 시스템 레이아웃에 영향을 미치거나 반영하는 메타파일(아이노드 메타파일과 같은) 중 적어도 하나를 포함할 수 있다.
시스템 토폴로지(200)의 데이터베이스/사용자 애플리케이션(112)은 판독/기록 요청을 갖는 애플리케이션 힌트를 통과시킬 수 있다. 예를 들어, 애플리케이션은 사용자 공간(110)으로부터 커널 공간(120)의 레이어[예를 들어, 파일 시스템(128) 레이어, 가상 파일 시스템 레이어(126), 시스템 호출 인터페이스(124) 또는 블록 레이어(130)]로 판독/기록 요청을 송신하는 중, 전 또는 후에 애플리케이션 힌트를 통과시킬 수 있다. 애플리케이션 힌트는 판독/기록 요청의 부분으로서 통과될 수 있고 또는 판독/기록 요청 전 또는 후에 송신된 하나 이상의 개별 신호, 전송, 통지 또는 메시지를 포함할 수 있다.
도 3을 참조하면, 필터 드라이버(300)의 개략 실시예가 도시되어 있다. 필터 드라이버(300)는 힌트 엔진(260) 및 통신 구성 요소(330)를 포함할 수 있다. 필터 드라이버의 힌트 엔진은 파일 시스템 힌트(310) 또는 애플리케이션 구동 힌트(320) 중 적어도 하나를 유도하도록 구성될 수 있다.
필터 드라이버(300) 또는 필터 드라이버(300)의 힌트 엔진(260)은 파일 시스템 힌트(310)를 생성하도록 구성될 수 있다. 필터 드라이버(300) 또는 힌트 엔진(260)은 파일 시스템(128)으로부터 송신된 판독/기록 요청을 스누프, 인터셉트 또는 수신함으로써 파일 시스템(128)으로부터 정보를 얻도록 구성될 수도 있다. 힌트 엔진(260)은 이어서 파일 시스템(128)으로부터 얻어진 정보로부터 파일 시스템 힌트(310)를 생성하거나 유도할 수 있다.
필터 드라이버(300) 또는 필터 드라이버(300)의 힌트 엔진(260)은 애플리케이션 구동 힌트(320)를 생성하도록 구성될 수 있다. 힌트 엔진(260) 또는 필터 드라이버(300)는 애플리케이션이 통신을 위해 사용하는 API(애플리케이션 프로그램 인터페이스)를 노출하거나 ioctls(I/O 제어부)를 노출함으로써 애플리케이션 구동 힌트(320)를 생성할 수 있다.
필터 드라이버는 파일 시스템 힌트(310) 또는 애플리케이션 구동 힌트(320) 중 적어도 하나를 저장 시스템(예를 들어, 150)으로 하향 송신하거나 통과시키도록 구성된 통신 구성 요소(330)를 포함할 수 있다. 통신 구성 요소(330)는 힌트(즉, 파일 시스템 및/또는 애플리케이션 구동 힌트)를 저장 시스템(예를 들어, 150)으로 하향으로 단지 송신하거나 주로 송신하도록 구성될 수 있고, 대안적으로, 필터 드라이버(300)의 통신 구성 요소(330)는 정상 요청(예를 들어, 판독/기록 I/O 요청)의 부분으로서 또는 그 내에 포함된 힌트를 송신하도록 구성될 수 있고, 또한 통신 구성 요소는 힌트를 저장 시스템에 송신하거나 통과시키고 표준 판독/기록 요청을 송신하거나 릴레이하도록 구성될 수 있다. 예를 들어, 필터 드라이버(300)의 통신 구성 요소(330)는 판독/기록 요청 전, 중, 후 또는 이내에 힌트를 송신하거나 통과시키도록 구성될 수 있다. 다른 예로서, 몇몇 구현예에서, 하나 이상의 힌트는 I/O 요청의 블록의 미사용 필드 내에 부착되고, 삽입되고, 주입되거나 배치될 수 있어, 이에 의해 하나 이상의 힌트는 I/O 요청의 부분으로서 저장 시스템(예를 들어, 150)으로 하향 통과되거나 하향 송신될 수 있다.
몇몇 구현예에서, I/O 요청이 어떠한 미사용 필드도 갖지 않거나 적절한 크기 또는 용량을 갖는 미사용 필드를 갖지 않을 때, 힌트는 이후의 메시지에서 저장 시스템(150)으로 하향 통과될 수 있고 또는 힌트는 후속의 I/O 요청의 미사용 필드에서 하향 통과될 수 있다. 힌트가 후속 메시지로서 하향 통과될 때 또는 후속의 I/O 요청의 미사용 필드 내에 배치될 때, 힌트는 연관된 오프셋 표시기를 포함하거나 동반될 수 있고, 오프셋 표시기는 힌트가 속하는 실제 I/O 요청 또는 힌트가 속하는 실제 I/O 요청으로부터 힌트를 오프셋하는 다량의 또는 다수의 I/O 요청 중 적어도 하나를 표시한다. 저장 시스템 또는 저장 제어기는 이어서 저장 제어기 또는 저장 시스템이 I/O 요청 및 힌트의 연관 힌트(들) 또는 부분을 수신함에 따라 분리된 후속의 힌트를 적절한 I/O 요청에 재조합, 재통합 또는 재연관시킬 수 있다.
도 4를 참조하면, I/O 요청 및 파일 시스템 힌트를 위한 개략 흐름도가 도시되어 있고, 단계 401 내지 406 중 임의의 하나 또는 모두를 포함할 수 있다. 이하에 설명되는 바와 같은 단계 401 내지 406의 순서는 단지 예시적인 것이고, 몇몇 구현예에서 단계 401 내지 406의 순서는 상이하게 수행될 수 있고 또는 단계들은 동시에 또는 동시적으로 수행되는 것이 주목되어야 한다. 도 4에 도시된 바와 같이, 파일 드라이버(300)는 파일 시스템(128) 레이어와 블록 레이어(130) 사이에 위치될 수 있다.
단계 401은 파일 시스템(128)이 버퍼 또는 캐시[예를 들어, 파일 시스템 아이노드(인덱스 노드) 캐시(229A) 또는 버퍼 캐시(229B)]로부터 I/O 요청을 발행하는 것을 포함할 수 있다. 단계 401은 포함된 내부 힌트 엔진(예를 들어, 260)을 갖는 필터 드라이버(300)가 파일 시스템으로부터 발행된 I/O 요청을 인터셉트하는 것을 추가로 포함할 수 있다.
단계 402에서, I/O 요청은 블록에 의해 아이노드(인덱스 노드) 및/또는 브이노드[가상 파일 시스템(들)의 인덱스 노드]를 참조할 수 있기 때문에, 내부 힌트 엔진(예를 들어, 260)은 아이노드 및/또는 브이노드 맵핑을 수행할 수 있다. 이 아이노드 및/또는 브이노드 맵핑은 파일 시스템(128) 및/또는 가상 파일 시스템(예를 들어, 126)의 특정 I/O 요청 또는 오버아칭(overarching) 구조에 관련한 정보를 제공할 수 있다. 더욱이, 특정 I/O 요청에 속하는 아이노드 및/또는 브이노드는 적어도 I/O 요청이 완료될 때까지 변경되지 않을 것이기 때문에, 맵핑으로부터 얻어진 정보는 적어도 I/O 요청이 완료될 때까지 정확하게 유지될 것이다.
단계 403에서, 필터 드라이버(300) 또는 필터 드라이버의 내부 힌트 엔진(예를 들어, 260)은 파일 시스템(128) 레이어 내의 아이노드 및/또는 브이노드의 속성을 룩업하고, 룩업하기 위한 요청을 액세스하거나 송신할 수 있다.
단계 404에서, 파일 시스템 레이어는 필터 드라이버(300) 또는 필터 드라이버(300)의 내부 힌트 엔진(260)에 의해 수신될 파일 시스템(128) 레이어의 아이노드 및/또는 브이노드 속성을 송신할 수 있다. 아이노드/브이노드의 몇몇 속성은 아이노드/브이노드 넘버, 아이노드/브이노드 플래그 및 아이노드/브이노드 유형을 포함할 수 있다.
단계 405에서, 내부 힌트 엔진(예를 들어, 260)은 슈퍼 블록, 메타아이노드(메타-인덱스 노드) 및 메타브이노드(메타-가상 인덱스 노드)와 같은 블록의 다양한 플래그를 분석함으로써 힌트(예를 들어, 파일 시스템 힌트)를 생성할 수 있다. 메타 아이노드/메타 브이노드는 하나의 파일 시스템이 그 데이터를 더 양호하게 관리하기 위해 유지하는 내부 아이노드/브이노드이다. 예를 들어, 내부 힌트 엔진(예를 들어, 260)은 특정 블록이 특정 블록의 플래그 또는 블록 넘버에 기초하는 슈퍼 블록인지 여부를 검사하고/하거나 판정할 수 있다. 추가적으로, 예컨대, 내부 힌트 엔진(예를 들어, 260)은 특정 블록이 특정 블록의 플래그 또는 블록 넘버에 기초하는 메타아이노드 및/또는 메타브이노드인지 여부를 검사하거나 판정할 수 있다. 내부 힌트 엔진(예를 들어, 260)은 이어서 아이노드 및/또는 브이노드 속성을 분석한 후에 힌트를 구성하거나 생성할 수 있다.
단계 406에서, 필터 드라이버, 필터 드라이버의 내부 힌트 엔진 또는 필터 드라이버의 통신 구성 요소는 생성된 힌트를 SCSI 레이어(예를 들어, 140)를 경유하여 저장 시스템 드라이버(예를 들어, 142), 저장 제어기(예를 들어, 152) 또는 저장 시스템(예를 들어, 150)으로 하향 송신하거나 통과할 수 있다.
도 4를 더 참조하여, 필터 드라이버(300) 또는 필터 드라이버(300)의 내부 힌트 엔진(260)은 해시 테이블(410)을 포함할 수 있다. 필터 드라이버(300) 또는 필터 드라이버(300)의 내부 힌트 엔진(260)은 LBA(논리 블록 어드레스)에 대해 생성된 힌트(예를 들어, 파일 시스템 힌트)를 저장하기 위해 해시 테이블(410)을 유지할 수 있다. 생성된 힌트는 이들이 생성됨에 따라 해시 테이블(410) 내에 저장될 수 있다. 해시 테이블(410)의 엔트리는 내부 힌트 엔진이 해시 테이블 내의 현존하는 엔트리에 관련된 부가의 힌트를 생성하거나 부가의 정보를 얻음에 따라 업데이트될 수 있다.
몇몇 파일 시스템 메타데이터 힌트는 슈퍼 블록 및 메타파일에 관련된 정보를 포함할 수 있다.
슈퍼 블록은 통상적으로 일관성을 유지하기 위해 매우 빈번하게 플러시된다. 따라서, 슈퍼 블록과 관련된 파일 시스템 메타데이터는 매우 핫(hot)한 것으로서 간주될 수 있다. 슈퍼 블록은 통상적으로 대부분의 파일 시스템을 가로질러 양호하게 규정된다. 통상적으로, 슈퍼 블록은 블록 넘버 자체로부터 검출될 수 있다.
메타파일과 관련하여, 모든 또는 대부분의 메타파일은 특정 파일 시스템을 위한 보류된 아이노드 넘버를 갖거나 연관된다. 메타파일은 통상적으로 크지 않지만, 대형 파일 시스템에서 메타파일은 커질 수 있다. 파일 시스템이 대형 메타파일을 포함하는 상황 하에서, 필터 드라이버 또는 힌트 엔진은 아이노드 맵 메타파일 또는 블록 맵 메타파일과 같은 특정 메타파일에 관련된 힌트만을 생성하도록 선택할 수 있다. 메타파일과 관련된 파일 시스템 메타데이터 힌트는 예를 들어, 아이노드 맵 메타파일 또는 블록 맵 메타파일을 포함할 수 있다. 메타파일(예를 들어, 아이노드 맵 메타파일 또는 블록 맵 메타파일)에 관련된 파일 시스템 메타데이터 힌트는 매우 핫한 것으로서 간주될 수 있다.
몇몇 파일 시스템 I/O 관련 힌트는 교체 기록, 회수 기록, 블록 사전 할당 및 판독에 관련된 정보를 포함할 수 있다.
교체 기록 I/O 요청은 리소스를 자유롭게 하기 위해 데이터가 기록되는 가능성을 나타내는 저장 또는 기록 하드닝(hardening)으로 파일 시스템 범위 데이터 플러시 중에 발생할 수 있다. 따라서, 파일 시스템 I/O 관련 힌트는 I/O(예를 들어, 기록) 요청이 신속하게 완료되어야 하기 때문에 핫한 것으로서 간주될 수 있다. 블록 레이어로 통과된 플래그는 교체 기록을 나타낼 수 있다.
회수 기록 I/O 요청은 통상적으로 크래시가 발생하기 전에 데이터 영속성을 보장하기 위해 사용자에 의해 트리거링될 수 있고, 크래시의 경우에 힌트는 제공되지 않을 수도 있다.
애플리케이션은 이후의 사용을 위해 블록을 사전 할당한다. 블록 사전 할당 요청은 사전 할당 요청이 첨부 모드에서 발생하고 일반적으로 할당될 다수의 블록을 수반하기 때문에 콜드(cold)한 것으로서 고려될 수 있다.
판독 I/O 요청과 관련하여, 통상적으로 모든 파일 시스템은 특정 최신 기반 알고리즘을 따르는 그 자신의 버퍼 캐시를 갖고, 따라서 힌트는 판독 I/O 요청에 관련된 데이터가 곧 액세스되지 않을 수 있다는 것을 나타내는 정보를 포함할 수 있다. 따라서, 판독 I/O 요청은 콜드한 것으로서 고려될 수 있다.
도 5를 참조하면, I/O 요청 및 애플리케이션 힌트를 위한 개략 흐름도가 도시되어 있고 단계 501 내지 506 중 임의의 하나 또는 모두를 포함할 수 있다. 도 5에 도시된 바와 같이, 필터 드라이버(예를 들어, 300)는 커널 공간(120) 내의 파일 시스템(128) 레이어와 블록 레이어(130) 사이에 위치될 수 있다. 파일 드라이버는 외부 힌트 엔진(예를 들어, 560 또는 260)을 구비하고, 포함하거나 연관될 수 있다. 사용자 공간(110)의 데이터베이스/사용자 애플리케이션 레이어(예를 들어, 112)는 하나 이상의 데이터베이스(예를 들어, 514), 하나 이상의 애플리케이션(예를 들어, 516) 및 하나 이상의 API(애플리케이션 프로그래밍 인터페이스) 라이브러리(예를 들어, 512)를 포함할 수 있다.
단계 501은 I/O 요청을 송신하기 위해 API 라이브러리(512)를 사용하는(예를 들어, 액세스하거나 인터페이스함) 애플리케이션 또는 데이터베이스 애플리케이션을 포함할 수 있다. 부가적으로, 몇몇 데이터베이스는 블록 구조의 사전 존재 지식을 갖는 데이터베이스가 블록 레이어(예를 들어, 130)를 갖는 직접 I/O를 수행하도록 구성될 수 있도록 블록 구조의 사전 존재 지식을 갖고 구성될 수 있다. 다른 데이터베이스는 블록 구조의 사전 존재 지식을 갖지 않을 수도 있다. 다른 한편으로, 애플리케이션은 통상적으로 블록 구조의 사전 존재 지식을 갖지 않을 수 있다.
단계 502에서, 하나 이상의 ioctl(I/O 제어) 호출은 드라이버[예를 들어, 필터 드라이버(예를 들어, 300) 또는 저장 시스템 드라이버(예를 들어, 142)]에 송신될 수 있다. ioctls(즉, ioctl 호출)는 디바이스 특정 I/O 동작을 위한 시스템 호출일 수 있다. 예를 들어, ioctl 또는 ioctl 인터페이스는 사용자 공간(예를 들어, 110)이 디바이스 드라이버[예를 들어, 저장 시스템 드라이버(142) 또는 필터 드라이버(300)]와 통신할 수 있는 단일 시스템 호출을 포함할 수 있다. 부가적으로, ioctls를 경유하여 디바이스 드라이버에 송신된 요청은 ioctl 시스템 호출에 관련하여 벡터화될 수 있고, ioctl 시스템 호출은 디바이스 및 요청 넘버에 대한 핸들을 포함할 수 있다.
단계 503에서, 필터 드라이버(예를 들어, 300) 또는 필터 드라이버의 외부 힌트 엔진(예를 들어, 260)은 ioctls를 프로세싱할 수 있다. 외부 힌트 엔진(예를 들어, 560 또는 260)은 또한 ioctls 자체를 저장할 수 있고 또는 ioctls를 프로세싱하는 것으로부터 얻어진 정보를 저장할 수 있다. ioctl 관련 정보는 이후의 사용을 위해 저장될 수 있다. 예를 들어, ioctl 관련 정보는 이후의 참조를 위해 해시 테이블(예를 들어, 510 또는 410) 내에 저장될 수 있다.
단계 504에서, 필터 드라이버(예를 들어, 300) 또는 필터 드라이버(예를 들어, 300)의 외부 힌트 엔진(예를 들어, 560 또는 260)은 I/O 요청을 수신할 수 있다. I/O 요청을 수신하는 것에 응답하여 또는 I/O 요청이 수신될 때, 외부 힌트 엔진(예를 들어, 560 또는 260)은 사용자 제공된 정보를 룩업하거나 액세스할 수 있다. 외부 힌트 엔진(예를 들어, 560 또는 260)은 이어서 힌트(예를 들어, 애플리케이션 구동 힌트) 또는 힌트들을 생성하기 위해 사용자 제공된 정보를 분석할 수 있다. 외부 힌트 엔진(예를 들어, 560 또는 260)은 생성된 힌트 또는 힌트들을 해시 테이블(예를 들어, 510 또는 410) 내에 저장할 수 있다.
단계 505에서, 외부 힌트 엔진(예를 들어, 560 또는 260)은 파일 시스템 힌트 메커니즘에 피드백해야 하는지 여부를 판정할 수 있다. 외부 힌트 엔진(예를 들어, 560 또는 260)이 불충분한 사용자 제공 정보(예를 들어, 사용자 제공 정보가 없거나 매우 적은 사용자 제공 정보)가 수신되어 힌트가 발생될 수 없다고 판정하면, 외부 힌트 엔진(예를 들어, 560 또는 260)은 특정 I/O 요청 또는 ioctl에 속하는 시스템 힌트 메커니즘(예를 들어, 파일 시스템 힌트를 생성하도록 구성된 필터 드라이버의 내부 힌트 엔진)에 대체해야 한다고 결정할 수 있다. 마찬가지로, 외부 힌트 엔진(예를 들어, 560 또는 260)은 힌트가 사용자 제공 정보로부터 발생될 수 있으면 또는 관련 또는 연관 파일 시스템 힌트가 존재하지 않으면 파일 시스템 힌트 메커니즘에 대체하지 않는 것으로 결정할 수 있다. 부가적으로, 외부 힌트 엔진은 사용자 제공 정보로부터 발생된 힌트의 유용성 비교적 낮은 것으로 판정하거나 판단할 수 있고, 사용자 제공 정보로부터 발생된 힌트를 파일 시스템 힌트 메커니즘에 의해 생성된 파일 시스템 힌트로 보충하거나 증대하도록 판단할 수 있다. 몇몇 구현예에서, 가능할 때(예를 들어, 파일 시스템 힌트 및 연관 애플리케이션 구동 힌트가 존재할 때), 외부 힌트 엔진은 사용자 제공 정보로부터 발생된 힌트를 파일 시스템 힌트 메커니즘에 의해 발생된 파일 시스템 힌트로 보충하거나 증대하도록 항상 또는 거의 항상 선택할 수 있다. 다른 구현예에서, 외부 힌트 엔진은 단지 특정 파일 시스템 힌트가 특정 애플리케이션 구동 힌트의 가치 또는 유용성에 기여하거나 추가하면 증대하거나 보충하도록 판정할 수 있다.
단계 506에서, 힌트는 저장 시스템 드라이버에 송신되거나 전달될 수 있다. 필터 드라이버, 필터 드라이버의 외부 힌트 엔진 또는 필터 드라이버의 통신 구성 요소는 생성된 힌트를 SCSI 레이어(예를 들어, 140)를 경유하여 저장 시스템 드라이버(예를 들어, 142), 저장 제어기(예를 들어, 152) 또는 저장 시스템(예를 들어, 150)에 송신하거나 전달할 수 있다.
도 5를 더 참조하면, 필터 드라이버(예를 들어, 300) 또는 필터 드라이버(예를 들어, 300)의 외부 힌트 엔진(예를 들어, 560 또는 260)은 해시 테이블(예를 들어, 510 또는 410)을 포함할 수 있다. 필터 드라이버(예를 들어, 300) 또는 필터 드라이버(예를 들어, 300)의 외부 힌트 엔진(예를 들어, 560 또는 260)은 LBA(논리 블록 어드레스)에 대한 생성된 힌트(예를 들어, 파일 시스템 힌트)를 저장하기 위해 해시 테이블(예를 들어, 510 또는 410)을 유지할 수 있다. 생성된 힌트는 이들이 생성됨에 따라 해시 테이블(예를 들어, 510 또는 410) 내에 저장될 수 있다. 해시 테이블(예를 들어, 510 또는 410)의 엔트리는 외부 힌트가 해시 테이블 내의 현존하는 엔트리에 관한 부가의 힌트를 생성하거나 부가의 정보를 얻음에 따라 업데이트될 수 있다.
몇몇 애플리케이션 특정 힌트는 핫하거나 콜드한 특정 파일을 규정하는 것에 관련된 정보를 포함할 수 있어, 블록을 통해 애플리케이션의 핫 데이터를 규정하거나 실제 I/O 전에 문맥을 설정하거나 비설정한다.
핫하거나 콜드한 특정 파일을 규정하는 것에 관련하여, API는 그 데이터가 핫/콜드할 수 있는 파일명 또는 특정 확장자를 갖는 파일명을 취할 수 있다. 애플리케이션 특정 메타데이터를 규정하는 것은 매우 유용할 수 있다. 경로명은 힌팅을 위한 아이노드 넘버로 번역될 수 있다.
블록을 통해 애플리케이션의 핫 데이터를 규정하는 것과 관련하여, API는 핫/콜드 데이터로서 설명될 수 있는 블록의 범위를 취할 수 있다. 블록을 통해 애플리케이션의 핫 데이터를 규정하는 것은 애플리케이션이 블록의 지식을 갖는 것이 중요한 경우에 유용할 수 있다. 힌팅은 블록 넘버의 세트를 포함할 수 있다.
실제 I/O 전에 문맥을 설정하거나 비설정하는 것과 관련하여, 문맥의 설정/비설정은 다가오는 I/O가 핫/콜드하다고 언급할 수 있다. 이는 저장을 위한 독립형 애플리케이션을 포함하거나 또는 사용자가 I/O에 앞서 데이터의 중요성을 규정할 수 있는 애플리케이션에 유용할 수 있다. 힌팅은 적어도 하나의 프로세스 식별자 넘버를 포함할 수 있다.
더욱이, 파일 시스템 힌트(예를 들어, 전술된 파일 시스템 힌트)는 애플리케이션 구동 힌팅의 효용성과 관련하여 또는 이를 향상시키도록 이용될 수 있다. 애플리케이션 힌팅은 애플리케이션 즉흥 힌팅을 포함할 수 있다. 애플리케이션 즉흥 힌팅은 하나 이상의 API를 노출하는 것과, 파일 시스템 힌트로부터 유도된 정보를 통합하도록 디폴트 힌팅 메커니즘을 오버라이딩하는 것을 포함할 수 있다. 애플리케이션 즉흥 힌팅은 파일 시스템 힌트 수신, 파일 시스템 힌트 액세스 또는 파일 시스템 힌트를 포함하는 해시 테이블 액세스를 통해 구현될 수 있다. 애플리케이션 즉흥 힌팅은 파일 시스템 힌트를 포함하는 해시 테이블에 액세스하는 것과, 파일 시스템 힌트에 기초하여 하나 이상의 애플리케이션 힌트를 생성하는 것을 포함할 수 있다.
도 6 및 도 7을 참조하면, 힌팅 파일 드라이버(610)로부터 저장 시스템(150)으로 힌트를 통신하는 상이한 방법을 도시하는 개략 흐름도가 도시된다. 도 6 및 도 7은 힌팅 필터 드라이버(610), 블록 레이어(130), 블록 레이어(130)로부터 SCSI 레이어(140)로 하나 또는 복수의 LBA를 포함하는 요청(132)을 도시한다. 힌팅 필터 드라이버(610)는 전술된 필터 드라이버(예를 들어, 300)의 기능을 포함하거나 이 필터 드라이버를 포함할 수 있다. 힌팅 필터 드라이버(610)는 블록 레이어(130) 위에 위치될 수 있다. 힌팅 필터 드라이버는 내부 힌트 엔진 및/또는 외부 힌트 엔진(예를 들어, 560 또는 260)과 같은 하나 이상의 힌트 엔진의 기능을 구비하고, 이러한 하나 이상의 힌트 엔진을 갖고, 포함하거나 연관될 수 있다.
도 6 및 도 7에서, 힌팅 필터 드라이버(610)는 내부 또는 외부 입력으로부터 힌트를 생성하는데 사용된 정보를 수신할 수 있다. 예를 들어, 내부 입력은 파일 시스템으로부터 수신된 I/O 요청을 포함할 수 있고, 내부 힌트 엔진으로 파일 시스템 힌트를 생성하는데 사용될 수 있다. 또한, 예를 들어, 외부 입력은 사용자 공간의 애플리케이션 또는 데이터베이스로부터 수신된 ioctls를 포함할 수 있고, 외부 힌트 엔진으로 애플리케이션 구동 힌트를 생성하는데 사용될 수 있다.
이제 도 6을 참조하면, 힌팅 필터 드라이버(610)로부터 저장 시스템(150)으로 힌트를 통신하는 제 1 접근법이 도시되어 있다. 제 1 접근법에서, 힌팅 필터 드라이버(610)는 하나 이상의 힌트를 하나 이상의 블록의 하나 이상의 현존하는 미사용 필드에 부착할 수 있고, 이어서 SCSI 레이어(140)를 경유하여 저장 시스템 드라이버(142), 저장 제어기(152) 또는 저장 시스템(150)에 I/O 요청(예를 들어, 기록 요청)의 부분으로서 함께 힌트 및 블록을 하향 송신할 수 있다. 예를 들어, 파일 시스템 힌트는 저장 드라이버에 하향 송신된 블록의 미사용 필드에 파일 시스템 힌트를 부착함으로써 힌팅 필터 드라이버(610)로부터 저장 시스템 드라이버(예를 들어, 142)로 통과될 수 있다. 저장 드라이버는 이어서 I/O 요청의 부분으로서 블록의 미사용 필드에 부착된 힌트를 수신할 수 있다. 저장 드라이버(142)는 이어서 I/O 프레임의 필드에 힌트를 부착하고 부착된 힌트를 갖는 I/O 프레임을 저장 제어기(152) 및/또는 저장 시스템(150)으로 하향 통과시킬 수 있다. 본 발명의 몇몇 구현예에서, 저장 드라이버(142)는 메시지 통과 기술(MPT)을 사용하여 통신하도록 구성된 저장 드라이버를 포함할 수 있다. 이 접근법의 장점은 힌트가 데이터와 함께 체류한다는 것이다.
힌팅 필터 드라이버로부터 특정 힌트를 통신하는 몇몇 구현예는 수정된, 혼성 또는 대안 제 1 접근법을 포함할 수 있다. 예를 들어, 특정 힌트를 통신하는 몇몇 구현예는, 힌트가 연관되어 있는 요청의 블록이 임의의 미사용 필드를 갖지 않거나 적절한 크기의 필드를 갖지 않으면, 이후의 요청의 블록의 미사용 필드의 부분으로서 힌트를 부착하는 것을 포함할 수 있다. I/O 요청이 어떠한 미사용 필드도 갖지 않거나 또는 적절한 크기 또는 용량을 갖는 미사용 필드를 갖지 않을 때, 힌트는 이후의 요청시에 저장 레벨로 하향 통과될 수 있고, 또는 힌트는 후속의 I/O 요청의 미사용 필드에서 하향 통과될 수 있다. 힌트가 후속의 메시지로서 하향 통과될 때 또는 후속의 I/O 요청의 미사용 필드 내에 배치될 때, 힌트는 연관된 오프셋 표시기를 포함하거나 수반할 수 있고, 오프셋 표시기는 힌트가 속하는 실제 I/O 요청, 또는 힌트가 속하는 실제 I/O 요청으로부터 힌트를 오프셋하는 I/O 요청의 시간량 또는 수 중 적어도 하나를 나타낸다. 저장 시스템 또는 저장 제어기는 이어서 저장 제어기 또는 저장 시스템이 I/O 요청 및 연관 힌트(들) 또는 힌트의 부분을 수신함에 따라 적절한 I/O 요청에 분리된 후속의 힌트를 재조합하고, 재통합하거나 재연관시킬 수 있다.
이제 도 7을 참조하면, 힌팅 필터 드라이버(610)로부터 저장 시스템(150)으로 힌트를 통신하는 제 2 접근법이 도시된다. 제 2 접근법에서, 힌팅 필터 드라이버는 I/O 요청 및 힌트를 저장 시스템 드라이버(142), 저장 제어기(152) 또는 저장 시스템(150)으로 개별적으로 하향 송신할 수 있다. 몇몇 구현예에서, 힌팅 필터 드라이버는 I/O 요청을 저장 레벨로 하향 송신할 수 있고, 힌팅 필터 드라이버는 이어서 I/O 요청과 연관된 힌트에 대한 저장 레벨로부터 요청을 수신하기를 대기할 수 있고, 저장 레벨로부터 힌트 요청의 수신시에, 힌팅 필터 드라이버는 힌트를 저장 레벨로 하향 송신할 수 있다. 즉, 힌팅 필터 드라이버(610)는 저장 시스템 드라이버(142), 저장 제어기(152) 또는 저장 시스템(150)에 의해 요청될 때, 힌트를 SCSI 레이어(140)를 경유하여 저장 시스템 드라이버(142), 저장 제어기(152) 또는 저장 시스템(150)으로 하향 송신할 수 있다. 따라서, 저장 드라이버(142)는 I/O 요청을 수신하도록 구성될 수 있고, 힌팅 필터 드라이버(610)로부터 힌트를 요청하는 호를 송신하도록 구성될 수 있다. 힌트 및 연관 I/O 요청의 수신시에, 저장 드라이버(142)는 I/O 프레임의 필드에 힌트를 부착하고 부착된 힌트를 갖는 I/O 프레임을 저장 제어기(152) 및/또는 저장 시스템(150)으로 통과시킬 수 있다. 본 발명의 몇몇 구현예에서, 저장 드라이버(142)는 MPT 프로토콜의 버전을 사용하여 통신하도록 구성된 저장 드라이버를 포함할 수 있다. 제 2 접근법은 미사용 또는 스페어 필드를 갖는 I/O 요청의 블록에 대한 종속성을 요구하지 않는다.
이제, 도 8을 참조하면, 힌트 프로세싱과 연관된 흐름도가 도시된다. 힌트 프로세싱은 예를 들어 저장 드라이버(142), 저장 제어기(152), 저장 시스템(150) 등에 의해 또는 이들에서 힌트 프로세싱 구성 요소 또는 모듈에 의해 저장 레벨에서 하드웨어, 펌웨어 또는 소프트웨어에 의해 수행될 수 있다. 바람직한 실시예에서, 힌팅 프로세싱은 저장 제어기(152) 상에 펌웨어에 의해 수행될 수 있다. 힌트 프로세싱이 힌트를 수신함에 따라, 힌트 프로세싱 구성 요소는 힌트를 프로세싱하기 위한 방법(800)을 수행할 수 있다. 방법(800)은 단계 810, 820, 830, 831, 840, 841, 850, 851 및 860 중 임의의 하나 또는 모두를 포함할 수 있다.
단계 810은 힌트 프로세싱 구성 요소 또는 모듈이 힌트를 프로세싱하거나 무시해야 하는지 여부를 검사하고 그리고/또는 판정하는 것을 포함할 수 있다. 힌트 프로세싱 구성 요소 또는 모듈이 힌트가 무시되기보다는 프로세싱되어야 한다고 판정하면, 힌트 프로세싱 구성 요소 또는 모듈은 이어서 단계 820으로 진행할 수 있다. 힌트 프로세싱 구성 요소 또는 모듈이 힌트가 무시되어야 한다고 판정하면, 방법(800)은 이어서 단계 860으로 진행하여 규칙적인 I/O 요청 저장 알고리즘을 진행하는 단계를 포함할 수 있다.
단계 820은 특정 힌트의 중요도 또는 "핫트니스(hotness)"를 판정하기 위해 특정 힌트를 검토하고 그리고/또는 분석하여 힌트 프로세싱 구성 요소 또는 모듈이 단계 830, 831, 840, 841, 850, 851 중 적어도 하나를 통한 특정 힌트에 대한 히트 맵 인덱스 값 또는 도 8에 도시되지 않은 부가의 중요도 또는 "핫트니스" 판정을 설정할 수 있게 하는 단계를 포함한다.
단계 830에서, 힌트 프로세싱 구성 요소 또는 모듈이 특정 힌트가 매우 높은 중요도를 갖거나 "매우 핫"한 것으로 판정하면, 힌트 프로세싱 구성 요소 또는 모듈은 단계 831에서 특정 히트 인덱스 값을 매우 큰 수로 설정하고, 특정 힌트와 연관된 블록 또는 블록을 배치하고, 특정 힌트와 연관된 블록 또는 블록들을 피닝할 수 있다.
단계 840에서, 힌트 프로세싱 구성 요소 또는 모듈이 특정 힌트가 높은 중요도를 갖거나 "핫"한 것으로 판정하면, 힌트 프로세싱 구성 요소 또는 모듈은 단계 841에서 특정 히트 인덱스 값을 적당하게 큰 수로 설정하고 특정 힌트와 연관된 블록 또는 블록들을 배치할 수 있다.
단계 850에서, 힌트 프로세싱 구성 요소 또는 모듈이 특정 힌트를 낮은 중요도 또는 "콜드"인 것으로 판정하면, 힌트 프로세싱 구성 요소 또는 모듈은 단계 851에서 특정 히트 인덱스 값을 매운 낮은 수로 설정하고 특정 힌트와 연관된 블록 또는 블록들을 더 저속 저장 위치(예를 들어, 더 저속 저장 디바이스) 내에 배치할 수 있다.
단계 830, 831, 840, 841, 850 및 851은 단지 예시적인 것이고, 특정 히트 인덱스 값은 정수 또는 비정수값의 임의의 범위의 값으로 설정될 수 있다는 것이 주목되어야 한다.
단계 830, 831, 840, 841, 850, 851 또는 860 중 적어도 하나의 완료 후에, 방법은 규칙적인 I/O 요청 저장 알고리즘으로 진행하는 단계 860을 포함할 수 있다.
도 9를 참조하면, 힌트를 생성하고 통신하는 것과 연관된 구체화된 방법(900)이 도시되어 있다. 방법(900)의 실시예는 컴퓨팅 디바이스(필터 드라이버의 프로세서와 같은), 힌트 엔진, 다른 컴퓨팅 디바이스, 다른 컴퓨터 구성 요소 또는 다른 소프트웨어, 펌웨어 또는 미들웨어 상에서 실행되는 필터 드라이버, 소프트웨어 또는 펌웨어에 의해 수행될 수 있다는 것이 고려된다. 방법(900)은 단계 910, 920, 930, 940, 950 , 960 또는 970 중 임의의 하나 또는 모두를 포함할 수 있고, 방법(900)은 전체에 걸쳐 개시되어 있지만 이 단락에는 명시적으로 설명되지 않은 부가의 단계를 포함할 수 있는 것으로 고려된다. 또한, 방법(900)의 단계는 동시에 또는 비순차적인 순서로 수행될 수 있는 것이 완전히 고려된다. 방법(900)은 단계 910을 포함할 수 있고, 여기서 단계 910은 파일 시스템 레이어로부터 I/O 요청을 수신하는 것을 포함할 수 있다. 방법(900)은 단계 920을 포함할 수 있고, 여기서 단계 920은 시스템 문맥 정보를 위해 I/O 요청을 검사하는 것을 포함할 수 있다. 파일 시스템 문맥 정보를 위한 I/O 요청의 검사는 파일 시스템 문맥 정보를 위한 I/O 요청의 적어도 하나의 블록의 플래그, 상태(아이노드의 상태와 같은) 또는 필드(아이노드의 필드와 같은)의 적어도 하나를 검사하는 것을 포함할 수 있다. 방법(900)은 단계 930을 포함할 수 있고, 여기서 단계 930은 파일 시스템 문맥 정보의 속성을 결정하기 위해 파일 시스템 레이어에 액세스하는 것을 포함할 수 있다. 방법(900)은 단계 940을 포함할 수 있고, 여기서 단계 940은 파일 시스템 레이어로부터 파일 시스템 문맥 정보의 속성을 수신하는 것을 포함할 수 있다. 방법(900)은 단계 950을 포함할 수 있고, 여기서 단계 950은 파일 시스템 문맥 정보의 속성을 분석하는 것을 포함할 수 있다. 방법(900)은 단계 960을 포함할 수 있고, 여기서 단계 960은 파일 시스템 문맥 정보의 속성을 분석하는 것에 기초하여 적어도 하나의 힌트를 생성하는 것을 포함할 수 있고, 상기 적어도 하나의 힌트는 데이터가 비교적 고속 저장 매체 또는 비교적 저속 저장 매체 내에 존재해야 하는지 여부를 판정하기 위해 I/O 요청의 데이터의 상대적 중요도를 나타낸다. 방법(900)은 단계 970을 포함할 수 있고, 여기서 단계 970은 적어도 하나의 힌트를 하위 레벨 저장 계층으로 송신하는 것을 포함할 수 있다. 방법은 애플리케이션으로부터 통과된 데이터의 웨이트-에이지를 제공하기 위해 메커니즘의 사용을 또한 포함할 수 있다.
본 발명 및 다수의 그 부수적인 장점은 상기 설명에 의해 이해될 수 있을 것이고, 다양한 변경이 본 발명의 사상 및 범주로부터 벗어나지 않고 또는 모든 그 실질적인 장점을 희생하지 않고 그 구성 요소의 형태, 구성 및 배열에 이루어질 수 있다는 것이 이해될 수 있을 것이다. 본 명세서에 전술된 형태는 단지 그 예시적인 실시예이고, 이하의 청구범위의 의도는 이러한 변경을 포함하고 구비하는 것이다.
100: 시스템 토폴로지 110: 사용자 공간
112: 데이터베이스/사용자 애플리케이션 120: 커널 공간
122: 직접 I/O 124: 시스템 호출 인터페이스
126: 가상 파일 시스템 128: 파일 시스템
130: 블록 레이어 142: LL 드라이버
150: 하위 레벨 저장 장치 152: 저장 제어기

Claims (20)

  1. 파일 시스템 힌트를 생성하고 통신하는 방법에 있어서,
    파일 시스템 레이어로부터 I/O 요청을 수신하는 단계와,
    파일 시스템 문맥 정보에 대한 상기 I/O 요청을 검사하는 단계와,
    파일 시스템 문맥 정보의 속성을 결정하기 위해 상기 파일 시스템 레이어에 액세스하는 단계와,
    상기 파일 시스템 레이어로부터 상기 파일 시스템 문맥 정보의 속성을 수신하는 단계와,
    상기 파일 시스템 문맥 정보의 속성을 분석하는 단계와,
    상기 파일 시스템 문맥 정보의 속성을 분석하는 것에 기초하여 적어도 하나의 힌트를 생성하는 단계 - 상기 적어도 하나의 힌트는 상기 힌트와 연관된 I/O 요청 데이터의 상대적 중요도를 나타내고, 비교적 고속의 저장 매체 내에 저장될 상대적으로 더 중요한 I/O 요청 데이터를 지시하는 데 사용되도록 구성됨 - 와,
    상기 적어도 하나의 힌트를 상기 하위 레벨 저장 계층으로 송신하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 파일 시스템 문맥 정보는 파일 시스템 메타데이터, 파일 시스템 액세스 패턴, 파일 시스템 아이노드(inode)(인덱스 노드), 파일 시스템 브이노드(vnode)(가상 인덱스 노드), 파일 시스템 슈퍼 블록, 저널링 파일 시스템의 트랜잭션 로그, 그룹 디스크립터 테이블, 블록 비트맵, 아이노드 비트맵, 아이노드 테이블 또는 아이노드 메타파일 중 적어도 하나를 포함하는
    방법.
  3. 제 1 항에 있어서,
    상기 파일 시스템 문맥 정보는 적어도 파일 시스템 슈퍼 블록을 포함하는
    방법.
  4. 제 1 항에 있어서,
    상기 파일 시스템 문맥 정보는 적어도 파일 시스템 메타데이터를 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 파일 시스템 문맥 정보는 파일 시스템 아이노드(인덱스 노드) 또는 파일 시스템 브이노드(가상 인덱스 노드) 중 적어도 하나를 포함하는
    방법.
  6. 제 5 항에 있어서,
    상기 파일 시스템 문맥 정보에 대한 상기 I/O 요청을 검사하는 단계는,
    상기 파일 시스템 문맥 정보에 대한 상기 I/O 요청의 적어도 하나의 블록의 플래그, 상태 또는 필드 중 적어도 하나를 검사하는 단계를 더 포함하는
    방법.
  7. 제 5 항에 있어서,
    상기 파일 시스템 문맥 정보에 대한 상기 I/O 요청을 검사하는 단계는,
    상기 I/O 요청의 적어도 하나의 블록이 슈퍼 블록을 포함하는지 여부를 검사하는 단계를 더 포함하는
    방법.
  8. 제 5 항에 있어서,
    상기 파일 시스템 문맥 정보에 대한 상기 I/O 요청을 검사하는 단계는,
    상기 파일 시스템 아이노드 또는 상기 파일 시스템 브이노드가 메타아이노드(메타 인덱스 노드) 또는 메타브이노드(메타 가상 인덱스 노드)인지 여부를 검사하는 단계를 더 포함하는
    방법.
  9. 제 1 항에 있어서,
    상기 파일 시스템 레이어로부터 I/O 요청을 수신하는 단계는,
    파일 시스템 아이노드(인덱스 노드) 캐시로부터 또는 상기 파일 시스템 레이어의 버퍼 캐시로부터 I/O 요처을 수신하는 단계를 더 포함하고,
    상기 수신은 상기 파일 시스템 레이어와 블록 레이어 사이에서 발생하는
    방법.
  10. 제 1 항에 있어서,
    상기 I/O 요청과 연관된 적어도 하나의 논리 블록 어드레스에 대한 적어도 하나의 힌트를 해시 테이블 내에 저장하는 단계를 더 포함하는
    방법.

  11. 제 1 항에 있어서,
    상기 하위 레벨 저장 계층은 하위 레벨 저장 드라이버, 하위 레벨 저장 제어기 또는 하위 레벨 저장 시스템 중 적어도 하나를 포함하는
    방법.
  12. 제 1 항에 있어서,
    상기 적어도 하나의 힌트를 상기 하위 레벨 저장 계층으로 송신하는 단계는,
    상기 I/O 요청의 적어도 하나의 블록의 적어도 하나의 미사용 필드에 상기 적어도 하나의 힌트를 부착하는 단계와,
    상기 I/O 요청을 상기 하위 레벨 저장 계층으로 송신하는 단계를 더 포함하는
    방법.
  13. 제 1 항에 있어서,
    상기 I/O 요청을 상기 하위 레벨 저장 계층으로 송신하는 단계와,
    상기 하위 레벨 저장 계층으로부터 상기 적어도 하나의 힌트에 대한 요청을 수신하는 단계를 더 포함하되,
    상기 적어도 하나의 힌트를 상기 하위 레벨 저장 계층으로 송신하는 단계는,
    하위 레벨 저장 계층으로부터 상기 적어도 하나의 힌트에 대한 요청의 수신시에 상기 하위 레벨 저장 계층으로 상기 적어도 하나의 힌트를 송신하는 단계를 더 포함하는
    방법.
  14. 파일 시스템 힌트를 생성하고 통신하기 위한 시스템 토폴로지에 부착하도록 구성된 디바이스로서,
    상기 시스템 토폴로지의 파일 시스템 레이어, 블록 레이어 및 하위 레벨 저장 계층과 통신하도록 구성되고, 힌트 엔진 및 통신 구성 요소를 포함하는 필터 드라이버를 포함하되,
    상기 필터 드라이버는,
    상기 파일 시스템 레이어로부터 I/O 요청을 수신하고,
    파일 시스템 문맥 정보에 대한 상기 I/O 요청을 검사하며,
    상기 파일 시스템 문맥 정보의 속성을 결정하기 위해 상기 파일 시스템 레이어에 액세스하고,
    상기 파일 시스템 레이어로부터 상기 파일 시스템 문맥 정보의 속성을 수신하며,
    상기 파일 시스템 문맥 정보의 속성을 분석하고,
    상기 파일 시스템 문맥 정보의 속성을 분석하는 것에 기초하여 적어도 하나의 힌트를 생성하며 - 상기 적어도 하나의 힌트는 상기 힌트와 연관된 I/O 요청 데이터의 상대적 중요도를 나타내고, 비교적 고속의 저장 매체 내에 저장될 상대적으로 더 중요한 I/O 요청 데이터를 지시하는 데 사용되도록 구성됨 -,
    상기 적어도 하나의 힌트를 상기 하위 레벨 저장 계층으로 송신하도록 또한 구성되는
    디바이스.
  15. 제 14 항에 있어서,
    상기 파일 시스템 문맥 정보는 파일 시스템 아이노드(인덱스 노드) 또는 파일 시스템 브이노드(가상 인덱스 노드) 중 적어도 하나를 포함하고,
    상기 필터 드라이버는,
    파일 시스템 문맥 정보에 대한 I/O 요청의 적어도 하나의 블록의 플래그, 상태 또는 필드 중 적어도 하나를 검사하고,
    상기 I/O 요청의 적어도 하나의 블록이 슈퍼 블록을 포함하는지 여부를 검사하며,
    상기 파일 시스템 아이노드 또는 상기 파일 시스템 브이노드가 메타아이노드(메타 인덱스 노드) 또는 메타브이노드(메타 가상 인덱스 노드)인지 여부를 검사하도록 또한 구성되는
    디바이스.
  16. 제 14 항에 있어서,
    상기 필터 드라이버는,
    상기 I/O 요청의 적어도 하나의 블록의 적어도 하나의 미사용 필드에 상기 적어도 하나의 힌트를 부착하고,
    상기 적어도 하나의 힌트가 부착되어 있는 상기 하위 레벨 저장 계층으로 상기 I/O 요청을 송신하도록 또한 구성되는
    디바이스.
  17. 제 14 항에 있어서,
    상기 하위 레벨 저장 계층은 하위 레벨 저장 드라이버, 하위 레벨 저장 제어기 또는 하위 레벨 저장 시스템 중 적어도 하나를 포함하는
    디바이스.
  18. 컴퓨팅 디바이스로 하여금 파일 시스템 힌트를 생성하고 통신하는 방법을 수행하게 하기 위한 컴퓨터 코드를 구현하는 비일시적 컴퓨터 판독 가능 매체로서,
    상기 컴퓨터 코드는 상기 컴퓨팅 디바이스로 하여금,
    파일 시스템 레이어로부터 I/O 요청을 수신하는 것과,
    파일 시스템 문맥 정보에 대한 상기 I/O 요청을 검사하는 것과,
    상기 파일 시스템 문맥 정보의 속성을 결정하기 위해 상기 파일 시스템 레이어에 액세스하는 것과,
    상기 파일 시스템 레이어로부터 상기 파일 시스템 문맥 정보의 속성을 수신하는 것과,
    상기 파일 시스템 문맥 정보의 속성을 분석하는 것과,
    상기 파일 시스템 문맥 정보의 속성을 분석하는 것에 기초하여 적어도 하나의 힌트를 생성하는 것 - 상기 적어도 하나의 힌트는 상기 힌트와 연관된 I/O 요청 데이터의 상대적 중요도를 나타내고, 비교적 고속의 저장 매체 내에 저장될 상대적으로 더 중요한 I/O 요청 데이터를 지시하는 데 사용되도록 구성됨 -,
    상기 힌트를 하위 레벨 저장 계층으로 송신하는 것을 실행하게 하는
    비일시적 컴퓨터 판독 가능 매체.
  19. 제 18 항에 있어서,
    상기 파일 시스템 문맥 정보는 파일 시스템 아이노드(인덱스 노드) 또는 파일 시스템 브이노드(가상 인덱스 노드) 중 적어도 하나를 포함하고,
    상기 파일 시스템 문맥 정보에 대한 상기 I/O 요청을 검사하는 것은,
    상기 파일 시스템 문맥 정보에 대한 I/O 요청의 적어도 하나의 블록의 플래그, 상태 또는 필드 중 적어도 하나를 검사하는 것과,
    상기 I/O 요청의 적어도 하나의 블록이 슈퍼 블록을 포함하는지 여부를 검사하는 것과,
    상기 파일 시스템 아이노드 또는 상기 파일 시스템 브이노드가 메타아이노드(메타 인덱스 노드) 또는 메타브이노드(메타 가상 인덱스 노드)인지 여부를 검사하는 것을 더 포함하는
    비일시적 컴퓨터 판독 가능 매체.
  20. 제 18 항에 있어서,
    상기 적어도 하나의 힌트를 상기 하위 레벨 저장 계층으로 송신하는 것은,
    상기 I/O 요청의 적어도 하나의 블록의 적어도 하나의 미사용 필드에 상기 적어도 하나의 힌트를 부착하는 것과,
    상기 하위 레벨 저장 계층으로 상기 I/O 요청을 송신하는 것을 더 포함하는
    비일시적 컴퓨터 판독 가능 매체.
KR1020130023526A 2012-03-29 2013-03-05 파일 시스템 힌팅 KR101445481B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/433,851 US8825724B2 (en) 2012-03-29 2012-03-29 File system hinting
US13/433,851 2012-03-29

Publications (2)

Publication Number Publication Date
KR20130111283A true KR20130111283A (ko) 2013-10-10
KR101445481B1 KR101445481B1 (ko) 2014-09-26

Family

ID=47900802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130023526A KR101445481B1 (ko) 2012-03-29 2013-03-05 파일 시스템 힌팅

Country Status (6)

Country Link
US (1) US8825724B2 (ko)
EP (1) EP2645260B1 (ko)
JP (1) JP5710673B2 (ko)
KR (1) KR101445481B1 (ko)
CN (1) CN103365944B (ko)
TW (1) TWI456418B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190049266A (ko) * 2017-11-01 2019-05-09 한국전자통신연구원 네트워크에서 메타데이터의 동기화를 제어하는 장치 및 그 방법

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140069659A (ko) * 2012-11-29 2014-06-10 성균관대학교산학협력단 플래시 메모리용 파일 시스템
US9063861B1 (en) * 2012-12-27 2015-06-23 Emc Corporation Host based hints
US9792295B1 (en) 2013-02-06 2017-10-17 Quantcast Corporation Distributing data of multiple logically independent file systems in distributed storage systems including physically partitioned disks
US10013344B2 (en) 2014-01-14 2018-07-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Enhanced SSD caching
US9378152B2 (en) * 2014-05-09 2016-06-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for I/O processing using out-of-band hinting to block driver or storage controller
US9507722B2 (en) 2014-06-05 2016-11-29 Sandisk Technologies Llc Methods, systems, and computer readable media for solid state drive caching across a host bus
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US10007442B2 (en) * 2014-08-20 2018-06-26 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically deriving hints from accesses to a storage device and from file system metadata and for optimizing utilization of the storage device based on the hints
US10268584B2 (en) 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
US10228854B2 (en) * 2014-08-20 2019-03-12 Sandisk Technologies Llc Storage devices and methods for optimizing use of storage devices based on storage device parsing of file system metadata in host write operations
WO2016051593A1 (ja) * 2014-10-03 2016-04-07 株式会社日立製作所 計算機システム
US20170308542A1 (en) * 2014-11-01 2017-10-26 Hewlett Packard Enterprise Development Lp File system configuration data storage
US9600181B2 (en) 2015-03-11 2017-03-21 Microsoft Technology Licensing, Llc Live configurable storage
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US20170153842A1 (en) * 2015-12-01 2017-06-01 HGST Netherlands B.V. Data allocation in hard drives
US9927997B2 (en) 2015-12-21 2018-03-27 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically and selectively enabling burst mode operation in a storage device
KR102505855B1 (ko) * 2016-01-11 2023-03-03 삼성전자 주식회사 가중치 기반 멀티-큐 가능 리소스 공유 방법
US10168917B2 (en) * 2016-04-05 2019-01-01 International Business Machines Corporation Hotness based data storage for facilitating garbage collection
US10521118B2 (en) 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
JP6253752B1 (ja) 2016-11-29 2017-12-27 株式会社東芝 階層化ストレージシステム
CN108062357B (zh) * 2017-11-28 2020-09-08 厦门市美亚柏科信息股份有限公司 F2fs文件系统的删除文件恢复方法及存储介质
US10572159B1 (en) 2018-03-22 2020-02-25 Amazon Technologies, Inc. Smart data storage tiers for data object transitioning
US11966359B1 (en) * 2018-03-22 2024-04-23 Amazon Technologies, Inc. Automated tier-based transitioning for data objects
US10884920B2 (en) * 2018-08-14 2021-01-05 Western Digital Technologies, Inc. Metadata-based operations for use with solid state devices
US11249664B2 (en) 2018-10-09 2022-02-15 Western Digital Technologies, Inc. File system metadata decoding for optimizing flash translation layer operations
US11340810B2 (en) 2018-10-09 2022-05-24 Western Digital Technologies, Inc. Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints
KR20200076531A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11704057B2 (en) * 2020-07-20 2023-07-18 Micron Technology, Inc. Memory sub-systems including memory devices of various latencies and capacities

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381674B2 (en) 1997-09-30 2002-04-30 Lsi Logic Corporation Method and apparatus for providing centralized intelligent cache between multiple data controlling elements
US6219693B1 (en) * 1997-11-04 2001-04-17 Adaptec, Inc. File array storage architecture having file system distributed across a data processing platform
US6728840B1 (en) 2000-10-20 2004-04-27 Emc Corporation Methods and apparatus for providing host controlled caching of data in a storage system
US6993520B2 (en) * 2002-01-15 2006-01-31 International Business Machines Corporation Integrated content management and block layout technique
US8516114B2 (en) 2002-03-29 2013-08-20 International Business Machines Corporation Method and apparatus for content pre-fetching and preparation
US8140860B2 (en) 2003-12-15 2012-03-20 International Business Machines Corporation Policy-driven file system with integrated RAID functionality
US7631148B2 (en) * 2004-01-08 2009-12-08 Netapp, Inc. Adaptive file readahead based on multiple factors
US7337273B2 (en) 2004-03-31 2008-02-26 Microsoft Corporation Strategies for reading information from a mass storage medium using a cache memory
WO2006082592A1 (en) 2005-02-04 2006-08-10 Hewlett-Packard Development Company, L.P. Data processing system and method
ATE512412T1 (de) * 2005-04-25 2011-06-15 Network Appliance Inc System und verfahren zum zwischenspeichern von netzwerkdateisystemen
JP4704161B2 (ja) * 2005-09-13 2011-06-15 株式会社日立製作所 ファイルシステムの構築方法
US7676630B2 (en) 2006-10-05 2010-03-09 Sun Microsystems, Inc. Method and apparatus for using a determined file access pattern to perform caching in a file system
US7853759B2 (en) * 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US20090070300A1 (en) * 2007-09-07 2009-03-12 International Business Machines Corporation Method for Processing Data Queries
JP5187017B2 (ja) 2008-06-18 2013-04-24 富士通株式会社 分散ディスクキャッシュシステム及び分散ディスクキャッシュ方法
JP4727705B2 (ja) * 2008-10-31 2011-07-20 株式会社日立製作所 階層型ストレージシステム
US20100199036A1 (en) * 2009-02-02 2010-08-05 Atrato, Inc. Systems and methods for block-level management of tiered storage
JP5241671B2 (ja) * 2009-10-05 2013-07-17 株式会社日立製作所 記憶装置のデータ移行制御方法
US8290994B2 (en) * 2010-05-05 2012-10-16 International Business Machines Corporation Obtaining file system view in block-level data storage systems
US8260798B2 (en) * 2010-06-22 2012-09-04 Oracle International Corporation Method and system for partial shadow migration
US8381213B1 (en) * 2010-06-30 2013-02-19 Emc Corporation Method for dynamic management of system resources through application hints
EP2593871B1 (en) 2010-07-16 2017-08-23 Kabushiki Kaisha Toshiba Customized of a bus adapter card
US20120317337A1 (en) * 2011-06-09 2012-12-13 Microsoft Corporation Managing data placement on flash-based storage by use

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190049266A (ko) * 2017-11-01 2019-05-09 한국전자통신연구원 네트워크에서 메타데이터의 동기화를 제어하는 장치 및 그 방법

Also Published As

Publication number Publication date
EP2645260A2 (en) 2013-10-02
CN103365944B (zh) 2017-08-04
EP2645260A3 (en) 2014-03-19
US8825724B2 (en) 2014-09-02
TWI456418B (zh) 2014-10-11
US20130262533A1 (en) 2013-10-03
KR101445481B1 (ko) 2014-09-26
EP2645260B1 (en) 2015-05-06
JP5710673B2 (ja) 2015-04-30
JP2013206467A (ja) 2013-10-07
TW201339870A (zh) 2013-10-01
CN103365944A (zh) 2013-10-23

Similar Documents

Publication Publication Date Title
KR101445481B1 (ko) 파일 시스템 힌팅
AU2006239882B2 (en) System and method for caching network file systems
US9348842B2 (en) Virtualized data storage system optimizations
JP5347061B2 (ja) フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置
US20080177975A1 (en) Database management system for controlling setting of cache partition area in storage system
US9710283B2 (en) System and method for pre-storing small data files into a page-cache and performing reading and writing to the page cache during booting
JP2014508362A (ja) データー重複排除のためのバックアップおよび復元方策
TW201220197A (en) for improving the safety and reliability of data storage in a virtual machine based on cloud calculation and distributed storage environment
Lee et al. iLSM-SSD: An intelligent LSM-tree based key-value SSD for data analytics
US10552371B1 (en) Data storage system with transparent presentation of file attributes during file system migration
WO2021258881A1 (zh) 应用的数据管理方法、系统和计算机设备
CN115794669A (zh) 一种扩展内存的方法、装置及相关设备
WO2017126003A1 (ja) 複数種類のメモリデバイスを含む計算機システム及び方法
US8769196B1 (en) Configuring I/O cache
WO2020024933A1 (zh) 一种数据写入方法和服务端
US10180901B2 (en) Apparatus, system and method for managing space in a storage device
CN115480692A (zh) 一种数据压缩方法及装置
US8489559B2 (en) Methods and apparatus for conversion of content
JP2016515258A (ja) 最適化ファイル動作のためのファイル集合化
US11586353B2 (en) Optimized access to high-speed storage device
US10853257B1 (en) Zero detection within sub-track compression domains
CN105912277A (zh) 在虚拟机镜像中实现文件系统单写日志的方法
US10664442B1 (en) Method and system for data consistency verification in a storage system
JP2024525170A (ja) データ圧縮方法及び装置
CN115756321A (zh) 数据访问方法、计算设备及计算机存储介质

Legal Events

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