KR20070003577A - 역 계층적 구조를 갖고 있는 파일 시스템 - Google Patents

역 계층적 구조를 갖고 있는 파일 시스템 Download PDF

Info

Publication number
KR20070003577A
KR20070003577A KR1020060057098A KR20060057098A KR20070003577A KR 20070003577 A KR20070003577 A KR 20070003577A KR 1020060057098 A KR1020060057098 A KR 1020060057098A KR 20060057098 A KR20060057098 A KR 20060057098A KR 20070003577 A KR20070003577 A KR 20070003577A
Authority
KR
South Korea
Prior art keywords
record
file
directory
identifier
transaction
Prior art date
Application number
KR1020060057098A
Other languages
English (en)
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 KR20070003577A publication Critical patent/KR20070003577A/ko

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • 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/18File system types
    • G06F16/1865Transactional file systems

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)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

전통적인 파일 시스템 계층 구성을 개선하는 컴퓨터 시스템이 개시된다. 상기 컴퓨터 시스템은, 프로세서와, 이 프로세서에 의해 액세스 가능한 영속성 데이터 저장 디바이스를 포함한다. 상기 컴퓨터 시스템은 상기 프로세서에 의해 실행되는 파일 시스템 소프트웨어도 포함할 수 있다. 상기 파일 시스템 소프트웨어는 상기 영속성 데이터 저장 디바이스의 파일들을 메타파일 내에 포함되는 복수 개의 레코드로 조직화하도록 동작할 수 있다. 상기 메타파일 내에서, 상기 파일 시스템의 파일 및 디렉토리는 역 계층적 구조로 조직화될 수 있다. 이 역 계층적 구조에서, 부모 디렉토리의 자식 파일 및 자식 디렉토리에 대응하는 레코드들은 그 부모 디렉토리에 대응하는 메타파일 내의 레코드를 직접 가리킬 수 있다. 파일 시스템의 한 가지 구현에 있어서, 메타파일의 개개의 레코드는 각각 파일 식별자(file identifier)에 의해 어드레스 가능할 수 있다. 각각의 레코드는 다시, 그 부모 디렉토리 레코드의 파일 식별자에 대응하는 부모 식별자를 포함할 수 있다.

Description

역 계층적 구조를 갖고 있는 파일 시스템{FILE SYSTEM HAVING INVERTED HIERARCHICAL STRUCTURE}
도 1은 역 계층적 구조를 갖는 파일 시스템을 구현할 수 있는 컴퓨터 시스템의 블록도이다.
도 2는 역 계층적 구조를 갖는 파일 시스템 내부의 파일 및 디렉토리 배치의 한 가지 예를 보여주는 트리 선도이다.
도 3은 메타파일의 레코드들이 역 계층적 구조를 갖는 파일 시스템을 구현하도록 배치될 수 있는 한 가지 방식을 보여주는 블록도이다.
도 4는 트랜잭션 기반 컴퓨터 시스템의 트랜잭션 파일에 트랜잭션 레코드를 논리적으로 배치하는 한 가지 방식을 보여주는 도면이다.
도 5는 플래시 매체 디바이스의 한 가지 타입에서 메모리의 물리적 배치를 보여주는 도면이다.
도 6 및 도 7은 트랜잭션 레코드들이 플래시 매체 디바이스에 배치될 수 있는 여러 가지 방식을 보여주는 도면이다.
도 8은 시동 중에 컴퓨터 시스템에 의해 생성되는 재구성된 파일 시스템에 채용되는 영역 범위 풀을 생성하기 위해 이용될 수 있는 수 많은 상호 연관된 처리 단계를 보여주는 도면이다.
도 9 내지 도 11은 도 8에 도시한 처리 단계에서 이용되는 여러 가지 레코드 타입에 대한 예시적인 포맷을 보여주는 도면이다.
도 12는 재구성된 파일 시스템에 사용되는 재생성된 파일 계층 구성의 디렉토리 노드 레코드에 대한 예시적인 포맷을 보여주는 도면이다.
도 13은 재구성된 파일 시스템에 사용되는 재생성된 파일 계층 구성의 파일 노드 레코드에 대한 예시적인 포맷을 보여주는 도면이다.
도 14는 재구성된 파일 시스템에 사용되는 재생성된 파일 계층 구성을 구성하기 위해 사용될 수 있는 수 많은 상호 연관된 처리 단계를 보여주는 도면이다.
도 15는 도 2에 도시한 예시적인 파일 및 디렉토리 배치에 적용됨에 따라 도 8 내지 도 14와 관련하여 설명한 방식으로 생성된 재구성 파일 시스템의 논리적 표현이다.
본 발명은 전체적으로 컴퓨터, 내장형 컨트롤러 등에 사용하기 위한 파일 시스템에 관한 것이다. 보다 구체적으로는, 본 발명은 역 계층적 구조(inverted hierarchical structure)를 갖고 있는 파일 시스템에 관한 것이다.
컴퓨터, 내장형 컨트롤러 및 기타 마이크로프로세서 기반 시스템은 통상적으로, 여러 가지 상이한 하드웨어 구성 요소로 구성된다. 이들 하드웨어 구성 요소로서, 프로세서, I/O 디바이스, 인간적 인터페이스 디바이스 등이 있을 수 있다. 또한, 이러한 시스템은 그 시스템에 사용되는 데이터를 유지하기 위해 메모리 저장 유닛을사용한다. 상기 메모리 저장 유닛은 하드 디스크 드라이브, 플로피 디스크 드라이브, RAM(random access memory), 플래시 메모리 등을 비롯하여, 다양한 형태를 취할 수 있는데, 이들에 제한되는 것은 아니다.
이러한 시스템에서 실행되는 하이-레벨 애플리케이션 프로그램은 종종, 상기 메모리 저장 유닛을 비롯한 상기 하드웨어 구성 요소와 무결절성(seamlessly)으로 상호 작용하여야 한다. 이를 위해, 많은 시스템들은 애플리케이션 프로그램과 시스템 하드웨어 사이에서 인터페이스로서 동작하는 운영 시스템(operating system)을 구동한다. 파일 시스템 소프트웨어는 상기 운영 시스템의 일부로서 포함될 수 있고, 또는 상기 운영 시스템과 상호 작용하는 보조 소프트웨어 구성 요소로서 제공될 수도 있다. 어느 경우이든지, 상기 파일 시스템 소프트웨어는, 상기 프로레서와 이 프로세서가 실행하는 하이-레벨 애플리케이션 프로그램에 의해 바로 액세스 가능하도록 데이터를 메모리 저장 유닛 내에 조직화한다.
전통적인 파일 시스템에서, 파일 시스템 소프트웨어는 메모리 저장 유닛 내의 데이터를 데이터 파일 및 대응하는 콘테이너, 소위 디렉토리를 포함하는 계층적 구조로 조직화한다. 이러한 전통적인 계층적 구조는 루트 디렉토리라고 부르는 시작 디렉토리를 갖고 있는 업사이드-다운 트리(upside-down tree)의 형태이다. 추가의 디렉토리 및 파일은 상기 루트 디렉토리로부터 늘어질 수 있다. 다시, 상기 추가의 디렉토리는 추가의 서브디렉토리 및 파일을 포함할 수 있다.
상기 파일 시스템 소프트웨어는, 파일 시스템 내의 각 파일/디렉토리 엔트리 의 네임 및 속성의 정보를 끊임 없이 얻어내는 데 사용되는 레코드를 포함하는 하나 이상의 메타파일(metafile)을 유지한다. 이들 속성으로는, 예를 들면 상기 엔트리가 데이터 파일 또는 디렉토리인지, 읽을 수만 있는 파일, 숨은 파일, 시스템 파일 등인지 여부를 포함한다. 메모리 저장 유닛에 저장되어 있는 파일 데이터를 물리적으로 액세스하는 데 필요한 정보는 메타파일 내의 레코드에 의해 포함되거나 그 레코드에 의해 지시될 수 있다.
상기 파일 시스템이 전통적인 파일 시스템 계층 구성을 이용하여 조직화할 때, 프로세서는 데이터 파일 또는 디렉토리에 어떤 변경이 이루어지는 경우 메타파일 내의 상당 수의 상이한 레코드들을 업데이트 하여야 한다. 메타파일 레코드의 업데이트는, 예컨대 파일 또는 디렉토리가 생성될 때마다, 개명될 때마다, 하나의 디렉토리로부터 다른 디렉토리로 이동될 때마다 일어나야 한다. 이러한 환경 하에서 업데이트 되어야 하는 상기 상당 수의 상이한 레코드들은, 예컨대 만약 시스템이 파워 손실 또는 다른 하드웨어 또는 소프트웨어 장애를 겪는다면, 주어진 레코드의 업데이트가 일어나지 않을 가능성을 증대시킨다. 또한, 이러한 장애 후 파일 시스템을 재구성하는 것은 파일을 전통적인 방식으로 조직화하는 경우 복잡하고 시간 소모적일 수 있다. 따라서, 상기 전통적인 파일 시스템 계층 구성에 대한 대안이 요구된다.
상기 전통적인 파일 시스템 계층 구성을 개선하는 컴퓨터 시스템이 개시된 다. 상기 컴퓨터 시스템은 프로세서와, 상기 프로세서에 의해 액세스 가능한 영속성(persistent) 데이터 저장 디바이스를 포함한다. 상기 컴퓨터 시스템은 상기 프로세서에 의해 실행되는 파일 시스템 소프트웨어도 포함할 수 있다. 상기 파일 시스템 소프트웨어는 상기 영속성 데이터 저장 디바이스의 파일들을 메타파일 내에 포함되는 복수 개의 레코드로 조직화하도록 동작할 수 있다. 상기 메타파일 내에서, 상기 파일 시스템의 파일 및 디렉토리는 역 계층적 구조로 조직화될 수 있다. 이 역 계층적 구조에서, 부모 디렉토리의 자식 파일 및 자식 디렉토리에 대응하는 레코드들은 그 부모 디렉토리에 대응하는 메타파일 내의 레코드를 직접 가리킨다. 파일 시스템의 한 가지 구현에 있어서, 메타파일의 개개의 레코드는 각각 파일 식별자(file identifier)에 의해 어드레스 가능할 수 있다. 각각의 레코드는 다시, 그 부모 디렉토리 레코드의 파일 식별자에 대응하는 부모 식별자를 포함할 수 있다.
메타파일 내의 레코드에 의해 나타내어지는 파일/디렉토리에 관련된 트랜잭션은 원한다면, 다른 관련된 부모 또는 자식 레코드의 대응하는 수정 없이 원자적으로 실행될 수 있다. 최적화된 구현에 있어서, 파일 또는 디렉토리가 생성되고, 개명되며, 또는 한 디렉토리에서 다른 디렉토리로 이동되는 단일 메타파일 레코드만이 업데이트될 수 있다.
상기 파일 시스템의 역 계층적 구조는 메타파일 내의 파일 또는 디렉토리 레코드와 연관된 정보량을 증가시키기 위하여 필요에 따라 쉽게 확장될 수 있다. 예를 들면, 각각의 메타파일 레코드는 메타파일에 저장될 수 있는 대응하는 확장 파 일 레코드(extended file record)를 가리키는 확장 파일 식별자(extended file identifier)를 포함할 수 있다. 상기 확장 레코드는, 메타파일 내의 단일의 파일 또는 디렉토리에 할당된 메모리 공간 내에 맞지 않는 파일 또는 디렉토리에 대응하는 추가의 정보를 포함할 수 있다.
상기 파일 시스템의 역 계층적 구조는 또한 트랜잭션 기반 시스템, 특히 상기 시스템에 대한 트랜잭션 파일이 플래시 매체 상에 저장되는 시스템에 사용하기에 적합하게 되어 있다. 이러한 트랜잭션 기반 시스템에서, 재구성된 버전의 파일 시스템이 시스템 시동 중에 램(random access memory; RAM)에 생성될 수 있다. 상기 재구성된 파일 시스템은 적어도 부분적으로, 상기 메타파일에 저장된 파일 및 디렉토리 레코드로부터 생성될 수 있다. 상기 메타파일 내의 레코드는 역 계층적 구조로 조직화되는데, 이는 효율적인 시동 동작을 용이하게 하고 또 상기 재구성된 파일 시스템의 생성을 최적화하는 데에 이용될 수 있다.
본 발명의 다른 시스템, 방법, 특징 및 이점은 이하의 도면 및 상세한 설명의 검토를 통해 당업자에게 명백하거나 명백해질 것이다. 이러한 모든 추가의 시스템, 방법, 특징 및 이점은 본 설명 내에 포함되고, 본 발명의 범위 내이며, 후술하는 특허청구범위에 의해 보호되도록 하기 위한 것이다.
본 발명은 이하의 도면 및 설명을 참고하여 더 잘 이해될 수 있다. 도면의 요소는 반드시 비례하여 나타낸 것은 아니며, 대신 본 발명의 원리를 설명할 때 강조하여 표시하였다. 또한, 도면에서, 동일한 도면 부호는 상이한 도면 전체에 걸쳐 대응 부분을 나타낸다.
바람직한 실시예의 상세한 설명
도 1은 예시적인 컴퓨터 시스템(10)에 채용될 수 있는 구성 요소들을 보여준다. 도시한 바와 같이, 상기 예시적인 시스템(10)은 프로세서(15), ROM(read only memory)(20), 영속성 저장 유닛(30)을 포함한다. 컴퓨터 시스템(10)은 또한, RAM(35), I/O 인터페이스(40) 및 사용자 인터페이스(45)를 포함할 수 있다. 상기 컴퓨터 시스템(10)에 사용되는 특정 구성 요소들은 컴퓨터 시스템(10)에 의해 실행되는 특정 기능들에 대하여 맞추어질 수 있다. 따라서, 프로세서(15) 이외의 구성 요소의 존재 여부는 컴퓨터 시스템(10)에 부여되는 디자인 기준에 대해 특이적일 수 있다. 예를 들면, 사용자 인터페이스(45)는, 컴퓨터 시스템(10)이 내장형 컨트롤러 등의 형태를 취하는 경우 생략될 수 있다.
ROM(20)은 프로세서(15)에 의해 실행되는 하이-레벨 애플리케이션 프로그램과, 메모리 디바이스(20, 35), 영속성 저장 유닛(30) 및 인터페이스 디바이스(40, 45)를 비롯한 여러 하드웨어 구성 요소 사이에서의 상호 작용을 제어하는 운영 시스템 코드(43)를 포함할 수 있다. 운영 시스템 코드(43)는 영속성 저장 유닛(30)에 저장된 파일들을 조직화(organization)하기 위한 파일 시스템 소프트웨어를 포함할 수 있다. 다르게는, 파일 시스템 소프트웨어는 운영 시스템 코드(43)와 단순히 상호 작용하는 별도의 소프트웨어 구성 요소로서 제공될 수도 있다. 후자의 경우에, 파일 시스템 소프트웨어에 대응하는 코드는 ROM(20), 영속성 저장 유닛(30) 등에 저장될 수 있다. 컴퓨터 시스템(10)이 I/O 인터페이스(40)를 통해 다른 컴퓨 터 및/또는 저장 디바이스와 네트워크화되어 있는 경우, 상기 파일 시스템 소프트웨어는 필요에 따라 컴퓨터 시스템(10)에 원격 저장되고 다운로드될 수 있다. 그러나, 도 1은 ROM(20) 내부에의 파일 시스템 소프트웨어(47)의 저장을 보여준다.
영속성 저장 유닛(30)은 임의의 수 많은 상이한 형태를 취할 수 있다. 예를 들면, 영속성 저장 유닛(30)은 하드 디스크 드라이브, 플로피 디스크 드라이브 등의 형태를 취할 수 있다. 또한, 상기 저장 유닛은 집적 회로 포맷(예컨대, 플래시 메모리 등)에 구현되는 비휘발성 메모리와 같이, 비회전 매체 디바이스의 형태일 수 있다. 또한, 영속성 저장 유닛(30)은 단일 메모리 구조로 한정될 필요가 없다. 대신에, 영속성 저장 유닛(30)은 동일한 타입의 수 많은 별도의 저장 디바이스(예컨대, 모두 플래시 메모리) 및/또는 상이한 타입의 수 많은 별도의 저장 디바이스(예컨대, 하나 이상의 플래시 메모리 유닛 및 하나 이상의 하드 디스크 드라이브)를 포함할 수 있다.
영속성 저장 유닛(30)에 저장된 파일은 애플리케이션 프로그램 또는 운영 시스템 코드(43)에 의해 이용되는 미리 정한 포맷에 따라 해석되는 데이터를 포함한다. 예를 들면, 파일 내부에 저장된 데이터는 실행 가능한 프로그램의 소프트웨어 코드, 데이터베이스 레코드의 ASCII 텍스트, 컴퓨터 시스템(10)에 의해 실행되는 (또는 실행되지 않는) 트랜잭션에 대응하는 데이터 등을 구성할 수 있다.
파일 시스템 소프트웨어(47)는 역 계층적 구조를 이용하여, 영속성 저장 유닛(30)에 저장된 파일들을 조직화한다. 도 2는 역 계층적 구조(50)가 구현될 수 있는 한 가지 방식을 보여주는 다이어그램이다. 많은 파일 시스템에 의해 이용되 는 전통적인 계층적 구조에서, 파일 구조의 톱 레벨은 루트 디렉토리로 시작하고, 각 디렉토리는 그 디렉토리 내에 들어 있는 파일 및 서브 디렉토리를 향해 하향한다. 그러나, 예시적인 역 계층적 구조(50)에서, 부모 디렉토리에 들어 있는 자식 파일 및 자식 디렉토리는 부모 디렉토리를 향해 상향한다. 파일 시스템이 어디서 그 조직화를 시작하느냐에 따라서, 루트 디렉토리는 파일 시스템 구조의 최하위 레벨을 구성할 수 있다.
상기 예시적인 역 계층적 구조(50)는 파일 시스템 구조의 최상위 레벨에서 5개의 파일(55, 60, 65, 70, 75)을 포함한다. 파일(55, 60, 65)은 디렉토리(80) 내에 포함되어 있는 반면에, 파일(70, 75)은 디렉토리(85) 내에 포함되어 있다. 따라서, 파일 시스템 소프트웨어(47)는, 자식 파일(55, 60, 65)을 나타내는 파일 시스템 레코드가 그 부모 디렉토리(80)에 대한 레코드를 가리키도록 파일 시스템을 조직화한다. 유사하게, 자식 파일(70, 75)을 나타내는 파일 시스템 레코드는 그 부모 디렉토리(85)에 대한 레코드를 가리킨다.
예시적인 역 계층적 구조(50)의 다음 레벨에서, 디렉토리(80) 뿐만 아니라 파일(90, 95)이 디렉토리(100)에 들어 있고, 디렉토리(85)는 디렉토리(105)에 들어 있을 수 있다. 따라서, 파일 시스템 소프트웨어(47)는, 자식 디렉토리(80) 및 자식 파일(90, 95)을 나타내는 파일 시스템 레코드가 그 부모 디렉토리(100)에 대한 레코드를 가리키도록 파일 시스템을 조직화한다. 유사하게, 자식 디렉토리(85)를 나타내는 파일 시스템 레코드는 그 부모 디렉토리(105)에 대한 레코드를 가리킨다.
루트 디렉토리(110)는 역 계층적 구조(50)의 트렁크(trunk)를 형성할 수 있 다. 이 예에서, 디렉토리(100, 105) 및 파일(115)은 루트 디렉토리(110) 내부에 들어 있다. 따라서, 파일 시스템 소프트웨어(47)는, 자식 디렉토리(100, 105) 및 자식 파일(115)을 나타내는 파일 시스템 레코드가 그 부모 디렉토리(105)에 대한 레코드를 가리키도록 파일 시스템을 조직화한다.
파일 시스템 소프트웨어(47)가 파일 시스템의 레코드를 조직화하여 역 계층적 구조를 구현할 수 있는 한 가지 방식이 도 3에 도시되어 있다. 파일 시스템의 이러한 구현에 있어서, 파일 시스템 소프트웨어(47)는 파일 시스템에 사용된 각 파일 및 디렉토리에 대응하는 레코드를 포함하는 하나 이상의 메타파일을 생성할 수 있다. 도 3은 단일 메타파일(120)과, 상기 메타파일(120) 내의 레코드가 배치되고 포맷될 수 있는 예시적인 방식을 보여준다. 이 예에서, 메타파일(120)은 복수 개의 동일 길이의 레코드 엔트리(125)를 포함하는 테이블로서 배치될 수 있다. 각 레코드 엔트리(125)는 상기 파일 시스템에 사용될 수 있는 단일 파일 또는 디렉토리에 대응한다. 도면 부호 130으로 도시한 것과 같은 유일 파일 식별자(unique file identifier)는 메타파일(120)의 대응 레코드(125)를 어드레스 하기 위하여 파일 시스템 소프트웨어(47)에 의해 이용될 수 있다. 각 레코드 엔트리(125)가 동일한 레코드 길이를 갖고 있다면, 파일 식별자(130)에 대한 포맷은 메타파일(120) 내의 원하는 레코드에 대한 인덱스로서 직간접적으로 사용될 수 있도록 선택된다. 예를 들면, 파일 식별자(130)는, 원하는 디렉토리/파일 정보를 갖고 있는 메타파일 레코드의 제1 바이트의 메모리 어드레스 위치를 계산하기 위하여 메타파일(120)의 첫 번째 레코드의 메모리 어드레스 위치와 함께 이용되는 옵셋 값(offset value)을 구성할 수 있다.
도 3의 예에서, 파일 식별자(130)는 메타파일(120) 내의 레코드(135)(엔트리 7)를 가리키고 있다. 도 3에서, 레코드(135)는 메타파일(120) 부근에 확장된 형태로 도시되어 있다. 확장된 형태의 레코드(135)는 또한, 각각의 레코드 엔트리(125)에 대해 사용될 수 있는 기본 레코드 포맷을 보여주고 있다. 이 예에서, 레코드(135)는 레코드에 의해 나타내어지는 파일 또는 디렉토리에 관련된 정보를 담고 있는 수 많은 상이한 필드를 포함하고 있다. 다른 무엇보다도, 이 정보는 상기 파일 시스템의 구조 내부의 파일 또는 디렉토리의 논리적 위치에 대응한다.
상기 파일 시스템의 역 계층적 구조는 메타파일 레코드 포맷을 채용함으로써 구현될 수 있는데, 상기 메타파일 레코드 포맷에서 각각의 메타파일 레코드는 부모 디렉토리를 나타내는 메타파일에 대한 포인터를 포함한다. 도 3은 메타파일 레코드 포맷을 보여주고 있는데, 상기 포맷에서 각각의 메타파일 레코드는 부모 디렉토리의 파일 식별자를 저장하고 있는 부모 식별자 필드(140)를 포함하고 있다. 이 예에서, 메타파일 레코드(135)의 부모 레코드 식별자(140)는 레코드(145)(엔트리 9)를 어드레스 하는 데 사용된 파일 식별자에 대응한다. 다시, 레코드(145)는 레코드(135)에 의하여 나타내어지는 파일 또는 디렉토리를 담고 있는 디렉토리에 관련된 정보를 포함한다.
각 메타파일 레코드는 또한, 그 레코드가 나타내는 디렉토리 또는 파일에 관련된 다른 정보를 포함할 수 있다. 레코드(135)의 상기 예시적인 레코드 포맷에서, 수 많은 상이한 정보 필드가 채용된다. 상기 정보 필드는 모드 필드(mode field)(150), 사용자 식별 필드(155), 그룹 식별 필드(160), 액세스 시간 필드(165), 수정 시간 필드(170), 생성 시간 필드(175), 파일 크기 필드(180) 및 쇼트 네임 필드(short name field)(185)를 포함한다. 모드 필드(150)는 레코드에 의해 나타내어지는 파일 또는 디렉토리가 시스템 파일/디렉토리, 숨은 파일/디렉토리, 읽을 수만 있는 파일/디렉토리 등인지 여부를 결정하는 데에 이용될 수 있다. 사용자 식별 필드(155) 및 그룹 식별 필드(160)는 표현된 파일 또는 디렉토리의 사용자 및 그룹 소유권과 관련된 정보를 담고 있다. 액세스 시간 필드(165), 수정 시간 필드(170), 생성 시간 필드(175)는 각각, 표현된 파일 또는 디렉토리가 마지막으로 액세스된 시간, 표현된 파일 또는 디렉토리가 마지막으로 수정된 시간, 표현된 파일 또는 디렉토리가 생성된 시간과 관련된 정보를 담고 있다. 파일 크기 필드(185)는 레코드에 의해 표현되는 파일의 크기에 대한 정보를 담고 있고, 디렉토리 레코드에 대하여 제로이다. 마지막으로, 쇼트 네임 필드(185)는 대응하는 파일 또는 디렉토리의 쇼트 텍스트 네임을 표현하는 ASCII 문자를 담고 있다. 쇼트 네임 필드(185)의 길이는, 예컨대 POSIX 표준에 상응하도록 선택될 수 있다. 또한, 각각의 레코드는 상기 쇼트 네임과 대응하는 해시 값 및/또는 네임 합계(name sums)를 포함할 수 있다. 이러한 해시 값 및/또는 네임 합계는 특정 디렉토리 및/또는 파일 레코드를 신속하게 찾아내기 위하여 파일 시스템 소프트웨어(47)에 의해 사용될 수 있다.
메타파일(120) 내의 각각의 레코드는 또한, 확장 레코드 식별자(extended record identifier)(190)에 대한 필드를 포함할 수 있다. 확장 레코드 식별 자(190)는 메타파일(120) 내의 확장 레코드를 가리키는 파일 식별자로서 사용될 수 있다. 상기 확장 레코드는 그 레코드에 의해 표현되는 파일 또는 디렉토리에 대한 정보를 더 포함할 수 있고, 특정 파일 또는 디렉토리에 대한 모든 정보가 단일 메타파일 레코드에 대하여 할당된 메모리 공간 내에 맞지 않는 경우에 특히 유용하다.
도 3은 확장 레코드 식별자(190)가 사용될 수 있는 한 가지 방식을 보여준다. 이 예에서, 레코드(135)의 확장 레코드 식별자(190)는 메타파일(120) 내의 레코드(195)(엔트리 11)를 액세스하는 데 사용된 파일 식별자(FID)에 대응한다. 레코드(195)의 분해도가 도 3에서 레코드(135)의 분해도 부근에 도시되어 있다. 이 분해도는 상기 확장 레코드에 대하여 이용될 수 있는 한 가지 레코드 포맷을 나타낸다. 도시한 바와 같이, 각 확장 레코드는 그 자신의 부모 식별자 필드(200)를 포함할 수 있다. 그러나, 확장 레코드의 부모 식별자 필드(200)는 그 확장 레코드를 가리키는 레코드의 파일 식별자에 대응한다. 도 3에 도시한 예에서, 부모 식별자 필드(200)의 콘텐츠는 다시 레코드(135)(엔트리 7)를 가리키는 데에 사용될 수 있다.
두 레코드 엔트리에 대하여 할당된 메모리 공간이 파일 또는 디렉토리와 관련된 모든 정보를 유지하기에는 불충분한 경우에 있어서, 확장 레코드(195)는, 레코드(195)의 필드(205) 내에 포함된 것과 같이, 그 자신의 확장 레코드 식별자를 이용하여 추가의 확장 레코드를 가리킬 수 있다. 확장 파일 식별자(125)가 가리키는 상기 추가의 확장 레코드에 대한 포맷은 도시되어 있지 않지만, 상기 추가의 확 장 레코드는 마찬가지로, 다시 레코드(195)를 가리키는 부모 레코드 식별자를 포함할 수 있다.
확장 레코드에 포함되는 정보의 타입은 파일 시스템 사이에서 변할 수 있다. 도 3에서, 확장 레코드(195)는 레코드(135)에 의해 표현되는 파일 또는 디렉토리의 롱 네임(long name)의 텍스트에 대응하는 ASCII 문자를 담고 있는 롱 네임 필드(210)를 포함하고 있다. 대응 파일 또는 디렉토리에 관련된 추가 정보를 저장하기 위하여, 레코드(195)와 같은 각 확장 레코드의 확대 영역(215)에 추가의 필드가 보유될 수 있다.
이전의 예에서, 파일 시스템이 사용하는 확장 레코드는 메타파일(120)에 저장된다. 그러나, 다르게는, 상기 확장 레코드 및 임의의 추가 확장 레코드는 별도의 메타파일, 복수의 메타파일 등에 저장될 수도 있다. 상기 별도의 메타파일은 메타파일(120)과 또는 서로, 동일한 저장 매체를 공유할 필요가 없다. 대신에, 메타파일들은 프로세서(15)에 액세스 가능한 상이한 저장 매체에 저장될 수 있다. 기본 메타파일 레코드(대응 확장 레코드를 갖고 있지 않은 디렉토리 및 화일 레코드)조차도 복수의 파일 및/또는 복수의 저장 매체 사이에서 분산될 수 있다. 이처럼, 예시적인 시스템의 메타파일 레코드가 단일 메타파일 내에 저장되지만, 메타파일은 다르게는, 동일 또는 상이한 저장 매체 상에서 많은 개별적인 파일 형태일 수 있다.
역 계층적 구조에 컴퓨터 시스템(10)의 파일 및 디렉토리를 조직화함으로써, 하나 이상의 파일 시스템 이점을 실현할 수 있다. 예를 들면, 파일 시스템은 통상 의 파일 및 디렉토리 트랜잭션(즉, 파일/디렉토리 이동, 파일/디렉토리 삭제, 파일/디렉토리 생성, 파일/디렉토리 복사)이 단일 메타파일 레코드의 변경, 추가 또는 삭제로서 원자적으로 달성되는 임의의 방식으로 구현될 수 있다. 이러한 구현에서, 예컨대, 레코드(135)에 의해 나타내어지는 파일/디렉토리는, 단순히 부모 식별자가 새로운 부모 디렉토리에 대한 메타파일 레코드를 가리키도록 부모 식별자(140)를 변화시킴으로써, 계층 구성 내의 다른 디렉토리로 이동될 수 있다. 이는 메타파일(120) 내의 레코드(135)에의 단일 쓰기 동작으로 달성될 수 있다.
상기 역 계층적 구조는 트랜잭션 또는 로그 기반 시스템(transactional or log-based system)을 최적화하는 데 채용될 수 있다. 예시적인 트랜잭션 또는 로그 기반 시스템이 도 1에 도시한 구성 요소들로 구성될 수 있다. 이 예에서, 트랜잭션 파일(220)은 영속성 저장 유닛(30)에 유지될 수 있고, 파일 시스템의 각 파일 및 디렉토리와 연관된 트랜잭션의 레코드를 보존하는 데에 사용될 수 있다. 파일 시스템의 업데이트는 트랜잭션 파일(220) 내에 포함된 트랜잭션 레코드에 기초하여 원자적으로 행해진다. 그 가장 단순한 형태 중 하나에 있어서, 모든 트랜잭션 레코드는 영속성 저장 유닛(30)의 물리적 블록 또는 섹터에 매핑될 수 있는 단일의 논리적 페이지로서 저장될 수 있다.
컴퓨터 시스템(10)에 사용하도록 트랜잭션 레코드(225)를 포맷하는 한 가지 방식이 도 4에 도시되어 있다. 일반적으로, 트랜잭션 파일(220)의 각 트랜잭션 레코드(225)는 헤더 필드(230)와 대응 데이터 필드(235)를 포함한다. 헤더 필드(230)는 수 많은 상이한 서브 필드를 포함할 수 있다. 도 4에 도시한 서브 필드 는 트랜잭션 시퀀스 필드(240), 파일 식별 필드(245), 트랜잭션 상태 필드(250), 클러스터 하이 필드(255), 클러스터 로우 필드(260) 및 클러스터 개수 필드(265)를 포함한다. 또한, 트랜잭션의 무결성을 검증하고 에러 수정을 위해 추가의 서브 필드가 헤더 필드(230)에 포함될 수 있다. 이들 추가의 서브 필드는 클러스터 합계 필드(247), 트랜잭션 합계 필드, 헤더 필드(230)를 검사하고 수정하기 위한 에러 수정 코드(ECC) 필드(257), 데이터 필드(235)를 검사하고 수정하기 위한 에러 수정 코드 필드(259), 트랜잭션 레코드가 저장될 수 있는 메모리 위치의 상태를 나타내는 추가의 상태 필드(262)를 포함한다.
헤더 필드(230)의 각각의 서브 필드는 파일 시스템 소프트웨어(47)에 대한 의미를 갖고 있다. 이 예에서, 트랜잭션 시퀀스 필드(240)는 점진적으로 증가하는 트랜잭션 식별자일 수 있는데, 이 식별자는 파일 시스템 소프트웨어(47)에 의해 할당된다. 새로운 트랜잭션 레코드가 트랜잭션 파일(220)에 추가되면, 그 새로운 레코드의 트랜잭션 시퀀스 필드(240)에 저장된 값은, 연대기적으로 선행하는 트랜잭션 레코드의 트랜잭션 시퀀스 필드의 값 이상으로 미리 정한 크기 만큼 증가될 수 있다. 결과적으로, 더 큰 트랜잭션 식별자 값을 갖는 트랜잭션 레코드는 더 작은 트랜잭션 식별자 값을 갖는 트랜잭션 레코드보다 시간적으로 나중에 트랜잭션 파일(220)에 추가되는 것으로 고려된다. 트랜잭션 시퀀스 필드(240)의 값(그리고, 경우에 따라서는, 트랜잭션 파일(220)의 블록 내부의 트랜잭션 레코드의 위치)에 의해 나타내어지는 것과 같은, 트랜잭션의 이러한 연대기적 시퀀싱(chronological sequencing)은 파일 시스템 소프트웨어(47)가 적절한 순서로 트랜잭션을 적용(즉, 커밋)하여 파일 시스템 콘텐츠의 무결성을 유지할 수 있도록 해준다. 트랜잭션의 연대기적 시퀀싱의 트랙을 유지하는 기타의 방법 역시 이용될 수 있다.
파일 시스템 소프트웨어(47)는 트랜잭션 상태 필드(250)를 이용하여, 트랜잭션 레코드(225)의 트랜잭션이 커밋되었는지 여부를 결정한다. 트랜잭션이 일단 커밋되면, 그 커밋된 트랜잭션 레코드(225)에 대한 추가의 변경은 파일 시스템 소프트웨어(47)에 의해 금지될 수 있다. 이는 파일 시스템의 일관성을 보장하고, 또한 파일 시스템이 트랜잭션 파일(220)을 예컨대, 한번 기록 매체(write-once media), 플래시 매체 등에 저장할 수 있도록 해준다.
헤더 필드(230)의 파일 식별 필드(245)는 트랜잭션 레코드(225)에 의해 영향받는 파일을 식별한다. 파일 식별 필드(245)에 대한 포맷은 메타파일 레코드에 사용되는 파일 식별자와 동일하도록 선택될 수 있다. 클러스터 하이 필드(255)와 클러스터 로우 필드(260)는 데이터 필드(235)가 상기 식별된 파일에 기록되는 시작 어드레스(또는 옵셋)를 결정하기 위하여 파일 시스템 소프트웨어(47)에 의해 사용될 수 있고, 클러스터 개수 필드(265)는 상기 식별된 파일의 얼마나 많은 클러스터가 데이터 필드(235)에 의해 겹쳐쓰이는 지를 결정하는 데에 사용될 수 있다.
상기한 바와 같이, 영속성 저장 유닛(30)은 하나 이상의 플래시 메모리 디바이스를 포함할 수 있다. 플래시 메모리 디바이스는 논리 게이트, 소위 "메모리 셀"에 정보를 저장하며, 상기 각각의 메모리 셀은 통상 1 비트의 정보를 저장한다. 보다 최근의 진보된 플래시 메모리 기술에 따르면, 이러한 메모리 디바이스는 셀마다 2비트 이상을 저장할 수 있는데, 이는 종종 멀티-레벨 셀 디바이스라 지칭한다. 또한, 플래시 메모리는 비휘발성으로서, 이는 디바이스로부터 전력이 끊겨도 메모리 셀의 콘텐츠가 소실되지 않는다는 것을 의미한다.
플래시 디바이스 기술은 지속적으로 진화하고 있지만, 지배적인 기술은 NAND 플래시 메모리와 NOR 플래시 메모리를 포함한다. NOR 플래시 디바이스 및 NAND 플래시 디바이스는 일반적으로, 각 저장 셀에 대해 사용되는 논리 게이트의 종류가 다르다. 한 가지 NAND 플래시 메모리 디바이스(275)의 예시적인 논리적 아키텍처(270)가 도 5에 도시되어 있다. 도시한 바와 같이, 상기 디바이스(275) 상의 이용 가능한 메모리는 인접하는 복수 개의 물리적 블록(280)으로 조직화될 수 있는데, 각각의 블록은 동일한 개수의 메모리 셀(즉, 16K 바이트)을 갖고 있다. NAND 플래시 메모리 디바이스(275)는 또한, 각각의 블록(280)을 특정 개수의 물리적 섹터 또는 페이지(290)로 분할한다. 다시, 각각의 물리적 페이지(290)는 데이터 영역(295)과 스페어 영역(spare area)(300)으로 더 분할될 수 있다. 데이터 영역(295)은 보통 데이터의 저장을 위해 보유되고, 스페어 영역(300)은 통상 데이터 영역(295)에 저장된 데이터에 대한 메타-정보의 유지 관리를 위해 보유된다. 상기 메타-정보는 예컨대, 섹터 콘텐츠의 검증 및 수정을 위해 사용되는 에러-수정 코드, 주기적 덧붙임 검사(cyclic redundancy check; CRC) 데이터 등을 포함할 수 있다.
NOR 플래시 디바이스는 각 페이지의 스페어 영역이 데이터 영역의 양측에 위치하고 있다는 것을 제외하고는 도 5에 도시한 것과 유사한 아키텍처를 갖고 있다 NOR 플래시 디바이스는 또한 임의 접근 읽기 및 프로그래밍 작업(random access read and programming operations)을 제공하여, 개개의 메모리 위치가 판독될 수 있도록 한다. 그러나, 블록 내의 메모리 위치가 일단 기록되면, NOR 플래시 디바이스는 하나의 블록보다 더 작은 입도(granularity)에서 상기 블록이 재기록되는 것을 허용하지 않는다. 마찬가지로, NOR 플래시 디바이스는 하나의 블록보다 더 작은 입도에서 소거 작업을 허용하지 않는다.
데이터 영역(295)과 스페어 영역(300)은 통상, NOR 플래시 디바이스 및 NAND 플래시 디바이스에서 특정 크기로 설정된다. 예를 들면, 도 5에 도시한 예시적인 NAND 플래시 디바이스(275)의 각 페이지(290)는 총 528 바이트의 페이지 크기에 대하여 512 바이트의 데이터 영역(295)과 16 바이트의 스페어 영역(300)을 포함한다. NAND 플래시 디바이스(275)는 또한 블록마다 32개의 페이지(290)를 채용한다. 다른 페이지 크기가 컴퓨터 시스템(10)에서 이용될 수 있고, 또 상업적으로 이용 가능하다. 예를 들면, 많은 NAND 디바이스는 64 페이지를 갖고 있는 블록들을 포함하는데, 각각의 페이지는 페이지당 총 데이터 영역이 2048 바이트이고 페이지당 스페어 영역이 64 바이트가 되도록 2112 바이트를 저장한다.
NAND 플래시 디바이스(275)와 같은 플래시 메모리 디바이스는 통상, 메모리의 전체 블록(280) 상에서 소거 작업을 한 번에 수행한다. 소거 작업은 블록(280) 내부의 모든 비트를 일정 상태, 보통 이진수 "1"의 값으로 설정한다. 플래시 디바이스(275)의 소거된 블록(280) 상에서의 프로그래밍 작업은 단지 전체 페이지(290)의 콘텐츠를 변화시킬 수 있다(그러나, NOR 플래시 디바이스는 약간 상이한 방식으로 프로그래밍될 수 있다). 일단 NAND 플래시 디바이스의 페이지(290)가 프로그래 밍되면, 그 상태는 전체 블록(280)이 다시 소거될 수 있을 때까지 추가로 변화될 수 없다. 플래시 디바이스(275)의 콘텐츠에 대한 판독은 페이지 레벨에서 일어난다.
도 6은 NAND 플래시 디바이스(275)와 같은 플래시 메모리 디바이스에서 트랜잭션 레코드가 조직화될 수 있는 한 가지 방식을 보여준다. 이 예에서, 각 트랜잭션 레코드(305)는 2개 이상의 인접 논리적 페이지(315)로 구성될 수 있다. 다시, 각 논리적 페이지(315)는 디바이스(275)의 블록(280)의 2개 이상의 인접 물리적 페이지(290)로 이루어질 수 있다. 트랜잭션 레코드(310)에 대한 메타-데이터 정보는 스페어 영역(300)에 저장될 수 있고, 도 4의 헤더 필드(230)과 관련하여 설명한 필드 중 몇몇 필드를 포함할 수 있다. 각 페이지(290)의 스페어 영역(300)의 크기에 따라, 메타-데이터 정보는 트랜잭션 레코드(310)의 복수의 스페어 영역(300) 사이에서 분할될 수 있다. 두 연속하는 물리적 페이지(290)의 스페어 영역(300) 사이에서의 메타-데이터 정보의 분할이 도 6에 도시되어 있다. 도 6에 도시한 트랜잭션 레코드 역시 각 트랜잭션(310)이, 예컨대 2개의 인접 물리적 페이지(290)로 이루어질 수 있는 단일의 논리적 페이지(315)에 대응하도록 조직화될 수 있다.
플래시 디바이스(275)의 각 논리적 페이지(315)와 물리적 페이지(290) 사이에 일대일 대응이 있을 수 있는 다른 구성이 도 7에 도시되어 있다. 이 구성과 도 6에 도시한 구성의 다른 차이는, 모든 메타-데이터 정보(320)가 트랜잭션(310)의 첫 번째 물리적 페이지(290)의 단일 스페어 영역(300)에 저장될 수 있다는 점이다. 이러한 종류의 구성은, 대용량의 플래시 디바이스가 채용되는 경우에 특히 적당할 수 있다. 그러나, 메타-데이터 정보(320)는, 트랜잭션 레코드의 두 인접 물리적 페이지(290)의 스페어 영역(300) 사이에서 분할될 수 있다.
동일한 디바이스 블록(290)에 저장된 트랜잭션 레코드(310)에 대한 시퀀스 식별자들은 동일한 값을 가질 수 있다. 이러한 경우에, 시퀀스 식별자는 상이한 디바이스 블록들의 트랜잭션 레코드 사이의 시간 관계를 비교하는 데에 사용될 수 있는 연대기적 정보를 제공한다. 동일한 블록에 저장된 트랜잭션 레코드(310) 상의 연대기적 정보는 블록(290) 내의 트랜잭션 레코드(310)의 옵셋 위치로부터 유도될 수 있는데, 나중에 발생하는 트랜잭션 레코드(310)는 더 큰 옵셋에서 일어난다.
컴퓨터 시스템(10)이 시작된 후 또는 전원이 켜진 후, 파일 시스템의 무결성은 재구성된 버전의 파일 시스템을 RAM(35)에 생성함으로써 검증될 수 있다. 도 1에서 도면 부호 330으로 도시한 상기 재구성된 파일 시스템은 트랜잭션 파일(220)에 저장된 유효한 커밋된 트랜잭션을 이용하여, 메타파일(120)에 저장된 파일/디렉토리 정보로부터 생성될 수 있다. 도 1에서, 재구성된 파일 시스템(330)은 재생성된 파일 계층 구성(335) 및 영역 범위 테이블(extents table)(340)을 포함한다.
영역 범위 테이블(340)을 생성하는 한 가지 방식이 도 8 내지 도 11에 도시되어 있다. 도 8은 영역 범위 풀(extents pool)(340)을 생성하기 위해 사용될 수 있는 수 많은 상호 관련된 처리 단계를 보여주며, 도 9 내지 도 11은 이들 동작에서 생성되고 이용되는 여러 가지 테이블 및 어레이들의 논리적 조직화를 보여준다.
영역 범위 테이블(340)의 생성은 도 8의 단계(345)에서, 모든 트랜잭션 레코드를 찾아내기 위하여 트랜잭션 파일(220)의 블록들을 스캔함으로써 시작할 수 있 다. 블록들은 가장 낮은 순서의 블록으로부터, 커밋된 트랜잭션 레코드가 발견되는 가장 높은 순서의 블록까지 순차적으로 스캔될 수 있다. 블록 내에서 트랜잭션이 발견됨에 따라, 트랜잭션 레코드를 갖고 있는 각 디바이스 블록을 식별하는 블록 레코드의 어레이가 단계(350)에서 생성될 수 있다.
파일 시스템 소프트웨어(47)가 트랜잭션을 위한 트랜잭션 파일(220)의 블록들을 스캔함에 따라, 파일 시스템 소프트웨어는 후퇴된 트랜잭션의 결과, 또는 블록이 아직 파일 시스템에 사용되도록 할당되지 않았기 때문에 소거된 블록과 만날 수 있다. 트랜잭션 헤더는, 소거된 값, 통상적으로 이진수 "1"의 값으로 설정된 헤더의 모든 비트를 갖는 유효한 트랜잭션이 없도록 구성될 수 있다. 파일 시스템 소프트웨어(47)가 트랜잭션 파일(220)의 블록을 스캔함에 따라, 헤더가 소거된 블록을 나타내는 임의의 트랜잭션은 스킵될 수 있다. 이러한 헤더 불변은, 소거 값의 역수인 경우에 파일 시스템에 의해 트랜잭션이 사용되고 있다는 것을 나타내는 플래그로서 단일 비트를 사용함으로써 이루어질 수 있다. 트랜잭션 헤더에서 이러한 소거 표시 값을 찾아내게 되면, 블록 내에서의 나머지 페이지에 대한 스캐닝은 스킵될 수 있어, 그 소거된 페이지를 액세스하는 데에 사용될 수 있는 시간을 절약한다. 그에 대응하여, 전체 시스템 시동 시간은 감소될 수 있다.
예시적인 블록 어레이(335)의 조직화가 도 9에 도시되어 있다. 각 블록 어레이 레코드(360)는 시퀀스 필드(365), 시작 트랜잭션 필드(370) 및 트랜잭션 개수 필드(375)를 포함한다. 시퀀스 필드(365)는 블록에 저장된 트랜잭션 레코드에 대해 트랜잭션 식별자 값을 저장하는 데에 사용될 수 있다. 시작 트랜잭션 필 드(370)는 첫 번째 트랜잭션에 대한 인덱스를 블록에 저장하는 데에 사용될 수 있고, 트랜잭션 개수 필드(375)는 블록에서 발견된 트랜잭션의 개수를 저장하는 데에 사용될 수 있다.
도 8의 단계(380)에서, 파일 시스템 소프트웨어(47)는 각 레코드 엔트리에 대한 트랜잭션 리스트 테이블을 블록 어레이(355)에 정착시킨다(populate). 도 9는 트랜잭션 리스트 테이블(385)가 조직화될 수 있는 한 가지 방식을 보여준다. 이 예에서, 블록 어레이(355)의 각 레코드(360)는 트랜잭션 리스트 테이블(385)의 적어도 하나의 트랜잭션 리스트 레코드(390)를 가리킨다. 보다 구체적으로, 주어진 블록 어레이 레코드(360)에 의해 나타내어지는 블록에서 발견된 각각의 트랜잭션에 대하여 트랜잭션 리스트 레코드(390)가 생성될 수 있다. 주어진 블록 어레이 레코드(360)의 트랜잭션 개수 필드(375)에 저장된 값은 주어진 블록 내의 트랜잭션 개수에 대응할 수 있고, 주어진 블록에 대하여 얼마나 많은 레코드(390)가 트랜잭션 리스트 테이블(385)에 추가될 것인지를 나타낸다.
트랜잭션 리스트 테이블(385)의 각 트랜잭션 리스트 레코드(390)는 동일한 레코드 길이를 가질 수 있고, 동일한 레코드 필드를 포함할 수 있다. 도 9의 레코드(390)에 사용된 예시적인 필드들은 파일 클러스터 옵셋 필드(395), 디바이스 클러스터 인덱스 필드(400), 클러스터 개수 필드(405) 및 파일 식별자/idx 필드(410)를 포함한다. 파일 클러스터 옵셋 필드(395)는 블록 내부에서의 트랜잭션의 물리적 위치를 식별하는 데 사용될 수 있다. 디바이스 클러스터 인덱스 필드(400)는 트랜잭션에 대한 데이터가 어디에서 시작하는지를 식별하는 데에 사용될 수 있다. 클러스터 개수 필드(405)는 데이터의 얼마나 많은 클러스터가 트랜잭션 내에 존재하는 지를 식별하는 데에 사용될 수 있다. 마지막으로, 이하에서 설명하는 바와 같이, 파일 식별자/idx 필드(410)는 다목적이다. 그러나, 처음에, 파일 식별자/idx 필드(410)에 저장된 값은 트랜잭션이 적용되는 파일을 식별하는 데에 사용될 수 있다. 필드(410)에 저장된 파일 식별자 값은 메타파일(120) 내의 레코드를 참조하는 데에 사용된 파일 식별자와 직접 대응할 수 있다. 단계(380)를 완료하면, 블록 어레이(355)의 레코드(360)는, 예컨대 증가하는 블록 순서로 배치되고, 각 블록 어레이 레코드(360)에 대한 레코드(390)는 증가하는 페이지 순서로 배치된다.
단계(415)에서, 블록 어레이(355)의 레코드(360)는 시퀀스 필드(365)에 저장된 값에 기초하여 소팅된다. 이러한 동작은 트랜잭션 리스트 테이블(385)의 레코드(390)를 연대기적 순서(즉, 대응하는 트랜잭션이 파일 시스템의 파일에 적용되는 순서)로 배치하도록 수행될 수 있다.
다음에, 파일 시스템의 트랜잭션 레코드에 대응하는 파일 노드 정보를 저장하는 일시적 파일(440)이 블록 어레이(355) 및 트랜잭션 리스트 테이블(385)의 소팅된 레코드를 이용하여 RAM(35)에서 생성될 수 있다. 이를 위해, 파일 시스템의 루트 디렉토리에 대응하는 기본 레코드가 먼저 일시적 파일(440)에 추가될 수 있다. 일시적 파일(440)에 루트 디렉토리를 생성하는 데에 사용된 정보는 메타파일(120)에 저장된 루트 디렉토리 파일에 대응하는 레코드로부터 얻어질 수 있다.
일시적 파일(440)에 파일 노드 레코드를 배열하는 한 가지 방식의 논리적 표현이 도 10에서 도면 부호 445로 표시되어 있다. 이 예에서, 각 파일 노드 레코 드(450)는 파일 노드 필드(455)와 시작 필드(460)를 포함한다. 파일 노드 필드(455)의 콘텐츠는 트랜잭션 리스트 테이블(385)의 여러 가지 트랜잭션 레코드(390)가 링크될 수 있는 파일 노드를 식별하는 데에 사용될 수 있다. 간단하게 하기 위해, 파일 노드 필드(455)의 콘텐츠는 메타파일(120)의 대응 레코드 엔트리(125)를 액세스하는 데 사용되는 파일 식별자와 동일한 포맷을 가질 수 있다. 시작 필드(460)의 콘텐츠는 파일 노드 필드(455) 내의 식별된 파일에 대응하는 트랜잭션 리스트 테이블(385) 내의 첫 번째 트랜잭션 레코드(390)의 위치를 식별하는 데 이용될 수 있다. 이와 같이, 각 파일 노드 레코드(450)는 식별된 파일에 관련된 첫 번째 트랜잭션의 위치뿐만 아니라 파일 시스템 내의 파일을 식별한다.
단계(420)에서, 블록 어레이(355) 및 트랜잭션 리스트 테이블(385)의 각각의 소팅된 레코드(360, 390)는 가로질러져 일시적 파일(440)이 파일 식별자/idx 필드(410)에 저장된 파일 식별자에 대응하는 파일 노드 레코드(450)를 포함하고 있는 지 여부를 결정한다. 트랜잭션 레코드(390)와 동일한 파일 식별자를 갖고 있는 파일 노드 레코드(450)가 일시적 파일(440)에서 발견되지 않는다면, 새로운 파일 노드 레코드(450)가 단계(430)에서 생성될 수 있다. 일단, 트랜잭션 리스트 레코드(390)에 대응하는 파일 노드 레코드(450)가 일시적 파일(440) 내에 존재하면, 트랜잭션 리스트 레코드(390)는 파일 노드 레코드(450)에 대한 트랜잭션들의 리스트에 링크될 수 있다. 이 예에서, 트랜잭션 리스트 레코드(390)는 도 8의 단계(435)에서, 파일 노드 레코드(450)에 대한 트랜잭션들의 리스트에 링크될 수 있다. 트랜잭션 리스트 레코드(390)가 파일 노드에 대한 트랜잭션들의 리스트에 링크될 수 있는 방식은 트랜잭션 리스트 레코드(390)가 파일 노드에 대한 첫 번째 트랜잭션 리스트 레코드인지 또는 파일 노드에 대한 후속 트랜잭션 리스트 레코드인지에 따라 달라질 수 있다. 만일, 파일 노드에 대한 첫 번째 트랜잭션 리스트 레코드라면, 파일 노드 레코드(450)의 시작 필드(460)는 그 첫 번째 트랜잭션 리스트 레코드(390)의 시작 위치를 식별하기 위하여 업데이트 될 수 있다. 이와 같이, 파일 노드 레코드(450)의 시작 필드(460)의 콘텐츠는, 상기 파일에 적용된 첫번째 트랜잭션에 대한 영역 범위 정보를 담고 있는 트랜잭션 리스트 테이블(385)에서의 소정의 위치를 가리키는 데 사용될 수 있다. 파일 식별자/idx 필드(410)의 함수(function)는, 트랜잭션 리스트 레코드(390)가 파일 노드에 대한 기존의 트랜잭션 리스트 레코드에 첨부될 수 있는 경우(즉, 파일 노드에 대한 첫 번째 트랜잭션 리스트 레코드가 아닌 경우) 변화한다. 보다 구체적으로, 필드(410)의 값 및 함수는, 파일 노드와 연관된 마지막 트랜잭션 레코드(390)를 가리키도록 변화될 수 있다. 이것이 도 10에 도시되어 있는데, 도 10에서, 파일 노드 레코드(450)의 시작 필드(460)는 트랜잭션 리스트 레코드(390)의 시작을 가리키고 있다. 레코드(390)의 파일 식별자/idx 필드(410)는 파일 노드 레코드(450)에 의해 나타내어지는 파일에 대한 두 번째 트랜잭션에 대한 위치의 정보를 담고 있는 트랜잭션 리스트 레코드(465)의 시작을 가리킨다. 유사하게, 파일 노드 레코드(470)의 시작 필드(460)는 트랜잭션 리스트 레코드(475)의 시작을 가리킨다. 트랜잭션 리스트 레코드(475)의 파일 식별자/idx 필드(410)는 파일 노드 레코드(470)에 의해 나타내어지는 파일에 대한 두 번째 트랜잭션의 위치에 대한 정보를 담고 있는 트랜잭션 리스 트 레코드(480)의 시작을 나타낸다.
일단 트랜잭션 리스트 테이블(385)의 모든 트랜잭션 리스트 레코드가 적절한 방식으로 대응 파일 노드 레코드와 링크되면, 각 파일 노드에 대한 트랜잭션 리스트 레코드는 단계(485)에서 가로질러져, 커밋되지 않은 및/또는 배드 파일 트랜잭션을 참조하는 트랜잭션 리스트 레코드를 제거한다. 이러한 트랜잭션 리스트 레코드의 제거는 여러 가지 상이한 방식을 통해 달성할 수 있다. 예를 들면, 파일 시스템 소프트웨어(47)는 마지막으로 일어나는 트랜잭션의 상태 필드를 검사하여, 그 트랜잭션이 커밋되었는지 여부를 결정할 수 있다. 트랜잭션이 커밋되었다면, 트랜잭션 리스트 테이블(385)의 대응 레코드는 방해받지 않은 채로 남겨질 수 있다. 그러나, 트랜잭션이 커밋되지 않았다면, 트랜잭션 리스트 테이블(385)의 대응 레코드는 제거되거나 그렇지 않으면 무시될 수 있다.
이러한 형태의 트랜잭션 커미트먼트(transaction commitment) 검사를 신속히 처리하기 위하여, 파일 시스템 소프트웨어(47)는 마지막에 발생하는 트랜잭션이 커밋되도록 하기만 하면 된다. 다른 모든 레코드에 대한 커미트먼트 검사는 스킵될 수 있는데, 왜냐하면 마지막으로 발생하는 트랜잭션만이 전원 장애, 부적절한 시스템 셧다운 등에 의해 영향을 받기 때문이다. 다른 모든 레코드에 대한 커미트먼트 검사를 스킵함으로써, 시스템 시동에 필요한 시간은 상당히 단축될 수 있다.
선형 시퀀스의 일부로서 도시하였지만, 단계(485)는, 각각의 트랜잭션 리스트 레코드가 대응 파일 노드에 합쳐지도록 처리됨에 따라 실행될 수 있다. 예를 들면, 파일 시스템 소프트웨어(47)는 각 트랜잭션 레코드의 헤더에 포함된 상태 정 보를 검사하여, 트랜잭션이 커밋되었는지 여부를 결정할 수 있다. 이러한 검사는 각각의 트랜잭션 레코드가 대응 트랜잭션 리스트 레코드를 정착하는 데 사용됨에 따라 일어날 수 있다. 일단 파일 시스템 소프트웨어(47)가 커밋되지 않은 트랜잭션을 발견하면, 도 8의 단계(420 내지 485)에서 트랜잭션 리스트 테이블(385)의 추가 처리는 필요하지 않다.
단계(490)에서, 각각의 파일 노드에 대한 영역 범위 풀(340)에서 엔트리가 생성된다. 이를 달성하는 한 가지 방식이 도 11에 도시되어 있다. 이 예에서, 각 파일 노드의 시작 필드(460)의 콘텐츠는 그 시작 필드가 이제 영역 범위 인덱스 필드(487)로서 동작하도록 변화될 수 있다. 영역 범위 인덱스 필드(487)는 파일에 대한 첫 번째 트랜잭션을 위한 트랜잭션 데이터의 위치 정보를 담고 있는 영역 범위 풀(340)에서의 첫 번째 위치를 가리킨다. 각 영역 범위 레코드(490)는 클러스터 개수 필드(495), 시작 클러스터 필드(500) 및 다음 영역 범위 필드(505)를 포함할 수 있다. 시작 클러스터 필드(500)는 파일 노드에 대응하는 파일에 대한 첫 번째 파일 트랜잭션이 저장될 수 있는 디바이스(270)의 시작 위치를 식별한다. 클러스터 개수 필드(495)는 디바이스(270)의 얼마나 많은 인접 클러스터가 파일 트랜잭션을 저장하는 데 사용될 수 있는지를 식별한다. 다음 영역 범위 필드(505)는 파일 노드에 의해 나타내어지는 파일에 대한 다음 영역 범위 레코드의 영역 범위 인덱스를 식별한다. 이 예에서, 영역 범위 인덱스(487)는 영역 범위 레코드(510)를 가리키고, 영역 범위 레코드(510)의 다음 영역 범위 필드(505)는 영역 범위 레코드(515)를 가리킨다.
영역 범위 풀(340)의 레코드를 정착시키는 데 사용되는 데이터는 적어도 부분적으로, 트랜잭션 리스트 테이블(385)에 저장된 데이터로부터 파생될 수 있다. 도시한 예에서, 영역 범위 풀(340)은 트랜잭션 리스트 테이블(385)의 보다 콤팩트한 형태이다. 이를 위해, 파일 시스템 소프트웨어(47)는 인접 데이터를 갖고 있는 트랜잭션 리스트 레코드들이 동일한 파일 노드의 일부라면, 그 트랜잭션 리스트 레코드들을 단일의 영역 범위 레코드 엔트리로 합체할 수 있다. 유사하게, 블록 어레이(355)를 RAM(35)에 유지할 필요가 없다. 따라서, 블록 어레이(355)는 RAM(35)으로부터 폐기될 수 있다.
트랜잭션 파일(220) 내의 트랜잭션의 무결성은 영역 범위 풀(340)을 생성하는 데 이용된 여러 단계의 실행 중에 검사될 수 있다. 예컨대, 트랜잭션 레코드에 대한 무결성 검사는 도 8의 단계(350) 또는 단계(380) 동안에 실행될 수 있다. 공통 데이터 검사는 CRC 기법 및 ECC 기법을 포함한다.
컴퓨터 시스템(10)의 시동 시간을 줄이기 위하여, 에러 검사 기술은 어떤 트랜잭션에 대한 헤더에 포함되어 있는 정보에 한정될 수 있다. 도 8에 도시한 시동 프로세스 동안에 트랜잭션이 발견됨에 따라, 파일 시스템 소프트웨어(47)는, 메타파일(120)의 디렉토리 구조 정보와 같은 파일 데이터 또는 메타데이터에 트랜잭션이 영향을 주는지 여부를 식별할 수 있다. 이러한 식별은 그 트랜잭션과 연관된 파일 식별자에 기초할 수 있다. 보통, 메타데이터는, 잘 알려지고 파일 시스템 소프트웨어(47)에 하드 코딩된 파일 식별자에 의해 표현된다(예컨대, 파일 식별자는 메타파일(120)을 트랜잭션의 대상인 파일로서 식별한다). 파일 시스템이 시동 후 에 일정 상태에 있도록 하기 위하여 메타데이터만이 필요하기 때문에, 트랜잭션의 데이터 부분에 대한 데이터 검사 기법은 단지, 트랜잭션이 이러한 메타데이터와 관련이 있는 경우에 수행된다. 트랜잭션이 메타데이터의 변화와 관련되지 않는다면, 데이터 검사 기법은 처음에, 헤더 정보의 검사에만 한정될 수 있다. 도 6에 도시한 트랜잭션 레코드 포맷에서, 시스템 시동시 검증되어야 하는 주요 헤더 정보는 각 트랜잭션 레코드(310)의 첫 번째 스페어 영역(300)에 저장될 수 있다. 이는 파일 시스템 소프트웨어(47)가 각 트랜잭션 레코드(310)의 두 번째 스페어 영역에 포함된 헤더 정보에 대한 검증을 스킵할 수 있도록 해주어, 시동 시퀀스를 최적화한다. 이하에서 더욱 상세하게 설명하는 바와 같이, 각 트랜잭션의 데이터 부분에 대한 에러 검사는, 시동 시퀀스의 완료 후에 대응 파일이 파일 시스템 소프트웨어(47)에 의해 제일 먼저 액세스될 때까지 연기될 수 있다.
트랜잭션 레코드에 대한 시동 검증은 에러 검사를 일련의 순차적 트랜잭션의 첫 번째 트랜잭션 헤더에만 한정함으로써 더욱 최적화될 수 있다. 트랜잭션 파일(220)의 시동 스캐닝 동안에, 동일한 파일에 대한 수 많은 순차적 트랜잭션 레코드가 후속하고 있음을 나타내는 트랜잭션 헤더가 발견되는 경우에, 그 시퀀스에서 트레일 트랜잭션 레코드의 헤더에 대한 검증은, 일단 그 시퀀스의 첫 번째 트랜잭션 레코드에 대한 헤더가 검증되었으면, 스킵될 수 있다. 이어서, 헤더 정보에 대한 스캐닝 및 검증은 마지막 트레일 트랜잭션에 후속하는 다음 블록에서 재개될 수 있다.
재구성된 파일 시스템(330)을 RAM(35)에 생성함에 있어서 다음의 단계는 재 생성된 파일 계층 구성(335)을 구성하는 것을 포함한다. 이 예에서, 재생성된 파일 계층 구성(335)은 파일 노드 레코드 및 디렉토리 노드 레코드로 이루어질 수 있다. 디렉토리 노드 레코드에 대한 예시적인 포맷이 도 12에서 도면 부호 520으로 도시되어 있고, 파일 노드 레코드에 대한 예시적인 대응 포맷이 도 13에서 도면 부호 525로 표시되어 있다.
디렉토리 노드 레코드(520)는 파일 시스템 소프트웨어(47)에 의해 이용되는 수 많은 상이한 필드를 포함한다. 보다 구체적으로, 디렉토리 노드 레코드(520)는 형제 필드(sibling field)(520), 파일 식별자 필드(535), 부모 식별자 필드(540), 자식 필드(545) 및 디렉토리 네임 필드(550)를 포함할 수 있다. 유사하게, 도 13의 파일 노드 레코드는 파일 시스템 소프트웨어(47)에 의해 이용되는 수 많은 상이한 필드를 포함한다. 파일 노드 레코드 필드는 형제 필드(555), 파일 식별자 필드(560), 영역 범위 인덱스 필드(565) 및 네임 합계 필드(570)를 포함할 수 있다.
메타파일(120)의 레코드에 포함된 데이터는 재생성된 파일 계층 구성(335)을 구성하는 데에 사용될 수 있기 때문에, 메타파일 레코드가 메타파일(120) 내에 배열되는 방식은 시스템 시동 성능에 영향을 미친다. 이를 위해, 메타파일(120)의 레코드는 동일한 길이를 갖는 인접 레코드들로서 단일 메타파일 내에 배열되고, 모두 동일한 저장 매체에 저장된다. 이러한 배치는 파일 시스템 소프트웨어(47)가 메타파일 데이터를 액세스할 수 있는 속도를 증대시키고, 이러한 액세스에 필요한 처리량을 감소시킨다.
재생성된 파일 계층 구성(335)의 각 파일 노드 레코드(525) 및 디렉토리 노 드 레코드(520)에 대한 필드를 정착시키는 데에 사용될 수 있는 단계들의 시퀀스가 도 14에 도시되어 있다. 도시한 시퀀스는 메타파일(120) 내의 각 레코드에 대하여 실행될 수 있고, 단계(575)에서 시작할 수 있다. 단계(575)에서, 메타파일(120) 내의 첫 번째 레코드 엔트리의 옵셋에 기초하여 파일 식별자가 생성될 수 있다. 재생성된 파일 계층 구성(335)에 대한 검사가 단계(580)에서 이루어져, 파일 식별자에 대응하는 파일 노드 레코드(525) 또는 디렉토리 노드 레코드(520)가 이미 존재하는지 여부를 결정할 수 있다. 대응 레코드(520 또는 525)가 존재하지 않는다면, 새로운 레코드 파일이 재생성된 파일 계층 구성(335)에 생성될 수 있다. 새로이 생성된 레코드의 포맷은 파일 식별자가 메타파일(120) 내의 파일 엔트리 또는 디렉토리 엔트리에 대응하는지 여부에 의존한다. 파일 시스템 소프트웨어(47)는 이러한 결정을 하고, 적절한 레코드 포맷(520 또는 525)을 적용한다.
단계(585)에서, 상기 새로이 생성된 레코드에 대한 필드는 메타파일(120)에서 발견되는 파일/디렉토리에 대한 속성을 이용하여 정착된다. 상기 새로이 생성된 레코드가 디렉토리 노드에 대응한다면, 부모 식별자 필드(540)와 디렉토리 네임 필드(550)는 부모 파일 식별자 내의 데이터 및 메타파일(120) 내의 대응 레코드의 쇼트 네임 필드를 이용하여 정착된다. 상기 새로이 생성된 레코드가 파일 노드에 대응한다면, 네임 합계 필드(570)는 메타파일(120) 내의 대응 레코드의 파일 네임 데이터로부터 유도되거나 직접 저장되어 있는 데이터를 이용하여 정착될 수 있다. 영역 범위 인덱스 필드(565)는 대응 파일 노드 레코드(450)(도 11 참조)의 영역 범위 인덱스 필드(487)에서 발견되는 데이터를 이용하여 정착될 수 있다.
상기 새로이 생성된 파일이 디렉토리 노드에 대응한다면, 재생성된 파일 계층 구성(335)을 통한 서치가 단계(590)에서 시작되어, 부모 노드가 존재하는지 여부를 결정할 수 있다. 부모 노드가 존재하지 않는다면, 부모 노드에 대응하는 디렉토리 레코드가 재생성된 파일 계층 구성(335)에 추가될 수 있다.
단계(595)에서, 상기 새로이 생성된 파일/디렉토리 레코드는 부모 디렉토리 노드에 대한 트리 구조에 링크될 수 있다. 상기 새로이 생성된 파일/디렉토리 레코드의 자식 필드(545)가 상기 부모 디렉토리가 어떠한 자식도 갖고 있지 않다는 것을 나타낸다면, 부모 디렉토리 레코드의 자식 필드(545)의 값은 상기 새로이 생성된 파일/디렉토리 레코드를 가리키도록 리셋될 수 있고, 상기 새로이 생성된 파일/디렉토리 레코드의 형제 필드(555 또는 530)는 상기 새로이 생성된 파일/디렉토리 레코드가 어떠한 형제도 갖고 있지 않다는 것을 나타내도록 설정될 수 있다. 부모 노드 레코드의 자식 필드(545)가 상기 부모 디렉토리 노드가 자식을 갖고 있다는 것을 나타낸다면, 상기 새로이 생성된 파일/디렉토리 레코드의 형제 필드(565 또는 530)는 부모 디렉토리의 기존의 자식을 가리키도록 설정될 수 있고, 상기 부모 디렉토리의 자식 필드(545)는 상기 새로이 생성된 파일/디렉토리 레코드를 가리키도록 설정될 수 있다. 상기 새로이 생성된 파일/디렉토리 레코드가 디렉토리 노드에 대응한다면, 상기 새로이 생성된 디렉토리 레코드의 부모 식별자 필드(540)는 부모 디렉토리 노드를 가리키도록 설정될 수 있다.
단계(600)에서, 파일 시스템 소프트웨어(47)는 상기 새로이 생성된 파일/디렉토리 레코드의 부모 디렉토리를 시작으로 하여 부모 노드를 귀납적으로 올라가 고, 루트 노드에 도달할 때까지 일련의 처리 단계를 실행한다. 이 시점에서, 상기 새로이 생성된 파일/디렉토리 레코드의 부모 디렉토리 노드는 현재의 디렉토리 노드라고 지칭될 수 있다. 도 14에 도시한 예시적인 프로세스에서, 파일 시스템 소프트웨어(47)는 재생성된 파일 계층 구성(335)을 검사하여, 현재의 디렉토리의 부모 노드에 대응하는 디렉토리 노드 레코드가 존재하는지 여부를 결정한다. 이러한 프로세스는 단계(605, 610)에서 실행될 수 있다. 이러한 디렉토리 레코드가 재생성된 파일 계층 구성(335)에 존재하지 않는다면, 새로운 디렉토리 레코드가 단계(615)에서 생성될 수 있다. 다음에, 상기 새로이 생성된 디렉토리 레코드의 자식 필드(545)는 단지 상기 새로운 디렉토리 레코드의 자식으로서 현재의 디렉토리 노드 레코드를 가리키도록 설정될 수 있다. 단계(620)에서, 현재의 디렉토리 노드 레코드의 부모 식별자 필드(540)는 상기 새로이 생성된 디렉토리 레코드를 가리키도록 설정될 수 있다. 현재의 디렉토리 노드 레코드의 형제 필드(530)는 단계(625)에서, 현재의 디렉토리 노드 레코드에 대하여 어떠한 형제도 없다는 것을 나타내도록 설정될 수 있다.
단계(605, 610)에서 실행된 검사를 통해, 현재의 디렉토리의 부모 노드에 대응하는 재생성된 파일 계층 구성(335)에 디렉토리 레코드가 있다는 것이 확인되면, 현재의 디렉토리 노드는 단계(630)에서 부모 디렉토리 노드의 생성된 트리 구조에 링크될 수 있다. 이를 위해, 현재의 노드의 부모 식별자 필드(540)는 재생성된 파일 계층 구성(335) 내의 부모 노드 레코드의 위치를 가리키도록 설정될 수 있다. 현재의 디렉토리 노드의 형제 필드(530)는 부모 노드 레코드의 자식 필드(545)에 의해 가리켜진 것과 동일한 레코드를 가리키도록 설정될 수 있다. 마지막으로, 부모 디렉토리 노드의 자식 필드(545)는 현재의 디렉토리 노드의 위치를 가리키도록 설정될 수 있다.
단계(635)에서, 파일 시스템 소프트웨어(47)는 상기 귀납적 디렉토리 처리가 완료되었는지 여부를 검사할 수 있다. 이 예에서, 상기 귀납적 디렉토리 처리는, 그 처리가 독특하고 인식 가능한 식별자를 갖고 있는 루트 노드로 올라간다면, 완료된다. 단계(635)에서 루트 노드에 도달하였다면, 메타파일(120) 내의 다음 파일 레코드 엔트리에 대한 처리가 단계(640)에서 시작할 수 있으며, 이는 처리에 대한 제어를 단계(575)로 돌려보낸다. 단계(635)에서 루트 노드가 도달하지 않았다면, 상승하는 파일/디렉토리 계층 구성 내의 다음 부모 노드에 대한 처리가 단계(605)에서 시작하여 반복될 수 있다.
도 15는 재구성된 파일 시스템(330)의 논리적 표현이며, 도 8 및 도 14의 처리 단계를 도 2에 도시한 파일 계층 구성을 갖는 파일 시스템에 적용하는 경우에 대응한다. 이 예시적인 논리적 표현에서, 라인(665, 670, 675, 680)은 디렉토리(105, 100, 80, 85)를 나타내는 디렉토리 노드 레코드에 대한 부모 식별자 필드(540)의 콘텐츠에 대응하는 포인터를 나타낸다. 라인(645, 650, 660, 655, 652)은 디렉토리(110, 100, 105, 80, 85)를 나타내는 디렉토리 노드 레코드에 대한 자식 식별자 필드(545)의 콘텐츠에 대응하는 포인터를 나타낸다. 라인(685, 690, 695, 705)은 디렉토리(100, 105, 80)에 대응하는 디렉토리 노드 레코드에 대한 형제 식별자 필드(530)의 콘텐츠에 대응하는 포인터를 나타낸다. 라인(700, 705, 710, 715)은 파일(90, 55, 60, 70)에 대응하는 파일 노드 레코드에 대한 형제 식별자 필드(555)의 콘텐츠에 대응하는 포인터를 나타낸다.
재구성된 파일 시스템(330)을 이용하여 영속성 저장 유닛(30)의 트랜잭션 파일(220) 내의 데이터를 액세스하는 한 가지 방식이 도 15에 도시되어 있다. 도시한 바와 같이, 파일 시스템 소프트웨어(47)는 소프트웨어가 액세스할 파일 노드 레코드에 파일 식별자(730)를 제공한다. 이 예에서, 파일 식별자(730)는 파일(55)을 나타내는 파일 노드 레코드를 가리킨다. 다음에, 파일 시스템 소프트웨어(47)는 파일 노드 레코드의 영역 범위 인덱스(565)의 콘텐츠를 영역 범위 풀(340)에의 인덱스로서 사용하여 파일에 대한 데이터를 트랜잭션 파일(220) 내에 위치시킨다. 그러나, 파일 시스템 소프트웨어(47)는 도 15에 도시한 방식 이외의 다른 여러 가지 방식으로, 재구성된 파일 시스템(330)의 콘텐츠를 사용할 수 있다는 것을 인식하여야 한다.
상기한 바와 같이, 파일의 무결성에 대한 완전한 검증은 시동 프로세스가 촉진되도록 시동 중에는 수행되지 않는다. 대신에, 파일 시스템 소프트웨어(47)는 파일이 액세스될 수 있는 첫 번째 또는 다음번까지 파일에 대한 완전한 검증을 연기할 수 있다. 이를 위해, 파일 시스템 소프트웨어(47)는 각 파일의 무결성이 완전히 검증되었는지 여부를 나타내는 테이블을 유지할 수 있다. 다르게는, 파일 시스템 소프트웨어(47)는 파일의 무결성이 완전히 검증되었는지 여부를 나타내기 위하여, 재생성된 파일 계층 구성(335) 내의 각 파일 노드 레코드의 하나 이상의 비트를 이용할 수 있다. 이러한 지시자(indicator)는, 적어도 시동 후 파일이 액세 스될 수 있는 첫 번째에 파일 시스템 소프트웨어(47)에 의해 검사될 수 있다. 상기 지시자가 파일이 완전히 검증되지 않았음을 나타내면, 그 파일에 대한 완전한 검증은 그때 실행될 수 있다. 다르게는, 파일에 대한 트랜잭션의 헤더가 이미 검사되었기 때문에, 파일 시스템 소프트웨어는 파일에 대한 각 트랜잭션의 데이터 부분의 무결성을 검증하기만 하면 된다. 이러한 검증 프로세스는 하나 이상의 CRC 프로세스, 하나 이상의 ECC 프로세스 등을 포함할 수 있다.
도 5 내지 도 7에 도시한 바와 같이, 각각의 트랜잭션 레코드 헤더 내의 수 많은 상이한 필드는 전체 트랜잭션 레코드의 무결성을 검증하는 데에 이용될 수 있다. 무결성 검사가 실패하고, 관련 에러-수정 코드를 이용하는 애플리케이션이 에러를 수정할 수 없다면, 프로그램 에러는 파일 콘텐츠의 액세스를 요청한 시스템 또는 애플리케이션으로 보고될 수 있다.
본 발명의 여러 가지 실시 형태를 설명하였지만, 당업자에게는 본 발명의 범위 내에서 보다 많은 실시 형태 및 구현 형태가 가능하다라는 것이 명백할 것이다. 따라서, 본 발명은 이하의 특허청구범위 및 그 등가물을 제외하고, 제한되지 않는다.
본 발명은 복잡하고 시간 소모적인 전통적인 파일 계층 구성에 대한 대안 구성을 제공한다.

Claims (14)

  1. 프로세서와,
    상기 프로세서에 의해 액세스 가능한 영속성 저장 디바이스와,
    상기 프로세서에 의해 액세스 가능한 적어도 하나의 메타파일을 포함하고,
    상기 메타파일은 상기 영속성 저장 디바이스의 파일 및 이 파일에 대한 디렉토리 콘테이너에 대응하는 복수 개의 레코드를 갖고 있으며,
    상기 복수 개의 레코드 각각은 파일 식별자에 의해 어드레스 가능하고, 각각의 레코드는 부모 식별자를 포함하며, 주어진 레코드의 부모 식별자는 그 주어진 레코드에 대한 부모 디렉토리 레코드의 파일 식별자에 대응하는 것인
    컴퓨터 시스템.
  2. 청구항 1에 있어서, 상기 복수의 레코드 각각은 고정된 길이를 갖고 있는 것인 컴퓨터 시스템.
  3. 청구항 1에 있어서, 상기 복수 개의 레코드 각각은 확장 레코드 식별자를 더 포함하고, 주어진 레코드에 대한 확장 레코드 식별자는 상기 메타파일 내의 확장 레코드의 파일 식별자에 대응하며, 상기 확장 레코드는 주어진 레코드에 의해 나타내어지는 파일 또는 디렉토리에 관련된 추가의 정보를 담고 있는 것인 컴퓨터 시스템.
  4. 청구항 3에 있어서, 상기 확장 레코드는 상기 확장 레코드에 의해 나타내어지는 파일 또는 디렉토리의 롱 네임에 대응하는 복수 개의 ASCII 문자를 더 포함하는 것인 컴퓨터 시스템.
  5. 청구항 3에 있어서, 주어진 확장 레코드의 부모 식별자는 상기 주어진 레코드를 어드레싱하는 확장 레코드 식별자를 갖는 레코드의 파일 식별자에 대응하는 것인 컴퓨터 시스템.
  6. 청구항 1에 있어서, 상기 복수 개의 레코드 엔트리 각각은 상기 레코드에 의해 나타내어지는 파일 또는 디렉토리의 쇼트 네임에 대응하는 복수 개의 ASCII 문자를 더 포함하는 것인 컴퓨터 시스템.
  7. 청구항 1에 있어서, 상기 복수 개의 레코드 각각은,
    상기 레코드에 대응하는 파일의 종류에 대한 정보를 담고 있는 모드 필드와,
    상기 레코드에 대응하는 파일이 마지막으로 액세스된 시간에 대한 정보를 담고 있는 액세스 시간 필드와,
    상기 레코드에 대응하는 파일이 마지막으로 수정된 시간에 대한 정보를 담고 있는 수정 시간 필드
    를 더 포함하는 것인 컴퓨터 시스템.
  8. 프로세서와,
    상기 프로세서에 의해 액세스 가능한 영속성 데이터 저장 디바이스와,
    상기 프로세서에 의해 실행되는 파일 시스템 소프트웨어를 포함하고,
    상기 파일 시스템 소프트웨어는 상기 영속성 데이터 저장 디바이스의 파일들을 적어도 하나의 메타파일에 포함되는 복수 개의 레코드로 조직화하도록 동작하고,
    상기 파일 시스템 소프트웨어는 상기 메타파일 내의 파일 및 디렉토리를 역 계층적 구조로 조직화하며, 상기 역 계층적 구조에서 부모 디렉토리의 자식 파일 및 자식 디렉토리에 대응하는 레코드들은 상기 부모 디렉토리에 대응하는 메타파일 내의 레코드를 직접 가리키는 것인 컴퓨터 시스템.
  9. 청구항 8에 있어서, 상기 복수 개의 레코드 각각은 고정된 길이를 갖고 있는 것인 컴퓨터 시스템.
  10. 청구항 8에 있어서, 상기 복수 개의 레코드 각각은 확장 레코드 식별자를 더 포함하고, 주어진 레코드에 대한 상기 확장 레코드 식별자는 상기 메타파일 내의 확장 레코드의 파일 식별자에 대응하며, 상기 확장 레코드는 주어진 레코드에 의해 나타내어지는 파일 또는 디렉토리와 관련된 정보를 더 담고 있는 것인 컴퓨터 시스템.
  11. 청구항 10에 있어서, 상기 확장 레코드는 상기 확장 레코드에 의해 나타내어지는 파일 또는 디렉토리의 롱 네임에 대응하는 복수 개의 ASCII 문자를 더 포함하는 것인 컴퓨터 시스템.
  12. 청구항 10에 있어서, 주어진 확장 레코드의 부모 식별자는 그 주어진 레코드를 어드레싱하는 확장 레코드 식별자를 갖고 있는 레코드의 파일 식별자에 대응하는 것인 컴퓨터 시스템.
  13. 청구항 8에 있어서, 상기 복수 개의 레코드 엔트리 각각은 상기 레코드에 의해 나타내어지는 파일 또는 디렉토리의 쇼트 네임에 대응하는 복수 개의 ASCII 문자를 더 포함하는 것인 컴퓨터 시스템.
  14. 청구항 8에 있어서, 상기 복수 개의 레코드 엔트리 각각은,
    상기 레코드에 대응하는 파일의 종류에 대한 정보를 담고 있는 모드 필드와,
    상기 레코드에 대응하는 파일이 마지막으로 액세스된 시간에 대한 정보를 담고 있는 액세스 시간 필드와,
    상기 레코드에 대응하는 파일이 마지막으로 수정된 시간에 대한 정보를 담고 있는 수정 시간 필드
    를 더 포함하는 것인 컴퓨터 시스템.
KR1020060057098A 2005-07-01 2006-06-23 역 계층적 구조를 갖고 있는 파일 시스템 KR20070003577A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/173,945 2005-07-01
US11/173,945 US8959125B2 (en) 2005-07-01 2005-07-01 File system having inverted hierarchical structure

Publications (1)

Publication Number Publication Date
KR20070003577A true KR20070003577A (ko) 2007-01-05

Family

ID=37103111

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060057098A KR20070003577A (ko) 2005-07-01 2006-06-23 역 계층적 구조를 갖고 있는 파일 시스템

Country Status (6)

Country Link
US (1) US8959125B2 (ko)
EP (1) EP1739575B1 (ko)
JP (1) JP2007012060A (ko)
KR (1) KR20070003577A (ko)
CN (1) CN1983265A (ko)
CA (1) CA2550871C (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873683B2 (en) * 2005-07-01 2011-01-18 Qnx Software Systems Gmbh & Co. Kg File system having transaction record coalescing
US7809777B2 (en) * 2005-07-01 2010-10-05 Qnx Software Systems Gmbh & Co. Kg File system having deferred verification of data integrity
US7970803B2 (en) 2005-07-01 2011-06-28 Qnx Software Systems Gmbh & Co. Kg Optimized startup verification of file system integrity
US7707480B2 (en) 2005-07-01 2010-04-27 Qnx Software Systems Gmbh & Co. Kg System employing data verification operations of differing computational costs
US7698495B2 (en) 2005-07-01 2010-04-13 QNZ Software Systems GmbH & Co. KG Computer system having logically ordered cache management
US20070005874A1 (en) * 2005-07-01 2007-01-04 Dan Dodge File system storing transaction records in flash-like media
US20080059510A1 (en) * 2006-08-31 2008-03-06 Daniel Cardamore Multimedia system framework having layer consolidating access to multiple media devices
US7908276B2 (en) 2006-08-25 2011-03-15 Qnx Software Systems Gmbh & Co. Kg Filesystem having a filename cache
US7599972B2 (en) 2006-08-25 2009-10-06 Qnx Software Systems Gmbh & Co. Kg File system having variable logical storage block size
GB0623916D0 (en) * 2006-11-30 2007-01-10 Ibm Methods, apparatus and computer programs for change management in a data processing environment
US20080147747A1 (en) * 2006-12-14 2008-06-19 Dan Cardamore Media system having synchronization with preemptive prioritization of synchronization order
EP1990739A1 (en) * 2007-05-07 2008-11-12 Siemens Aktiengesellschaft Directory structure implementation system and method
JP4691209B2 (ja) * 2008-04-04 2011-06-01 パナソニック株式会社 アクセス装置、情報記録装置、情報記録システム、ファイル管理方法、およびプログラム
US7610202B1 (en) * 2008-04-21 2009-10-27 Nuance Communications, Inc. Integrated system and method for mobile audio playback and dictation
US20090276404A1 (en) * 2008-04-30 2009-11-05 Henigman Timothy J Method and system for efficient data structure for reporting on indeterminately deep hierarchies
US8914626B1 (en) * 2011-05-20 2014-12-16 Amazon Technologies, Inc. Providing configurable bootstrapping of software image execution
US8886679B2 (en) * 2011-10-11 2014-11-11 Hewlett-Packard Development Company, L.P. Mining web applications
CN103186617B (zh) * 2011-12-30 2016-04-06 北京新媒传信科技有限公司 一种存储数据的方法和装置
CN104170364B (zh) * 2012-01-10 2017-03-15 京瓷办公信息系统株式会社 图像形成装置
US11068447B2 (en) * 2017-04-14 2021-07-20 Databricks Inc. Directory level atomic commit protocol
CN111913915B (zh) * 2020-07-30 2023-10-03 杭州宏杉科技股份有限公司 文件隐藏方法和装置

Family Cites Families (177)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4882703A (en) 1984-09-17 1989-11-21 Nicolai Robert L Procedure for fining all words contained within any given word including creation of a dictionary
JPS62186361A (ja) * 1986-02-13 1987-08-14 Matsushita Electric Ind Co Ltd 情報検索装置
US4945475A (en) * 1986-10-30 1990-07-31 Apple Computer, Inc. Hierarchical file system to provide cataloging and retrieval of data
US4926317A (en) * 1987-07-24 1990-05-15 Convex Computer Corporation Hierarchical memory system with logical cache, physical cache, and address translation unit for generating a sequence of physical addresses
JPH0778498B2 (ja) 1988-02-26 1995-08-23 横河電機株式会社 バックグランド除去装置
GB8829919D0 (en) 1988-12-22 1989-02-15 Int Computer Limited File system
US5222217A (en) * 1989-01-18 1993-06-22 International Business Machines Corporation System and method for implementing operating system message queues with recoverable shared virtual storage
EP0410210A3 (en) 1989-07-24 1993-03-17 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
US5201044A (en) * 1990-04-16 1993-04-06 International Business Machines Corporation Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory
US5187786A (en) * 1991-04-05 1993-02-16 Sun Microsystems, Inc. Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system
US5369757A (en) 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
US5627996A (en) 1992-08-19 1997-05-06 At&T Method and apparatus for accessing the same computer file using different file name formats
JPH06139124A (ja) * 1992-10-28 1994-05-20 Nec Software Ltd インバーテッドファイル方式データベース内不整合削除方式
US5454103A (en) * 1993-02-01 1995-09-26 Lsc, Inc. Method and apparatus for file storage allocation for secondary storage using large and small file blocks
US5455944A (en) * 1993-03-16 1995-10-03 International Business Machines Corporation Method for managing logging and locking of page free space information in a transaction processing system
US6286013B1 (en) * 1993-04-01 2001-09-04 Microsoft Corporation Method and system for providing a common name space for long and short file names in an operating system
US5530849A (en) * 1993-08-16 1996-06-25 Cornell Research Foundation, Inc. Method of reading dynamic, hierarchical file system directories
JPH07175698A (ja) 1993-12-17 1995-07-14 Fujitsu Ltd ファイルシステム
GB9408405D0 (en) * 1994-04-28 1994-06-22 Int Computers Ltd High availibilty computer system
US5668958A (en) * 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US5726989A (en) * 1995-11-06 1998-03-10 Stellar One Corporation Method for ensuring synchronization of MPEG-1 data carried in an MPEG-2 transport stream
US5765172A (en) * 1996-01-23 1998-06-09 Dsc Communications Corporation System and method for verifying integrity of replicated databases
US5774715A (en) * 1996-03-27 1998-06-30 Sun Microsystems, Inc. File system level compression using holes
GB9606927D0 (en) 1996-04-02 1996-06-05 Memory Corp Plc Data storage devices
US5806085A (en) * 1996-05-01 1998-09-08 Sun Microsystems, Inc. Method for non-volatile caching of network and CD-ROM file accesses using a cache directory, pointers, file name conversion, a local hard disk, and separate small database
US6097380A (en) * 1996-06-24 2000-08-01 Microsoft Corporation Continuous media stream control
US5995980A (en) 1996-07-23 1999-11-30 Olson; Jack E. System and method for database update replication
US6377992B1 (en) * 1996-10-23 2002-04-23 PLAZA FERNáNDEZ JOSé FABIáN Method and system for integration of several physical media for data communications between two computing systems in a manner transparent to layer #3 and above of the ISO OSI model
US5974425A (en) * 1996-12-17 1999-10-26 Oracle Corporation Method and apparatus for reapplying changes to a database
US5897661A (en) * 1997-02-25 1999-04-27 International Business Machines Corporation Logical volume manager and method having enhanced update capability with dynamic allocation of storage and minimal storage of metadata information
US5960436A (en) * 1997-08-29 1999-09-28 International Business Machines Corp. Transaction compaction for replay of transactions from client to server
US6173291B1 (en) * 1997-09-26 2001-01-09 Powerquest Corporation Method and apparatus for recovering data from damaged or corrupted file storage media
US6516356B1 (en) 1997-09-30 2003-02-04 International Business Machines Corporation Application interface to a media server and a method of implementing the same
EP1744316A1 (en) * 1997-10-21 2007-01-17 Sony Corporation Recording and/or reproduction apparatus, file management method and providing medium
US6160796A (en) 1998-01-06 2000-12-12 Sony Corporation Of Japan Method and system for updating device identification and status information after a local bus reset within a home audio/video network
US6260044B1 (en) * 1998-02-04 2001-07-10 Nugenesis Technologies Corporation Information storage and retrieval system for storing and retrieving the visual form of information from an application in a database
US6175900B1 (en) * 1998-02-09 2001-01-16 Microsoft Corporation Hierarchical bitmap-based memory manager
AU3304699A (en) 1998-02-20 1999-09-06 Storm Systems Llc File system performance enhancement
US6457130B2 (en) * 1998-03-03 2002-09-24 Network Appliance, Inc. File access control in a multi-protocol file server
US6697846B1 (en) * 1998-03-20 2004-02-24 Dataplow, Inc. Shared file system
US6058400A (en) * 1998-04-28 2000-05-02 Sun Microsystems, Inc. Highly available cluster coherent filesystem
US6389513B1 (en) 1998-05-13 2002-05-14 International Business Machines Corporation Disk block cache management for a distributed shared memory computer system
US6185663B1 (en) * 1998-06-15 2001-02-06 Compaq Computer Corporation Computer method and apparatus for file system block allocation with multiple redo
US6356863B1 (en) * 1998-09-08 2002-03-12 Metaphorics Llc Virtual network file server
US6845401B1 (en) * 1998-12-30 2005-01-18 Schneider Automation Inc. Embedded file system for a programmable logic controller
US6510450B1 (en) * 1999-02-04 2003-01-21 Novell, Inc. Multiple storage class distributed nametags for locating items in a distributed computing system
US6922708B1 (en) 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
US6438661B1 (en) * 1999-03-03 2002-08-20 International Business Machines Corporation Method, system, and program for managing meta data in a storage system and rebuilding lost meta data in cache
US6754696B1 (en) * 1999-03-25 2004-06-22 Micosoft Corporation Extended file system
JP3763992B2 (ja) 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US6324637B1 (en) 1999-08-13 2001-11-27 Sun Microsystems, Inc. Apparatus and method for loading objects from a primary memory hash index
JP2001101044A (ja) 1999-09-29 2001-04-13 Toshiba Corp トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム
US6496944B1 (en) 1999-10-06 2002-12-17 International Business Machines Corporation Method for database assisted file system restore
US6412042B1 (en) 1999-11-17 2002-06-25 Maxtor Corporation System and method for improved disk drive performance and reliability
JP4507319B2 (ja) 1999-12-17 2010-07-21 ソニー株式会社 情報処理装置、情報処理方法、プログラム、および記録媒体、端末装置、並びに、システムおよびシステムの方法
JP3686564B2 (ja) 1999-12-21 2005-08-24 株式会社日立製作所 データベースシステム、データベースのレプリカ生成方法およびデータベースのレプリカ生成プログラムを記録したコンピュータ読み取り可能な記録媒体
US6584582B1 (en) 2000-01-14 2003-06-24 Sun Microsystems, Inc. Method of file system recovery logging
US6606628B1 (en) * 2000-02-14 2003-08-12 Cisco Technology, Inc. File system for nonvolatile memory
US6523046B2 (en) 2000-02-25 2003-02-18 Microsoft Corporation Infrastructure and method for supporting generic multimedia metadata
US6591376B1 (en) * 2000-03-02 2003-07-08 Hewlett-Packard Development Company, L.P. Method and system for failsafe recovery and upgrade of an embedded operating system
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US20020143862A1 (en) 2000-05-19 2002-10-03 Atitania Ltd. Method and apparatus for transferring information between a source and a destination on a network
US7051098B2 (en) 2000-05-25 2006-05-23 United States Of America As Represented By The Secretary Of The Navy System for monitoring and reporting performance of hosts and applications and selectively configuring applications in a resource managed system
US7043472B2 (en) * 2000-06-05 2006-05-09 International Business Machines Corporation File system with access and retrieval of XML documents
US6675177B1 (en) 2000-06-21 2004-01-06 Teradactyl, Llc Method and system for backing up digital data
JP4164994B2 (ja) * 2000-07-14 2008-10-15 ソニー株式会社 データ記録再生装置及び方法
US6748395B1 (en) * 2000-07-14 2004-06-08 Microsoft Corporation System and method for dynamic playlist of media
US6842770B1 (en) 2000-08-18 2005-01-11 Apple Computer, Inc. Method and system for seamlessly accessing remotely stored files
US7689510B2 (en) * 2000-09-07 2010-03-30 Sonic Solutions Methods and system for use in network management of content
US6571259B1 (en) * 2000-09-26 2003-05-27 Emc Corporation Preallocation of file system cache blocks in a data storage system
US7660902B2 (en) 2000-11-20 2010-02-09 Rsa Security, Inc. Dynamic file access control and management
US20020161846A1 (en) 2001-01-29 2002-10-31 Ulrich Thomas R. Data path controller architecture
US6990667B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US7277878B2 (en) * 2001-02-13 2007-10-02 Ariba, Inc. Variable length file header apparatus and system
JP4225729B2 (ja) 2001-03-06 2009-02-18 シャープ株式会社 情報管理装置
US7047257B2 (en) * 2001-04-03 2006-05-16 Qnx Software Systems Computer file management system
US7003619B1 (en) * 2001-04-09 2006-02-21 Matrix Semiconductor, Inc. Memory device and method for storing and reading a file system structure in a write-once memory array
US7174561B2 (en) * 2001-04-13 2007-02-06 Emc Corporation MPEG dual-channel decoder data and control protocols for real-time video streaming
US6748491B2 (en) * 2001-04-19 2004-06-08 International Business Machines Corporation Designing a cache using an LRU-LFU array
US6928648B2 (en) 2001-04-20 2005-08-09 Sun Microsystems, Inc. Method and apparatus for a mobile multimedia java framework
US7136934B2 (en) 2001-06-19 2006-11-14 Request, Inc. Multimedia synchronization method and device
JP2003022206A (ja) * 2001-07-06 2003-01-24 Fujitsu Ltd ファイル管理プログラムおよびファイル管理装置
US8108241B2 (en) * 2001-07-11 2012-01-31 Shabina Shukoor System and method for promoting action on visualized changes to information
US6396421B1 (en) 2001-07-31 2002-05-28 Wind River Systems, Inc. Method and system for sampling rate conversion in digital audio applications
AU2002313583A1 (en) 2001-08-01 2003-02-17 Actona Technologies Ltd. Virtual file-sharing network
US7043493B2 (en) 2001-09-17 2006-05-09 Fujitsu Limited Hierarchical file system and anti-tearing algorithm for a limited-resource computer such as a smart card
US6868480B2 (en) * 2001-09-28 2005-03-15 Ui Evolution, Inc. Removable active application specific medium
US20030074457A1 (en) 2001-10-17 2003-04-17 Kluth Michael R. Computer system with separable input device
US7191185B2 (en) * 2001-10-30 2007-03-13 Goldman Sachs & Co. Systems and methods for facilitating access to documents via an entitlement rule
JP2003150416A (ja) 2001-11-09 2003-05-23 Sony Corp ファイル管理装置及びファイル管理方法
US20040064500A1 (en) 2001-11-20 2004-04-01 Kolar Jennifer Lynn System and method for unified extraction of media objects
JP4168626B2 (ja) * 2001-12-06 2008-10-22 株式会社日立製作所 記憶装置間のファイル移行方法
US6959373B2 (en) 2001-12-10 2005-10-25 Incipient, Inc. Dynamic and variable length extents
JP2003216620A (ja) 2002-01-17 2003-07-31 Matsushita Electric Ind Co Ltd コンテンツ管理システム、コンテンツ管理方法、媒体、およびプログラム
US7047296B1 (en) * 2002-01-28 2006-05-16 Witness Systems, Inc. Method and system for selectively dedicating resources for recording data exchanged between entities attached to a network
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US6983462B2 (en) * 2002-03-15 2006-01-03 Toshiba Corporation Method and apparatus for serving a request queue
US7689626B2 (en) 2002-05-31 2010-03-30 Microsoft Corporation System and method for locating log records in multiplexed transactional logs
US6857001B2 (en) * 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7054888B2 (en) * 2002-10-16 2006-05-30 Microsoft Corporation Optimizing media player memory during rendering
US7397797B2 (en) 2002-12-13 2008-07-08 Nvidia Corporation Method and apparatus for performing network processing functions
KR20040065790A (ko) * 2003-01-16 2004-07-23 삼성전자주식회사 디브이디 재생장치 및 이를 이용한 멀티미디어 파일재생방법
CA2419883A1 (en) 2003-02-26 2004-08-26 Ibm Canada Limited - Ibm Canada Limitee Discriminatory replay of log files during table space recovery in a database management system
US7111147B1 (en) * 2003-03-21 2006-09-19 Network Appliance, Inc. Location-independent RAID group virtual block management
JP2004295465A (ja) * 2003-03-27 2004-10-21 Hitachi Ltd 計算機システム
US20040199537A1 (en) * 2003-04-03 2004-10-07 Duff Robert Cory System for storing and retrieving database information
US7139752B2 (en) * 2003-05-30 2006-11-21 International Business Machines Corporation System, method and computer program product for performing unstructured information management and automatic text analysis, and providing multiple document views derived from different document tokenizations
CN100377119C (zh) 2003-06-20 2008-03-26 深圳市朗科科技有限公司 闪存介质中数据保护方法
JP4490917B2 (ja) 2003-07-24 2010-06-30 パナソニック株式会社 ファイル管理方法及び情報処理装置
US20080126936A1 (en) * 2003-08-21 2008-05-29 Gary Williams Electronic/software multimedia library control system and methods of use thereof
US7590643B2 (en) * 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US20050060420A1 (en) 2003-09-11 2005-03-17 Kovacevic Branko D. System for decoding multimedia data and method thereof
US7584353B2 (en) * 2003-09-12 2009-09-01 Trimble Navigation Limited Preventing unauthorized distribution of media content within a global network
JP2005115857A (ja) 2003-10-10 2005-04-28 Sony Corp ファイル記憶装置
US7181463B2 (en) * 2003-10-24 2007-02-20 Microsoft Corporation System and method for managing data using static lists
US7451167B2 (en) 2003-10-24 2008-11-11 Network Appliance, Inc. Verification of file system log data using per-entry checksums
JP4144507B2 (ja) * 2003-10-30 2008-09-03 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US7962575B2 (en) * 2003-11-03 2011-06-14 Grape Technology Group, Inc. System and method for data synchronization between devices
US7213176B2 (en) * 2003-12-10 2007-05-01 Electronic Data Systems Corporation Adaptive log file scanning utility
KR100562907B1 (ko) 2003-12-18 2006-03-21 삼성전자주식회사 미디어 컨텐츠의 통합 관리 장치 및 그 방법
US20050147130A1 (en) * 2003-12-23 2005-07-07 Intel Corporation Priority based synchronization of data in a personal area network
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
EP1562193A1 (en) 2004-02-06 2005-08-10 Sony International (Europe) GmbH System for storing and rendering multimedia data
US7627617B2 (en) 2004-02-11 2009-12-01 Storage Technology Corporation Clustered hierarchical file services
US7676481B2 (en) 2005-02-24 2010-03-09 Microsoft Corporation Serialization of file system item(s) and associated entity(ies)
US20050210507A1 (en) 2004-03-17 2005-09-22 Sony Corporation System and method for multimedia playlist
US7873685B2 (en) * 2004-05-13 2011-01-18 Pixar System and method for flexible path handling
US7627530B2 (en) 2004-04-26 2009-12-01 Amazon Technologies, Inc. Method and system for managing access to media files
US20050246362A1 (en) 2004-05-03 2005-11-03 Borland Devin P System and method for dynamci log compression in a file system
US20050256845A1 (en) 2004-05-10 2005-11-17 Microsoft Corporation Data management for a networked multimedia console
US7565661B2 (en) 2004-05-10 2009-07-21 Siew Yong Sim-Tang Method and system for real-time event journaling to provide enterprise data services
WO2005112586A2 (en) * 2004-05-12 2005-12-01 Fusionone, Inc. Advanced contact identification system
BRPI0418908A (pt) * 2004-05-26 2007-11-27 Nokia Corp método, programa de computador, terminal móvel e sistema de armazenagem para gerenciar os itens de mìdia
US20050273486A1 (en) 2004-06-03 2005-12-08 Keith Robert O Jr Virtual distributed file system
WO2006059240A2 (en) * 2004-06-16 2006-06-08 Ids Scheer Aktiengesellschaft User interface for complex process inplementation
US8087091B2 (en) * 2004-07-08 2011-12-27 Media Rights Technologies Method and system for preventing unauthorized reproduction of electronic media
KR20060009717A (ko) 2004-07-26 2006-02-01 엘지전자 주식회사 이동통신 단말기의 데이터 관리 시스템
US7672978B2 (en) * 2004-08-20 2010-03-02 Nokia Corporation Handling of content in a data processing device
KR100677132B1 (ko) 2004-09-09 2007-02-02 삼성전자주식회사 동영상 재생 및 프로그래밍 기능을 위한 멀티미디어데이터를 기록한 저장 매체, 그 재생 장치 및 재생 방법
JP2006107192A (ja) 2004-10-06 2006-04-20 Olympus Imaging Corp 情報処理システム及びコンテンツデータの再生回数管理方法
AU2005299366A1 (en) * 2004-10-25 2006-05-04 Empower Technologies Inc., A Washington Corporation System and method for global data synchronization
US7610307B2 (en) 2004-11-30 2009-10-27 Microsoft Corporation Method and system of detecting file system namespace changes and restoring consistency
FI119664B (fi) 2004-12-08 2009-01-30 Open Invention Network Llc Menetelmä elektronisissa laitteissa oleviin tiedostoihin pääsemiseksi
US9639554B2 (en) 2004-12-17 2017-05-02 Microsoft Technology Licensing, Llc Extensible file system
EP1839177A4 (en) 2005-01-05 2010-07-07 Divx Inc SYSTEM AND METHOD RELATING TO OFF-SITE USER INTERFACE
JP2006235717A (ja) * 2005-02-22 2006-09-07 Sony Corp コンテンツ転送方法、その装置及びプログラム
US7818350B2 (en) 2005-02-28 2010-10-19 Yahoo! Inc. System and method for creating a collaborative playlist
US20060206538A1 (en) 2005-03-09 2006-09-14 Veazey Judson E System for performing log writes in a database management system
US7647346B2 (en) * 2005-03-29 2010-01-12 Microsoft Corporation Automatic rules-based device synchronization
US8145686B2 (en) 2005-05-06 2012-03-27 Microsoft Corporation Maintenance of link level consistency between database and file system
US20060277183A1 (en) * 2005-06-06 2006-12-07 Tony Nichols System and method for neutralizing locked pestware files
US20060282471A1 (en) 2005-06-13 2006-12-14 Mark Timothy W Error checking file system metadata while the file system remains available
KR20060133410A (ko) 2005-06-20 2006-12-26 엘지전자 주식회사 복합 미디어 장치에서 파일 검색 및 파일 데이터베이스관리 방법
US7873683B2 (en) * 2005-07-01 2011-01-18 Qnx Software Systems Gmbh & Co. Kg File system having transaction record coalescing
US7970803B2 (en) * 2005-07-01 2011-06-28 Qnx Software Systems Gmbh & Co. Kg Optimized startup verification of file system integrity
US20070005874A1 (en) * 2005-07-01 2007-01-04 Dan Dodge File system storing transaction records in flash-like media
US7707480B2 (en) * 2005-07-01 2010-04-27 Qnx Software Systems Gmbh & Co. Kg System employing data verification operations of differing computational costs
US7809777B2 (en) * 2005-07-01 2010-10-05 Qnx Software Systems Gmbh & Co. Kg File system having deferred verification of data integrity
US7698495B2 (en) * 2005-07-01 2010-04-13 QNZ Software Systems GmbH & Co. KG Computer system having logically ordered cache management
WO2007014296A2 (en) * 2005-07-25 2007-02-01 Parascale, Inc. Scalable distributed file storage access and management
US7702821B2 (en) * 2005-09-15 2010-04-20 Eye-Fi, Inc. Content-aware digital media storage device and methods of using the same
US20070185879A1 (en) * 2005-12-23 2007-08-09 Metacommunications, Inc. Systems and methods for archiving and retrieving digital assets
US7426606B2 (en) * 2006-03-31 2008-09-16 Intel Corporation Method, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system
US7558797B2 (en) * 2006-06-30 2009-07-07 Microsoft Corporation Metadata structures for mass P2P file sharing
US7613770B2 (en) * 2006-06-30 2009-11-03 Microsoft Corporation On-demand file transfers for mass P2P file sharing
US20080027998A1 (en) * 2006-07-27 2008-01-31 Hitachi, Ltd. Method and apparatus of continuous data protection for NAS
US7752402B2 (en) * 2006-08-18 2010-07-06 Isilon Systems, Inc. Systems and methods for allowing incremental journaling
US7676691B2 (en) * 2006-08-18 2010-03-09 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7908276B2 (en) 2006-08-25 2011-03-15 Qnx Software Systems Gmbh & Co. Kg Filesystem having a filename cache
US20080059510A1 (en) 2006-08-31 2008-03-06 Daniel Cardamore Multimedia system framework having layer consolidating access to multiple media devices
US7599972B2 (en) 2006-08-25 2009-10-06 Qnx Software Systems Gmbh & Co. Kg File system having variable logical storage block size
US8566503B2 (en) 2006-08-25 2013-10-22 Qnx Software Systems Limited Multimedia filesystem having unified representation of content on diverse multimedia devices
US20080147747A1 (en) * 2006-12-14 2008-06-19 Dan Cardamore Media system having synchronization with preemptive prioritization of synchronization order
US8682859B2 (en) * 2007-10-19 2014-03-25 Oracle International Corporation Transferring records between tables using a change transaction log

Also Published As

Publication number Publication date
US8959125B2 (en) 2015-02-17
CA2550871A1 (en) 2007-01-01
CN1983265A (zh) 2007-06-20
JP2007012060A (ja) 2007-01-18
CA2550871C (en) 2013-08-13
EP1739575A3 (en) 2010-02-17
EP1739575B1 (en) 2018-11-28
EP1739575A2 (en) 2007-01-03
US20070005615A1 (en) 2007-01-04

Similar Documents

Publication Publication Date Title
US8959125B2 (en) File system having inverted hierarchical structure
CA2549917C (en) File system storing transaction records in a storage media
US7873683B2 (en) File system having transaction record coalescing
CA2818472C (en) Optimized startup verification of file system integrity
US7809777B2 (en) File system having deferred verification of data integrity
US6912614B2 (en) Disk array apparatus and data restoring method used therein
US6636941B1 (en) Enhanced stable disk storage
US20170242872A1 (en) Method for reliable and efficient filesystem metadata conversion

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid