KR20060017287A - 이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치 - Google Patents

이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치 Download PDF

Info

Publication number
KR20060017287A
KR20060017287A KR1020040065910A KR20040065910A KR20060017287A KR 20060017287 A KR20060017287 A KR 20060017287A KR 1020040065910 A KR1020040065910 A KR 1020040065910A KR 20040065910 A KR20040065910 A KR 20040065910A KR 20060017287 A KR20060017287 A KR 20060017287A
Authority
KR
South Korea
Prior art keywords
file
information
log
storage device
data
Prior art date
Application number
KR1020040065910A
Other languages
English (en)
Other versions
KR100704621B1 (ko
Inventor
권문상
배성환
정상신
서동영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020040065910A priority Critical patent/KR100704621B1/ko
Publication of KR20060017287A publication Critical patent/KR20060017287A/ko
Application granted granted Critical
Publication of KR100704621B1 publication Critical patent/KR100704621B1/ko

Links

Images

Classifications

    • 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

Landscapes

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

Abstract

본 발명은 이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치에 관한 것이다.
본 발명의 일 실시예에 따른 이동형 저장 장치의 데이터 무결성을 보장하는 방법은 어플리케이션 또는 운영체계로부터 파일 연산에 대한 요청을 수신하는 단계, 상기 요청한 파일 연산에 대한 정보를 생성하는 단계, 상기 정보를 로그 파일에 저장하는 단계 및 상기 저장한 연산 정보에 따라 파일 연산을 수행하는 단계를 포함한다.
파일 시스템, FAT(File Allocation Table), 블록 맵, 데이터 블록, 무결성(Integrity)

Description

이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치{Method and apparatus for guaranteeing data integrity of portable storage device}
도 1은 종래의 파일 시스템과 저장매체의 구성을 보여주는 블록도이다.
도 2는 종래의 파일 시스템에서 블록 맵을 통해 파일의 저장을 보여주는 개념도이다.
도 3은 종래의 파일 시스템에서 파일 삭제시 오류의 발생을 보여주는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 파일 시스템과 저장 장치의 구성을 보여준다.
도 5는 본 발명의 일 실시예에 따른 로그 파일의 일 실시예를 보여주는 개념도이다.
도 6은 본 발명의 일 실시예에 따른 파일 삭제시 오류를 복구하는 과정을 보여주는 블록도이다.
도 7은 본 발명의 다른 실시예에 따른 파일 생성시 오류를 복구하는 과정을 보여주는 블록도이다.
도 8은 본 발명의 일 실시예에 따른 파일 작업과 오류 복구의 과정을 보여주는 순서도이다.
<도면의 주요 부분에 대한 부호의 설명>
10 : 파일 시스템 50 : 로그 관리자
100 : 블록 맵 150 : 로그 파일
200 : 데이터 블록
본 발명은 파일의 효율적인 데이터 관리를 위한 방법 및 장치에 관한 것이다.
파일은 데이터의 집합, 모음으로 하드디스크, 메모리 카드, CD-ROM 등에 저장되는 것을 의미한다. 파일은 컴퓨터, PDA, 휴대폰과 같은 시스템에 정보를 제공하거나, 어떤 기능을 동작시키거나 혹은 사용자에게 정보를 제공하는 등의 다양한 기능을 한다.
파일 시스템(File System)은 파일을 쓰고, 읽고, 사용하기 위한 방법과 기능을 제공한다. 컴퓨터와 같은 디지털 장치에는 FAT(File Allocation Table), NTFS(New Technology File System), HPFS(High Performance File System) 등이 존재하고 있다. 파일 시스템은 파일의 효율적인 관리를 위한 기능을 수행하며, 데이터의 빠른 검색, 복구, 대용량 데이터의 지원등을 제공하고 있다. 파일 시스템은 CPU와 같은 프로세서에 비해 상대적으로 느린 처리 속도를 가진 저장 매체가 시스템에 가져다 주는 병목 현상을 줄이면서, 파일의 처리를 원활하게 하여, 전체 시스 템의 성능 향상에 주력하고 있다. 한편 디지털 멀티미디어를 다루는 많은 디지털 기기들은 컴퓨터와 호환 가능한 파일 시스템을 사용하여 컴퓨터를 통한 파일의 교환을 가능하게 한다. 따라서, 현재 많은 디지털 기기들은 파일 시스템을 사용하여 멀티미디어 데이터를 저장하고 있다.
이러한 멀티미디어 데이터와 디지털 기기가 증가하면서 이동형 저장 장치에 대한 요구가 높아지고 있다. 과거 이동형 저장 장치라 하면, 플로피 디스켓 정도였으나 최근에는 USB 메모리, MMC 카드(Multimedia Card), SD 카드, 메모리 스틱과 같이 시스템에 착탈이 용이한 저장 장치가 다양하게 출시되고 있다. 이러한 흐름과 함께, 이동형 저장 장치의 파일 관리에 있어서도 몇 가지 문제점이 제기되고 있다.
이러한 문제점을 살펴보기에 앞서 현재의 일반적인 파일 시스템의 구조를 살펴보면 다음과 같다.
도 1은 종래의 파일 시스템과 저장매체의 구성을 보여주는 블록도이다. FAT, HPFS, NTFS와 같은 파일 시스템은 파일을 블록 맵을 통해 관리한다. 도 1의 (a)와 같이 하드 디스크 또는 메모리 카드등은 크게 데이터 블록과 블록 맵으로 나뉘어진다.
데이터 블록은 데이터를 저장하기 위한 하나의 단위가 되며, 저장 공간에서 데이터가 저장되는 하나의 단위가 될 수 있다. 512 byte 혹은 1024 byte와 같이 데이터를 저장하는 단위가 되며, 이보다 큰 데이터들은 상기 저장 단위의 크기에 따라 나누어 저장하게 된다. FAT을 사용하는 파일 시스템에서는 이러한 데이터 블록을 클러스터(cluster)라고 부른다.
블록 맵은 상기 데이터 블록에 대한 정보들의 모음이다. 따라서 (a)에서 알 수 있듯이, 블록 맵(100)과 데이터 블록(200)은 저장 장치에 저장될 수 있다. 그리고 블록 맵(100)과 데이터 블록(200)간의 매핑과 파일을 관리하기 위해 파일 시스템(10)이 존재한다.
블록 맵과 데이터 블록의 구조는 (b)와 같다. 블록 맵을 구성하는 각 블록들(101, 102)은 해당 데이터 블록의 상태를 보여준다. 즉, 상기 데이터 블록에 파일이 저장되어 있는지, 혹은 데이터 블록이 저장 가능한지를 알려주는 정보를 가지고 있다. FAT 시스템에서 파일 할당 테이블(File Allocation Table)이 블록 맵의 한 예이다. 상기 블록 맵을 구성하는 블록들의 정보를 검토하면, 전체 데이터 블록을 직접 살펴보지 않고 해당 데이터 블록의 상태를 알 수 있다. 블록 맵의 블록이 가지는 값은 다음 데이터의 위치를 나타내거나 해당 데이터 블록에 데이터가 저장되지 않음을 나타낸다. 또한 해당 데이터 블록, 예를 들어 클러스터가 파일을 저장할 수 없게 손상이 된 경우, 그 손상여부를 표시할 수도 있다. 블록 맵은 편의상 1부터 주소를 붙여서 설명하고자 하며, 이는 파일 시스템의 구현의 한 실시예일뿐이다. 1번지의 블록 맵은 1번지의 데이터 블록에 대한 정보를 보여준다.
FAT 시스템에서 블록 맵의 블록이 표시하는 값을 살펴보면 표 1과 같다.
FAT12 FAT16 FAT32
사용 가능을 표시 000 0000 00000000
예약된 클러스터 표시 001 0001 00000001
사용자 데이터 002-FF6 0002-FFF6 00000002-0FFFFFF6
배드 클러스터 FF7 FFF7 0FFFFFF7
종료 표시 FF8-FFF FFF8-FFFF 0FFFFFF8-0FFFFFFF
상기 블록이 표시하는 값은 시스템의 구현에 따라 달라질 수 있다. NTFS 혹은 HPFS와 같은 다른 파일 시스템에서는 해당 파일 시스템의 약속된 정의에 따라 값을 표시한다.
그런데, 이들 데이터가 항시 순차적으로 저장될 수는 없다. 파일들이 삭제되고 저장되는 과정에서 사용할 수 있는 저장 공간은 저장 매체의 곳곳에 산발적으로 존재할 수 있다. 블록 맵은하나의 파일을 구성하는 여러 데이터 블록에서 순차적으로 데이터를 읽을 수 있도록 블록의 위치를 연결 리스트로 구성한다. 이러한 연결은 블록 맵의 블록을 통해 이루어진다.
이하 본 명세서에서는 블록 맵을 구성하는 블록을 매핑 블록이라 한다.
도 2는 종래의 파일 시스템에서 블록 맵을 통해 파일의 저장을 보여주는 개념도이다. 블록 맵은 전술한 바와 같이, 데이터 영역의 저장 단위인 데이터 블록에 대한 정보를 가지고 있다. 데이터 블록은 512 byte, 1024 byte 등 파일 시스템에 따라 달라질 수 있다.
file.txt가 저장된 방식을 살펴보면 file.txt는 시작되는 데이터 블록의 정보를 보여주는 매핑 블록의 시작 위치를 가리킨다. 블록 맵의 내부는 이 파일이 저장된 데이터 블록들을 나타내는 매핑 블록들을 순차적으로 연결하여 링크를 구성하고 있다. file.txt는 3이라는 데이터 블록에 저장되어 있음을 알 수 있다. 따라서 이 파일의 데이터를 읽기 위해서는 3이라는 주소의 매핑 블록을 참조해야 한다. 이하 설명의 편의를 위해 blockmap(k)는 k 주소의 매핑 블록을 의미하고, datablock(k)는 k 주소의 데이터 블록을 의미한다.
blockmap(3)는 0004을 가지는데, 이는 이 파일을 구성하는 다음 데이터가 4번지, 즉 datablock(4)에 저장되어 있음을 의미한다. 이 4번지의 데이터 블록에 대한 정보는 4번지의 매핑 블록에 저장되어 있다. 그리고 blockmap(4)에는 0006의 값을 가지는데, 이는 다음 데이터가 데이터 블록 6번지에 저장됨을 보여준다. 이렇게 블록 맵은 파일을 구성하는 데이터들을 순차적으로 읽을 수 있도록 한다. 도 2의 예에서 file.txt는 매핑 블록의 연결을 통해, 데이터 블록 3번지, 4번지, 6번지, 7번지, 8번지에 순차적으로 저장됨을 보여준다. blockmap(8)의 값은 0xffff인데 이는 파일의 종료를 의미한다. 0xffff가 아닌 다른 값을 약속하여 파일의 종료를 나타낼 수도 있다. 그러나 혼돈을 피하기 위해 매핑 블록의 주소와는 겹치지 않는 값이어야 한다. 예를 들어, 0xffff을 주소로 하는 매핑 블록이 존재하면 혼돈이 발생하므로 이보다 더 큰 값 혹은 겹치지 않는 다른 값을 사용해야 할 것이다.
블록 맵을 바탕으로 한 파일 시스템을 이용할 경우, 물리적으로 연결되어있지 않는 경우에도 논리적인 연결을 제공하여 데이터를 저장할 수 있는 장점이 있다. 그런데 파일을 삭제, 이동 등을 수행시에 문제가 발생할 수 있다. 이들 문제점을 도 3을 통해 살펴보고자 한다.
도 3은 종래의 파일 시스템에서 파일 삭제시 오류의 발생을 보여주는 블록도이다.
도 3에서는 도 2의 file.txt를 삭제하는 과정을 보여준다. file.txt는 5개의 데이터 블록으로 되어 있다. 파일을 삭제하기 위해서는 5개의 데이터 블록에 해당하는 매핑 블록을 0의 값으로 해야 한다. 그리고, 이렇게 0으로 삭제하는 과정이 끝난 후 파일 시스템 내의 file.txt를 지워야 한다. 만약 파일 시스템 내의 file.txt가 지워지지 않는다면, 블록 맵에서는 데이터가 삭제되었는데, 파일 시스템 내에서 file.txt가 존재하여, 데이터의 무결성이 손상된다. 도 3은 블록 맵에서는 파일의 삭제와 관련된 작업이 수행되었으나 파일 시스템에서 해당 파일이 여전히 존재하는 경우를 보여준다.
고정형 저장 장치에서는 파일에 대한 삭제, 이동 등의 작업 후 확인을 하는 방식으로 무결성을 제공하고 있다. 그런데 이동형 저장 장치의 경우는 데이터의 무결성을 제공하기가 어렵다. 파일 작업 중에 이동형 저장 장치가 쉽게 제거되는 경우, 파일 작업의 일부만 이루어진 상태가 존재하기 때문이다. 또한 이동형 저장 장치를 많이 사용하는 휴대용 디지털 장치의 경우, 배터리를 통해 전원을 공급받으므로 파일 작업 도중에 전원이 나가는 경우, 역시 파일 작업의 일부만 이루어진 상태가 존재할 수 있다.
종래에, 파일의 무결성을 제공하기 위한 특허(한국 공개특허 2000-0057005)가 존재하였다. 이 발명은 파일 시스템에서 두 개의 외부 파일을 구비하며, 파일 시스템에 대한 정보를 보유한다. 그러나 이는 파일의 길이, 데이터 종류에 대한 정보를 포함하며, 파일이 갱신된 후에 상기 두 개의 파일을 수정한다. 두 개의 파일을 통해 파일 시스템의 무결성을 유지하여 일관성을 유지하는 방법이지만, 이는 파일 작업중의 오류 보다는 파일 시스템에 누적된 오류 등을 수정하는 기능을 제공한다.
따라서, 파일 연산 중에 이동형 저장 장치의 제거 또는 전원의 문제가 발생 하여도 파일의 무결성을 보장하는 방안이 필요하다.
본 발명의 기술적 과제는 이동형 저장 장치의 데이터 무결성을 보장하는데 있다.
본 발명의 다른 기술적 과제는 이동형 저장 장치의 파일 연산 중에 발생하는 오류를 복구하는데 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명은 이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치에 관한 것이다.
본 발명의 일 실시예에 따른 이동형 저장 장치의 데이터 무결성을 보장하는 방법은 어플리케이션 또는 운영체계로부터 파일 연산에 대한 요청을 수신하는 단계, 상기 요청한 파일 연산에 대한 정보를 생성하는 단계, 상기 정보를 로그 파일에 저장하는 단계 및 상기 저장한 연산 정보에 따라 파일 연산을 수행하는 단계를 포함한다.
본 발명의 다른 실시예에 따른 이동형 저장 장치의 데이터 무결성을 보장하는 방법은 파일 시스템의 구동을 요청하는 명령을 수신하는 단계, 상기 파일 시스템에 존재하는 로그 관리자를 통해 로그 파일의 최근 파일 연산에 대한 정보를 검 토하는 단계 및 상기 정보와 저장 장치의 파일들의 정보를 비교하여, 상기 로그 파일의 최근 파일 연산이 완료되지 않은 경우, 상기 정보에 따라 파일 연산을 재수행하는 단계를 포함한다.
본 발명의 일 실시예에 따른 데이터 무결성을 보장하는 장치는 어플리케이션 또는 운영체계로부터 파일 연산에 대한 요청을 수신하는 파일 시스템, 파일의 데이터가 저장된 데이터 블록, 상기 데이터 블록에 대한 정보를 저장한 매핑 블록들의 집합인 블록 맵, 파일 연산에 대한 정보들의 집합인 로그 파일 및 상기 로그 파일에 파일 연산 정보를 저장하고, 상기 연산 정보를 데이터 블록과 블록 맵과 비교하는 로그 관리자를 포함한다.
본 명세서에서 사용하는 용어를 정리하면 다음과 같다.
컴퓨터를 구성하는 저장매체는 파일 시스템과 실제 저장되는 데이터들로 구성된다. 파일 시스템은 전술한 바와 같이, 파일을 효율적으로 관리하기 위한 시스템을 의미한다. 현재 많은 시스템에서 다양하게 사용되는 파일 시스템에 대해 간략히 살펴보면 다음과 같다.
- FAT(File Allocation Table)
FAT은 윈도우시스템에서 지원하는 파일 시스템으로, 디스크에 파일 테이블의 형태로 존재한다. FAT의 손상시 복구를 위해 FAT는 두 개가 존재한다. 윈도우 NT가 지원하는 파일 시스템중 가장 심플한 형태이다. FAT은 초기 파일 시스템으로 현재 FAT12, FAT16, FAT32등이 등장하고 있다. FAT16은 윈도우 운영 체계외에도 다른 운영체계에서도 사용 가능하다.
- HPFS(High Performance File System)
OS/2 1.2에서 도입한 파일 시스템으로, FAT의 디렉토리 구조를 포함하지만 파일 이름에 기반한 자동 정렬 기능을 포함하고 있다. 이름 관습(Naming convention)에 대한 유연성을 증대시키며 파일 할당에 있어서의 단위를 클러스터에서 물리적 섹터로 하여 디스크의 손실을 줄이고 있다. HPFS는 하나의 파일을 일련의 연결된 섹터에 저장할 수 있게 하여 속도를 증가시키고 있다.
- NTFS(New Technology File System)
NTFS는 파일을 디렉토리로 관리하며 HPFS와 같이 정렬을 가능하게 한다. 또한 파일 시스템의 오류에 대한 복구와 섹터의 삭제를 막기 위한 기능을 제공한다. 파일에 대해 행해진 작업들이 무엇인지 검토하여 이러한 작업을 취소시킴으로써 파일 시스템 내의 일치성을 유지하도록 한다. 윈도우 NT에서 주로 사용하며, 리눅스에서도 사용하는 파일 시스템이다.
- 파일 연산
파일 시스템에서 파일에 대해 수행하는 작업을 의미한다. 데이터의 변경을 필요로 하는 연산은 디렉토리와 파일의 생성, 삭제와 잘라내기, 파일과 디렉토리의 이름을 변경하고, 데이터를 추가하기, 파일을 병합하기, 파일/디렉토리의 특성 변경하기 등이 있다. 디렉토리란 일종의 파일로써, 다른 파일들에 대한 정보를 저장하고 있다. 디렉토리는 다른 파일 또는 디렉토리에 대한 이름과 시작 데이터 블록 맵 정보 및 기타 정보를 저장하고 있는 파일로 볼 수 있다.
이러한 파일 시스템은 컴퓨터 이외에도 데이터를 저장하는 디지털 장치에도 적용된다. 따라서 휴대폰, PDA, 노트북, 디지털 TV 등 디지털 데이터를 다루는 기기에도 파일 시스템을 적용할 수 있다. 또한 이동형 저장 장치인 플로피 디스크, 플래쉬 메모리, 메모리 스틱 듀오, 또는 SD 카드나 MMC(MultiMedia Card) 메모리 등에도 파일 시스템을 적용할 수 있다.
파일 시스템들은 각각의 특징을 가지고 있다. 상기에 열거한 파일 시스템을 포함한 대부분의 파일 시스템의 구조는 도 1과 같다. 각 파일의 위치에 대한 정보를 가지는 블록 맵과 이들 파일을 구성하는 데이터(비트)들의 모음이다.
도 4는 본 발명의 일 실시예에 따른 파일 시스템과 저장 장치의 구성을 보여준다.
본 실시예에서 사용되는 '~부'라는 용어, 즉 '~모듈'은 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 기능들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구 성요소들 및 모듈들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
파일 시스템(10)에는 로그 관리자(50)가 존재한다. 로그 관리자는 파일 시스템이 전원이 나가거나, 이동형 저장 장치가 제거되어 파일 시스템이 비정상적으로 종료되었을 경우 시스템이 시작할 때 저장 장치에 기록되어 있는 정보를 읽어서 미완료된 파일 시스템의 연산을 완료한다.
로그 파일은 실제 데이터 저장 장치(500)의 일부를 차지할 수 있고, 또는 파일 시스템 내부에 구현할 수도 있다. 도 4는 데이터 저장 장치(500)의 일부를 차지하는 예를 보여준다.
로그 파일은 파일에 대해 이루어지는 연산에 대한 정보를 기록한다. 기록할 정보에 대한 설명은 도 5에서 한다. 로그 파일에 연산에 대한 정보를 기록한 후에는 파일 시스템은 실제 파일 연산을 수행한다. 여기서 파일 연산은 블록 맵만을 수정할 수도 있고 블록 맵과 데이터 블록 모두를 수정할 수도 있다.
도 5는 본 발명의 일 실시예에 따른 로그 파일의 일 실시예를 보여주는 개념도이다. 로그 파일(150)에는 파일 연산과 관련된 정보들이 들어갈 수 있다. 로그 파일(150)는 전술한 바와 같이 파일 시스템 내부에 로그 관리자와 함께 존재할 수 있고, 또는 데이터 저장 장치에 파일의 형태로 저장될 수 있다. 로그 파일(150)은 시리얼 넘버(151), 연산의 종류(152), 관련 매핑 블록 주소(153), 연산 관련 정보(154), 그리고 연산 결과(155) 등으로 구성된다.
시리얼 넘버(151)는 파일 연산 정보를 저장하기 위한 식별자가 된다. 데이터 저장 장치의 크기에 따라 로그 파일이 차지할 수 있는 저장 공간의 크기가 정해진다. 따라서, 일정 개수의 파일 연산 정보가 저장될 수 있으며, 파일 작업의 오류시에는 가장 최근의 파일 연산 정보를 참조하여 다시 파일 작업을 수행할 수 있다.
연산 종류(152)는 어떤 연산이 행해졌는지를 알려주는 부분이다. 도 5에서는 일 실시예로, 소문자는 파일, 대문자는 디렉토리에 대해 수행되는 연산을 의미하도록 했다. n, d, m은 각각 파일의 생성, 삭제, 이동을 의미하며, N, D, M은 각각 디렉토리의 생성, 삭제, 이동을 의미한다. 도 5에는 제시되지 않았으나, 데이터의 추가 등에 a 또는 A 등이 수행될 수 있다. 상기 파일 연산의 종류에 대한 정보는 하나의 문자로 간략히 처리할 수 있고, 더 자세한 정보를 포함하는 스트럭쳐(structure)로 구성하여 저장될 수 있다.
매핑 블록 주소(153)은 상기 파일 연산이 수행될 파일의 시작 매핑 블록을 저장한다. 이 매핑 블록에 어떤 데이터가 있는지를 검토하여 파일 연산의 완료 여부를 검토할 수 있다.
연산 관련 정보(154)에서는 연산에 필요한 정보를 포함한다. 파일 혹은 디렉토리의 생성이나 삭제시에 해당 파일 또는 디렉토리의 이름이 저장될 수 있으며, 파일 또는 디렉토리를 이동시킬 경우, 해당 파일 또는 디렉토리가 이동할 타겟이 되는 디렉토리에 대한 정보를 포함할 수 있다. 이는 각 구현과 파일 시스템에 따라 달라질 수 있다.
연산 결과(155)는 해당 파일 연산의 수행 여부에 대한 정보이다. 그러나 본 발명의 일 실시예에서는 모든 파일 연산에 대해 수행 결과를 저장하지 않는다. 많 은 파일 작업에 대해 일일이 수행 결과를 저장하는 것은 파일 시스템의 오버헤드를 낳게 되기 때문이다. 따라서 파일 작업이 일어난 후 항상 수행 결과를 저장하는 방식이 아니며, 로그 파일의 파일 연산은 그대로 존재한다. 수행 결과의 변경에 대해서는 추후 설명하고자 한다.
K라는 파일 연산이 완료된 후에, 다른 파일 연산이 일어나지 않으면, 로그 파일에는 K 파일 연산에 관한 정보가 남아있게 된다. 그 후, 이동형 저장 장치가 제거된 후 다시 결합하는 경우, 파일 시스템은 로그 파일을 먼저 검토한다. 로그 파일에 저장된 가장 최근의 파일 연산에 대한 정보(K라는 파일 연산에 대한 정보)와 블록 맵 및 데이터 블록의 구조를 검토하여, 상기 K 연산이 성공적으로 이루어졌는지를 검토한다. 그 결과 K 연산이 성공적으로 이루어지지 않았다면 다시 K 연산을 수행하며, K 연산의 결과와 일치하는 블록 맵과 데이터 블록이 존재한다면 추후 다른 작업을 수행한다.
이 과정에서 만약 K 연산이 성공적으로 이루어지지 않아서 다시 K 연산을 수행하는 경우, 상기 연산이 완료된 후에 전술한 연산 결과(155) 부분을 1로 할 수 있다. 또는 K 연산을 재수행하는 것이 어려운 상황이라면, 다시 K 연산을 수행하지 않고, 없었던 작업으로 처리하기 위해 상기 연산 결과(155)를 2로 할 수 있다. 연산 결과(155)는 매 파일 작업마다 수정되는 것이 아니므로, 로그 파일의 생성에 따른 오버헤드를 줄일 수 있다. 특정 경우에만 연산 결과(155)에 작업의 결과를 저장하도록 하여, 파일 시스템의 시작시 과도한 비교 검토 과정을 피할 수 있게 한다.
도 6은 본 발명의 일 실시예에 따른 파일 삭제시 오류를 복구하는 과정을 보 여주는 블록도이다.
파일 시스템은 파일 삭제를 위해 로그 파일(150)에 삭제 작업과 관련된 정보를 저장한다. (a)에서 알 수 있듯이, 삭제할 파일은 file.txt이며, 이는 매핑 블록 3, 4, 6, 7, 8의 순서로 연결되어 있다. 파일을 삭제하기 위해서는 파일 시스템에서 file.txt를 참조하는 부분을 삭제하며, file.txt에 할당된 매핑 블록 3, 4, 6, 7, 8를 재사용가능하도록 수정하여야 한다. 본 발명의 일 실시예에서는 매핑 블록을 재사용하기 위해서 매핑 블록의 값을 0으로 수정하는 방식을 취하고자 한다.
(b)에서는 매핑 블록을 수정한 결과이다. 매핑 블록 3, 4, 6, 7, 8의 값은 0으로 이제 다른 파일 또는 디렉토리에 의해 사용 가능하다. 그러나 아직 파일 시스템 내의 file.txt에 관한 정보가 삭제되지는 않았다. 매핑 블록의 수정 이후에 file.txt를 파일 시스템에서 삭제하기 전에, 이동형 저장 장치가 제거되거나 전원이 차단될 수 있다. 이 경우, 매핑 블록의 수정은 완료되었지만, 파일 시스템에는 파일이 계속 남아있는, 무결성이 충족되지 못하는 상황이 발생한다.
그러나 로그 파일(150)에 삭제와 관련된 정보가 존재하므로, 다시 이동형 저장 장치가 시스템에 결합 또는 부착되거나 전원이 공급될 경우, 재작업이 가능하다.
파일 시스템은 이동형 저장 장치와 디지털 장치가 결합하거나 전원이 공급될 경우, 로그 파일(150)을 검토한다. 최근 파일 연산과 관련된 로그 정보를 살펴보아, 이 로그에 맞게 작업이 수행되었는지를 검토한다. 도 6에서 로그 파일에 저장된 로그는 file.txt의 시작 매핑 블록 주소가 3이며, 삭제(d) 작업임을 알리고 있 다. 이 정보에 따라, 파일 시스템은 file.txt가 존재하면 이를 제거한다. 3번지의 매핑 블록이 0므로 매핑블록을 수정하는 작업은 필요하지 않기 때문에, 파일 시스템은 다음 작업을 수행한다.
여기서 연산 결과(155)부분을 수정할 수 있다. 이는 파일 시스템의 구현 또는 시스템의 상황에 따라 달라질 수 있는데, 완료되지 않은 파일 연산을 재수행 후 결과를 저장할 수 있으며, 재수행이 어려운 파일 연산인 경우에는 추후 다시 재수행을 하지 않도록 하는 정보를 저장할 수 있다. 또한, 잦은 비교 검토를 막기 위해, 재수행후에 해당 로그 정보의 연산 결과(155)에 수행 완료라고 설정할 수 있다.
도 7은 본 발명의 다른 실시예에 따른 파일 생성시 오류를 복구하는 과정을 보여주는 블록도이다.
파일 시스템은 새로운 파일을 저장하기 위해 시작 매핑 블록을 할당한다. 이러한 파일 생성 작업에 앞서, 로그 파일에 newfile.txt를 생성함을 기록하기 위해 정보를 저장한다. 파일 생성시에는 매핑 블록의 주소를 저장하지 않을 수 있다. 이는 파일 시스템에 파일 생성 정보를 저장하고, 사용 가능한 매핑 블록을 찾은 후에 해당 매핑 블록에 관한 정보(예를 들어 주소와 같은)와 파일명을 파일 시스템에서 유지할 수 있다.
우선 로그 파일에 파일 연산에 관한 정보를 저장한다. 연산의 종류(152)는 파일의 생성을 의미하는 n으로 설정할 수 있으며, 관련 매핑 블록 주소(153)은 0 또는 공란으로 설정될 수 있다. 이는 파일 시스템의 구현에 따라 달라질 수 있는 데, 파일 생성 이전에 파일의 시작 매핑 블록의 주소를 알 수 있는 경우에는 해당 매핑 블록의 주소가 설정될 수 있다. 그리고 연산 관련 정보(154)는 생성할 파일명이 존재한다.
로그 파일에 파일 생성과 관련된 정보를 저장한 후, (a)와 같이 파일 시스템에 파일 생성과 관련된 작업을 한다. newfile.txt를 생성하고, 사용 가능한 매핑 블록의 주소를 넣기위해 블록 맵을 검색한다. 이 과정에서 전원이 나가거나 이동형 저장 장치가 제거되는 경우, 파일 시스템에는 매핑 블록이 존재하지 않는 파일(newfile.txt)이 존재한다.
그러나 다시 이동형 저장 장치가 결합하거나 전원이 공급될 경우, 파일 시스템은 로그 파일을 검토하여 최근에 이루어진 파일 연산과 실제 저장 장치의 파일 구조가 일치하는지 비교한다. 그 결과 파일 시스템에는 newfile.txt의 생성이 완료되지 못함을 알고, 남은 작업을 수행한다. 그 결과 (b)와 같이 newfile.txt에 매핑 블록 5번지가 할당된다.
도 6과 7은 본 발명의 일 실시예에 따라 파일 연산 전에 연산에 관한 정보를 저장하게 된다. 저장하는 정보는 파일 시스템과 연산의 성격에 따라 다양하게 달라질 수 있으며, 이는 도 5에서 살펴본 로그 파일을 구성하는 정보 항목과 달라질 수 있다. 도 5에서 제시한 로그 파일은 본 발명을 구현하기 위한 일 실시예에 해당하며, 이에 한정되는 것은 아니다. 일례로, 디렉토리 이동시 해당 디렉토리의 이동 전의 부모 디렉토리(parent directory)와 이동 후의 부모 디렉토리에 대한 정보도 포함될 수 있다. 또한 이동할 디렉토리 내에 존재하는 파일들에 대한 정보도 포함 될 수 있다.
도 8은 본 발명의 일 실시예에 따른 파일 작업과 오류 복구의 과정을 보여주는 순서도이다.
(a)는 파일에 관련된 연산을 수행시에 파일 시스템에서 수행하는 작업을 보여준다. 먼저 운영 체계 혹은 다른 어플리케이션에서 파일 연산에 대한 명령을 수신한다(S102). 이 연산에 대한 정보를 로그 파일에 저장하기 위해서는 연산 정보를 생성하여야 한다(S104). 생성하게 될 연산 정보의 예는 도 5의 항목들이 될 수 있다.
그리고 로그 파일에 수행할 연산에 대한 정보를 저장한다(S106). 이는 파일 시스템 내의 로그 관리자가 수행할 수 있다. 로그 파일에 저장한 후, 파일 시스템은 해당 파일 연산을 수행한다(S108).
(b)는 전원이 차단된 후에 다시 공급되거나 또는 이동형 저장 장치가 디지털 장치와 결합 경우의 작업을 보여준다.
전원이 공급되거나, 이동형 저장 장치와 디지털 장치가 결합하게 되면 파일 시스템이 시작한다(S110). 파일 시스템은 디지털 장치로부터 구동을 요청받을 수 있으며, 또는 이동형 저장 장치내의 어플리케이션에 의해 시작될 수 있다. 그리고 파일 시스템 내의 로그 관리자는 로그 파일을 검토한다(S112). 검토는 로그 파일의 내용과 저장 장치의 파일 상태를 검토하여 알 수 있다. 로그 파일에 기록된 연산 내용의 결과가 블록 맵 혹은 데이터 블록에 존재하는지를 비교, 검토한다(S114). 만약 존재한다면, 해당 연산은 성공적으로 수행된 것이므로 다른 연산의 수행을 위 해 대기한다(S118). 만약 존재하지 않거나 비교 결과 서로 다르다면, 해당 연산을 재수행하여 무결성을 유지할 수 있다(S116). 만약 해당 연산을 수행하는 것에 장애가 있다면, 해당 로그 파일의 연산 정보를 더 이상 수행하지 않도록, 연산 결과 부분을 수정할 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
본 발명을 구현함으로써 이동형 저장 장치에 저장된 데이터의 무결성을 보장할 수 있다.
본 발명을 구현함으로써 이동형 저장 장치의 파일 연산 중에 발생하는 오류를 복구할 수 있다.

Claims (23)

  1. 어플리케이션 또는 운영체계로부터 파일 연산에 대한 요청을 수신하는 단계;
    상기 요청한 파일 연산에 대한 정보를 생성하는 단계;
    상기 정보를 로그 파일에 저장하는 단계; 및
    상기 저장한 연산 정보에 따라 파일 연산을 수행하는 단계를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  2. 제 1항에 있어서,
    상기 파일은 디렉토리를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  3. 제 1항에 있어서,
    상기 정보는 상기 연산이 완료된 경우의 상기 이동형 저장 장치의 파일 구조에 대한 정보의 일부를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  4. 제 1항에 있어서,
    상기 정보는 상기 연산이 완료되지 못한 경우 상기 연산을 재수행하기 위해 필요한 정보를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  5. 제 1항에 있어서,
    상기 수행하는 단계는 상기 파일 연산을 수행한 후에 파일 연산의 결과를 로그 파일에 저장하지 않는, 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  6. 제 1항에 있어서,
    상기 로그 파일은 상기 이동형 저장 장치내에 존재하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  7. 제 1항에 있어서,
    상기 파일 연산은 파일을 삭제하는 연산, 생성하는 연산, 내용을 추가하는 연산, 이동하는 연산, 복사하는 연산, 또는 병합하는 연산 중 어느 하나인 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  8. 파일 시스템의 구동을 요청하는 명령을 수신하는 단계;
    상기 파일 시스템에 존재하는 로그 관리자를 통해 로그 파일의 최근 파일 연산에 대한 정보를 검토하는 단계; 및
    상기 정보와 저장 장치의 파일들의 정보를 비교하여, 상기 로그 파일의 최근 파일 연산이 완료되지 않은 경우, 상기 정보에 따라 파일 연산을 재수행하는 단계를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  9. 제 8항에 있어서,
    상기 파일은 디렉토리를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  10. 제 8항에 있어서,
    상기 정보는 상기 연산이 완료된 경우의 상기 이동형 저장 장치의 파일 구조에 대한 정보의 일부를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  11. 제 8항에 있어서,
    상기 정보는 상기 연산이 완료되지 못한 경우 상기 연산을 재수행하기 위해 필요한 정보를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  12. 제 8항에 있어서,
    상기 로그 파일은 상기 이동형 저장 장치내에 존재하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  13. 제 8항에 있어서,
    상기 파일 연산은 파일을 삭제하는 연산, 생성하는 연산, 내용을 추가하는 연산, 이동하는 연산, 복사하는 연산, 또는 병합하는 연산 중 어느 하나인 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  14. 제 8항에 있어서,
    상기 로그 파일은 시리얼 넘버, 파일 연산의 종류에 대한 정보, 파일 연산의 결과를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  15. 제 8항에 있어서,
    파일 연산을 재수행하는 단계 이후에,
    상기 최근 파일 연산에 대한 정보에 재수행하였음을 나타내는 플래그를 설정하는 단계를 포함하는 이동형 저장 장치의 데이터 무결성을 보장하는 방법.
  16. 어플리케이션 또는 운영체계로부터 파일 연산에 대한 요청을 수신하는 파일 시스템;
    파일의 데이터가 저장된 데이터 블록;
    상기 데이터 블록에 대한 정보를 저장한 매핑 블록들의 집합인 블록 맵;
    파일 연산에 대한 정보들의 집합인 로그 파일; 및
    상기 로그 파일에 파일 연산 정보를 저장하고, 상기 연산 정보를 데이터 블록과 블록 맵과 비교하는 로그 관리자를 포함하는 데이터 무결성을 보장하는 장치.
  17. 제 16항에 있어서,
    상기 매핑 블록은 상기 파일의 데이터가 저장된 데이터 블록에 대한 정보를 가지고 있는 데이터 무결성을 보장하는 장치.
  18. 제 16항에 있어서,
    상기 파일은 디렉토리를 포함하는 데이터 무결성을 보장하는 장치.
  19. 제 16항에 있어서,
    상기 로그 파일에 저장되는 파일 연산 정보는 상기 연산이 완료된 경우의 상기 이동형 저장 장치의 파일 구조에 대한 정보의 일부를 포함하는 데이터 무결성을 보장하는 장치.
  20. 제 16항에 있어서,
    상기 정보는 상기 연산이 완료되지 못한 경우 상기 연산을 재수행하기 위해 필요한 정보를 포함하는 데이터 무결성을 보장하는 장치.
  21. 제 20항에 있어서,
    상기 정보는 상기 연산이 완료되지 못한 경우 상기 연산을 재수행한 후 상기 연산의 완료를 알리는 정보를 포함하는 데이터 무결성을 보장하는 장치.
  22. 제 16항에 있어서,
    상기 파일 연산은 파일을 삭제하는 연산, 생성하는 연산, 내용을 추가하는 연산, 이동하는 연산, 복사하는 연산, 또는 병합하는 연산 중 어느 하나인 데이터 무결성을 보장하는 장치.
  23. 제 16항에 있어서,
    상기 로그 파일은 시리얼 넘버, 파일 연산의 종류에 대한 정보, 파일 연산의 결과를 포함하는 데이터 무결성을 보장하는 장치.
KR1020040065910A 2004-08-20 2004-08-20 이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치 KR100704621B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040065910A KR100704621B1 (ko) 2004-08-20 2004-08-20 이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040065910A KR100704621B1 (ko) 2004-08-20 2004-08-20 이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20060017287A true KR20060017287A (ko) 2006-02-23
KR100704621B1 KR100704621B1 (ko) 2007-04-10

Family

ID=37125385

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040065910A KR100704621B1 (ko) 2004-08-20 2004-08-20 이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100704621B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100643286B1 (ko) * 2004-11-22 2006-11-10 삼성전자주식회사 이동 저장 장치 및 이를 이용한 파일 시스템 복구 방법
KR100818993B1 (ko) * 2006-05-12 2008-04-02 삼성전자주식회사 블록 가상 할당을 이용한 파일 관리 장치 및 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04114219A (ja) * 1990-09-05 1992-04-15 Jienetetsuku:Kk コンピュータ等における外部記憶装置
KR100445134B1 (ko) * 2002-01-31 2004-08-21 삼성전자주식회사 플래시 메모리 안정화기능을 구비한 호스트 기기 및 그 방법
JP2004178788A (ja) * 2002-11-15 2004-06-24 Matsushita Electric Ind Co Ltd 記録装置および記録方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100643286B1 (ko) * 2004-11-22 2006-11-10 삼성전자주식회사 이동 저장 장치 및 이를 이용한 파일 시스템 복구 방법
KR100818993B1 (ko) * 2006-05-12 2008-04-02 삼성전자주식회사 블록 가상 할당을 이용한 파일 관리 장치 및 방법

Also Published As

Publication number Publication date
KR100704621B1 (ko) 2007-04-10

Similar Documents

Publication Publication Date Title
US10430286B2 (en) Storage control device and storage system
CN102779180B (zh) 数据存储系统的操作处理方法,数据存储系统
US8924664B2 (en) Logical object deletion
US8024507B2 (en) Transaction-safe FAT file system improvements
US9880759B2 (en) Metadata for data storage array
US20120084272A1 (en) File system support for inert files
WO2017041654A1 (zh) 用于分布式存储系统的写入数据、获取数据的方法和设备
WO2005124530A2 (en) Method for controlling memory card and method for controlling nonvolatile semiconductor memory
US20070112891A1 (en) Converting file-systems that organize and store data for computing systems
JP2005512171A (ja) 大きいファイルの効率的な管理
US20050165853A1 (en) Method and apparatus for localized protected imaging of a file system
JP2007012056A (ja) データ保全の先送りされた認証を有するファイルシステム
US11494334B2 (en) Embedded reference counts for file clones
CN112115002B (zh) 从损坏或不可信机械硬盘恢复文件的方法及装置
US20060036663A1 (en) Method and apparatus for effective data management of files
EP3542273B1 (en) Systems and methods for recovering lost clusters from a mounted volume
EP1103894A2 (en) Fragmented data recovery method
KR100704621B1 (ko) 이동형 저장 장치의 데이터 무결성을 보장하는 방법 및 장치
CN112214356B (zh) 文件数据恢复方法、装置、计算机设备及存储介质
JP2008123104A (ja) データアクセス装置
KR100643286B1 (ko) 이동 저장 장치 및 이를 이용한 파일 시스템 복구 방법
CN114880277B (zh) 块设备快照方法、系统和存储介质
JP2002207626A (ja) 情報記憶媒体のデータ管理方法
CN116774918A (zh) 一种数据清理方法、装置、设备及存储介质
CN117608477A (zh) 存储系统的管理方法及装置、电子设备、存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20100330

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee