KR100484942B1 - 대용량 파일시스템의 디렉토리 관리방법 - Google Patents

대용량 파일시스템의 디렉토리 관리방법 Download PDF

Info

Publication number
KR100484942B1
KR100484942B1 KR10-2002-0013800A KR20020013800A KR100484942B1 KR 100484942 B1 KR100484942 B1 KR 100484942B1 KR 20020013800 A KR20020013800 A KR 20020013800A KR 100484942 B1 KR100484942 B1 KR 100484942B1
Authority
KR
South Korea
Prior art keywords
block
leaf
directory
root
blocks
Prior art date
Application number
KR10-2002-0013800A
Other languages
English (en)
Other versions
KR20030073981A (ko
Inventor
이용주
김경배
신범주
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2002-0013800A priority Critical patent/KR100484942B1/ko
Priority to US10/190,588 priority patent/US6961739B2/en
Publication of KR20030073981A publication Critical patent/KR20030073981A/ko
Application granted granted Critical
Publication of KR100484942B1 publication Critical patent/KR100484942B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Landscapes

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

Abstract

본 발명은 대용량 파일시스템의 디렉토리 관리방법에 관한 것이다.
본 발명은 일정한 전역 깊이를 갖는 루트 블록을 생성하는 단계; 및 루트 블록에 디렉토리 엔트리가 완전히 채워지면 해시함수를 통해 상기 전역깊이로부터 루트 블록에 대하여 몇 개의 비트를 참조할 것인가에 대한 위치정보를 나타내는 인덱스 값을 구하고, 이 인덱스 값으로 논리적이고 연속된 객체인 복수의 고정 길이 기반의 익스텐트 블록으로 구성된 리프 블록들의 블록 넘버를 구하여 루트 블록에 순차적으로 저장한 후, 루트 블록의 디렉토리 엔트리를 리프 블록에 나누어 저장하는 단계로 이루어지며,
이에 따라서, 파일시스템의 자료저장구조에 대한 빈번한 변경 원인을 지연시키고 간접 블록의 생성을 유연하게 방지하여 검색 성능을 향상시킨다.

Description

대용량 파일시스템의 디렉토리 관리방법 { METHOD FOR MANAGING DIRECTORIES OF LARGE-SCALE FILE SYSTEM }
본 발명은 파일시스템에 관한 것이며, 보다 상세히는 파일시스템의 중요한 객체 중에 하나인 디렉토리를 고정 길이 익스텐트(Extent) 기반의 변형된 확장해싱기법을 적용하여 관리하기 위한 대용량 파일시스템의 디렉토리 관리방법에 관한 것이다.
일반적으로 파일시스템은 마이크로소프트사(Microsoft)의 윈도우즈, 오픈 소스(Open source) 운영체제인 리눅스(LINUX), 유닉스(UNIX) 등과 같은 컴퓨터 운영체제(OS)의 핵심 기술 중 일부분으로서 존재하여 사용자의 데이터를 알기 쉬운 파일 형태로 저장할 수 있게 해주는 서브시스템으로서, EXT2(EXTended file system 2)와 GFS(Global File System) 등이 있다.
상기 파일시스템에서 다루는 모든 객체는 아이노드(inode)라는 것으로 표현되어 디바이스의 자료저장구조에 파일, 디렉토리, 링크 등과 같은 여러 형태로 존재하며, 이러한 자료저장구조는 전역깊이(Global depth)를 갖는 루트 블록과 지역깊이(Local depth)를 갖는 리프(leaf) 블록들로 구분되고, 특히 상기 디렉토리는 파일을 계층적으로 쉽게 저장할 수 있게 하는 객체이다.
또한, 상기 파일시스템은 해시함수를 사용하는 확장해싱기법과 블록 맵핑 기법 등을 적용하여 디렉토리를 블록에 삽입하고 검색할 수 있도록 함으로써 디렉토리를 관리한다.
도 1을 참조하면, 리눅스 환경의 일반적인 파일 시스템인 EXT2의 자료저장구조는 하나의 블록에 디렉토리 엔트리가 완전히 채워지면 비분류 선형 리스트(Unsorted Linear List) 형태로 디렉토리를 관리하도록 되어 있으며, 그 관리방법을 보다 상세히 설명하면 다음과 같다.
공지된 바와 같이, 파일시스템의 자료저장구조에 있어서 루트 블록이나 리프 블록에는 운영체제에서 보여지는 하나의 디렉토리를 내부적으로 파일시스템에서 표현하기 위한 구조 정보, 즉 디렉토리 엔트리를 1개씩 가지는 복수의 디렉토리가 저장되므로, 상기 EXT2의 하나의 블록에도 역시 디렉토리 엔트리를 1개씩 가지는 복수의 디렉토리가 저장된다.
도 1에 도시된 디렉토리 엔트리(10)는 블록에 저장될 수 있는 블록 넘버와 같은 객체의 고유 ID를 나타내는 inode(11)와, 엔트리 자체의 전체 길이를 나타내는 rec_len(12), 디렉토리 이름의 길이를 나타내는 name_len(13), 디렉토리 타입정보를 나타내는 file_type(14), 실제 디렉토리 이름을 나타내는 name(15)으로 구성된다. 예컨대, "C:\WINDOWS"라는 디렉토리가 존재하면 디렉토리 이름은 "WINDOWS"가 되고 디렉토리 이름의 길이는 "7"이 된다.
상기 디렉토리 엔트리(10)는 하나의 루트 블록(20)에 계속해서 순차적으로 저장되며, 도 1에 도시된 바와 같이 하나의 루트 블록(20)이 완전히 채워지면 상기 EXT2에서는 링크드 리스트(Linked List) 구조를 이용하여 다음 블록(21)의 정보(예컨대, 블록 넘버)를 이전 블록(20)의 헤더영역에 저장하고 새로운 블록(21)에 계속해서 순차적으로 디렉토리 엔트리를 할당한다. 참고로, 도 1의 블록 21과 22는 루트 블록(20)의 리프 블록이며, 블록 22는 블록 21의 다음 블록에 해당하고, 블록 21은 블록 22의 이전 블록에 해당한다.
그러나, 상기와 같은 EXT2의 순차적인 디렉토리 관리방법은 디렉토리 엔트리의 양이 기하급수적으로 증가하면 블록에 대한 링크드 리스트의 길이가 증가하게 되므로 대용량의 파일시스템에서 사용하기에는 부적합하며, 특히 링크드 리스트 길이의 증가에 따라서 디렉토리 엔트리의 삽입과 검색, 삭제에 소요되는 탐색 시간이 지연되는 문제점이 있다.
도 2를 참조하면, 상기 EXT2의 순차적인 디렉토리 관리방법의 문제점을 해소하기 위하여 개발된 GFS(Global File System)의 경우에는 확장해싱기법을 적용하여 디렉토리를 관리하며, 그 관리방법을 자료저장구조를 기초로 상세히 설명하면 다음과 같다.
GFS에서는 확장해싱기법을 적용하기 위한 비트 열을 저장하는 해시 값(hash value) 필드(16)를 도 1에 도시된 종래의 디렉토리 엔트리(10)에 추가한 확장된 디렉토리 엔트리(10a)를 루트 블록(30)에 계속해서 순차적으로 저장한다.
이때, 해시 값은 상기 디렉토리 이름에 대하여 소정의 해시함수를 적용하여 변환한 값을 사용하며, 디렉토리 엔트리(10a)가 루트 블록(30)에 완전히 채워지면 루트 블록(30)에 가득 채워진 디렉토리 엔트리(10a)들은 각각 리프 블록(31,32)에 나누어 저장한다.
실제로, 루트 블록(30)의 전역깊이가 "1"이라고 가정하면, GFS에서는 먼저 공지된 바와 같이 해시함수를 통해 상기 전역깊이로부터 루트 블록(30)에 대하여 몇 개의 비트를 참조할 것인가에 대한 위치정보를 나타내는 인덱스 값, 즉 ""를 산출한다.
다음으로, 루트 블록(30)에서 디렉토리 엔트리(10a)들의 하나의 비트 포인터가 0을 가리키고 있으면 도 2의 상측 리프 블록(31)에 해당 디렉토리 엔트리(10a)를 저장하고, 디렉토리 엔트리(10a)들의 하나의 비트 포인터가 1을 가리키고 있으면 도 2의 하측 리프 블록(32)에 해당 디렉토리 엔트리(10a)를 저장한다.
예컨대, 루트 블록(30)의 디렉토리가 "C:\1,2,3,4,5,6,7,8,9,10"와 같이 "C:\"라는 디렉토리 하부에 10개의 디렉토리가 존재하는 경우, 해시함수에서 "%2"라는 모듈러(Modular) 연산값을 사용하면 상기 디렉토리 "2, 4, 6, 8, 10"은 리프 블록(31)에 저장되고 상기 디렉토리 "1, 3, 5, 7, 9"는 리프 블록(32)에 저장되며, 이와 같이 저장되어 있는 디렉토리를 찾을 때 종래의 순차적 디렉토리 관리방법에 비해 대략 1/2 정도로 검색해야 하는 양이 줄어든다.
또한, 상기 2개의 리프 블록(31,32)에 디렉토리 엔트리(10a)들을 나누어 저장되고 나면, 루트 블록(30)의 디렉토리 엔트리(10a)들은 삭제되고, 상기 2개의 리프 블록(31,32)의 블록 넘버가 순차적으로 저장된다.
이때, 상기 루트 블록(30)에 블록 넘버를 모두 저장할 수 없는 상황이 발생하게 되면 GFS에서는 도 3에 도시된 바와 같이, 간접 블록(30a,30b)을 형성하여 간접 블록의 블록 넘버를 루트 블록(30)에 저장하고 기존의 루트 블록에 저장된 리프 블록(31,32,31a)들을 가리키는 블록 넘버들을 새로 할당받은 간접 블록에 저장한다.
그러나, 상기와 같은 GFS의 확장해싱기법을 적용한 디렉토리 관리방법은 루트 블록(30)에 블록 넘버를 모두 저장할 수 없는 상황이 발생할 때마다 풀 플랫 구조의 간접 블록(30a,30b)을 새롭게 추가해야 하고, 리프 블록(31,32,31a)의 블록 사이즈가 한정되기 때문에 확장해싱기법을 적용한 블록으로 구성된 자료저장구조를 빈번하게 확장 및 개선해야 하는 문제점이 있다.
한편, 상기와 같이 순차적 디렉토리 관리 방법에 의해 디렉토리를 관리하는 EXT2나 확장 해싱 기법을 적용한 디렉토리 관리방법에 의해 디렉토리를 관리하는 GFS에서는 도 4에 도시된 바와 같이 루트 블록(40)에 리프 블록(41,42)의 블록넘버만을 저장할 수 있는 영역을 하나씩 1:1로 맵핑하는 블록 기반의 저장구조를 활용하고 있다.
그러나, 이와 같은 저장구조는 디렉토리 엔트리의 삽입이 빈번하게 일어나는 대용량 파일시스템에서는 확장 구조로의 확장 또한 빈번히 일어나는 단점이 존재하므로, 종래에는 도 5에 도시된 바와 같이, 익스텐트 기반의 블록 할당기법을 사용하여 하나의 블록 넘버를 저장할 수 있는 루트 블록의 저장공간에 순차적으로 할당받은 연속된 블록 넘버의 첫 번째 블록 넘버만을 저장하는 구조로 변환한다.
하지만, 도 5에 도시한 바와 같은 일반적인 익스텐트 기반의 블록 할당 기법은 비록 루트 블록(40a)의 하나의 주소 저장공간에 여러 개의 가변 길이 익스텐트 기반의 블록이 연속된 리프 블록(41a,42a)을 저장할 수는 있지만, 별도로 길이를 함께 저장해야 하고 가변적인 익스텐트를 검색하기 위하여 수식에 의한 계산 값을 사용할 수 없기 때문에 확장해싱을 위한 익스텐트 할당 정책과 익스텐트 확장 및 축소에는 부적합하다.
따라서, 본 발명은 상술한 종래의 문제점을 극복하기 위한 것으로서, 본 발명의 목적은 고정 길이 익스텐트 블록 기반의 변형된 확장해싱기법과 가상 블록 맵핑 기법을 적용하여 세미 플랫(SEMI FLAT) 구조로 간접 블록을 형성하고, 익스텐트 블록 내에서 순차 탐색을 방지하는 지시변수(scan indicator)를 사용하여 디렉토리의 다음 삽입 위치를 기억시켜 디렉토리를 관리하도록 된 대용량 파일시스템의 디렉토리 관리방법을 제공하는데 있다.
상기 본 발명의 목적을 달성하기 위한 대용량 파일시스템의 디렉토리 관리방법은, 일정한 전역 깊이를 갖는 루트 블록을 생성하는 단계; 및 루트 블록에 디렉토리 엔트리가 완전히 채워지면 해시함수를 통해 상기 전역깊이로부터 루트 블록에 대하여 몇 개의 비트를 참조할 것인가에 대한 위치정보를 나타내는 인덱스 값을 구하고, 이 인덱스 값으로 논리적이고 연속된 객체인 복수의 고정 길이 기반의 익스텐트 블록으로 구성된 리프 블록들의 블록 넘버를 구하여 루트 블록에 순차적으로 저장한 후, 루트 블록의 디렉토리 엔트리를 리프 블록에 나누어 저장하는 단계로 이루어진다.
이하, 본 발명에 따른 대용량 파일시스템의 디렉토리 관리방법을 첨부한 도면을 참조하여 상세히 설명하기로 한다.
도 6 내지 도 9를 참조하면, 최초에 본 발명에 따른 대용량 파일시스템에서는 도 2에 도시된 바와 같이 확장해싱기법을 적용하기 위한 비트 열을 저장하는 해시 값(hash value) 필드(16)를 포함하는 확장된 디렉토리 엔트리(10a)와 같은 디렉토리 엔트리를 저장하기 위한 루트 블록(50)을 생성하여 이 디렉토리 엔트리를 계속해서 순차적으로 저장하며, 이때 상기 루트 블록(50)은 일정한 전역 깊이를 갖는다.
상기와 같이 루트 블록(50)에 디렉토리 엔트리가 완전히 채워지면 도 6에 도시된 바와 같이, 해시함수를 통해 상기 전역깊이로부터 루트 블록(50)에 대하여 몇 개의 비트를 참조할 것인가에 대한 위치정보를 나타내는 인덱스 값을 구하고, 이 인덱스 값으로 논리적이고 연속된 객체인 4개의 고정 길이 기반의 익스텐트 블록(61―64,71―74)으로 구성된 리프 블록들(60,70)의 블록 넘버를 구하여 루트 블록(50)에 순차적으로 저장한 후, 루트 블록(50)의 디렉토리 엔트리를 리프 블록들(60,70)에 나누어 저장한다.
여기서, 상기 리프 블록들(60,70)을 각각 구성하는 고정 길이 기반의 익스텐트 블록의 개수는 필요한 저장공간에 따라서 서로 동일한 개수로 추가할 수 있다.
상기와 같이 4개의 고정 길이 기반의 익스텐트 블록(61―64,71―74)으로 구성된 리프 블록들(60,70)에 루트 블록(50)의 디렉토리 엔트리를 나누어 저장함에 따라서, 상기 루트 블록(50)에 리프 블록(60,70)의 블록 넘버를 더 이상 저장할 수 없는 상황이 발생하면, 본 발명에 따른 대용량 파일시스템에서는 도 7에 도시된 바와 같이 간접 블록(100)을 형성하여 상기 리프 블록(60,70)의 블록 넘버를 순차적으로 저장한 후 루트 블록(50)의 디렉토리 엔트리를 리프 블록(60,70)에 나누어 저장한다.
또한, 상기 간접 블록(100)에 저장하고 남은 리프 블록들(80,90)의 블록 넘버를 루트 블록(50)에 순차적으로 저장하고 상기 남은 리프 블록들(80,90)에 루트 블록(50)의 디렉토리 엔트리를 나누어 저장하며, 상기 남은 리프 블록들(80,90)도 역시 논리적이고 연속된 객체인 4개의 고정 길이 기반의 익스텐트 블록(81―84,91―94)으로 구성된다.
한편, 본 발명에 따른 대용량 파일시스템에서는 상기 논리적이고 연속된 객체인 복수의 고정 길이 기반의 익스텐트 블록(61―64,71―74,81―84,91―94)으로 구성된 리프 블록들(60,70,80,90)의 블록 넘버를 구하여 루트 블록(50)과 간접 블록(100)에 순차적으로 저장할 때, 도 8에 도시된 바와 같이, 가상 블록 맵핑 기법을 이용하여 하나의 리프 블록(110)을 구성하는 연속된 복수의 익스텐트 블록(111―114) 중에 첫 번째 익스텐트 블록(111)의 블록 넘버를 구하여 루트 블록(50) 또는 간접 블록(100)에 저장하고, 나머지 다른 익스텐트 블록(112―114)의 블록 넘버는 일반적인 파일시스템에서 I/O를 발생시키는 단위인 하나의 블록 내에서의 위치를 찾기 위해서 사용되어지는 오프셋(offset)의 개념을 익스텐트 블록에 적용한 지시변수(scan indicator)에 의해 가상 연산하여 구할 수 있도록 한다.
즉, 상기 하나의 리프 브록(110)을 구성하는 연속된 익스텐트 블록(111―114)의 블록 넘버가 "111, 112, 113,114"와 같이 순차적으로 연속된 경우, 상기 루트 블록(50)에는 첫 번째 익스텐트 블록(111)의 블록 넘버 "111"이 저장되며, 임의의 연속된 익스텐트 블록을 하나의 익스텐트 블록이라고 가정하면 나머지 다른 블록 넘버는 지시변수를 통해 그 위치를 찾을 수 있다.
이때, 상기 지시변수의 범위는 0에서부터 (연속된 블록의 개수×한 블록의 오프셋의 최대 크기)에 해당하는 값까지로 가상화하여 사용할 수 있으며, 예컨대 4개의 블록이 연속되어 있고 한 블록이 4K이면 지시변수의 범위는 0∼(4×4096)이 된다.
또한, 본 발명에 따른 대용량 파일시스템에서는 상기 루트 블록(50)의 디렉토리 엔트리를 리프 블록(60,70,80,90,110)에 나누어 저장할 때, 디렉토리 엔트리의 삽입 위치는 그 익스텐트 블록 내에서의 임의의 오프셋, 즉 지시변수를 통해 접근되므로, 도 9에 도시된 바와 같이 하나의 리프 블록(110)을 구성하는 연속된 복수의 익스텐트 블록(111―114)에 대하여 각각 지정되어 바로 이전에 삽입된 디렉토리 엔트리의 다음 위치를 나타내는 지시변수에 의해 저장 영역을 검색하여 디렉토리 엔트리를 저장한다.
예컨대, 하나의 리프 블록이 "1024비트"의 저장공간을 갖는 하나의 익스텐트 블록 4개로 구성되고, 루트 블록이나 간접 블록에 저장된 상기 리프 블록의 첫 번째 익스텐트 블록의 블록 넘버가 100이라고 가정한 상태에서, 상기 익스텐트 블록에 지시변수가 "1030"이라면 해시함수의 나눗셈 연산을 이용하여 상기 지시변수로부터 리프 블록을 구성하는 나머지 다른 익스텐트 블록의 블록 넘버를 구할 수 있다.
즉, 하나의 익스텐트 블록의 저장공간이 "1024비트"이므로, 이러한 익스텐트 블록 4개로 구성되어 4개의 연속한 익스텐트 블록 넘버를 가지는 리프 블록의 전체 저장공간은 "4096비트"가 되며, 상기 지시변수 "1030"을 하나의 익스텐트 블록의 저장공간인 "1024비트"로 나눗셈 연산()하면, 그 몫이 "1"로 구해지므로, "1030"이라는 지수변수가 지정된 블록은 첫 번째 블록 넘버에 "1"이 가산된 블록 넘버, 즉 "100+1=101"번 블록임을 알 수 있다.
또한, 상기 "1030"이라는 지수변수에 해시함수의 차감 모듈러(Modular) 연산을 적용하면 "1030%1024=6"이 되므로, 결과적으로 상기 "1030"이라는 지수변수가 지정되면 101번째 익스텐트 블록의 6번째 저장 영역이 바로 이전에 삽입된 디렉토리 엔트리의 다음 위치를 나타내는 저장 영역임을 검색하여, 이 저장 영역에 특정한 디렉토리 엔트리를 저장한다.
끝으로, 도 10을 참조하여 종래의 풀 플랫 구조의 간접 블록을 형성하여 디렉토리를 관리하는 자료저장구조와 본 발명에 따른 세미 플랫 구조의 간접 블록을 형성하여 디렉토리를 관리하는 자료저장구조를 비교하면 다음과 같다.
종래의 파일시스템은 루트 블록(120)에 리프 블록(130,131)의 블록 넘버를 모두 저장할 수 없는 상황, 즉 디렉토리 엔트리들이 증가하여 새로운 저장공간으로 활용하기 위한 리프 블록(132)이 추가로 필요할 때마다 리프 블록(120)의 블록 넘버 저장 역할을 대신할 수 있는 간접 블록(140,140a)을 형성한다.
특히, 종래의 파일시스템은 단 하나의 디렉토리 엔트리가 증가하여 루트 블록(120)에 리프 블록(130,131)의 블록 넘버를 모두 저장할 수 없는 상황이 발생할 때에도 새로운 간접 블록(140a)을 추가로 형성해야 하며, 이에 따라서 시스템의 자료저장구조를 빈번하게 확장 및 개선해야 하는 단점이 있다.
그러나, 본 발명에 따른 파일시스템은 루트 블록(120)의 저장공간을 초과할 정도로 디렉토리 엔트리가 증가하더라도, 실제로 증가된 디렉토리 엔트리의 개수가 새롭게 추가될 간접 블록(140a)을 완전히 채울 수 있을 정도로 증가하지 않으면, 하나의 간접 블록(140)만을 형성하여 리프 블록(130,131)의 블록 넘버를 순차적으로 저장하여 루트 블록(120)의 디렉토리 엔트리를 리프 블록(130,131)에 나누어 저장하고, 나머지 새롭게 증가한 디렉토리 엔트리를 저장하는 리프 블록(132)의 블록 넘버는 루트 블록(120)에 저장함으로써, 시스템의 자료저장구조를 빈번하게 확장 및 개선해야 하는 단점을 해소한다.
상술한 바와 같이 본 발명에 따른 대용량 파일시스템의 디렉토리 관리방법은 고정 길이 익스텐트 블록 기반의 변형된 확장해싱기법과 가상 블록 맵핑 기법을 적용하여 세미 플랫 구조로 간접 블록을 형성하고, 익스텐트 블록 내에서 순차 탐색을 방지하는 지시변수를 사용하여 디렉토리의 다음 삽입 위치를 기억시켜 디렉토리를 관리하도록 되어 있기 때문에, 파일시스템의 자료저장구조에 대한 빈번한 변경 원인을 지연시키고 간접 블록의 생성을 유연하게 방지하여 검색 성능을 향상시키는 효과가 있다.
특히, 본 발명에 따른 대용량 파일시스템의 디렉토리 관리방법은 리프 블록의 블록 넘버를 저장함에 있어서 확장과 축소가 용이한 세미 플랫 구조로 간접 블록을 형성하므로 파일시스템 내에서 간접 블록에 대한 I/O 처리 간접비(Overhead)를 최대한 줄일 수 있다.
또한, 리프 블록을 물리적인 블록이 아닌 논리적이고 연속된 객체인 고정 길이 기반의 익스텐트 블록으로 확장하므로, 하나의 익스텐트에 저장할 수 있은 디렉토리 엔트리를 늘려서 결과적으로 확장해싱기법이 적용된 전체 자료저장구조의 깊이를 줄일 수 있으며, 아울러 파일시스템의 요구 사항인 디렉토리 엔트리의 삽입을 용이하게 하기 위한 지시변수를 사용하여 바로 이전에 삽입된 디렉토리 엔트리의 다음 위치를 기억하므로 디렉토리 엔트리에 대한 재삽입의 용이성을 향상시키는 효과가 있다.
이상에서 설명한 것은 본 발명에 따른 대용량 파일시스템의 디렉토리 관리방법을 실시하기 위한 하나의 실시예에 불과한 것으로서, 본 발명은 상기한 실시예에 한정되지 않고, 이하의 특허청구의 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 정신이 있다고 할 것이다.
도 1은 종래의 EXT2에서 디렉토리를 관리하는 자료저장구조를 도시한 예,
도 2는 종래의 GFS에서 디렉토리를 관리하는 자료저장구조를 도시한 예,
도 3은 종래의 GFS에서 풀 플랫 구조의 간접 블록을 형성하여 디렉토리를 관리하는 자료저장구조를 도시한 예,
도 4는 종래의 EXT2 또는 GFS에서 블록 저장 공간을 확보하기 위해 블록 맵핑 기법을 적용하는 블록 기반의 저장구조를 도시한 예,
도 5는 블록 저장 공간을 확보하기 위해 블록 맵핑 기법을 적용하는 일반적인 가변 길이 익스텐트 블록 기반의 저장구조를 도시한 예,
도 6은 본 발명에 따른 대용량 파일시스템에서 디렉토리를 관리하기 위해 블록저장공간을 확보하기 위한 자료저장구조를 도시한 실시예,
도 7은 본 발명에 따른 대용량 파일시스템에서 세미 플랫 구조의 간접 블록을 형성하여 디렉토리를 관리하는 자료저장구조를 도시한 실시예,
도 8은 본 발명에 따른 대용량 파일시스템에서 가상 블록 맵핑 기법을 적용하는 고정 길이 익스텐트 블록 기반의 저장구조를 도시한 실시예,
도 9는 리프 블록을 구성하는 고정 길이 익스텐트 블록를 도시한 구성도,
도 10은 종래의 풀 플랫 구조의 간접 블록을 형성하여 디렉토리를 관리하는 자료저장구조와 본 발명에 따른 세미 플랫 구조의 간접 블록을 형성하여 디렉토리를 관리하는 자료저장구조를 비교하여 도시한 구성도이다.
<도면의 주요부분에 대한 부호의 설명>
10: 디렉토리 엔트리 20: 루트 블록
21,22: 리프 블록 30: 루트 블록
30a,30b: 간접 블록 31,32: 리프 블록
40,50: 루트 블록 60,70,80,90: 리프 블록
61―64,71―74,81―84,91―94: 익스텐트 블록
100: 간접 블록 110: 리프 블록
120: 루트 블록 130,131,132: 리프 블록
140, 140a: 간접 블록

Claims (5)

  1. 파일시스템에서 일정한 전역 깊이를 갖는 루트 블록을 생성하는 단계; 및
    루트 블록에 디렉토리 엔트리가 완전히 채워지면 파일시스템에서 해시함수를 통해 상기 전역깊이로부터 루트 블록에 대하여 몇 개의 비트를 참조할 것인가에 대한 위치정보를 나타내는 인덱스 값을 구하고, 이 인덱스 값으로 논리적이고 연속된 객체인 복수의 고정 길이 기반의 익스텐트 블록으로 구성된 리프 블록들의 블록 넘버를 구하여 루트 블록에 순차적으로 저장한 후, 루트 블록의 디렉토리 엔트리를 리프 블록에 나누어 저장하는 단계
    로 이루어지는 것을 특징으로 하는 대용량 파일시스템의 디렉토리 관리방법.
  2. 제 1 항에 있어서, 루트 블록에 리프 블록의 블록 넘버를 저장하는 단계는
    루트 블록에 리프 블록의 블록 넘버를 모두 저장할 수 없는 상황이 발생하면 간접 블록을 형성하여 상기 리프 블록의 블록 넘버를 순차적으로 저장한 후 루트 블록의 디렉토리 엔트리를 리프 블록에 나누어 저장하며, 간접 블록에 저장하고 남은 리프 블록의 블록 넘버를 루트 블록에 순차적으로 저장하고 상기 남은 리프 블록에 루트 블록의 디렉토리 엔트리를 나누어 저장하는 것을 특징으로 하는 대용량 파일시스템의 디렉토리 관리방법.
  3. 제 1 항 또는 제 2 항에 있어서, 상기 논리적이고 연속된 객체인 복수의 고정 길이 기반의 익스텐트 블록으로 구성된 리프 블록들의 블록 넘버를 구하여 루트 블록에 순차적으로 저장하는 단계는
    하나의 리프 블록을 구성하는 연속된 복수의 익스텐트 블록 중에 첫 번째 익스텐트 블록의 블록 넘버를 구하여 루트 블록에 저장하는 것을 특징으로 하는 대용량 파일시스템의 디렉토리 관리방법.
  4. 제 1 항 또는 제 2 항에 있어서, 상기 논리적이고 연속된 객체인 복수의 고정 길이 기반의 익스텐트 블록으로 구성된 리프 블록들의 블록 넘버를 구하여 간접 블록에 순차적으로 저장하는 단계는
    하나의 리프 블록을 구성하는 연속된 복수의 익스텐트 블록 중에 첫 번째 익스텐트 블록의 블록 넘버를 구하여 간접 블록에 저장하는 것을 특징으로 하는 대용량 파일시스템의 디렉토리 관리방법.
  5. 제 1 항 또는 제 2 항에 있어서, 상기 루트 블록의 디렉토리 엔트리를 리프 블록에 나누어 저장하는 단계는
    하나의 리프 블록을 구성하는 연속된 복수의 익스텐트 블록에 지정되어 바로 이전에 삽입된 디렉토리 엔트리의 다음 위치를 나타내는 지시변수에 의해 저장 영역을 검색하여 디렉토리 엔트리를 저장하는 것을 특징으로 하는 대용량 파일시스템의 디렉토리 관리방법.
KR10-2002-0013800A 2002-03-14 2002-03-14 대용량 파일시스템의 디렉토리 관리방법 KR100484942B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2002-0013800A KR100484942B1 (ko) 2002-03-14 2002-03-14 대용량 파일시스템의 디렉토리 관리방법
US10/190,588 US6961739B2 (en) 2002-03-14 2002-07-09 Method for managing directories of large-scale file system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0013800A KR100484942B1 (ko) 2002-03-14 2002-03-14 대용량 파일시스템의 디렉토리 관리방법

Publications (2)

Publication Number Publication Date
KR20030073981A KR20030073981A (ko) 2003-09-19
KR100484942B1 true KR100484942B1 (ko) 2005-04-25

Family

ID=28036060

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0013800A KR100484942B1 (ko) 2002-03-14 2002-03-14 대용량 파일시스템의 디렉토리 관리방법

Country Status (2)

Country Link
US (1) US6961739B2 (ko)
KR (1) KR100484942B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100617370B1 (ko) 2004-05-27 2006-08-29 한국과학기술원 저장 시스템에서 비트 맵에 의하여 관리되는 익스텐트를지원하는 페이지 할당 방법
KR100714682B1 (ko) * 2004-12-02 2007-05-04 삼성전자주식회사 파일 시스템 경로 처리 장치 및 방법
KR100809318B1 (ko) * 2006-04-04 2008-03-05 삼성전자주식회사 파일 관리 장치 및 방법
US7546307B2 (en) * 2006-09-28 2009-06-09 Nvidia Corporation Virtual block storage to filesystem translator
US8112675B2 (en) * 2006-09-28 2012-02-07 Nvidia Corporation Filesystem directory debug log
KR102050725B1 (ko) 2012-09-28 2019-12-02 삼성전자 주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
KR101977575B1 (ko) * 2012-09-28 2019-05-13 삼성전자 주식회사 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
US9009206B1 (en) * 2012-11-20 2015-04-14 Netapp, Inc. Method and system for optimizing traversal and storage of directory entries of a storage volume
CN105550345B (zh) * 2015-12-25 2019-03-26 百度在线网络技术(北京)有限公司 文件操作方法和装置
CN106407352B (zh) * 2016-09-06 2019-09-10 广东顺德中山大学卡内基梅隆大学国际联合研究院 基于深度学习的交通图像检索方法
CN108874820B (zh) * 2017-05-11 2021-11-30 广东爱瓦力科技股份有限公司 一种系统文件搜索方法
US10599613B2 (en) * 2017-10-19 2020-03-24 International Business Machines Corporation Index management in storage system
KR102227113B1 (ko) 2019-04-01 2021-03-15 최재호 공유 파일 시스템 기반의 파일 처리 장치
KR102408150B1 (ko) 2020-02-29 2022-06-10 동양대학교 산학협력단 클러스터의 할당을 임의로 조작할 수 있는 디스크 할당방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR890702108A (ko) * 1987-09-22 1989-12-22 이나바 세이우에몽 데이터 기억방법
JPH08241230A (ja) * 1994-10-31 1996-09-17 Sony Corp データ管理方法およびデータ記録装置
KR19980013818A (ko) * 1996-08-03 1998-05-15 구자홍 대용량 데이타 처리에 적합한 연속매체용 화일 시스템 및 화일 구성방법
KR20010047384A (ko) * 1999-11-19 2001-06-15 오길록 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법
KR100295392B1 (ko) * 1998-09-17 2001-07-12 오길록 동적 파일 시스템 구성 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR200147384Y1 (ko) 1995-09-06 1999-06-15 정몽규 다용도 컨솔
US5758353A (en) * 1995-12-01 1998-05-26 Sand Technology Systems International, Inc. Storage and retrieval of ordered sets of keys in a compact 0-complete tree
US6266705B1 (en) * 1998-09-29 2001-07-24 Cisco Systems, Inc. Look up mechanism and associated hash table for a network switch

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR890702108A (ko) * 1987-09-22 1989-12-22 이나바 세이우에몽 데이터 기억방법
JPH08241230A (ja) * 1994-10-31 1996-09-17 Sony Corp データ管理方法およびデータ記録装置
KR19980013818A (ko) * 1996-08-03 1998-05-15 구자홍 대용량 데이타 처리에 적합한 연속매체용 화일 시스템 및 화일 구성방법
KR100295392B1 (ko) * 1998-09-17 2001-07-12 오길록 동적 파일 시스템 구성 방법
KR20010047384A (ko) * 1999-11-19 2001-06-15 오길록 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법

Also Published As

Publication number Publication date
US20030177151A1 (en) 2003-09-18
US6961739B2 (en) 2005-11-01
KR20030073981A (ko) 2003-09-19

Similar Documents

Publication Publication Date Title
US6654772B1 (en) Multi-volume extent based file system
CN108804510B (zh) 键值文件系统
US6895418B1 (en) Versatile indirection in an extent based file system
US10346363B2 (en) Deduplicated file system
US9965483B2 (en) File system
US9342528B2 (en) Method and apparatus for tiered storage
US5261088A (en) Managing locality in space reuse in a shadow written B-tree via interior node free space list
US4611272A (en) Key-accessed file organization
AU2010265954B2 (en) File system
EP2176795B1 (en) Hierarchical storage management for a file system providing snapshots
KR100484942B1 (ko) 대용량 파일시스템의 디렉토리 관리방법
US7673099B1 (en) Affinity caching
US20110258374A1 (en) Method for optimizing the memory usage and performance of data deduplication storage systems
CN101464901B (zh) 一种对象存储设备中的对象查找方法
WO2021208239A1 (zh) 一种低延迟的文件系统地址空间管理方法、系统及介质
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
EP1049029A2 (en) File systems with versatile indirection
US10853320B1 (en) Scavenging directories for free space
US20070118578A1 (en) Extensible hashing for file system directories
Feltham et al. Linear hashing implementations for flash memory
EP0117906B1 (en) Key-accessed file organization
Shu File Systems
Zhao et al. Fat File System Design and Research
Venti TR03-16

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
FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140416

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170327

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20180406

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 15