KR100925523B1 - 저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택방법 - Google Patents

저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택방법 Download PDF

Info

Publication number
KR100925523B1
KR100925523B1 KR1020070111787A KR20070111787A KR100925523B1 KR 100925523 B1 KR100925523 B1 KR 100925523B1 KR 1020070111787 A KR1020070111787 A KR 1020070111787A KR 20070111787 A KR20070111787 A KR 20070111787A KR 100925523 B1 KR100925523 B1 KR 100925523B1
Authority
KR
South Korea
Prior art keywords
error
storage device
selecting
location
specific
Prior art date
Application number
KR1020070111787A
Other languages
English (en)
Other versions
KR20090045793A (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 KR1020070111787A priority Critical patent/KR100925523B1/ko
Publication of KR20090045793A publication Critical patent/KR20090045793A/ko
Application granted granted Critical
Publication of KR100925523B1 publication Critical patent/KR100925523B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes

Abstract

본 발명은 저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택 방법에 관한 것이다. 본 발명은, 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및 상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하는 저장 장치의 오류 발생 방법과, 상기 저장 장치의 오류 발생 방법에 이용될 수 있는 오류 발생 위치의 선택 방법을 제공한다.
저장 장치(Storage Device), 오류(Error), 배드 섹터(Bad Sector), 오류 발생, 오류 발생 위치

Description

저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택 방법 {Method Of Generating Error In Storage Device And Method Of Selecting Error Generating Location In Storage Device}
본 발명은 저장 장치의 오류 발생에 관한 것으로서, 보다 상세하게는 하드 디스크와 같은 저장 장치에 물리적인 오류를 발생시켜 시스템의 안정성 및 강인성을 검증할 수 있는 저장 장치의 오류 발생 방법과, 저장 장치에 오류를 발생시키기 위해 오류 발생 위치를 선택하는 방법에 관한 것이다.
대용량 멀티미디어 파일의 증가와 개인의 디지털 정보의 중요성이 날로 증가하면서 저장 장치(storage device)는 점점 고용량화 및 고집적화되고 있다. 따라서 저장 장치상에 발생되는 물리적인 오류는 단순히 작은 영역의 손상이 아닌 매우 넓은 영역에 대한 정보 손실로 이어질 수 있다. 이를 방지하기 위해서는 저장 장치 기반 시스템의 물리적인 오류에 대한 대처 수준을 검증하고, 하드웨어 계층에서 발생되는 오류를 발견할 수 있어야 한다.
특히 현대 사회의 디지털 정보 중 가장 중요하게 여겨지는 개인 정보는 외부에 알려졌을 경우 개인의 프라이버시를 침해할 수 있고, 사라졌을 경우 큰 곤경에 빠질 수 있어 디지털 정보의 보호를 위해 많은 연구가 진행되고 있다.
그리고 이와 같은 디지털 정보는 일반적으로 PC(Personal Computer)나 노트북에 저장하게 되는데 이때의 저장 장치는 대부분 하드디스크(hard-disk)가 이용되고 있다. 이러한 저장 장치상에 물리적인 오류가 발생하고, 해당 위치에 중요한 디지털 정보가 존재한다면 문제는 매우 심각해질 것이다.
종래의 저장 장치를 구비한 전자 시스템은, 물리적인 오류를 감시할 수 있는 기능을 제공하지 않는다. 만약 물리적 오류가 연속적으로 발생하기 시작한다면 디지털 정보는 속수무책으로 읽어버리게 된다. 이는 물리적인 오류가 발생하더라도 시스템 및 사용자는 최소한의 디지털 정보만을 손실할 수 있는데도 불구하고, 디지털 정보 전체를 잃어버릴 수 있는 상태에 이를 수 있는 것이다.
이와 같이 데이터 보호의 중요성이 점차 증가함에 따라, 최근 하드디스크과 같은 저장 장치에 발생한 물리적 오류에 대한 파일 시스템의 대처 수준을 판단하는 연구가 진행되고 있다. 예를 들어, 저장 장치에 인위적으로 물리적 오류를 발생시키고, 이에 따른 파일 시스템의 대처 수준을 알아볼 수 있다.
종래 기술에 의하면, 시스템의 디바이스 드라이버 소스코드를 수정하여 물리적 오류가 발생한 것과 같은 효과를 유발시키는 저장 장치의 오류 발생 방법이 있다. 그러나 종래 기술에 따른 저장 장치의 오류 발생 방법에 의하면, 저장 장치에 물리적 오류를 직접 발생시키지 않기 때문에 본질적으로 시스템 검증의 신뢰성과 정확성이 떨어질 수 밖에 없는 문제점이 있다.
또한 종래 기술에 의하면, 읽기 상태, 쓰기 상태 및 인터페이스 상태와 같은 저장 장치에 접근하는 접근 패턴을 전혀 고려하지 않은 채 해당 영역의 접근 유무만에 의해 물리적 오류를 발생시킴으로써 실제 상황을 반영하지 못하는 문제점이 있다.
또한 종래 기술에 의하면, 물리적 오류를 발생시키고자 하는 영역의 선택 방법이 정확한 LBA 주소를 이용하여야 하므로, 복잡한 LBA 주소 계산 방법에 의하지 않으면 시스템의 구현 및 실행이 원활하지 못한 문제점이 있다.
본 발명은 상기와 같은 문제점을 해결하고 최근의 추세와 요청에 따라 제안된 것으로서, 검증의 신뢰성과 정확성을 높이기 위해 저장 장치에 직접적으로 물리적 오류를 발생시키는 저장 장치의 오류 발생 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적은, 실제 상황을 반영한 시스템 검증을 위해 저장 장치에 접근하는 접근 패턴에 구속되어 오류를 발생시킬 수 있는 저장 장치의 오류 발생 방법을 제공하는 것이다.
본 발명의 또 다른 목적은, 다양한 목적 및 다양한 상황에 부합하여 오류를 발생시킬 위치를 선택할 수 있는 저장 장치의 오류 발생 위치의 선택 방법을 제공하는 것이다.
상기의 목적을 달성하기 위한 본 발명의 일 양상으로서, 본 발명에 따른 저장 장치의 오류 발생 방법은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서, 상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및 상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고, 상기 위치 선택 단계는, 상 기 저장 장치의 특정 파티션의 첫번째 섹터의 LBA 주소를 획득하는 단계; 상기 획득된 LBA 주소에 물리적 오류를 발생시키기 위한 특정 섹터의 섹터 순서를 더함으로써 상기 특정 섹터의 LBA 주소를 획득하는 단계; 및 상기 획득된 특정 섹터의 LBA 주소를 이용하여 상기 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를 포함하여 이루어진다.
상기의 목적을 달성하기 위한 본 발명의 다른 양상으로서, 본 발명에 따른 저장 장치의 오류 발생 방법은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서, 상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및 상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고, 상기 위치 선택 단계는, 물리적인 오류를 발생시키기 위한 LBA 주소 범위가 설정되는 단계; 및 커널의 랜덤 함수를 이용하여 상기 설정된 LBA 주소 범위 내에서 랜덤하게 특정 섹터가 선택됨으로써, 상기 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를 포함하여 이루어진다.
상기의 목적을 달성하기 위한 본 발명의 또 다른 양상으로서, 본 발명에 따른 저장 장치의 오류 발생 방법은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실 행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서, 상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및 상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고, 상기 위치 선택 단계는, 물리적인 오류를 발생시키기 위한 LBA 주소 범위가 설정되는 단계; 연속적으로 물리적 오류를 발생시키고자 하는 연속 오류 개수와 상기 연속 오류의 발생 개수가 결정되는 단계; 상기 연속 오류를 포함하여 발생시키고자 하는 오류의 총 개수가 결정되는 단계; 및 커널의 랜덤 함수를 이용하여 상기 설정된 LBA 주소 범위 내에서 상기 연속 오류 개수, 상기 연속 오류의 발생 개수 및 상기 오류의 총 개수에 부합하는 개수만큼 랜덤하게 복수 개의 특정 섹터가 선택됨으로써, 상기 복수 개의 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를 포함하여 이루어진다.
상기의 목적을 달성하기 위한 본 발명의 또 다른 양상으로서, 본 발명에 따른 저장 장치의 오류 발생 방법은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서, 상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및 상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고, 상기 위치 선택 단계는, 특 정 파일이 선택되는 단계; 상기 선택된 특정 파일을 이루는 블록들 중 특정 블록이 선택되는 단계; 및 상기 선택된 특정 블록에 포함된 적어도 하나의 특정 섹터가 선택됨으로써, 상기 적어도 하나의 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를 포함하여 이루어진다.
상기의 목적을 달성하기 위한 본 발명의 또 다른 양상으로서, 본 발명에 따른 저장 장치의 오류 발생 방법은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서, 상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및 상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고, 상기 위치 선택 단계는, 미리 저장된 상기 저장 장치의 파일 시스템 레이아웃(layout)을 이용하여 특정 섹터가 선택됨으로써, 상기 특정 섹터가 상기 오류 발생 위치로 선택되는 것을 특징으로 하여 이루어진다.
상기의 목적을 달성하기 위한 본 발명의 또 다른 양상으로서, 본 발명에 따른 저장 장치의 오류 발생 방법은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서, 상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단 계; 및 상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고, 상기 위치 선택 단계는, 저널의 자료 구조를 실시간으로 탐지하는 단계; 및 상기 탐지된 저널 자료 구조 내에서 특정 섹터가 선택됨으로써, 상기 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를 포함하여 이루어진다.
상기 ECC 변경 단계는, WRITE_LONG 커맨드를 이용하여 상기 더미 데이터를 기록함으로써 상기 오류 정정 부호를 변경하는 것을 특징으로 할 수 있다.
상기 ECC 변경 단계의 수행 후, 상기 오류 발생 위치에서 배드 섹터(bad sector)가 발생하였는지를 확인하는 오류 확인 단계를 더 포함할 수 있다.
상기 오류 확인 단계는, 상기 저장 장치의 상태 정보를 제공하는 스마트(SMART) 기능을 이용하여 상기 저장 장치의 배드 섹터(bad sector)의 개수가 증가되었는지를 확인함으로써 배드 섹터 발생을 확인하는 것을 특징으로 할 수 있다.
상기 오류 확인 단계는, 상기 파일 시스템의 읽기 기능을 이용하여 상기 오류 발생 위치를 읽었을 때 상기 디바이스 드라이버의 에러 관련 함수로부터 오류 메시지(error message)가 출력됨을 확인함으로써 배드 섹터 발생을 확인하는 것을 특징으로 할 수 있다.
상기의 목적을 달성하기 위한 본 발명의 또 다른 양상으로서, 본 발명에 따른 저장 장치의 오류 발생 방법은, 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실 행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서, 상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 상기 저장 장치에 접근하는 패턴을 나타내는 접근 패턴과 상기 물리적 오류의 패턴을 나타내는 오류 패턴이 선택되는 패턴 선택 단계; 및 상기 선택된 오류 발생 위치에 상기 접근 패턴으로 접근하여 상기 오류 패턴에 따른 오류를 발생시키는 오류 발생 단계를 포함하여 이루어진다.
상기 위치 선택 단계는, LBA(Logical Block Addressing) 주소가 선택됨으로써 상기 오류 발생 위치가 선택되는 것을 특징으로 할 수 있다.
상기 오류 발생 단계는, 상기 디바이스 드라이버에 의해 수행되는 것을 특징으로 할 수 있다. 여기서, 상기 오류 발생 단계는, 상기 디바이스 드라이버의 ide_do_rw_disk 함수에 의해 수행될 수 있다.
본 발명의 또 다른 양상에 따른 저장 장치의 오류 발생 방법은, 상기 접근 패턴을 해쉬키(Hash key)로 하여, 상기 오류 발생 위치와 상기 접근 패턴을 해쉬 테이블(Hash Table)로 저장하는 단계를 더 포함할 수 있다.
상기 해쉬 테이블은, 각 해쉬키 별로, 상기 오류 발생 위치가 오름차순으로 정렬되고 상기 오류 발생 위치의 최소값과 최대값을 갖는 것을 특징으로 할 수 있다.
상기 오류 발생 단계는, 상기 해쉬 테이블을 이용하여 상기 오류를 발생시키는 것을 특징으로 할 수 있다.
본 발명의 또 다른 양상에 따른 저장 장치의 오류 발생 방법은, 상기 전자 시스템의 특정 애플리케이션이 특정 접근 패턴으로 상기 저장 장치의 특정 위치로 접근할 때, 상기 특정 위치 및 상기 특정 접근 패턴을 이용하여 상기 해쉬 테이블을 검색하는 단계를 더 포함할 수 있다.
상기에서 설명한 본 발명에 따른 저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택 방법에 의하면 다음과 같은 효과가 있다.
첫째, 본 발명에 따른 저장 장치의 오류 발생 방법에 의하면, ECC 영역의 오염과 같이 장치에 실제 접근하여 물리적 오류를 발생시킴으로써 저장 장치를 구비한 시스템에 대한 검증의 신뢰성과 정확성을 높일 수 있는 효과가 있다.
둘째, 본 발명에 따른 저장 장치의 오류 발생 방법에 의하면, 저장 장치에 직접적인 물리적 오류를 발생시킴으로써 시스템의 종류에 상관없이 저장 장치를 탑재하는 모든 시스템에 적용할 수 있는 효과가 있다.
셋째, 본 발명에 따른 저장 장치의 오류 발생 방법에 의하면, 종래 기술에서 이루어지는 디바이스 드라이버 영역의 소스코드 수정이 전혀 없기 때문에, 시스템의 성능 저하가 발생하지 않는 효과가 있다.
넷째, 본 발명에 따른 저장 장치의 오류 발생 방법에 의하면, 저장 장치 상에 접근하는 접근 패턴을 구분하여 이에 따라 오류를 발생시키므로, 시스템의 강인성을 검증함에 있어서 실제 상황을 반영할 수 있다 효과가 있다.
다섯째, 본 발명에 따른 저장 장치의 오류 발생 위치의 선택 방법에 의하면, 편리하고 다양한 방법으로 오류 발생 위치를 선택하므로, 다양한 목적 및 다양한 상황에 부합하여 오류를 발생시킬 수 있는 효과가 있다.
본 발명의 상술한 목적, 특징들 및 장점은 첨부된 도면과 관련된 다음의 상세한 설명을 통하여 보다 분명해질 것이다. 이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예들을 상세히 설명한다. 명세서 전체에 걸쳐서 동일한 참조번호들은 동일한 구성요소들을 나타낸다. 또한, 본 발명과 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 상세한 설명을 생략한다.
본 발명은 저장 장치를 구비하는 다양한 전자 시스템에 적용될 수 있으나, 본 발명에서는 설명의 편의를 위하여 리눅스 시스템을 상정하여 설명하기로 한다. 본 발명이 적용되는 저장 장치 또한 다양할 수 있다. 예를 들어, 본 발명은 ATA 커맨드를 이용하여 R/W(Read/Write)할 수 있는 저장 장치에 적용될 수 있다. ATA 커맨드를 이용하여 R/W할 수 있는 저장 장치의 예를 들면, IDE/SATA 방식의 하드디스크가 있다.
도 1은 저장 장치를 구비한 전자 시스템의 일 예를 도시한 도면이다. 저장 장치를 구비한 전자 시스템은, 도 1에 도시된 바와 같이, 일반적으로 저장 장치(Storage Device, 100), 디바이스 드라이버(Device Driver, 110), 파일 시스템(File System, 120) 및 사용자 애플리케이션(User Application, 130)을 포함하여 구성되고, 각각의 영역은 명확한 경계로 이루어져 있다.
상기 디바이스 드라이버(110) 영역은 상기 저장 장치(100)에서 발생되는 물리적인 오류 및 상기 저장 장치(100)의 관련 정보의 대부분을 알 수 있는 영역이다. 왜냐하면, 상기 디바이스 드라이버(100)는, 상기 저장 장치(100)와 관련된 여러 레지스터 검사를 독립적으로 수행하고 있기 때문이다.
도 1에 도시된 전자 시스템에 포함된 저장 장치(100)의 대표적인 예는, 하드 디스크(hard-disk)이다. 상기 저장 장치(100)에서 발생할 수 있는 물리적 오류의 발생 원인은 다양하다. 이하 상기 물리적 오류의 대표적인 6가지를 설명하기로 한다.
첫째, 가장 흔히 발생하고 방치할 경우 한 순간에 모든 데이터가 손상될 수 있는 배드 섹터(bad sector)이다. 파일이 위치한 영역에 배드섹터가 발생할 경우 파일의 접근 및 실행이 불가능하며, 컴퓨터가 자주 다운되어 정상적인 작업이 수행되지 않는 오류이다.
둘째, 디스크의 충돌과 긁힘이다. 하드디스크가 아주 빠른 속도로 작업을 진행하던 도중 충격을 받거나 디스크의 헤드와 디스크 사이의 간격에 끼어드는 오염물질에 의해 발생되는 것으로써 데이터의 복구가 가장 어려운 오류이다.
셋째, 하드디스크를 구성하는 스핀들 모터 자체의 손상이다. 이 경우 하드디스크를 전부 분해해서 다시 조립해야 하는 복잡한 복구 과정이 필요하다.
넷째, 사용자의 실수로 하드디스크를 떨어뜨리는 경우로서 하드디스크의 스핀들 모터 축이 변형되고, 진동 및 디스크 내부의 불균형이 일어나서 하드디스크의 준비상태가 되지 않는 경우이다.
다섯째, 시스템의 전원장치에서 전달되는 전기적인 문제로 디스크 전체에 발생되는 오류이다.
여섯째, 디스크와 호스트 컴퓨터 사이에 물리적인 접촉 장치의 문제로 데이터 전달이 지연되거나 손실이 발생하는 경우이다.
도 2는 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법의 흐름도이다. 도 3은 도 1의 전자 시스템에서 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법이 실행되는 개념을 나타내는 개념도이다. 도 4는 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법을 실행하는 실행 코드의 예를 도시한 도면이다. 도 2 내지 도 4를 참조하여 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법을 상세히 설명하기로 한다. 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법은, 도 1에 도시된 전자 시스템(10)에서 실행될 수 있다.
먼저 상기 저장 장치(100)에 물리적 오류를 발생시키기 위해 상기 저장 장치(100)의 특정 섹터(sector)가 선택된다[S100]. 상기 S100 단계는, 상기 저장 장치(100)에 물리적 오류를 발생시키기 위한 오류 발생 위치를 선택하는 단계이다.
상기 S100 단계에서, 상기 저장 장치의 특정 파티션이 선택되고, 상기 선택된 특정 파티션 중 특정 블록이 선택되고, 상기 선택된 특정 블록에 포함되는 특정 섹터가 선택되는 과정에 의해 수행될 수 있다.
또한 상기 S100 단계에서, LBA(Logical Block Addressing) 주소에 의해 상기 특정 섹터가 선택될 수 있다. 즉 LBA 주소를 선택함으로써 상기 특정 섹터를 선택 하는 것이다.
상기 S100 단계에서, 상기 특정 섹터가 선택되는 방식은 다양할 수 있다. 예를 들어, 상기 전자 시스템(10)은 사용자로부터 특정 블록 번호를 입력받고, 상기 입력된 특정 블록 번호에 해당하는 블록 내에 있는 임의의 섹터를 선택할 수 있다. 또한 예를 들어, 상기 전자 시스템(10)은 사용자로부터 특정 LBA 주소를 입력받고, 상기 입력된 특정 LBA 주소에 해당하는 섹터를 선택할 수 있다. 상기 오류 발생 위치 또는 상기 특정 섹터의 선택 방법에 관한 상세한 사항은 후술하기로 한다.
그리고 상기 S100 단계에서 선택된 상기 특정 섹터의 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경시킨다[S110]. 즉 상기 S110 단계에서, 상기 ECC 영역에 더미 데이터가 기록되면, 결과적으로 원래 존재하던 상기 오류 정정 부호가 변경되는 것이다.
상기 S110 단계에서, ATA 커맨드(command) 중 WRITE_LONG 커맨드를 이용하여 상기 더미 데이터를 기록할 수 있다. 상기 저장 장치(100)에 물리적 오류인 배드 섹터(bad sector)를 발생시키기 위해 상기 저장 장치(100)에 접근하는 명령어인 ATA 커맨드 중 WRITE_LONG 커맨드를 이용하여 상기 저장 장치(100)의 섹터 상에 ECC 영역을 오염시킴으로써 해당 섹터의 디지털 정보를 손상시킬 수 있다.
도 4에 도시된 실행 코드 중 참조번호 30은, 상기 저장 장치(100)에서 오류를 발생시키고자 하는 영역에 LBA 주소를 보내기 위한 코드를 나타내고, 참조번호 40은 WRITE_LONG 커맨드를 상기 저장 장치(100)에 적용시키기 위한 코드를 나타낸 다. 즉 참조번호 30은, LBA 주소와 어떤 커맨드를 보낼 것인지를 상기 저장 장치(100)에 알려준다. 그리고 참조번호 40은, 실제 해당 커맨드를 적용시키는 코드이다. 참조번호 43은 하나의 섹터의 크기를 나타내고, 참조번호 45는 ECC 영역의 크기를 나타낸다. 즉 상기 S100 단계에서 선택된 섹터의 ECC 영역(4 bytes, 45)에 더미 데이터를 기록함으로써 상기 ECC 영역을 오염시킬 수 있다.
그리고 상기 S110 단계의 수행 후, 상기 선택된 특정 섹터에서 배드 섹터(bad sector)가 발생하였는지를 확인한다[S120].
상기 S120 단계는, 상기 S100 단계 및 상기 S110 단계에 의해 상기 저장 장치(100)의 특정 섹터 상에 물리적 오류를 발생시킨 경우, 상기 특정 섹터 상에 실제로 물리적 오류가 발생하였는지를 확인하기 위한 과정이다.
상기 S120 단계는, 2가지의 방식으로 수행될 수 있다.
첫째, 상기 파일 시스템(120)의 읽기 기능을 이용해서 오류가 적용된 섹터를 읽는 방식이다. 상기 파일 시스템(120)의 읽기 기능을 이용하여 상기 특정 섹터를 읽었을 때 상기 디바이스 드라이버(110)의 에러 관련 함수로부터 오류 메시지(error message)가 출력되는 것이 확인되면, 상기 특정 섹터에 배드 섹터와 같은 물리적 오류가 발생된 것이 확인될 수 있다.
둘째, 공개 소스로 제공되어지는 스마트(SMART) 도구를 이용하는 방식이다. 상기 스마트 기능은, 일반적으로 상기 저장 장치(100)를 제조하는 제조업체에 의해 상기 저장 장치(100)에 탑재되어 제공된다. 상기 스마트 기능은, 상기 저장 장치(100)에서 현재 발생된 배드 섹터의 개수와, 상기 저장 장치(100)에 현재 남은 스페어 섹터(spare sector)의 비율과 같은 상기 저장 장치(100)의 상태에 관한 정보를 제공할 수 있다. 예를 들어, SMART 도구를 이용하여 Current_Pending_Sector 속성의 RAW_VALUE값의 증가로 배드 섹터가 발생하였는지를 간단히 확인할 수 있다.
전술한 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법에 의하면, 도 3에 도시된 바와 같이, 상기 저장 장치(100)에 직접 접근하여 ECC 영역을 손상시킴으로써 실제 배드 섹터와 같은 물리적 오류를 발생시킬 수 있다.
도 5는 본 발명의 다른 실시예에 따른 저장 장치의 오류 발생 방법의 흐름도이다. 도 6은 도 1의 전자 시스템에서 본 발명의 다른 실시예에 따른 저장 장치의 오류 발생 방법이 실행되는 개념을 나타내는 개념도이다. 도 5 및 도 6을 참조하여 본 발명의 다른 실시예에 따른 저장 장치의 오류 발생 방법을 상세히 설명하기로 한다. 본 발명의 다른 실시예에 따른 저장 장치의 오류 발생 방법은, 도 1에 도시된 전자 시스템에서 실행될 수 있다.
먼저 상기 저장 장치(100)에 물리적 오류를 발생시키기 위한 오류 발생 위치를 선택한다[S200]. 상기 오류 발생 위치는, LBA(Logical Block Addressing) 주소가 선택됨으로써 선택될 수 있다. 상기 S200 단계에서, 상기 특정 섹터가 선택되는 방식은 다양할 수 있다. 예를 들어, 상기 전자 시스템(10)은 사용자로부터 특정 블록 번호를 입력받고, 상기 입력된 특정 블록 번호에 해당하는 블록 내에 있는 임의의 섹터를 선택할 수 있다. 또한 예를 들어, 상기 전자 시스템(10)은 사용자로부터 특정 LBA 주소를 입력받고, 상기 입력된 특정 LBA 주소에 해당하는 섹터를 선택할 수 있다. 상기 오류 발생 위치의 선택 방법에 관한 상세한 사항은 후술하기로 한다.
그리고 상기 저장 장치(100)에 접근하는 패턴을 나타내는 접근 패턴과 상기 물리적 오류의 패턴을 나타내는 오류 패턴을 선택한다[S210].
상기 접근 패턴은, 읽기 접근, 쓰기 접근 및 인터페이스 접근 중 어느 하나일 수 있다. 예를 들어, 상기 사용자 애플리케이션(130)에 포함된 특정 애플리케이션이 읽기 접근, 쓰기 접근 및 인터페이스 접근 중 어느 하나의 접근 패턴에 의해 상기 저장 장치(100)에 접근할 수 있다. 따라서 본 발명에서 상기 접근 패턴을 고려하는 것은 상기 저장 장치(100)에 대해 발생 가능한 실제 상황을 고려하기 위함이다.
상기 오류 패턴은, 리눅스 커널의 경우 hdreg.h에 정의되어 있다. 한편 hdreg.h에 새로운 오류 패턴이 정의될 수도 있다.
그리고 상기 접근 패턴을 해쉬키(Hash key)로 하여, 상기 오류 발생 위치와 상기 접근 패턴을 해쉬 테이블(Hash Table)로 저장한다[S220].
해슁(hashing)이란, 해슁 함수를 이용하여 자료를 검색하는 방법으로서, 데이터를 해쉬 테이블이라는 배열에 저장하고, 해싱 함수를 이용하여 데이터가 위치한 곳의 주소를 찾기 때문에 신속하게 원하는 데이터를 검색할 수 있는 방법이다.
해슁 함수는, 특정 키를 넣으면 특정 값으로 돌려준다. 해슁 함수는 다양한 방법으로 구성될 수 있다. 해슁, 해슁 함수 및 해슁 테이블은 공지 기술이므로 더 이상의 상세한 설명은 생략하기로 한다.
본 발명에서는 상기 접근 패턴을 해쉬키로 할 수 있다. 예를 들어, 읽기 접근은 0, 쓰기 접근은 1, 그리고 인터페이스 접근은 2로 해쉬키를 설정할 수 있다.
한편 상기 해쉬 테이블은, 각 해쉬키 별로, 상기 오류 발생 위치가 오름차순으로 정렬되고 상기 오류 발생 위치의 최소값과 최대값을 갖는 것이 바람직하다.
상기 해쉬 테이블에 의해 상기 저장 장치로 접근하는 요청들이 빠르게 검색될 수 있다. 정리하면, 본 발명에서 상기 해쉬 테이블은, 해쉬키가 상기 접근 패턴별로 구분되고, 상기 각 접근 패턴별로 상기 오류 발생 위치를 링크드 리스트(linked list)로 관리하되 오름차순 정렬과 최소값 및 최대값을 각각 저장하고 있도록 구성될 수 있다.
그리고 상기 S200 단계에서 선택된 상기 오류 발생 위치에 상기 S210 단계에서 선택된 상기 접근 패턴으로 접근하여 상기 선택된 오류 패턴에 따른 오류를 발생시킨다[S230]. 상기 S230 단계는, 상기 디바이스 드라이버(110)에 의해 수행될 수 있다. 특히 상기 S230 단계는, 상기 디바이스 드라이버(110)의 ide_do_rw_disk 함수에 의해 수행될 수 있다. ide_do_rw_disk 함수는, 접근하는 저장 장치의 위치와 접근 패턴으로 구성되어 있다. 그리고 저장 장치의 특성에 따라 DMA(Direct Memory Access) 시퀀스를 따르는 요청과 DMA가 아닌 시퀀스를 따르는 요청으로 구분되어 있다.
상기 S230 단계는, 상기 S220 단계에서 저장된 상기 해쉬 테이블을 이용하여 수행될 수 있다. 상기 디바이스 드라이버(110)가 상기 S230 단계에서 상기 해슁 테이블을 이용하는 방식을 상세히 설명하기로 한다. 상기 저장 장치(100)로 요청이 들어가기 위해 ide_do_rw_disk 함수로 접근하게 되면, ide_do_rw_disk 함수의 인자인 상기 접근 패턴과 접근하는 저장 장치(100)의 LBA 주소 범위를 알게 된다. 이 2 가지 인자를 통해 상기 S220 단계에서 구성된 상기 해슁 테이블에 부합되는 데이터가 있는지를 확인할 수 있다. 이때 상기 해슁 테이블은, 각 해쉬키 별로 최대값과 최소값을 갖고 있기 때문에 상기 저장 장치(100)로 접근하는 요청들에 대해 모든 데이터를 검색하지 않고 해당 데이터가 존재하는지를 빠르게 검색할 수 있다.
만약 상기 저장 장치(100)로 접근하는 요청이 물리적 오류를 발생하고자 하는 영역이면 상기 저장 장치(100)를 나타내는 ide_hwif_t *hwif 자료구조에 물리적인 오류를 발생시켜야 하는 요청에 대한 정보(접근 LBA 주소 범위와 접근 패턴)을 담고, 그렇지 않은 요청이라면 어떠한 작업도 하지 않는다.
그리고 상기 저장 장치(100)로 접근하는 쓰기 요청이 들어왔을 경우, 해당 영역에 읽기 시에 물리적인 오류를 발생하게끔 되어 있다면 해당 정보를 지워서 쓰기 요청 후에 해당 영역에 읽기 접근을 해도 어떠한 물리적인 오류가 발생하지 않도록 정보를 삭제시킬 수 있다. 이는 실제 저장 장치상에 읽기 오류인 배드 섹터가 발생하였을 경우 리매핑(remapping)이 이루어지면 정상적으로 사용할 수 있는 섹터가 되는 현상을 반영하기 위함이다.
그리고 인터페이스 오류는 단 한번만 발생하는 물리적 오류이므로, 물리적 오류를 발생하게 하고 다시 해당 영역에 물리적인 오류가 발생하지 않도록 오류 정보를 삭제시켜줌으로써 현실 상황과 똑같은 상황을 연출할 수 있다.
그리고 물리적인 오류를 발생시키기 위해 저장장치 자료구조인 ide_hwif_t *hwif에 물리적인 오류를 발생시켜야 하는 저장장치 접근 요청 정보를 담고 상기 디바이스 드라이버(110) 고유의 작업을 수행한다. 이때 DMA를 지원하는 저장 장치의 경우 ide_dma_intr 함수에 접근하게 되며, DMA를 지원하지 않는 저장 장치의 경우는 요청에 따라 task_in_intr이나 task_out_intr 함수를 거치게 된다. 이 함수들 내에서 상기 저장 장치(100)에 대한 실제 접근이 이루어지고 물리적인 오류가 발생하게 되면 이 함수들에서 발생하게 된다.
따라서 물리적인 오류를 발생하고자 하는 요청이 들어왔을 경우 저장 장치 자료구조인 ide_hwif_t *hwif 내에 미리 저장시켜놓은 물리적인 오류 정보를 확인해서 물리적인 오류를 발생해도 되는 요청인지를 확인한다. 확인이 되었을 경우 즉시 에러 처리 루틴을 호출하여 미리 설정한 오류 타입으로 물리적인 오류를 인위적으로 발생시킨다. 설정한 특정 영역의 물리적인 오류를 발생하고 싶지 않다면 자료구조에서 해당 정보를 삭제시킴으로써 간단히 오류를 치료할 수 있게 된다.
그리고 상기 전자 시스템(10)의 특정 애플리케이션이 특정 접근 패턴으로 상기 저장 장치(100)의 특정 위치로 접근할 때, 상기 특정 위치 및 상기 특정 접근 패턴을 이용하여 상기 S230 단계에서 저장된 해쉬 테이블을 검색한다[S240].
상기 S240 단계에서, 상기 저장 장치(100)의 특정 위치로 접근할 때 상기 해쉬 테이블을 검색함으로써, 현재 접근하는 특정 위치가 물리적인 오류 발생 영역인지를 확인할 수 있다. 또한 상기 특정 애플리케이션이 물리적 오류가 발생한 영역으로 접근한 경우, 상기 물리적 오류 발생 영역에 대한 접근의 영향을 알 수 있을 것이다.
전술한 본 발명의 다른 실시예에 따른 저장 장치의 오류 발생 방법에 의하면, 도 6에 도시된 바와 같이, 상기 디바이스 드라이버(110) 영역을 이용하여 가상의 물리적인 오류를 발생시킬 수 있다. 본 발명의 다른 실시예에 따른 저장 장치의 오류 발생 방법에 의하면, 종래 기술과는 달리, 상기 저장 장치(100)에의 접근 패턴을 구분함으로써 실제 상황에 보다 가까운 물리적 오류 발생 상황을 연출할 수 있고, 오류 정보를 해쉬 테이블을 이용하여 관리하되 해쉬키 별로 최소값과 최대값을 관리함으로써 빠른 검색이 가능하게 된다.
도 2 및 도 3을 참조하여 설명한 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법과, 도 5 및 도 6을 참조하여 설명한 본 발명의 다른 실시예에 따른 저장 장치의 오류 발생 방법에서는, 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되어야 한다[도 2의 S100, 도 5의 S200]. 이하 본 발명에서 상기 오류 발생 위치를 선택하기 위한 6가지의 방법을 상세히 설명하기로 한다. 후술하는 오류 발생 위치의 선택 방법들은, 전술한 본 발명의 실시예들에 따른 저장 장치의 오류 발생 방법에 적용될 수 있음을 밝혀둔다.
첫째, 상기 저장 장치(100)의 원하는 영역을 LBA 주소로 직접 입력하거나, 섹터 번호로 입력하거나, 상기 파일 시스템(120)이 구분하는 블록 번호로 입력하는 방식이다.
섹터 번호로 입력하는 방식은, HDA1, HDA2와 같이 파티션이 결정되고 그 파티션 내에서 몇번째 섹터를 의미하는지를 나타내는 방식이다. 도 7은 섹터 번호 입 력에 의해 오류 발생 위치를 선택하는 방법의 흐름도이다.
예를 들어, 특정 파티션이 결정되고 상기 결정된 특정 파티션의 첫번째 섹터의 LBA 주소를 획득한다[S300]. 여기서 상기 특정 파티션의 첫번째 섹터가 LBA 주소로 계산되어야 한다. 그리고 상기 S300 단계에서 획득된 상기 LBA 주소에, 물리적 오류를 발생시키기 위한 특정 섹터의 섹터 번호(순서)를 더함으로써 상기 특정 섹터의 LBA 주소를 획득한다[S310]. 그리고 상기 S310 단계에서 획득된 상기 특정 섹터의 LBA 주소를 이용하여 상기 특정 섹터가 상기 오류 발생 위치로 선택된다[S320]. 도 8은, hdb1 파티션 내에서 특정 섹터가 선택되는 개념도를 도시한 도면이다. 도 8은, LBA 주소 범위가 5000~7000에 해당하는 hdb1이라는 파티션 내에서 1개의 특정 섹터(50)가 선택된 것을 나타낸다
블록 번호를 입력하는 방식도 상기 방법과 유사하다. 원하는 파티션의 첫번째 섹터가 LBA로 계산되었을 때, 상기 파티션의 첫번째 섹터의 LBA 주소를 획득한다. 그리고 파티션의 첫번째 임의의 크기 블록을 읽어들여 블록 크기를 파악한다. 블록크기가 몇 개의 섹터들로 구성되어 있는지 확인하고, 블록 번호에 블록을 구성하는 섹터의 개수를 곱해서 1차적으로 계산한 파티션 시작 LBA 주소와 더하면 원하는 LBA 주소를 얻을 수 있다.
둘째, 복수 개의 오류를 동시에 발생시키기 위해, 복수 개의 오류 발생 위치를 선택하는 방식이다. 도 9는 복수 개의 오류를 동시에 발생시키기 위한 명령어의 예를 도시한 도면이다. 도 9에서, 참조번호 60은 도 2 및 도 3을 참조하여 전술한 본 발명의 일 실시예에 따른 오류 발생 방법을 실행하는 명령어의 예이고, 참조번 호 61은 도 5 및 도 6을 참조하여 전술한 본 발명의 다른 실시예에 따른 오류 발생 방법을 실행하는 명령어의 예이다. 도 9에서 참조번호 63은, {111, 222, 333}에 해당하는 복수 개의 섹터들과, {100, 200, 300}에 해당하는 복수 개의 블록들에 대해 오류가 발생됨을 나타낸다.
셋째, 오류 발생 위치를 랜덤하게 선택하는 방식이다. 도 10은 랜덤 방식에 의한 오류 발생 위치를 선택하는 방법의 흐름도이다.
먼저 물리적인 오류를 발생시키기 위한 LBA 주소의 범위가 설정된다[S400]. 파티션 정보가 담긴 영역이나 부트 섹터 영역에 오류를 발생시키면 저장 장치를 회복 불가능한 상태에 빠뜨릴 수 있기 때문에, 상기 S400 단계에서 LBA 주소 범위가 설정되는 것이 필요하다.
그리고 커널의 랜덤 함수를 이용하여 상기 설정된 LBA 주소 범위 내에서 랜덤하게 상기 오류 발생 위치가 선택된다[S410]. 상기 S410 단계에서, 커널의 랜덤 함수는 난수를 발생시키므로, 상기 설정된 LBA 주소 범위 내에서 랜덤하게 특정 LBA 주소를 발생시킨다. 상기 랜덤하게 발생된 특정 LBA 주소가 상기 오류 발생 위치가 되는 것이다. 이때 상기 S410 단계는, 상기 설정된 LBA 주소 범위 내에서 복수 개의 오류 발생 위치를 랜덤하게 선택할 수도 있다.
도 11은 랜덤 방식에 의해 복수 개의 오류 발생 위치를 선택하는 방법의 흐름도이다. 도 10을 참조하여 설명한 오류 발생 위치의 선택 방법에서도 복수 개의 오류 발생 위치를 선택할 수 있으나, 도 11을 참조하여 후술할 오류 발생 위치의 선택 방법은 오류 발생 위치의 선택 조건을 둘 수 있는 방법이다. 도 12는 랜덤 방 식에 의해 복수 개의 오류 발생 위치가 선택된 경우의 개념도이다.
먼저 물리적인 오류를 발생시키기 위한 LBA 주소의 범위가 설정된다[S500]. 상기 S500 단계는, 도 10의 상기 S400 단계에 대응된다.
그리고 연속적으로 물리적 오류를 발생시키고자 하는 연속 오류 개수와, 상기 연속 오류의 발생 개수와, 상기 연속 오류를 포함하여 발생시키고자 하는 오류의 총 개수가 결정된다[S510].
상기 연속 오류란, 저장 장치의 특정 단위(예를 들어, 섹터)에 대한 공백없이 연속적으로 발생되는 오류를 말한다. 상기 연속 오류 개수란, 공백없이 연속적으로 발생되는 오류의 개수를 말한다. 도 12에서 참조번호 70은 3개의 오류가 공백없이 연속적으로 발생됨을 나타낸다. 예를 들어, 참조번호 70은 세 개의 섹터에 오류가 연속적으로 발생됨을 나타낸다.
상기 연속 오류의 발생 개수란, 상기 연속 오류 개수를 갖는 연속 오류가 발생되는 개수를 말한다. 도 12에서 연속 오류 개수가 3인 연속 오류가 4번 발생함을 나타낸다.
상기 오류의 총 개수는, 상기 연속 오류를 1개의 오류로 볼 수도 있고, 상기 연속 오류에 포함된 상기 연속 오류 개수만큼을 오류의 개수로 볼 수도 있다. 도 12에서는 1개의 오류가 6개, 연속 오류 개수가 3인 연속 오류가 4개이다. 따라서, 도 12에서 상기 연속 오류를 1개의 오류로 보면 상기 오류의 총 개수는 10개이다. 그리고 도 12에서 상기 연속 오류 개수 모두를 오류의 개수에 포함시키면, 상기 오류의 총 개수는 18개이다.
그리고 커널의 랜덤 함수를 이용하여 상기 설정된 LBA 주소 범위 내에서, 상기 연속 오류 개수, 상기 연속 오류의 발생 개수 및 상기 오류의 총 개수에 부합하는 개수만큼 랜덤하게 복수 개의 특정 섹터들이 선택된다[S520].
넷째, 특정 파일에 대해 오류 발생 위치를 선택하는 방법이다. 도 13은 특정 파일에 대해 오류 발생 위치를 선택하는 방법의 흐름도이다. 특정 파일에 대해 오류 발생 위치를 선택하는 방법은, 특정 파일을 선택한 후 상기 특정 파일을 이루는 블록들 중 몇 번째 블록에 물리적 오류를 발생할 것인지를 결정하는 방법이다.
먼저 특정 파일이 선택된다[S600]. 그리고 상기 선택된 특정 파일을 이루는 블록들 중 특정 블록이 선택된다[S610]. 그리고 상기 선택된 특정 블록에 포함된 적어도 하나의 특정 섹터가 선택됨으로써 상기 오류 발생 위치가 선택된다[S620]. 여기서 상기 S610 단계에서 선택된 특정 블록이 상기 오류 발생 위치가 될 수도 있다.
여기서 상기 파일 시스템(120)의 IOCTL 기능과 RMAP 기능이 이용될 수 있다. 상기 IOCTL 기능은 상기 특정 파일을 파일 디스크립터로 연결시켜주는 기능을 말하고, 상기 RMAP 기능은 파일 디스크립터를 이용해서 상기 특정 파일이 위치한 블록번호를 탐색하는 기능을 말한다.
파일 디스크립터 번호를 이용한 IOCTL 기능에 의해 원하는 파일에 대한 struct inode *inode와 struct file * flip이라는 두 개의 자료구조를 얻을 수 있다. 그리고 INODE 자료구조 내에 존재하는 struct address_space라는 자료구조를 통해 상기 특정 파일의 블록 인덱스가 상기 파일 시스템(120)에서 구분하는 블록 번호로 몇인지를 파악할 수 있다. 상기 특정 파일의 블록 인덱스의 블록 번호를 알게 되면, 전술한 블록 번호 입력 방식에 의한 오류 발생 위치의 선택 방법에 따라 상기 오류 발생 위치가 선택될 수 있다. 도 14는 특정 파일 내의 블록인덱스 번호를 이용하여 블록번호를 구하는 방법의 예를 도시한 도면이다.
다섯째, 파일시스템 구조를 분석하여 오류 발생 위치를 선택하는 방법이다. 이 방법에 의하면, 저장장치 기반의 파일시스템 구조를 분석하여 원하는 파일시스템의 메타데이터 자료구조가 저장장치의 어떤 위치에 있는지를 확인한다. 그리고 원하는 파일시스템 자료구조의 선택만으로 물리적 오류를 발생하고자 하는 영역의 LBA 주소를 쉽게 파악할 수 있다. 이를 위해 상기 저장 장치(100)의 파일시스템 레이아웃(layout)이 확인되어야 한다. 이때 상기 저장 장치(100)의 파일시스템 레이아웃은, 미리 확인되어 저장되어 있다가 상기 오류 발생 위치의 선택시에 이용될 수도 있고, 상기 오류 발생 위치의 선택시에 실시간으로 확인될 수도 있다. 상기 저장 장치(100)의 파일시스템 레이아웃의 확인 방법에 관한 상세한 사항은, 도 16 및 도 17을 참조하여 후술하기로 한다.
여섯째, 저널의 자료구조에 대해 오류 발생 위치를 선택하는 방법이다. 도 15는, 저널의 자료구조에 대해 오류 발생 위치를 선택하는 방법의 흐름도이다. 이 방법은 저널의 자료 구조가 위치하는 저장 장치 위치를 탐지하고, 원하는 해당 위치에 쉽게 오류 발생 위치를 지정할 수 있는 방법이다.
먼저 저널의 자료 구조를 실시간으로 탐지하고[S700], 상기 탐지된 저널 자료 구조 내에서 상기 오류 발생 위치가 선택된다[S710].
저널의 경우 고정된 위치가 없기 때문에 로그가 저널에 쓰여지는 시간에 어떠한 로그가 상기 저장 장치(100)의 어느 영역에 쓰여졌는지 실시간으로 모니터링할 필요가 있다. 따라서 상기 S700 단계에 의해 상기 저널 자료구조를 실시간 탐지하는 것이다. 그리고 상기 S710 단계에서 상기 오류 발생 위치의 예를 들면, 상기 탐지된 저널 자료 구조 내에 존재하는 특정 섹터가 될 수 있다.
한편 종래 기술에 따르면, 파일 시스템이 시스템에 탑재되면 파일 시스템과의 직접적인 설정 과정을 통해 파일 시스템의 레이아웃(layout)을 만들어낸다. 이때 파일 시스템과의 직접적인 접근이 필요하며 파일 시스템과의 설정으로 인해 블록 주소 기반으로 구분된다. 그러나 이와 같은 종래 기술에 따르면, 파일 시스템과의 직접적인 접근을 통해 파일 시스템의 레이아웃을 확인하여야 하므로, 파일 시스템이 확인되지 않은 상태에서는 파일 시스템의 레이아웃을 확인할 수 없고, 저장 장치에서 구분하는 방법인 LBA 주소가 아닌 보다 큰 단위인 블록 주소로 구분하여야 하는 문제점이 발생한다.
본 발명에서는, 파일 시스템과의 설정 과정을 통한 파일 시스템의 레이아웃 정보를 탐지하는 종래 기술과는 달리, 저장 장치의 로우 데이터(raw data)를 읽음으로써 파일 시스템을 구분하고 파일 시스템이 이루고 있는 레이아웃을 탐지하는 방법을 제안한다.
도 16 및 도 17은 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃을 획득하는 방법의 흐름도이다. 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법은, 도 1의 전자 시스템(10)에서 구현될 수 있다. 도 16 및 도 17을 참조하여, 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법을 상세히 설명하기로 한다.
먼저 원하는 파티션 상에 있는 파일 시스템이 블록 크기를 어떻게 잡았는지 알 수 없기 때문에, 일단 특정 블록크기만큼 파티션의 맨 앞 부분을 읽는다[S800].
여기서, 하나의 섹터는 일반적으로 512 바이트의 크기를 갖는다. 따라서, 상기 S800 단계에서 읽혀지는 상기 특정 블록크기는, 512 바이트의 배수에 해당하는 크기가 바람직하다. 예를 들어, 이때 대부분의 파일 시스템이 4096 바이트(byte) 이하의 블록크기를 갖기 때문에 4096 바이트를 읽을 수 있다. 파일 시스템의 첫번째 블록은 슈퍼블록이며, 슈퍼블록의 블록크기를 확인하면 정확한 파일 시스템의 블록크기를 알 수 있다.
슈퍼블록에는 파일 시스템의 종류와 기타 정보를 나타내는 매직 넘버가 포함되어 있다. 상기 S800 단계에서 읽혀진 상기 특정 블록크기 내에 매직 넘버가 존재하면, 상기 매직 넘버에 의해 상기 파일 시스템의 종류와 기타 관련 정보를 알 수 있다. 만약 상기 S800 단계에서 읽혀진 상기 특정 블록크기 내에 매직 넘버가 존재하지 않으면, 상기 특정 블록크기를 더 크게 한 후 상기 S800 단계를 재수행한다.
상기 S800 단계의 수행에 의해 상기 슈퍼블록의 블록크기를 획득하고[S810], 상기 S810 단계에서 획득된 상기 슈퍼블록의 블록크기를 이용하여 상기 슈퍼블록을 정확하게 탐지한다[S820]. 상기 탐지된 슈퍼블록의 자료 구조를 통해 원하는 파티션의 파일 시스템의 종류와 포맷 당시 사용됐던 옵션 정보를 획득할 수 있다.
상기 파일 시스템의 자료 구조의 레이아웃을 획득하거나 확인한다[S830]. 파일 시스템의 종류는 다양하다. 다양한 종류의 파일 시스템의 자료 구조는 미리 저장되어 있어야 한다. 상기 S820 단계에서 획득된 파일 시스템의 종류와 옵션 정보를 이용하여 미리 저장된 다양한 종류의 파일 시스템의 자료구조들 중 일치하는 파일 시스템의 자료 구조를 찾을 수 있다.
만약 파일 시스템이 ext3 파일 시스템일 경우, ext 3 파일 시스템의 레이아웃을 이루고 있는 자료구조는, 도 17에 도시된 바와 같이, 슈퍼블록, 그룹디스크립터, 블록비트맵, 아이노드비트맵, 아이노드테이블로 구성되어 있으며, 이 5가지 자료구조가 그룹을 지어 연속적으로 위치한다. 이때 포맷 옵션에 따라 레이아웃이 바뀌게 되기 때문에 슈퍼블록의 자료구조를 통해 옵션 정보를 알아낸 것이다.
한편 슈퍼블록은 모든 파일 시스템에서 1 블록을 차지한다. 따라서 파티션의 맨 앞 부분에서 1 블록크기만큼은 슈퍼블록이 된다. 슈퍼블록의 자료 구조를 통해 그룹디스크립터의 크기를 탐지한 후 그 크기만큼 슈퍼블록 이후로 읽어들인다.
그룹디스크립터 다음의 자료구조는 블록과 아이노드의 비트맵이다. 비트맵의 경우 각각 1블록의 크기를 갖고 있기 때문에 간단히 1블록씩 위치를 이동시켜 저장 장치 상의 자료구조 위치를 파악할 수 있다. 마지막으로 아이노드 테이블의 경우 역시 슈퍼블록과 그룹디스크립터를 통해 아이노드 테이블의 크기를 탐지한 후 크기만큼 저장 장치를 읽어들인다. 이와 같은 방식으로 ext3 파일 시스템의 하나의 블록 그룹에 대한 자료구조 레이아웃을 확인할 수 있다. 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법이 ext3 파일 시스템에만 국한되는 것은 아니다. 전술하였듯이, 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법은, 파일 시스템의 종류와 무관하게 적용될 수 있다.
그리고 파티션에 존재하는 블록그룹을 모두 확인한 후, 상기 획득된 파일 시스템의 자료구조의 레이아웃을 자료구조 형태로 저장할 수 있다.
전술한 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법에 의하면, 저장 장치의 최소 단위인 LBA 주소를 통해 구분하기 때문에 보다 정밀한 구분 방법이며, 파일 시스템과의 직접적인 설정 과정을 수행하지 않으므로 어떠한 포맷 형식에 따른 어떠한 파일 시스템이 탑재되어도 완벽히 파일 시스템의 레이아웃을 조사할 수 있다. 즉 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃 획득 방법에 의하면, 파일 시스템의 자료 구조를 직접 가져와서 파일 시스템의 레이아웃을 판독하는 것이 아니라, 저장 장치의 원하는 파티션을 통해 파일 시스템의 레이아웃을 판독하는 것이다. 따라서 원하는 위치의 파티션 상에 어떠한 파일 시스템이 존재하고 있는지를 알 필요가 없다.
상기에서 설명한 본 발명에 의한 저장 장치의 오류 발생 방법, 오류 발생 위치의 선택 방법 및 파일 시스템의 레이아웃 획득 방법은, 컴퓨터에서 실행시키기 위한 프로그램으로 컴퓨터로 읽을 수 있는 기록매체에 기록하여 제공될 수 있다.
본 발명에 의한 저장 장치의 오류 발생 방법, 오류 발생 위치의 선택 방법 및 파일 시스템의 레이아웃 획득 방법은 소프트웨어를 통해 실행될 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필요한 작업을 실행하는 코드 세그 먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독 가능 매체에 저장되거나 전송 매체 또는 통신망에서 반송파와 결합된 컴퓨터 데이터 신호에 의하여 전송될 수 있다.
컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는, ROM, RAM, CD-ROM, DVD±ROM, DVD-RAM, 자기 테이프, 플로피 디스크, 하드 디스크(hard disk), 광데이터 저장장치 등이 있다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 장치에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
도 1은 저장 장치를 구비한 전자 시스템의 일 예를 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법의 흐름도이다.
도 3은 도 1의 전자 시스템에서 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법이 실행되는 개념을 나타내는 개념도이다.
도 4는 본 발명의 일 실시예에 따른 저장 장치의 오류 발생 방법을 실행하는 실행 코드의 예를 도시한 도면이다.
도 5는 본 발명의 다른 실시예에 따른 저장 장치의 오류 발생 방법의 흐름도이다.
도 6은 도 1의 전자 시스템에서 본 발명의 다른 실시예에 따른 저장 장치의 오류 발생 방법이 실행되는 개념을 나타내는 개념도이다.
도 7은 섹터 번호 입력에 의해 오류 발생 위치를 선택하는 방법의 흐름도이다.
도 8은 hdb1 파티션 내에서 특정 섹터가 선택되는 개념도를 도시한 도면이다.
도 9는 복수 개의 오류를 동시에 발생시키기 위한 명령어의 예를 도시한 도면이다.
도 10은 랜덤 방식에 의한 오류 발생 위치를 선택하는 방법의 흐름도이다.
도 11은 랜덤 방식에 의해 복수 개의 오류 발생 위치를 선택하는 방법의 흐 름도이다.
도 12는 랜덤 방식에 의해 복수 개의 오류 발생 위치가 선택된 경우의 개념도이다.
도 13은 특정 파일에 대해 오류 발생 위치를 선택하는 방법의 흐름도이다.
도 14는 특정 파일 내의 블록인덱스 번호를 이용하여 블록번호를 구하는 방법의 예를 도시한 도면이다.
도 15는 저널의 자료구조에 대해 오류 발생 위치를 선택하는 방법의 흐름도이다.
도 16 및 도 17은 본 발명의 일 실시예에 따른 파일 시스템의 레이아웃을 획득하는 방법의 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
10: 전자 시스템 100: 저장 장치
110: 디바이스 드라이버 120: 파일 시스템
130: 사용자 애플리케이션

Claims (26)

  1. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서,
    상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및
    상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고,
    상기 위치 선택 단계는,
    상기 저장 장치의 특정 파티션의 첫번째 섹터의 LBA(Logical Block Addressing) 주소를 획득하는 단계;
    상기 획득된 LBA(Logical Block Addressing) 주소에 물리적 오류를 발생시키기 위한 특정 섹터의 섹터 순서를 더함으로써 상기 특정 섹터의 LBA(Logical Block Addressing) 주소를 획득하는 단계; 및
    상기 획득된 특정 섹터의 LBA(Logical Block Addressing) 주소를 이용하여 상기 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  2. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서,
    상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및
    상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고,
    상기 위치 선택 단계는,
    물리적인 오류를 발생시키기 위한 LBA(Logical Block Addressing) 주소 범위가 설정되는 단계; 및
    커널의 랜덤 함수를 이용하여 상기 설정된 LBA(Logical Block Addressing) 주소 범위 내에서 랜덤하게 특정 섹터가 선택됨으로써, 상기 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  3. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서,
    상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및
    상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고,
    상기 위치 선택 단계는,
    물리적인 오류를 발생시키기 위한 LBA(Logical Block Addressing) 주소 범위가 설정되는 단계;
    연속적으로 물리적 오류를 발생시키고자 하는 연속 오류 개수와 상기 연속 오류의 발생 개수가 결정되는 단계;
    상기 연속 오류를 포함하여 발생시키고자 하는 오류의 총 개수가 결정되는 단계; 및
    커널의 랜덤 함수를 이용하여 상기 설정된 LBA(Logical Block Addressing) 주소 범위 내에서 상기 연속 오류 개수, 상기 연속 오류의 발생 개수 및 상기 오류의 총 개수에 부합하는 개수만큼 랜덤하게 복수 개의 특정 섹터가 선택됨으로써, 상기 복수 개의 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  4. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서,
    상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및
    상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고,
    상기 위치 선택 단계는,
    특정 파일이 선택되는 단계;
    상기 선택된 특정 파일을 이루는 블록들 중 특정 블록이 선택되는 단계; 및
    상기 선택된 특정 블록에 포함된 적어도 하나의 특정 섹터가 선택됨으로써, 상기 적어도 하나의 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  5. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서,
    상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및
    상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고,
    상기 위치 선택 단계는,
    미리 저장된 상기 저장 장치의 파일 시스템 레이아웃(layout)을 이용하여 특정 섹터가 선택됨으로써, 상기 특정 섹터가 상기 오류 발생 위치로 선택되는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  6. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서,
    상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계; 및
    상기 선택된 오류 발생 위치에 해당하는 오류 정정 부호(ECC: Error Correction Code)가 기록된 영역에 더미 데이터(dummy data)를 기록함으로써 상기 오류 정정 부호를 변경하는 ECC 변경 단계를 포함하고,
    상기 위치 선택 단계는,
    저널의 자료 구조를 실시간으로 탐지하는 단계; 및
    상기 탐지된 저널 자료 구조 내에서 특정 섹터가 선택됨으로써, 상기 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 ECC 변경 단계는,
    WRITE_LONG 커맨드를 이용하여 상기 더미 데이터를 기록함으로써 상기 오류 정정 부호를 변경하는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  8. 제 7 항에 있어서,
    상기 ECC 변경 단계의 수행 후, 상기 오류 발생 위치에서 배드 섹터(bad sector)가 발생하였는지를 확인하는 오류 확인 단계를
    더 포함하는 저장 장치의 오류 발생 방법.
  9. 제 8 항에 있어서, 상기 오류 확인 단계는,
    상기 저장 장치의 상태 정보를 제공하는 스마트(SMART) 기능을 이용하여 상기 저장 장치의 배드 섹터(bad sector)의 개수가 증가되었는지를 확인함으로써 배드 섹터 발생을 확인하는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  10. 제 8 항에 있어서, 상기 오류 확인 단계는,
    상기 파일 시스템의 읽기 기능을 이용하여 상기 오류 발생 위치를 읽었을 때 상기 디바이스 드라이버의 에러 관련 함수로부터 오류 메시지(error message)가 출력됨을 확인함으로써 배드 섹터 발생을 확인하는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  11. 파일 시스템(file system), 디바이스 드라이버(device driver) 및 저장 장치(storage device)를 포함하는 전자 시스템에서 실행되는, 상기 저장 장치에 물리적인 오류를 발생시키는 방법에 있어서,
    상기 저장 장치에 물리적 오류를 발생시키기 위한 오류 발생 위치가 선택되는 위치 선택 단계;
    상기 저장 장치에 접근하는 패턴을 나타내는 접근 패턴과 상기 물리적 오류의 패턴을 나타내는 오류 패턴이 선택되는 패턴 선택 단계; 및
    상기 선택된 오류 발생 위치에 상기 접근 패턴으로 접근하여 상기 오류 패턴에 따른 오류를 발생시키는 오류 발생 단계를
    포함하는 저장 장치의 오류 발생 방법.
  12. 제 11 항에 있어서, 상기 위치 선택 단계는,
    LBA(Logical Block Addressing) 주소가 선택됨으로써 상기 오류 발생 위치가 선택되는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  13. 제 12 항에 있어서, 상기 위치 선택 단계는,
    특정 파티션의 첫 번째 섹터의 LBA 주소를 획득하는 단계;
    상기 획득된 LBA 주소에 물리적 오류를 발생시키기 위한 특정 섹터의 섹터 순서를 더함으로써 상기 특정 섹터의 LBA 주소를 획득하는 단계; 및
    상기 획득된 특정 섹터의 LBA 주소를 이용하여 상기 특정 섹터가 상기 오류 발생 위치로 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  14. 제 12 항에 있어서, 상기 위치 선택 단계는,
    물리적인 오류를 발생시키기 위한 LBA 주소 범위가 설정되는 단계; 및
    커널의 랜덤 함수를 이용하여 상기 설정된 LBA 주소 범위 내에서 랜덤하게 상기 오류 발생 위치가 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  15. 제 12 항에 있어서, 상기 위치 선택 단계는,
    물리적인 오류를 발생시키기 위한 LBA 주소 범위가 설정되는 단계;
    연속적으로 물리적 오류를 발생시키고자 하는 연속 오류 개수와 상기 연속 오류의 발생 개수가 결정되는 단계;
    상기 연속 오류를 포함하여 발생시키고자 하는 오류의 총 개수가 결정되는 단계; 및
    커널의 랜덤 함수를 이용하여 상기 설정된 LBA 주소 범위 내에서 상기 연속 오류 개수, 상기 연속 오류의 발생 개수 및 상기 오류의 총 개수에 부합하는 개수만큼 랜덤하게 복수 개의 상기 오류 발생 위치가 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  16. 제 12 항에 있어서, 상기 위치 선택 단계는,
    특정 파일이 선택되는 단계;
    상기 선택된 특정 파일을 이루는 블록들 중 특정 블록이 선택되는 단계; 및
    상기 선택된 특정 블록 내에서 적어도 하나의 상기 오류 발생 위치가 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  17. 제 12 항에 있어서, 상기 위치 선택 단계는,
    미리 저장된 상기 저장 장치의 파일 시스템 레이아웃(layout)을 이용하여, 상기 오류 발생 위치가 선택되는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  18. 제 12 항에 있어서, 상기 위치 선택 단계는,
    저널의 자료 구조를 실시간으로 탐지하는 단계; 및
    상기 탐지된 저널 자료 구조 내에서 상기 오류 발생 위치가 선택되는 단계를
    포함하는 저장 장치의 오류 발생 방법.
  19. 제 11 항에 있어서, 상기 접근 패턴은,
    읽기 접근, 쓰기 접근 및 인터페이스 접근 중 어느 하나인 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  20. 제 11 항에 있어서, 상기 오류 발생 단계는,
    상기 디바이스 드라이버에 의해 수행되는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  21. 제 20 항에 있어서, 상기 오류 발생 단계는,
    상기 디바이스 드라이버의 ide_do_rw_disk 함수에 의해 수행되는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  22. 제 11 항에 있어서,
    상기 접근 패턴을 해쉬키(Hash key)로 하여, 상기 오류 발생 위치와 상기 접근 패턴을 해쉬 테이블(Hash Table)로 저장하는 단계를
    더 포함하는 저장 장치의 오류 발생 방법.
  23. 제 22 항에 있어서, 상기 해쉬 테이블은,
    각 해쉬키 별로, 상기 오류 발생 위치가 오름차순으로 정렬되고 상기 오류 발생 위치의 최소값과 최대값을 갖는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  24. 제 23 항에 있어서, 상기 오류 발생 단계는,
    상기 해쉬 테이블을 이용하여 상기 오류를 발생시키는 것을 특징으로 하는 저장 장치의 오류 발생 방법.
  25. 제 23 항에 있어서,
    상기 전자 시스템의 특정 애플리케이션이 특정 접근 패턴으로 상기 저장 장치의 특정 위치로 접근할 때, 상기 특정 위치 및 상기 특정 접근 패턴을 이용하여 상기 해쉬 테이블을 검색하는 단계를
    더 포함하는 저장 장치의 오류 발생 방법.
  26. 제 11 항 내지 제 25 항의 어느 한 항의 방법을 컴퓨터로 실행시킬 수 있는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020070111787A 2007-11-02 2007-11-02 저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택방법 KR100925523B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070111787A KR100925523B1 (ko) 2007-11-02 2007-11-02 저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070111787A KR100925523B1 (ko) 2007-11-02 2007-11-02 저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택방법

Publications (2)

Publication Number Publication Date
KR20090045793A KR20090045793A (ko) 2009-05-08
KR100925523B1 true KR100925523B1 (ko) 2009-11-06

Family

ID=40855839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070111787A KR100925523B1 (ko) 2007-11-02 2007-11-02 저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택방법

Country Status (1)

Country Link
KR (1) KR100925523B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089031B2 (en) 2015-04-13 2018-10-02 Samsung Electronics Co., Ltd. Data storage and operating method thereof

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102410306B1 (ko) * 2018-01-29 2022-06-20 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10106170A (ja) 1996-09-27 1998-04-24 Toshiba Corp 光ディスク情報記録システム
KR19990021851A (ko) * 1996-03-25 1999-03-25 니시무로 타이죠 광 디스크의 교체 처리 방법 및 광 디스크 장치
KR100689720B1 (ko) 1998-12-09 2007-03-08 코닌클리케 필립스 일렉트로닉스 엔.브이. 유니트로 정보를 기록하는 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990021851A (ko) * 1996-03-25 1999-03-25 니시무로 타이죠 광 디스크의 교체 처리 방법 및 광 디스크 장치
JPH10106170A (ja) 1996-09-27 1998-04-24 Toshiba Corp 光ディスク情報記録システム
KR100689720B1 (ko) 1998-12-09 2007-03-08 코닌클리케 필립스 일렉트로닉스 엔.브이. 유니트로 정보를 기록하는 방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089031B2 (en) 2015-04-13 2018-10-02 Samsung Electronics Co., Ltd. Data storage and operating method thereof

Also Published As

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

Similar Documents

Publication Publication Date Title
US11068455B2 (en) Mapper tree with super leaf nodes
US11086774B2 (en) Address translation for storage device
JP4843604B2 (ja) データ・ストレージ装置からデータ・ストレージ装置特有情報を得るための方法及びシステム
US20180046553A1 (en) Storage control device and storage system
CN102929750B (zh) 非易失性介质肮脏区段跟踪
US10261705B2 (en) Efficient data consistency verification for flash storage
WO2017148242A1 (zh) 一种访问叠瓦式磁记录smr硬盘的方法及服务器
US7840877B2 (en) Mass storage system and method
US9170747B2 (en) Storage device, control device, and control method
JP2019028954A (ja) ストレージ制御装置、プログラム、及び重複排除方法
KR100925523B1 (ko) 저장 장치의 오류 발생 방법 및 오류 발생 위치의 선택방법
US11416155B1 (en) System and method for managing blocks of data and metadata utilizing virtual block devices
US11023341B2 (en) Injection of simulated hardware failure(s) in a file system for establishing file system tolerance-to-storage-failure(s)
KR100882904B1 (ko) 저장 장치의 오류 발생 시스템
JP2022142843A (ja) 制御装置及びデータ読出方法
US10592349B2 (en) Storage control device and storage apparatus
KR100907708B1 (ko) 저장 장치의 오류 복구 방법, 저장 장치의 정보 저장 방법,오류 복구 시스템 및 오류 저장 시스템
JP4288929B2 (ja) データストレージ装置及びデータストレージ方法
KR101293730B1 (ko) 디지털 증거물 데이터의 단위 복제 및 무결성 검증 방법
CN103700388A (zh) 文件记录装置、文件系统管理和恢复方法、更换驱动器
US11775175B2 (en) Storage system, storage management method, and storage management program
KR100818993B1 (ko) 블록 가상 할당을 이용한 파일 관리 장치 및 방법
US20180374510A1 (en) Image processing device, and operation method for image processing device
TWI453737B (zh) 資料儲存系統之管理方法
WO2006125024A1 (en) Method and apparatus for database unloading

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141008

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151012

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee