KR20070003577A - 역 계층적 구조를 갖고 있는 파일 시스템 - Google Patents
역 계층적 구조를 갖고 있는 파일 시스템 Download PDFInfo
- 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
Links
Images
Classifications
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1865—Transactional 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
도 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에 있어서, 상기 복수의 레코드 각각은 고정된 길이를 갖고 있는 것인 컴퓨터 시스템.
- 청구항 1에 있어서, 상기 복수 개의 레코드 각각은 확장 레코드 식별자를 더 포함하고, 주어진 레코드에 대한 확장 레코드 식별자는 상기 메타파일 내의 확장 레코드의 파일 식별자에 대응하며, 상기 확장 레코드는 주어진 레코드에 의해 나타내어지는 파일 또는 디렉토리에 관련된 추가의 정보를 담고 있는 것인 컴퓨터 시스템.
- 청구항 3에 있어서, 상기 확장 레코드는 상기 확장 레코드에 의해 나타내어지는 파일 또는 디렉토리의 롱 네임에 대응하는 복수 개의 ASCII 문자를 더 포함하는 것인 컴퓨터 시스템.
- 청구항 3에 있어서, 주어진 확장 레코드의 부모 식별자는 상기 주어진 레코드를 어드레싱하는 확장 레코드 식별자를 갖는 레코드의 파일 식별자에 대응하는 것인 컴퓨터 시스템.
- 청구항 1에 있어서, 상기 복수 개의 레코드 엔트리 각각은 상기 레코드에 의해 나타내어지는 파일 또는 디렉토리의 쇼트 네임에 대응하는 복수 개의 ASCII 문자를 더 포함하는 것인 컴퓨터 시스템.
- 청구항 1에 있어서, 상기 복수 개의 레코드 각각은,상기 레코드에 대응하는 파일의 종류에 대한 정보를 담고 있는 모드 필드와,상기 레코드에 대응하는 파일이 마지막으로 액세스된 시간에 대한 정보를 담고 있는 액세스 시간 필드와,상기 레코드에 대응하는 파일이 마지막으로 수정된 시간에 대한 정보를 담고 있는 수정 시간 필드를 더 포함하는 것인 컴퓨터 시스템.
- 프로세서와,상기 프로세서에 의해 액세스 가능한 영속성 데이터 저장 디바이스와,상기 프로세서에 의해 실행되는 파일 시스템 소프트웨어를 포함하고,상기 파일 시스템 소프트웨어는 상기 영속성 데이터 저장 디바이스의 파일들을 적어도 하나의 메타파일에 포함되는 복수 개의 레코드로 조직화하도록 동작하고,상기 파일 시스템 소프트웨어는 상기 메타파일 내의 파일 및 디렉토리를 역 계층적 구조로 조직화하며, 상기 역 계층적 구조에서 부모 디렉토리의 자식 파일 및 자식 디렉토리에 대응하는 레코드들은 상기 부모 디렉토리에 대응하는 메타파일 내의 레코드를 직접 가리키는 것인 컴퓨터 시스템.
- 청구항 8에 있어서, 상기 복수 개의 레코드 각각은 고정된 길이를 갖고 있는 것인 컴퓨터 시스템.
- 청구항 8에 있어서, 상기 복수 개의 레코드 각각은 확장 레코드 식별자를 더 포함하고, 주어진 레코드에 대한 상기 확장 레코드 식별자는 상기 메타파일 내의 확장 레코드의 파일 식별자에 대응하며, 상기 확장 레코드는 주어진 레코드에 의해 나타내어지는 파일 또는 디렉토리와 관련된 정보를 더 담고 있는 것인 컴퓨터 시스템.
- 청구항 10에 있어서, 상기 확장 레코드는 상기 확장 레코드에 의해 나타내어지는 파일 또는 디렉토리의 롱 네임에 대응하는 복수 개의 ASCII 문자를 더 포함하는 것인 컴퓨터 시스템.
- 청구항 10에 있어서, 주어진 확장 레코드의 부모 식별자는 그 주어진 레코드를 어드레싱하는 확장 레코드 식별자를 갖고 있는 레코드의 파일 식별자에 대응하는 것인 컴퓨터 시스템.
- 청구항 8에 있어서, 상기 복수 개의 레코드 엔트리 각각은 상기 레코드에 의해 나타내어지는 파일 또는 디렉토리의 쇼트 네임에 대응하는 복수 개의 ASCII 문자를 더 포함하는 것인 컴퓨터 시스템.
- 청구항 8에 있어서, 상기 복수 개의 레코드 엔트리 각각은,상기 레코드에 대응하는 파일의 종류에 대한 정보를 담고 있는 모드 필드와,상기 레코드에 대응하는 파일이 마지막으로 액세스된 시간에 대한 정보를 담고 있는 액세스 시간 필드와,상기 레코드에 대응하는 파일이 마지막으로 수정된 시간에 대한 정보를 담고 있는 수정 시간 필드를 더 포함하는 것인 컴퓨터 시스템.
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)
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)
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 |
-
2005
- 2005-07-01 US US11/173,945 patent/US8959125B2/en active Active
-
2006
- 2006-06-23 CN CNA2006100931795A patent/CN1983265A/zh active Pending
- 2006-06-23 EP EP06012983.0A patent/EP1739575B1/en active Active
- 2006-06-23 KR KR1020060057098A patent/KR20070003577A/ko not_active Application Discontinuation
- 2006-06-23 JP JP2006174548A patent/JP2007012060A/ja not_active Withdrawn
- 2006-06-23 CA CA2550871A patent/CA2550871C/en active Active
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 |