KR20180011255A - 파일에 접근하기 위한 방법과 장치, 및 저장 시스템 - Google Patents
파일에 접근하기 위한 방법과 장치, 및 저장 시스템 Download PDFInfo
- Publication number
- KR20180011255A KR20180011255A KR1020177037049A KR20177037049A KR20180011255A KR 20180011255 A KR20180011255 A KR 20180011255A KR 1020177037049 A KR1020177037049 A KR 1020177037049A KR 20177037049 A KR20177037049 A KR 20177037049A KR 20180011255 A KR20180011255 A KR 20180011255A
- Authority
- KR
- South Korea
- Prior art keywords
- file
- call request
- information
- request message
- request messages
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 107
- 238000012545 processing Methods 0.000 claims abstract description 39
- 238000012217 deletion Methods 0.000 description 17
- 230000037430 deletion Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G06F9/3855—
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1724—Details of de-fragmentation performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0613—Improving I/O performance in relation to throughput
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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 실시예는 파일에 접근하기 위한 방법과 장치, 및 저장 시스템에 관한 것이다. 파일에 접근하기 위한 방법은, L개의 제1 파일 호출 요청 메시지를 결정하는 단계; L개의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보에 따라, M개의 제1 파일 디스패치 큐에 L개의 제1 파일 호출 요청 메시지를 개별적으로 추가하는 단계; 및 각각의 제1 파일 디스패치 큐에 포함된 제1 파일 호출 요청 메시지를 처리하여 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하는 단계를 포함한다. 여기서, 호출 요청 메시지는 제1 파일에 접근하기 위해 사용된다. 본 발명의 실시예에서 파일에 접근하기 위한 방법과 장치, 및 저장 시스템에 의하면, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리가 수행될 수 있고, 마이크로 파일을 호출하는 횟수가 줄어들 수 있도록, 대응하는 디스패치 큐가 마이크로 파일의 호출 요청 메시지에 할당된다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에 I/O 횟수가 늘어나고 과도한 메모리 자원이 점유되는 것을 피할 수 있고, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다.
Description
본 발명은 정보 기술 분야에 관한 것으로, 상세하게는 파일에 접근하기 위한 방법과 장치, 및 저장 시스템에 관한 것이다.
파일 시스템에서는, 정보 노드(information node, inode)가 일반적으로 각각의 파일에 할당되고, 데이터 블록(data block)이 각각의 파일에 대응하는 실제 데이터에 할당되며, 데이터 블록의 수가 정보 노드에 기록된다. 파일 시스템에서 지원되는 데이터 블록은 1K, 2K, 또는 4K 등의 크기를 가진다. 포맷하는 동안, 데이터 블록의 크기는 고정되어 있으며, 정보 노드에 기록하는 것을 용이하게 하기 위해 각각의 데이터 블록은 번호를 가지고 있다.
종래 기술에서 각각의 데이터 블록이 하나의 파일만의 데이터를 수용할 수 있으므로, 많은 수의 마이크로 파일이 종종 파일 시스템에 존재하고 있는데, 예를 들어 마이크로 파일이 수백 바이트 이하의 크기를 가지고 있다. 별도의 데이터 블록이 이러한 마이크로 파일에 할당되면, 내부적인 단편화(internal fragment)를 유발하고, 자기 디스크 공간이 낭비된다. 게다가, 마이크로 파일을 빈번하게 읽거나 쓰는 것은 입력(Input, I)/출력(Output, O) 횟수를 추가적으로 증가시키며, 과도한 시스템 호출을 유발한다. 이 시스템 호출 역시 컨텍스트 스위칭(context switching)을 유발하며, 과도한 CPU 자원과 메모리 자원이 점유된다. 결과적으로, 파일 시스템의 전반적인 I/O 효율이 저하된다.
파일 시스템의 전반적인 I/O 효율을 높이기 위해, 본 발명은 파일에 접근하기 위한 방법과 장치, 및 저장 시스템을 제공한다.
제1 양태에 따르면, 파일에 접근하기 위한 방법이 제공된다. 상기 파일에 접근하기 위한 방법은, L개의 제1 파일 호출 요청 메시지를 결정하는 단계 - 상기 L개의 제1 파일 호출 요청 메시지 각각은 제1 파일을 호출하도록 요청하기 위해 사용되고, 상기 제1 파일의 크기는 임계값보다 작거나 같으며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 상기 물리적 섹터 정보는 상기 제1 파일을 저장하는 물리적 섹터의 주소를 포함하며, L은 1보다 큰 정수임 -; 상기 물리적 섹터 정보에 따라, 상기 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐(first-file dispatch queue)에 상기 L개의 제1 파일 호출 요청 메시지를 개별적으로 추가하는 단계 - M은 양의 정수임 -; 상기 M개의 제1 파일 디스패치 큐 각각에 포함된 K개의 제1 파일 호출 요청 메시지를 처리하여 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하는 단계 - 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하도록 요청하기 위해 사용되고, K는 양의 정수임 -; 및 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하는 단계를 포함한다.
제1 양태를 참조하여, 제1 양태의 일 구현 방식에서, 상기 파일에 접근하기 위한 방법은, 상기 파일을 저장하는 상기 물리적 섹터 상에 N개의 제1 파일 저장 공간 그룹을 결정하는 단계 - 상기 N개의 제1 파일 저장 공간 그룹은 상기 제1 파일을 저장하기 위해 사용되고, N은 양의 정수임 -; 및 상기 N개의 제1 파일 저장 공간 그룹 중 적어도 2개의 그룹이 사용 가능한 저장 공간을 가지고 있는 경우, 상기 적어도 2개의 제1 파일 저장 공간 그룹에 포함된 제1 파일을 결합하거나, 상기 N개의 제1 파일 저장 공간 그룹 중 적어도 하나의 그룹이 파일을 저장하고 있지 않은 경우, 상기 적어도 하나의 제1 파일 저장 공간 그룹을 해제하거나, 상기 N개의 제1 파일 저장 공간 그룹 중 어느 제1 파일 저장 공간 그룹도 사용 가능한 저장 공간을 가지고 있지 않은 경우, 상기 N개의 제1 파일 저장 공간 그룹의 개수를 증가시키는 단계를 더 포함한다. 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하는 단계는, 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라 상기 N개의 제1 파일 저장 공간 그룹 중에서, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하는 단계를 포함한다.
제1 양태 및 제1 양태의 전술한 구현 방식을 참조하여, 제1 양태의 다른 구현 방식에서, 상기 물리적 섹터 정보에 따라, 상기 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐에 상기 L개의 제1 파일 호출 요청 메시지를 개별적으로 추가하는 단계는, 상기 물리적 섹터 정보에 따라, 상기 L개의 제1 파일 호출 요청 메시지 중 적어도 2개의 제1 파일 호출 요청 메시지를 동일한 제1 파일 디스패치 큐에 추가하는 단계를 포함한다. 여기서, 상기 적어도 2개의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 물리적 섹터의 주소는 연속적이다.
제1 양태 및 제1 양태의 전술한 구현 방식을 참조하여, 제1 양태의 또 다른 구현 방식에서, 각각의 제1 파일 호출 요청 메시지는 접근 경로 정보를 더 포함한다. 여기서, 상기 접근 경로 정보는 각각의 제1 파일 호출 메시지에 대응하는 상기 제1 파일에 접근하는 데 사용된 상기 물리적 섹터의 경로를 나타내기 위해 사용된다.
제1 양태 및 제1 양태의 전술한 구현 방식을 참조하여, 제1 양태의 또 다른 구현 방식에서, 상기 L개의 제1 파일 호출 요청 메시지를 결정하는 단계는, L개의 제1 파일 정보 노드를 결정하는 단계 - 상기 L개의 제1 파일 정보 노드 각각은, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 저장하기 위해 사용됨 -; 및 각각의 제1 파일 정보 노드에 따라, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 결정하는 단계를 포함한다.
제1 양태 및 제1 양태의 전술한 구현 방식을 참조하여, 제1 양태의 또 다른 구현 방식에서, 상기 L개의 제1 파일 정보 노드를 결정하는 단계는, 상기 L개의 제1 파일 정보 노드 중 i번째 제1 파일 정보 노드가 정보 노드 연결 목록(information node linked list)에 존재하는지 여부를 판정하는 단계; 및 상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하지 않는 경우, 상기 정보 노드 연결 목록에 상기 i번째 제1 파일 정보 노드를 생성하고, 상기 i번째 제1 파일 정보 노드에 i번째 제1 파일의 접근 경로 정보를 저장하는 단계; 또는 상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하는 경우, 상기 i번째 제1 파일 정보 노드에 따라 i번째 제1 파일의 접근 경로 정보를 결정하는 단계를 포함한다.
제2 양태에 따르면, 파일에 접근하기 위한 장치가 제공된다. 여기서, 상기 파일에 접근하기 위한 장치는, L개의 제1 파일 호출 요청 메시지를 결정하도록 구성된 제1 결정 모듈 - 상기 L개의 제1 파일 호출 요청 메시지 각각은 제1 파일을 호출하도록 요청하기 위해 사용되고, 상기 제1 파일의 크기는 임계값보다 작거나 같으며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 상기 물리적 섹터 정보는 상기 제1 파일을 저장하는 물리적 섹터의 주소를 포함하며, L은 1보다 큰 정수임 -; 상기 물리적 섹터 정보에 따라, 상기 제1 결정 모듈에 의해 결정된 상기 L개의 제1 파일 호출 요청 메시지를 상기 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐에 개별적으로 추가하도록 구성된 할당 모듈 - M은 양의 정수임 -; 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하기 위해, 상기 할당 모듈에 의해 할당된 상기 M개의 제1 파일 디스패치 큐 각각에 포함되는 K개의 제1 파일 호출 요청 메시지를 처리하도록 구성된 처리 모듈 - 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하도록 요청하기 위해 사용되고, K는 양의 정수임 -; 및 상기 처리 모듈에 의해 획득된, 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하도록 구성된 호출 모듈을 포함한다.
제2 양태를 참조하여, 제2 양태의 일 구현 방식에서, 상기 파일에 접근하기 위한 장치는 제2 결정 모듈을 더 포함하고, 상기 제2 결정 모듈은, 상기 파일을 저장하는 상기 물리적 섹터 상에 N개의 제1 파일 저장 공간 그룹을 결정하고 - 여기서, 상기 N개의 제1 파일 저장 공간 그룹은 상기 제1 파일을 저장하기 위해 사용됨 -; 상기 N개의 제1 파일 저장 공간 그룹 중 적어도 2개의 그룹이 사용 가능한 저장 공간을 가지고 있는 경우, 상기 적어도 2개의 제1 파일 저장 공간 그룹에 포함된 제1 파일을 결합하거나; 또는 상기 N개의 제1 파일 저장 공간 그룹 중 적어도 하나의 그룹이 파일을 저장하고 있지 않은 경우, 상기 적어도 하나의 제1 파일 저장 공간 그룹을 해제하거나; 또는 상기 N개의 제1 파일 저장 공간 그룹 중 어느 제1 파일 저장 공간 그룹도 사용 가능한 저장 공간을 가지고 있지 않은 경우, 상기 N개의 제1 파일 저장 공간 그룹의 개수를 증가시키도록 구성된다. 상기 호출 모듈은 추가적으로, 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라 상기 N개의 제1 파일 저장 공간 그룹 중에서, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하도록 구성된다.
제2 양태 및 제2 양태의 전술한 구현 방식을 참조하여, 제2 양태의 다른 구현 방식에서, 상기 처리 모듈은 구체적으로, 상기 물리적 섹터 정보에 따라 상기 L개의 제1 파일 호출 요청 메시지 중 적어도 2개의 제1 파일 호출 요청 메시지를 동일한 제1 파일 디스패치 큐에 추가하도록 구성된다. 여기서, 상기 적어도 2개의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 물리적 섹터의 주소는 연속적이다.
제2 양태 및 제2 양태의 전술한 구현 방식을 참조하여, 제2 양태의 또 다른 구현 방식에서, 각각의 제1 파일 호출 요청 메시지는 접근 경로 정보를 더 포함한다. 여기서, 상기 접근 경로 정보는 각각의 제1 파일 호출 메시지에 대응하는 상기 제1 파일에 접근하는 데 사용된 상기 물리적 섹터의 경로를 나타내기 위해 사용된다.
제2 양태 및 제2 양태의 전술한 구현 방식을 참조하여, 제2 양태의 또 다른 구현 방식에서, 상기 결정 모듈은 구체적으로, L개의 제1 파일 정보 노드를 결정하고 - 여기서, 상기 L개의 제1 파일 정보 노드 각각은 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 저장하기 위해 사용됨 -; 각각의 제1 파일 정보 노드에 따라, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 결정하도록 구성된다.
제2 양태 및 제2 양태의 전술한 구현 방식을 참조하여, 제2 양태의 또 다른 구현 방식에서, 상기 결정 모듈은 구체적으로, 상기 L개의 제1 파일 정보 노드 중 i번째 제1 파일 정보 노드가 정보 노드 연결 목록에 존재하는지 여부를 판정하고; 상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하지 않는 경우, 상기 정보 노드 연결 목록에 상기 i번째 제1 파일 정보 노드를 생성하고, 상기 i번째 제1 파일 정보 노드에 i번째 제1 파일의 접근 경로 정보를 저장하거나; 또는 상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하는 경우, 상기 i번째 제1 파일 정보 노드에 따라 i번째 제1 파일의 접근 경로 정보를 결정하도록 구성된다.
제3 양태에 따르면, 저장 시스템이 제공된다. 상기 저장 시스템은, 파일과 프로그램을 저장하도록 구성된 메모리; 및 프로세서를 포함한다. 상기 프로세서는 상기 프로그램을 실행하여, L개의 제1 파일 호출 요청 메시지를 결정하고 - 여기서, 상기 L개의 제1 파일 호출 요청 메시지 각각은 제1 파일을 호출하도록 요청하기 위해 사용되고, 상기 제1 파일의 크기는 임계값보다 작거나 같으며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 상기 물리적 섹터 정보는 상기 제1 파일을 저장하는 물리적 섹터의 주소를 포함하며, L은 1보다 큰 정수임 -; 상기 물리적 섹터 정보에 따라, 상기 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐에 상기 L개의 제1 파일 호출 요청 메시지를 개별적으로 추가하며 - 여기서, M은 양의 정수임 -; 상기 M개의 제1 파일 디스패치 큐 각각에 포함된 K개의 제1 파일 호출 요청 메시지를 처리하여 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하고 - 여기서, 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하도록 요청하기 위해 사용되고, K는 양의 정수임 -; 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하도록 구성된다.
제3 양태를 참조하여, 제3 양태의 일 구현 방식에서, 상기 프로세서는 추가적으로, 상기 파일을 저장하는 상기 물리적 섹터 상에 N개의 제1 파일 저장 공간 그룹을 결정하고 - 여기서, 상기 N개의 제1 파일 저장 공간 그룹은 상기 제1 파일을 저장하기 위해 사용됨 -; 상기 N개의 제1 파일 저장 공간 그룹 중 적어도 2개의 그룹이 사용 가능한 저장 공간을 가지고 있는 경우, 상기 적어도 2개의 제1 파일 저장 공간 그룹에 포함된 제1 파일을 결합하거나; 또는 상기 N개의 제1 파일 저장 공간 그룹 중 적어도 하나의 그룹이 파일을 저장하고 있지 않은 경우, 상기 적어도 하나의 제1 파일 저장 공간 그룹을 해제하거나; 또는 상기 N개의 제1 파일 저장 공간 그룹 중 어느 제1 파일 저장 공간 그룹도 사용 가능한 저장 공간을 가지고 있지 않은 경우, 상기 N개의 제1 파일 저장 공간 그룹의 개수를 증가시키며; 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라 상기 N개의 제1 파일 저장 공간 그룹 중에서, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하도록 구성된다.
제3 양태 및 제3 양태의 전술한 구현 방식을 참조하여, 제3 양태의 다른 구현 방식에서, 상기 프로세서는 구체적으로, 상기 물리적 섹터 정보에 따라 상기 L개의 제1 파일 호출 요청 메시지 중 적어도 2개의 제1 파일 호출 요청 메시지를 동일한 제1 파일 디스패치 큐에 추가하도록 구성된다. 여기서, 상기 적어도 2개의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 물리적 섹터의 주소는 연속적이다.
제3 양태 및 제3 양태의 전술한 구현 방식을 참조하여, 제3 양태의 또 다른 구현 방식에서, 각각의 제1 파일 호출 요청 메시지는 접근 경로 정보를 더 포함하고, 상기 접근 경로 정보는 각각의 제1 파일 호출 메시지에 대응하는 상기 제1 파일에 접근하는 데 사용된 상기 물리적 섹터의 경로를 나타내기 위해 사용된다.
제3 양태 및 제3 양태의 전술한 구현 방식을 참조하여, 제3 양태의 또 다른 구현 방식에서, 상기 프로세서는 구체적으로, L개의 제1 파일 정보 노드를 결정하고 - 여기서, 상기 L개의 제1 파일 정보 노드 각각은 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 저장하기 위해 사용됨 -; 각각의 제1 파일 정보 노드에 따라, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 결정하도록 구성된다.
제3 양태 및 제3 양태의 전술한 구현 방식을 참조하여, 제3 양태의 또 다른 구현 방식에서, 상기 프로세서는 구체적으로, 상기 L개의 제1 파일 정보 노드 중 i번째 제1 파일 정보 노드가 정보 노드 연결 목록에 존재하는지 여부를 판정하고; 상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하지 않는 경우, 상기 정보 노드 연결 목록에 상기 i번째 제1 파일 정보 노드를 생성하고, 상기 i번째 제1 파일 정보 노드에 i번째 제1 파일의 접근 경로 정보를 저장하거나; 또는 상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하는 경우, 상기 i번째 제1 파일 정보 노드에 따라 i번째 제1 파일의 접근 경로 정보를 결정하도록 구성된다.
전술한 기술적 해결책에 기초하여, 파일에 접근하기 위한 방법과 장치, 및 본 발명의 실시예의 저장 시스템에 의하면, 마이크로 파일의 호출 요청 메시지가 결정되고, 대응하는 제1 파일 디스패치 큐가 마이크로 파일의 호출 요청 메시지에 할당되어, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리가 수행될 수 있으며, 마이크로 파일을 호출하는 횟수가 줄어든다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에, I/O 횟수가 증가되면서 또한 과도한 메모리 자원이 점유되는 것을 피할 수 있고, 시스템 호출의 횟수가 줄어들며, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다.
이하, 본 발명의 실시예의 기술적 해결책을 보다 명확하게 설명하기 위하여, 본 발명의 실시예를 설명하는 데 필요한 첨부 도면에 대해 간략히 설명한다. 명백히, 다음의 설명에서의 첨부 도면은 단지 본 발명의 일부 실시예를 나타낼 뿐이고, 당업자라면 창의적인 노력 없이도 이들 첨부 도면으로부터 다른 도면을 도출해낼 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른, 파일에 접근하기 위한 방법의 개략적인 흐름도이다.
도 2는 본 발명의 일 실시예에 따른, 파일에 접근하기 위한 방법의 다른 개략적인 흐름도이다.
도 3은 본 발명의 일 실시예에 따른, 파일에 접근하기 위한 장치(200)의 개략적인 블록도이다.
도 4는 본 발명의 일 실시예에 따른, 파일에 접근하기 위한 장치(200)의 다른 개략적인 블록도이다.
도 5는 본 발명의 일 실시예에 따른 저장 시스템(300)의 개략적인 블록도이다.
도 1은 본 발명의 일 실시예에 따른, 파일에 접근하기 위한 방법의 개략적인 흐름도이다.
도 2는 본 발명의 일 실시예에 따른, 파일에 접근하기 위한 방법의 다른 개략적인 흐름도이다.
도 3은 본 발명의 일 실시예에 따른, 파일에 접근하기 위한 장치(200)의 개략적인 블록도이다.
도 4는 본 발명의 일 실시예에 따른, 파일에 접근하기 위한 장치(200)의 다른 개략적인 블록도이다.
도 5는 본 발명의 일 실시예에 따른 저장 시스템(300)의 개략적인 블록도이다.
이하, 본 발명의 실시예의 첨부 도면을 참조하여 본 발명의 실시예의 기술적 해결책에 대해 명확하고 완전하게 설명한다. 명백히, 이하의 실시예는 본 발명의 실시예의 전부가 아니라 단지 일부일 뿐이다. 창작적인 노력 없이 본 발명의 실시예에 기반하여 당업자에 의해 획득되는 다른 모든 실시예는 본 발명의 보호 범위에 속할 것이다.
예비 통계에 따르면, 리눅스 시스템은 수만 개의 파일, 심지어는 수백만 개의 파일을 포함하고 있다. 파일 시스템이 저장된 데이터를 체계화하기 위하여 디렉토리 구조를 이용하며, 파일 시스템의 원래 정보를 실제 데이터와 연관시킨다. 리눅스는 다수의 상이한 파일 시스템, 예컨대 ext4, F2FS, Brtfs, 및 Vfat을 지원한다. 리눅스 커널은 추가적인 소프트웨어 계층(VFS)를 이용하여 서로 다른 기본 파일 시스템을 연관시킨다.
I/O 접근 절차에 따르면, 이 시스템은 5개의 모듈, 즉 사용자 영역(User Space), 파일 시스템 계층, 블록 장치 계층, 멀티미디어 카드(Multimedia Card, "MMC") 드라이버 계층, 및 하드웨어로 구분될 수 있다.
여기서, 사용자 영역은 사용자 영역에서 I/O 요청을 처리하는 모든 응용 프로그램과 표준 라이브러리를 포함한다.
파일 시스템 계층, 블록 장치 계층, 및 MMC 드라이버 계층은 커널 영역에서 실행된다.
하드웨어는 MMC 호스트 컨트롤러를 지칭하고, 주로 JEDEC 표준과 공급 업체의 하드웨어에 따라 구현되며, 본 특허의 설명의 초점이 아니다.
도 1은 본 발명의 일 실시예에 따른, 파일에 접근하기 위한 방법(100)의 개략적인 흐름도이다. 파일에 접근하기 위한 방법(100)은 파일 시스템의 블록 장치 계층에 의해 수행될 수 있다. 도 1에 도시된 바와 같이, 파일에 접근하기 위한 방법(100)은 이하를 포함한다.
S110: L개의 제1 파일 호출 요청 메시지를 결정한다. 여기서, L개의 제1 파일 호출 요청 메시지 각각은 제1 파일을 호출하도록 요청하기 위해 사용되고, 제1 파일의 크기는 임계값보다 작거나 같으며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 물리적 섹터 정보는 제1 파일을 저장하는 물리적 섹터의 주소를 포함하며, L은 1보다 큰 정수이다.
S120: 물리적 섹터 정보에 따라, L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐에 L개의 제1 파일 호출 요청 메시지를 개별적으로 추가한다. 여기서, M은 양의 정수이다.
S130: M개의 제1 파일 디스패치 큐 각각에 포함되는 K개의 제1 파일 호출 요청 메시지를 처리하여 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득한다. 여기서, 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하도록 요청하기 위해 사용되고, K는 양의 정수이다.
S140: 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일에 접근한다.
구체적으로, L개의 제1 파일 호출 요청 메시지는 사용자 장비에 의해 송신된 파일 호출 요청 메시지 중에서 결정된다(L은 1보다 큰 정수). 제1 파일 호출 요청 메시지는 제1 파일을 호출하기 위해 사용되고, 제1 파일은 마이크로 파일이며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 물리적 섹터 정보는 대응하는 마이크로 파일을 저장하는 물리적 섹터의 주소를 포함한다. M개의 제1 파일 디스패치 큐가 L개의 제1 파일 호출 요청 메시지에 할당된다(M은 양의 정수). L개의 제1 파일 호출 요청 메시지는 각각의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보에 따라 M개의 제1 파일 디스패치 큐에 개별적으로 추가된다. 각각의 제1 파일 디스패치 큐에 할당된 K개의 제1 파일 호출 요청 메시지가 처리된다. 예를 들어, K개의 제1 파일 호출 요청 메시지에 대해 결합 및/또는 삭제 처리가 수행될 수 있다. 따라서, 각각의 제1 파일 디스패치 큐에 대응하는 호출 요청 메시지가 획득된다. K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일이 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라 호출된다. 예를 들어, 제1 파일에 접근할 수 있다.
따라서, 본 발명의 본 실시예의 파일에 접근하기 위한 방법에 의하면, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리가 수행될 수 있으면서 또한 마이크로 파일을 호출하는 횟수가 줄어들 수 있도록, 마이크로 파일의 호출 요청 메시지가 결정되고, 대응하는 제1 파일 디스패치 큐가 마이크로 파일의 호출 요청 메시지에 할당된다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에, I/O 횟수가 증가되면서 또한 과도한 메모리 자원이 점유되는 것을 피할 수 있고, 시스템 호출의 횟수가 줄어들며, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다.
S110에서, 파일 시스템은 수신된 파일 호출 요청 메시지 중에서 L개의 제1 파일 호출 요청 메시지를 결정할 수 있다(L은 1보다 큰 양의 정수). L개의 제1 파일 호출 요청 메시지 중 각각의 제1 파일 요청 메시지는 하나의 대응하는 제1 파일을 호출하도록 요청하기 위해 사용된다. 선택적으로, 제1 파일은 마이크로 파일(Micro File, "MF")이다. 실제 적용에 따라, 임계값이 설정될 수 있다. 파일 크기가 임계값보다 작거나 같은 파일이 마이크로 파일, 즉 제1 파일로서 결정된다. 예를 들어, 임계값은 1K로 설정될 수 있다. 즉, 파일 크기가 1K보다 작거나 같은 파일이 마이크로 파일로서 정의되고, 임계값은 2M, 또는 4M 등으로 설정될 수도 있다. 본 발명은 이를 제한하지 않는다. 이런 방식으로, 파일 시스템은 수신된 파일 호출 요청 메시지로부터 마이크로 파일의 호출 요청 메시지를 결정할 수 있고, 이러한 마이크로 파일의 호출 요청 메시지는 파일 시스템으로부터 대응하는 마이크로 파일을 호출하도록 요청하기 위해 사용된다.
본 발명의 본 실시예에서, 파일 시스템은 L개의 제1 파일 호출 요청 메시지를 결정하고, 한 번에 한 개의 제1 파일 호출 요청 메시지를 수신할 수 있거나, 또는 한 번에 복수 개의 제1 파일 호출 요청 메시지를 수신할 수 있다. 예를 들어, 파일 시스템은 한 번에 3개의 제1 파일 호출 요청 메시지를 수신할 수 있다. 이때, 파일 시스템이 L개의 제1 파일 호출 요청 메시지를 결정하는 경우, 파일 시스템은 수신된 3개의 제1 파일 호출 요청 메시지를 결정한다. 또는, 파일 시스템은 임의의 개수의 제1 파일 호출 요청 메시지를 수신할 수도 있다. 개수가 L로 증가하면, 파일 시스템은 L개의 제1 파일 호출 요청 메시지를 결정한다. L의 값이 실제 적용에 따라 결정될 수 있거나, 또는 경험적인 값에 따라 설정될 수 있다. 본 발명은 이를 제한하지 않는다.
선택적으로, 본 발명의 본 실시예에서, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함할 수 있고, 물리적 섹터 정보는 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일을 저장하는 물리적 섹터의 주소를 포함한다. 선택적으로, 물리적 섹터 정보는 구체적으로, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 시작 주소, 호출된 제1 파일의 크기, 또는 제1 파일 호출 요청 메시지를 전달하는 장치의 관련 정보 중 적어도 하나를 포함할 수 있다. 파일 시스템은 물리적 섹터 정보를 포함하는 제1 파일 호출 요청 메시지에 따라, 호출될 필요가 있는 제1 파일을 결정할 수 있다.
선택적으로, 본 발명의 본 실시예에서, 제1 파일 호출 요청 메시지는 접근 경로 정보를 더 포함할 수 있고, 접근 경로 정보는 상응하게 제1 파일을 저장하는 물리적 섹터의 경로 정보를 포함하며, 대응하는 제1 파일을 저장하는 물리적 섹터, 즉 마이크로 파일을 저장하는 물리적 섹터는 접근 경로 정보에 따라 파일 시스템에서 발견될 수 있다. 구체적으로, 하나의 파일이 열리거나(open) 또는 닫히거나(close) 또는 신규 파일이 생성되는 경우, 파일 시스템의 커널이 하나의 파일 서술자(file descriptor)를 할당하고 이 파일 서술자를 사용자 프로그램에 반환하며, 파일 서술자의 엔트리 내의 포인터가 새롭게 열린 파일을 가리킨다. 파일에 접근하는 경우, 사용자 프로그램은 파일 서술자를 커널에 전송하고, 커널은 파일 서술자에 따라 대응하는 엔트리를 찾으며, 엔트리 내의 포인터를 이용하여 대응하는 파일을 찾는다. 각각의 파일 구조는 덴트리(directory entry, dentry) 구조를 가리키는 포인터를 가지고 있으며, 파일의 정보 노드(inode)가 경로에 따라 발견될 수 있다. 디스크 읽기 횟수를 줄이기 위해, 커널은 일반적으로 디렉토리의 트리 유사 구조를 캐싱하며, 디렉토리의 트리 유사 구조는 덴트리 캐시라고 한다. 각각의 정보 노드는 덴트리 구조이다. 검색이 이 경로 중 일부의 덴트리를 따라 수행될 필요가 있을 뿐이다. 덴트리 캐시는 최근에 접근된 디렉토리 엔트리만을 저장하고 있다. 접근되지 않았다면, 디렉토리 엔트리가 자기 디스크에서 메모리로 읽힐 필요가 있다.
구체적으로, 마이크로 파일의 경우, 파일 시스템은 연결 목록 형태로 마이크로 파일-정보 노드(MF-inode)를 저장할 수 있다. 이들 마이크로 파일-정보 노드는 대응하는 마이크로 파일의 접근 경로 정보를 저장하고 있으며, 마이크로 파일이 정보 노드 내의 접근 경로 정보에 따라 검색될 수 있다. i번째 제1 파일 호출 요청 메시지를 수신하는 경우, 파일 시스템은 저장된 MF-inode 연결 목록에서 i번째 제1 파일의 대응하는 정보 노드를 검색하고; i번째 제1 파일의 정보 노드가 연결 목록에 존재하면, i번째 제1 파일의 정보 노드에 따라, 제1 파일의 저장 경로를 나타내기 위해 사용된 접근 경로 정보를 결정한다. 여기서, 접근 경로 정보는 i번째 제1 파일 호출 요청 메시지에 저장될 수 있다. MF-inode 연결 목록에서 i번째 제1 파일의 대응하는 정보 노드를 찾을 수 없는 경우, i번째 제1 파일에 대응하는 신규 정보 노드가 요청되고, 신규 정보 노드는 MF-inode 연결 목록에 추가되며, 저장 경로 및 제1 파일에 대응하는 파일명이 신규 정보 노드에 저장되고, 정보 노드의 멤버 변수로서 기록되며, 접근 경로 정보 역시 i번째 제1 파일 호출 요청 메시지에 저장된다.
선택적으로, 마이크로 파일에 대응하는 MF-inode 연결 목록의 경우, 파일 데이터가 계속 쓰여지므로, MF-inode 연결 목록에 포함된 정보 노드에 대응하는 파일이 마이크로 파일에서 매크로 파일로 바뀌는 경우, 예를 들어 마이크로 파일의 크기가 4M를 초과하는 경우, 절삭(O_TRUNC) 연산을 호출할 수 있으며, 따라서 매크로 파일은 마이크로 파일로 잘리게 된다. 또는, 매크로가 된 파일이 마이크로 파일의 MF-inode 연결 목록에서 제거될 수 있고, 공통 정보 노드가 이 파일에 할당된다. 성능이 영향을 받지 않기 때문에, 현재 상황 역시 유지될 수 있다. 대조적으로, 매크로 파일이 마이크로 파일로 바뀌는 경우, 마이크로 파일은 MF-inode 연결 목록에 추가될 수 있다. 선택적으로, 시스템 유휴 상태인 경우 디스크 조각 모음 프로그램(조각 모음 데몬)를 이용하여 이를 완료할 수 있다.
본 발명의 본 실시예에서, 리눅스의 I/O 스케줄러가 블록 장치의 I/O 서브 시스템의 주요 구성요소이고, 범용 블록 계층과 블록 장치 드라이버 사이에 위치한다. 리눅스 커널 컴포넌트가 일부 데이터를 읽거나 쓸 필요가 있는 경우에, 일단 요청이 송신되면, 커널은 요청을 즉시 실행하지 않고 이 요청의 실행을 연기한다. 할당 연기는 블록 장치의 성능의 핵심 메커니즘이다. 신규 데이터 블록을 전송하는 경우, 커널은 줄곧 대기 상태에 있는 이전 요청을 연장함으로써 신규 요청이 만족될 수 있는지 여부를 점검한다.
구체적으로, 각각의 블록 장치 프로그램은 요청 큐와 연관되어 있다. 블록 장치를 초기화하는 동안, 요청 큐가 할당되고 초기화된다. 이때, 블록 장치 드라이버에 대해 특정한 I/O 스케줄링 알고리즘이 지정될 수 있다. 기본적으로, 이 시스템의 디폴트 스케줄링 알고리즘이 사용된다. 디폴트 스케줄링 알고리즘에서, 이전에 처리된 요청에 가장 가까운 요청이 먼저 처리되고, 그러므로 요청이 매우 긴 시간 동안 무시되며; 이 경우가 엘리베이터 알고리즘(elevator algorithm)이다. 이러한 경우를 피하기 위해, 요청이 엘리베이터 알고리즘에 전송되는 경우, 이 요청이 미처리된 채로 남겨지는 경우를 피하기 위해 타임아웃 타이머가 시작된다. 사용자 경험을 개선하기 위하여, 읽기 요청은 일반적으로 쓰기 요청에 우선하는데, 일반적으로 읽기 요청은 요청을 송신하는 프로세스를 방해하기 때문이다.
본 발명의 본 실시예에서, 마이크로 파일의 호출 요청 메시지는 이 알고리즘을 이용하여 처리될 수 있고; 선택적으로, 다음의 I/O 스케줄링(scheduler) 알고리즘 방법을 이용하여 추가로 스케줄링될 수 있다. S120에서, L개의 제1 파일 호출 요청 메시지는 L개의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보에 따라 M개의 제1 파일 디스패치 큐(MF dispatch Queue)에 개별적으로 추가될 수 있다(M은 정수). 파일 시스템은 대응하는 제1 파일 디스패치 큐를 마이크로 파일의 호출 요청 메시지에 할당한다. 파일 시스템에 의해 수신된 제1 파일 호출 요청 메시지의 경우, 물리적 섹터가 연속적인 주소를 가진 적어도 2개의 제1 파일 호출 요청 메시지가 동일한 제1 파일 디스패치 큐에 추가될 수 있도록, L개의 제1 파일 호출 요청 메시지는 각각의 호출 요청 메시지 내의 물리적 섹터 정보에 따라 M개의 제1 파일 디스패치 큐에 개별적으로 추가될 수 있다. 여기서, 각각의 제1 파일 디스패치 큐는 K개의 제1 파일 호출 요청 메시지를 포함하고, K와 M은 둘 다 양의 정수이다.
예를 들어, 본 발명의 본 실시예에서, 파일 시스템은 6개의 제1 파일 호출 요청 메시지를 결정하는데, 즉 L=6이다. 제1 파일 디스패치 큐, 즉 마이크로 파일의 디스패치 큐가 하나만 있는 경우, M=1이고, 6개의 제1 파일 호출 요청 메시지 중 3개의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보가 3개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 연속적이고, 나머지 3개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 불연속적이라는 것을 나타낸다. 6번째 제1 파일 호출 요청 메시지는 모두 제1 파일 디스패치 큐에 배치되며, 물리적 섹터가 연속적인 주소를 가진 3개의 제1 파일 호출 요청 메시지는 결합되는데, 즉 이때, K=3이다. 물리적 섹터가 불연속적인 주소를 가진 나머지 3개의 제1 파일 호출 요청 메시지는 일시적으로 처리되지 않는다. 신규 제1 파일 호출 요청 메시지가 있는 경우, 물리적 섹터의 주소가 연속적인지 여부가 다시 결정된다. 연속적이면, 결합이 수행되거나; 또는 불연속적이면, 여전히 처리가 수행되지 않는다. 선택적으로, 물리적 섹터의 주소가 연속적인지 여부를 판정함으로써, 결합 처리가 수행될지 여부가 결정된다. 호출된 제1 파일의 크기에 따라 제1 파일 호출 요청 정보가 추가로 결합될 수 있다. 예를 들어, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 2개의 제1 파일의 크기의 합이 정확히 하나의 데이터 블록(block)을 구성할 수 있는 경우, 2개의 제1 파일 호출 요청 메시지 역시 결합될 수 있으며, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 대응하는 제1 파일은 동일한 데이터 블록 내의 동일한 물리적 섹터에 쓰여진다. 본 발명은 이를 제한하지 않는다.
선택적으로, 다른 예를 들면, 파일 시스템은 6개의 제1 파일 호출 요청 메시지를 결정하는데, 즉 L=6이다. 제1 파일 디스패치 큐가 5개의 디스패치 큐로 분할되는 경우, 즉 마이크로 파일의 5개의 디스패치 큐가 있는 경우, M=5이고, 6개의 제1 파일 호출 요청 메시지 중 3개의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보가 3개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 연속적이고, 나머지 3개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 불연속적이라는 것을 나타낸다. 물리적 섹터가 연속적인 주소를 가진 3개의 제1 파일 호출 요청 메시지는 동일한 제1 파일 디스패치 큐에 배치된다. 예를 들어, 3개의 제1 파일 호출 요청 메시지는 첫번째 제1 파일 디스패치 큐에 배치되고, 물리적 섹터가 불연속적인 주소를 가진 나머지 3개의 제1 파일 호출 요청 메시지는 다른 3개의 제1 파일 디스패치 큐에 배치될 수 있으며, 나머지 하나의 제1 파일 디스패치 큐는 일시적으로 비어 있다. 이 경우에, 3개의 제1 파일 호출 요청 메시지는 첫번째 제1 파일 디스패치 큐에 존재하는데, 즉 K=3이다. 이때, 제1 파일 디스패치 큐 내의 3개의 제1 파일 호출 요청 메시지에 대해 결합 처리가 수행되어 제1 파일 디스패치 큐의 하나의 호출 요청 메시지를 획득할 수 있다. 각각 하나의 제1 파일 호출 요청 메시지를 가진 다른 3개의 디스패치 큐에 대해 결합 처리가 먼저 수행되지 않을 수 있고, 다른 3개의 디스패치 큐는 다른 제1 파일 호출 요청 메시지의 할당을 계속 기다린다. 유사하게, 결합될 수 있는 복수의 제1 파일 호출 요청 메시지가 몇몇 제1 파일 디스패치 큐에 존재하는 경우, 첫번째 제1 파일 디스패치 큐의 경우와 같이, 동일한 제1 파일 디스패치 큐에 있는 복수의 제1 파일 호출 요청 메시지는 결합된다. 선택적으로, 물리적 섹터의 주소가 연속적인지 여부를 판정함으로써, 결합 처리가 수행될지 여부가 판정된다. 호출된 제1 파일의 크기에 따라 제1 파일 호출 요청 정보가 추가로 결합될 수 있다. 예를 들어, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 2개의 제1 파일의 크기의 합이 정확히 하나의 데이터 블록(block)을 구성할 수 있는 경우, 2개의 제1 파일 호출 요청 메시지 또한 결합될 수 있으며, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 대응하는 제1 파일은 동일한 데이터 블록 내의 동일한 물리적 섹터에 쓰여진다. 본 발명은 이를 제한하지 않는다.
선택적으로, 다른 예를 들면, 파일 시스템은 6개의 제1 파일 호출 요청 메시지를 결정하는데, 즉 L=6이다. 3개의 제1 파일 디스패치 큐가 있으면, 즉 M=3이고, 6개의 제1 파일 호출 요청 메시지 중 3개의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보는 3개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 연속적이고, 나머지 3개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 불연속적이라는 것을 나타낸다. 물리적 섹터가 연속적인 주소를 가진 3개의 제1 파일 호출 요청 메시지는 동일한 제1 파일 디스패치 큐에 배치되고, 예를 들어 3개의 제1 파일 호출 요청 메시지는 첫번째 제1 파일 디스패치 큐에 배치되고, 물리적 주소가 불연속적인 나머지 3개의 제1 파일 호출 요청 메시지는 제1 파일 호출 요청 메시지의 크기에 따라 또는 무작위로 3개의 제1 파일 디스패치 큐에 할당될 수 있거나; 또는 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 저장 주소의 상관관계에 따라 3개의 제1 파일 디스패치 큐에 할당될 수 있거나; 또는 3개의 제1 파일 디스패치 큐에 무작위로 할당될 수 있다. 그런 다음, 제1 파일 디스패치 큐의 하나의 호출 요청 메시지를 획득하기 위해, 물리적 섹터 정보가 연속적인 메시지로서, 첫번째 제1 파일 디스패치 큐에 있는 3개의 제1 파일 호출 요청 메시지에 대해 결합 처리가 수행된다. 다른 2개의 제1 파일 디스패치 큐가 먼저 처리되지 않을 수 있거나, 또는 결합되지 않은 제1 파일 호출 요청 메시지가 여전히 첫번째 제1 파일 디스패치 큐에 존재하면, 처리 역시 일시적으로 수행되지 않는다. 유사하게, 결합될 수 있는 복수의 제1 파일 호출 요청 메시지가 몇몇 제1 파일 디스패치 큐에 존재하는 경우, 첫번째 제1 파일 디스패치 큐의 경우와 같이, 동일한 제1 파일 디스패치 큐 내의 복수의 제1 파일 호출 요청 메시지가 결합된다. 선택적으로, 물리적 섹터의 주소가 연속적인지 여부를 판정함으로써, 결합 처리가 수행될지 여부가 결정된다. 호출된 제1 파일의 크기에 따라 제1 파일 호출 요청 정보가 추가로 결합될 수 있다. 예를 들어, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 2개의 제1 파일의 크기의 합이 정확히 하나의 데이터 블록(block)을 구성할 수 있는 경우, 2개의 제1 파일 호출 요청 메시지 또한 결합될 수 있고, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 대응하는 제1 파일은 동일한 데이터 블록 내의 동일한 물리적 섹터에 쓰여진다. 본 발명은 이를 제한하지 않는다.
선택적으로, 파일 시스템에 의해 수신된 호출 요청 메시지는 L개의 제1 파일 호출 요청 메시지의 서로 다른 프로세스 ID(process ID, PID)에 따라 그룹화될 수 있다. 그런 다음, 그룹화된 호출 요청 메시지 중 제1 파일 호출 요청 메시지는 제1 파일 디스패치 큐에 저장된다. 여기서, 제1 파일 디스패치 큐는 M개의 디스패치 큐를 포함할 수 있다. 선택적으로, 구조가 파일 시스템에 새롭게 추가될 수 있고, 이 구조는 어느 호출 요청 메시지가 제1 파일 호출 요청 메시지인지를 판정하기 위해 사용된다. 또는, S110에서 제1 파일 호출 요청 메시지가 결정되는 경우, 제1 파일 호출 요청 메시지가 식별될 수 있고, 제1 파일 호출 요청 메시지는 식별자를 이용하여 식별되며, 제1 파일 호출 요청 메시지는 대응하는 M개의 제1 파일 디스패치 큐에 할당된다. 여기서, 각각의 제1 파일 디스패치는 상응하게 K개의 제1 파일 호출 요청 메시지를 포함할 수 있다.
S130에서, 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하기 위해, 파일 시스템 내의 M개의 제1 파일 디스패치 큐 각각은, 각각의 제1 파일 디스패치 큐에 포함된 K개의 제1 파일 호출 요청 메시지를 처리할 수 있다. 구체적으로, L개의 제1 파일 호출 요청 메시지는 M개의 제1 파일 디스패치 큐에 추가된다. 각각의 제1 파일 디스패치 큐의 경우, 각각의 제1 파일 디스패치 큐에 포함된 적어도 2개의 제1 파일 호출 요청 메시지가 연속적인 물리적 섹터(bi_sector) 주소를 가진 경우, 적어도 2개의 제1 파일 호출 요청 메시지가 하나의 호출 요청 메시지, 즉 제1 파일 디스패치 큐의 호출 요청 메시지로 결합될 수 있도록, 적어도 2개의 제1 파일 호출 요청 메시지에 대해 결합 처리가 수행되어 호출하는 횟수를 줄일 수 있다. 예를 들어, 임의의 제1 파일 디스패치 큐의 경우, 제1 파일 디스패치 큐의 하나의 호출 요청 메시지를 생성하기 위해, 제1 파일 디스패치 큐는 K개의 제1 파일 호출 요청 메시지를 포함하고, K개의 제1 파일 호출 요청 메시지는 K개의 제1 파일 호출 요청 메시지에 포함된 물리적 섹터 정보에 따라 처리될 수 있다. 여기서, 제1 파일 디스패치 큐의 호출 요청 메시지는 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하기 위해 사용된다. 선택적으로, 파일 시스템 추가적으로, 제1 파일 호출 요청 메시지에 대해 삭제 처리를 수행하여 불필요한 호출 요청을 삭제할 수 있다. 이런 방식으로, 호출 횟수 역시 줄어들 수 있다.
선택적으로, 제1 파일 디스패치 큐가 제1 파일 호출 요청 메시지를 하나만 포함하는 경우, 즉 다른 호출 요청 메시지가 없는 경우(여기서, 다른 호출 요청 메시지의 물리적 섹터와 호출 요청 메시지의 물리적 섹터가 연속적인 주소를 가지고 있음), 제1 파일 호출 요청 메시지는 일시적으로 처리되지 않을 수 있다. 제1 파일 디스패치 큐에 포함된 적어도 2개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 연속적인 경우, 결합 처리가 그 다음에 수행된다. 본 발명은 이를 제한하지 않는다.
S140에서, 제1 파일 디스패치 큐에 포함된 K개의 제1 파일 호출 요청 메시지에 대해 결합 처리 또는 삭제 처리를 수행한 후에, 파일 시스템은 제1 파일 디스패치 큐의 획득된 호출 요청 메시지에 따라 대응하는 제1 파일에 접근할 수 있다. 구체적으로, 각각의 제1 파일 호출 요청 메시지가 접근 경로 정보를 포함할 수 있으므로, 제1 파일 디스패치 큐에 대해 결합이 수행된 후에, 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 대응하는 접근 경로 정보를 여전히 가지고 있다. 따라서, 접근 경로 정보에 따라 제1 파일에 대해 접근 처리가 상응하게 수행될 수 있다. 선택적으로, 제1 파일 디스패치 큐의 호출 요청 메시지는 저장 매체 요청 큐(mmc_request)에 송신될 수 있고, mmc_request는 제1 파일 디스패치 큐의 호출 요청 메시지를 처리하며, 장치 컨트롤러를 설정한다. 여기서, 장치 컨트롤러는 주로 데이터를 생성하고 전송하기 위해 사용된다. 데이터 전송이 완료된 후에, 현재 호출 요청 메시지가 대응하는 디스패치 큐에서 삭제될 수 있으며, 다음의 요청에 대응하는 데이터 전송이 시작된다.
전술한 프로세스의 순서 번호가 본 발명의 실시예에서의 실행 순서를 의미하지 않는다고 이해해야 한다. 프로세스의 실행 순서는 프로세스의 기능과 내부 로직에 따라 결정될 것이지만, 본 발명의 실시예의 구현 프로세스에 대한 어떠한 제한도 부과하지 않을 것이다.
따라서, 본 발명의 본 실시예의 파일에 접근하기 위한 방법에 의하면, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리가 수행될 수 있으면서 또한 마이크로 파일을 호출하는 횟수가 줄어들 수 있도록, 마이크로 파일의 호출 요청 메시지가 결정되고, 대응하는 제1 파일 디스패치 큐가 마이크로 파일의 호출 요청 메시지에 할당된다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에, I/O 횟수가 증가되면서 또한 과도한 메모리 자원이 점유되는 것을 피할 수 있고, 시스템 호출의 횟수가 줄어들며, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다.
선택적으로, 일 실시예에서, 본 발명의 본 실시예의 파일에 접근하기 위한 방법(100)은 이하를 더 포함한다.
S150: 파일을 저장하는 물리적 섹터 상에 N개의 제1 파일 저장 공간 그룹을 결정한다. 여기서, N개의 제1 파일 저장 공간 그룹은 제1 파일을 저장하기 위해 사용된다.
본 발명의 본 실시예에서, 구체적으로, 파일 시스템은 마이크로 파일의 접근을 위한 독립적인 물리적 섹터를 설정할 수 있다. 물리적 섹터는 복수의 독립적인 영역을 포함하고, 이 영역은 복수의 제1 파일 저장 공간 그룹(MF Group)을 포함하며, 이 영역의 크기는 타임슬롯 애플리케이션에 따라 조절되고 최적화될 수 있고, 이 영역에 포함된 MF 그룹의 개수가 요구사항에 따라 동적으로 조절될 수 있다. 선택적으로, 독립적으로 마이크로 파일을 저장하는 복수의 MF 그룹의 경우, 각각의 MF 그룹은 복수의 데이터베이스(데이트 블록(date block))을 포함할 수 있고, 각각의 데이트 블록은 하나 이상의 마이크로 파일을 저장할 수 있다. 본 발명은 이를 제한하지 않는다.
구체적으로, 시스템 유휴 상태인 경우 디스크 조각 모음 프로그램(조각 모음 데몬)를 이용하여, 복수의 MF 그룹이 결합되거나 및/또는 삭제될 수 있다. 예를 들어, eMMC의 특징을 더 잘 이용할 수 있도록, 복수의 MF 그룹이 결합될 수 있으며, 복수의 제1 파일이 연속적인 물리적 섹터 상에 저장되는 것을 보장한다. 이 시스템을 실행하는 동안, 파일의 삭제 연산 때문에, 파일을 저장하기 위해 사용된 일부 MF 그룹 내 공간이 여분이다. 즉, MF 그룹 내 대부분의 공간이 삭제될 목록에 추가된다. 적어도 2개의 MF 그룹 내의 데이터를 결합하고 하나 이상의 MF 그룹 내의 데이터를 저장하기 위해, 이들 MF 그룹이 결합될 수 있다. 따라서, 더 많은 공간이 해제되며, 공간 이용율이 개선된다.
선택적으로, 일 실시예에서, MF 그룹에 대해 삭제 처리 역시 수행될 수 있다. 예를 들어, MF 그룹에 존재하는 일부 마이크로 파일이 매크로 파일로 바뀌면, 예를 들어 매크로 파일의 크기가 4M의 범위를 초과하면, 파일이 매크로가 된 MF 그룹이 발견되고 식별될 수 있다. 그런 다음, 삭제될 목록을 탐색하는 경우, MF 그룹에 어떤 파일도 존재하지 않는 경우, 즉 MF 그룹이 비어 있고, 자원을 해제하기 위해 MF 그룹이 삭제된 경우에 삭제가 수행될 수 있도록, 조각 모음 데몬은 MF 그룹에 포함된 제1 파일이 모두 삭제된 목록에 추가된 것을 발견한다.
선택적으로, 일 실시예에서, MF 그룹에 대해 추가 처리 역시 수행될 수 있다. 예를 들어, 마이크로 파일이 새롭게 추가된 경우, 예를 들어 매크로 파일이 마이크로 파일로 바뀐 경우, 조각 모음 데몬은 여분의 공간을 가진 MF 그룹에 대해먼저 복수의 MF 그룹을 검색한다. 마이크로 파일이 MF 그룹에 저장될 수 있게 하는 가용한 저장 공간이 존재하는 경우, 새롭게 추가된 마이크로 파일은 MF 그룹에 저장된다. 여분의 공간을 가진 MF 그룹이 없으면, 조각 모음 데몬은 신규 MF 그룹을 추가한다. 여기서, 신규 MF 그룹은 마이크로 파일 및 다른 새롭게 추가된 마이크로 파일을 저장하기 위해 사용된다.
본 발명의 본 실시예에서, 파일 시스템은 적어도 하나의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 접근되고 호출될 필요가 있는 제1 파일을 위한 파일을 저장하는 MF 그룹을 검색할 수 있다.
전술한 프로세스의 순서 번호가 본 발명의 실시예에서의 실행 순서를 의미하지 않는다고 이해해야 한다. 프로세스의 실행 순서는 프로세스의 기능과 내부 로직에 따라 결정될 것이지만, 본 발명의 실시예의 구현 프로세스에 대한 어떠한 제한도 부과하지 않을 것이다.
따라서, 본 발명의 본 실시예의 파일에 접근하기 위한 방법에 의하면, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리가 수행될 수 있도록, 마이크로 파일의 호출 요청 메시지가 결정되고, 대응하는 제1 파일 디스패치 큐가 마이크로 파일의 호출 요청 메시지에 할당된다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에, I/O 횟수가 증가되면서 또한 과도한 메모리 자원이 점유되는 것을 피할 수 있고, 시스템 호출의 횟수가 줄어들며, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다. 또한, 대응하는 동적 저장 영역이 마이크로 파일에 추가로 할당될 수 있으며, 상이한 마이크로 파일이 저장을 위해 수집된다. 이런 방식으로, 저장 공간의 낭비가 줄어들 수 있으며, 공간 이용율이 향상된다.
이상에서, 도 1 및 도 2를 참조하여, 본 발명의 본 실시예에 따른 파일에 접근하기 위한 방법에 대해 상세하게 설명하였다. 이하에서, 도 3 및 도 4를 참조하여, 본 발명의 일 실시예에 따른 파일에 접근하기 위한 장치(200)에 대해 설명한다.
도 3에 도시된 바와 같이, 본 발명의 본 실시예에 따른, 파일에 접근하기 위한 장치(200)는,
L개의 제1 파일 호출 요청 메시지를 결정하도록 구성된 제1 결정 모듈(210) - L개의 제1 파일 호출 요청 메시지 각각은 제1 파일을 호출하도록 요청하기 위해 사용되고, 제1 파일의 크기는 임계값보다 작거나 같으며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 물리적 섹터 정보는 제1 파일을 저장하는 물리적 섹터의 주소를 포함하며, L은 1보다 큰 정수임 -;
물리적 섹터 정보에 따라, 제1 결정 모듈에 의해 결정된 L개의 제1 파일 호출 요청 메시지를 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐에 개별적으로 추가하도록 구성된 할당 모듈(220) - M은 양의 정수임 -;
각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하기 위해, 할당 모듈에 의해 할당된 M개의 제1 파일 디스패치 큐 각각에 포함되는 K개의 제1 파일 호출 요청 메시지를 처리하도록 구성된 처리 모듈(230) - 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하도록 요청하기 위해 사용되고, K는 양의 정수임 -; 및
처리 모듈에 의해 획득된, 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일에 접근하도록 구성된 호출 모듈(240)을 포함한다.
구체적으로, 결정 모듈(210)은 사용자 장비에 의해 송신된 파일 호출 요청 메시지 중에서 L개의 제1 파일 호출 요청 메시지를 결정한다. 여기서, L은 1보다 큰 정수이다. 제1 파일 호출 요청 메시지는 제1 파일을 호출하기 위해 사용되고, 제1 파일은 마이크로 파일이며, 각각의 마이크로 파일 호출 요청 메시지는 물리적 섹터 정보를 포함할 수 있고, 물리적 섹터 정보는 마이크로 파일을 저장하는 물리적 섹터의 주소를 포함한다. 할당 모듈(220)은 M개의 제1 파일 디스패치 큐를 결정 모듈(210)에 의해 결정된 L개의 제1 파일 호출 요청 메시지에 할당하고 - 여기서, M은 양의 정수임 -; 각각의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보에 따라 L개의 제1 파일 호출 요청 메시지를 M개의 제1 파일 디스패치 큐에 개별적으로 추가한다. 각각의 제1 파일 디스패치 큐에 대응하는 호출 요청 메시지가 획득될 수 있도록, 처리 모듈(230)은 각각의 제1 파일 디스패치 큐에 할당된 K개의 제1 파일 호출 요청 메시지를 처리하는데, 예를 들어 K개의 제1 파일 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리를 수행할 수 있다. 호출 모듈(240)은 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출할 수 있는데, 예를 들어 제1 파일에 접근할 수 있다.
따라서, 본 발명의 본 실시예에서 파일에 접근하기 위한 장치는, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리가 수행될 수 있고, 마이크로 파일을 호출하는 횟수가 줄어들 수 있도록, 마이크로 파일의 호출 요청 메시지를 결정하고, 대응하는 제1 파일 디스패치 큐를 마이크로 파일의 호출 요청 메시지에 할당한다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에, I/O 횟수가 증가되면서 또한 과도한 메모리 자원이 점유되는 것을 피할 수 있고, 시스템 호출의 횟수가 줄어들며, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다.
본 발명의 본 실시예에서, 파일 시스템 내의 파일에 접근하기 위한 장치(200)의 결정 모듈(210)은 수신된 파일 호출 요청 메시지로부터 L개의 제1 파일 호출 요청 메시지를 결정할 수 있다. L개의 제1 파일 호출 요청 메시지 중 각각의 제1 파일 요청 메시지는 하나의 대응하는 제1 파일을 호출하도록 요청하기 위해 사용된다. 선택적으로, 제1 파일은 마이크로 파일(Micro File, "MF")이다. 실제 적용에 따라, 임계값이 설정될 수 있다. 파일 크기가 임계값보다 작거나 같은 파일이 마이크로 파일, 즉 제1 파일로서 결정된다. 예를 들어, 임계값은 1K로 설정될 수 있다. 즉, 파일 크기가 1K보다 작거나 같은 파일이 마이크로 파일로서 정의되고, 임계값은 2M, 또는 4M 등으로 설정될 수도 있다. 본 발명은 이를 제한하지 않는다. 이런 방식으로, 파일 시스템은 수신된 파일 호출 요청 메시지로부터 마이크로 파일의 호출 요청 메시지를 결정할 수 있고, 이러한 마이크로 파일의 호출 요청 메시지는 파일 시스템으로부터 대응하는 마이크로 파일을 호출하도록 요청하기 위해 사용된다.
본 발명의 본 실시예에서, 파일 시스템은 L개의 제1 파일 호출 요청 메시지를 결정하고, 한 번에 한 개의 제1 파일 호출 요청 메시지를 수신할 수 있거나, 또는 한 번에 복수 개의 제1 파일 호출 요청 메시지를 수신할 수 있다. 예를 들어, 파일 시스템은 한 번에 3개의 제1 파일 호출 요청 메시지를 수신할 수 있다. 이 경우에, 파일 시스템이 L개의 제1 파일 호출 요청 메시지를 결정하는 경우, 파일 시스템은 수신된 3개의 제1 파일 호출 요청 메시지를 결정한다. 또는, 파일 시스템은 임의의 개수의 제1 파일 호출 요청 메시지를 수신할 수도 있다. 개수가 L로 증가하면, 파일 시스템은 L개의 제1 파일 호출 요청 메시지를 결정한다. L의 값이 실제 적용에 따라 결정될 수 있거나, 또는 경험적인 값에 따라 설정될 수 있다. 본 발명은 이를 제한하지 않는다.
선택적으로, 본 발명의 본 실시예에서, 파일에 접근하기 위한 장치(200)의 결정 모듈(210)에 의해 결정된 L개의 제1 파일 호출 요청 메시지 각각은 물리적 섹터 정보를 포함할 수 있다. 여기서, 물리적 섹터 정보는 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일을 저장하는 물리적 섹터의 주소를 포함한다. 선택적으로, 물리적 섹터 정보는 구체적으로, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 시작 주소, 호출된 제1 파일의 크기, 및 제1 파일 호출 요청 메시지를 전달하는 장치의 관련 정보 등을 포함할 수 있다. 파일 시스템은 물리적 섹터 정보를 포함하는 제1 파일 호출 요청 메시지에 따라, 호출될 필요가 있는 제1 파일을 결정할 수 있다.
선택적으로, 본 발명의 본 실시예에서, 결정 모듈(210)에 의해 결정된 제1 파일 호출 요청 메시지는 접근 경로 정보를 더 포함할 수 있고, 접근 경로 정보는 제1 파일을 저장하는 물리적 섹터의 경로 정보를 상응하게 포함하며, 대응하는 마이크로 파일을 저장하는 물리적 섹터는 접근 경로 정보에 따라 파일 시스템에서 발견될 수 있다. 구체적으로, 하나의 파일이 열리거나(open) 또는 닫히거나(close) 또는 신규 파일이 생성되는 경우, 파일 시스템의 커널이 하나의 파일 서술자를 할당하고 이 파일 서술자를 사용자 프로그램에 반환하며, 파일 서술자의 엔트리 내의 포인터가 새롭게 열린 파일을 가리킨다. 파일에 접근하는 경우, 사용자 프로그램은 파일 서술자를 커널에 전송하고, 커널은 파일 서술자에 따라 대응하는 엔트리를 찾으며, 엔트리 내의 포인터를 이용하여 대응하는 파일을 찾는다. 각각의 파일 구조는 덴트리(directory entry, dentry) 구조를 가리키는 포인터를 가지고 있고, 파일의 정보 노드가 경로에 따라 발견될 수 있다. 디스크 읽기 횟수를 줄이기 위해, 커널은 일반적으로 디렉토리의 트리 유사 구조를 캐싱하며, 디렉토리의 트리 유사 구조는 덴트리 캐시라고 한다. 각각의 정보 노드는 덴트리 구조이다. 검색이 이 경로 중 일부의 덴트리를 따라 수행될 필요가 있을 뿐이다. 덴트리 캐시는 최근에 접근된 디렉토리 엔트리만을 저장하고 있다. 접근되지 않았으면, 디렉토리 엔트리가 자기 디스크에서 메모리로 읽힐 필요가 있다.
구체적으로, 마이크로 파일의 경우, 파일 시스템은 연결 목록 형태로 마이크로 파일-정보 노드(MF-inode)를 저장할 수 있다. 이들 마이크로 파일-정보 노드는 대응하는 마이크로 파일의 접근 경로 정보를 저장하고 있으며, 마이크로 파일이 정보 노드 내의 접근 경로 정보에 따라 검색될 수 있다. i번째 제1 파일 호출 요청 메시지를 수신하는 경우, 파일 시스템은 저장된 MF-inode 연결 목록에서 i번째 제1 파일의 대응하는 정보 노드를 검색하고; i번째 제1 파일의 정보 노드가 연결 목록에 존재하면, i번째 제1 파일의 정보 노드에 따라, 제1 파일의 저장 경로를 나타내기 위해 사용된 접근 경로 정보를 결정한다. 여기서, 접근 경로 정보는 i번째 제1 파일 호출 요청 메시지에 저장될 수 있다. i번째 제1 파일의 대응하는 정보 노드가 MF-inode 연결 목록에서 발견될 수 없는 경우, i번째 제1 파일에 대응하는 신규 정보 노드가 요청되고, 신규 정보 노드는 MF-inode 연결 목록에 추가되며, 저장 경로 및 제1 파일에 대응하는 파일명이 신규 정보 노드에 저장되고, 정보 노드의 멤버 변수로서 기록되며, 접근 경로 정보 역시 i번째 제1 파일 호출 요청 메시지에 저장된다.
선택적으로, 마이크로 파일에 대응하는 MF-inode 연결 목록의 경우, 파일 데이터가 계속 쓰여지기 때문에, MF-inode 연결 목록에 포함된 정보 노드에 대응하는 파일이 마이크로 파일에서 매크로 파일로 바뀌는 경우, 예를 들어 마이크로 파일의 크기가 4M을 초과하는 경우, 매크로 파일이 마이크로 파일로 잘릴 수 있도록, 절삭(O_TRUNC) 연산이 호출될 수 있다. 또는, 매크로가 된 파일은 마이크로 파일의 MF-inode 연결 목록에서 제거될 수 있고, 공통 정보 노드가 이 파일에 할당된다. 성능이 영향을 받지 않으므로, 현재의 상황 역시 유지될 수 있다. 대조적으로, 매크로 파일이 마이크로 파일로 바뀌는 경우, 마이크로 파일은 MF-inode 연결 목록에 추가될 수 있다. 선택적으로, 시스템 유휴 상태인 경우 디스크 조각 모음 프로그램(조각 모음 데몬)를 이용하여 이를 완료할 수 있다.
본 발명의 본 실시예에서, 리눅스의 I/O 스케줄러가 블록 장치의 I/O 서브 시스템의 주요 구성요소이고, 범용 블록 계층과 블록 장치 드라이버 사이에 위치한다. 리눅스 커널 컴포넌트가 일부 데이터를 읽거나 쓸 필요가 있는 경우, 일단 요청이 송신되면, 커널은 요청을 즉시 실행하는 대신에 이 요청의 실행을 연기한다. 할당 연기는 블록 장치의 성능의 핵심 메커니즘이다. 신규 데이터 블록을 전송하는 경우, 커널은 줄곧 대기 상태에 있는 이전의 요청을 연장함으로써 신규 요청이 만족될 수 있는지 여부를 점검한다.
구체적으로, 각각의 블록 장치 프로그램은 요청 큐와 연관되어 있다. 블록 장치를 초기화하는 동안, 요청 큐가 할당되고 초기화된다. 이때, 블록 장치 드라이버에 대해 특정한 I/O 스케줄링 알고리즘이 지정될 수 있다. 기본적으로, 이 시스템의 디폴트 스케줄링 알고리즘이 사용된다. 디폴트 스케줄링 알고리즘에서, 이전에 처리된 요청에 가장 가까운 요청이 먼저 처리되고, 그러므로 요청이 매우 긴 시간 동안 무시되며; 이 경우가 엘리베이터 알고리즘이다. 이러한 경우를 피하기 위해, 요청이 엘리베이터 알고리즘에 전송되는 경우, 요청이 미처리된 채로 남아 있는 경우를 피하기 위해 타임아웃 타이머가 시작된다. 사용자 경험을 개선하기 위하여, 읽기 요청은 일반적으로 쓰기 요청에 우선하는데, 읽기 요청이 일반적으로 요청을 송신하는 프로세스를 방해하기 때문이다.
본 발명의 본 실시예에서, 마이크로 파일의 호출 요청 메시지는 이 알고리즘을 이용하여 처리될 수 있고; 선택적으로, 다음의 I/O 스케줄링(scheduler) 알고리즘 방법을 이용하여 추가로 스케줄링될 수 있다. 본 발명의 본 실시예에서, 할당 모듈(220)은 L개의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보에 따라 L개의 제1 파일 호출 요청 메시지를 M개의 제1 파일 디스패치 큐(MF dispatch Queue)에 개별적으로 추가할 수 있다. 파일 시스템은 대응하는 제1 파일 디스패치 큐를 마이크로 파일의 호출 요청 메시지에 할당한다. 파일 시스템에 의해 수신된 제1 파일 호출 요청 메시지의 경우, 물리적 섹터가 연속적인 주소를 가진 적어도 2개의 제1 파일 호출 요청 메시지가 동일한 제1 파일 디스패치 큐에 추가될 수 있도록, L개의 제1 파일 호출 요청 메시지는 각각의 호출 요청 메시지 내의 물리적 섹터 정보에 따라 M개의 제1 파일 디스패치 큐에 개별적으로 추가될 수 있다. 여기서, 각각의 제1 파일 디스패치 큐는 K개의 제1 파일 호출 요청 메시지를 포함하고, K와 M은 둘 다 양의 정수이다.
예를 들어, 본 발명의 본 실시예에서, 파일 시스템은 6개의 제1 파일 호출 요청 메시지를 결정하는데, 즉 L=6이다. 제1 파일 디스패치 큐, 즉 마이크로 파일의 디스패치 큐가 하나만 있는 경우, M=1이고, 6개의 제1 파일 호출 요청 메시지 중 3개의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보는 3개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 연속적이고, 나머지 3개가 불연속적이라는 것을 나타낸다. 6번째 제1 파일 호출 요청 메시지는 모두 제1 파일 디스패치 큐에 배치되며, 물리적 섹터가 연속적인 주소를 가진 3개의 제1 파일 호출 요청 메시지가 결합된다. 즉, 이때, K=3이다. 물리적 섹터가 불연속적인 주소를 가진 나머지 3개의 제1 파일 호출 요청 메시지는 일시적으로 처리되지 않는다. 신규 제1 파일 호출 요청 메시지가 있는 경우, 물리적 섹터의 주소가 연속적인지 여부가 다시 결정된다. 연속적이면, 결합이 수행되거나; 또는 불연속적이면, 처리가 여전히 수행되지 않는다. 선택적으로, 물리적 섹터의 주소가 연속적인지 여부를 판정함으로써, 결합 처리가 수행될지 여부가 결정된다. 호출된 제1 파일의 크기에 따라 제1 파일 호출 요청 정보가 추가로 결합될 수 있다. 예를 들어, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 2개의 제1 파일의 크기의 합이 정확히 하나의 데이터 블록(block)을 구성할 수 있는 경우, 2개의 제1 파일 호출 요청 메시지 역시 결합될 수 있고, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 대응하는 제1 파일은 동일한 데이터 블록 내의 동일한 물리적 섹터에 쓰여진다. 본 발명은 이를 제한하지 않는다.
선택적으로, 다른 예를 들면, 파일 시스템은 6개의 제1 파일 호출 요청 메시지를 결정하는데, 즉 L=6이다. 제1 파일 디스패치 큐가 5개의 디스패치 큐로 분할되는 경우, 즉 마이크로 파일의 5개의 디스패치 큐가 있는 경우, M=5이고, 6개의 제1 파일 호출 요청 메시지 중 3개의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보는 3개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 연속적이고, 나머지 3개가 불연속적이라는 것을 나타낸다. 물리적 섹터가 연속적인 주소를 가진 3개의 제1 파일 호출 요청 메시지는 동일한 제1 파일 디스패치 큐에 배치된다. 예를 들어, 3개의 제1 파일 호출 요청 메시지는 첫번째 제1 파일 디스패치 큐에 배치되고, 물리적 섹터가 불연속적인 주소를 가진 나머지 3개의 제1 파일 호출 요청 메시지는 다른 3개의 제1 파일 디스패치 큐에 배치될 수 있으며, 나머지 하나의 제1 파일 디스패치 큐는 일시적으로 비어 있다. 이때, 3개의 제1 파일 호출 요청 메시지는 첫번째 제1 파일 디스패치 큐에 존재하는데, 즉 K=3이다. 이 경우에, 제1 파일 디스패치 큐의 하나의 호출 요청 메시지를 획득하기 위해, 제1 파일 디스패치 큐 내의 3개의 제1 파일 호출 요청 메시지에 대해 결합 처리가 수행될 수 있다. 각각 하나의 제1 파일 호출 요청 메시지를 가진 다른 3개의 디스패치 큐에 대해 결합 처리가 먼저 수행되지 않을 수 있고, 다른 3개의 디스패치 큐는 다른 제1 파일 호출 요청 메시지의 할당을 계속 기다린다. 유사하게, 결합될 수 있는 복수의 제1 파일 호출 요청 메시지가 몇몇 제1 파일 디스패치 큐에 존재하는 경우, 첫번째 제1 파일 디스패치 큐의 경우와 같이, 동일한 제1 파일 디스패치 큐에 있는 복수의 제1 파일 호출 요청 메시지가 결합된다. 선택적으로, 물리적 섹터의 주소가 연속적인지 여부를 판정함으로써, 결합 처리가 수행될지 여부가 결정된다. 제1 파일 호출 요청 정보가 호출된 제1 파일의 크기에 따라 추가로 결합될 수 있다. 예를 들어, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 2개의 제1 파일의 크기의 합이 정확히 하나의 데이터 블록(block)을 구성할 수 있는 경우, 2개의 제1 파일 호출 요청 메시지 또한 결합될 수 있고, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 대응하는 제1 파일은 동일한 데이터 블록 내의 동일한 물리적 섹터에 쓰여진다. 본 발명은 이를 제한하지 않는다.
선택적으로, 다른 예를 들면, 파일 시스템은 6개의 제1 파일 호출 요청 메시지를 결정하는데, 즉 L=6이다. 3개의 제1 파일 디스패치 큐가 있으면, 즉 M=3이고, 6개의 제1 파일 호출 요청 메시지 중 3개의 제1 파일 호출 요청 메시지 내의 물리적 섹터 정보는 3개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 연속적이고, 나머지 3개가 불연속적이라는 것을 나타낸다. 물리적 섹터가 연속적인 주소를 가진 3개의 제1 파일 호출 요청 메시지는 동일한 제1 파일 디스패치 큐에 배치되고, 예를 들어 3개의 제1 파일 호출 요청 메시지는 첫번째 제1 파일 디스패치 큐에 배치되고, 물리적 주소가 불연속적인 나머지 3개의 제1 파일 호출 요청 메시지는 제1 파일 호출 요청 메시지의 크기에 따라 또는 무작위로 3개의 제1 파일 디스패치 큐에 할당될 수 있거나; 또는 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 저장 주소의 상관관계에 따라 3개의 제1 파일 디스패치 큐에 할당될 수 있거나; 또는 3개의 제1 파일 디스패치 큐에 무작위로 할당될 수 있다. 그런 다음, 제1 파일 디스패치 큐의 하나의 호출 요청 메시지를 획득하기 위해, 물리적 섹터 정보가 연속적인 메시지로서, 첫번째 제1 파일 디스패치 큐에 있는 3개의 제1 파일 호출 요청 메시지에 대해 결합 처리가 수행된다. 다른 2개의 제1 파일 디스패치 큐가 먼저 처리되지 않을 수 있거나, 또는 결합되지 않은 제1 파일 호출 요청 메시지가 여전히 첫번째 제1 파일 디스패치 큐에 존재하면, 처리 역시 일시적으로 수행되지 않는다. 유사하게, 결합될 수 있는 복수의 제1 파일 호출 요청 메시지가 몇몇 제1 파일 디스패치 큐에 존재하는 경우, 첫번째 제1 파일 디스패치 큐의 경우와 같이, 동일한 제1 파일 디스패치 큐 내의 복수의 제1 파일 호출 요청 메시지가 결합된다. 선택적으로, 물리적 섹터의 주소가 연속적인지 여부를 판정함으로써, 결합 처리가 수행될지 여부가 결정된다. 호출된 제1 파일의 크기에 따라 제1 파일 호출 요청 정보가 추가로 결합될 수 있다. 예를 들어, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 2개의 제1 파일의 크기의 합이 정확히 하나의 데이터 블록(block)을 구성할 수 있는 경우, 2개의 제1 파일 호출 요청 메시지 또한 결합될 수 있고, 2개의 제1 파일 호출 요청 메시지가 쓰기 위해 요청하는 대응하는 제1 파일은 동일한 데이터 블록 내의 동일한 물리적 섹터에 쓰여진다. 본 발명은 이를 제한하지 않는다.
선택적으로, 할당 모듈(220)은 L개의 제1 파일 호출 요청 메시지의 서로 다른 프로세스 ID(PID)에 따라, 파일 시스템에 의해 수신된 호출 요청 메시지를 그룹화하고, 제1 파일 디스패치 큐 내의 그룹화된 호출 요청 메시지 중에서 제1 파일 호출 요청 메시지를 저장할 수 있다. 여기서, 제1 파일 디스패치 큐는 M개의 디스패치 큐를 포함할 수 있다. 선택적으로, 구조가 파일 시스템에 새롭게 추가될 수 있고, 이 구조는 어느 호출 요청 메시지가 제1 파일 호출 요청 메시지인지를 결정하기 위해 사용된다. 또는, S110에서 제1 파일 호출 요청 메시지가 결정되는 경우, 제1 파일 호출 요청 메시지가 식별될 수 있고, 제1 파일 호출 요청 메시지는 식별자를 이용하여 식별되며, 제1 파일 호출 요청 메시지는 대응하는 M개의 제1 파일 디스패치 큐에 할당된다. 여기서, 각각의 제1 파일 디스패치는 상응하게 K개의 제1 파일 호출 요청 메시지를 포함할 수 있다.
본 발명의 본 실시예에서, M개의 제1 파일 디스패치 큐 각각에 대해서, 파일 시스템 내의 처리 모듈(230)은 각각의 제1 파일 디스패치 큐에 포함된 K개의 제1 파일 호출 요청 메시지를 처리하여 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득할 수 있다. 구체적으로, L개의 제1 파일 호출 요청 메시지는 M개의 제1 파일 디스패치 큐에 추가된다. 각각의 제1 파일 디스패치 큐에 대해서, 각각의 제1 파일 디스패치 큐에 포함된 적어도 2개의 제1 파일 호출 요청 메시지가 연속적인 물리적 섹터(bi_sector) 주소를 가진 경우, 적어도 2개의 제1 파일 호출 요청 메시지가 하나의 호출 요청 메시지, 즉 제1 파일 디스패치 큐의 호출 요청 메시지로 결합될 수 있도록, 적어도 2개의 제1 파일 호출 요청 메시지에 대해 결합 처리가 수행되어 호출하는 횟수를 줄일 수 있다. 예를 들어, 임의의 제1 파일 디스패치 큐의 경우, 제1 파일 디스패치 큐는 K개의 제1 파일 호출 요청 메시지를 포함하고, K개의 제1 파일 호출 요청 메시지는 K개의 제1 파일 호출 요청 메시지에 포함된 물리적 섹터 정보에 따라 처리되어, 제1 파일 디스패치 큐의 하나의 호출 요청 메시지를 생성할 수 있다. 여기서, 제1 파일 디스패치 큐의 호출 요청 메시지는 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하기 위해 사용된다. 선택적으로, 파일 시스템 추가적으로, 제1 파일 호출 요청 메시지에 대해 삭제 처리를 수행하여 불필요한 호출 요청을 삭제할 수 있다. 이런 방식으로, 호출 횟수 역시 줄어들 수 있다.
선택적으로, 제1 파일 디스패치 큐가 제1 파일 호출 요청 메시지를 하나만 포함하는 경우, 즉 다른 호출 요청 메시지가 없는 경우(여기서, 다른 호출 요청 메시지의 물리적 섹터와 호출 요청 메시지의 물리적 섹터가 연속적인 주소를 가지고 있음), 제1 파일 호출 요청 메시지는 일시적으로 처리되지 않을 수 있다. 제1 파일 디스패치 큐에 포함된 적어도 2개의 제1 파일 호출 요청 메시지의 물리적 섹터의 주소가 연속적인 경우, 결합 처리가 그 다음에 수행된다. 본 발명은 이를 제한하지 않는다.
본 발명의 본 실시예에서, 파일 시스템의 처리 모듈(230)이 제1 파일 디스패치 큐에 포함된 K개의 제1 파일 호출 요청 메시지에 대해 결합 처리 또는 삭제 처리를 수행한 후에, 호출 모듈(240)은 제1 파일 디스패치 큐의 획득된 호출 요청 메시지에 따라, 대응하는 제1 파일에 접근할 수 있다. 구체적으로, 각각의 제1 파일 호출 요청 메시지가 접근 경로 정보를 포함할 수 있기 때문에, 제1 파일 디스패치 큐에 대해 결합이 수행된 후에, 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 대응하는 접근 경로 정보를 여전히 가지고 있다. 따라서, 접근 경로 정보에 따라 제1 파일에 대해 접근 처리가 상응하게 수행될 수 있다. 선택적으로, 제1 파일 디스패치 큐의 호출 요청 메시지는 저장 매체 요청 큐(mmc_request)에 송신될 수 있고, mmc_request는 제1 파일 디스패치 큐의 호출 요청 메시지를 처리하며, 장치 컨트롤러를 설정한다. 여기서, 장치 컨트롤러는 데이터를 생성하고 전송하기 위해 주로 사용된다. 데이터 전송이 완료된 후에, 현재 호출 요청 메시지가 대응하는 디스패치 큐에서 삭제될 수 있으며, 다음 요청에 대응하는 데이터 전송이 시작된다.
따라서, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리가 수행될 수 있고, 마이크로 파일을 호출하는 횟수가 줄어들 수 있도록, 본 발명의 본 실시예에서 파일에 접근하기 위한 장치는 마이크로 파일의 호출 요청 메시지를 결정하고, 대응하는 제1 파일 디스패치 큐를 마이크로 파일의 호출 요청 메시지에 할당한다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에, I/O 횟수가 증가되면서 또한 과도한 메모리 자원이 점유되는 것을 피할 수 있고, 시스템 호출의 횟수가 줄어들며, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다.
선택적으로, 일 실시예에서, 본 발명의 본 실시예에서 파일에 접근하기 위한 장치(200)는,
파일을 저장하는 물리적 섹터 상에 N개의 제1 파일 저장 공간 그룹을 결정하도록 구성된 제2 결정 모듈(250)을 더 포함한다. 여기서, N개의 제1 파일 저장 공간 그룹은 제1 파일을 저장하기 위해 사용된다.
본 발명의 본 실시예에서, 구체적으로, 파일 시스템은 마이크로 파일의 접근을 위한 독립적인 물리적 섹터를 설정할 수 있다. 물리적 섹터는 복수의 독립적인 영역을 포함하고, 이 영역은 복수의 제1 파일 저장 공간 그룹(MF 그룹)을 포함하며, 타임슬롯 적용에 따라 이 영역의 크기가 조절되고 최적화될 수 있고, 이 영역에 포함된 MF 그룹의 개수가 요구사항에 따라 동적으로 조절될 수 있다. 선택적으로, 독립적으로 마이크로 파일을 저장하는 복수의 MF 그룹의 경우, 각각의 MF 그룹은 복수의 데이터베이스(데이트 블록(date block))을 포함할 수 있고, 각각의 데이트 블록은 하나 이상의 마이크로 파일을 저장할 수 있다. 본 발명은 이를 제한하지 않는다.
구체적으로, 제2 결정 모듈(250)은 시스템 유휴 상태인 경우 디스크 조각 모음 프로그램(조각 모음 데몬)을 이용하여 복수의 MF 그룹을 결합하거나 및/또는 삭제할 수 있다. 예를 들어, eMMC의 특징이 더 잘 사용될 수 있도록, 복수의 MF 그룹이 결합될 수 있으며, 복수의 제1 파일이 연속적인 물리적 섹터 상에 저장되는 것을 보장한다. 이 시스템을 실행하는 동안, 파일의 삭제 연산 때문에, 파일을 저장하기 위해 사용된 일부 MF 그룹 내 공간이 여분이다. 즉, MF 그룹 내 대부분의 공간이 삭제될 목록에 추가된다. 적어도 2개의 MF 그룹 내의 데이터를 결합하고 하나 이상의 MF 그룹 내의 데이터를 저장하기 위해, 이들 MF 그룹이 결합될 수 있다. 따라서, 더 많은 공간이 해제되고, 공간 이용율이 개선된다.
선택적으로, 일 실시예에서, MF 그룹에 대해 삭제 처리 역시 수행될 수 있다. 예를 들어, MF 그룹에 존재하는 일부 마이크로 파일이 매크로 파일로 바뀌면, 예를 들어 매크로 파일의 크기가 4M의 범위를 초과하면, 파일이 매크로가 된 MF 그룹은 발견되고 식별될 수 있다. 그런 다음, 삭제될 목록을 탐색하는 경우, MF 그룹에 어떤 파일도 존재하지 않는 경우, 즉 MF 그룹이 비어 있고, 자원을 해제하기 위해 MF 그룹이 삭제된 경우 삭제가 수행될 수 있도록, 조각 모음 데몬은 MF 그룹에 포함된 제1 파일이 모두 삭제된 목록에 추가된 것을 발견한다.
선택적으로, 일 실시예에서, MF 그룹에 대해 추가 처리 역시 수행될 수 있다. 예를 들어, 마이크로 파일이 새롭게 추가된 경우, 예를 들어 매크로 파일이 마이크로 파일로 바뀐 경우, 조각 모음 데몬은 여분의 공간을 가진 MF 그룹에 대해 먼저 복수의 MF 그룹을 검색한다. 마이크로 파일이 MF 그룹에 저장될 수 있게 하는 가용한 저장 공간이 존재하는 경우, 새롭게 추가된 마이크로 파일은 MF 그룹에 저장된다. 여분의 공간을 가진 MF 그룹이 없으면, 조각 모음 데몬은 신규 MF 그룹을 추가한다. 여기서, 신규 MF 그룹은 마이크로 파일 및 다른 새롭게 추가된 마이크로 파일을 저장하기 위해 사용된다.
본 발명의 본 실시예에서, 파일 시스템의 호출 모듈(240)은 적어도 하나의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 접근되고 호출될 필요가 있는 제1 파일을 위한 파일들을 저장하는 MF 그룹을 검색할 수 있다.
본 발명의 본 실시예에 따른 파일에 접근하기 위한 장치(200)는 본 발명의 실시예의 파일에 접근하기 위한 방법(100)을 상응하게 수행할 수 있고, 전술한 동작과 다른 동작 및/또는 파일에 접근하기 위한 장치(200)의 모듈의 기능이 개별적으로 사용되어 도 1 및 도 2의 파일에 접근하기 위한 방법의 대응하는 절차를 구현한다고 이해해야 한다. 간략화를 위해, 여기서는 세부사항에 대해 다시 설명하지 않는다.
따라서, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리가 수행될 수 있도록, 본 발명의 본 실시예에서 파일에 접근하기 위한 장치는 마이크로 파일의 호출 요청 메시지를 결정하고, 대응하는 제1 파일 디스패치 큐를 마이크로 파일의 호출 요청 메시지에 할당한다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에, I/O 횟수가 증가되면서 또한 과도한 메모리 자원이 점유되는 것을 피할 수 있고, 시스템 호출의 횟수가 줄어들며, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다. 또한, 대응하는 동적 저장 영역이 마이크로 파일에 추가로 할당될 수 있으며, 상이한 마이크로 파일이 저장을 위해 수집된다. 이런 방식으로, 저장 공간의 낭비가 줄어들 수 있으며, 공간 이용율이 향상된다.
도 5에 도시된 바와 같이, 본 발명의 일 실시예는 프로세서(310), 메모리(320), 및 버스 시스템(330)을 포함하는 저장 시스템(300)를 추가로 제공한다. 프로세서(310)와 메모리(320)는 버스 시스템(330)을 이용하여 서로 연결되고, 메모리(320)는 명령을 저장하도록 구성되며, 프로세서(310)는 메모리(320)에 의해 저장된 명령을 실행하도록 구성된다. 메모리(320)는 프로그램 코드를 저장하고, 프로세서(310)는 메모리에 저장된 프로그램 코드(320)를 호출하여, L개의 제1 파일 호출 요청 메시지를 결정하고 - 여기서, L개의 제1 파일 호출 요청 메시지 각각은 제1 파일을 호출하도록 요청하기 위해 사용되고, 제1 파일의 크기는 임계값보다 작거나 같으며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 물리적 섹터 정보는 제1 파일을 저장하는 물리적 섹터의 주소를 포함하며, L은 1보다 큰 정수임 -; 물리적 섹터 정보에 따라, L개의 제1 파일 호출 요청 메시지를 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐에 개별적으로 추가하며 - 여기서, M은 양의 정수임 -; M개의 제1 파일 디스패치 큐 각각에 포함되는 K개의 제1 파일 호출 요청 메시지를 처리하여 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하며 - 여기서, 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하도록 요청하기 위해 사용되고, K는 양의 정수임 -; 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일에 접근하는 동작을 수행할 수 있다.
따라서, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리가 수행될 수 있도록, 본 발명의 본 실시예의 저장 시스템은 마이크로 파일의 호출 요청 메시지를 결정하고, 대응하는 제1 파일 디스패치 큐를 마이크로 파일의 호출 요청 메시지에 할당한다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에, I/O 횟수가 증가되면서 또한 과도한 메모리 자원이 점유되는 것을 피할 수 있고, 시스템 호출의 횟수가 줄어들며, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다. 또한, 대응하는 동적 저장 영역이 마이크로 파일에 추가로 할당될 수 있으며, 상이한 마이크로 파일이 저장을 위해 수집된다. 이런 방식으로, 저장 공간의 낭비가 줄어들 수 있으며, 공간 이용율이 향상된다.
본 발명의 본 실시예에서, 프로세서(310)는 중앙처리장치(Central Processing Unit, CPU)일 수 있고, 프로세서(310)는 추가적으로 다른 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 반도체(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA) 또는 다른 프로그램 가능한 논리 장치, 디스크리트 게이트(discrete gate) 또는 트랜지스터 논리 장치, 또는 독립적 하드웨어 컴포넌트 등일 수 있다고 이해해야 한다. 범용 프로세서는 마이크로프로세서일 수 있거나 또는 프로세서는 기존의 어떤 프로세서이거나 또는 이와 유사한 것일 수 있다.
메모리(320)은 읽기 전용 메모리 및 랜덤 액세스 메모리를 포함할 수 있고, 프로세서(310)에 명령 및 데이터를 제공한다. 메모리(320) 중 일부는 비휘발성 랜덤 액세스 메모리를 더 포함할 수 있다. 예를 들어, 메모리(320)는 장치 유형 정보를 추가로 저장할 수 있다.
버스 시스템(330)은 데이터 버스 외에 전력 버스, 제어버스, 및 상태 신호 버스 등을 포함할 수 있다. 하지만, 명확하게 설명하기 위하여, 도면에서 다양한 유형의 버스가 모두 버스 시스템(330)으로 표시되어 있다.
일 구현 프로세스에서, 전술한 방법의 단계가 프로세서(310) 내의 하드웨어의 통합 로직 회로 또는 소프트웨어의 형태의 명령을 이용하여 수행될 수 있다. 본 발명의 실시예를 참조하여 개시되는 방법의 단계가 하드웨어 프로세서에 의해 직접 수행되고 완료될 수 있거나, 또는 프로세서 내의 하드웨어 모듈과 소프트웨어의 모듈의 조합을 이용하여 수행되어 완료될 수 있다. 소프트웨어 모듈은 당해 분야에서 성숙한 저장 매체, 예컨대 랜덤 액세스 메모리, 플래쉬 메모리, 읽기 전용 메모리, 프로그램 가능 롬(programmable ROM), 전기적으로 소거가능 프로그램 가능 메모리(electrically-erasable programmable memory), 또는 레지스터에 위치할 수 있다. 저장 매체는 메모리(320)에 위치하고, 프로세서(310)는 프로세서(310)의 하드웨어와 함께 메모리(320) 내의 정보를 읽어 전술한 방법의 단계를 완료한다. 중복을 피하기 위하여, 여기서는 세부사항에 대해 다시 설명하지 않는다.
선택적으로, 일 실시예에서, 프로세서(310)는 메모리에 저장된 프로그램 코드(320)를 호출하여, 파일을 저장하는 물리적 섹터 상에 N개의 제1 파일 저장 공간 그룹을 결정하고 - 여기서, N개의 제1 파일 저장 공간 그룹은 제1 파일을 저장하기 위해 사용되고, N은 양의 정수임 -; N개의 제1 파일 저장 공간 그룹 중 적어도 2개의 그룹이 사용 가능한 저장 공간을 가지고 있는 경우, 적어도 2개의 제1 파일 저장 공간 그룹에 포함된 제1 파일을 결합하거나; 또는 N개의 제1 파일 저장 공간 그룹 중 적어도 하나의 그룹이 파일을 저장하고 있지 않은 경우, 적어도 하나의 제1 파일 저장 공간 그룹을 해제하거나; 또는 N개의 제1 파일 저장 공간 그룹 중 어느 제1 파일 저장 공간 그룹도 사용 가능한 저장 공간을 가지고 있지 않은 경우, N개의 제1 파일 저장 공간 그룹의 개수를 증가시키고; 및 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라 N개의 제1 파일 저장 공간 그룹 중에서, K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일에 접근하는 동작을 수행할 수 있다.
선택적으로, 일 실시예에서, 프로세서(310)는 메모리에 저장된 프로그램 코드(320)를 호출하여, 물리적 섹터 정보에 따라 L개의 제1 파일 호출 요청 메시지 중 적어도 2개를 동일한 제1 파일 디스패치 큐에 추가 하는 동작을 수행할 수 있다. 여기서, 적어도 2개의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 물리적 섹터의 주소는 연속적이다.
선택적으로, 일 실시예에서, 각각의 제1 파일 호출 요청 메시지는 접근 경로 정보를 더 포함한다. 여기서, 접근 경로 정보는 각각의 제1 파일 호출 메시지에 대응하는 제1 파일에 접근하는 데 사용된, 물리적 섹터의 경로를 나타내기 위해 사용된다.
선택적으로, 일 실시예에서, 프로세서(310)는 메모리에 저장된 프로그램 코드(320)를 호출하여, L개의 제1 파일 정보 노드를 결정하고 - 여기서, L개의 제1 파일 정보 노드 각각은 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 접근 경로 정보를 저장하기 위해 사용됨 -; 각각의 제1 파일 정보 노드에 따라, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 접근 경로 정보를 결정하는 동작을 수행할 수 있다.
선택적으로, 일 실시예에서, 프로세서(310)는 메모리에 저장된 프로그램 코드(320)를 호출하여, L개의 제1 파일 정보 노드 중 i번째 제1 파일 정보 노드가 정보 노드 연결 목록에 존재하는지 여부를 판정하고; i번째 제1 파일 정보 노드가 정보 노드 연결 목록에 존재하지 않는 경우, 정보 노드 연결 목록에 i번째 제1 파일 정보 노드를 생성하고, i번째 제1 파일 정보 노드에 i번째 제1 파일의 접근 경로 정보를 저장하거나; 또는 i번째 제1 파일 정보 노드가 정보 노드 연결 목록에 존재하는 경우, i번째 제1 파일 정보 노드에 따라 i번째 제1 파일의 접근 경로 정보를 결정하는 동작을 수행할 수 있다.
따라서, 본 발명의 본 실시예의 저장 시스템은, 복수의 마이크로 파일의 호출 요청 메시지에 대해 결합 처리 및/또는 삭제 처리가 수행될 수 있도록, 마이크로 파일의 호출 요청 메시지를 결정하고, 대응하는 제1 파일 디스패치 큐를 마이크로 파일의 호출 요청 메시지에 할당한다. 이런 방식으로, 마이크로 파일 호출 요청이 증가하기 때문에, I/O 횟수가 증가되면서 또한 과도한 메모리 자원이 점유되는 것을 피할 수 있고, 시스템 호출의 횟수가 줄어들며, I/O 요청의 처리량이 증가되며, 따라서 파일 시스템의 전반적인 I/O 효율을 높인다. 또한, 대응하는 동적 저장 영역이 마이크로 파일에 추가로 할당될 수 있으며, 상이한 마이크로 파일이 저장을 위해 수집된다. 이런 방식으로, 저장 공간의 낭비가 줄어들 수 있으며, 공간 이용율이 향상된다.
당업자라면 본 명세서에서 공개된 실시예에서 설명된 예와 함께, 유닛과 알고리즘 단계가 전자 하드웨어 또는 컴퓨터 소프트웨어와 전자 하드웨어의 조합으로 구현될 수 있음을 알 수 있을 것이다. 기능이 하드웨어에 의해 수행되는지 또는 소프트웨어에 의해 수행되는지 여부는 구체적인 적용 및 기술적 해결방안의 설계 제한 조건에 따라 달라진다. 당업자는 각각의 구체적인 적용을 위해 설명되는 기능을 구현하기 위해 다른 방법을 사용할 수도 있지만, 이러한 구현이 본 발명의 범위를 벗어나는 것으로 간주해서는 안된다.
편리하면서도 단순하게 설명하기 위해, 전술한 시스템, 장치, 그리고 유닛의 세부적인 동작 프로세스에 대해서는, 전술한 방법 실시예의 대응하는 프로세스를 참조할 수 있으며, 세부사항은 설명하지 않는다는 것을 당업자라면 명확하게 이해할 수 있을 것이다.
본 출원에서 제공되는 몇몇 실시예에서, 공개된 시스템, 장치, 및 방법은 다른 방식으로 구현될 수 있다고 이해해야 한다. 예를 들어, 전술한 장치 실시예는 단지 예일 뿐이다. 예를 들어, 유닛 구분은 단지 논리적 기능 구분일 뿐이고 실제 구현에서는 이와 다르게 구분될 수 있다. 예를 들어, 복수의 유닛 또는 컴포넌트는 다른 시스템으로 결합되거나 통합되어 있을 수 있거나, 또는 몇몇 특징은 무시되거나 수행되지 않을 수도 있다. 또한, 표시되거나 논의된 상호 연결 또는 직접 연결 또는 통신 연결은 일부 인터페이스를 이용하여 구현될 수 있다. 장치들 또는 유닛들 간의 간접 연결 또는 통신 연결은 전자적 형태, 기계적 형태, 또는 다른 형태로 구현될 수도 있다.
별도의 부분으로 설명된 유닛은 물리적으로 분리되어 있거나 또는 분리되어있지 않을 수 있고, 유닛으로서 표시되는 부분은 물리적 유닛이거나 또는 물리적 유닛이 아닐 수 있으며, 하나의 위치에 놓여 있을 수 있거나, 또는 복수의 네트워크 유닛 상에 분산되어 있을 수 있다. 유닛 중 일부 또는 전부가 실시예의 해결수단의 목적을 달성하기 위한 실제 필요에 따라 선택될 수 있다.
또한, 본 발명의 실시예의 기능 유닛은 하나의 처리 유닛으로 통합되어 있을 수 있거나, 또는 각각의 유닛이 물리적으로 단독으로 존재할 수도 있거나, 또는 2개 이상의 유닛이 하나의 유닛으로 통합되어 있을 수 있다.
이들 기능이 소프트웨어 기능 유닛의 형태로 구현되어 독립적인 제품으로 판매되거나 사용되는 경우, 이들 기능은 컴퓨터 판독가능 저장매체에 저장되어 있을 수 있다. 이러한 이해를 바탕으로, 본 발명의 기술적 해결책은 본질적으로, 또는 종래 기술에 기여하는 부분은, 또는 기술적 해결책의 일부는 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 저장 매체에 저장되고, 컴퓨터 장치(개인용 컴퓨터, 서버, 또는 네트워크 장치일 수 있음)는 본 발명의 실시예에서 설명되는 방법의 단계의 전부 또는 일부를 수행하도록 지시하는 여러 명령을 포함한다. 전술한 저장 매체는 프로그램 코드를 저장할 수 있는 임의의 저장 매체, 예컨대, USB 플래쉬 드라이브, 착탈식 하드디스크, 읽기 전용 메모리, 랜덤 액세스 메모리, 자기 디스크, 또는 광 디스크를 포함한다.
전술한 설명은 단지 본 발명의 특정한 구현 방식일 뿐이며, 본 발명의 보호 범위를 제한하고자 하는 것은 아니다. 당업자가 본 발명에서 개시되는 기술적인 보호범위 내에서 즉시 파악할 수 있는 어떠한 변경이나 대체도 본 발명의 보호 범위에 속할 것이다. 그러므로, 본 발명의 보호 범위는 청구 범위의 보호 범위를 따를 것이다.
Claims (18)
- 파일에 접근하기 위한 방법으로서,
L개의 제1 파일 호출 요청 메시지를 결정하는 단계 - 상기 L개의 제1 파일 호출 요청 메시지 각각은 제1 파일을 호출하도록 요청하기 위해 사용되고, 상기 제1 파일의 크기는 임계값보다 작거나 같으며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 상기 물리적 섹터 정보는 상기 제1 파일을 저장하는 물리적 섹터의 주소를 포함하며, L은 1보다 큰 정수임 -;
상기 물리적 섹터 정보에 따라, 상기 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐(first-file dispatch queue)에 상기 L개의 제1 파일 호출 요청 메시지를 개별적으로 추가하는 단계 - M은 양의 정수임 -;
상기 M개의 제1 파일 디스패치 큐 각각에 포함된 K개의 제1 파일 호출 요청 메시지를 처리하여 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하는 단계 - 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하도록 요청하기 위해 사용되고, K는 양의 정수임 -; 및
상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하는 단계
를 포함하는 파일에 접근하기 위한 방법. - 제1항에 있어서,
상기 파일에 접근하기 위한 방법은,
상기 파일을 저장하는 상기 물리적 섹터 상에 N개의 제1 파일 저장 공간 그룹을 결정하는 단계 - 상기 N개의 제1 파일 저장 공간 그룹은 상기 제1 파일을 저장하기 위해 사용되고, N은 양의 정수임 -; 및
상기 N개의 제1 파일 저장 공간 그룹 중 적어도 2개의 그룹이 사용 가능한 저장 공간을 가지고 있는 경우, 상기 적어도 2개의 제1 파일 저장 공간 그룹에 포함된 제1 파일을 결합하거나,
상기 N개의 제1 파일 저장 공간 그룹 중 적어도 하나의 그룹이 파일을 저장하고 있지 않은 경우, 상기 적어도 하나의 제1 파일 저장 공간 그룹을 해제하거나,
상기 N개의 제1 파일 저장 공간 그룹 중 어느 제1 파일 저장 공간 그룹도 사용 가능한 저장 공간을 가지고 있지 않은 경우, 상기 N개의 제1 파일 저장 공간 그룹의 개수를 증가시키는 단계
를 더 포함하고,
상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하는 단계는,
상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라 상기 N개의 제1 파일 저장 공간 그룹 중에서, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하는 단계
를 포함하는, 파일에 접근하기 위한 방법. - 제1항 또는 제2항에 있어서,
상기 물리적 섹터 정보에 따라, 상기 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐에 상기 L개의 제1 파일 호출 요청 메시지를 개별적으로 추가하는 단계는,
상기 물리적 섹터 정보에 따라, 상기 L개의 제1 파일 호출 요청 메시지 중 적어도 2개의 제1 파일 호출 요청 메시지를 동일한 제1 파일 디스패치 큐에 추가하는 단계 - 상기 적어도 2개의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 물리적 섹터의 주소는 연속적임 -
를 포함하는, 파일에 접근하기 위한 방법. - 제1항 내지 제3항 중 어느 한 항에 있어서,
각각의 제1 파일 호출 요청 메시지는 접근 경로 정보를 더 포함하고, 상기 접근 경로 정보는 각각의 제1 파일 호출 메시지에 대응하는 상기 제1 파일에 접근하는 데 사용된 상기 물리적 섹터의 경로를 나타내기 위해 사용되는, 파일에 접근하기 위한 방법. - 제4항에 있어서,
상기 L개의 제1 파일 호출 요청 메시지를 결정하는 단계는,
L개의 제1 파일 정보 노드를 결정하는 단계 - 상기 L개의 제1 파일 정보 노드 각각은, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 저장하기 위해 사용됨 -; 및
각각의 제1 파일 정보 노드에 따라, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 결정하는 단계
를 포함하는, 파일에 접근하기 위한 방법. - 제5항에 있어서,
상기 L개의 제1 파일 정보 노드를 결정하는 단계는,
상기 L개의 제1 파일 정보 노드 중 i번째 제1 파일 정보 노드가 정보 노드 연결 목록(information node linked list)에 존재하는지 여부를 판정하는 단계; 및
상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하지 않는 경우, 상기 정보 노드 연결 목록에 상기 i번째 제1 파일 정보 노드를 생성하고, 상기 i번째 제1 파일 정보 노드에 i번째 제1 파일의 접근 경로 정보를 저장하는 단계; 또는
상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하는 경우, 상기 i번째 제1 파일 정보 노드에 따라 i번째 제1 파일의 접근 경로 정보를 결정하는 단계
를 포함하는, 파일에 접근하기 위한 방법. - 파일에 접근하기 위한 장치로서,
L개의 제1 파일 호출 요청 메시지를 결정하도록 구성된 제1 결정 모듈 - 상기 L개의 제1 파일 호출 요청 메시지 각각은 제1 파일을 호출하도록 요청하기 위해 사용되고, 상기 제1 파일의 크기는 임계값보다 작거나 같으며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 상기 물리적 섹터 정보는 상기 제1 파일을 저장하는 물리적 섹터의 주소를 포함하며, L은 1보다 큰 정수임 -;
상기 물리적 섹터 정보에 따라, 상기 제1 결정 모듈에 의해 결정된 상기 L개의 제1 파일 호출 요청 메시지를 상기 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐에 개별적으로 추가하도록 구성된 할당 모듈 - M은 양의 정수임 -;
각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하기 위해, 상기 할당 모듈에 의해 할당된 상기 M개의 제1 파일 디스패치 큐 각각에 포함되는 K개의 제1 파일 호출 요청 메시지를 처리하도록 구성된 처리 모듈 - 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하도록 요청하기 위해 사용되고, K는 양의 정수임 -; 및
상기 처리 모듈에 의해 획득된, 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하도록 구성된 호출 모듈
을 포함하는 파일에 접근하기 위한 장치. - 제7항에 있어서,
상기 파일에 접근하기 위한 장치는 제2 결정 모듈을 더 포함하고,
상기 제2 결정 모듈은,
상기 파일을 저장하는 상기 물리적 섹터 상에 N개의 제1 파일 저장 공간 그룹을 결정하고 - 여기서, 상기 N개의 제1 파일 저장 공간 그룹은 상기 제1 파일을 저장하기 위해 사용됨 -;
상기 N개의 제1 파일 저장 공간 그룹 중 적어도 2개의 그룹이 사용 가능한 저장 공간을 가지고 있는 경우, 상기 적어도 2개의 제1 파일 저장 공간 그룹에 포함된 제1 파일을 결합하거나; 또는
상기 N개의 제1 파일 저장 공간 그룹 중 적어도 하나의 그룹이 파일을 저장하고 있지 않은 경우, 상기 적어도 하나의 제1 파일 저장 공간 그룹을 해제하거나; 또는
상기 N개의 제1 파일 저장 공간 그룹 중 어느 제1 파일 저장 공간 그룹도 사용 가능한 저장 공간을 가지고 있지 않은 경우, 상기 N개의 제1 파일 저장 공간 그룹의 개수를 증가시키도록 구성되며,
상기 호출 모듈은 추가적으로,
상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라 상기 N개의 제1 파일 저장 공간 그룹 중에서, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하도록 구성된, 파일에 접근하기 위한 장치. - 제7항 또는 제8항에 있어서,
상기 처리 모듈은 구체적으로,
상기 물리적 섹터 정보에 따라 상기 L개의 제1 파일 호출 요청 메시지 중 적어도 2개의 제1 파일 호출 요청 메시지를 동일한 제1 파일 디스패치 큐에 추가하도록 구성되고, 상기 적어도 2개의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 물리적 섹터의 주소는 연속적인, 파일에 접근하기 위한 장치. - 제7항 내지 제9항 중 어느 한 항에 있어서,
각각의 제1 파일 호출 요청 메시지는 접근 경로 정보를 더 포함하고, 상기 접근 경로 정보는 각각의 제1 파일 호출 메시지에 대응하는 상기 제1 파일에 접근하는 데 사용된 상기 물리적 섹터의 경로를 나타내기 위해 사용되는, 파일에 접근하기 위한 장치. - 제10항에 있어서,
상기 결정 모듈은 구체적으로,
L개의 제1 파일 정보 노드를 결정하고 - 여기서, 상기 L개의 제1 파일 정보 노드 각각은 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 저장하기 위해 사용됨 -; 및
각각의 제1 파일 정보 노드에 따라, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 결정하도록 구성된, 파일에 접근하기 위한 장치. - 제11항에 있어서,
상기 결정 모듈은 구체적으로,
상기 L개의 제1 파일 정보 노드 중 i번째 제1 파일 정보 노드가 정보 노드 연결 목록에 존재하는지 여부를 판정하고;
상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하지 않는 경우, 상기 정보 노드 연결 목록에 상기 i번째 제1 파일 정보 노드를 생성하고, 상기 i번째 제1 파일 정보 노드에 i번째 제1 파일의 접근 경로 정보를 저장하거나; 또는
상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하는 경우, 상기 i번째 제1 파일 정보 노드에 따라 i번째 제1 파일의 접근 경로 정보를 결정하도록 구성된, 파일에 접근하기 위한 장치. - 저장 시스템으로서,
파일과 프로그램을 저장하도록 구성된 메모리; 및
프로세서
를 포함하고,
상기 프로세서는,
L개의 제1 파일 호출 요청 메시지를 결정하고 - 여기서, 상기 L개의 제1 파일 호출 요청 메시지 각각은 제1 파일을 호출하도록 요청하기 위해 사용되고, 상기 제1 파일의 크기는 임계값보다 작거나 같으며, 각각의 제1 파일 호출 요청 메시지는 물리적 섹터 정보를 포함하고, 상기 물리적 섹터 정보는 상기 제1 파일을 저장하는 물리적 섹터의 주소를 포함하며, L은 1보다 큰 정수임 -;
상기 물리적 섹터 정보에 따라, 상기 L개의 제1 파일 호출 요청 메시지에 대응하는 M개의 제1 파일 디스패치 큐에 상기 L개의 제1 파일 호출 요청 메시지를 개별적으로 추가하며 - 여기서, M은 양의 정수임 -;
상기 M개의 제1 파일 디스패치 큐 각각에 포함된 K개의 제1 파일 호출 요청 메시지를 처리하여 각각의 제1 파일 디스패치 큐의 호출 요청 메시지를 획득하고 - 여기서, 상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지는 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 제1 파일을 호출하도록 요청하기 위해 사용되고, K는 양의 정수임 -;
상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하기 위해 상기 프로그램을 실행하도록 구성된, 저장 시스템. - 제13항에 있어서,
상기 프로세서는 추가적으로,
상기 파일을 저장하는 상기 물리적 섹터 상에 N개의 제1 파일 저장 공간 그룹을 결정하고 - 여기서, 상기 N개의 제1 파일 저장 공간 그룹은 상기 제1 파일을 저장하기 위해 사용됨 -;
상기 N개의 제1 파일 저장 공간 그룹 중 적어도 2개의 그룹이 사용 가능한 저장 공간을 가지고 있는 경우, 상기 적어도 2개의 제1 파일 저장 공간 그룹에 포함된 제1 파일을 결합하거나; 또는
상기 N개의 제1 파일 저장 공간 그룹 중 적어도 하나의 그룹이 파일을 저장하고 있지 않은 경우, 상기 적어도 하나의 제1 파일 저장 공간 그룹을 해제하거나; 또는
상기 N개의 제1 파일 저장 공간 그룹 중 어느 제1 파일 저장 공간 그룹도 사용 가능한 저장 공간을 가지고 있지 않은 경우, 상기 N개의 제1 파일 저장 공간 그룹의 개수를 증가시키며;
상기 각각의 제1 파일 디스패치 큐의 호출 요청 메시지에 따라 상기 N개의 제1 파일 저장 공간 그룹 중에서, 상기 K개의 제1 파일 호출 요청 메시지에 대응하는 상기 제1 파일에 접근하도록 구성된, 저장 시스템. - 제13항 또는 제14항에 있어서,
상기 프로세서는 구체적으로,
상기 물리적 섹터 정보에 따라 상기 L개의 제1 파일 호출 요청 메시지 중 적어도 2개의 제1 파일 호출 요청 메시지를 동일한 제1 파일 디스패치 큐에 추가하도록 구성되고, 상기 적어도 2개의 제1 파일 호출 요청 메시지가 호출을 요청하는 제1 파일의 물리적 섹터의 주소는 연속적인, 저장 시스템. - 제13항 내지 제15항 중 어느 한 항에 있어서,
각각의 제1 파일 호출 요청 메시지는 접근 경로 정보를 더 포함하고, 상기 접근 경로 정보는 각각의 제1 파일 호출 메시지에 대응하는 상기 제1 파일에 접근하는 데 사용된 상기 물리적 섹터의 경로를 나타내기 위해 사용되는, 저장 시스템. - 제16항에 있어서,
상기 프로세서는 구체적으로,
L개의 제1 파일 정보 노드를 결정하고 - 여기서, 상기 L개의 제1 파일 정보 노드 각각은 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 저장하기 위해 사용됨 -; 및
각각의 제1 파일 정보 노드에 따라, 각각의 제1 파일 호출 요청 메시지가 호출을 요청하는 상기 제1 파일의 접근 경로 정보를 결정하도록 구성된, 저장 시스템. - 제17항에 있어서,
상기 프로세서는 구체적으로,
상기 L개의 제1 파일 정보 노드 중 i번째 제1 파일 정보 노드가 정보 노드 연결 목록에 존재하는지 여부를 판정하고;
상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하지 않는 경우, 상기 정보 노드 연결 목록에 상기 i번째 제1 파일 정보 노드를 생성하고, 상기 i번째 제1 파일 정보 노드에 i번째 제1 파일의 접근 경로 정보를 저장하거나; 또는
상기 i번째 제1 파일 정보 노드가 상기 정보 노드 연결 목록에 존재하는 경우, 상기 i번째 제1 파일 정보 노드에 따라 i번째 제1 파일의 접근 경로 정보를 결정하도록 구성된, 저장 시스템.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/079894 WO2016187831A1 (zh) | 2015-05-27 | 2015-05-27 | 存取文件的方法、装置和存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180011255A true KR20180011255A (ko) | 2018-01-31 |
KR102063281B1 KR102063281B1 (ko) | 2020-01-07 |
Family
ID=57393766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177037049A KR102063281B1 (ko) | 2015-05-27 | 2015-05-27 | 파일에 접근하기 위한 방법과 장치, 및 저장 시스템 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10846265B2 (ko) |
EP (1) | EP3293625B1 (ko) |
JP (1) | JP6584529B2 (ko) |
KR (1) | KR102063281B1 (ko) |
CN (1) | CN106537321B (ko) |
WO (1) | WO2016187831A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107509085B (zh) * | 2017-08-24 | 2019-12-24 | 山东浪潮商用系统有限公司 | 一种流媒体文件的存储方法及装置 |
CN112148683A (zh) * | 2019-06-26 | 2020-12-29 | 中国移动通信集团江西有限公司 | 文件采集方法和装置 |
CN111176566B (zh) * | 2019-12-25 | 2023-09-19 | 山东方寸微电子科技有限公司 | 一种支持queue命令的eMMC读写控制方法及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11317008A (ja) * | 1998-04-30 | 1999-11-16 | Toshiba Corp | ディスク記憶装置及び同装置におけるセグメントキャッシュ制御方法 |
JP2015060486A (ja) * | 2013-09-20 | 2015-03-30 | 株式会社日立製作所 | I/o処理制御装置及びi/o処理制御方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8829919D0 (en) | 1988-12-22 | 1989-02-15 | Int Computer Limited | File system |
US6931501B1 (en) | 2001-10-26 | 2005-08-16 | Adaptec, Inc. | Method and apparatus for merging contiguous like commands |
US7996903B2 (en) * | 2006-07-07 | 2011-08-09 | Webroot Software, Inc. | Method and system for detecting and removing hidden pestware files |
JP4331220B2 (ja) * | 2007-03-07 | 2009-09-16 | 株式会社東芝 | 未使用物理領域自律管理機能を持つストレージ装置 |
JP5247192B2 (ja) * | 2008-03-14 | 2013-07-24 | 三菱電機株式会社 | 周期更新データ管理システム |
KR101338282B1 (ko) | 2009-04-24 | 2014-01-02 | 레벨 3 커뮤니케이션즈 엘엘씨 | 미디어 자원 저장 및 관리 |
US20110035557A1 (en) * | 2009-08-05 | 2011-02-10 | Nokia Corporation | Fragmentation reduction using virtual sectors for static data |
US8578126B1 (en) * | 2009-10-29 | 2013-11-05 | Netapp, Inc. | Mapping of logical start addresses to physical start addresses in a system having misalignment between logical and physical data blocks |
US8768980B2 (en) | 2009-11-02 | 2014-07-01 | Stg Interactive S.A. | Process for optimizing file storage systems |
US9009388B2 (en) * | 2010-11-30 | 2015-04-14 | Red Hat, Inc. | Performing discard commands on RAID storage devices |
US20150143021A1 (en) * | 2012-12-26 | 2015-05-21 | Unisys Corporation | Equalizing wear on storage devices through file system controls |
US20140351485A1 (en) * | 2013-05-23 | 2014-11-27 | Spansion Llc | Differential File System for Computer Memory |
CN104571931B (zh) * | 2013-10-10 | 2017-10-03 | 中国科学院声学研究所 | 基于系统资源的i/o请求合并调度系统与方法 |
CN104866428B (zh) * | 2014-02-21 | 2018-08-31 | 联想(北京)有限公司 | 数据存取方法和数据存取装置 |
CN103914522A (zh) | 2014-03-20 | 2014-07-09 | 电子科技大学 | 一种应用于云存储重复数据删除的数据块合并方法 |
CN104536959B (zh) * | 2014-10-16 | 2018-03-06 | 南京邮电大学 | 一种Hadoop存取海量小文件的优化方法 |
CN104571952B (zh) * | 2014-12-25 | 2017-08-01 | 华中科技大学 | 一种分开处理数据与元数据读写请求的方法 |
US10793713B2 (en) * | 2015-11-17 | 2020-10-06 | University Of Houston System | Biorenewable blends of polylactide and acrylated epoxidized soybean oil compatibilized by a polylactide star polymer |
-
2015
- 2015-05-27 JP JP2017561340A patent/JP6584529B2/ja active Active
- 2015-05-27 CN CN201580014438.8A patent/CN106537321B/zh active Active
- 2015-05-27 US US15/576,637 patent/US10846265B2/en active Active
- 2015-05-27 WO PCT/CN2015/079894 patent/WO2016187831A1/zh active Application Filing
- 2015-05-27 EP EP15892912.5A patent/EP3293625B1/en active Active
- 2015-05-27 KR KR1020177037049A patent/KR102063281B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11317008A (ja) * | 1998-04-30 | 1999-11-16 | Toshiba Corp | ディスク記憶装置及び同装置におけるセグメントキャッシュ制御方法 |
JP2015060486A (ja) * | 2013-09-20 | 2015-03-30 | 株式会社日立製作所 | I/o処理制御装置及びi/o処理制御方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3293625A4 (en) | 2018-05-23 |
EP3293625B1 (en) | 2021-07-07 |
CN106537321B (zh) | 2020-04-28 |
EP3293625A1 (en) | 2018-03-14 |
CN106537321A (zh) | 2017-03-22 |
KR102063281B1 (ko) | 2020-01-07 |
US10846265B2 (en) | 2020-11-24 |
JP2018515859A (ja) | 2018-06-14 |
US20180129672A1 (en) | 2018-05-10 |
WO2016187831A1 (zh) | 2016-12-01 |
JP6584529B2 (ja) | 2019-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | {FlashShare}: Punching Through Server Storage Stack from Kernel to Firmware for {Ultra-Low} Latency {SSDs} | |
US10552337B2 (en) | Memory management and device | |
WO2017054610A1 (zh) | 计算机、服务质量控制方法及装置 | |
US11698757B2 (en) | Memory system and method of controlling nonvolatile memory | |
JP6046978B2 (ja) | 情報処理装置およびその方法 | |
CN110196681B (zh) | 业务写操作的磁盘数据写入控制方法及装置、电子设备 | |
WO2024119764A1 (zh) | 一种任务调度方法、装置及电子设备和存储介质 | |
US11243877B2 (en) | Method, apparatus for data management, and non-transitory computer-readable storage medium for storing program | |
US10521371B2 (en) | Cache system and associated method | |
US9772776B2 (en) | Per-memory group swap device | |
KR20180011255A (ko) | 파일에 접근하기 위한 방법과 장치, 및 저장 시스템 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
US9684525B2 (en) | Apparatus for configuring operating system and method therefor | |
CN113485643A (zh) | 用于数据存取的方法及数据写入的控制器 | |
CN116955219A (zh) | 一种数据镜像方法、装置、主机及存储介质 | |
JPWO2008149657A1 (ja) | 入出力制御システム、入出力制御方法、及び、入出力制御プログラム | |
KR101549569B1 (ko) | 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 | |
CN113076189B (zh) | 具有多数据通路的数据处理系统及用多数据通路构建虚拟电子设备 | |
US9218275B2 (en) | Memory management control system, memory management control method, and storage medium storing memory management control program | |
CN113076180A (zh) | 上行数据通路的构建方法及数据处理系统 | |
US20230244383A1 (en) | Memory system and method of controlling nonvolatile memory | |
WO2024222224A1 (zh) | 数据处理方法、装置、计算设备、云平台及可读存储介质 | |
CN113535377A (zh) | 数据通路、其资源管理方法及其信息处理设备 | |
CN113535345A (zh) | 下行数据通路的构建方法及设备 | |
JP2013210812A (ja) | ストレージ装置、ストレージシステム、データ格納方法およびデータ格納プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |