KR100907708B1 - 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법,오류 복구 시스템 및 오류 저장 시스템 - Google Patents

저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법,오류 복구 시스템 및 오류 저장 시스템 Download PDF

Info

Publication number
KR100907708B1
KR100907708B1 KR1020070111797A KR20070111797A KR100907708B1 KR 100907708 B1 KR100907708 B1 KR 100907708B1 KR 1020070111797 A KR1020070111797 A KR 1020070111797A KR 20070111797 A KR20070111797 A KR 20070111797A KR 100907708 B1 KR100907708 B1 KR 100907708B1
Authority
KR
South Korea
Prior art keywords
error
storage device
information
nodes
bad sector
Prior art date
Application number
KR1020070111797A
Other languages
English (en)
Other versions
KR20090045802A (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 KR1020070111797A priority Critical patent/KR100907708B1/ko
Publication of KR20090045802A publication Critical patent/KR20090045802A/ko
Application granted granted Critical
Publication of KR100907708B1 publication Critical patent/KR100907708B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1883Methods for assignment of alternate areas for defective areas
    • G11B20/1889Methods for assignment of alternate areas for defective areas with discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B2020/10898Overwriting or replacing recorded data
    • G11B2020/10907Overwriting or replacing recorded data using pseudo-overwriting, i.e. virtually or logically overwriting data on WORM media by remapping recorded blocks to alternate areas
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2508Magnetic discs
    • G11B2220/2516Hard disks

Abstract

본 발명은 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법, 오류 복구 시스템 및 오류 저장 시스템에 관한 것이다. 본 발명은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치의 오류를 복구시키는 방법에 있어서, 상기 저장 장치에서 발생한 물리적 오류를 탐지하는 탐지 단계; 상기 물리적 오류가 배드 섹터(bad sector)의 발생에 해당하는지를 판단하는 배드 섹터 판단 단계; 상기 배드 섹터 판단 단계의 수행에 따라 상기 물리적 오류가 배드 섹터(bad sector)의 발생에 해당하는 경우, 상기 배드 섹터가 위치하는 영역을 분석하는 영역 분석 단계; 및 상기 분석 결과 상기 배드 섹터가 리매핑(re-mapping)이 가능한 영역인 경우, 상기 배드 섹터를 스페어 섹터(spare sector)와 리매핑하는 리매핑 단계를 포함하는 저장 장치의 오류 복구 방법과 이를 구현하기 위한 오류 복구 시스템을 제공한다. 또한 본 발명은 오류 복구를 위한 저장 장치의 정보 저장 방법 및 오류 저장 시스템을 제공한다.
저장 장치(storage Device), 오류(Error), 배드 섹터(Bad Sector), 오류 탐지, 오류 복구

Description

저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법, 오류 복구 시스템 및 오류 저장 시스템 {Method Of Recovering Error In Storage Device, Method Of Storing Information In Storage Device, Error Recovery System And Error Storing System}
본 발명은 저장 장치의 오류 탐지 및 복구에 관한 것으로서, 보다 상세하게는 파일 시스템 및 저장 장치 기반의 전자 시스템에서 발생되는 물리적 오류를 실시간 탐지하여 저장 장치 기반으로 파일 시스템의 레이아웃을 파악한 후 오류 발생 위치를 찾아서 저장 장치에서 가장 빈번히 발생되는 배드섹터임이 확인되는 경우, 섹터 기반의 쓰기 기능을 이용하여 리매핑을 유도함으로써 저장 장치의 물리적 오류에 대해 적극적으로 대처할 수 있는 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법, 오류 복구 시스템 및 오류 저장 시스템에 관한 것이다.
대용량 멀티미디어 파일의 증가와 개인의 디지털 정보의 중요성이 날로 증가하면서 저장 장치(storage device)는 점점 고용량화 및 고집적화되고 있다. 따라서 저장 장치상에 발생되는 물리적인 오류는 단순히 작은 영역의 손상이 아닌 매우 넓은 영역에 대한 정보 손실로 이어질 수 있다. 이를 방지하기 위해서는 저장 장치 기반 시스템의 물리적인 오류에 대한 대처 수준을 검증하고, 하드웨어 계층에서 발생되는 오류를 발견할 수 있어야 한다.
특히 현대 사회의 디지털 정보 중 가장 중요하게 여겨지는 개인 정보는 외부에 알려졌을 경우 개인의 프라이버시를 침해할 수 있고, 사라졌을 경우 큰 곤경에 빠질 수 있어 디지털 정보의 보호를 위해 많은 연구가 진행되고 있다.
그리고 이와 같은 디지털 정보는 일반적으로 PC(Personal Computer)나 노트북에 저장하게 되는데 이때의 저장 장치는 대부분 하드디스크(hard-disk)가 이용되고 있다. 이러한 저장 장치상에 물리적인 오류가 발생하고, 해당 위치에 중요한 디지털 정보가 존재한다면 문제는 매우 심각해질 것이다.
종래의 저장 장치를 구비한 전자 시스템은, 물리적인 오류를 감시할 수 있는 기능을 제공하지 않는다. 만약 물리적 오류가 연속적으로 발생하기 시작한다면 디지털 정보는 속수무책으로 읽어버리게 된다. 이는 물리적인 오류가 발생하더라도 시스템 및 사용자는 최소한의 디지털 정보만을 손실할 수 있는데도 불구하고, 디지털 정보 전체를 잃어버릴 수 있는 상태에 이를 수 있는 것이다.
도 1은 저장 장치를 구비한 전자 시스템의 일 예를 도시한 도면이다. 저장 장치를 구비한 전자 시스템은, 도 1에 도시된 바와 같이, 일반적으로 저장 장치(Storage Device, 100), 디바이스 드라이버(Device Driver, 110), 파일 시스템(File System, 120) 및 사용자 애플리케이션(User Application, 130)을 포함하여 구성되고, 각각의 영역은 명확한 경계로 이루어져 있다.
상기 디바이스 드라이버(110) 영역은 상기 저장 장치(100)에서 발생되는 물 리적인 오류 및 상기 저장 장치(100)의 관련 정보의 대부분을 알 수 있는 영역이다. 왜냐하면, 상기 디바이스 드라이버(100)는, 상기 저장 장치(100)와 관련된 여러 레지스터 검사를 독립적으로 수행하고 있기 때문이다.
물론 다른 영역에서도 저장 장치 관련 레지스터에 접근하여 여러 정보를 확인할 수 있지만 이는 올바른 레지스터 값이 아니다. 상기 파일 시스템(120)과 사용자 애플리케이션(130) 간에도 단순히 에러 코드만을 전달할 뿐 더 이상의 어떠한 정보도 공유하지 않는다.
또한 상기 파일 시스템(120) 영역에서 상기 저장 장치(100)의 물리적 오류를 발견할 수 있는 방법이 존재하지 않는다. 왜냐하면, 커널 데몬을 통한 상기 디바이스 드라이버(110) 영역으로 요청 큐를 통하여 접근하기 때문에 상기 저장 장치(100)에 물리적인 오류가 발생하여 상기 파일 시스템(120)에서 에러 레지스터(error register)를 검사하여도 다른 요청 큐에 의해 레지스터 값이 이미 갱신되어 상기 파일 시스템(120) 영역에서는 레지스터를 통한 검사를 할 수 없기 때문이다.
따라서 종래 기술에 따른 저장 장치를 구비한 전자 시스템은, 도 1에 도시된 각 계층간의 명확한 구분으로 인해 각 계층이 서로 필요로 하는 중요한 정보를 공유하지 못하는 문제점이 있다.
이와 같은 문제점은 상기 저장 장치(100)에 발생된 물리적인 오류에 관한 오류 정보가 상위 계층으로 전달되지 않아 하위 계층인 상기 저장 장치(100)는 점점 심각한 상태로 진행되고 있어도 상위 계층은 튼튼한 하드웨어를 가졌다고 생각하여 정상적인 작업을 계속하게 되는 문제점이 발생한다. 그래서 사용자는 결국 문제를 인지하지 못한 채 어느 순간 데이터를 모두 손실할 수 있는 위기 상황에 봉착할 수 있다.
본 발명은 상기와 같은 문제점을 해결하고 최근의 추세와 요청에 따라 제안된 것으로서, 저장 장치를 구비한 전자 시스템에서 저장 장치에 물리적인 오류가 발생하였을 경우 적극적인 대처를 통한 실시간 복구가 가능한 저장 장치의 오류 복구 방법 및 오류 복구 시스템을 제공하는데 그 목적이 있다.
본 발명의 다른 목적은, 저장 장치에 물리적 오류가 발생한 경우 스마트 정보를 이용하여 발생한 물리적 오류가 배드섹터의 발생에 해당하는지를 정확하게 판별하여 이를 복구할 수 있는 저장 장치의 오류 복구 방법 및 오류 복구 시스템을 제공하는 것이다.
본 발명의 또 다른 목적은, 저장 장치에 배드섹터의 발생에 해당하는 물리적 오류가 발생한 경우, 파일 시스템의 쓰기 시스템 콜을 이용하지 않고 ATA 커맨드 중 쓰기 커맨드를 이용하여 배드섹터의 리매핑이 가능하도록 하는 저장 장치의 오류 복구 방법 및 오류 복구 시스템을 제공하는 것이다.
본 발명의 또 다른 목적은, 저장 장치의 특정 파티션에 탑재된 파일 시스템의 레이아웃을 저장 장치 기반에서 탐지할 수 있는 저장 장치의 파일 시스템 레이아웃 확인 방법을 제공하는 것이다.
본 발명의 또 다른 목적은, 종래의 Freelist 자료 구조에 최소 노드 개수를 유지하는 자료 구조를 도입함으로써 효율적이고 정보 처리 속도를 향상시킬 수 있는 저장 장치의 정보 저장 방법, 저장 장치의 오류 저장 방법, 정보 저장 시스템 및 오류 저장 시스템을 제공하는 것이다.
상기의 목적을 달성하기 위한 본 발명의 일 양상으로서, 본 발명에 따른 저장 장치의 오류 복구 방법은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치의 오류를 복구시키는 방법에 있어서, 상기 저장 장치에서 발생한 물리적 오류를 탐지하고, 상기 물리적 오류의 오류 발생 위치 및 오류 패턴을 포함하는 오류 정보를 획득하는 오류 탐지 단계; 상기 오류 정보를 저장하는 저장부에 각각 별개의 정보를 저장할 수 있는 노드(node)를 복수 개 할당하고, 상기 오류 탐지 단계에서 상기 오류 정보가 획득될 때마다 상기 할당된 복수 개의 노드에 상기 획득된 각 오류 정보를 순차적으로 저장하는 정보 저장 단계; 상기 물리적 오류가 배드 섹터(bad sector)의 발생에 해당하는지를 판단하는 배드 섹터 판단 단계; 상기 배드 섹터 판단 단계의 수행에 따라 상기 물리적 오류가 배드 섹터(bad sector)의 발생에 해당하는 경우, 상기 배드 섹터가 위치하는 영역을 분석하는 영역 분석 단계; 및 상기 분석 결과 상기 배드 섹터가 리매핑(re-mapping)이 가능한 영역인 경우, 상기 배드 섹터를 스페어 섹터(spare sector)와 리매핑하는 리매핑 단계를 포함하여 이루어지고, 상기 정보 저장 단계는, 상기 할당된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하여 상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 할당하는 단계이다.
일 실시예에 있어서, 상기 영역 분석 단계는, 상기 저장 장치의 로우 데이터(row data)를 읽음으로써 획득되는 상기 저장 장치의 파일시스템 레이아웃(layout)을 이용하여 수행된다.
일 실시예에 있어서, 상기 리매핑 단계는, 에이티에이 커맨드(ATA command) 중 쓰기 커맨드(write command)를 이용하여 상기 배드 섹터가 발생한 위치에 상기 스페어 섹터를 리매핑한다.
일 실시예에 있어서, 상기 오류 정보는, 상기 디바이스 드라이버의 오류 처리 루틴으로부터 획득된다.
일 실시예에 있어서, 상기 탐지 단계는, 상기 물리적 오류가 발생한 위치의 LBA(Logical Block Addressing) 주소를 획득함으로써 상기 오류 발생 위치를 획득한다.
일 실시예에 있어서, 상기 배드 섹터 판단 단계는, 상기 저장 장치의 상태에 관한 정보를 제공하는 스마트(SMART) 기능을 이용하여 수행될 수 있다. 여기서, 상기 배드 섹터 판단 단계는, 상기 스마트 기능을 활성화하는 단계; 상기 스마트 기능을 이용하여 상기 저장 장치의 상태에 관한 정보를 획득하는 단계; 상기 스마트 기능을 비활성화하는 단계; 및 상기 획득된 저장 장치의 상태에 관한 정보를 이용하여 상기 물리적 오류가 배드 섹터의 발생에 해당하는지를 판단하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 저장 장치의 상태에 관한 정보는, 상기 저장 장치에서 현재 발생된 배드 섹터의 개수와, 현재 남은 스페어 섹터의 비율을 포함할 수 있다.
상기의 목적을 달성하기 위한 본 발명의 다른 양상으로서, 본 발명에 따른 저장 장치의 정보 저장 방법은, 저장 장치(storage device)에 정보를 저장하는 방법에 있어서, 상기 저장 장치에 각각 별개의 정보를 저장할 수 있는 노드(node)를 복수 개 할당하는 노드 할당 단계; 및 상기 할당된 복수 개의 노드에 각각 별개의 정보를 순차적으로 저장하는 정보 저장 단계를 포함하고, 상기 정보 저장 단계는, 상기 할당된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하는 단계; 및 상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 할당하는 단계를 포함하여 이루어진다.
상기의 목적을 달성하기 위한 본 발명의 또 다른 양상으로서, 본 발명에 따른 저장 장치의 오류 저장 방법은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치의 오류를 저장하는 방법에 있어서, 상기 저장 장치에 각각 별개의 정보를 저장할 수 있는 노드(node)를 복수 개 할당하는 노드 할당 단계; 상기 저장 장치에서 발생한 물리적 오류를 탐지하는 오류 탐지 단계; 상기 물리적 오류의 오류 발생 위치와 오류 패턴을 포함하는 오류 정보를 획득하는 정보 획득 단계; 및 상기 정보 획득 단계에서 상기 오류 정보가 획득될 때마다 상기 할당된 복수 개의 노드에 상기 획득된 각 오류 정보를 순차적으로 저장하는 정보 저장 단계를 포함하고, 상기 정보 저장 단계는, 상기 할당된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하는 단계; 및 상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 할당하는 단계를 포함하여 이루어진다.
상기의 목적을 달성하기 위한 본 발명의 또 다른 양상으로서, 본 발명에 따른 오류 복구 시스템은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치의 오류를 저장하는 방법에 있어서, 상기 저장 장치에 각각 별개의 정보를 저장할 수 있는 노드(node)를 복수 개 할당하는 노드 할당 단계; 상기 저장 장치에서 발생한 물리적 오류를 탐지하는 오류 탐지 단계; 상기 물리적 오류의 오류 발생 위치 및 오류 패턴을 포함하는 오류 정보를 획득하는 정보 획득 단계; 및 상기 정보 획득 단계에서 상기 오류 정보가 획득될 때마다 상기 할당된 복수 개의 노드에 상기 획득된 각 오류 정보를 순차적으로 저장하는 정보 저장 단계를 포함하여 이루어지고, 상기 정보 저장 단계는, 상기 할당된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하는 단계; 및 상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 할당하는 단계를 포함한다.
상기의 목적을 달성하기 위한 본 발명의 또 다른 양상으로서, 본 발명에 따른 오류 저장 시스템은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에 구비되거나 연결되는, 상기 저장 장치의 오류를 저장하는 오류 저장 시스템에 있어서, 상기 저장 장치에서 발생한 물리적 오류를 탐지하고, 상기 물리적 오류의 오류 발생 위치와 오류 패턴을 포함하는 오류 정보를 획득하는 오류 탐지부; 및 상기 오류 정보를 저장하는 저장부에 각각 별개의 정보를 저장할 수 있는 복수 개의 노드(node)를 설정하고, 상기 오류 탐지부에 의해 상기 오류 정보가 획득될 때마다, 상기 획득된 각 오류 정보를 상기 복수 개의 노드에 순차적으로 저장하도록 제어하는 제어부를 포함하여 이루어지고, 상기 제어부는, 상기 설정된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하여 상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 설정한다.
상기에서 설명한 본 발명에 따른 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법, 오류 복구 시스템 및 오류 저장 시스템에 의하면 다음과 같은 효 과가 있다.
첫째, 본 발명에 의하면, 저장 장치를 구비한 전자 시스템에서 저장 장치에 물리적인 오류가 발생하였을 경우 적극적인 대처를 통한 실시간 복구가 가능하다.
둘째, 본 발명에 의하면, 저장 장치에 물리적 오류가 발생한 경우 스마트 정보를 이용하여 발생한 물리적 오류가 배드섹터의 발생에 해당하는지를 정확하게 판별할 수 있다.
셋째, 본 발명에 의하면, 저장 장치에 배드섹터의 발생에 해당하는 물리적 오류가 발생한 경우, 파일 시스템의 쓰기 시스템 콜을 이용하지 않고 ATA 커맨드 중 쓰기 커맨드를 이용하여 리매핑을 수행하므로 복잡한 파라미터를 사용하지 않고도 효율적인 배드 섹터의 복구가 가능하다.
넷째, 본 발명에 의하면, 파일 시스템에 직접 접근하지 않고 저장 장치의 특정 파티션에 탑재된 파일 시스템의 레이아웃을 저장 장치 기반에서 정확하게 탐지할 수 있다.
다섯째, 본 발명에 의하면, 종래의 Freelist 자료 구조에 최소 노드 개수를 유지하는 자료 구조를 도입함으로써 효율적이고 정보 처리 속도를 향상시킬 수 있다.
본 발명의 상술한 목적, 특징들 및 장점은 첨부된 도면과 관련된 다음의 상세한 설명을 통하여 보다 분명해질 것이다. 이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예들을 상세히 설명한다. 명세서 전체에 걸쳐서 동일한 참조 번호들은 동일한 구성요소들을 나타낸다. 또한, 본 발명과 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 상세한 설명을 생략한다.
본 발명은 저장 장치를 구비하는 다양한 전자 시스템에 적용될 수 있으나, 본 발명에서는 설명의 편의를 위하여 리눅스 시스템을 상정하여 설명하기로 한다. 본 발명이 적용되는 저장 장치 또한 다양할 수 있다. 예를 들어, 본 발명은 ATA 커맨드를 이용하여 R/W(Read/Write)할 수 있는 저장 장치에 적용될 수 있다. ATA 커맨드를 이용하여 R/W할 수 있는 저장 장치의 예를 들면, IDE/SATA 방식의 하드디스크가 있다.
도 2는 본 발명의 일 실시예에 따른 오류 복구 시스템의 블록 구성도이다. 도 2를 참조하여 본 발명의 일 실시예에 따른 오류 복구 시스템을 상세히 설명하기로 한다. 본 발명의 일 실시예에 따른 오류 복구 시스템(20)은, 도 1을 참조하여 설명한 전자 시스템(10)의 내부에 구비될 수도 있고, 상기 전자 시스템(10)과 외부에서 연결될 수도 있다. 상기 오류 복구 시스템(20)은, 상기 전자 시스템(10)에 구비된 저장 장치(100)에서 오류가 발생한 경우, 상기 발생한 오류를 탐지한 후 상기 오류를 복구하는 시스템이다.
본 발명의 일 실시예에 따른 오류 복구 시스템(20)은, 오류 탐지부(200), 오류 복구부(210), 저장부(220) 및 제어부(230)를 포함할 수 있다. 상기 오류 복구부(210)는, 배드섹터 판단부(211), 배드섹터 분석부(213) 및 리매핑부(215)를 포함 할 수 있다.
상기 오류 탐지부(200)는, 상기 저장 장치(100)에서 발생한 물리적 오류를 탐지한다. 상기 저장 장치(100)의 대표적인 예는, 하드디스크(hard-disk)이다.
상기 저장 장치(100)에서 발생할 수 있는 물리적 오류의 발생 원인은 다양하다. 이하 상기 물리적 오류의 대표적인 6가지를 설명하기로 한다.
첫째, 가장 흔히 발생하고 방치할 경우 한 순간에 모든 데이터가 손상될 수 있는 배드 섹터(bad sector)이다. 파일이 위치한 영역에 배드섹터가 발생할 경우 파일의 접근 및 실행이 불가능하며, 컴퓨터가 자주 다운되어 정상적인 작업이 수행되지 않는 오류이다.
둘째, 디스크의 충돌과 긁힘이다. 하드디스크가 아주 빠른 속도로 작업을 진행하던 도중 충격을 받거나 디스크의 헤드와 디스크 사이의 간격에 끼어드는 오염물질에 의해 발생되는 것으로써 데이터의 복구가 가장 어려운 오류이다.
셋째, 하드디스크를 구성하는 스핀들 모터 자체의 손상이다. 이 경우 하드디스크를 전부 분해해서 다시 조립해야 하는 복잡한 복구 과정이 필요하다.
넷째, 사용자의 실수로 하드디스크를 떨어뜨리는 경우로서 하드디스크의 스핀들 모터 축이 변형되고, 진동 및 디스크 내부의 불균형이 일어나서 하드디스크의 준비상태가 되지 않는 경우이다.
다섯째, 시스템의 전원장치에서 전달되는 전기적인 문제로 디스크 전체에 발생되는 오류이다.
여섯째, 디스크와 호스트 컴퓨터 사이에 물리적인 접촉 장치의 문제로 데이 터 전달이 지연되거나 손실이 발생하는 경우이다.
상기 오류 탐지부(200)는, 상기 물리적 오류의 오류 발생 위치와 상기 물리적 오류의 오류 패턴을 포함하는 오류 정보를 획득할 수 있다. 이때 상기 오류 탐지부(200)는, 상기 디바이스 드라이버(110)의 오류 처리 루틴을 이용하여 상기 오류 정보를 획득할 수 있다.
리눅스 커널(ver 2.4.30)의 경우 idedisk_error 함수 내에서 물리적인 오류에 대한 정보를 탐지하게 되며, 상기 탐지되는 오류 정보는 오류 발생 위치와 물리적 오류의 오류 패턴이다. 이때 오류 패턴은 리눅스 커널의 경우 hdreg.h에 정의되어 있다.
한편 상기 오류 탐지부(200)는, 상기 물리적 오류가 발생한 위치의 LBA(Logical Block Addressing) 주소를 획득함으로써 상기 오류 발생 위치를 획득할 수 있다.
상기 물리적 오류에 관한 오류 정보를 알기 위해서는, 상기 저장 장치(100)의 레지스터가 검사되어야 한다. 그러나 상기 물리적 오류가 발생한 후 레지스터를 검사해도 올바른 결과 값을 얻을 수 없는 경우가 빈번하다. 왜냐하면 상기 저장 장치(100)로 내려가는 요청들이 끊임없이 발생하기 때문에 이미 다른 요청들에 의해 상기 저장 장치(100)의 관련 레지스터들이 다른 요청에 대한 값들로 채워지기 때문이다. 따라서 상기 저장 장치(100)에 물리적 오류가 발생하면 상기 디바이스 드라이버(110) 영역에서 상기 물리적 오류에 대해 간략히 커널메시지 형태로 알려주게 된다. 그러나 사용자는 윈도우(window) 환경에서는 상기 커널메시지를 확인할 수 없다.
따라서 상기 획득된 오류 정보는, 상기 저장 장치(100) 또는 상기 저장부(220) 또는 상기 오류 복구 시스템과 연결되어 외부에 별도로 존재하는 저장 장치에 저장되는 것이 바람직하다. 이하 상기 획득된 오류 정보는, 상기 저장부(220)에 저장되는 것으로 가정한다. 상기 획득된 오류 정보가 상기 저장부(220)에 저장되는 과정에 관한 상세한 사항은 후술하기로 한다.
상기 오류 복구부(210)는, 상기 오류 탐지부(200)에서 탐지된 상기 저장 장치(100)의 물리적 오류를 복구한다.
상기 배드섹터 판단부(211)는, 상기 물리적 오류가 배드 섹터(bad sector)의 발생에 해당하는지를 판단한다. 상기 배드섹터 판단부(211)는, 상기 저장 장치(100)의 상태에 관한 정보를 제공하는 스마트(SMART) 기능을 이용하여, 상기 물리적 오류가 배드 섹터의 발생에 해당하는지를 판단할 수 있다. 상기 스마트 기능은, 일반적으로 상기 저장 장치(100)를 제조하는 제조업체에 의해 상기 저장 장치(100)에 탑재되어 제공된다. 여기서 상기 저장 장치(100)의 상태에 관한 정보는, 상기 저장 장치(100)에서 현재 발생된 배드 섹터의 개수와, 상기 저장 장치(100)에 현재 남은 스페어 섹터의 비율을 포함할 수 있다.
상기 배드섹터 판단부(211)는, 상기 스마트 기능을 활성화시키고 상기 저장 장치(100)의 상태 정보를 획득한 후 상기 스마트 기능을 비활성화시킨다.
이때 상기 저장 장치(100)에 접근하는 인터페이스는, 리눅스의 경우 ide_raw_taskfile(ideinfo, &args, buf);이다. 여기서, ideinfo 자료구조는 원하는 저장 장치에 대한 정보이며, args는 저장 장치에 어떠한 정보를 요청할 것인지에 대한 자료구조이고, buf는 저장 장치로부터 원하는 정보를 받아오는 버퍼(buffer)의 역할을 하게 된다.
상기 배드섹터 판단부(211)는, buf에 얻어온 상기 저장 장치(100)에 관한 많은 정보 중에서 현재 발생된 배드 섹터의 개수를 파악하고 상기 저장 장치(100)의 남은 스페어 섹터의 비율을 확인할 수 있다. 리눅스의 커널 쓰레드를 통해서 일정한 주기로 검사해서 배드 섹터와 스페어 섹터의 비율에 대한 변화가 감지되었을 경우 배드 섹터가 주기 내에 발생했음을 확인할 수 있다. 예를 들어, 기존 배드 섹터의 개수 증가와 스페어 섹터 비율의 감소를 통해 현재 발생한 물리적 오류가 배드 섹터임을 명확히 확인할 수 있다.
상기 배드섹터 판단부(211)는, 상기 스마트 기능을 이용하여 상기 저장 장치(100)에서 현재 발생된 배드 섹터의 개수에 관한 정보와, 현재 남은 스페어 섹터의 비율에 관한 정보를 획득한 후, 상기 배드 섹터 개수와 상기 스페어 섹터 비율을 이용하여 현재 발생한 물리적 오류가 배드 섹터에 해당하는지를 판단할 수 있다. 예를 들어, 상기 배드 섹터 개수가 증가하고 상기 스페어 섹터 비율이 감소하였다면, 현재 발생한 물리적 오류가 배드 섹터에 해당하는 것이다.
상기 배드섹터 분석부(213)는, 상기 배드섹터 판단부(211)의 판단 결과, 상기 물리적 오류가 배드 섹터의 발생에 해당하는 경우, 상기 배드 섹터가 상기 저장 장치(100)에서 위치하는 영역을 분석한다.
상기 배드섹터 분석부(213)는, 상기 저장 장치(100)의 파일 시스템 레이아 웃(layout)을 이용하여, 상기 배드 섹터가 위치하는 영역을 분석할 수 있다. 상기 파일 시스템 레이아웃은, 상기 배드섹터 분석부(213)가 상기 배드 섹터의 영역을 분석할 때마다 확인될 수도 있고, 상기 저장부(220)에 미리 저장되어 있다가 상기 배드섹터 분석부(213)가 상기 배드 섹터의 영역을 분석할 때 호출될 수도 있다. 상기 저장 장치(100)의 파일 시스템 레이아웃이 확인되는 과정에 관한 상세한 내용은 후술하기로 한다.
상기 배드섹터 분석부(213)가 상기 배드 섹터가 위치하는 영역을 분석하는 이유는, 상기 배드 섹터가 리매핑(remapping)이 가능한 영역인지를 판단하기 위함이다. 예를 들어, 상기 배드 섹터가 발생한 영역이 부트 영역과 같이 시스템 동작에 영향을 줄 수 있는 영역이라면 리매핑이 수행되어서는 안 되므로 상기 배드 섹터가 리매핑이 불가능한 영역이 된다. 또한 예를 들어, 상기 배드 섹터가 발생한 영역이 일반적인 데이터를 기록한 데이터 영역이라면 리매핑이 가능한 영역이 되는 것이다.
상기 리매핑부(215)는, 상기 배드섹터 분석부(213)의 분석 결과, 상기 배드 섹터가 리매핑(remapping)이 가능한 영역인 경우, 상기 배드 섹터를 상기 저장 장치(100)의 스페어 섹터(spare sector)와 리매핑한다. 이와 같이 상기 배드 섹터가 상기 스페어 섹터와 리매핑되면, 상기 배드 섹터가 복구되는 것이다.
상기 저장 장치(100)에 배드 섹터가 발생한 경우, 상기 리매핑부(215)는, 상기 파일 시스템(120)의 쓰기(write) 기능을 이용할 수 있다.
그러나 파일 시스템(120)의 쓰기 기능을 이용하면 복잡한 파라미터들을 사용 하여야 하므로, 상기 리매핑부(215)는, 에이티에이 커맨드(ATA command) 중 쓰기 커맨드(write command)를 이용하여 상기 배드 섹터가 발생한 위치에 상기 스페어 섹터를 리매핑할 수 있다. 이때 상기 리매핑부(215)는, 상기 오류 탐지부(200)에 의해 획득된 LBA 주소 기반의 오류 발생 위치를 이용하여 섹터 단위로 상기 배드 섹터가 발생한 위치에 상기 스페어 섹터를 정확하게 리매핑할 수 있다.
종래 기술에 의하면, 상기 저장 장치(100)에 배드 섹터가 발생한 경우 우연에 의해 상기 배드 섹터가 복구될 수도 있다. 그러나 종래 기술과 같이 우연에 의한 치료는 상기 저장 장치(100)의 물리적 오류를 확대시킬 수도 있고 데이터의 보호에 적절하지 못하다. 따라서 전술한 본 발명의 일 실시예와 같이 상기 저장 장치(100)에 배드 섹터가 발생한 경우, 적극적으로 상기 발생한 배드 섹터를 복구함으로써 데이터 보호에 보다 만전을 기할 수 있게 된다.
상기 저장부(220)는, 상기 오류 복구 시스템의 전반적인 동작을 제어하는 소정의 프로그램을 저장하고 있으며, 상기 제어부(230)에 의해 상기 오류 복구 시스템의 전반적인 동작이 수행될 때 입출력되는 데이터 및 처리되는 각종 데이터를 저장한다.
상기 제어부(230)는, 상기 구성 요소들을 제어하고, 본 발명의 일 실시예에 따른 오류 복구 시스템의 전반적인 동작을 총괄한다.
도 3은, 본 발명의 일 실시예에 따른 저장 장치(100)의 오류 저장 시스템의 블록 구성도이다. 본 발명의 일 실시예에 따른 오류 저장 시스템은, 도 2의 오류 복구 시스템(20)과 마찬가지로, 도 1을 참조하여 설명한 전자 시스템(10)의 내부에 구비될 수도 있고, 상기 전자 시스템(10)과 외부에서 연결될 수도 있다. 또한 본 발명의 일 실시예에 따른 오류 저장 시스템은, 도 2의 오류 복구 시스템(20)에 포함될 수도 있다. 상기 오류 저장 시스템(20)은, 상기 전자 시스템(10)에 구비된 저장 장치(100)에서 오류가 발생한 경우, 상기 발생한 오류에 관한 오류 정보를 저장하기 위한 시스템이다. 이하 도 3과 필요한 도면들을 참조하여, 본 발명의 일 실시예에 따른 오류 저장 시스템을 상세히 설명하기로 한다.
본 발명의 일 실시예에 따른 오류 저장 시스템은, 도 3에 도시된 바와 같이, 오류 탐지부(200), 저장부(220) 및 제어부(230)를 포함할 수 있다.
상기 오류 탐지부(200)는, 도 2의 오류 복구 시스템(20)에 포함된 오류 탐지부(20)와 동일하다. 즉 상기 오류 탐지부(200)는, 상기 저장 장치(100)에서 발생한 물리적 오류를 탐지하고, 상기 물리적 오류의 오류 발생 위치와 오류 패턴을 포함하는 오류 정보를 획득한다.
상기 저장부(220)는, 상기 오류 저장 시스템의 전반적인 동작을 제어하는 소정의 프로그램을 저장하고 있으며, 상기 제어부(230)에 의해 상기 오류 저장 시스템의 전반적인 동작이 수행될 때 입출력되는 데이터 및 처리되는 각종 데이터를 저장한다.
상기 제어부(230)는, 상기 구성 요소들을 제어하고, 본 발명의 일 실시예에 따른 오류 저장 시스템의 전반적인 동작을 총괄한다.
상기 제어부(230)는, 상기 저장부(220)에 각각 별개의 정보를 저장할 수 있 는 복수 개의 노드(node)를 설정한다. 도 4는, 저장부(220)에 N개의 노드를 설정한 개념도를 도시한 도면이다.
그리고 상기 제어부(230)는, 상기 오류 탐지부(200)에 의해 상기 오류 정보가 획득될 때마다, 상기 획득된 각 오류 정보를 상기 복수 개의 노드에 순차적으로 저장하도록 제어한다. 예를 들어, 상기 제어부(230)는, 상기 획득된 각 오류 정보를 도 4의 "Node 1"부터 순차적으로 저장한다.
한편 상기 제어부(230)의 제어 신호에 의해 상기 획득된 각 오류 정보가 상기 복수 개의 노드에 순차적으로 저장되면, 상기 저장부(220)에 최초로 설정되었던 상기 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수는 점점 줄어들게 된다.
상기 제어부(230)는, 상기 설정된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 주기적으로 획득하여 상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 설정할 수 있다. 이때 추가적으로 설정되는 노드 개수는, 최초 설정된 노드 개수와 다를 수 있다.
도 5는 본 발명의 일 실시예에 따른 저장 장치의 정보 저장 방법의 흐름도이다. 도 5를 참조하여, 본 발명의 일 실시예에 따른 저장 장치의 정보 저장 방법을 상세히 설명하기로 한다. 본 발명의 일 실시예에 따른 저장 장치의 정보 저장 방법은, 도 1의 저장 장치(100)를 구비한 전자 시스템(10)에서 구현될 수 있다. 도 5 및 필요한 도면들을 참조하여, 본 발명의 일 실시예에 따른 저장 장치의 정보 저장 방법을 상세히 설명하기로 한다.
먼저 상기 저장 장치(100)에 각각 별개의 정보를 저장할 수 있는 노드(node)를 복수 개 할당한다[S500]. 그리고 상기 할당된 복수 개의 노드에 각각 별개의 정보를 순차적으로 저장해 나간다[S510]. 만약 특정 노드에 저장된 정보가 삭제되면 정보가 삭제된 상기 특정 노드는 정보가 저장되지 않은 미저장 노드로 환원된다.
상기 S500 단계 및 상기 S510 단계는, 일반적으로 프리리스트(Freelist) 자료 구조로 일컬어진다. 프리리스트 자료 구조란, 일정 개수의 노드를 도 4와 같이 링크드 리스트(linked list) 형태로 미리 할당받아 놓고, 정보 삽입 과정이 진행되면 상기 할당된 각 노드를 순차적으로 가져와서 링크드 리스트를 구성하고, 정보 삭제 과정이 진행되면 노드를 환원시키는 자료 구조이다.
이때 상기 할당된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하고[S520], 상기 획득된 미저장 노드의 개수가 미리 설정된 최소값에 도달하였는지 판단한다[S530].
상기 S530 단계의 판단 결과, 상기 미저장 노드의 개수가 상기 최소값에 도달하지 않았으면, 상기 S510 단계로 회귀하여 상기 복수 개의 노드에 정보의 순차적 저장을 계속 수행한다. 그리고 상기 S530 단계의 판단 결과, 상기 미저장 노드의 개수가 상기 최소값에 도달하였으면, 상기 저장 장치(100)에 상기 노드를 복수 개 추가적으로 할당한 후[S540], 상기 S510 단계로 회귀하여 정보 저장 과정을 계속 수행한다.
미리 할당해 놓은 프리리스트의 노드가 고갈되면 더 이상의 정보를 저장할 수 없다. 상기 S520 단계 내지 상기 S540 단계는, 이러한 문제를 해결하기 위한 것으로서, 미리 할당 받은 프리리스트의 최소 노드의 개수를 자료 구조로 갖고 있다가 이 개수보다 적어졌을 경우 임의의 개수만큼 노드를 새롭게 할당받아 미리 할당받아 놓은 프리리스트의 노드를 늘려주는 과정이다. 즉 프리리스트 자료구조에 상기 S520 단계 내지 상기 S540 단계를 부가함으로써, 링크드 리스트 자료구조의 장점과 배열의 장점을 모두 취할 수 있다.
전술한 본 발명의 일 실시예에 따른 저장 장치의 정보 저장 방법에 의하면, 메모리 할당과 해제를 최소화하면서 속도 저하를 최소화시킬 수 있다.
도 5를 참조하여 설명한 본 발명의 일 실시예에 따른 저장 장치의 정보 저장 방법은, 저장 장치에서 발생한 오류에 관한 오류 정보를 저장하는 데에 이용될 수 있다. 도 6은, 본 발명의 일 실시예에 따른 저장 장치의 오류 저장 방법의 흐름도이다. 본 발명의 일 실시예에 따른 저장 장치의 오류 저장 방법은, 도 2의 오류 복구 시스템(20) 또는 도 3의 오류 저장 시스템에서 구현될 수 있다. 도 6 및 필요한 도면들을 참조하여, 본 발명의 일 실시예에 따른 저장 장치의 오류 저장 방법을 상세히 설명하기로 한다.
먼저 상기 저장 장치(100)에 각각 별개의 정보를 저장할 수 있는 노드(node)를 복수 개 할당한다[S600].
그리고 상기 저장 장치(100)에서 발생한 물리적 오류를 탐지하고[S610], 상기 발생한 물리적 오류의 오류 발생 위치와 오류 패턴을 포함하는 오류 정보를 획 득한다[S620].
그리고 상기 S620 단계에서 상기 오류 정보가 획득될 때마다 상기 할당된 복수 개의 노드에 상기 획득된 각 오류 정보를 순차적으로 저장해 나간다[S630].
이때 상기 할당된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하고[S640], 상기 획득된 미저장 노드의 개수가 미리 설정된 최소값에 도달하였는지 판단한다[S650].
상기 S650 단계의 판단 결과, 상기 미저장 노드의 개수가 상기 최소값에 도달하지 않았으면, 상기 S610 단계로 회귀한다. 그리고 상기 S650 단계의 판단 결과, 상기 미저장 노드의 개수가 상기 최소값에 도달하였으면, 상기 저장 장치(100)에 상기 노드를 복수 개 추가적으로 할당한 후[S660], 상기 S610 단계로 회귀한다.
한편 종래 기술에 따르면, 파일 시스템이 시스템에 탑재되면 파일 시스템과의 직접적인 설정 과정을 통해 파일 시스템의 레이아웃(layout)을 만들어낸다. 이때 파일 시스템과의 직접적인 접근이 필요하며 파일 시스템과의 설정으로 인해 블록 주소 기반으로 구분된다. 그러나 이와 같은 종래 기술에 따르면, 파일 시스템과의 직접적인 접근을 통해 파일 시스템의 레이아웃을 확인하여야 하므로, 파일 시스템이 확인되지 않은 상태에서는 파일 시스템의 레이아웃을 확인할 수 없고, 저장 장치에서 구분하는 방법인 LBA 주소가 아닌 보다 큰 단위인 블록 주소로 구분하여야 하는 문제점이 발생한다.
본 발명에서는, 파일 시스템과의 설정 과정을 통한 파일 시스템의 레이아웃 정보를 탐지하는 종래 기술과는 달리, 저장 장치의 로우 데이터(raw data)를 읽음으로써 파일 시스템을 구분하고 파일 시스템이 이루고 있는 레이아웃을 탐지하는 방법을 제안한다.
도 7 및 도 8은 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃을 획득하는 방법의 흐름도이다. 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법은, 도 1의 전자 시스템(10)이나 도 2의 오류 복구 시스템(20)에서 구현될 수 있다. 도 7, 도 8 및 필요한 도면들을 참조하여, 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법을 상세히 설명하기로 한다.
먼저 원하는 파티션 상에 있는 파일 시스템이 블록 크기를 어떻게 잡았는지 알 수 없기 때문에, 일단 특정 블록크기만큼 파티션의 맨 앞 부분을 읽는다[S700].
여기서, 하나의 섹터는 일반적으로 512 바이트의 크기를 갖는다. 따라서, 상기 S700 단계에서 읽혀지는 상기 특정 블록크기는, 512 바이트의 배수에 해당하는 크기가 바람직하다. 예를 들어, 이때 대부분의 파일 시스템이 4096 바이트(byte) 이하의 블록크기를 갖기 때문에 4096 바이트를 읽을 수 있다. 파일 시스템의 첫번째 블록은 슈퍼블록이며, 슈퍼블록의 블록크기를 확인하면 정확한 파일 시스템의 블록크기를 알 수 있다.
슈퍼블록에는 파일 시스템의 종류와 기타 정보를 나타내는 매직 넘버가 포함되어 있다. 상기 S700 단계에서 읽혀진 상기 특정 블록크기 내에 매직 넘버가 존재하면, 상기 매직 넘버에 의해 상기 파일 시스템의 종류와 기타 관련 정보를 알 수 있다. 만약 상기 S700 단계에서 읽혀진 상기 특정 블록크기 내에 매직 넘버가 존재 하지 않으면, 상기 특정 블록크기를 더 크게 한 후 상기 S700 단계를 재수행한다.
상기 S700 단계의 수행에 의해 상기 슈퍼블록의 블록크기를 획득하고[S710], 상기 S710 단계에서 획득된 상기 슈퍼블록의 블록크기를 이용하여 상기 슈퍼블록을 정확하게 탐지한다[S720]. 상기 탐지된 슈퍼블록의 자료 구조를 통해 원하는 파티션의 파일 시스템의 종류와 포맷 당시 사용됐던 옵션 정보를 획득할 수 있다.
상기 파일 시스템의 자료 구조의 레이아웃을 획득하거나 확인한다[S730]. 파일 시스템의 종류는 다양하다. 다양한 종류의 파일 시스템의 자료 구조는 미리 저장되어 있어야 한다. 상기 S720 단계에서 획득된 파일 시스템의 종류와 옵션 정보를 이용하여 미리 저장된 다양한 종류의 파일 시스템의 자료구조들 중 일치하는 파일 시스템의 자료 구조를 찾을 수 있다.
만약 파일 시스템이 ext3 파일 시스템일 경우, ext 3 파일 시스템의 레이아웃을 이루고 있는 자료구조는, 도 8에 도시된 바와 같이, 슈퍼블록, 그룹디스크립터, 블록비트맵, 아이노드비트맵, 아이노드테이블로 구성되어 있으며, 이 5가지 자료구조가 그룹을 지어 연속적으로 위치한다. 이때 포맷 옵션에 따라 레이아웃이 바뀌게 되기 때문에 슈퍼블록의 자료구조를 통해 옵션 정보를 알아낸 것이다.
한편 슈퍼블록은 모든 파일 시스템에서 1 블록을 차지한다. 따라서 파티션의 맨 앞 부분에서 1 블록크기만큼은 슈퍼블록이 된다. 슈퍼블록의 자료 구조를 통해 그룹디스크립터의 크기를 탐지한 후 그 크기만큼 슈퍼블록 이후로 읽어들인다.
그룹디스크립터 다음의 자료구조는 블록과 아이노드의 비트맵이다. 비트맵의 경우 각각 1블록의 크기를 갖고 있기 때문에 간단히 1블록씩 위치를 이동시켜 저장 장치 상의 자료구조 위치를 파악할 수 있다. 마지막으로 아이노드 테이블의 경우 역시 슈퍼블록과 그룹디스크립터를 통해 아이노드 테이블의 크기를 탐지한 후 크기만큼 저장 장치를 읽어들인다. 이와 같은 방식으로 ext3 파일 시스템의 하나의 블록 그룹에 대한 자료구조 레이아웃을 확인할 수 있다. 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법이 ext3 파일 시스템에만 국한되는 것은 아니다. 전술하였듯이, 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법은, 파일 시스템의 종류와 무관하게 적용될 수 있다.
그리고 파티션에 존재하는 블록그룹을 모두 확인한 후, 상기 획득된 파일 시스템의 자료구조의 레이아웃을 자료구조 형태로 저장할 수 있다.
전술한 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법에 의하면, 저장 장치의 최소 단위인 LBA 주소를 통해 구분하기 때문에 보다 정밀한 구분 방법이며, 파일 시스템과의 직접적인 설정 과정을 수행하지 않으므로 어떠한 포맷 형식에 따른 어떠한 파일 시스템이 탑재되어도 완벽히 파일 시스템의 레이아웃을 조사할 수 있다. 즉 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법에 의하면, 파일 시스템의 자료 구조를 직접 가져와서 파일 시스템의 레이아웃을 판독하는 것이 아니라, 저장 장치의 원하는 파티션을 통해 파일 시스템의 레이아웃을 판독하는 것이다. 따라서 원하는 위치의 파티션 상에 어떠한 파일 시스템이 존재하고 있는지를 알 필요가 없다.
도 9는 본 발명의 일 실시예에 따른 저장 장치의 오류 복구 방법의 흐름도이 다. 본 발명의 일 실시예에 따른 저장 장치의 오류 복구 방법은, 도 2의 오류 복구 시스템(20)에서 구현될 수 있다. 도 9와 필요한 도면들을 참조하여, 본 발명의 일 실시예에 따른 저장 장치의 오류 복구 방법을 상세히 설명하기로 한다.
먼저 상기 저장 장치(100)에서 발생한 물리적 오류를 탐지하고[S900], 상기 물리적 오류의 오류 정보를 획득한다[S910]. 상기 오류 정보는, 상기 물리적 오류의 오류 발생 위치와 오류 패턴을 포함할 수 있다. 또한 상기 오류 정보는, 디바이스 드라이버의 오류 처리 루틴으로부터 획득될 수 있다. 이때 상기 S910 단계는, 상기 물리적 오류가 발생한 위치의 LBA(Logical Block Addressing) 주소를 획득함으로써 상기 오류 발생 위치를 획득할 수 있다.
그리고 상기 획득된 오류 정보를 상기 저장 장치(100) 또는 상기 저장부(220)에 저장한다[S920]. 이때 상기 S920 단계는, 도 6을 참조하여 설명한 본 발명의 일 실시예에 따른 오류 저장 방법에 의할 수 있다.
그리고 상기 물리적 오류가 배드 섹터(bad sector)의 발생에 해당하는지를 판단한다[S930]. 상기 S930 단계는, 상기 저장 장치(100)의 상태에 관한 정보를 제공하는 스마트(SMART) 기능을 이용하여 수행될 수 있다.
도 10은 스마트 기능을 이용하여 S930 단계를 수행하는 과정을 도시한 흐름도이다. 도 10을 참조하여 상기 스마트 기능을 이용하여 S930 단계를 수행하는 과정을 설명하면 다음과 같다.
먼저 스마트 기능을 활성화시키고[S100], 상기 저장 장치(100)의 상태에 관 한 정보를 획득하고[S110], 상기 스마트 기능을 비활성화시키고[S120], 상기 S110 단계에서 획득한 상기 저장 장치(100)의 상태 정보를 이용하여 상기 물리적 오류가 배드 섹터의 발생에 해당하는지를 판단한다[S130]. 여기서 상기 저장 장치의 상태에 관한 정보는, 상기 저장 장치(100)에서 현재 발생된 배드 섹터의 개수와, 현재 남은 스페어 섹터의 비율을 포함할 수 있다.
상기 S930 단계의 판단 결과, 상기 물리적 오류가 배드 섹터의 발생에 해당하는 경우, 상기 배드 섹터가 상기 저장 장치(100)에 위치하는 영역을 분석한다[S940].
이때 상기 배드 섹터가 위치하는 영역을 분석하기 위해서는, 상기 파일 시스템(120)의 레이아웃(layout)을 알아야 한다. 상기 파일 시스템(120)의 확인 방법은, 도 7 및 도 8을 참조하여 전술한 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법에 의할 수 있다. 상기 파일 시스템(120)의 레이아웃은, 미리 저장되어 있을 수도 있고, 상기 S940 단계의 수행 전에 확인될 수도 있다.
그리고 상기 S930 단계의 수행에 의해 얻어진 상기 배드 섹터의 영역에 관한 정보를 이용하여, 상기 배드 섹터가 스페어 섹터와 리매핑이 가능한 영역인지를 판단한다[S950].
상기 S950 단계의 판단 결과, 상기 배드 섹터가 리매핑(remapping)이 가능한 영역인 경우, 상기 배드 섹터를 스페어 섹터와 리매핑하여 상기 배드 섹터를 복구한다[S960].
상기에서 설명한 본 발명에 의한 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법 및 저장 장치의 오류 저장 방법은, 컴퓨터에서 실행시키기 위한 프로그램으로 컴퓨터로 읽을 수 있는 기록매체에 기록하여 제공될 수 있다.
본 발명에 의한 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법 및 저장 장치의 오류 저장 방법은 소프트웨어를 통해 실행될 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필요한 작업을 실행하는 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독 가능 매체에 저장되거나 전송 매체 또는 통신망에서 반송파와 결합된 컴퓨터 데이터 신호에 의하여 전송될 수 있다.
컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는, ROM, RAM, CD-ROM, DVD±ROM, DVD-RAM, 자기 테이프, 플로피 디스크, 하드 디스크(hard disk), 광데이터 저장장치 등이 있다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 장치에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
도 1은 저장 장치를 구비한 전자 시스템의 일 예를 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 오류 복구 시스템의 블록 구성도이다.
도 3은, 본 발명의 일 실시예에 따른 저장 장치(100)의 오류 저장 시스템의 블록 구성도이다.
도 4는, 저장부(220)에 N개의 노드를 설정한 개념도를 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 저장 장치의 정보 저장 방법의 흐름도이다.
도 6은, 본 발명의 일 실시예에 따른 저장 장치의 오류 저장 방법의 흐름도이다.
도 7 및 도 8은 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃을 획득하는 방법의 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 저장 장치의 오류 복구 방법의 흐름도이다.
도 10은 스마트 기능을 이용하여 S930 단계를 수행하는 과정을 도시한 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
10: 전자 시스템 100: 저장 장치
110: 디바이스 드라이버 120: 파일 시스템
130: 사용자 애플리케이션 20: 오류 복구 시스템
200: 오류 탐지부 210: 오류 복구부
211: 배드섹터 판단부 213: 배드섹터 분석부
215: 리매핑부 220: 저장부
230: 저장부

Claims (25)

  1. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치의 오류를 복구시키는 방법에 있어서,
    상기 저장 장치에서 발생한 물리적 오류를 탐지하고, 상기 물리적 오류의 오류 발생 위치 및 오류 패턴을 포함하는 오류 정보를 획득하는 오류 탐지 단계;
    상기 오류 정보를 저장하는 저장부에 각각 별개의 정보를 저장할 수 있는 노드(node)를 복수 개 할당하고, 상기 오류 탐지 단계에서 상기 오류 정보가 획득될 때마다 상기 할당된 복수 개의 노드에 상기 획득된 각 오류 정보를 순차적으로 저장하는 정보 저장 단계;
    상기 물리적 오류가 배드 섹터(bad sector)의 발생에 해당하는지를 판단하는 배드 섹터 판단 단계;
    상기 배드 섹터 판단 단계의 수행에 따라 상기 물리적 오류가 배드 섹터(bad sector)의 발생에 해당하는 경우, 상기 배드 섹터가 위치하는 영역을 분석하는 영역 분석 단계; 및
    상기 분석 결과 상기 배드 섹터가 리매핑(re-mapping)이 가능한 영역인 경우, 상기 배드 섹터를 스페어 섹터(spare sector)와 리매핑하는 리매핑 단계를 포함하고,
    상기 정보 저장 단계는,
    상기 할당된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하여 상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 할당하는 단계인 저장 장치의 오류 복구 방법.
  2. 제 1 항에 있어서, 상기 영역 분석 단계는,
    상기 저장 장치의 로우 데이터(row data)를 읽음으로써 획득되는 상기 저장 장치의 파일시스템 레이아웃(layout)을 이용하여 수행되는 것을 특징으로 하는 저장 장치의 오류 복구 방법.
  3. 제 2 항에 있어서, 상기 리매핑 단계는,
    에이티에이 커맨드(ATA command) 중 쓰기 커맨드(write command)를 이용하여 상기 배드 섹터가 발생한 위치에 상기 스페어 섹터를 리매핑하는 것을 특징으로 하는 저장 장치의 오류 복구 방법.
  4. 제 3 항에 있어서, 상기 오류 정보는,
    상기 디바이스 드라이버의 오류 처리 루틴으로부터 획득되는 것을 특징으로 하는 저장 장치의 오류 저장 방법.
  5. 제 4 항에 있어서, 상기 오류 탐지 단계는,
    상기 물리적 오류가 발생한 위치의 LBA(Logical Block Addressing) 주소를 획득함으로써 상기 오류 발생 위치를 획득하는 것을 특징으로 하는 저장 장치의 오류 복구 방법.
  6. 제 5 항에 있어서, 상기 배드 섹터 판단 단계는,
    상기 저장 장치의 상태에 관한 정보를 제공하는 스마트(SMART) 기능을 이용하여 수행되는 것을 특징으로 하는 저장 장치의 오류 복구 방법.
  7. 제 6 항에 있어서, 상기 배드 섹터 판단 단계는,
    상기 스마트 기능을 활성화하는 단계;
    상기 스마트 기능을 이용하여 상기 저장 장치의 상태에 관한 정보를 획득하는 단계;
    상기 스마트 기능을 비활성화하는 단계; 및
    상기 획득된 저장 장치의 상태에 관한 정보를 이용하여 상기 물리적 오류가 배드 섹터의 발생에 해당하는지를 판단하는 단계를
    포함하는 저장 장치의 오류 복구 방법.
  8. 제 7 항에 있어서, 상기 저장 장치의 상태에 관한 정보는,
    상기 저장 장치에서 현재 발생된 배드 섹터의 개수와, 현재 남은 스페어 섹터의 비율을 포함하는 것을 특징으로 하는 저장 장치의 오류 복구 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치의 오류를 저장하는 방법에 있어서,
    상기 저장 장치에 각각 별개의 정보를 저장할 수 있는 노드(node)를 복수 개 할당하는 노드 할당 단계;
    상기 저장 장치에서 발생한 물리적 오류를 탐지하는 오류 탐지 단계;
    상기 물리적 오류의 오류 발생 위치 및 오류 패턴을 포함하는 오류 정보를 획득하는 정보 획득 단계; 및
    상기 정보 획득 단계에서 상기 오류 정보가 획득될 때마다 상기 할당된 복수 개의 노드에 상기 획득된 각 오류 정보를 순차적으로 저장하는 정보 저장 단계를 포함하고,
    상기 정보 저장 단계는,
    상기 할당된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하는 단계; 및
    상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 할당하는 단계를
    포함하는 저장 장치의 오류 저장 방법.
  13. 제 12 항에 있어서, 상기 오류 정보는,
    상기 디바이스 드라이버의 오류 처리 루틴으로부터 획득되는 것을 특징으로 하는 저장 장치의 오류 저장 방법.
  14. 제 1 항 내지 제 8 항, 제 12 항 및 제 13 항 중 어느 한 항의 방법을 컴퓨터로 실행시킬 수 있는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  15. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에 구비되거나 연결되는, 상기 저장 장치의 오류를 복구시키는 오류 복구 시스템에 있어서,
    상기 저장 장치에서 발생한 물리적 오류를 탐지하고, 상기 물리적 오류의 오류 발생 위치 및 오류 패턴을 포함하는 오류 정보를 획득하는 오류 탐지부;
    상기 오류 정보를 저장하는 저장부에 각각 별개의 정보를 저장할 수 있는 복수 개의 노드(node)를 설정하고, 상기 오류 탐지부에 의해 상기 오류 정보가 획득될 때마다, 상기 획득된 각 오류 정보를 상기 복수 개의 노드에 순차적으로 저장하도록 제어하는 제어부;
    상기 물리적 오류가 배드 섹터(bad sector)의 발생에 해당하는지를 판단하는 배드섹터 판단부;
    상기 물리적 오류가 배드 섹터의 발생에 해당하는 경우, 상기 배드 섹터가 위치하는 영역을 분석하는 배드섹터 분석부; 및
    상기 분석 결과 상기 배드 섹터가 리매핑(remapping)이 가능한 영역인 경우, 상기 배드 섹터를 스페어 섹터(spare sector)와 리매핑하는 리매핑부를 포함하고,
    상기 제어부는,
    상기 설정된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하여 상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 설정하는 오류 복구 시스템.
  16. 제 15 항에 있어서, 상기 배드섹터 분석부는,
    상기 저장 장치의 로우 데이터(row data)를 읽음으로써 획득되는 상기 저장 장치의 파일시스템 레이아웃(layout)을 이용하여 상기 배드 섹터가 위치하는 영역을 분석하는 것을 특징으로 하는 저장 장치의 오류 복구 시스템.
  17. 제 16 항에 있어서, 상기 리매핑부는,
    에이티에이 커맨드(ATA command) 중 쓰기 커맨드(write command)를 이용하여 상기 배드 섹터가 발생한 위치에 상기 스페어 섹터를 리매핑하는 것을 특징으로 하는 오류 복구 시스템.
  18. 제 17 항에 있어서, 상기 오류 정보는,
    상기 디바이스 드라이버의 오류 처리 루틴으로부터 획득되는 것을 특징으로 하는 오류 복구 시스템.
  19. 제 18 항에 있어서, 상기 오류 탐지부는,
    상기 물리적 오류가 발생한 위치의 LBA(Logical Block Addressing) 주소를 획득함으로써 상기 오류 발생 위치를 획득하는 것을 특징으로 하는 오류 복구 시스템.
  20. 제 19 항에 있어서, 상기 배드섹터 판단부는,
    상기 저장 장치의 상태에 관한 정보를 제공하는 스마트(SMART) 기능을 이용하여, 상기 물리적 오류가 배드 섹터의 발생에 해당하는지를 판단하는 것을 특징으로 하는 오류 복구 시스템.
  21. 제 20 항에 있어서, 상기 저장 장치의 상태에 관한 정보는,
    상기 저장 장치에서 현재 발생된 배드 섹터의 개수와, 현재 남은 스페어 섹터의 비율을 포함하는 것을 특징으로 하는 오류 복구 시스템.
  22. 삭제
  23. 삭제
  24. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에 구비되거나 연결되는, 상기 저장 장치의 오류를 저장하는 오류 저장 시스템에 있어서,
    상기 저장 장치에서 발생한 물리적 오류를 탐지하고, 상기 물리적 오류의 오류 발생 위치와 오류 패턴을 포함하는 오류 정보를 획득하는 오류 탐지부; 및
    상기 오류 정보를 저장하는 저장부에 각각 별개의 정보를 저장할 수 있는 복수 개의 노드(node)를 설정하고, 상기 오류 탐지부에 의해 상기 오류 정보가 획득될 때마다, 상기 획득된 각 오류 정보를 상기 복수 개의 노드에 순차적으로 저장하도록 제어하는 제어부를 포함하고,
    상기 제어부는,
    상기 설정된 복수 개의 노드 중 정보가 저장되지 않은 미저장 노드의 개수를 획득하여 상기 미저장 노드의 개수가 미리 설정된 최소값에 도달하면, 상기 노드를 복수 개 더 설정하는 것을 특징으로 하는 오류 저장 시스템.
  25. 제 24 항에 있어서, 상기 오류 정보는,
    상기 디바이스 드라이버의 오류 처리 루틴으로부터 획득되는 것을 특징으로 하는 오류 저장 시스템.
KR1020070111797A 2007-11-02 2007-11-02 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법,오류 복구 시스템 및 오류 저장 시스템 KR100907708B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070111797A KR100907708B1 (ko) 2007-11-02 2007-11-02 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법,오류 복구 시스템 및 오류 저장 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070111797A KR100907708B1 (ko) 2007-11-02 2007-11-02 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법,오류 복구 시스템 및 오류 저장 시스템

Publications (2)

Publication Number Publication Date
KR20090045802A KR20090045802A (ko) 2009-05-08
KR100907708B1 true KR100907708B1 (ko) 2009-07-14

Family

ID=40855848

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070111797A KR100907708B1 (ko) 2007-11-02 2007-11-02 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법,오류 복구 시스템 및 오류 저장 시스템

Country Status (1)

Country Link
KR (1) KR100907708B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101963629B1 (ko) * 2016-07-07 2019-03-29 고려대학교 산학협력단 메모리 관리 시스템 및 그 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980056225A (ko) * 1996-12-28 1998-09-25 구자홍 재기록 가능 광 디스크 시스템의 디펙트 영역 관리방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980056225A (ko) * 1996-12-28 1998-09-25 구자홍 재기록 가능 광 디스크 시스템의 디펙트 영역 관리방법

Also Published As

Publication number Publication date
KR20090045802A (ko) 2009-05-08

Similar Documents

Publication Publication Date Title
US9747036B2 (en) Tiered storage device providing for migration of prioritized application specific data responsive to frequently referenced data
EP1769329B1 (en) Dynamic loading of virtual volume data in a virtual tape server
US9971527B2 (en) Apparatus and method for managing storage for placing backup data into data blocks based on frequency information
EP2709018A1 (en) Method of managing main memory
US9529674B2 (en) Storage device management of unrecoverable logical block addresses for RAID data regeneration
JP2007035217A (ja) ディスク記憶装置のデータ退避処理方法及びディスク記憶システム
CN106201652B (zh) 一种数据处理方法及虚拟机
JP2018106462A (ja) 情報処理装置、ストレージ制御プログラムおよびストレージ制御方法
KR102366512B1 (ko) 논리 블록 어드레싱 범위 충돌 크롤러
US20060248236A1 (en) Method and apparatus for time correlating defects found on hard disks
US10585592B2 (en) Disk area isolation method and device
KR100907708B1 (ko) 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법,오류 복구 시스템 및 오류 저장 시스템
US9547443B2 (en) Method and apparatus to pin page based on server state
EP2381354A2 (en) Data recording device
KR100925523B1 (ko) 저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택방법
CN113778341A (zh) 遥感数据分布式存储方法和装置及遥感数据读取方法
CN109992220B (zh) 一种锁释放方法、装置、设备及介质
KR100882904B1 (ko) 저장 장치의 오류 발생 시스템
US8554995B2 (en) Connecting a storage subsystem and an electronic device with a control device that hides details of the storage subsystem
US20070121162A1 (en) Method, Apparatus, and Computer Program Product for Memory Paging
US20180374510A1 (en) Image processing device, and operation method for image processing device

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: 20130628

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140701

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee