KR102118161B1 - 장치 저장의 제자리 재조직을 위한 시스템들 및 방법들 - Google Patents

장치 저장의 제자리 재조직을 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR102118161B1
KR102118161B1 KR1020157002033A KR20157002033A KR102118161B1 KR 102118161 B1 KR102118161 B1 KR 102118161B1 KR 1020157002033 A KR1020157002033 A KR 1020157002033A KR 20157002033 A KR20157002033 A KR 20157002033A KR 102118161 B1 KR102118161 B1 KR 102118161B1
Authority
KR
South Korea
Prior art keywords
target
original
volatile storage
storage
update
Prior art date
Application number
KR1020157002033A
Other languages
English (en)
Other versions
KR20150040276A (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 KR20150040276A publication Critical patent/KR20150040276A/ko
Application granted granted Critical
Publication of KR102118161B1 publication Critical patent/KR102118161B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/235Update request formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

장치의 비휘발성 저장에 저장되고, 적어도 하나의 원본 저장 단위 및 그와 함께 연관된 원본 로직을 가지는 원본 조직 방식(scheme), 적어도 하나의 타겟 저장 단위 및 그와 함께 연관된 타겟 조직 로직을 가지는 타겟 조직 방식(scheme)에 따라 조직되는 컨텐츠의 제자리(in-place) 재조직을 위한 방법으로서, 상기 방법은 상기 원본 조직 방식으로부터 정의된 타켓 조직 방식으로 상기 비휘발성 저장 내 상기 컨텐츠를 재조직하기 위한 명령어를 획득하는 단계; 상기 명령어 및 가상 저장에 상기 타겟 조직 로직의 적용에 기반하여, 상기 타겟 조직 방식에 따라 조직되는 상기 적어도 하나의 타겟 저장 단위를 상기 비휘발성 저장 내 생성하기 위한 업데이트 명령의 시퀀스를 상기 장치 상에 생성하는 단계; 및 상기 비휘발성 저장 상에 상기 업데이트 명령을 실행하는 단계를 포함한다.

Description

장치 저장의 제자리 재조직을 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR IN-PLACE REORGANIZATION OF DEVICE STORAGE}
본 출원은 그의 전부 참고에 의해 여기 통합되는, 2012년 7월 18일 제출된 “Systems and Methods for In-Place, Dynamic Reorganization of Device Storage”라는 제목의 미국 가출원 번호 제61/664,634호의 우선권을 주장한다.
본 발명은 저장 장치 내 저장된 컨텐트의 제자리 재조직, 특히, 업데이트된 버전으로 비휘발성 저장 장치의 컨텐트의 원본 버전의 제자리의 업데이트에 관한 것이다.
하드 디스크 또는 플래쉬 메모리와 같은 컴퓨터 저장은 몇몇 분할들로 전형적으로 나누어진다. 특정 포맷 내 이들 분할들 저장 데이터 각각은 파일 시스템 포맷으로 흔히 언급된다. 특정 분할 내 저장되기 위한 보다 많은 컨텐트를 허용하기 위하거나, 하나의 분할로부터 다른 하나로 컨텐트를 이동하기 위해, 하나 이상의 상기 분할들의 사이즈를 변경하기 위해 가끔 요구될 수 있다. 몇몇 경우에 있어서, 하드 디스크 드라이브의 조각 모음으로와 같은 수행 이유들을 위한 저장 공간을 주기 위하거나, 파일 시스템 분할들을 리사이즈하기 위해, 그러한 재분할 또는 재조직은 역시 요구될 수 있다.
장치들의 많은 타입들로, 그러한 장치들의 상기 저장 단위들 내 저장된 컨텐트의 업데이트는 역시 요구될 수 있다. 예를 들면, 소프트웨어 응용 또는 운용 시스템(OS)의 업그레이드 또는 업데이트를 수행하기 위해, 저장된 컨텐트는 업데이트되어야할 필요가 있을 수 있다. 그러한 업그레이드들은 문제점 또는 버그를 고치거나, 새로운 특징들을 도입하거나, 신형 OS 또는 업데이트된 버전으로 현재 사용되는 OS를 교체하기 위해 요구된다. 이러한 업그레이드는 업그레이드인 상기 OS 또는 소프트웨어 응용에 대응하는 현재 사용되는 실행가능한 파일들 및 라이브러리들(예컨대, 공유된 라이브러리들)을 전형적으로 교체한다. 몇몇의 경우에 있어서, 컨텐트의 많은 다른 타입은 텍스트, 소스 코드, 데이터베이스 내 저장된 데이터 등과 같이 업데이트되어야할 필요가 있을 수 있다.
저장된 컨텐트의 재조직을 위한 전통 기술들은 중요한 여분의 저장 공간 및/또는 상기 내용 저장 단위를 함유하는 상기 장치를 위한 고장 시간을 종종 요구할 수 있다. 많은 경우에 있어서, 상기 컨텐트의 전체 사본을 저장하기 위해, 이러한 종래 기술들은 추가적인 저장 공간 또는 재조직되기 위한 컨텐트 만큼 이용가능한 자유 저장 공간을 요구할 수 있다. 스마트폰들과 같은 모바일 장치들로 상기 케이스일 수 있는 것과 같은, 여분의 저장 공간의 중요한 양에 접근을 가지지 않는 장치들에 있어서, 이는 문제점일 수 있다.
따라서, 백업 저장을 위한 필요를 감소하는 컨텐트의 업데이트된 버전으로 저장 장치 내 컨텐트의 원본 버전의 제자리 재분할 또는 재조직을 제공하기 위한 기술적인 해결을 위한 필요가 있다.
본 발명은 장치의 비휘발성 저장 내 저장되고, 적어도 하나의 타겟 저장 단위 및 타겟 조직 로직을 가지는 타겟 조직 방식으로 원본 조직 방식에 따라 재조직되는 컨텐트의 제자리 재조직을 위한 시스템들 및 방법들의 설명을 제공한다. 저장 단위 또는 저장의 단위는 컨텐트 조직의 목적을 위한 비휘발성 저장 상에 논리적 서브디비전으로 제공될 수 있는 구별가능한 데이터 개체이다. 비제한적인 예시들 또는 저장 단위들은 분할들, 폴더들 및 플랫 파일들과 마찬가지로 데이터베이스들, 파일 시스템들 및 가상 장치들과 같은 데이터 스토어들이다. 그런, 개별적 저장 단위는 상기 비휘발성 저장 내 물리적으로 근접할 수 있으나, 그것이 역시 상기 비휘발성 저장 내 근접하지 않을 수 있도록, 그럴 필요는 없다. 추가적으로, 저장 단위는 하나 이상의 데이터 요소들, 예컨대, 상기 저장 단위의 부분인 논리적 빌딩 블록들을 전형적으로 포함할 것임에 유의해야 한다. 예를 들어, 상기 데이터 단위가 분할로 식별된다면, 폴더들 또는 파일들은 상기 분할의 데이터 요소들로 간주될 수 있다. 또는, 데이터베이스가 저장 단위로 간주된다면, 레코드들은 데이터 요소들로 간주될 수 있다. 데이터 요소들은 역시 파일 헤더들, 주소 테이블들 등과 같은 저장 단위 내 상기 컨텐트의 조직을 위해 사용가능한 어떤 메타 데이터일 수 있다.
장치의 비휘발성 저장에 저장되고, 적어도 하나의 원본 저장 단위 및 그와 함께 연관된 원본 로직을 가지는 원본 조직 방식(scheme), 적어도 하나의 타겟 저장 단위 및 그와 함께 연관된 타겟 조직 로직을 가지는 타겟 조직 방식(scheme)에 따라 조직되는 컨텐츠의 제자리(in-place) 재조직을 위한 방법으로서, 상기 방법은 상기 원본 조직 방식으로부터 정의된 타켓 조직 방식으로 상기 비휘발성 저장 내 상기 컨텐츠를 재조직하기 위한 명령어를 획득하는 단계; 상기 명령어 및 가상 저장에 상기 타겟 조직 로직의 적용에 기반하여, 상기 타겟 조직 방식에 따라 조직되는 상기 적어도 하나의 타겟 저장 단위를 상기 비휘발성 저장 내 생성하기 위한 업데이트 명령의 시퀀스를 상기 장치 상에 생성하는 단계; 및 상기 비휘발성 저장 상에 상기 업데이트 명령을 실행하는 단계를 포함한다.
타겟 조직 방식에 상기 물리적 저장의 제자리 재조직을 수행하기 위한 상기 컴퓨팅 장치를 유발하는, 그와 함께 연관된 원본 조직 로직을 각각 가지는 복수의 저장 단위들을 포함하는 원본 조직 방식으로 물리적 저장을 가지는 컴퓨팅 장치에 의해 실행된다면, 그에 대해 저장되는 프로그램 로직을 가지는 비일시적인 컴퓨터 판독가능한 매체로서, 상기 프로그램 로직은 상기 원본 조직 방식으로부터 그와 함께 연관된 타겟 조직 로직을 각각 가지는 복수의 타겟 저장 단위들을 가지는 정의된 타겟 조직 방식으로 상기 물리적 저장을 재조직하기 위한 명령어를 획득하기 위한 프로그램 로직; 상기 명령어 및 상기 조직 로직들의 자극에 기반하여, 상기 물리적 저장 내 상기 복수의 타겟 저장 단위들을 생성하기 위한 업데이트 명령의 시퀀스를 상기 모바일 디바이스 상에, 생성하기 위한 프로그램 로직; 상기 업데이트 명령의 시퀀스에 근거하여, 상기 업데이트 명령이 수행된다면, 중복기록된 상기 물리적 저장 내 데이터를 초래할 수 있는 잠재적 판독 이전 기록 충돌을 식별하기 위한 프로그램 로직; 상기 식별된 잠재적 판독 이전 기록 충돌을 해결하기 위한 프로그램 로직; 및 상기 물리적 저장 상에 상기 업데이트 명령을 실행하기 위한 프로그램 로직을 포함한다.
바람직하게, 상기 원본 조직 방식은 파일 시스템 또는 복수의 데이터 요소들을 포함하는 데이터베이스를 포함하고, 상기 생성을 위한 프로그램 로직 또는 방법 단계들은 상기 원본 조직 방식 내 복수의 데이터 요소들 및 상기 타겟 조직 방식 내 복수의 타겟 데이터 요소들 사이에 맵핑을 창작하기 위해 추가적으로 배열되고; 상기 맵핑은 상기 원본 파일 시스템 또는 데이터베이스의 데이터 요소 각각을 위한 것이다: 상기 데이터 요소들의 컨텐츠를 포함하는 상기 비휘발성 저장 내 데이터 블록들은 검색되고; 상기 원본 조직 로직은 자극되고, 상기 데이터 블록들에 대응하는 상기 비휘발성 저장 내 원본 위치들은 레코드되며; 상기 타겟 조직 로직의 위치를 레코드 기록하기 위한 타겟 조직 로직은 상기 비휘발성 저장에 기록없이 자극된다.
적어도 하나의 타겟 저장 단위 및 그와 함께 연관된 타겟 로직을 가지는 타겟 조직 방식으로 원본 조직 방식을 가지는 모바일 디바이스의 비휘발성 저장의 제자리 재조직을 위한 시스템으로서, 상기 시스템은 수신 모듈, 생성 모듈, 충돌 식별 모듈, 충돌 해결 모듈 및 실행 모듈을 포함한다. 상기 수신 모듈은 상기 원본 조직 방식으로부터 적어도 하나의 타겟 저장 단위 및 그와 연관된 타겟 조직 로직을 가지는 정의된 타겟 조직 방식으로 상기 비휘발성 저장을 재조직하기 위한 명령어를 수신 또는 획득하기 위해 구성된다. 상기 생성 모듈은 상기 명령어 및 상기 조직 로직의 자극에 근거하여, 상기 비휘발성 저장 내 상기 적어도 하나의 타겟 저장 단위를 생성하기 위한 업데이트 명령의 시퀀스를 상기 모바일 디바이스 상에, 생성하기 위해 구성된다. 상기 충돌 식별 모듈은 상기 업데이트 명령의 시퀀스에 기반하여, 상기 업데이트 명령이 수행된다면, 중복기록된 상기 비휘발성 저장 내 데이터를 초래할 수 있는 잠재적 판독 이전 기록 충돌을 식별하기 위한 상기 조직 로직을 인보크(invoke)하기 위해 구성된다. 상기 충돌 해결 모듈은 식별된 충돌과 연관된 상기 업데이트 명령을 재배열함으로써, 식별된 잠재적 판독 이전 기록 충돌을 해결하기 위해 구성된다. 상기 실행 모듈은 상기 비휘발성 저장 상에 상기 업데이트 명령을 실행하기 위해 구성된다.
본 발명은 장치의 비휘발성 저장 내 저장되고, 적어도 하나의 타겟 저장 단위 및 타겟 조직 로직을 가지는 타겟 조직 방식으로 원본 조직 방식에 따라 재조직되는 컨텐트의 제자리 재조직을 위한 시스템들 및 방법들의 설명을 제공한다.
수반하는 도면들과 함께 읽을때 본 발명의 범위는 실시예들의 하기 상세한 설명으로부터 최선으로 이해된다. 상기 도면들 내 포함된 것은 하기 특징들이다:
도 1은 실시예들에 따른 네트워크 내 장치 상에 저장을 재조직하기 위한 시스템의 개략적인 설명이다.
도 2는 실시예들에 따른 도 1의 상기 시스템을 통해 재조직하기 위한 원본 조직 방식의 원본 저장 단위들 및 타겟 조직 방식의 타겟 저장 단위들을 포함하는 비휘발성 저장을 설명하는 블록 다이어그램이다.
도 3은 실시예들에 따른 무선 네트워크들 내 장치들의 재조직 저장을 위한 시스템의 개략적인 설명이다.
도 4는 실시예들에 따른 원본 파일 시스템 분할 레이아웃 및 타겟 파일 시스템 분할 레이아웃의 설명이다.
도 5 및 6은 실시예들에 따른 장치의 저장의 제자리 재조직을 위한 예시적인 방법들을 설명하는 흐름도들이다.
도 7은 실시예들에 따른 컴퓨터 시스템 아키텍쳐를 설명하는 블록 다이어그램이다.
본 발명의 적용가능한 추가 영역은 이하 제공되는 상세한 설명들로부터 명백해질 것이다. 실시예들의 상세한 설명이 오직 설명 목적을 위해 의도되므로, 본 발명의 범위를 필수적으로 제한하기 위한 의도되지 않은 것으로 이해되어야 한다.
저장된 컨텐츠의 제자리 재조직을 위한 시스템
도 1은 실시예들에 따른 예시적인 재조직 시스템(100)을 설명하는 개략적인 다이아그램이다. 상기 재조직 시스템(100)은 모바일 네트워크 오퍼레이터(MNO)(112)와 연관될 수 있는 커뮤니케이션 네트워크(180)를 포함할 수 있다. 상기 커뮤니케이션 네트워크(180)는 상기 MNO(112) 및 하나 이상의 장치들(102) 사이에 커뮤니케이션을 용이하게 하기 위해 구성될 수 있다. 상기 장치(102)는 모뎀/주거용 게이트웨이(107) 및/또는 라우터(104)를 통해 상기 커뮤니케이션 네트워크(180)를 접근하기 위해 구성될 수 있다. 상기 커뮤니케이션 네트워크(180)는 재조직 명령어 생성기(122)로 역시 연결될 수 있다. 도 1의 상기 시스템(100)이 오직 하나의 MNO(112) 및 커뮤니케이션 네트워크(180)를 포함하는 바와 같이 설명됨에도 불구하고, 상기 재조직 시스템(100)이 다중 커뮤니케이션 네트워크(180)과 차례로 연관된 복수의 MNO들(112)을 포함할 수 있는 것으로 이해되어야 한다. 비슷하게, 복수의 재조직 명령어 발생기들(122)은 사용될 수 있다.
상기 장치(102)는 데스크탑 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 핸드폰, 스마트폰 등과 같은 관련 기술 또는 메터들, 의료 장치들, 이식형들 등과 같은 어떤 다른 타입의 임베디드 장치에서 숙련된 자에게 명백할 것으로, 여기에 개시된 바와 같이, 상기 기능들을 수행하기 위해 적절한 장치의 어떤 타입일 수 있다. 상기 장치(102)의 실시예들은 도 3 및 7에 대하여 하기 보다 상세하게 논의된다. 상기 장치(102)는 비휘발성 저장(103)을 포함할 수 있다. 상기 비휘발성 저장(103)은 상기 제자리 재조직이 시도되기 위한 컨텐트일 수 있는 스토어 컨텐트일 수 있다. 상기 장치(102)는 구형 또는 원본 버전으로부터 신형 버전으로 상기 저장된 컨텐트를 재조직하기 위해 구성될 수 있다.
여기서 사용된 바와 같이, 상기 용어들 “구형 버전” 또는 “원본 버전”은 업데이트 전 컨텐트의 버전을 언급할 수 있다. 상기 용어들 “신형 버전”, “타겟 버전” 또는 “업데이트된 버전”은 이미 업데이트된 컨텐트를 포함하는 컨텐트의 버전을 언급할 수 있다. 상기 업데이트된 컨텐트가 추가로 업데이트될 수 있고, 그러한 경우에, 상기 제1 또는 이전 업데이트는 구형 컨텐트를 구성할 것이고, 제2 또는 차후 업데이트는 신형 컨텐트를 구성할 것임에 유의해야 한다.
상기 비휘발성 저장(103) 내 저장된 상기 원본 컨텐트의 재조직을 수행하기 위해, 상기 장치(102)는 상기 커뮤니케이션 네트워크(180)를 통해 상기 재조직 명령 생성기(122)로부터 재조직 명령어(122)를 수신할 수 있다. 몇몇 실시예들에서, 상기 재조직 명령어들은 상기 장치(102)(예컨대, 서버로부터 누름)로 상기 재조직 명령어 생성기(122)에 의해 전송될 수 있다. 다른 실시예들에서, 상기 재조직 명령어는 상기 재조직 명령어들 생성기(122)(예컨대, 서버로부터 당김)로부터 상기 장치에 의해 활발히 요청될 및/또는 획득될 수 있다. 하나의 실시예에서, 상기 재조직 명령어들은 상기 비휘발성 저장(103) 내 또는 분리형 저장 내에서 분할에서와 같은, 상기 장치(102) 내 임베디드될 수 있다. 다른 실시예에서, 상기 재조직 명령어들은 상기 장치(102) 내 실행되는 로직에 의한 것과 같은, 상기 장치(102)에 의해 생성될 수 있다.
그러면, 상기 장치(102)는 실행이 상기 타겟 조직 방식을 초래할 수 있는 업데이트 명령의 시퀀스를 포함하는 업데이트 패키지를 생성하기 위한 상기 획득된 명령어를 사용할 수 있고, 상기 재조직 명령어 각각은 상기 장치(102) 상에 시퀀스로 실행되기 위한 하나 이상의 업데이트 명령의 기초이다. 몇몇 실시예들에서, 상기 업데이트 명령은 이동, 재포맷, 변경 포맷, 조각 모음(defragment), 창작, 리사이즈 및 삭제 명령을 포함할 수 있다. 몇몇 예시들에서, 몇몇 예시들에서, 상기 업데이트 명령은 상기 비휘발성 저장(103) 내 포함된 특정 분할을 식별할 수 있다.
그러면, 상기 장치(102)는 재조직 프로세스를 착수할 수 있고, 그로 인해 상기 비휘발성 저장(103) 내 업데이트된 내용으로 상기 비휘발성 저장(103) 내 저장된 원본 컨텐트를 제자리 업데이트하기 위해, 상기 장치(102)는 상기 정의된 시퀀스 내 업데이트 명령의 상기 생성된 시퀀스를 적용할 수 있다. 몇몇 실시예들에서, 상기 장치(102)는 복수의 업데이트 패키지들로부터 생성되는 업데이트 명령을 적용할 수 있다. 몇몇 예시들에서, 상기 재조직 명령어 생성기(122)로 또는 대신하여 행동함으로써, 상기 재조직 명령어는 상기 MNO(112)에 의해 상기 장치로 전송될 수 있다. 예를 들면, 상기 MNO(112)는 상기 MNO(112)와 연관된 커뮤니케이션 네트워크(180) 상에 작동하는 스마트폰 상에 운영 시스템(예컨대, 안드로이드, iOS, 리눅스, 윈도우 등)을 업데이트하기 위해 재조직 명령어들을 전송할 수 있다.
상기 장치(102)에 의해 생성된 및/또는 적용된 상기 업데이트 명령은 재조직되기 위한 상기 컨텐트의 전체 신규 버전을 제공해야하는 것 없이, 및 상기 컨텐트의 구형 버전 및 상기 컨텐트의 신형 버전 사이에 차이점들(예컨대, 델타들)을 오직 제공하는 대신, 핸들 델타 업데이트들에 적용될 수 있는 업데이트 명령을 위해 사용되는 “델타 업데이트 명령”으로 컨셉화될 수 있다. 저장 장치의 컨텐츠의 제자리 업데이트에 사용되기 위한 업데이트 패키지들을 생성하기 위한 예시적인 시스템들 및 방법들은 그들의 전부 참고에 의해 여기 통합되는, 2007년 1월 11일 제출된 “Method and System for In-Place Updating Content Stored in a Storage Device”라는 제목의 미국 출원 번호 제11/652,147호; 2010년 2월 7일 제출된 “Method and System for In-Place Updating Content Stored in a Storage Device”라는 제목의 미국 출원 번호 제11/997,134호; 2007년 11월 9일 제출된 “Method and Apparatus for Generating an Update Package”라는 제목의 미국 출원 번호 제11/578,345호; 및 2010년 11월 16일 제출된 “Method and Apparatus for Generating an Update Package”라는 제목의 미국 출원 번호 제12/947,322호에서 설명된다.
비휘발성 저장
도 2는 상기 장치(102)의 비휘발성 저장(103)의 구성들 및 저장 조직 방식들을 설명한다. 도 2는 오직 설명의 수단으로서 제공되는 것이고, 상기 비휘발성 저장 매체(103)가 상기 설명된 실시예에 제한되지 않을 수 있음은 상기 관련 기술에서 숙련된 자들에게 명백해야 한다.
상기 비휘발성 저장(103)은 원본 조직 방식(213)의 원본 조직 단위들(205)을 포함할 수 있다. 상기 원본 조직 방식(213)은 상기 원본 조직 단위들(205) 및 그들의 대응하는 하나 이상의 데이터 블록들(예컨대, 데이터 블록들, 파일 컨텐츠 등)(206) 및 원본 조직 도구들(예컨대, 조직 로직, 프로그램 로직 등)(208)에 의해 형성될 수 있다. 도 2에서 설명된 바와 같이, 상기 원본 조직 도구들(208)은 상기 원본 저장 단위들(205)의 각각에 대응할 수 있다. 몇몇 실시예들에서, 상기 다중 원본 저장 단위들(205)이 동일한 파일 시스템 또는 구조를 공유하는 그러한 경우와 같이, 다중 원본 저장 단위들(205)은 단일 조직 도구(208)를 공유할 것이다. 상기 원본 조직 방식(213)이 복수의 원본 저장 단위들(205)을 포함하는 것으로 설명된다 할지라도, 상기 원본 조직 방식(213)은 단일 원본 저장 단위(205)에 대하여 형성될 수 있음에 역시 유의해야 한다.
상기 비휘발성 저장(103)은 타겟 조직 방식(214)에 기반하여, 상기 업데이트 명령들의 생성된 시퀀스에 기반하여, 상기 장치(102)에 의해 재조직될 수 있다. 상기 타겟 조직 방식(214)은 하나 이상의 타겟 저장 단위들(208), 그들의 대응하는 하나 이상의 데이터 블록들(210) 및 상기 타겟 저장 단위들(208) 각각에 대응하는 타겟 조직 도구들(211)에 의해 형성될 수 있다.
상기 장치(102)는 상기 원본 조직 방식(213)을 가지는 상기 비휘발성 저장(103)이 상기 타겟 조직 방식(214)에 기반하는 하나 이상의 타겟 저장 단위들(209)로 재조직될 수 있도록, 상기 결정된 시퀀스 내 상기 생성된 업데이트 명령을 적용할 수 있다. 조직 방식들에 기반하는 상기 저장된 컨텐트의 재조직은 도 5 및 6에 대하여 하기 보다 상세하게 논의된다. 상기 원본 조직 도구들(208)은 데이터 포맷들 및 소프트웨어 응용들 및/또는 상기 장치(102) 상에 설치된 상기 작동 시스템에 의해 사용되는 파일 시스템들에 대응할 수 있다. 예를 들어, 상기 원본 조직 방식(213)의 원본 조직 도구(208)는 데이터베이스 운영 시스템(예컨대, SQL, ORACLE 등), 웹 서버(예컨대, Apache 등)로부터 조직 로직 또는 프로그램 로직을 포함할 수 있고, 상기 대응하는 적어도 하나의 원본 저장 단위(205)에 의해 활용되는 상기 파일 시스템과 같은, 파일 시스템(예컨대, 신기술 파일 시스템, 파일 할당 테이블, 제4 확장된 파일 시스템, 계층적 파일 시스템 등)에 특정된 도구들일 수 있다. 상기 조직 도구들 및 로직들은 데이터 블록들(206) 및/또는 파일 또는 데이터 오브젝트들이 주어진 저장 단위 내 그안에 어떻게 포함하는지를 나타내는 어떤 로직 및/또는 추가적인 데이터가 접근되는 것을 포함할 수 있다.
무선 네트워크 내 저장 컨텐츠의 제자리 재조직
도 3은 무선 네트워크 환경 내 모바일 장치들의 비휘발성 저장 내 저장된 컨텐트의 제자리 재조직을 위한 시스템(300)을 설명한다.
상기 시스템(300)은 핸드폰들, 스마트폰들, 태블릿 컴퓨터들, 노트북 컴퓨터들, 개인 휴대 단말기들 등과 같은 복수의 장치들(102)을 포함할 수 있다. 장치(102) 각각은 재조직 명령어에 기반하여 생성되는 업데이트 명령의 시퀀스에 기반하여 재조직되기 위한 컨텐트를 저장하기 위해 구성될 수 있는 비휘발성 저장(103)을 포함할 수 있다.
몇몇 경우에 있어서, 상기 시스템(300) 내 장치들(102)은 무선 커뮤니케이션 프로토콜을 통해 무선 네트워크(372)로 커뮤니케이션하기 위해 구성될 수 있다. 그런 모바일 커뮤니케이션 장치들(102) 및 무선 네트워크들(372)은 서비스 제공자에 의해 서비스되는 무선 환경(302)의 부분일 수 있다. 하나의 실시예에서, 상기 서비스 제공자는 상기 MNO(112)와 같은, MNO일 수 있다. 상기 무선 네트워크들(372)은 상기 커뮤니케이션 네트워크(180)를 통해 상기 재조직 명령어 생성기(122)와 커뮤니케이션하기 위해 구성될 수 있다. 상기 시스템(300)은 상기 논의된 도 1 내 상기 시스템(100)과 비슷하게, 상기 커뮤니케이션 네트워크(180)와 직접적으로 커뮤니케이션하는 장치들(102)을 역시 포함할 수 있다.
상기 무선 환경(302) 내 상기 장치들(102)은 네트워크 접근 서버(312)를 통해 상기 대응하는 무선 네트워크(372)와 커뮤니케이션하기 위해 구성될 수 있다. 상기 네트워크 접근 서버(312)는 보안상 이유들을 위한 것과 같은, 상기 장치로/로부터 커뮤니케이션을 허용하기 전에 상기 장치(102)를 인증할 수 있다. 상기 네트워크 접근 서버(312)는 상기 장치들(102)로부터 요청을 수신할 수 있고, 상기 대응하는 장치들에 상기 무선 네트워크(372)로 접근을 제공할 수 있다. 몇몇 실시예들에서, 상기 네트워크 접근 서버들(312)은 접근 제어 서버(322)에 다음 전송되는 접근 요청 메시지를 생성하기 위해 추가로 구성될 수 있다. 상기 접근 요청 메시지의 포맷은 상기 무선 프로토콜이 상기 사용자를 인증하기 위한 상기 네트워크 접근 서버(312)에 의해 사용되는 것에 의존하여 다양할 수 있다. 상기 접근 요청 메시지를 위한 적절한 포맷들은 상기 관련 기술에서 숙련된 자들에게 명백할 것이고, 예를 들면, dynamic host configuration protocol(DHCP), remote authentication dial in user service(RADIUS), terminal access controller access control system(TACTCS) 등을 포함할 수 있다.
상기 접근 제어 서버(322)는 상기 접근 요청 메시지들을 수시하고, 상기 적절한 서버 제공자(예컨대, 상기 MNO(112))에게 상기 접근 요청 메시지들 및/또는 상기 접근 요청 메시지들 내 포함된 데이터를 포워딩하기 위해 구성될 수 있다. 상기 접근 제어 서버(322)는 인증을 수행하고, 적어도 하나의 포맷을 위한 접근 제어를 수행하기 위해 추가적으로 구성될 수 있다. 몇몇의 경우에 있어서, 상기 무선 네트워크(372)는 다수의 포맷들 각각을 위한 접근 요청 메시지들을 수신하기 위해 구성되는 다중 접근 제어 서버들(322)을 포함할 수 있다.
장치(102)의 상기 비휘발성 저장(103) 내 저장된 컨텐트를 재조직하기 위해, 상기 장치(102)는 상기 재조직 명령어 생성기(122)로부터 재조직 명령어를 요청할 수 있거나 수신할 수 있다. 이러한 목적을 수행하기 위해, 상기 장치(102a)와 같은 상기 장치(102)는 상기 네트워크 접근 서버(312a)를 통해 상기 무선 네트워크(372a)로 접근을 요청할 수 있다. 상기 네트워크 접근 서버(312a)는 접근 요청 메시지를 생성하고, 상기 무선 네트워크(372a)를 통해 상기 접근 제어 서버(322a)로 상기 메시지를 전송할 수 있다. 상기 접근 제어 서버(322a)는 상기 접근 요청 메시지를 수행하고, 그러면 상기 무선 네트워크(372a)로 접근하여 상기 장치(102a)를 차례로 제공할 수 있는, 상기 사용자/장치는 인증되었음을 상기 네트워크 접근에 표시할 수 있다. 그러면 상기 장치(102a)는 재조직 명령어를 요청 및/또는 수신하기 위해 상기 무선 네트워크(372a) 및 상기 커뮤니케이션 네트워크(180)을 통해 상기 재조직 명령어 생성기(122)와 커뮤니케이션할 수 있다.
몇몇 실시예들에서, 상기 무선 네트워크(372a)가 상기 커뮤니케이션 네트워크(180)일 수 있고/있거나 상기 재조직 명령어 생성기(122)가 상기 무선 네트워크(372a)와 직접적으로 커뮤니케이션 할 수 있음은 상기 관련 기술에서 숙련된 자들에게 명백할 것이다. 다른 실시예에서, 상기 장치(102c)와 같은 장치(102)는 상기 커뮤니케이션 네트워크(180)과 직접적으로 커뮤니케이션할 수 있다. 아직 다른 실시예에서, 상기 장치(102d)와 같은 장치(102)는 상기 재조직 명령어 생성기(122)와 직접적으로 커뮤니케이션하기 위해 구성될 수 있다.
장치
도 3은 도 3 내 상기 장치(102d)로 설명된, 상기 시스템들(100 및 300) 내 사용을 위한 장치(102)의 실시예를 포함한다. 상기 장치(102d)는 수신 모듈(321), 생성 모듈(332), 충돌 해결 모듈(342) 및 실행 모듈(334)을 포함할 수 있다. 상기 장치(102d)는 재조직되기 위한 상기 컨텐트를 저장하기 위한 상기 비휘발성 저장(103)을 역시 포함할 수 있다.
상기 수신 모듈(321)은 상기 재조직 명령어 생성기(122)로부터 상기 비휘발성 저장 내 상기 컨텐트를 재조직하기 위한 명령어를 수신 및/또는 획득하기 위해 구성될 수 있다. 몇몇 경우에 있어서, 상기 수신 모듈(321)은 상기 재조직 명령어 생성기(122)부터 상기 재조직 명령어를 요청할 수 있다(예컨대, 당김). 다른 경우에 있어서, 상기 수신 모듈(321)은 이전 요청 없이 상기 재조직 명령어 생성기(122)에 의해(예컨대, 누른) 전송된 상기 재조직 명령어를 수신할 수 있다. 몇몇 실시예들에서, 상기 수신 모듈(321)이 상기 MNO(112), 다른 장치(102) 등과 같은 상기 재조직 명령어 생성기(122)로서 또는 대신하여 행동하는 다른 개체로부터 상기 재조직 명령어를 수신할 수 있는 것은, 상기 관련 기술에서 기술을 가진 자들에게 명백할 것이다. 하나의 실시예에서, 상기 재조직 명령어는 상기 생성 모듈(332)에 의한 것과 같은, 상기 장치(102)에 의해 내부적으로 생성될 수 있다. 추가적인 실시예에서, 상기 분할이 거의 커패시티일 때, 상기 장치(102)는 분할을 변경/리사이징하기 위한 재조직 명령어가 생성되도록(예컨대, 자동적으로), 구성될 수 있다.
상기 생성 모듈(332)은 상기 재조직 명령어에 근거하여, 하나 이상의 원본 저장 단위들(205) 및 대응하는 원본 조직 도구들(208)을 가지는 상기 원본 조직 방식(213)으로부터 하나 이상의 타겟 저장 단위들(209) 및 대응하는 타겟 조직 도구들(211)을 가지는 상기 타겟 조직 방식(214)으로 상기 비휘발성 저장(103) 내 저장된 상기 컨텐트를 재조직할, 상기 장치(102)에 적용될 때와 같은, 업데이트 명령의 시퀀스를 생성하기 위해 구성될 수 있다.
업데이트 명령의 시퀀스를 생성하기 위해, 상기 생성 모듈(332)은 상기 타겟 조직 방식(214) 및 상기 타겟 조직 도구들(209)의 자극에 기반하여, 가상 저장으로 상기 비휘발성 저장(103) 내 저장된 상기 컨텐트를 가상적으로 기록함으로써와 같은, 가상 저장을 활용할 수 있다. 그러면, 상기 생성 모듈(332)은 상기 타겟 저장 단위에 가상적으로 기록된 상기 컨텐트를 캡쳐하고, 상기 비휘발성 저장에 필수적으로 하지 않고 그의 타겟 위치를 검출할 수 있다. 그러면, 상기 생성 모듈(332)은 상기 캡쳐된 컨텐트가 상기 원본 조직 방식(213) 및 그의 원본 위치에 따라 저장된 원본 컨텐트인지를 역시 결정할 수 있다. 상기 캡쳐된 컨텐트가 원본 컨텐트였다면, 그의 원본 위치로부터 상기 검출된 타겟 위치로 상기 컨텐트를 복사하기 위해, 상기 생성 모듈(332)은 복사본 업데이트 요구를 생성할 수 있다. 상기 컨텐트가 상기 원본 조직 방식(213) 내 상기 원본 컨텐트의 부분이 아니였다면(예컨대, 그것은 운영을 위한 상기 타겟 조직 방식(214)에 의해 생성됨), 삽입 업데이트 명령은 상기 검출된 타겟 위치에 상기 실제 컨텐트를 삽입하기 위해 생성될 수 있다.
따라서, 상기 생성이 상기 원본 조직 로직을 사용함으로써 상기 원본 조직 방식에 따라 조직되는 상기 비휘발성 저장 내 저장된 상기 컨텐츠를 획득하는 단계; 가상 저장에 그것을 가상적으로 기록하기 위한 상기 획득된 컨텐츠에 상기 타겟 조직 로직을 적용하는 단계; 상기 비휘발성 저장에 필수적으로 기록되지 않고 상기 비휘발성 메모리 내 그들의 각 타겟 위치에 상기 타겟 조직 로직에 의해 가상적으로 기록되는 데이터 요소들을 캡쳐하는 단계; 그들이 상기 비휘발성 저장 내 저장된 상기 원본 컨텐트의 부분인지 및 상기 비휘발성 저장 내 그들의 원본 위치라면 상기 캡쳐된 데이터 요소들을 위해 결정하는 단계; 상기 타겟 조직 방식 내 상기 타겟 위치에 이러한 데이터 요소들을 저장하기 위한 업데이트 명령을 생성하는 상기 비휘발성 메모리 내 저장된 상기 원본 컨텐트의 부분이 아닌 캡쳐된 데이터 요소들을 위한 것; 및 상기 비휘발성 저장 내 그들의 원본 위치들 및 상기 비휘발성 저장 내 상기 타겟 위치들 사이에 맵핑을 상기 업데이트 명령의 부분으로서, 창작하는 상기 비휘발성 메모리 내 저장된 상기 원본 컨텐츠의 부분인 캡쳐된 데이터 요소들을 위한 것을 포함하는 본 발명에 따른 방법의 예시이다.
몇몇의 경우에 있어서, 원본 조직 방식(213)으로부터 타겟 조직 방식(214)으로 상기 비휘발성 저장(103) 내 상기 저장된 컨텐트를 업데이트할 때, 상기 업데이트된 컨텐트를 생성하기 위해, 업데이트 명령은 상기 원본 컨텐트를 사용하기 위해 구성될 수 있다. 예를 들면, 상기 비휘발성 저장(103) 내 제1 위치에 저장된 원본 컨텐트는 상기 업데이트된 컨텐트의 부분을 구성하는 새로운 위치에 복사될 수 있다. 그러한 경우에 있어서, 상기 새로운 위치는 다른 원본 컨텐트를 저장하기 위해 이전에 사용되었을 수 있다. 그러한 경우에 있어서, 상기 새로운 위치로 복사된 상기 내용은 새로운 위치 내 상기 원본 내용을 중복기록할 수 있다. 새로운 위치 내 상기 원본 컨텐트가 역시 새로운 내용의 일부로 복사되고 활용될 수 있다면, 상기 상황은 원본 컨텐트가 그의 복사 이전에 중복기록되는 데에서 발행할 수 있다. 판독 이전 기록(WbR) 충돌이 발생하고, 해결이 부재하는 그러한 경우에 있어서, 상기 새로운위치 내 상기 원본 컨텐트는 중복기록되고 분실될 수 있다.
상기 충돌 해결 모듈(342)은 업데이트 명령의 상기 생성된 시퀀스에 근거하여, 잠재적 WbR 충돌을 식별하기 위해 구성될 수 있다. 상기 충돌 해결 모듈(342)은 상기 업데이트 명령의 시퀀스를 재주문하는 단계, 상기 비휘발성 저장(103) 내 고안된 백업 영역에 식별된 잠재적 WbR 충돌에 대응하는 컨텐트를 백업하는 단계, 업데이트 명령을 삭제하는 단계, 및 업데이트 명령을 변경하는 단계 중 하나를 수행함으로써 상기 잠재적 WbR 충돌을 해결하기 위해 추가적으로 구성될 수 있다. 바람직하게, 상기 컨텐트의 백업은 상기 백업을 위해 요구되는 저장의 양 또는 상기 백업을 창작하기 위해 요구되는 시간을을 감소함으로써 최적화된다. 몇몇의 경우에 있어서, 상기 충돌 해결 모듈(342)은 상기 업데이트 명령의 시퀀스의 부분으로 잠재적 WbR 충돌을 식별하기 위해 구성될 수 있다. 예를 들면, 상기 업데이트 명령을 실행하는 동안, 상기 충돌 해결 모듈(342)은 실행되기 위한 상기 시퀀스 내 다음 업데이트 요구가 WbR 충돌을 초래할 수 있음을 식별할 수 있고, 상기 업데이트 명령의 시퀀스가 계속되기 전 상기 플라이 상에 상기 충돌에 해결을 식별할 수 있다. 추가적인 경우에 있어서, 상기 식별된 WbR 충돌이 해결되는 동안, 상기 업데이트 명령의 시퀀스는 WbR 충돌이 일어나지 않는 상기 시퀀스 내 다른 다음 명령을 실행하기 위해 계속될 수 있다. WbR 충돌 및 그의 해결에 관한 추가적인 정보는 그들의 전부 참고에 의해 여기 각각 통합되는, 2000년 1월 25일 발행된 “Method for Generating and Reconstructing In-Place Delta Files”라는 제목의 미국 특허 제6,017,746호 및 2006년 8월 23일 제출된 “Method and System for Updating Content Stored in a Storage Device"라는 제목의 미국 특허 출원 번호 제11/508,337호 내 개시된다.
상기 업데이트된 버전 내 세그먼트(예컨대, 저장 단위, 데이터 블록(207) 등)가 상기 원본 버전 내 세그먼트에 대응하는 경우에 있어서, 상기 세그먼트들은 대응하는 세그먼트들 또는 매치된 세그먼트들로 고려될 수 있다. 일치는 상기 세그먼트들 사이에 어떤 로직 또는 산술 연관성으로 언급될 수 있고, 상기 업데이트된 세그먼트는 상기 원본 세그먼트의 복사본, 상기 원본 세그먼트의 수정된 복사본, 상기 원본 세그먼트의 컨텐트에 기반한 상기 업데이트된 세그먼트의 컨텐트를 컴퓨팅함으로써 수신하는 컨텐트 등일 수 있다. 몇몇의 경우에 있어서, 하나 이상의 업데이트된 세그먼트는 하나의 원본 세그먼트에 대응할 수 있거나, 단일 업데이트된 세그먼트는 하나 이상의 원본 세그먼트들에 대응될 수 있다.
상기 실행 모듈(334)은 상기 비휘발성 저장(103) 상에 상기 업데이트 명령의 시퀀스를 실행하기 위해 구성될 수 있다. 몇몇 실시예들에서, 상기 실행 모듈(334)은 상기 충돌 해결 모듈(342)에 의해 식별된 잠재적 WbR 충돌의 상기 해결을 뒤따르는 업데이트 명령의 상기 시퀀스를 실행할 수 있다. 다른 실시예들에서, 상기 실행 모듈(334)은 상기 충돌 해결 모듈(342)에 의해 WbR 충돌의 해결과 동시에 또는 간헐적으로 상기 업데이트 명령의 시퀀스를 실행할 수 있다.
상기 장치(102)가 추가적인 모듈들을 포함할 수 있거나, 상기 장치(102) 내 포함되는 것으로 도 3에 설명된 상기 모듈들이 하나 이상의 모듈의 기능들을 수행하기 위해 조합 및/또는 구성될 수 있음은 상기 관련 기술에서 숙련된 자들에게 명백할 것이다. 추가적으로, 상기 장치(102) 내 포함된 상기 모듈들은 하기 보다 상세하게 논의되는 것으로 및 상기 관련 기술에서 숙련된 자들에게 명백할 것으로 추가적인 기능들을 수행하기 위해 구성될 수 있다.
상기 장치(102)는 상기 비휘발성 저장(103) 내 저장된 상기 컨텐트의 신뢰가능한/비상안전 재조직에 제공하기 위해 구성될 수 있다. 신뢰가능하게 고려되어야 하는 상기 재조직에 있어서, 상기 연관된 업데이트 프로세스는 삭제되기 위한 휘발성 메모리 및/또는 커랩트(corrupt)되기(예컨대, 비상안전 작동) 위한 저장 내 블록을 일으키는 간섭 다음 조차도 재개할 수 있어야 한다. 몇몇 경우에 있어서, 상기 비휘발성 저장(103) 내 저장된 컨텐트의 비상안전 업데이트는 상기 비휘발성 저장(103) 내 기록된 상기 컨텐트 이전에 어떤 컨텐트의 백업을 포함할 수 있다. 그러한 경우에 있어서, 상기 메모리에 손상(예컨대, 커랩션(corruption))을 초래하는 어떤 간섭 또는 에러는 상기 백업된 컨텐트에 의해 치료될 수 있다.
다양한 기술들이 신뢰가능한 또는 비상안전 업데이트 내 사용되는 백업 메모리의 용법을 최적화하기 위해 사용될 수 있음은 상기 관련 기술에서 숙련된 자들에게 명백할 것이다. 백업 메모리를 최적화하기 위해 사용되기 위한 적절한 시스템들 및 방법들은 그들 전부 참고에 의해 여기 통합되는, 2006년 8월 23일 제출된 Evyatar Meller et al.의 "Method and System for Updating Content Stored in a Storage Device"라는 제목의 미국 특허 번호 제11/508,337호 및 2008년 6월 13일 제출된 Evyatar Meller et al.의 "Method and System for In-Place Updating Content Stored in a Storage Device"라는 제목의 미국 특허 번호 제11/997,134호 내 보다 상세하게 개시된다.
비휘발성 저장 내 컨텐트의 재조직
도 4는 상기 장치(102)의 상기 비휘발성 저장(103) 내 파일 시스템 레이아웃의 설명이다.
도 4에 설명된 바와 같이, 상기 비휘발성 저장(103)은 원본 조직 방식(213)에 기반하여 저장될 수 있는, 원본 버전(402) 내 컨텐트를 저장할 수 있다. 상기 원본 버전(402)은 제1 분할(406a), 제2 분할(408a) 및 시스템 분할(410a)과 같은 복수의 저장 단위들/분할들을 포함할 수 있다. 분할 각각은 단일 저장 단위 또는 분할(예컨대, 원본 저장 단위(205))일 수 있고, 다중 저장 단위들 또는 분할들로 구성될 수 있고, 또는 하나 이상의 데이터 블록들(예컨대, 데이터 블록들(206))로 구성될 수 있다.
상기 장치(102)는 타겟 조직 방식(214)에 기반하여 업데이트된 버전(404)에 상기 원본 조직 방식(213) 상에 기반하여 상기 저장된 컨텐트의 상기 원본 버전(420)을 재조직하기 위해 구성될 수 있다. 상기 장치(102)는 상기 비휘발성 저장(103) 내 저장된 상기 컨텐트가 상기 원본 버전(402)으로부터 상기 업데이트된 버전(404)으로 업데이트될 수 있도록, 재조직 명령어에 기반하여 업데이트 명령의 시퀀스를 생성하고 실행할 수 있다.
상기 업데이트된 버전(404)에서, 상기 비휘발성 저장은 제1 분할(406b), 제2 분할(408b) 및 시스템 분할(408c)을 여전히 포함할 수 있다. 도 4에서 설명된 바와 같이, 상기 업데이트된 버전(404) 내 상기 분할들(406b, 408b, 및 410b) 각각의 사이즈들은 상기 타겟 조직 방식(214) 및/또는 대응하는 타겟 조직 도구들(211)과 같은, 상기 원본 버전(402) 내 상기 대응하는 분할들(406a, 408a, 및 410c)의 사이즈와 다를 수 있다. 그러한 경우에 있어서, 상기 비휘발성 저장(103)은 특정 분할들의 사이즈를 증가 및/또는 감소시키기 위해 상기 타겟 조직 방식(214)에 기반하여 재조직될 수 있다.
예를 들어, 상기 장치(102)의 상기 비휘발성 저장(103)은 운용 시스템(OS)을 저장하기 위한, 상기 시스템 분할(410a)과 같은 시스템 분할을 포함할 수 있다. 상기 OS는 상기 운영 시스템을 저장하기 위해 상기 시스템 분할(410a)이 200 메가바이트가 되어야 하는 사이즈일 수 있다. 상기 비휘발성 저장(103)은 사용자 저장을 위한 분할과 같은 제1 분할(406a) 및 서비스 제공자(예컨대, 상기 MNO(112))에 의해 제공되는 어플리케이션 프로그램을 위한 분할과 같은 제2 분할(408a)을 역시 포함할 수 있다. 상기 제1 및 제2 분할들(406a 및 408a) 각각은 60 메가바이트일 수 있다.
상기 OS의 개발자는 버그들을 고치고 새로운 특징들을 추가하기 위한 것과 같은, 상기 OS를 위한 업데이트를 시판할 수 있다. 상기 OS의 신형 버전은 240 메가바이트로 증가하는 것과 같은, 상기 이용가능한 저장 공간 내 증가를 요구할 수 있다. 상기 OS의 신형 버전을 제공하기 위해서, 상기 비휘발성 저장(103)은 상기 시스템 분할이 요구되는 적어도 240 메가바이트를 포함하도록, 업데이트될 필요가 있을 수 있다. 상기 장치(102)의 수신 모듈(321)은 상기 OS의 업데이트된 버전을 제공하기 위해 상기 비휘발성 저장(103)을 재조직하기 위한 재조직 명령어를 수신 및/또는 획득할 수 있다.
상기 생성 모듈(332)은 상기 재조직 명령어에 기반하여 업데이트 명령의 시퀀스를 생성할 수 있고, 상기 충돌 해결 모듈(342)은 상기 업데이트 명령의 시퀀스에 기반하여 어떤 잠재적 WbR 충돌을 식별 및 해결할 수 있으며, 상기 실행 모듈(334)은 상기 비휘발성 저장(103) 상에 상기 업데이트 요구의 시퀀스를 실행할 수 있다. 실행되는 때, 상기 업데이트 명령은 상기 업데이트된 버전(404)으로 인지되는 상기 비휘발성 저장(103)의 상기 원본 버전(402)을 초래할 수 있다. 상기 재조직의 부분으로서, 상기 60MB 제1 분할(406a)은 40MB 분할(406b)로 줄어들 수 있고, 상기 제2 분할(408a)은 60MB로부터 상기 40MB 분할(408b)로 유사하게 줄어들 수 있으며, 상기 시스템 분할(410a)은 상기 업데이트된 버전(404) 내 상기 시스템 분할(410b) 내 설명된 것으로 상기 요구되는 240MB로 증가될 수 있다.
저장된 컨텐츠의 제자리 재조직을 위한 예시적인 방법
도 5는 상기 장치(102)의 상기 비휘발성 저장(103) 내 저장된 컨텐트의 제자리 재조직을 위한 제1 예시적인 방법을 설명한다.
단계(502)에서, 재조직 명령어는 적어도 하나의 원본 저장 단위(205) 및 그와 함께 연관된 원본 조직 로직(208)을 가지는 원본 조직 방식(213)으로부터 적어도 하나의 타겟 저장 단위(209) 및 그와 함께 연관된 대응하는 타겟 조직 도구(211)을 가지는 정의된 타겟 조직 방식(214)으로 상기 비휘발성 저장(103) 내 저장된 컨텐트의 재조직을 위해 수신 및/또는 획득될 수 있다(예컨대, 상기 수신 모듈(321)에 의해). 몇몇 실시예들에서, 상기 장치(102)는 상기 재조직 명령어 생성기(122)로부터와 같은, 상기 명령어를 요청할 수 있다. 다른 실시예들에서, 상기 재조직 명령어는 이전 요청 없이 상기 장치(102)로 전송될 수 있다. 다른 실시예에서, 상기 재조직 명령어는 내부 규칙에 부합하게 상기 장치(102)에 의해 내부적으로 생성될 수 있다.
하나의 실시예에서, 적어도 하나의 원본 저장 단위(205) 또는 타겟 저장 단위(209)는 상기 비휘발성 저장(103) 내 근접하지 않을 수 있다. 반면, 다른 실시예에서, 상기 원본 저장 단위 또는 타겟 저장 단위는 상기 비휘발성 저장(103) 내 근접할 수 있다. 몇몇 실시예들에서, 상기 비휘발성 저장(103)은 각각이 그와 함께 연관된 존중 원본 조직 도구 또는 로직(208)을 가지는, 복수의 분할들(예컨대, 원본 저장 단위들(205))을 포함할 수 있다. 다른 말로, 분할은 저장 단위의 예시이다. 그러한 실시예에 있어서, 상기 원본 조직 방식(213) 및 타겟 조직 방식(214)은 상기 복수의 분할들의 각 부분의 적어도 상기 사이즈, 위치 및 포맷을 포함할 수 있는 분할 레이아웃을 각각 포함할 수 있으며, 상기 재조직 명령어는 상기 원본 분할 레이아웃으로부터 상기 타겟 분할 레이아웃으로 상기 비휘발성 저장(103)을 재조직하기(예컨대, 재분할) 위한 명령어를 포함할 수 있다. 추가적인 실시예에서, 상기 명령어는 상기 복수의 분할들의 각 부분들을 위한 이동, 재포맷, 변경 포맷, 조각 모음, 창작, 리사이즈, 삭제 및 업데이트 명령 중 적어도 하나를 포함할 수 있다. 다른 추가적인 실시예에서, 상기 복수의 분할들은 특정 파일 시스템 포맷 내 적어도 하나의 파일 시스템 분할 저장 데이터를 포함할 수 있다.
단계(504)에서, 상기 원본 조직 방식(213)의 상기 원본 조직 도구들 또는 로직(208)은 상기 원본 저장 단위(205) 내 상기 원본 컨텐트 및 그의 위치를 획득하기 위해 사용될 수 있다. 단계(506)에서, 상기 타겟 조직 방식(214)의 상기 타겟 조직 도구들 또는 로직(109)은 상기 대응하는 타겟 저장 단위들(209) 내 그들의 타겟 위치를 검출하기 위한 가상 저장에 단계(104)에서 획득된 컨텐트를 가상적으로 기록하기 위해 시뮬레이션될 수 있다. 상기 타겟 단위들에 기록하기(예컨대, 가상적으로) 위한 컨텐트를 가진 상기 타겟 조직 도구(209)의 입력은 상기 타겟 조직 도구(209)에 제공되는 상기 입력 컨텐트를 산출하나, 상기 도구(209)에 의해 상기 컨텐트의 유지를 위한 상기 타겟 조직 도구(209)에 의해 생성되는 추가적인 컨텐트를 역시 산출할 수 있음에 유의해야 한다. 예를 들면, 상기 타겟 조직 도구(209)는 특정 파일 시스템 포맷을 유지하기 위해 생성되는 파일 헤더들, 메타 데이터 등 뿐만 아니라, 상기 비휘발성 저장(103)에 가상적으로 기록될 수 있는 컨텐트의 파일들이 제공될 수 있다. 따라서, 단계(506)은 상기 타겟 조직 도구(209)에 의해 가상적으로 기록된 상기 실제 컨텐트를 역시 캡쳐한다.
단계(508)에서, 상기 장치(102)는 단계(506)에서 캡쳐된 상기 가상적으로 기록된 컨텐트가 상기 원본 조직 방식(213)에 따라 상기 비휘발성 저장(103) 내 저장되는 원본 컨텐트였는지 또는 메타데이터와 같은 상기 원본 조직 방식(213)의 상기 원본 컨텐트의 부분으로 저장되지 않은 컨텐트였는지를 검출할 수 있다. 컨텐트가 상기 원본 조직 방식에 따라 저장된 원본 컨텐트인 것으로 결정된다면, 그러면, 단계(510)에서, 복사본 업데이트 명령은 상기 비휘발성 저장(103) 내 상기 획득된 원본 위치로부터 상기 타겟 조직 방식(214)에 기반한 상기 검출된 타겟 위치로 상기 대응하는 컨텐트를 복사하기 위해 생성될 수 있다. 상기 컨텐트가 원본 컨텐트가 아닌 것으로 결정된다면, 그러면, 단계(512)에서, 상기 장치(102)는 상기 타겟 조직 방식(214)에 기반하여 상기 검출된 타겟 위치로 상기 대응하는 컨텐트를 삽입하기 위한 삽입 명령을 생성할 수 있다.
몇몇 실시예들에서, 단계들(510 및 512)의 부분으로 생성되는 명령은 상기 타겟 조직 방식(214)에 기반하여 상기 비휘발성 저장(103) 내 상기 타겟 저장 단위들(209)을 생성하기 위해 사용되는 상기 업데이트 명령의 시퀀스로 고려될 수 있다. 몇몇 경우에 있어서, 상기 업데이트 명령의 생성된 시퀀스는 상기 비휘발성 저장(103)을 재조직하기 위해 상기 장치(102)에 의해 실행되기 위한 것과 같은, 하나 이상의 업데이트 패키지들로 생성될 수 있다.
몇몇 실시예들에서, 상기 방법(500)은 단계(514)를 역시 포함할 수 있다. 단계(514)에서, 상기 비휘발성 저장(103) 내 저장된 컨텐트는 상기 장치(102)의 고안된 비휘발성 저장 영역으로 백업될 수 있다. 추가적인 실시예에서, 상기 비휘발성 저장 영역은 상기 비휘발성 저장(103) 내 특정 저장 단위(들) 또는 분할(들)일 수 있다. 몇몇 경우에 있어서, 단계(514)는 상기 저장된 컨텐트의 신뢰성있는/비상안전 재조직을 보장하기 위해 수행될 수 있다. 단계(514)가 선택적인 단계인 것은 상기 관련 기술에서 숙련된 자들에게 명백할 것이다.
단계(516)에서, 어떤 잠재적 WbR 충돌은 업데이트 명령의 시퀀스에 기반하여 식별될 수 있다(예컨대, 상기 충돌 해결 모듈(342)에 의해). 단계(518)에서, 어떤 잠재적 WbR 충돌이 단계(516) 내 식별되었다면, 상기 장치(102)는 결정될 수 있다. 충돌이 식별되지 않았다면, 그러면 상기 방법(500)은 단계(524)로 진행할 수 있다. 충돌이 식별되었다면, 그러면, 몇몇 실시예들에서, 식별된 WbR 충돌에 대응하는 컨텐트의 상기 백업은 단계(520) 내 수행될 수 있다. 단계(520)가 선택적이고, 오직 컨텐트의 상기 백업이 식별된 WbR 충돌을 해결하기 위해 필수적일 수 있는 경우 수행되는 것은 상기 관련 기술에서 숙련된 자들에게 명백할 것이다. 몇몇 실시예들에서, 단계들(510 및/또는 512)은 상기 백업을 위해 요구되는 저장 공간 및/또는 시간의 양이 감소되도록, 단계들(510 및/또는 512) 내 수행되기 위한 상기 백업을 최적화하기 위해 구성되는 생성된 명령어를 추가로 포함할 수 있다.
단계(522)에서, 상기 식별된 WbR 충돌은 해결될 수 있다(예컨대, 상기 충돌 해결 모듈(342)에 의해). 몇몇 실시예들에서, 상기 식별된 잠재적 WbR 충돌의 해결은 상기 업데이트 명령의 시퀀스의 재배열, 업데이트 명령 추가, 업데이트 명령 삭제 또는 업데이트 명령 수정 중 적어도 하나의 수행에 의해 획득될 수 있다. 단계(524)에서, 상기 장치(102)(예컨대, 상기 실행 모듈(334))는 상기 비휘발성 저장(103) 내 저장된 상기 컨텐트를 재조직하기 위한 상기 업데이트 명령의 시퀀스를 실행할 수 있다. 단계들(520 및 522) 또는 단계들(516-522)의 몇몇 경우는 단계(524)와 동시에 및/또는 간헐적으로 수행될 수 있음은 상기 관련 기술에서 숙련된 자들에게 명백할 것이다. 예를 들면, WbR 충돌은 상기 업데이트 명령의 실행 동안 그들이 발생하는 것으로, 및 상기 업데이트 명령의 시퀀스의 부분으로서 또는 동시에 수행되는 해결들로 식별될 수 있다.
바람직한 실시예에 따라, 비휘발성 저장이 재조직되는 상기 장치는 상기 비휘발성 저장 내 저장되는 컨텐츠의 상기 제자리 재조직 동안 여전히 작동한다. 다른 말로, 상기 비휘발성 저장의 상기 컨텐트는 상기 장치의 작동가능한 소프트웨어를 실행하는 프로세서에 여전히 접근가능하고, 상기 장치는 사용자가 상기 재조직이 회피되는 동안 상기 장치의 정상 방법 및 중단에서 상기 장치를 사용하기 위해 계속할 수 있도록, 상기 재조직 업무에 추가적인 업무들을 수행할 수 있다.
컴퓨터 시스템 구조
도 6은 컴퓨터 판독가능한 코드로서 실행될 수 있는, 본 발명의 실시예들 또는 그의 부분들 내 컴퓨터 시스템(600)을 설명한다. 예를 들면, 도 1의 상기 장치(102), 상기 모바일 네트워크 오퍼레이터(112) 및 상기 재조직 명령어 생성기(122)는 하드웨어, 소프트웨어, 펌웨어, 그위에 저장된 명령어를 가지는 비일시적인 컴퓨터 판독가능한 매체, 또는 그의 조합을 사용하는 상기 컴퓨터 시스템(600) 내 실행될 수 있고, 하나 이상의 컴퓨터 시스템들 또는 다른 프로세싱 시스템들 내 실행될 수 있다. 하드웨어, 소프트웨어 또는 그의 어떤 조합은 도 5 및 6의 방법들을 실행하기 위해 사용되는 상징 모듈들 또는 구성들일 수 있다.
프로그램가능한 로직이 사용된다면, 그러한 로직은 상업적으로 이용가능한 프로세싱 플랫폼 또는 특별 목적 장치 상에 실행될 수 있다. 상기 기술에서 통상 기술을 가진 자는 상기 개시된 주제의 실시예들이 가상적인 어떤 장치로 상징될 수 있는 편재형 또는 미니어쳐 컴퓨터들과 마찬가지로, 멀티-코어 멀티프로세서 시스템들, 미니컴퓨터들, 메인 프레임 컴퓨터들, 분산된 기능들을 가지고 링크되거나 클러스터된 컴퓨터들을 포함하는 다양한 컴퓨터 시스템 구성들로 연습될 수 있음을 인정할 수 있다. 예를 들어, 적어도 하나의 프로세서 장치 및 메모리는 상기 서술된 실시예들을 실행하기 위해 사용될 수 있다.
여기서 논의된 바로서 프로세서 장치는 단일 프로세서, 복수의 프로세서들 또는 그의 조합일 수 있다. 프로세서 장치들은 하나 이상의 프로세서 “코어들”을 가질 수 있다. 여기서 논의된 바로서 상기 용어들 “컴퓨터 프로그램 매체”, “비일시적인 컴퓨터 판독가능한 매체” 및 “컴퓨터 사용가능한 매체”는 탈착가능한 저장 장치(618), 탈착가능한 저장 장치(622) 및 하드디스크 드라이브(612) 내 설치된 하드디스크와 같은 실재하는 매체를 일반적으로 언급하기 위해 사용된다.
본 발명의 다양한 실시예들은 이러한 예시적인 컴퓨터 시스템(600)의 용어로 설명된다. 이러한 설명을 판독한 후, 어떻게 다른 컴퓨터 시스템들 및/또는 컴퓨터 구조들을 사용하는 본 발명을 실행하는지는 상기 관련 기술에서 숙련된 자에게 명백해질 것이다. 오퍼레이션들이 순차적인 프로세스로 설명될 수 있음에도 불구하고, 상기 오퍼레이션들 몇몇은 평행하게, 동시에, 및/또는 분산된 환경에서, 및 단일 또는 멀티프로세서 머신에 의한 접근을 위해 국지적으로 또는 원격으로 저장된 프로그램 코드를 가지고 사실 수행될 수 있다. 추가적으로, 몇몇 실시예들에서 오퍼레이션들의 순서는 상기 개시된 주제의 정신에서 벗어나지 않고 재배열될 수 있다.
프로세서 장치(604)는 특별 목적 또는 일반 목적 프로세서 장치일 수 있다. 상기 프로세서 장치(604)는 버스, 메시지 큐(queue), 네트워크, 멀티코어 메시지전달 방식 등과 같은 커뮤니케이션 기반구조(606)에 연결될 수 있다. 상기 네트워크(예컨대, 상기 커뮤니케이션 네트워크(180))는 여기에 개시된 바로서 기능들을 수행하기 위해 적절한 어떤 네트워크일 수 있고, 로컬 영역 네트워크(LAN), 광역 네트워크(WAN), 무선 네트워크(예컨대, WiFi), 모바일 커뮤니케이션 네트워크, 위성 네트워크, 상기 인터넷, 광섬유, 동축 케이블, 적외선, 라디오 주파수(RF) 또는 그의 어떤 조합을 포함할 수 있다. 다른 적절한 네트워크 타입들 및 구성들은 상기 관련 기술에서 숙련된 자들에게 명백할 것이다. 상기 컴퓨터 시스템(600)은 주 메모리(608)(예컨대, 랜덤 접근 메모리, 판독 전용 메모리 등)를 역시 포함할 수 있고, 제2 메모리(610)를 역시 포함할 수 있다. 상기 제2 메모리(610)는 상기 하드 디스크 드라이브(612) 및 플로피 디스크 드라이브, 자석 타입 드라이브, 광학 디스크 드라이브, 플래쉬 메모리 등과 같은 탈착가능한 저장 드라이브(614)를 포함할 수 있다.
상기 탈착가능한 저장 드라이브(614)는 잘 알려진 방법으로 상기 탈착가능한 저장 장치(618)로부터 판독 및/또는 기록될 수 있다. 상기 탈착가능한 저장 장치(618)는 상기 탈착가능한 저장 드라이브(614)에 의해 판독되고 기록될 수 있는 탈착가능한 저장 매체를 포함할 수 있다. 예를 들어, 상기 탈착가능한 저장 드라이브(614)가 플로피 디스크 드라이브라면, 상기 탈착가능한 저장 장치(618)는 플로피 디스크일 수 있다. 하나의 실시예에서, 상기 탈착가능한 저장 장치(618)는 비일시적 컴퓨터 판독가능한 레코팅 매체일 수 있다.
몇몇 실시예들에서, 상기 제2 메모리(610)는 예를 들어, 상기 탈착가능한 저장 장치(622) 및 인터페이스(620)인, 상기 컴퓨터 시스템(600)으로 로드되기 위한 컴퓨터 프로그램들 또는 다른 명령어들을 허용하기 위한 대안적인 수단들을 포함할 수 있다. 그러한 수단들의 예시들은 상기 관련 기술에서 숙련된 자들에게 명백할 것으로서, 프로그램 카트리지 및 카트리지 인터페이스(예컨대, 비디오 게임 시스템들에서 발견된 바로서), 탈착가능한 메모리 칩(예컨대, EEPROM, PROM 등) 및 연관된 소켓 및 다른 탈착가능한 저장 장치들(622) 및 인터페이스들(620)을 포함할 수 있다. 컨텐츠의 제자리 재조직을 위한 여기에 개시된 방법들은 컨텐트 재조직에 적절한 상기 컴퓨터 시스템(600) 내에 포함된 어떤 상기 메모리들 상에 수행될 수 있다.
상기 컴퓨터 시스템(600)(예컨대, 주 메모리(608) 및/또는 상기 제2 메모리(610)) 내 저장된 데이터는 광학적 저장(예컨대, 컴팩트 디스크, 디지털 다용도 디스크, 블루레이 디스크 등) 또는 자석 테이프 저장(예컨대, 하드 디스크 드라이브)과 같은 어떤 타입의 적절한 컴퓨터 판독가능한 매체 상에 저장될 수 있다. 상기 데이터는 관계형 데이터베이스, 구조된 구조화 질의 언어(SQL) 데이터베이스, 분산형 데이터베이스, 객체 데이터베이스 등과 같은 적절한 데이터베이스 구성의 어떤 타입으로 구성될 수 있다. 적절한 구성들 및 저장 타입들은 상기 관련 기술에서 숙련된 자들에게 명백할 것이다.
상기 컴퓨터 시스템(600)은 커뮤니케이션 인터페이스(624)를 역시 포함할 수 있다. 상기 커뮤니케이션 인터페이스(624)는 상기 컴퓨터 시스템(600) 및 외부 장치들 사이에서 이동되기 위한 소프트웨어 및 데이터를 허용하기 위해 구성될 수 있다. 예시적인 커뮤니케이션 인터페이스들(624)은 모뎀, 네트워크 인터페이스(예컨대, 이더넷 카드), 커뮤니케이션 포트, PCMCIA 슬롯 및 카드 등을 포함할 수 있다. 상기 커뮤니케이션 인터페이스(624)를 통해 이동되는 소프트웨어 및 데이터는 상기 관련 기술에서 숙련된 자들에게 명백할 것으로서, 전기적, 전자기적, 광학적 또는 다른 신호들일 수 있다. 상기 신호들은 상기 신호들을 전달하기 위해 구성될 수 있고, 전선, 케이블, 광섬유, 전화선, 핸드폰 링크, 라디오 주파수 링크 등을 사용하여 실행될 수 있는, 커뮤니케이션 통로(626)를 통해 이동할 수 있다.
컴퓨터 프로그램 매체 및 컴퓨터 사용가능한 매체는 메모리 반도체들(예컨대, DRAM들 등)일 수 있는 상기 주요 메모리(608) 및 제2 메모리(610)와 같은 메모리들로 언급될 수 있다. 이러한 컴퓨터 프로그램 제품들은 상기 컴퓨터 시스템(600)에 소프트웨어를 제공하기 위한 수단들일 수 있다. 컴퓨터 프로그램들(예컨대, 컴퓨터 제어 로직)은 상기 주요 메모리(608) 및/또는 상기 제2 메모리(610) 내 저장될 수 있다. 컴퓨터 프로그램들은 상기 커뮤니케이션 인터페이스(624)를 통해 역시 수신될 수 있다. 실행되는 때, 그러한 컴퓨터 프로그램들은 여기에 논의된 바와 같이, 본 방법들을 실행하기 위한 컴퓨터 시스템(600)을 가능하게 할 수 있다. 특히, 실행되는 때, 상기 컴퓨터 프로그램들은 프로세서 장치(604)가 여기에 논의된 바와 같이, 도 5 및 6에 의해 설명된 상기 방법들을 실행하는 것을 가능하게 할 수 있다. 따라서, 그러한 컴퓨터 프로그램들은 상기 컴퓨터 시스템(600)의 제어기들을 나타낼 수 있다. 본 발명은 소프트웨어를 사용함으로써 이행되는 데에서, 상기 소프트웨어는 컴퓨터 프로그램 제품 내 저장될 수 있고, 탈착가능한 드라이브(614), 인터페이스(620) 및 하드 디스크 드라이브(612) 또는 커뮤니케이션 인터페이스(614)를 사용하는 상기 컴퓨터 시스템(600)으로 로드될 수 있다.
본 발명과 일치하는 기술들은, 다른 특징들 중, 비휘발성 저장 내 컨텐트의 제자리 재조직을 위한 시스템들 및 방법들을 제공한다. 상기 개시된 시스템 및 방법의 다양한 실시예들이 상기 설명되는 동안, 이는 그들이 오직 예시의 목적을 위해 제시되는 것으로 이해되어야 하나, 제한되지 않는다. 이는 철저하지 않고 상기 개시를 개시된 정확한 형태로 제한하지 않는다. 수정 및 변형은 상기 가르침에 비추어 가능하거나, 상기 너비 또는 범위에서 벗어나지 않고, 상기 개시의 연습으로부터 습득될 수 있다.

Claims (16)

  1. 장치의 비휘발성 저장에 저장되고, 적어도 하나의 원본 저장 단위 및 그와 함께 연관된 원본 조직 로직을 가지는 원본 조직 방식(scheme), 적어도 하나의 타겟 저장 단위 및 그와 함께 연관된 타겟 조직 로직을 가지는 타겟 조직 방식(scheme)에 따라 조직되는 컨텐츠의 제자리(in-place) 재조직을 위한 방법으로서,
    상기 방법은
    상기 원본 조직 방식으로부터 정의된 타켓 조직 방식으로 상기 비휘발성 저장 내 상기 컨텐츠를 재조직하기 위한 명령어를 획득하는 단계;
    상기 명령어 및 가상 저장에 상기 타겟 조직 로직의 적용에 기반하여, 상기 타겟 조직 방식에 따라 조직되는 상기 적어도 하나의 타겟 저장 단위를 상기 비휘발성 저장 내 생성하기 위한 업데이트 명령의 시퀀스를 상기 장치 상에 생성하는 단계; 및
    상기 비휘발성 저장 상에 상기 업데이트 명령을 실행하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 업데이트 명령의 시퀀스에 기반하여, 잠재적 판독 이전 기록 충돌을 식별하는 단계; 및
    상기 식별된 잠재적 판독 이전 기록 충돌을 해결하는 단계를 추가로 포함하는 방법.
  3. 제2항에 있어서,
    상기 장치의 고안된 비휘발성 저장 영역 내 백업으로, 비상안전(failsafe) 재조직을 가능하게하기 위해 요구되는 상기 비휘발성 저장으로부터 컨텐츠를 백업하는 단계를 추가로 포함하는 방법.
  4. 제2항에 있어서,
    상기 해결은
    상기 업데이트 명령의 시퀀스를 재배열하는 단계;
    상기 장치의 고안된 비휘발성 저장 영역 내 백업으로, 식별된 잠재적 판독 이전 기록 충돌에 대응하는 컨텐츠를 백업하는 단계;
    업데이트 명령을 추가하는 단계;
    업데이트 명령을 삭제하는 단계; 및
    업데이트 명령을 변경하는 단계 중 하나 이상을 포함하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 명령어는 상기 컨텐츠를 업데이트하기 위한 명령을 포함하는 방법.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 비휘발성 저장은 그와 함께 연관된 각 조직 로직을 각각 가지는 복수의 분할들을 포함하고;
    상기 원본 및 타겟 조직 방식들은 복수의 분할들의 사이즈, 위치 및 포맷을 지시하는 분할 레이아웃을 각각 포함하며;
    상기 명령어는 원본 분할 레이아웃으로부터 상기 정의된 타겟 분할 레이아웃으로 상기 비휘발성 저장을 재분할하기 위한 명령어를 포함하는 방법.
  7. 제6항에 있어서,
    상기 재분할하기 위한 명령어는 복수의 분할들 중 각 하나들을 위한 이동, 재포맷, 변경 포맷, 조각 모음(defragment), 창작, 리사이즈, 삭제 및 업데이트 명령을 포함하는 방법.
  8. 제6항에 있어서,
    상기 장치는 컴퓨팅 장치이고,
    상기 복수의 분할들은 특정 파일 시스템 포맷의 데이터를 저장하는 적어도 하나의 파일 시스템 분할을 포함하는 방법.
  9. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 생성은
    상기 원본 조직 로직을 사용함으로써 상기 원본 조직 방식에 따라 조직되는 상기 비휘발성 저장 내 저장된 상기 컨텐츠를 획득하는 단계;
    가상 저장에 그것을 가상적으로 기록하기 위한 상기 획득된 컨텐츠에 상기 타겟 조직 로직을 적용하는 단계;
    상기 비휘발성 저장에 필수적으로 기록되지 않고 비휘발성 메모리 내 그들의 각 타겟 위치에 상기 타겟 조직 로직에 의해 가상적으로 기록되는 데이터 요소들을 캡쳐하는 단계;
    그들이 상기 비휘발성 저장 내 저장된 원본 컨텐츠의 부분인지 및 상기 비휘발성 저장 내 그들의 원본 위치라면 상기 캡쳐된 데이터 요소들을 위해 결정하는 단계;
    상기 타겟 조직 방식 내 상기 타겟 위치에 이러한 데이터 요소들을 저장하기 위한 업데이트 명령을 생성하는 상기 비휘발성 메모리 내 저장된 상기 원본 컨텐츠의 부분이 아닌 캡쳐된 데이터 요소들을 위한 것; 및
    상기 비휘발성 저장 내 그들의 원본 위치들 및 상기 비휘발성 저장 내 상기 타겟 위치들 사이에 맵핑을 상기 업데이트 명령의 부분으로서, 창작하는 상기 비휘발성 메모리 내 저장된 상기 원본 컨텐츠의 부분인 캡쳐된 데이터 요소들을 위한 것을 포함하는 방법.
  10. 제9항에 있어서,
    상기 데이터 요소는 파일들, 레코드들, 파일 헤더들 및 메타데이터를 포함하는 방법.
  11. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 장치는 상기 재조직 동안 여전히 작동하는 방법.
  12. 제8항에 있어서,
    상기 장치는 리눅스 또는 안드로이드 작동 시스템에 따라 작동하고;
    상기 파일 시스템 분할은 제4 확장된 파일 시스템(ext4) 분할들인 방법.
  13. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 획득은
    내부 규칙에 따라 상기 장치 상에 내부적으로 명령어를 생성하는 단계; 및 외부 소스로부터 명령어를 수신하는 단계 중 하나 또는 둘을 포함하는 방법.
  14. 그와 함께 연관된 원본 조직 로직을 각각 가지는 복수의 저장 단위들을 포함하는 원본 조직 방식으로 물리적 저장을 가지는 컴퓨팅 장치에 의해 실행된다면, 상기 컴퓨팅 장치로 하여금 타겟 조직 방식으로 상기 물리적 저장의 제자리 재조직을 수행하도록 하는, 그에 대해 저장되는 프로그램 로직을 가지는 비일시적인 컴퓨터 판독가능한 매체로서,
    상기 프로그램 로직은
    상기 원본 조직 방식으로부터 그와 함께 연관된 타겟 조직 로직을 각각 가지는 복수의 타겟 저장 단위들을 가지는 정의된 타겟 조직 방식으로 상기 물리적 저장을 재조직하기 위한 명령어를 획득하기 위한 프로그램 로직;
    상기 명령어 및 상기 조직 로직들의 자극에 기반하여, 상기 물리적 저장 내 상기 복수의 타겟 저장 단위들을 생성하기 위한 업데이트 명령의 시퀀스를 상기 컴퓨팅 장치 상에, 생성하기 위한 프로그램 로직;
    상기 업데이트 명령의 시퀀스에 근거하여, 상기 업데이트 명령이 수행된다면, 중복기록된 상기 물리적 저장 내 데이터를 초래할 수 있는 잠재적 판독 이전 기록 충돌을 식별하기 위한 프로그램 로직;
    상기 식별된 잠재적 판독 이전 기록 충돌을 해결하기 위한 프로그램 로직; 및
    상기 물리적 저장 상에 상기 업데이트 명령을 실행하기 위한 프로그램 로직을 포함하는 비일시적인 컴퓨터 판독가능한 매체.
  15. 적어도 하나의 타겟 저장 단위 및 그와 함께 연관된 타겟 로직을 가지는 타겟 조직 방식으로 원본 조직 방식을 가지는 모바일 디바이스의 비휘발성 저장의 제자리 재조직을 위한 시스템으로서,
    상기 시스템은
    상기 원본 조직 방식으로부터 적어도 하나의 타겟 저장 단위 및 그와 함께 연관된 타겟 조직 로직을 가지는 정의된 타겟 조직 방식으로 상기 비휘발성 저장을 재조직하기 위한 명령어를 획득하기 위해 구성되는 획득 모듈;
    상기 명령어 및 상기 조직 로직의 자극에 근거하여, 상기 비휘발성 저장 내 상기 적어도 하나의 타겟 저장 단위를 생성하기 위한 업데이트 명령의 시퀀스를 상기 모바일 디바이스 상에, 생성하기 위해 구성되는 생성 모듈;
    상기 업데이트 명령의 시퀀스에 기반하여, 상기 업데이트 명령이 수행된다면, 중복기록된 상기 비휘발성 저장 내 데이터를 초래할 수 있는 잠재적 판독 이전 기록 충돌을 식별하기 위한 상기 조직 로직을 인보크(invoke)하기 위해 구성되는 충돌 식별 모듈;
    상기 식별된 잠재적 판독 이전 기록 충돌을 해결하기 위해 구성된 충돌 해결 모듈; 및
    상기 비휘발성 저장 상에 상기 업데이트 명령을 실행하기 위해 구성되는 실행 모듈을 포함하는 시스템.
  16. 제15항에 있어서,
    상기 생성 모듈은 상기 비휘발성 저장에 기록되지 않고 상기 비휘발성 저장 내 그의 타겟 기록 위치를 기록하기 위한 상기 타겟 조직 로직을 자극하기 위해 추가적으로 구성되는 시스템.
KR1020157002033A 2012-06-26 2013-06-18 장치 저장의 제자리 재조직을 위한 시스템들 및 방법들 KR102118161B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261664634P 2012-06-26 2012-06-26
US61/664,634 2012-06-26
PCT/IB2013/001270 WO2014001870A1 (en) 2012-06-26 2013-06-18 Systems and methods for in-place reorganization of device storage

Publications (2)

Publication Number Publication Date
KR20150040276A KR20150040276A (ko) 2015-04-14
KR102118161B1 true KR102118161B1 (ko) 2020-06-03

Family

ID=49151253

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157002033A KR102118161B1 (ko) 2012-06-26 2013-06-18 장치 저장의 제자리 재조직을 위한 시스템들 및 방법들

Country Status (3)

Country Link
EP (1) EP2864864B1 (ko)
KR (1) KR102118161B1 (ko)
WO (1) WO2014001870A1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050430A1 (en) 2005-08-23 2007-03-01 Red Bend Ltd., Israeli Company Of Method and system for updating content stored in a storage device
US20100030823A1 (en) 2008-08-04 2010-02-04 Red Bend Ltd. Performing a pre-update on a non volatile memory

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
US6209059B1 (en) * 1997-09-25 2001-03-27 Emc Corporation Method and apparatus for the on-line reconfiguration of the logical volumes of a data storage system
US6018747A (en) 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US7334156B2 (en) * 2004-02-13 2008-02-19 Tandberg Data Corp. Method and apparatus for RAID conversion
US8438355B2 (en) * 2010-10-29 2013-05-07 International Business Machines Corporation Temporary VTOC locking during defragmentation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050430A1 (en) 2005-08-23 2007-03-01 Red Bend Ltd., Israeli Company Of Method and system for updating content stored in a storage device
US20100030823A1 (en) 2008-08-04 2010-02-04 Red Bend Ltd. Performing a pre-update on a non volatile memory

Also Published As

Publication number Publication date
KR20150040276A (ko) 2015-04-14
WO2014001870A9 (en) 2014-03-13
WO2014001870A1 (en) 2014-01-03
EP2864864A1 (en) 2015-04-29
EP2864864B1 (en) 2020-07-29

Similar Documents

Publication Publication Date Title
US10430286B2 (en) Storage control device and storage system
US8356148B2 (en) Snapshot metadata management in a storage system
US10228854B2 (en) Storage devices and methods for optimizing use of storage devices based on storage device parsing of file system metadata in host write operations
KR101769448B1 (ko) 주석이 달린 극소 기록 작동을 수행하기 위한 방법 및 장치
US9122692B1 (en) Systems and methods for reducing file-system fragmentation when restoring block-level backups utilizing an identification module, an optimization module, and a restore module
US8924664B2 (en) Logical object deletion
US20170131913A1 (en) Managing Data in a Storage System
US8392915B2 (en) Efficient volume manager hot swapping
US8495351B2 (en) Preparing and preserving a system configuration during a hot upgrade
US9563375B2 (en) Method for storing metadata of log-structured file system for flash memory
US11314420B2 (en) Data replica control
US8280858B2 (en) Storage pool scrubbing with concurrent snapshots
US10346150B2 (en) Computerized system and method for patching an application by separating executables and working data using different images
CN106326229B (zh) 一种嵌入式系统的文件存储方法和装置
US9256373B1 (en) Invulnerable data movement for file system upgrade
US10346368B2 (en) Method and apparatus of per-block-group journaling for ordered mode journaling file system
US9588884B2 (en) Systems and methods for in-place reorganization of device storage
CN103970557A (zh) 存储设备启动系统的方法及存储设备
US9251020B1 (en) Systems and methods for file-level replication
US11409451B2 (en) Systems, methods, and storage media for using the otherwise-unutilized storage space on a storage device
CN117131014A (zh) 数据库迁移方法、装置、设备及存储介质
KR102118161B1 (ko) 장치 저장의 제자리 재조직을 위한 시스템들 및 방법들
US9235349B2 (en) Data duplication system, data duplication method, and program thereof
CN106557275B (zh) 一种数据处理的方法及装置
CN115640269A (zh) 一种基于按需复制的安卓应用安装加速方法

Legal Events

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