KR20090116725A - 호스트와 데이터 저장 디바이스 사이의 파일 전송 실패의 복구 - Google Patents

호스트와 데이터 저장 디바이스 사이의 파일 전송 실패의 복구 Download PDF

Info

Publication number
KR20090116725A
KR20090116725A KR1020097015676A KR20097015676A KR20090116725A KR 20090116725 A KR20090116725 A KR 20090116725A KR 1020097015676 A KR1020097015676 A KR 1020097015676A KR 20097015676 A KR20097015676 A KR 20097015676A KR 20090116725 A KR20090116725 A KR 20090116725A
Authority
KR
South Korea
Prior art keywords
data
storage device
host
peripheral storage
peripheral
Prior art date
Application number
KR1020097015676A
Other languages
English (en)
Other versions
KR101605907B1 (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 샌디스크 아이엘 엘티디
Publication of KR20090116725A publication Critical patent/KR20090116725A/ko
Application granted granted Critical
Publication of KR101605907B1 publication Critical patent/KR101605907B1/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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/14Error detection or correction of the data by redundancy in operation
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시예는, 호스트 디바이스로부터 주변 저장 디바이스로의 실패 또는 손상된 아웃고잉 데이터 전송 동작을 복구하기 위한 장치, 방법 및 검퓨터 판독 가능 매체에 관한 것이다. 몇몇 실시예에서, 주변 저장 디바이스가 실패한 아웃고잉 데이터 전송 동작에 의해 손상되기 전에, 하나 이상의 복구 데이터 객체가 호스트측에 저장된다. 주변 저장 디바이스가 실패한 데이터 전송에 의해 손상된 후, 호스트 디바이스는 하나 이상의 호스트측에 저장된 복구 데이터 객체를 이용하여 손상된 주변 저장 디바이스를 수리함으로써 주변 저장 디바이스와의 후속적인 결합에 응답한다. 선택적으로, 호스트 디바이스는 또한 아웃고잉 손상 또는 실패한 데이터 전송 동작을 복구한다.
아웃고잉 데이터 전송, 호스트 디바이스, 통신 링크, 호스트 인터페이스, 데이터 전송 관리자, 타깃 저장 디바이스, 사용자 데이터 영역, 시스템 데이터 영역

Description

호스트와 데이터 저장 디바이스 사이의 파일 전송 실패의 복구{RECOVERY OF A FAILED FILE TRANSFER BETWEEN A HOST AND A DATA STORAGE DEVICE}
본 발명은, 호스트(host)와 데이터 저장 디바이스(data storage device) 사이의 파일 전송 실패를 복구하기 위한 방법, 장치 및 컴퓨터 판독 가능 매체에 관한 것이다.
"주변 저장 디바이스(peripheral storage devices)"는 USB 플래시 드라이브(UFD); PC-카드; 그리고 디지털 카메라, 음악 플레이어, 휴대용 및 팜탑 컴퓨터,및 셀룰러 전화와 함께 사용된 소형 저장 카드(small storage cards)와 같은 형태로 컴퓨팅 기술에 잘 알려져 있다. 주변 저장 디바이스는 또한 범용 저장 디바이스 겸용인 휴대용 마그네틱 디스크(portable magnetic disks) 및 휴대용 디지털 어플라이언스(음악 플레이어 및 셀룰러 전화)를 포함한다.
호스트와 주변 저장 디바이스 사이의 데이터 전송(즉, 하나 이상의 데이터 객체들)의 프로세스는 전송이 완료되기 전에 방해되지 않아야 한다.
많은 UFD 디바이스가 어떠한 소정의 데이터 전송 동작의 완료시 시각적 표시를 제공한다. 예를 들어, 소정의 UFD 디바이스는 소정의 데이터 전송 동작의 완료시 반짝이는 빛을 포함한다.
예를 들어, 호스트 디바이스로부터 주변 저장 디바이스를 너무 일찍 분리함으로 인해 또는 전원 고장(a power failure) 또는 버퍼 오퍼플로우(buffer overflow)로 인해 데이터 전송 동작이 실패하는 경우가 종종 발생한다.
이러한 이벤트가 발생할 때, 실패한 파일 전송에 의해 정해진 목표인 "타깃" 주변 저장 디바이스에 존재하는 국부적으로 저장된 "저장-시스템 데이터 구조"를 손상시킬 위험성이 있다. 이러한 "위험 상태"인 저장 시스템 데이터 구조의 예는 파일 시스템 테이블(들)(예를 들어, FAT32 테이블)에 제한되지 않고 디렉토리 트리 데이터 구조, 및 플래시 맵핑 테이블을 포함하며, 이들 각각은 "타깃" 주변 저장 디바이스상에 "국부적으로" 존재할 수 있다. 불행히도, 이러한 손상은 저장 디바이스가 오류를 일으킬 수 있도록 할 수 있으며 따라서 평균적인 사용자가 디바이스를 사용하지 못하도록 한다.
도 1은 데이터 전송 동작의 실패가 발생할 수 있는 시스템의 블록도이다. 도 1의 예에서, 호스트 디바이스(10)(예를 들어, 퍼스널 컴퓨터, PDA, 또는 셀 폰)는 호스트-측 인터페이스(20)와 디바이스-측 인터페이스(55)(예를 들어, 각각의 USB 또는 SD 인터페이스) 사이의 통신 링크(15)를 통해 "타깃" 주변 저장 디바이스(50)(예를 들어, UFD와 같은 플래시 저장 디바이스 또는 MMC 또는 SD 카드와 같은 플래시 메모리 카드)에 결합된다. 전형적으로, 주변 저장 디바이스의 저장은 2개의 저장 영역(즉, 물리적 또는 논리적 로케이션들)-사용자 데이터(예를 들어, 하나 이상의 파일 또는 기타 데이터 객체들)가 저장되는 사용자-데이터 저장 영역(60)과 시스템 데이터가 저장되는 시스템 데이터 저장 영역(70)으로 나누어진다.
전형적으로, 주변 저장 디바이스(50)에 저장된 저장-시스템 데이터는 다양한 데이터 구조들(75A-B)(도 1에 도시된 것으로부터 변할 수 있는 다수의 구조)-예를 들어, FAT32 테이블과 같은 파일 시스템 테이블 또는 디렉토리 트리 또는 플레시 맵핑 테이블(들)을 기술하는 데이터 구조(들) 또는 기타 데이터 구조로 구성된다. 편의를 위해, 저장 시스템 데이터 구조들(75A-B)은 저장 시스템 데이터 구조들(75)로서 보다 일반적으로 언급될 수 있다.
정상적인 코스의 동작에서, 사용자 데이터가 타깃 저장 디바이스(50)에 기록되거나 지워질 때에는 언제나 하나 이상의 저장 시스템 데이터 구조(75)가, 예를 들어, 타깃 저장 디바이스(50)의 (도시되지 않은)컨트롤러에 의해 수정될 수 있다.
도 1에 도시된 바와 같이, 호스트 디바이스(10)로부터 타깃 주변 저장 디바이스(50)로 데이터(예를 들어, 하나 이상의 파일들 또는 다른 데이터 객체들)를 복사하거나 이동하기 위한 시도(5)가 이루어지며-호스트 디바이스(10)로부터 저장 디바이스(50)로 데이터를 전송하기 위한 시도는 호스트 디바이스(10)로부터 저장 디바이스(50)로 시도된 "아웃고잉" 인터-디바이스 데이터 전송으로서 언급된다.
도 1의 예에서, 인터-디바이스 데이터 전송 동작은 호스트 측에서 데이터-전송 관리자(25), 예를 들어, (예를 들어, 마이크로프로세서(89)에 의한)실행시 아웃고잉 데이터 전송 동작에 영향을 끼치는 (예를 들어, 파일-지향 저장 시스템 또는 객체 지향 저장 시스템의)저장-시스템 코드에 의해 관리된다. 특별한 한 예에서, 데이터-전송 관리자(25)는 동작 시스템 구성요소로서 제공된다.
일 예에서, 싱글 파일은 호스트 디바이스(10)로부터 저장 디바이스(50)로 복 사된다. 이러한 경우에, 사용자 데이터 영역(60)에 기록된 복사된 파일의 데이터 뿐만이 아니라, 시스템 데이터 영역(70) 내 다양한 데이터 구조가 갱신되어야 한다-예를 들어, 디렉토리 데이터 구조는 "새로운" 파일의 존재를 반영하도록 갱신되어야 하고, FAT 테이블이 갱신되어야 하며, 플래시 관리 테이블이 갱신되어야 한다.
데이터 전송 동작이 하나 이상의 저장 시스템 데이터 구조(75)를 갱신할 때(예를 들어, 너무 이른 디바이스 분리 또는 전원 고장 또는 버퍼 오버플로우 또는 기타 다른 원인으로 인해) 예상치 못하게 중단되면, 하나 이상의 "부분적으로 수정된" 저장 시스템 데이터 구조(75)를 손상시킬 위험성이 있다.
데이터 전송 동작 동안 시스템 데이터 영역(70) 내에서, 그러나 상기 시스템 데이터의 특별한 부분에서만, 모든 시스템 데이터를 재기록하는 것이 요구되지 않는 다른 시나리오가 존재한다. 하나의 시나리오에서, 타깃 저장 디바이스(50)에 존재하는 (예를 들어, FAT32 테이블의 다중 복사-동일할 필요 없음) 특별한 테이블의 다중 복사가 존재하고, 소정의 파일 전송 동작은 다른것을 수정함이 없이 이들 다중 테이블중 하나 또는 몇몇 만을 수정한다. 다른 시나리오에서, (예를 들어, 파일 시스템 테이블의 일부만) 저장-시스템 데이터 구조의 소정의 부분만이 수정되는 반면에, 저장-시스템 데이터 구조의 나머지는 수정되지 않는다. 또 다른 시나리오에서, 동일한 저장 시스템 테이블의 (예를 들어, "구" 버전 및 "신" 버전을 포함하는) 다중 중복 복사가 저장 디바이스(50) 상에 존재한다.
도 1의 예에서, 몇몇 저장 시스템 데이터 구조(즉, 저장 시스템 데이터 구조(75A))는 아웃고잉 데이터 전송(5)에 의해 수정되는 반면에, 다른 구조(즉, 저장 데이터 구조(75B))는 수정되지 않는다. 데이터 구조의 이러한 수정은 별모양 표시로 도면에 예시된다.
본 발명의 개시를 위해, 소정의 인터-디바이스 데이터 전송 동작 동안 수정되지 않는 시스템 데이터 영역(70)의 영역들은 저장 디바이스(50) 상의 "클린 로케이션"로서 지칭된다. 따라서, 시스템 데이터 구조(75B)가 존재하는 영역은 저장 디바이스(50) 상의 "클린 로케이션"의 한 예이다.
몇몇 데이터 전송 동작에서, 특별한 데이터 구조의 일부가 수정될 수 있는 반면에, 다른 부분은 수정되지 않는다는 것이 이해된다. 이들 "수정되지 않는" 부분이 존재하는 영역은 인터-디바이스 데이터 전송 동작에 의해 수정되지 않는 저장 디바이스(50) 상의 "클린 로케이션"의 다른 예이다.
타깃 주변 저장 디바이스를 손상시키는 호스트 디바이스로부터 타깃 주변 저장 디바이스로의 손상된 아웃고잉 인터-디바이스 데이터-전송 동작으로부터 복구하는 방법이 처음으로 개시되며, 상기 방법은 a)타깃 주변 저장 디바이스의 손상에 앞서 그리고 데이터-전송 동작의 시작을 위한 요청에 응답하여, i)손상된 데이터-전송 동작에 의해 후속적으로 손상되는 주변-디바이스-존재 저장-시스템 데이터 구조의 시스템 데이터와; ii) 손상된 아웃고잉 데이터-전송 동작에 의해 후속적으로 기록되지 않으며 시스템 데이터가 존재하는 주변 저장 디바이스상의 클린 로케이션에 대한 핸들(a handle)로 구성되는 그룹으로부터 선택된 적어도 하나의 복구 데이터 객체를 호스트측에 저장하는 단계; 그리고 b) 주변 저장 디바이스가 손상된 아웃고잉 데이터-전송 동작에 의해 손상된 후 발생하는 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, 호스트측에 저장된 적어도 하나의 복구 데이터 객체를 이용하여 손상된 주변 저장 디바이스를 수리하는 단계를 포함한다.
몇몇 실시예에 따라서, 주변-디바이스-존재 저장-시스템 데이터 구조는 주변 저장 디바이스의 디렉토리 트리를 기술한다.
몇몇 실시예에 따라서, 주변-디바이스-존재 저장-시스템 데이터 구조는 주변 저장 디바이스의 파일 시스템 테이블이다.
몇몇 실시예에 따라서, 주변-디바이스-존재 저장-시스템 데이터 구조는 주변 저장 디바이스의 플래시 맵핑 테이블이다.
몇몇 실시예에 따르면, 상기 방법은 c) 손상된 아웃고잉 인터-디바이스 데이터-전송 동작에 의한 타깃 주변 저장 디바이스의 손상에 앞서, 그리고 데이터-전송 동작 시작에 대한 요청에 응답하여, i) 데이터-전송 동작의 하나 이상의 데이터 객체의 하나 이상의 식별자의 기술(a description)과, ii) 인터-디바이스 데이터-전송 동작의 주변 저장 디바이스 타깃 로케이션 데이터중 적어도 하나를 호스트 측에 저장하는 단계; 그리고 d) 손상된 데이터-전송 동작 후, 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, c(i)의 기술과 c(ii)의 타깃 로케이션 데이터중 적어도 하나를 이용하여 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 단계를 더 포함한다.
몇몇 실시예에 따라서, 타깃 로케이션 데이터는 디렉토리 경로 데이터를 포함한다.
몇몇 실시예에 따라서, i) 적어도 하나의 복구 데이터 객체는 복수의 복구 데이터 객체가 주변 저장 디바이스 식별자들에 따라서 인덱스된 호스트측 인텍스 복구 데이터 구조 내에 저장되고, ii) 이러한 방법은 c) 주변 저장 디바이스가 손상된 데이터-전송 동작에 의해 손상된 후, i) 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, 주변 저장 디바이스의 디바이스 식별자를 검출하는 단계; 그리고 ii) 인덱스로서 주변 저장 디바이스의 검출된 디바이스 식별자를 이용하여 호스트측 인덱스된 복구 데이터로부터 타깃 디바이스의 적어도 하나의 복구 데이터 객체를 수신하는 단계를 더 포함한다.
몇몇 실시예에 따라서, i) 본 발명의 방법은 c) 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, 손상된 주변 저장 디바이스를 수리하기 위해 사용자 승인을 요청하는 단계를 더 포함하며, 그리고 ii) 단계(b)의 손상된 주변 저장 디바이스의 수리는 사용자 승인-요청에 응답하여 사용자 승인의 수신에 따라서 결정된다.
몇몇 실시예에 따라서, 단계 (b)의 수리는 어떠한 사용자 입력 없이 수행된다.
a) 주변 디바이스와 결합하기 위한 디바이스 인터페이스, b) 디바이스 인터페이스를 통해 인터-디바이스 데이터-전송 동작을 관리하기 위한 데이터-전송 관리자, c) A) 디바이스 인터페이스를 통해 호스트 디바이스에 결합되는 타깃 주변 디바이스와 함께, 그리고 B) 결합된 타깃 주변 디바이스를 후속적으로 손상시키는 손상된 아웃고잉 인터-디바이스 데이터-전송 동작에 앞서, 그리고 ii) 아웃고잉 인터-디바이스 데이터-전송 동작을 시작하도록 하는 요청에 응답하여, 디바이스 인터페이스의 호스트측에 iii) 손상된 데이터-전송 동작에 의해 후속적으로 손상된 주변-디바이스-존재 저장-시스템 데이터 구조의 시스템 데이터와 iv)손상된 데이터 전송 동작에 의해 후속적으로 기록되지 않고 시스템 데이터가 존재하는 주변 저장 디바이스상의 클린 로케이션에 대한 핸들로 이루어진 그룹으로부터 선택된 적어도 하나의 복구 데이터 객체를 저장하기 위해 동작하는 복구-데이터 보관기, 그리고 d)호스트측에 저장된 적어도 하나의 복구 데이터 객체를 이용하여 손상된 타깃 주변 저장 디바이스를 수리하기 위해 주변 저장 디바이스가 손상된 아웃고잉 데이터-전송 동작에 의해 손상된 후 발생하는 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여 동작하는 주변 디바이스 수리기를 포함하는 것이 처음으로 개시된다.
몇몇 실시예에 따라서, 시스템 데이터 구조는 주변 저장 디바이스의 디렉토리 트리를 기술한다.
몇몇 실시예에 따라서, 시스템 데이터 구조는 주변 저장 디바이스의 파일 시스템 테이블 데이터 구조이다.
몇몇 실시예에 따라서, 시스템 데이터 구조는 주변 저장 디바이스의 플래시 관리 테이블 데이터 구조이다.
몇몇 실시예에 따라서, 호스트 디바이스는 e)손상된 아웃고잉 인터-디바이스 데이터-전송 동작에 의해 타깃 주변 저장 디바이스의 손상에 앞서, 그리고 i) 데이터-전송 동작의 하나 이상의 데이터 객체중 하나 이상의 식별자의 기술, 그리고 ii) 인터-디바이스 데이터-전송 동작의 주변 저장 디바이스 타깃 로케이션 데이터중 적어도 하나를 디바이스 인터페이스의 호스트측에 저장하기 위해 동작하는 f) 데이터-트랜잭션 데이터-보관기, 그리고 i) 손상 데이터-전송 동작 후, 그리고 ii) e(i)의 기술과 e(ii)의 타깃 로케이션 데이터를 이용하여 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하기 위해 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여 동작하는 데이터-트랜잭션 복구기를 더 포함한다.
몇몇 실시예에 따라서, 타깃 로케이션 데이터는 디렉토리 경로 데이터를 포함한다.
몇몇 실시예에 따라서, i) 호스트 디바이스는 e)디바이스 인터페이스를 통해 결합된 타깃 주변 디바이스의 식별자를 검출하도록 동작하는 주변 디바이스 식별자-검출기를 더 포함하고, ii) 복구-데이터 보관기는 복수의 복구 데이터 객체가 주변 저장 디바이스 식별자에 따라서 인덱스되는 호스트측 인덱스 복구 데이터 구조 내에 적어도 하나의 복구 데이터 객체를 저장하기 위해 주변 저장 디바이스 식별자-검출기로부터 수신된 결합된 타깃 주변 디바이스의 식별자에 따라서 동작하며, iii) 호스트 디바이스는 f) 인덱스로서 결합된 타깃 주변 디바이스의 식별자를 이용하여 호스트측 인덱스 복구 데이터 구조로부터 타깃 주변 디바이스를 위해 적어도 하나의 복구 데이터 객체를 검색하기 위해 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여 동작하는 복구-데이터 검색기를 더 포함한다.
몇몇 실시예에 따라서, i) 호스트 디바이스는 f) 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, A) 손상된 주변 저장 디바이스를 수리하기 위해 사용자 승인을 위한 요청을 사용자에게 제공하고, B) 제공된 요청에 대한 응답을 수신하기 위해 동작하는 사용자 인터페이스를 더 포함하며, ii) 주변 디바이스 수리기는 제공된 요청에 대해 포지티브 응답 수신에 따른 방식으로 손상된 타깃 주변 저장 디바이스의 수리를 달성하기 위해 동작한다.
몇몇 실시예에 따라서, 주변 디바이스 수리기는 어떠한 수신된 사용자 입력에도 무관한 방식으로 타깃 주변 저장 디바이스의 수리를 달성하기 위해 동작한다.
타깃 주변 저장 디바이스를 손상시키는 호스트 컴퓨터 디바이스로부터 타깃 주변 저장 디바이스로의 손상된 아웃고잉 인터-디바이스 데이터-전송 동작으로부터 호스트 컴퓨터가 복구하도록 하기 위한 컴퓨터 판독 가능 프로그램 코드가 저장된 컴퓨터 판독 가능 매체가 처음으로 개시되며, 프로그램 코드는 프로세서로 하여금 a) 타깃 주변 저장 디바이스의 손상에 앞서 그리고 데이터-전송 동작을 시작하도록하는 요청에 응답하여, i) 손상된 데이터-전송 동작에 의해 후속적으로 손상된는 주변-디바이스-존재 저장-시스템 데이터 구조의 시스템 데이터, 그리고 ii) 손상된 아웃고잉 데이터-전송 동작에 의해 후속적으로 기록되지 않으며 시스템 데이터가 존재하는 주변 저장 디바이스의 클린 로케이션에 대한 핸들로 구성된 그룹으로부터 선택된 적어도 하나의 복구 데이터 객체를 호스트측에 저장하며, 그리고 b) 주변 저장 디바이스가 손상된 아웃고잉 데이터-전송 동작에 의해 손상된 후 발생하는 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, 호스트측에 저장된 적어도 하나의 복구 데이터 객체를 이용하여 손상된 주변 저장 디바이스를 수리하도록 할 수 있다.
몇몇 실시예에 따라서, 주변-디바이스-존재 저장-시스템 데이터 구조는 주변 저장 디바이스의 디렉토리 트리를 기술한다.
몇몇 실시예에 따라서, 주변-디바이스-존재 저장-시스템 데이터 구조는 주변 저장 디바이스의 파일 시스템 테이블이다.
몇몇 실시예에 따라서, 주변-디바이스-존재 저장-시스템 데이터 구조는 주변 저장 디바이스의 플래시 맵핑 테이블이다.
몇몇 실시예에 따라서, 프로그램 코드는 또한 프로세서로 하여금 c)손상된 아웃고잉 인터-디바이스 데이터-전송 동작에 의해 타깃 주변 저장 디바이스의 손상에 앞서, 그리고 데이터-전송 동작에 대한 시작 요청에 응답하여, i) 데이터-전송 동작의 하나 이상의 데이터 객체의 하나 이상의 식별자의 기술, 그리고 ii)인터-디바이스 데이터-전송 동작의 주변 저장 디바이스 타깃 로케이션 데이터중 적어도 하나를 호스트측에 저장하고, d)손상 데이터-전송 동작 후, 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, c(i)의 기술과 c(ii)의 타깃 로케이션 데이터중 적어도 하나를 이용하여 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하도록 한다.
몇몇 실시예에 따라서, 타깃 로케이션 데이터는 디렉토리 경로 데이터를 포함한다.
몇몇 실시예에 따라서,
i) 프로그램 코드는 적어도 하나의 복구 데이터 객체가 복수의 복구 데이터 객체가 주변 저장 디바이스 식별자에 따라서 인덱스되는 호스트측 인덱스 복구 데이터 구조 내에 저장되도록 동작하고, ii) 프로그램 코드는 프로세서가, c) 중단된 데이터 전송 동작에 의해 주변 저장 디바이스가 손상된 후, i) 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, 주변 저장 디바이스의 디바이스 식별자를 검출하고, ii) 인덱스로서 주변 저장 디바이스의 검출된 디바이스 식별자를 이용하여 호스트측 인덱스 복구 데이터 구조로부터 타깃 디바이스의 적어도 하나의 복구 데이터 객체를 수신하도록 추가 작동할 수 있다.
몇몇 실시예에 따라서, i) 프로그램 코드는 또한 프로세서로 하여금 c) 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여 손상된 주변 저장 디바이스를 수리하기 위해 사용자 승인을 요청하도록 하며, ii) 프로그램 코드는 단계 (b)의 손상된 주변 저장 디바이스의 수리가 사용자 승인-요청에 응답하여 사용자 승인을 수신하는지에 따르도록 동작할 수 있다.
몇몇 실시예에 따라서, 프로그램 코드는 프로세서에 의한 실행시, 단계(b)의 수리가 어떠한 사용자 입력없이 수행될 수 있도록 동작할 수 있다.
주목해야 할 것은 소정의 실시예와 관련하여 전술한 특징들은 이하 다르게 표시되지 않는 한, 다른 실시예들에 포함될 수 있다는 것이다.
도 1은 배경 기술에 따른 예시적인 시스템의 블록도.
도 2A, 3 및 4는 몇몇 예시적인 실시예에 따른 실패한 데이터 전송 동작을 복구하기 위한 루틴의 흐름도.
도 2B 및 5A-5C는 몇몇 예시적인 실시예에 따른 실패한 데이터 전송 동작을 복구하기 위한 예시적인 시스템 구성의 블록도.
이하 청구항은 도면을 참조하여 예시적인 실시예의 제공된 상세한 기술을 참조하여 보다 잘 이해될 것이다. 기술, 실시예 및 도면은 청구항의 범위를 제한하는 것으로 간주되지 않는다. 실패 또는 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하기 위한 현재 개시된 방법, 장치, 그리고 컴퓨터 코드가 저장된 컴퓨터 판독 가능 매체의 모든 특징이 모든 구현에 있어서 필요하지 않다는 것이 이해되어야 한다. 프로세서 또는 방법이 도시되거나 기술되는 이러한 개시에 걸쳐서, 하나의 단계가 다른 우선적으로 수행될 단계에 의존한다는 것이 문맥으로부터 분명하지 않는 한 방법의 단계들이 어떠한 순서 또는 동시에 수행될 수 있다는 것이 또한 이해되어야 한다. 본 출원 전반에 사용된 바와 같이, "할 수 있는"이라는 용어는 의무적인 의미(즉, "해야만 하는")가 아니라, 허용의 의미(즉, "~에 대한 잠재력을 갖는")로 사용된다.
본 발명의 실시예는 호스트 디바이스로부터 주변 저장 디바이스로 실패 또는 손상된 아웃고잉 데이터 전송 동작을 복구하기 위한 장치, 방법 및 컴퓨터 판독 가능 매체에 관한 것이다. 몇몇 실시예에서, 주변 저장 디바이스가 실패한 아웃고잉 데이터 전송 동작에 의해 손상되기 전에, 하나 이상의 복구 데이터 객체가 호스트측에 저장된다. 주변 저장 디바이스가 실패한 데이터 전송에 의해 손상된 후, 호스 트 디바이스는 호스트측에 저장된 복구 데이터 객체중 하나 이상을 이용하여 손상된 주변 저장 디바이스를 수리함으로써 주변 저장 디바이스와 후속적인 결합에 응답한다. 선택적으로, 호스트 디바이스는 또한 후속적인 결합에 응답하여 아웃고잉 손상 또는 실패한 데이터 전송 동작을 복구한다.
정의
편의를 위해, 본 명세서의 기술에 있어서, 다양한 용어들이 제공된다. 정의들이 본 출원서에 명시적으로 또는 암시적으로 제공되는 한, 이러한 정의는 당업자(들)에 의해 정의된 용어들의 용법과 일치할 것이라는 것이 이해된다. 더욱이, 이러한 정의는 이러한 용법과 일치하는 가장 넓은 가능한 의미로 간주될 것이다.
'주변 저장 디바이스'는 디바이스 하우징(a device housing)과 주변 저장 디바이스가 호스트 디바이스와 "결합(couple)"할 수 있고 호스트 디바이스와 데이터를 교환할 수 있는 "접점(contact)" 또는 접점없는 디바이스 인터페이스를 갖는 디바이스를 지칭한다. 비제한적인 일례에서, 주변 저장 디바이스는 호스트 디바이스의 하우징의 포트(즉, 플러그 또는 소켓)에 역으로 탈착 가능하거나 몇몇 종류의 중개 외부 케이블 또는 외부 크래들을 통해 역으로 탈착 가능하다.
주변 저장 디바이스는 '호스트측'과 '주변측'을 갖는 '마스터-슬레이브' 통신 프로토콜을 이용하여 자신의 호스트와 통신한다. "마스터-슬레이브" 프로토콜의 예는 USB(Universal Serial Bus) 프로토콜, 멀티미디어카드(MultiMediaCard : MMC) 프로토콜, 그리고 SD(Secure Digital) 프로토콜을 포함하지만 이에 제한되지 않는다.
'호스트'와 '주변 저장 디바이스'가 '결합'될 때, (i) 이들은 데이터가 '포인트-투-포인트' 데이터 링크를 통해 호스트와 주변 저장 디바이스간에 흐를 수 있도록 '포인트-투-포인트' 데이터 링크('유선 접속' 또는 매개 라우팅 디바이스를 위한 어떠한 필요성도 없는 근거리 무선 링크)를 통해 서로 통신하며, (ii) 이들은 '마스터-슬레이브' 프로토콜을 이용하여 통신하도록 구성된다 - 즉, 호스트는 '호스트'내 주변 저장 디바이스 또는 프로토콜에 의해 정의된 마스터 역활에 의해 통신되도록 구성되며 주변 저장 디바이스는 '슬레이브'내 호스트 또는 프로토콜에 의해 정의된 주변 역활에 의해 통신되도록 구성된다.
호스트 디바이스로부터 주변 저장 디바이스로의 "인터-디바이스 아웃고잉 데이터-전송 동작"은 호스트 디바이스(예를 들어, 랩탑, 데스크탑, 셀폰, PDA 등)로부터 하나 이상의 "타깃" "데이터 객체"가 주변 저장 디바이스, 특히 특정된 "타깃" 로케이션(물리적 또는 논리적) 또는 주변 저장 디바이스상의 로케이션의 세트로 복사 또는 이동하는 것을 지칭한다. 비제한적인 일례에 있어서, "타깃" "데이터 객체"는 컴퓨터 파일이다. 타깃 데이터 객체의 다른 예는 컴퓨터 레코드, 폴더, 주소록(또는 이들의 일부), 그리고 디지털 미디어 객체(예를 들어, 영화, 음악 앨범, 이미지 등)을 포함하지만 이에 제한되지 않는다. "타깃" 로케이션은 폴더, 디렉토리(예를 들어, 디렉토리 트리내), 섹터, 블록 또는 어떠한 종래의 알려진 다른 방식으로 특정될 수 있다.
"인터-디바이스 데이터-전송" 동작의 비제한적인 일례는 호스트 디바이스와 주변 저장 디바이스 사이의 하나 이상의 파일들중 하나의 파일을 전송하는 동작이 다. "인터-디바이스 데이터-전송" 동작의 비제한적인 다른 예는 미디어 전송 프로토콜(Media Transfer Protocol : MTP)을 포함하지만 이에 제한되지 않는 소위 객체 지향 저장 프로토콜을 이용하여 호스트 디바이스와 주변 저장 디바이스 사이의 하나 이상의 데이터 객체(들)의 전송이다.
호스트로부터 주변 저장 디바이스로 "아웃고잉" 인터-디바이스 데이터-전송 동작은 하나 이상의 데이터 객체(들)(파일들을 포함하지만 이에 제한되지 않는)이 호스트 디바이스로부터 주변 저장 디바이스로 이동되거나 복사되는 데이터-전송 동작을 지칭한다. 편의를 위해, 용어 "아웃고잉"은 또한 인터-디바이스 데이터-전송 동작의 방향을 표시하기 위해, 즉, 호스트 디바이스로부터 주변 저장 디바이스로의 방향을 표시하기 위해 자체적으로 사용될 수 있다.
호스트 디바이스는 소정의 시간에 하나 이상의 주변 저장 디바이스에 결합될 수 있다는 것이 이해되어야 한다. 어떠한 소정의 데이터 전송의 "타깃" 또는 "목적지(destination)" 주변 디바이스는 하나 이상의 데이터 객체(들)을 복사하거나 전송하기 위해 어떠한 시도가 이루어지는 주변 디바이스이다.
도 2A-2B의 논의: 서론
도 2A는 몇몇 실시예에 따른 실패 또는 손상된 아웃고잉 인터-디바이스 데이터 전송 동작을 다루기 위한 예시적인 기법을 기술하는 흐름도이다. 주목해야 할 것은 도 2A에서 단계들의 순서는 단지 예시적인 것이며, 다른 순서로 수행되는 실시예들이 본 발명의 발명자에 의해 또한 고려될 수 있다. 이것은 도 2A에 대해서 뿐만이 아니라, 루틴의 흐름도를 기술하는 어떠한 다른 도면(예를 들어, 도 3 및 도 4)에 대해서도 사실이다.
도 2A에 기술된 루틴은, 예를 들어, 도 2B의 블록도에 기술된 시스템에서 수행될 수 있다. 주목해야 할 것은 현재-논의된 블록도 도 2B(또는 이하 논의될 도 5A-5C의 블록도에서)에 나타나는 어떠한 소자, 예를 들어, 데이터 전송 관리자(25), 디바이스 수리기(40), 디바이스 인터페이스(20), 그리고 복구 데이터 보관기(30)는 하드웨어, 펌웨어 및/또는 소프트웨어의 어떠한 조합으로 구현될 수 있다는 것이다. 몇몇 실시예에서, 소프트웨어는 프로세서(89)에 의해 실행될 수 있다.
따라서, 도 2A의 기법을 참조하면, 단계(S201)에서, 호스트 디바이스(10)는 제거가능한 저장 디바이스(50)와 결합된다. 후속적으로, 단계(S205)에서, 호스트 디바이스(10)는 데이터 전송 동작을 달성하기 위한 요청, 예를 들어, 인터-디바이스 통신 링크(15)를 통한 "타깃" 저장 디바이스(50)로 하나 이상의 파일을 복사하는 것은 것과 같은 요청을 검출한다. 요청은 어떠한 소스, 예를 들어,호스트 디바이스(10)에 연결된 마우스 및/또는 키보드 또는 어떠한 다른 소스로부터 올 수 있다.
도 2A-2B의 논의: 복구 데이터 객체의 논의
단계(S209)에서, 데이터 전송 동작을 달성하기 위해 검출된 요청에 응답하여, 하나 이상의 복구 데이터 객체(들)가 호스트측에 저장된다. 하나 이상의 복구 데이터 객체(들)가 후에 단계(S241)에서 사용되어 주변 저장 디바이스가 단계(S217)에서 손상된 후 주변 저장 디바이스를 수리한다. 복구 데이터 객체(들)가 이제 보다 상세히 기술될 것이다.
비제한적인 일례에서, 타깃 주변 저장 디바이스(50) 상에 존재하는 하나 이상의 데이터 저장 시스템 데이터 구조(또는 이들의 일부)가 호스트측에 "반사"된다-예를 들어, 호스트 디바이스(10)의 휘발성 또는 비휘발성 메모리 또는 호스트 디바이스의 어떠한 다른 로케이션내에 저장된다. 따라서, 본 발명의 예에서, 단계(S213)에서 아웃고잉 데이터 전송 동작을 시작하기 전에, 아웃고잉 데이터 전송 동작에 의해 잠재적으로 손상을 입을 수 있는 저장-시스템 데이터의 "백업"이 호스트측에서 이루어진다.
다른 실시예에서, 저장-시스템 데이터를 반사하기 보다, 주변 저장 디바이스상의 "클린 로케이션"의 "핸들" 또는 기술을 호스트측에 저장하기에 충분하다. 이러한 "핸들"은 주변 저장 디바이스(50)의 시스템 데이터 영역(70) 내 "클린" 물리적 또는 논리적 로케이션을 기술한다.
"핸들"의 비제한적인 일례는 물리적 또는 논리적인 어드레스이다. "핸들"의 다른 비제한적인 예는 주변-디바이스-존재 데이터 객체의 식별자이며, 객체는 주변 저장 디바이스(50)의 시스템 데이터 영역(70) 내 특별한 로케이션와 연관되거나 존재한다.
따라서, 비제한적인 일례에서, 파일 액세스 테이블(FAT 테이블)의 2 복사("제 1" 복사와 "제 2" 복사)는 타깃 저장 디바이스(50)의 시스템 데이터 영역(70)(즉, 논리적 또는 물리적 영역) 내에 존재한다. 본 발명의 예에서, FAT 테이블의 제 1 복사(즉, "복사 A")만이 수정가능하며 따라서 아웃고잉 데이터 전송 동작에 의해 손상될 수 있는 반면에, FAT 테이블의 제 2 복사는 파일 전송 동작 동안 수정 및/또는 중복 기록되지 않는다는 것이 알려져 있다. 따라서, FAT 테이블의 제 2 복사가 존재하는 영역(즉, 논리적 또는 물리적 영역)은 "클린 로케이션"의 예이다. 본 발명의 비제한적인 예에서, 호스트측에 이러한 클린 로케이션에 대한 "핸들"을 저장하는 것이 가능하다-이러한 "핸들"은 객체 식별자 "복사 B"만큼 간단하거나, 어드레스("복사 B"가 존재하거나 물리적 또는 논리적 어드레스를 특정하는 어떠한 다른 방법인 블록(들)의 목록에 의해)일 수 있거나, 또는 "복사 B"의 어떠한 다른 기술 및/또는 복사 B가 존재하는 로케이션일 수 있다.
주목해야 할 것은 전술한 예들이 단계(S241)에서 주변 저장 디바이스의 후속적인 수리를 위해 필요한 "최소 데이터"를 표시하기 위해 제공되는 것이다. 몇몇 실시예에서, 이러한 최소 데이터 이상이 단계(S209)에서 호스트측에 저장될 수 있으며 후에 주변 저장 디바이스가 수리될 때 단계(S241)에서 사용될 수 있다는 것이 이해된다.
일례에서, 후속적인 데이터-전송 동작에서 수정되지 않는 주변-저장-디바이스-존재 저장-시스템 테이블 또는 저장-시스템 테이블의 섹션이 또한 아웃고잉 데이터 전송 동작을 시작하기 전에 호스트측에 복사된다.
따라서, 호스트 디바이스가 저장-시스템 데이터가 후속적인 아웃고잉 데이터 전송 동작에 의해 수정될 것인지 앞서 명확히 판단할 필요가 없다는 것이 이해된다. 그러나, 몇몇 실시예에서, 호스트측이 앞서 이러한 판단을 하는 것이 유리할 수 있다. 소정의 상황에서, 이것은, 예를 들어, 호스트측에 복사할 저장 시스템 데이터 주변 디바이스(50)의 양을 최소화하기 위해 유용할 수 있다.
비제한적인 일례에서, 단계(S209)에서 하나 이상의 복구 데이터 객체(들)의 저장은 도 2b의 복구 데이터 보관기(30)에 의해 수행될 수 있으며, 이것은, 예를 들어, 호스트 디바이스의 프로세서에 의해 실행되는 소프트웨어 에이전트로서 제공될 수 있다.
주목해야 할 것은 단계(S209)에서 저장된 하나 이상의 복구 데이터 객체(들)이 호스트 디바이스상의 어떠한 로케이션 또는 "호스트측"상의 어떠한 다른 로케이션내에 저장될 수 있다-이러한 로케이션은 "복구 데이터 보관(35)"으로서 지칭된다. 따라서, 비록 복구 데이터 보관(35)이 호스트 디바이스(10) 상에 존재하는 것으로 도 2B에 도시된다고 하더라도, 복구 데이터 보관(35)은 호스트 디바이스(10)로부터 분리될 수 있다. 복구 데이터 보관(35)은 호스트 디바이스(10)의 휘발성 메모리(예를 들어, RAM) 및/또는 비휘발성 메모리의 어떠한 조합, 예를 들어, 타깃 저장 디바이스(50)를 제외한 비휘발성 메모리 디바이스로 구현될 수 있다. 복구 데이터 보관(35)이 타깃 저장 디바이스(50)가 아닌 비휘발성 메모리 디바이스에 존재하는 예에서, 호스트 디바이스는 복구 데이터 보관(35)이 (도시되지 않은) 상이한 디바이스 인터페이스, 즉 호스트측 인터페이스(20)가 아닌 호스트측 인터페이스를 통해 존재하는 이러한 (도시되지 않은)"다른 비휘발성 메모리 디바이스"와 결합될 수 있다. 그럼에도 불구하고, (도시되지 않은)이러한 "다른 비휘발성 메모리 디바이스"는 있는 그대로 호스트(10)와 타깃 저장 디바이스(50) 사이의 통신 링크(15)의 "호스트측"에 존재한다는 것이 이해된다.
단계( S213 - S241 )의 논의
단계(S213)에서, 아웃고잉 데이터 전송 동작이 시작된다. 이러한 아웃고잉 데이터 전송 동작은 주변 저장 디바이스(50)를 손상시키는 방식으로 단계(S217)에서 예상치 못하고/너무 일찍 손상된다.
주목해야 할 것은 손상된 파일 전송 동작은 또한 호스트 디바이스로부터 주변 저장 디바이스를 "결합해제" 또는 "결합되지 않도록" 제공될 수 있어 적어도 몇몇 시 사이의 주기동안 주변 저장 디바이스는 호스트 디바이스와 데이터를 교환할 수 있다. 예를 들어, 이것은 전원 고장 또는 자신의 호스트측 포트 또는 버퍼 오버플로우로부터 주변 저장 디바이스의 분리에 기인할 수 있다.
(단계 S217에서) 주변 저장 디바이스의 손상에 이어서, 주변 저장 디바이스는 단계(S223)에서 호스트 디바이스와 재결합된다. 이 시점에서, 손상된 주변 저장 디바이스(50)는 다시 한번 호스트 디바이스(10)와 통신한다.
단계(S241)에서, 재결합의 검출에 응답하여, 호스트 디바이스(10)는 주변 저장 디바이스를 수리하도록 작용한다. 일례에서, 이것은 디바이스 수리기(40)에 의해 수행될 수 있으며, 이것은, 예를 들어, 호스트 디바이스(10)의 프로세서에 의해 실행되는 소프트웨어 에이전트로서 제공될 수 있다.
단계(S241)에서, 하나 이상의 호스트측에 저장된 복구 데이터 객체(들)은 호스트측상의 휘발성 및/또는 비휘발성 메모리로부터 검색된다. 몇몇 실시예에서, 하나 이상의 복구 데이터 객체(들)은 복구 데이터 보관(35)으로부터 검색된다.
하나 이상의 복구 데이터 객체(들)이 검색된 후, 하나 이상의 복구 데이터 객체(들)가 주변 저장 디바이스를 수리하기 위해 사용된다. 일례에서, 저장 시스템 데이터 구조(75) 또는 단계(S209)에서 호스트측에 복사된 이들의 일부가 디바이스를 수리하기 위해 주변 저장 디바이스(50)로 다시 복사된다.
또 다른 예에서, 주변 디바이스(50) 상의 클린 로케이션에 대한 핸들은 "손상되지 않은" 복사 또는 주변 디바이스(50) 상의 클린 로케이션내 손상된 데이터의 버전을 검색하기 위해 사용된다. 그 다음, 이러한 검색된 데이터는 주변 저장 디바이스(50)를 수리하기 위해 사용될 수 있다. 일례에서, 하나 이상의 손상된 저장 시스템 데이터 구조(75)가 검색된 데이터를 이용하여 수리된다. 비제한적인 다른 예에서, 손상된 저장 시스템 데이터 구조(75A*)(도 2B내 별표는 손상을 나타냄)는 "사용불가"로서 주변 저장 디바이스(50) 상에 표시되고 주변 저장 디바이스(50)의 시스템 데이터 영역(70)에서 손상된 데이터 구조에 대한 "포인터"는 손상되지 않은 데이터 구조(예를 들어, 75B)에 대한 포인터로 대체된다.
특별한 비제한적인 일례에서, 아웃고잉 데이터 전송 동작의 개시(S213) 전에 주변 저장 디바이스(50)의 상태를 나타내는 타깃 저장 디바이스(50)의 영역(70) 내에 저장된 저장-시스템 데이터가 유지된다. 이것은 손상된 데이터 전송 동작에 의해 주어지는 "손상의 복구"를 허용한다.
도 3 및 데이터 전송 동작의 "복구"의 논의
본 발명의 개시를 위해, "데이터 전송 동작 복구"는 아웃고잉 데이터 전송 동작(즉, 단계(S213)에서 시도되는)에 의해 특정되는 "타깃" 데이터 객체(들)이 주변 저장 디바이스(50) 상의 "타깃 로케이션(들)"로 복사 및/또는 이동되도록 단 계(S213)에서 주변 저장 디바이스(50)와 재결합한 후 호스트 디바이스에 의한 조치를 지칭한다.
따라서, 타깃 주변 디바이스로 부분적으로 전송되는(즉, 이동되거나 복사되는) 어떠한 데이터 객체에 대해, "데이터 전송 동작 복구"는, 예를 들어, 주변 저장 디바이스(50) 상의 타깃 로케이션(들)로 부분적으로 재전송된 데이터 객체를 재전송하는 단계를 포함할 수 있다.
몇몇 예에서, 데이터 전송 동작에 의해 특정된 하나 이상의 데이터 객체(들)은 손상되거나 실패한 시도된 데이터 전송 동작 동안 주변 저장 디바이스(50)로 부분적으로 조차 전송되지 않을 수 있다. 한 사용의 경우에, 손상된 데이터 전송 동작은 하나 이상의 데이터 객체(들)를 타깃 저장 디바이스(50)에 기록하기 위한 시도를 한다. 이러한 예에서, (i)하나 이상의 데이터 객체들이 전체적으로 타깃 저장 디바이스(50)에 "성공적으로" 기록될 수 있으며, (ii)하나 이상의 데이터 객체들이 타깃 저장 디바이스(50)에 "부분적으로" 기록될 수 있고, (iii)하나 이상의 객체가 타깃 주변 저장 디바이스(50)에 부분적으로 조차 기록될 수 없을 수도 있다. 이러한 예에서, 따라서 데이터 전송 동작을 복구하기 위한 단계는 (i)'각각의 "성공적으로" 기록된 데이터 객체에 대해, 아무것도 하지 않거나 주변 저장 디바이스(50)에 데이터 객체를 재기록하는 단계, (ii) '각각의 "부분적으로" 전송된 데이터 객체에 대해, "스크래치로부터" 데이터 객체를 재기록하거나 "데이터 객체를 기록하는 손상된 프로세스를 완료"하는 단계, 그리고 (iii) '각각의 '기록되지 않은' 데이터 객체에 대해, 데이터 객체를 주변 저장 디바이스(50)에 성공적으로 기록하는 단계를 포함한다. (i), (ii), 및 (iii) 중 하나 이상만이, (i)', (ii)', 및 (iii)' 중 적절한 것이 수행될 필요가 있다.
몇몇 실시예에서, 주변 저장 디바이스를 수리한 후 아웃고잉 데이터 전송 동작을 "자동으로" 복구하는 것이 바람직한다. 따라서, 이러한 아웃고잉 데이터 전송 동작의 복구는 주변 저장 디바이스(50)에 호스트 디바이스(10)를 재결합하는 것에 응답하여 자동으로 수행될 수 있다. 예를 들어, 이것은 주변 저장 디바이스(50)의 수리시 데이터 객체(들) 및/또는 타깃 로케이션(들)을 재특정하는 지루한 태스크로부터 사용자를 여유있게 하기에 유용할 수 있다.
참조가 도 3에 대해 이루어졌다. 단계(S201, S205, S213, S217, S223 및 S241)는 도 2A 및 도 3에서 동일하다.
도 3의 루틴은 도 2A의 루틴에 없는 2개의 추가적인 단계, 단계(S211 및 S245)를 추가한다.
단계(S211)에서, 아웃고잉 데이터 전송 동작의 시작 전에, 하나 이상의 "데이터 전송 동작 복구 객체"가 호스트측, 예를 들어, 휘발성 및/또는 비휘발성 메모리에 저장된다. 이들 "데이터 전송 동작 복구 객체"는 데이터 전송 복구(245)를 복구하기 위해 단계(S245)에서 후에 사용될 것이다.
데이터 복구 객체들은 i) 데이터-전송 동작의 하나 이상의 객체들(예를 들어, 파일명 및/또는 다른 데이터 객체의 이름 및/또는 객체가 호스트 디바이스상에 존재하는 로케이션 등)중 하나 이상의 식별자의 기술, 그리고 ii) 인터-디바이스 데이터-전송 동작(예를 들어, 하나 이상의 타깃 경로의 디렉토리 경로 데이터 또는 다른 "목적지" 로케이션 정보)의 주변 저장 디바이스 타깃 로케이션 데이터중 하나 이상을 포함한다.
이들 "데이터 복구 객체들"은 호스트측(호스트 디바이스 자체적으로 선택적이지만 필수적이지 않은) 상의 어떠한 로케이션, 휘발성 및/또는 비휘발성 메모리의 임의의 조합 내에 저장될 수 있다.
단계(S245) 동안, 데이터 복구 객체(들)이 데이터 전송 동작을 복구하기 위해 사용된다. 예를 들어, 식별자가 단계(S211)에서 저장되는 다양한 파일 또는 다른 데이터 객체들이 (i) 호스트측으로부터 검색되고 (ii) 타깃 주변 저장 디바이스(50), 예를 들어, 단계(S211)에서 호스트측에 저장된 하나 이상의 타깃 로케이션에 기록될 수 있다.
도 4 및 데이터 전송 동작의 "복구"의 논의
도 4는 소정의 호스트 디바이스(10)가 하나 보다 많은 주변 저장 디바이스(50)와 결합하고, 각각의 주변 저장 디바이스(50)에 의해 각각의 주변 저장 디바이스(50)를 결국에 실패하고 손상시키는 각각의 아웃고잉 데이터-전송 동작을 시도하는 사용 경우에 관한 것이다.
이후, 주변 저장 디바이스(50)의 하나와 후속적인 결합에 응답하여(즉, 다중 실패 아웃고잉 데이터 전송 동작에 참여할 수 있는) 호스트 디바이스(10)는 "특별한" 주변 저장 디바이스(50)를 식별하고 "기억"(즉, '특별한' 저장 디바이스의 손상된 데이터 전송 동작 전후에 다른 손상된 데이터 전송 동작에 참여하는 다른 주변 저장 디바이스와 특별한 주변 저장 디바이스를 "혼동"함이 없이)하며 따라서 특 정한 재결합된 주변 저장 디바이스(50)와 연관된 "정정" 복구 데이터 객체(들)를 이용하여 후속적으로-결합된 손상 주변 저장 디바이스를 "적절히" 수리한다.
이러한 목적을 향해, (i) 하나 보다 많은 주변 저장 디바이스를 위한 복구 데이터 객체(들)을 저장하며, (ii) 주변 저장 디바이스를 식별하는 "식별자"에 따라서 복구 데이터 객체(들)을 인덱스하고, 그리고 (iii) 어떠한 소정의 손상된 주변 저장 디바이스(50)와 "재결합"할 때, "인덱스" 또는 "키"로서 주변 저장 디바이스 식별자를 이용함으로써 "적절한" 복구 데이터 객체(들)(즉, 호스트측상)를 검색하는데 유리할 수 있다.
참조가 도 4에 대해 이루어졌다. 단계(S201, S205, S209, S213, S217, S223 및 S241)는 도 2A 및 도 4에서 동일하다.
도 4의 루틴은 4개의 추가적인 단계(S203, S210, S227, S240)를 추가한다.
단계(S203)에서, 주변 저장 디바이스(50)의 식별자가 검출된다. 예를 들어, 많은 UFD 디바이스는 UFD를 독특하게 식별하는 "독특한 전자 일련 번호"를 호스트가 판독할 수 있는 API를 제공한다. 다른 구현이 또한 가능하다는 것이 당업자에 의해 이해된다.
단계(S209)에서, 타깃 주변 저장 디바이스(50)의 손상 전에, 하나 이상의 복구 데이터 객체(들)가 호스트측에 저장되고(즉, 복구 데이터 보관(35) 내에), 그리고 단계(S210)에서, 저장된 하나 이상의 복구 데이터 객체(들)가 호스트측상의 디바이스 식별자에 따라서 인덱스 된다.
후에, 단계(S227)에서, 단계(S223)의 재결합 후, 재결합된 주변 저장 디바이 스의 디바이스 식별자가 검출된다(예를 들어, 독특한 디바이스 식별자를 액세스하기 위한 API를 호출함으로써). 단계(S240)에서, 디바이스 식별자(즉, 재결합에 뒤이어 판독됨)는 앞서 저장되고 인덱스된(즉, 단계(S209)에서 저장되고 단계(S210)에서 인덱스된) 특별한 재결합된 주변 저장 디바이스(50)를 위해 특정된 하나 이상의 복구 데이터 객체(들)를 검색하기 위해 사용된다.
이러한 검색(단계(S240))은 인덱스된 데이터 구조 내(즉, 정확한 매치, 베스트 매치, 근사 매치 또는 종래 기술에 알려진 어떠한 다른 매칭 기법을 이용하여) "매칭 디바이스 식별자"를 탐색하고, 매칭 디바이스 식별자 발견시, 주변 저장 디바이스를 위해 적절히 인덱스된 하나 이상의 복구 데이터 객체(들)을 검색함으로써 수행될 수 있다.
주변 디바이스 식별자에 따른 하나 이상의 복구 데이터 객체(들)의 인덱싱의 기술, 그리고 주변 디바이스 식별자(단계(S223)의 재결합 후에 다시한번 검출되는)에 따른 하나 이상의 복구 데이터 객체(들)의 후속적인 검색은 디바이스-특정에 기초하여 데이터 전송 동작을 저장하기 위한 목적으로 적용될 수 있다는 것이 이해된다. 따라서, 이들 기술은 하나 이상의 데이터 전송 동작 복구 객체(들)의 호스트측 인덱싱, 그리고 단계(S223)에서 재결합 후 다시 한번 검출되는) 주변 디바이스 식별자에 따른 하나 이상의 데이터 전송 동작(들)(단계(S245), 도 3)의 복구에 적용될 수 있다.
"자동" 디바이스 수리 및/또는 복구에 관련된 논의 대 사용자- 트리거 디바이 스 수리 및/또는 복구
몇몇 실시예에서, 도 2A, 2B, 3 및 4에 기술된 기법들은 어떠한 사용자 입력 또는 주변 저장 디바이스에 대한 조치를 필요로 하지 않고(예를 들어, 단계(S223)에서 디바이스 재결합 후 어떠한 사용자 입력 또는 조치를 필요로 하지 않고) 구현될 수 있다. 이것은 이와 관련하여 어떠한 특별한 지식 및/또는 어떠한 특정한 액션을 취할 수 있는 필요의 "사용자를 구제"할 수 있다.
그럼에도 불구하고, 주목해야 할 것은 이것은 필요한 제한이 아니다라는 것이이다. 몇몇 실시예에서, 저장 디바이스 수리의 프로세스 전 및/또는 동안에 사용자 입력을 요청 및/또는 데이터 전송 동작 복구를 요청하는 것이 바람직할 수 있다.
일례에서, 사용자는 디바이스를 수리하기를 원하는지 그리고/또는 트랜잭션을 복구하기를 원하는지에 대해 촉구될 수 있다.
일례에서, 디바이스 수리 및/또는 데이터 전송 동작 복구는 사용자가 디바이스를 수리하기를 원하는지 및/또는 트랜잭션을 복구하기를 원하는지를 원하는지에 대해 질문을 받을 때 "포지티브" 답변을 수신하는가에 달려있다.
도 5A-5C의 논의
도 5A-5C는 몇몇 예시적인 실시예에 따른 예시적인 시스템 구성의 블록도이다.
도 5A에서, 호스트 디바이스(10)는 손상된 아웃고잉 인터-디바이스 데이터-전송 동작에 의한 타깃 주변 저장 디바이스의 손상에 앞서, 그리고 데이터-전송 동작을 개시하기 위한 요청에 응답하여, i) 데이터-전송 동작의 하나 이상의 데이터 객체들의 하나 이상의 식별자의 기술, 그리고 ii) 인터-디바이스 데이터-전송 동작의 주변 저장 디바이스 타깃 로케이션 데이터중 적어도 하나를 디바이스 인터페이스의 호스트측상에 저장하도록 동작하는 데이터-트랜잭션 데이터-보관기(92)를 포함한다. 더욱이, 도 5A에서, 호스트 디바이스(10)는 i) 손상된 데이터-전송 동작 후, 그리고 ii) 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, i) 데이터-전송 동작의 하나 이상의 데이터 객체들의 하나 이상의 식별자의 기술; 및/또는 ii)인터-디바이스 데이터-전송 동작의 주변 저장 디바이스 타깃 로케이션 데이터를 이용하여 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하도록 동작한다.
몇몇 실시예에서, 도 5A의 시스템은 도 3에 기술된 루틴을 달성하기 위해 유용하다.
참조가 도 5B에 대해 이루어진다. 도 5B의 예에서, 복구 데이터 보관(35)은 다중 주변 저장 디바이스(50)를 위한 복구 데이터를 포함하고, 주변 디바이스 식별자에 따라서 인덱스된다. 도 5B의 예에서, 복구 데이터 보관(35)은 복구 데이터 보관이 인덱스되는 것을 표시하기 위해 번호 "35"에 이어 싱글 인용부호로 표기된다.
도 5B에서, 호스트 디바이스(10)는 디바이스 인터페이스를 통해 결합된 결합된 타깃 주변 디바이스의 식별자를 검출하기 위해 동작하는 주변 디바이스 식별자(96)를 포함하고, 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, 인덱스로서 결합된 타깃 주변 디바이스의 식별자를 이용하여 호스트측 인덱스 복구 데이터 구조로부터 검출된 식별자와 연관된 특별한 타깃 주변 디바 이스를 위해 특정된 적어도 하나의 복구 데이터 객체를 검색하도록 동작한다.
몇몇 실시예에서, 도 5B의 시스템은 도 4에 기술된 루틴을 달성하는데 유용하다.
참조가 도 5C에 대해 이루어진다. 도 5C에서, 호스트 디바이스(10)는 사용자 인터페이스(99)를 포함한다. 몇몇 실시예에서, 사용자 인터페이스(99)는 호스트 디바이스와 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, A)손상된 주변 저장 디바이스를 수리하기 위해 사용자 승인을 위한 요청을 사용자에게 제공하고, B)제공된 요청에 대한 응답을 수신하도록 동작한다. 이들 실시예에서, 주변 디바이스 수리기(40)는 제공된 요청에 대해 포지티브 응답을 수신함에 따른 방식으로 손상된 타깃 주변 저장 디바이스의 수리를 달성하기 위해 동작한다.
주목해야 할 것은 블록도 5A-5C에 나타나는 어떠한 소자, 예를 들어, 데이터-트랜잭션 데이터-보관기(92), 데이터-트랜잭션 복구기(94), 주변 디바이스 식별자(96), 복구-데이터 검색기(98), 그리고 사용자 인터페이스(99)가 하드웨어, 펌웨어 및/또는 소프트웨어의 어떠한 조합으로 구현될 수 있다는 것이다. 몇몇 실시예에서, 소프트웨어는 프로세서(89)에 의해 실행 가능하다.
주목해야 할 것은 도 5A-5C에 기술된 각각의 구조는 단지 하나의 가능한 구조이다. 예를 들어, 도 5A에서, 데이터-트랜잭션 데이터-보관기(92)는 복구 데이터 보관기(30)로부터 개별적인 구성요소로서 예시된다. 대안적인 실시예에서, 데이터-트랜잭션 데이터-보관기(92)는 복구 데이터 보관기(30)의 서브구성요소이다. 당업자는 도 5A-5C(그리고 도 2B)에 도시된 이러한 그리고 다른 구성 요소의 많은 다른 변경들이 존재하며, 도 5A-5C(그리고 도 2B)에 도시된 각각의 구조들이 하나의 예로서 제공되며, 이에 제한되지 않는다는 것을 인식할 것이다. 데이터-트랜잭션 데이터-보관기(92), 데이터-트랜잭션 복구기(94), 주변 디바이스 식별기(96), 복구-데이터 검색기(98), 그리고 사용자 인터페이스(99)의 어느 것이 대안적인 실시예에서 어떠한 다른 개시된 요소의 서브구성요소로서 제공될 수 있다.
더욱이, 블록도 2B, 5A-5C에 기술된 바와 같이 호스트 디바이스(10)에 존재하는 소자의 조합은 제한을 위한 것이 아니라는 것이 이해된다. 예를 들어, 데이터-트랜잭션 데이터-보관기(92) 및 데이터-트랜잭션 복구기(94)와 함께 주변 디바이스 식별기(96)와 복구 데이터 검색기(98)를 포함하는 실시예가 또한 본 발명의 발명자에 의해 고안된다. 당업자는 소자의 어떠한 조합이 가능하다는 것을 이해할 것이다.
결론
더욱 주목해야 할 것은 전술한 어떠한 실시예는 컴퓨터 판독 가능 매체상에서 도면과 함께 전술한 동작들을 구현하는 명령 및/또는 데이터를 수신, 전송 또는 저장하는 단계를 더 포함할 수 있다. 일반적으로, 컴퓨터 판독 가능한 매체는 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 운반되는 전기적, 전자기적 또는 디지털 신호와 같은 전송 매체 또는 신호와 마찬가지로 마그네틱 또는 플래시 또는 광학 매체, 예를 들어, 디스크 또는 CD-ROM, RAM, ROM 등과 같은 휘발성 또는 비휘발성 저장 매체와 같은 저장 매체 또는 메모리 매체를 포함할 수 있다.
따라서, 전술한 예시적인 실시예에 기술된 바와 같이, 이들의 다양한 등가 물, 변경, 수정 및 개선이 본 발명의 청구항의 범위 및 사상을 벗어남이 없이 가능하다는 것이 당업자에게 분명할 것이다. 특히, 상이한 실시예가 본 명세서에 기술된 것과 다른 특징의 조합을 포함할 수 있다. 따라서, 청구항은 전술한 논의에 제한되지 않는다.
상술한 바와 같이, 본 발명은, 호스트와 데이터 저장 디바이스 사이의 파일 전송 실패를 복구하기 위한 방법, 장치 및 컴퓨터 판독 가능 매체를 제공하는데 사용된다.

Claims (27)

  1. 호스트 디바이스로부터 타깃 주변 저장 디바이스를 손상시키는 상기 타깃 주변 저장 디바이스로 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법에 있어서,
    a) 상기 타깃 주변 저장 디바이스의 상기 손상에 앞서 그리고 상기 데이터-전송 동작을 개시하기 위한 요청에 응답하여,
    i) 상기 손상된 데이터-전송 동작에 의해 후속적으로 손상되는 주변-디바이스-존재 저장-시스템 데이터 구조의 시스템 데이터와,
    ii) 상기 손상된 아웃고잉 데이터-전송 동작에 의해 후속적으로 중복기록되지 않으며 상기 시스템 데이터가 존재하는 상기 주변 저장 디바이스상의 클린 로케이션에 대한 핸들로 구성되는 그룹으로부터 선택된 적어도 하나의 복구 데이터 객체를 호스트 측에 저장하는 단계와,
    b) 상기 호스트 디바이스와 상기 주변 저장 디바이스가 상기 손상된 아웃고잉 데이터-전송 동작에 의해 손상된 후 발생하는 상기 주변 저장 디바이스 사이의 후속적인 결합에 응답하여, 상기 호스트측에 저장된 적어도 하나의 상기 복구 데이터 객체를 이용하여 상기 손상된 주변 저장 디바이스를 수리하는 단계를
    포함하는, 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법.
  2. 제 1항에 있어서, 상기 주변-디바이스-존재 저장-시스템 데이터 구조는 상기 주변 저장 디바이스의 디렉토리 트리(directory tree)를 기술하는, 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법.
  3. 제 1항에 있어서, 상기 주변-디바이스-존재 저장-시스템 데이터 구조는 상기 주변 저장 디바이스의 파일 시스템 테이블(file system table)인, 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법.
  4. 제 1항에 있어서, 상기 주변-디바이스-존재 저장-시스템 데이터 구조는 상기 주변 저장 디바이스의 플래시 맵핑 테이블(flashing mapping table)인, 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법.
  5. 제 1항에 있어서,
    c) 상기 손상된 아웃고잉 인터-디바이스 데이터-전송 동작에 의해 상기 타깃 주변 저장 디바이스의 상기 손상에 앞서, 그리고 상기 데이터-전송 동작을 시작하기 위해 상기 요청에 응답하여,
    i) 상기 데이터-전송 동작의 하나 이상의 데이터 객체의 하나 이상의 식별자의 기술과,
    ii) 상기 인터-디바이스 데이터-전송 동작의 주변 저장 디바이스 타깃 로케이션 데이터중 적어도 하나를 상기 호스트측에 저장하는 단계와,
    d) 상기 손상된 데이터-전송 동작 후, 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 상기 후속적인 결합에 응답하여, c(i)의 상기 기술과 c(ii)의 상기 타깃 로케이션 데이터중 적어도 하나를 이용하여 상기 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 단계를
    더 포함하는, 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법.
  6. 제 5항에 있어서, 상기 타깃 로케이션 데이터는 디렉토리 경로 데이터를 포함하는, 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법.
  7. 제 1항에 있어서,
    i) 상기 적어도 하나의 복구 데이터 객체는 복수의 복구 데이터 객체가 주변 저장 디바이스 식별자에 따라서 인덱스되는 호스트측 인덱스된 복구 데이터 구조 내에 저장되며,
    ii) 상기 방법은
    c) 상기 주변 저장 디바이스가 상기 손상된 데이터-전송 동작에 의해 손상된 후,
    i) 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 상기 후속 결합에 응답하여, 상기 주변 저장 디바이스의 디바이스 식별자를 검출하는 단계와,
    ii) 인덱스로서 상기 주변 저장 디바이스의 상기 검출된 디바이스 식별자를 이용하여 상기 호스트측 인덱스된 복구 데이터 구조로부터 상기 타깃 디바이스의 상기 적어도 하나의 복구 데이터 객체를 검색하는 단계를
    더 포함하는, 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법.
  8. 제 1항에 있어서,
    i) 상기 방법은,
    c) 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 상기 후속적인 결합에 응답하여, 상기 손상된 주변 저장 디바이스를 수리하기 위해 사용자 승인을 요청하는 단계를 더 포함하되,
    ii) 상기 단계(b)의 상기 손상된 주변 저장 디바이스의 상기 수리 단계는 상기 사용자 승인-요청에 응답하여 상기 사용자 승인 수신에 따르는, 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법.
  9. 제 1항에 있어서, 상기 단계(b)의 수리 단계는 어떠한 사용자 입력 없이 수행되는, 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하는 방법.
  10. 호스트 디바이스로서,
    a) 주변 디바이스와 결합하기 위한 디바이스 인터페이스;
    b) 상기 디바이스 인터페이스를 통해 인터-디바이스 데이터-전송 동작을 관리하기 위한 데이터-전송 관리자;
    c) i) 손상된 아웃고잉 인터-디바이스 데이터-전송 동작 전에,
    A) 상기 디바이스 인터페이스를 통해 상기 호스트 디바이스에 결합되는 타깃 주변 디바이스에 의해 동작하고,
    B) 상기 결합된 타깃 주변 디바이스를 후속적으로 손상시키며,
    ii) 상기 아웃고잉 인터-디바이스 데이터-전송 동작을 시작하기 위한 요청에 응답하여,
    iii) 상기 손상된 데이터-전송 동작에 의해 후속적으로 손상되는 주변-디바이스-존재 저장-시스템 데이터 구조의 시스템 데이터와,
    iv) 상기 손상된 데이터-전송 동작에 의해 후속적으로 중복 기록되지 않으며 상기 시스템 데이터가 존재하는 상기 주변 저장 디바이스상의 클린 로케이션에 대한 핸들로 구성되는 그룹으로부터 선택된 적어도 하나의 복구 데이터 객체를 상기 디바이스 인터페이스의 호스트측에 저장하도록 동작하는 복구-데이터 보관기(recovery-data archiver)와,
    d) 상기 호스트 디바이스와 상기 주변 저장 디바이스가 상기 손상된 아웃고잉 데이터-전송 동작에 의해 손상된 후 발생하는 상기 주변 저장 디바이스 사이의 후속적인 결합에 응답하여 상기 호스트측에 저장된 적어도 하나의 상기 복구 데이터 객체를 이용하여 상기 손상된 타깃 주변 저장 디바이스를 수리하도록 동작하는 주변 디바이스 수리기(peripheral device)를
    포함하는, 호스트 디바이스.
  11. 제 10항에 있어서, 상기 시스템 데이터 구조는 상기 주변 저장 디바이스의 디렉토리 트리를 기술하는, 호스트 디바이스.
  12. 제 10항에 있어서, 상기 시스템 데이터 구조는 상기 주변 저장 디바이스의 파일 시스템 테이블 데이터 구조(file system table data structure)인, 호스트 디바이스.
  13. 제 10항에 있어서, 상기 시스템 데이터 구조는 상기 주변 저장 디바이스의 플래시 관리 테이블 데이터 구조(flash management table data structure)인, 호스트 디바이스.
  14. 제 10항에 있어서,
    e) 상기 손상된 아웃고잉 인터-디바이스 데이터-전송 동작에 의한 상기 타깃 주변 저장 디바이스의 상기 손상에 앞서, 그리고 상기 데이터-전송 동작을 개시하기 위한 상기 요청에 응답하여,
    i) 상기 데이터-전송 동작의 하나 이상의 데이터 객체의 하나 이상의 식별자의 기술과,
    ii) 상기 인터-디바이스 데이터-전송 동작의 주변 저장 디바이스 타깃 로 케이션 데이터 중 적어도 하나를 상기 디바이스 인터페이스의 상기 호스트 측에 저장하도록 동작하는 데이터-트랜잭션 데이터-보관기와,
    f) i) 상기 손상 데이터-전송 동작 후와,
    ii) 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 상기 후속적인 결합에 응답하여,
    e(i)의 상기 기술 및 e(ii)의 상기 타깃 로케이션을 이용하여 상기 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하도록 동작하는 데이터 트랜잭션 복구기를
    더 포함하는, 호스트 디바이스.
  15. 제 14항에 있어서, 상기 타깃 로케이션 데이터는 디렉토리 경로 데이터인, 호스트 디바이스.
  16. 제 10항에 있어서,
    i) 상기 호스트 디바이스는
    e) 상기 디바이스 인터페이스를 통해 결합된 상기 결합된 타깃 주변 디바이스의 식별자를 검출하도록 동작하는 주변 디바이스 식별자-검출기를 더 포함하며,
    ii) 상기 주변 디바이스 식별자-검출기로부터 수신된 상기 결합된 타깃 주변 디바이스의 상기 식별자에 따라서, 상기 복구-데이터 보관기는 복수의 복구 데이터 객체가 주변 저장 디바이스 식별자에 따라서 인덱스되는 호스트측 인덱스된 복구 데이터 구조 내에 적어도 하나의 복구 데이터 객체를 저장하도록 동작하고,
    iii) 상기 호스트 디바이스는
    f) 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 상기 후속적인 결합에 응답하여, 인덱스로서 상기 결합된 타깃 주변 디바이스의 상기 식별자를 이용하여 상기 호스트측 인덱스된 복구 데이터 구조로부터 상기 타깃 주변 디바이스를 위한 상기 적어도 하나의 복구 데이터 객체를 검색하도록 동작하는 복구-데이터 검색기를
    더 포함하는, 호스트 디바이스.
  17. 제 10항에 있어서,
    i) 상기 호스트 디바이스는
    f) 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 상기 후속적인 결합에 응답하여,
    A) 상기 손상된 주변 저장 디바이스를 수리하기 위해 사용자 승인을 위한 요청을 사용자에게 제공하고,
    B) 상기 제공된 요청 대한 응답을 수신하도록 동작하는 사용자 인터페이스를 더 포함하며,
    ii) 상기 주변 디바이스 수리기는 상기 제공된 요청에 대해 포지티브 상기 응답 수신에 따라 결정되는 방식으로 상기 손상된 타깃 주변 저장 디바이스의 상기 수리 단계를 달성하도록 동작하는, 호스트 디바이스.
  18. 제 10항에 있어서, 상기 주변 디바이스 수리기는 어떠한 수신된 사용자 입력에 관계없는 방식으로 상기 타깃 주변 저장 디바이스의 상기 수리를 달성하도록 동작하는, 호스트 디바이스.
  19. 호스트 컴퓨터 디바이스로 하여금 타깃 주변 저장 디바이스를 손상시키는 상기 호스트 컴퓨터 디바이스로부터 상기 타깃 주변 저장 디바이스로의 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하도록 하기 위해 컴퓨터 판독 가능 프로그램 코드가 저장된 컴퓨터 판독 가능 매체에 있어서, 상기 프로그램 코드는 상기 프로세서로 하여금
    a) 상기 타깃 주변 저장 디바이스의 상기 손상에 앞서 그리고 상기 데이터-전송 동작을 개시하도록 하는 요청에 응답하여,
    i) 상기 손상된 데이터-전송 동작에 의해 후속적으로 손상되는 주변-디바이스-존재 저장-시스템 데이터 구조의 시스템 데이터와,
    ii) 상기 손상된 아웃고잉 데이터-전송 동작에 의해 후속적으로 중복기록되지 않으며 상기 시스템 데이터가 존재하는 상기 주변 저장 디바이스상의 클린 로케이션에 대한 핸들(a handle)로
    구성되는 그룹으로부터 선택된 적어도 하나의 복구 데이터 객체를 호스트측에 저장하고,
    b) 중단된 아웃고잉 데이터 전송 동작에 의해 상기 주변 저장 디바이스가 손상된 후 발생하는 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 후속 결합에 응답하여, 상기 호스트 측에 저장된 적어도 하나의 상기 복구 데이터 객체를 이용하여 상기 손상된 주변 저장 디바이스를 수리하도록
    동작할 수 있는, 컴퓨터 판독 가능 매체.
  20. 제 19항에 있어서, 상기 주변-디바이스-존재 저장-시스템 데이터 구조는 상기 주변 저장 디바이스의 디렉토리 트리를 기술하는, 컴퓨터 판독 가능 매체.
  21. 제 19항에 있어서, 상기 주변-디바이스-존재 저장-시스템 데이터 구조는 상기 주변 저장 디바이스의 파일 시스템 테이블인, 컴퓨터 판독 가능 매체.
  22. 제 19항에 있어서, 상기 주변-디바이스-존재 저장-시스템 데이터 구조는 상기 주변 저장 디바이스의 플래시 맵핑 테이블인, 컴퓨터 판독 가능 매체.
  23. 제 19항에 있어서,
    상기 프로그램 코드는 상기 프로세서로 하여금
    c) 상기 손상된 아웃고잉 인터-디바이스 데이터-전송 동작에 의해 상기 타깃 주변 저장 디바이스의 상기 손상에 앞서, 그리고 상기 데이터-전송 동작을 개시하기 위한 상기 요청에 응답하여,
    i) 상기 데이터-전송 동작의 하나 이상의 데이터 객체들의 하나 이상의 식별자의 기술(description)과,
    ii) 상기 인터-디바이스 데이터-전송 동작의 주변 저장 디바이스 타깃 로케이션 중 적어도 하나를 상기 호스트 측에 저장하고,
    d) 상기 손상 데이터-전송 동작 후, 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 상기 후속적인 결합에 응답하여, c(i)의 상기 기술과 c(ii)의 상기 타깃 로케이션 데이터 중 적어도 하나를 이용하여 상기 손상된 아웃고잉 인터-디바이스 데이터-전송 동작을 복구하도록 더 동작할 수 있는, 컴퓨터 판독 가능 매체.
  24. 제 23항에 있어서, 상기 타깃 로케이션 데이터는 디렉토리 경로 데이터를 포함하는, 컴퓨터 판독 가능 매체.
  25. 제 19항에 있어서,
    i) 상기 프로그램 코드는 상기 적어도 하나의 복구 데이터 객체가 복수의 복구 데이터 객체가 주변 저장 디바이스 식별자들에 따라서 인덱스되는 호스트측 인덱스된 복구 데이터 구조 내에 저장되도록 동작할 수 있으며,
    ii) 상기 프로그램 코드가 상기 프로세서로 하여금
    c) 상기 주변 저장 디바이스가 상기 손상된 데이터-전송 동작에 의해 손상된 후,
    i) 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 상기 후속적인 결합에 응답하여, 상기 주변 저장 디바이스의 디바이스 식별자를 검출하고,
    ii) 인덱스로서 상기 주변 저장 디바이스의 상기 선택된 디바이스 식별자를 이용하여 상기 호스트측 인덱스된 복구 데이터 구조로부터 상기 타깃 디바이스의 상기 적어도 하나의 복구 데이터 객체를 검색하도록 더 동작할 수 있는, 컴퓨터 판독 가능 매체.
  26. 제 19항에 있어서,
    i) 상기 프로그램 코드가 상기 프로세서로 하여금
    c) 상기 호스트 디바이스와 상기 주변 저장 디바이스 사이의 상기 후속적인 결합에 응답하여, 상기 손상된 주변 저장 디바이스를 수리하기 위해 사용자 승인을 요청하도록 더 동작하고,
    ii) 상기 프로그램 코드는 상기 단계(b)의 상기 손상된 주변 저장 디바이스의 수리 단계가 상기 사용자 승인-요청에 응답하여 상기 사용자 승인의 수신에 따라서 결정되는, 컴퓨터 판독 가능 매체.
  27. 제 19항에 있어서, 상기 프로그램 코드는 상기 프로세서에 의한 실행시 상기 단계(b)의 수리 단계가 어떠한 사용자 입력없이 수행되도록 동작할 수 있는, 컴퓨터 판독 가능 매체.
KR1020097015676A 2007-01-04 2008-01-03 호스트와 데이터 저장 디바이스 사이의 파일 전송 실패의 복구 KR101605907B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US88334507P 2007-01-04 2007-01-04
US60/883,345 2007-01-04

Publications (2)

Publication Number Publication Date
KR20090116725A true KR20090116725A (ko) 2009-11-11
KR101605907B1 KR101605907B1 (ko) 2016-03-23

Family

ID=39363903

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097015676A KR101605907B1 (ko) 2007-01-04 2008-01-03 호스트와 데이터 저장 디바이스 사이의 파일 전송 실패의 복구

Country Status (7)

Country Link
US (1) US7930585B2 (ko)
EP (1) EP2100222B1 (ko)
JP (1) JP5244124B2 (ko)
KR (1) KR101605907B1 (ko)
AT (1) ATE519158T1 (ko)
TW (1) TWI386796B (ko)
WO (1) WO2008081454A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103631B2 (en) * 2008-11-19 2012-01-24 Sandisk Il Ltd Merging files on storage and retrieve
CN101958880B (zh) * 2009-07-13 2013-08-14 联发科技(新加坡)私人有限公司 用于重新激活至少一个mtp兼容设备的方法及主机
US8751802B2 (en) * 2010-06-30 2014-06-10 Sandisk Il Ltd. Storage device and method and for storage device state recovery
US8756361B1 (en) * 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
EP2989547B1 (en) 2013-04-23 2018-03-14 Hewlett-Packard Development Company, L.P. Repairing compromised system data in a non-volatile memory
US10733288B2 (en) 2013-04-23 2020-08-04 Hewlett-Packard Development Company, L.P. Verifying controller code and system boot code
JP6259601B2 (ja) * 2013-07-25 2018-01-10 任天堂株式会社 情報処理装置、情報処理システム、情報処理方法及びコンピュータプログラム
US9851927B2 (en) 2015-09-01 2017-12-26 International Business Machines Corporation File management in a file system
US10476846B2 (en) * 2016-08-05 2019-11-12 The Boeing Company Data-at-rest (DAR) encryption for integrated storage media
KR20200048911A (ko) 2018-10-31 2020-05-08 삼성에스디에스 주식회사 불안정 전송 환경에서의 데이터 전송 서버 및 방법
WO2020159533A1 (en) 2019-02-01 2020-08-06 Hewlett-Packard Development Company, L.P. Security credential derivation
US11520662B2 (en) 2019-02-11 2022-12-06 Hewlett-Packard Development Company, L.P. Recovery from corruption
CN114050965A (zh) * 2020-07-22 2022-02-15 中兴通讯股份有限公司 查找中断设备的方法、从设备、主设备及存储介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504883A (en) * 1993-02-01 1996-04-02 Lsc, Inc. Method and apparatus for insuring recovery of file control information for secondary storage systems
US5682517A (en) * 1994-06-21 1997-10-28 Pitney Bowes Inc. Method of transferring data to a memory medium in a mailing machine
JPH09319640A (ja) * 1996-05-27 1997-12-12 Sharp Corp 情報記録再生装置
JP3751116B2 (ja) * 1997-06-02 2006-03-01 松下電器産業株式会社 取り替え可能なディスクを使用するディスク型記録再生装置、及び記録再生方法
JP4230553B2 (ja) * 1997-12-16 2009-02-25 日置電機株式会社 データ記録装置
US6385707B1 (en) 1998-02-24 2002-05-07 Adaptec, Inc. Method and apparatus for backing up a disk drive upon a system failure
US6665778B1 (en) * 1999-09-23 2003-12-16 Gateway, Inc. System and method for storage of device performance data
US6904508B2 (en) * 2000-06-19 2005-06-07 Storage Technology Corporation Recovery of dynamic maps and data managed thereby
US6839864B2 (en) * 2000-07-06 2005-01-04 Onspec Electronic Inc. Field-operable, stand-alone apparatus for media recovery and regeneration
TW498196B (en) * 2000-10-17 2002-08-11 Asustek Comp Inc Method for preventing any data damage caused by floppy diskette controller
CN1246764C (zh) * 2000-12-20 2006-03-22 皇家菲利浦电子有限公司 记录和重放装置电源故障的恢复机制
US6928456B2 (en) * 2001-03-06 2005-08-09 Intel Corporation Method of tracking objects for application modifications
JP2002358248A (ja) * 2001-06-04 2002-12-13 Pioneer Electronic Corp データ記録装置およびデータ消去装置
US6711663B2 (en) * 2001-11-15 2004-03-23 Key Technology Corporation Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof
US7042663B2 (en) * 2002-10-03 2006-05-09 Hitachi Global Storage Technologies Netherlands B.V. Magnetic disk protection mechanism, computer system comprising protection mechanism, protection method for magnetic disk, and program for protection method
US7174420B2 (en) * 2002-10-22 2007-02-06 Microsoft Corporation Transaction-safe FAT file system
US7363540B2 (en) 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
US7546482B2 (en) * 2002-10-28 2009-06-09 Emc Corporation Method and apparatus for monitoring the storage of data in a computer system
US7401092B2 (en) * 2003-06-26 2008-07-15 Standbysoft Llc Method and apparatus for exchanging sub-hierarchical structures within a hierarchical file system
US6938136B2 (en) * 2003-07-14 2005-08-30 International Business Machines Corporation Method, system, and program for performing an input/output operation with respect to a logical storage device
US20050078823A1 (en) * 2003-09-11 2005-04-14 Makoto Usui Content recording apparatus, content recording method and hard disk apparatus
US7299314B2 (en) 2003-12-31 2007-11-20 Sandisk Corporation Flash storage system with write/erase abort detection mechanism
JP2006134123A (ja) * 2004-11-08 2006-05-25 Ishida Co Ltd データ記録装置及びそれを備える商品処理装置
KR100643286B1 (ko) * 2004-11-22 2006-11-10 삼성전자주식회사 이동 저장 장치 및 이를 이용한 파일 시스템 복구 방법
US20070016721A1 (en) * 2005-07-18 2007-01-18 Wyse Technology Inc. Flash file system power-up by using sequential sector allocation
US7489923B2 (en) 2005-08-05 2009-02-10 Research In Motion Limited Methods and systems for handling software operations associated with startup and shutdown of handheld devices
US20070086244A1 (en) * 2005-10-17 2007-04-19 Msystems Ltd. Data restoration in case of page-programming failure
US8549252B2 (en) * 2005-12-13 2013-10-01 Emc Corporation File based volumes and file systems
US8307148B2 (en) * 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7685178B2 (en) * 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system

Also Published As

Publication number Publication date
ATE519158T1 (de) 2011-08-15
EP2100222A1 (en) 2009-09-16
WO2008081454A1 (en) 2008-07-10
JP5244124B2 (ja) 2013-07-24
US7930585B2 (en) 2011-04-19
TW200842567A (en) 2008-11-01
KR101605907B1 (ko) 2016-03-23
EP2100222B1 (en) 2011-08-03
TWI386796B (zh) 2013-02-21
JP2010515191A (ja) 2010-05-06
US20080168243A1 (en) 2008-07-10

Similar Documents

Publication Publication Date Title
KR101605907B1 (ko) 호스트와 데이터 저장 디바이스 사이의 파일 전송 실패의 복구
US8543548B2 (en) Hierarchical management storage system and storage system operating method
EP2065806B1 (en) System and method for using a file system to automatically backup a file as a generational file
US9311188B2 (en) Minimizing data recovery window
US8219768B2 (en) System and method for establishing a copy pair relationship between source and destination volumes
US9495370B1 (en) Data recovery point review in a continuous data protection system
CN106951345B (zh) 一种虚拟机磁盘数据的一致性测试方法及装置
US7822595B2 (en) Systems and methods for selectively copying embedded data files
US20070083354A1 (en) Emulation component for data backup applications
US20110004459A1 (en) Data Backup Devices and Methods for Backing Up Data
US20110197279A1 (en) Management methods of storage system and file system
US20080243466A1 (en) Systems and methods for converting a media player into a backup device
JP2006338461A (ja) 電子的なファイルの記憶を制御するシステム及び方法
US20090070539A1 (en) Automated File Recovery Based on Subsystem Error Detection Results
CN101883135A (zh) 选择性镜像方法
CN104166605A (zh) 基于增量数据文件的数据备份方法及系统
US10296517B1 (en) Taking a back-up software agnostic consistent backup during asynchronous replication
US20080155319A1 (en) Methods and systems for managing removable media
US8892830B2 (en) Changing ownership of cartridges
US20050187989A1 (en) Version management system, version management server device, and storage device control unit
US6684293B1 (en) Methods and computer readable media for preserving unique critical information during data imaging
US20110099636A1 (en) Read-only protection method for removable storage medium
CN109325005A (zh) 一种数据处理方法和电子设备
US11755425B1 (en) Methods and systems for synchronous distributed data backup and metadata aggregation
KR102369655B1 (ko) 스냅샷 기반의 데이터 복제 및 복구 방법

Legal Events

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