KR20230001522A - 펌웨어 이미지의 부트 업 활성화를 위한 시스템들 및 방법 - Google Patents

펌웨어 이미지의 부트 업 활성화를 위한 시스템들 및 방법 Download PDF

Info

Publication number
KR20230001522A
KR20230001522A KR1020220073804A KR20220073804A KR20230001522A KR 20230001522 A KR20230001522 A KR 20230001522A KR 1020220073804 A KR1020220073804 A KR 1020220073804A KR 20220073804 A KR20220073804 A KR 20220073804A KR 20230001522 A KR20230001522 A KR 20230001522A
Authority
KR
South Korea
Prior art keywords
firmware
file system
slot
storage device
boot
Prior art date
Application number
KR1020220073804A
Other languages
English (en)
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 KR20230001522A publication Critical patent/KR20230001522A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • 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/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • 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/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

스토리지 장치가 기재된다. 스토리지 장치는 제1 스토리지를 포함할 수 있다. 제1 스토리지는 제1 펌웨어를 저장하는 주 펌웨어 슬롯, 제2 펌웨어를 저장하는 제2 펌웨어 슬롯, 현존하는 파일 시스템을 저장하는 주 파일 시스템 슬롯, 그리고 제2 파일 시스템 슬롯을 포함할 수 있다. 스토리지 장치는 제1 펌웨어 또는 제2 펌웨어를 실행하도록 구성되는 프로세서를 포함할 수 있다. 스토리지 장치는 현존하는 파일 시스템을 사용하도록 구성되며, 사용자 데이터를 위한 제2 스토리지를 포함할 수 있다. 제2 펌웨어는 제2 펌웨어가 부트 업 활성화의 대상인지 가리키는 태그를 포함할 수 있다.

Description

펌웨어 이미지의 부트 업 활성화를 위한 시스템들 및 방법{SYSTEMS AND METHOD FOR BOOTUP ACTIVATION OF FIRMWARE IMAGES}
본 기재는 일반적으로 스토리지 장치들에 관한 것으로, 더 상세하게는 스토리지 장치에 펌웨어 이미지를 설치하는 것에 관한 것이다.
스토리지 장치들은 펌웨어를 이용하여 파워 업 할 수 있다. 파워 업의 일부로서, 초기 하드웨어 구성이 수행될 수 있고, 그리고 다른 특색들이 로드될 수 있다. 또한, 내부 파일 시스템이 로드되어 사용자 데이터가 액세스될 수 있다.
그러나 펌웨어가 오염되면(예를 들어, 하나 또는 그보다 많은 비트들이 예측할 수 없게 변경되거나 읽을 수 없으면, 또는 정상 펌웨어 업데이트 동안 예측하지 못한 이벤트가 발생하면), 부트 업 프로세스는 완료를 실패할 수 있다. 일부 상황들에서, 스토리지 장치는 반복적인 충돌로 종료할 수 있다. 예를 들어, 펌웨어는 로드 실패할 수 있고, 스토리지 장치는 재부팅을 시도하고, 다시 실패하고, 재부팅을 다시 시도할 수 있다. 부트 업 프로세스가 완료를 실패하면, 스토리지 장치의 데이터는 액세스 불가능하게 될 수 있다. 이러한 문제를 교정하는 것은 스토리지 장치의 리셋을 필요로 할 수 있고, 이는 사용자 데이터 손실을 유발할 수 있다.
사용자 데이터를 소거하지 않으면서 스토리지 장치에 펌웨어를 업데이트 할 필요가 존재한다.
본 기재의 목적은 펌웨어 그리고/또는 파일 시스템을 업데이트 하는 것을 시도하는 동안 데이터 손실이 발생하는 것을 회피하는 장치 및 방법을 제공하는 것이다.
본 기재의 실시 예들은 부트 업 활성화를 지원하는 스토리지 장치를 포함한다. 스토리지 장치가 부팅 할 때에, 스토리지 장치는 부트 업 활성화를 대기하는 펌웨어가 저장되어 있는지 체크할 수 있다. 부트 업 활성화를 대기하는 펌웨어가 발견되면, 스토리지 장치는 펌웨어를 활성화하는 것을 시도할 수 있다. 부트 업 활성화가 성공적이면, 활성화된 펌웨어는 현존하는 펌웨어를 대체한다. 그렇지 않으면, 현존하는 펌웨어는 (비성공적으로 활성화된) 펌웨어를 대체할 수 있다.
본 기재에 따르면, 펌웨어 그리고/또는 파일 시스템을 업데이트 하는 시도는 제2 슬롯들에서 수행된다. 따라서, 스토리지 장치는 업데이트 실패 시에 언제나 원본 펌웨어 그리고/또는 파일 시스템으로 복원할 수 있다.
아래에 기술되는 도면들은 본 기재의 실시 예들이 어떻게 구현되는지의 예들이며, 본 기재의 실시 예들을 한정하는 것을 의도하지 않는다. 본 기재의 개별 실시 예들은 구체적인 도면들에 도시되지 않은 요소들을 포함할 수 있고, 그리고/또는 구체적인 도면들에 도시된 요소들을 생략할 수 있다. 도면들은 예시를 제공하는 것을 의도하며, 비율로 정해지지 않는다.
도 1은 본 기재의 실시 예들에 따른 부트 업 활성화를 지원하는 스토리지 장치를 포함하는 시스템을 보여준다.
도 2는 본 기재의 실시 예들에 따른 도 1의 기계의 상세들을 보여준다.
도 3은 본 기재의 실시 예에 따른 사전 디코딩을 지원하는 솔리드 스테이트 드라이브를 보여준다.
도 4는 본 기재의 실시 예들에 따른 도 3의 펌웨어 NAND 스토리지의 상세들을 보여준다.
도 5는 본 기재의 실시 예들에 따른 펌웨어 이미지의 예시적인 레이아웃을 보여준다.
도 6은 본 기재의 실시 예들에 따른 도 3의 컨트롤러의 상세들을 보여준다.
도 7은 본 기재의 실시 예들에 따른 도 6의 갱신기의 상세들을 보여준다.
도 8a는 본 기재의 실시 예에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치의 예시적인 절차의 흐름도를 보여준다.
도 8b는 본 기재의 실시 예에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치의 예시적인 절차의 흐름도를 계속해서 보여준다.
도 9a는 본 기재의 실시 예에 따른 펌웨어 이미지를 활성화하는 도 1의 스토리지 장치에 대한 예시적인 절차의 흐름도를 보여준다.
도 9b는 본 기재의 실시 예에 따른 펌웨어 이미지를 활성화하는 도 1의 스토리지 장치에 대한 예시적인 절차의 흐름도를 계속해서 보여준다.
도 10은 본 기재의 실시 예들에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치를 위한 예시적인 절차의 대안적인 흐름도를 보여준다.
도 11은 본 기재의 실시 예들에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치를 위한 예시적인 절차의 다른 대안적인 흐름도를 보여준다.
도 12a는 본 기재의 실시 예들에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치를 위한 예시적인 절차의 또 다른 흐름도를 보여준다.
도 12b는 본 기재의 실시 예들에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치를 위한 예시적인 절차의 또 다른 흐름도를 계속해서 보여준다.
도 13a는 본 기재의 실시 예들에 따른 펌웨어 이미지를 활성화하는 도 1의 스토리지 장치(120)를 위한 예시적인 절차의 다른 흐름도를 보여준다.
도 13b는 본 기재의 실시 예들에 따른 펌웨어 이미지를 활성화하는 도 1의 스토리지 장치(120)를 위한 예시적인 절차의 다른 흐름도를 계속해서 보여준다.
도 14는 본 기재의 실시 예들에 따른 파일 시스템을 업데이트 하는 도 1의 스토리지 장치를 위한 절차의 흐름도를 보여준다.
도 15는 본 기재의 실시 예들에 따른 펌웨어 이미지를 활성화하는 것을 종료하는 도 1의 스토리지 장치를 위한 예시적인 절차의 흐름도를 보여준다.
첨부의 도면들에 도시된 본 기재의 실시 예들이 상세히 참조될 것이다. 아래의 상세한 설명에서 본 기재의 철저한 이해를 가능하게 하기 위하여 다수의 특정한 상세들이 제시된다. 그러나 이 분야에 통상의 기술을 가진 자는 이러한 특정한 상세들 없이 본 기재를 실시할 수 있을 것임이 이해될 것이다. 다른 사례들에서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 본 기재의 측면들을 불필요하게 모호하게 하지 않기 위해 상세히 기술되지 않는다.
여기에서 다양한 요소들을 설명하기 위해 제1, 제2 등의 용어들이 사용되지만, 이러한 요소들은 이러한 용어들에 의해 한정되지 않음이 이해될 것이다. 이러한 용어들은 하나의 요소를 다른 하나의 요소로부터 구별하기 위해서만 사용된다. 예를 들어, 본 기재의 범위로부터 멀어지지 않으면서, 제1 모듈은 제2 모듈로 명명될 수 있고, 마찬가지로 제2 모듈은 제1 모듈로 명명될 수 있다.
본 기재의 설명에서 사용되는 용어들은 구체적인 실시 예들만을 설명하는 목적을 위한 것이며, 본 기재를 한정하는 것을 의도하지 않는다. 본 기재의 설명 및 첨부의 청구항들에서 사용되는 바와 같이, 맥락에서 명백히 그렇지 않다고 가리키지 않으면, 단수 형태들은 복수 형태들 또한 포함함을 의도한다. 여기에서 사용되는 '그리고/또는'의 용어는 연관되어 나열된 항목들의 하나 또는 그보다 많은 것들의 임의의 그리고 모든 가능한 조합들을 참조하고 그리고 포함함이 이해될 것이다. 상세한 설명에서 사용될 때, '포함한다' 그리고/또는 '포함하는'의 용어들은 언급된 특색들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특색들, 정수들, 단계들, 동작들, 요소들, 구성 요소들, 그리고/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성 요소들 그리고 특색들은 비율로 정해지지 않는다.
스토리지 장치들은 파워 업 시에 펌웨어를 사용하여 동작들을 시작한다. 이 파워 업은 스토리지 장치의 초기 하드웨어 구성, 스토리지 장치의 다양한 특색들의 로딩, 그리고 내부 파일 시스템의 로딩을 포함할 수 있다.
이 펌웨어가 오염되면, 스토리지 장치에 저장된 사용자 데이터는 액세스 불가능하게 될 수 있다. 예를 들어, 스토리지 장치는 부팅, 펌웨어를 로드하는 것을 실패, 그리고 문제를 고치기 위한 시도의 재부팅과 같은 반복적인 사이클로 종료할 수 있다. 펌웨어 내의 에러는 정정될 수 없으므로, 사이클은 영원히(또는 사용자가 스토리지 장치를 파워 다운 할 때까지) 반복될 수 있다.
스토리지 장치를 초기 공장 상태로 초기화함으로써 스토리지 장치를 구조할 수 있지만, 이 동작은 사용자 데이터의 손실을 유발할 수 있다. 예를 들어, 스토리지 장치가 공장으로 되돌려지면, 제조사에게 가장 쉬운 해법은 스토리지 장치를 원래의 공장 상태로 리셋하는 것이다. 그러나 이렇게 하는 것은 내부 파일 시스템의 손실 그리고/또는 모든 사용자 데이터의 소거를 유발할 수 있다.
본 기재의 실시 예들은 사용자 데이터를 보존하며 펌웨어를 업데이트 하는 것을 가능하게 한다. 펌웨어 이미지는 제2 펌웨어 슬롯에 로드될 수 있다. 부트 업 시에, 스토리지 장치는 제2 펌웨어 슬롯 내의 펌웨어의 존재를 식별하고, 해당 펌웨어가 활성이 요구됨을 가리키는 플래그를 갖는지 검출하고, 그리고 펌웨어를 활성화할 수 있다. 활성화가 성공하면, 펌웨어는 미래의 사용을 위해 주(primary) 펌웨어 슬롯으로 카피될 수 있다. 그 외에, 주 펌웨어 슬롯에 현존하는 펌웨어는 제2 펌웨어 슬롯으로 복사될 수 있다. 활성화가 성공하면, 스토리지 장치의 사용자 데이터에 대한 액세스가 복원될 수 있다.
본 기재의 실시 예들은 펌웨어가 부트 업 활성화를 지원하는지를 식별하는 태그를 펌웨어에 포함할 수 있다. 펌웨어는 또한 부트 업 활성화가 성공적으로 수행되었는지를(그리고 다시 수행될 필요가 없을 수 있음을) 가리키는 태그를 포함할 수 있다. 본 기재의 실시 예들은 현존하는 펌웨어를 유지하면서(현존하는 펌웨어가 성공적으로 부트하지 않았더라도) 부트 업 활성화가 시도될 수 있도록, 서로 다른 펌웨어들을 스토리지 장치의 서로 다른 펌웨어 슬롯들에 저장하는 것을 포함할 수 있다. 본 기재의 실시 예들은 또한 다수의 파일 시스템 슬롯들을 포함하며, 부트 업 활성화가 실패하면 원래의 파일 시스템을 하나의 슬롯에 보존하는 동안 내부 파일 시스템은 다른 하나의 슬롯에 업데이트 되어 다운로드 된 펌웨어를 지원할 수 있다.
도 1은 본 기재의 실시 예들에 따른 사전(dictionary) 디코딩을 지원하는 가속기를 포함하는 시스템을 보여준다. 도 1에서, 기계(105)는 호스트로도 명명될 수 있으며, 프로세서(110), 메모리(115), 그리고 스토리지 장치(120)를 포함할 수 있다. 프로세서(110)는 임의의 다양한 프로세서들일 수 있다. 아래에서 논의되는 다른 구성 요소들과 함께, 프로세서(110)는 용이한 설명을 위하여 기계(105)의 외부에 도시되지만, 본 기재의 실시 예들은 이러한 구성 요소들을 기계(105)의 내부에 포함할 수 있다. 도 1은 단일 프로세서(110)를 보여주지만, 기계(105)는 임의의 수의 프로세서들을 포함할 수 있고, 이 프로세서들의 각각은 단일 코어 또는 다중 코어 프로세서들일 수 있고, 이 코어들의 각각은 RISC(Reduced Instruction Set Computer) 구조 또는 CISC(Complex Instruction Set Computer) 구조(다른 가능성들 중에서도)로 구현될 수 있고, 그리고 임의의 필요한 조합으로 혼합될 수 있다.
프로세서(110)는 메모리(115)와 결합될 수 있다. 메모리(115)는 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 지속 랜덤 액세스 메모리(PRAM)(Persist RAM), 강유전체 랜덤 액세스 메모리(FRAM), 또는 자기저항 랜덤 액세스(MRAM) 등과 같은 불휘발성 랜덤 액세스 메모리(NVRAM)와 같은 임의의 다양한 메모리들일 수 있다. 메모리(115)는 또한 서로 다른 메모리 타입들의 임의의 필요한 조합일 수 있고, 그리고 메모리 컨트롤러(125)에 의해 관리될 수 있다. 메모리(115)는 '단기'로 명명될 수 있는 데이터(즉, 데이터는 장시간 저장될 것으로 예측되지 않음)를 저장하는데 사용될 수 있다. 단기 데이터의 예는 임시 파일들, 응용에 의해 국부적으로 사용되는 데이터(다른 스토리지 위치들로부터 복사되었을 수 있는) 등을 포함할 수 있다.
프로세서(110) 및 메모리(115)는 또한 그 아래에서 다양한 응용들이 실행될 수 있는 운영 체제를 지원할 수 있다. 이러한 응용들은 메모리(115) 또는 스토리지 장치(120)로부터 데이터를 읽기 위한 또는 데이터를 기입하기 위한 요청들(또한 커맨드들로 명명될 수 있는)을 발행할 수 있다. 스토리지 장치(120)는 장치 드라이버(130)를 이용하여 액세스 될 수 있다. 도 1은 일반적인 용어인 '스토리지 장치'를 사용하지만, 본 기재의 실시 예들은 데이터 품질 메트릭들(metrics)의 사용으로부터 이익을 볼 수 있는 임의의 스토리지 장치 포맷들을 포함할 수 있으며, 이러한 스토리지 장치 포맷들의 예들은 하드 디스크 드라이브들 및 솔리드 스테이트 드라이브들(SSD들)을 포함할 수 있다. 아래에서 'SSD'에 대한 임의의 참조는 본 기재의 이러한 다른 실시 예들을 포함하는 것으로 이해되어야 한다. 또한, 도 1은 하나의 스토리지 장치를 보여주지만, 본 기재의 실시 예들은 임의의 수의(하나 또는 그보다 많은) 스토리지 장치들을 포함할 수 있다.
도 2는 본 기재의 실시 예들에 따른 도 1의 기계(105)의 상세들을 보여준다. 도 2에서, 통상적으로, 기계(105)는 메모리 컨트롤러들(125) 및 기계(105)의 구성 요소들의 동작들을 조율하는데 사용될 수 있는 클럭들(205)을 포함할 수 있는 하나 또는 그보다 많은 프로세서들(110)을 포함할 수 있다. 프로세서들(110)은 또한 예로서 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 또는 다른 상태 보존 매체들을 포함할 수 있는 메모리들(115)과 결합될 수 있다. 프로세서들(110)은 또한 스토리지 장치들(120), 그리고 예를 들어 이더넷 커넥터 또는 무선 커넥터일 수 있는 네트워크 커넥터와 결합될 수 있다. 프로세서들(110)은 또한 버스들(215)에 연결될 수 있으며, 버스(215)는 사용자 인터페이스(220) 및 다른 구성 요소들 중에서도 입력 및 출력 엔진들(225)을 이용하여 관리될 수 있는 입력 및 출력 인터페이스 포트들에 부착될 수 있다.
도 3은 본 기재의 실시 예에 따른 사전(dictionary) 디코딩을 지원하는 솔리드 스테이트 드라이브(SSD)를 보여준다. 도 3에서, SSD(120)는 인터페이스(305)를 포함할 수 있다. 인터페이스(305)는 도 1의 기계(105)에 SSD(120)를 연결하는데 사용될 수 있다. SSD(120)는 하나의 인터페이스(305)보다 많은 인터페이스들을 포함할 수 있다. 예를 들어, 하나의 인터페이스는 블록-기반 읽기 및 쓰기 요청들을 위해 사용될 수 있고, 그리고 다른 하나의 인터페이스는 키-값 읽기 및 쓰기 요청들을 위해 사용될 수 있다. 도 3은 인터페이스(305)가 도 1의 SSD(120) 및 기계(105) 사이의 물리적 연결임을 제안하지만, 인터페이스(305)는 또한 공통 물리 인터페이스를 통해 사용될 수 있는 프로토콜 차이들을 나타낼 수 있다. 예를 들어, SSD(120)는 U.2 또는 M.2 커넥터를 이용하여 기계(105)에 연결될 수 있지만, 블록-기반 요청들 및 키-값 요청들을 지원할 수 있다. 서로 다른 타입의 요청들을 처리하는 것은 상이한 인터페이스(305)에 의해 수행될 수 있다.
SSD(120)는 또한 인터페이스(305)를 관리하는 호스트 인터페이스 계층(310)을 포함할 수 있다. SSD(120)가 하나의 인터페이스(305)보다 많은 인터페이스들을 포함하면, 단일 호스트 인터페이스 계층(310)은 모든 인터페이스들을 관리하고, SSD(120)는 각 인터페이스를 위한 호스트 인터페이스 계층을 포함할 수 있고, 또는 이들의 일부 조합이 사용될 수 있다.
SSD(120)는 또한 SSD 컨트롤러(315), 그리고 다양한 플래시 메모리 칩들(325-1, 325-2, 325-3, 325-4, 325-5, 325-6, 325-7, 325-8)이 어레이로 연결되는 다양한 채널들(320-1, 320-2, 320-3, 320-4)을 포함할 수 있다. SSD 컨트롤러(315)는 채널들(320-1~320-4)을 통해 플래시 메모리 칩들(325-1~325-8)로 읽기 요청들 및 쓰기 요청들을 전송하는 것을 관리할 수 있다. 도 3은 네 개의 채널들 및 여덟 개의 메모리 칩들을 보여주지만, 본 기재의 실시 예들은 임의의 수의(하나 또는 그보다 많은, 제한 없이) 플래시 메모리 칩들을 포함하는 임의의 수의(하나 또는 그보다 많은, 제한 없이) 채널들을 포함할 수 있다.
페이지가 기입되거나 읽혀지는 동안, SSD들은 통상적으로 데이터가 덮어 쓰여지는 것을 허용하지 않는다. 즉, 현존하는 데이터는 그 자리에서 새로운 데이터로 치환되지 않을 수 있다. 대신, 데이터가 갱신될 때, 새로운 데이터는 SSD의 새로운 페이지에 기입되고, 원본 데이터는 무효화된다(소거 준비가 마크됨). 따라서, SSD 페이지들은 통상적으로 자유(기입 준비됨), 유효(유효 데이터를 저장), 그리고 무효(더 이상 유효 데이터를 저장하지 않지만 소거 전까지 사용할 수 없음)의 세 상태들(이 세 상태들의 정확한 명칭들은 달라질 수 있음) 중 하나를 가질 수 있다.
그러나 페이지들은 개별적으로 기입되고 읽혀질 수 있지만, 블록은 소거될 수 있는 데이터의 기본 단위이다. 즉, 페이지들은 개별적으로 지워지지 않는다. 블록 내의 모든 페이지들이 통상적으로 동시에 소거된다. 예를 들어, 블록이 230 페이지들을 포함하면, 블록 내의 모든 230 페이지들이 동시에 소거된다. 이러한 방식은 SSD에 대한 일부 관리 이슈들을 이끌 수 있다. 일부 유효 데이터를 여전히 저장하는 블록이 소거를 위해 선택되면, 블록이 소거되기 전에 유효 데이터는 SSD 상의 다른 자유 페이지로 카피되어야 할 수 있다. 본 기재의 일부 실시 예들에서, 소거의 단위는 블록과 다를 수 있다. 예를 들어, 소거의 단위는, 위에서 논의된 바와 같이 다수의 블록들의 세트일 수 있는 슈퍼 블록일 수 있다.
데이터가 기입되고 소거되는 단위가 다르므로(페이지 대 블록), SSD가 블록을 소거하기 전에 블록이 무효 데이터만을 저장할 때까지 기다리면, 유효 데이터의 양이 SSD의 알려진 용량보다 작더라도, SSD는 사용 저장 공간을 실제로 소진할 수 있다. 이러한 상황을 회피하기 위하여, SSD 컨트롤러(315)는 가비지 컬렉션 컨트롤러(도 3에 도시되지 않지만, 아래에서 도 5를 참조하여 더 기술되는)를 포함할 수 있다. 가비지 컬렉션의 기능은 모두 또는 대부분 무효 페이지들을 포함하는 블록들을 식별하고 그리고 유효 데이터가 다시 기입될 수 있도록 이러한 블록들을 자유롭게 할 수 있다. 그러나 가비지 컬렉션을 위해 선택된 블록이 유효 데이터를 포함하면, 유효 데이터는 가비지 컬렉션 로직에 의해 소거될 수 있다(소거의 단위는 페이지가 아닌 블록이므로). 이러한 데이터를 손실하는 것을 회피하기 위하여, 가비지 컬렉션 로직은 유효 데이터를 이러한 블록들로부터 다른 블록들로 프로그램 할 수 있다. 데이터가 새로운 블록에 프로그램 되면(그리고 논리 블록 어드레스들(LBA들)을 물리 블록 어드레스들(PBA들)에 매핑하는 테이블이 업데이트 되어 데이터의 새로운 위치를 반영하면), 블록은 소거되고, 블록의 페이지들의 상태는 사유 상태로 돌아간다.
SSD들은 또한 셀들이 데이터를 정확하게 보존하는 것이 신뢰될 수 없기 전에 각 셀이 기입될 수 있는 제한된 횟수를 갖는다. 이 횟수는 보통 셀들이 경험하는 프로그램 및 소거 사이클들의 수의 카운트로 측정된다. 통상적으로, 셀이 지원할 수 있는 프로그램 및 소거 사이클들의 수는 SSD가 합리적인 시간의 구간 동안 신뢰할 수 있게 기능적으로 남아있음을 의미할 수 있다. 개인 사용자들에 대해, 사용자는 프로그램 및 소거 사이클들의 수를 초과했기 보다는, 부족한 용량으로 인해 SSD를 교체하기를 원할 것이다. 그러나 데이터가 더 자주 기입되고 지워지는 기업 환경에서, 셀들이 프로그램 및 소거 사이클 카운트를 초과하는 위험이 더 중요할 수 있다.
이러한 위험을 상쇄하기 위하여, SSD 컨트롤러(315)는 웨어 레벨링 컨트롤러(도 3에 도시되지 않음)를 채용할 수 있다. 웨어 레벨링은 블록들의 프로그램 및 소거 사이클 카운트에 기반하여 데이터를 프로그램할 데이터 블록을 선택하는 것을 수반한다. 더 낮은 프로그램 및 소거 사이클 카운트를 갖는 블록을 새로운 데이터를 프로그램 하기 위해 선택함으로써, SSD는 일부 메모리 블록들의 프로그램 및 소거 사이클 카운트가 그들의 신뢰할 수 있는 동작 포인트를 넘어 증가하는 것을 회피할 수 있다. 각 블록의 웨어 레벨을 가능한 한 가깝게 유지함으로써, SSD는 더 긴 시간 구간 동안 신뢰할 수 있게 남아있을 수 있다.
SSD 컨트롤러(315)는 플래시 변환 계층(330)(FTL)(플래시 스토리지를 사용하지 않는 스토리지 장치들을 위해, 더 일반적으로 변환 계층으로 명명될 수 있음) 및 펌웨어 낫-앤드(NAND) 스토리지(335)(플래시 스토리지를 사용하지 않는 스토리지 장치들을 위해, 더 일반적으로 컨트롤러로 명명될 수 있음)를 포함할 수 있다. FTL(330)은 LBA들 또는 다른 논리적 ID들(도 1의 프로세서(110)에 의해 사용되는 바와 같이) 및 물리 블록 어드레스들(PBA들) 또는 데이터가 플래시 칩들(325-1~325-8)에 저장되는 다른 물리적 어드레스들의 변환을 처리할 수 있다. FTL(330)은 또한 가비지 컬렉션 그리고/또는 웨어 레벨링을 수행할 때 발생하는 바와 같이, 데이터를 하나의 PBA로부터 다른 PBA로 재위치하는 것을 책임질 수 있다. 펌웨어 NAND(335)는 펌웨어들의 카피들 그리고 다른 연관된 정보를 저장할 수 있다. 도 3은 NAND 스토리지를 사용하는 것으로 펌웨어 NAND(335)를 보여주지만, 본 기재의 실시 예들은 낫-오어(NOR) 스토리지와 같은 다른 형태의 스토리지를 포함할 수 있다.
도 4는 본 기재의 실시 예들에 따른 도 3의 펌웨어 NAND 스토리지(335)의 상세들을 보여준다. 도 4에서, 펌웨어 NAND(335)는 두 개의 펌웨어 슬롯들(405, 410)을 포함할 수 있다. 펌웨어 슬롯(405)은 주 펌웨어 슬롯으로 명명될 수 있고, 그리고 펌웨어 슬롯(410)은 제2 펌웨어 슬롯으로 명명될 수 있다. 펌웨어 NAND(335)는 오직 하나의 펌웨어 슬롯을 사용하는 것으로부터 발생할 수 있는 이슈들을 보호하기 위해 하나의 스토리지보다 많이 포함할 수 있다. 예를 들어, 주 펌웨어 슬롯(405) 내의 일부 정보가 오염되는 것을 유발하는 에러가 발생하는 사례에서, 주 펌웨어 슬롯(405)으로부터 펌웨어를 읽는 것은 불가능할 수 있다. 제2 펌웨어 슬롯(410)을 포함함으로써, 펌웨어가 주 펌웨어 슬롯(405)으로부터 성공적으로 읽혀지지 않더라도 제2 펌웨어 슬롯(410)으로부터 펌웨어를 읽는 것이 가능할 수 있다. 따라서, 주 펌웨어 슬롯(405) 및 제2 펌웨어 슬롯(410) 모두에 저장된 펌웨어는 동일한 펌웨어일 수 있다.
펌웨어 NAND(335)는 또한 내부 파일 시스템 슬롯들(415, 420)을 포함할 수 있다. 스토리지 장치의 내부 구성 및 파일들의 관리/로깅(logging)을 관리하는 '내부 파일 시스템'과 사용자 데이터 공간에 대한 액세스를 제공하는 '파일 시스템' 사이에 차이가 있을 수 있다. 아래에서 '파일 시스템'에 대한 임의의 참조는 문맥에서 다르게 제안하지 않으면 '내부 파일 시스템'을 참조하는 것으로 이해되어야 한다. 파일 시스템 슬롯들(415, 420)은 도 1의 스토리지 장치(120)로부터 데이터를 액세스하는데 사용되는 디스크 구성, 디버깅, 그리고 로깅 정보를 저장할 수 있다. 펌웨어 슬롯들(405, 410)과 마찬가지로, 펌웨어 NAND(335)는 주 파일 시스템 슬롯(415)으로부터 데이터를 읽을 때의 문제들을 보호하기 위한 제2 파일 시스템 슬롯(420)을 포함할 수 있다. 따라서, 주 파일 시스템 슬롯(415) 및 제2 파일 시스템 슬롯(420) 모두에 저장된 파일 시스템은 동일한 파일 시스템일 수 있다.
도 4는 두 개의 펌웨어 슬롯들(405, 410) 및 두 개의 파일 시스템 슬롯들(415, 420)만을 보여주지만, 본 기재의 실시 예들은 펌웨어 또는 파일 시스템을 위한 임의의 수의(하나 또는 그보다 많은) 슬롯들을 포함할 수 있다. 하나의 제2 슬롯들보다 많이 포함함으로써, 펌웨어 NAND(335)는 가능한 읽기 또는 쓰기 에러들에 대한 추가적인 보호를 제공할 수 있다.
도 5는 본 기재의 실시 예들에 따른 펌웨어 이미지의 예시적인 레이아웃을 보여준다. 도 5에서, 펌웨어 이미지(505)가 도시된다. 펌웨어 이미지(505)는, 다른 요소들 중에서도, 헤더(510), 제1 서명(515), 제1 내지 제3 이미지들(520-1, 520-2, 520-3), 제2 서명(525), 그리고 테일(530)을 포함할 수 있다. 헤더(510)는 헤더 정보를 포함할 수 있다. 마찬가지로, 테일(530)은 임의의 테일 정보를 포함할 수 있다. 제1 내지 제3 이미지들(520-1, 520-2, 520-3)은 임의의 필요한 데이터를 포함할 수 있다. 도 5는 세 개의 이미지들(520-1, 520-2, 520-3)을 보여주지만, 본 기재의 실시 예들은 임의의 수의(영 또는 그보다 많은) 이미지들을 포함할 수 있다. 제1 내지 제3 이미지들(520-1, 520-2, 520-3)은 FTL 또는 다른 코어를 관리하고, 그리고 도 1의 스토리지 장치(120)(또는 그것의 코어)의 성능 또는 관리를 제어하기 위한 이미지들을 포함할 수 있다.
제1 서명(515)은 펌웨어 이미지(505)의 일부분을 보호하는데 사용될 수 있다. 예를 들어, 섹션(535)에서 도시된 바와 같이, 제1 서명(515)은 제1 내지 제3 이미지들(520-1, 520-2, 520-3), 제2 서명(525), 그리고 테일(530)을 보호하는데 사용될 수 있다. 제1 서명(515)은 펌웨어 이미지(505)의 일부를 보호하는데 사용되는 임의의 형태의 서명일 수 있다. 예를 들어, 제1 서명(515)은 디지털 서명 알고리즘, 펌웨어의 암호화, 또는 패리티 코드(순환 리던던시 체크(CRC) 코드와 같은)를 이용하여 생성되는 서명일 수 있다. 이와 같이, '서명'의 용어는 단지 디지털 서명만이 아닌 보호들을 포함하는 것으로 이해되어야 한다.
아래에서 논의되는 바와 같이, 펌웨어 이미지(505)의 일부는 펌웨어 이미지(505)의 부트 업 활성화 동안 변경될 수 있다. 제1 서명(515)이 용이하게 수정되지 않을 수 있으면, 제1 서명(515)은 펌웨어 이미지(505)가 도 4의 펌웨어 슬롯들(405 그리고/또는 410)에 저장되기 전에 제거될 수 있다. 그러나 제1 서명(515)이 용이하게 수정될 수 있으면, 예를 들어 제1 서명(515)이 CRC 코드이면, 제1 서명(515)은 남겨질 수 있다.
마찬가지로, 제2 서명(525)은 펌웨어 이미지(505)의 일부분을 보호하는데 사용될 수 있다. 예를 들어, 섹션(540)에 도시된 바와 같이, 제2 서명(525)은 테일(530)을 보호하는데 사용될 수 있다. 제2 서명(525)은 펌웨어 이미지(505)의 일부를 보호하는데 사용되는 임의의 형태의 서명일 수 있다. 예를 들어, 제2 서명(525)은 디지털 서명 알고리즘, 펌웨어의 암호화, 또는 패리티 코드(순환 리던던시 체크(CRC) 코드와 같은)를 이용하여 생성되는 서명일 수 있다.
아래에서 논의되는 바와 같이, 펌웨어 이미지(505)의 일부는 펌웨어 이미지(505)의 부트 업 활성화 동안 변경될 수 있다. 제2 서명(525)이 용이하게 수정되지 않을 수 있으면, 제2 서명(525)은 펌웨어 이미지(505)가 도 4의 펌웨어 슬롯들(405 그리고/또는 410)에 저장되기 전에 제거될 수 있다. 그러나 제2 서명(525)이 용이하게 수정될 수 있으면, 예를 들어 제2 서명(515)이 CRC 코드이면, 제2 서명(525)은 남겨질 수 있다.
도 5에서, 테일(530)은 태그(545)를 포함하는 것으로 도시된다. 태그(545)는 펌웨어 이미지(505)가 부트 업 활성화의 대상인지를 가리키는 필드일 수 있다. 예를 들어, 펌웨어 이미지(505)가 도 1의 스토리지 장치(120)에서 아직 활성화되지 않았으면 태그(545)는 '1로 설정되고, 그리고 펌웨어 이미지(505)가 활성화되었으면 '0'으로 변경될 수 있다. 테일(530)(펌웨어 이미지(505)의 다른 부분들뿐 아니라)은 도 5에 도시되지 않은 다른 태그들을 포함할 수 있다. 예를 들어, 헤더(510)는 펌웨어 이미지(505)가 부트 업 활성화의 대상이 될 수 있는지를 가리키는 태그(펌웨어 이미지(505)가 실제로 활성화 되었는지 아닌지를 가리키는 태그(545)와 다를 수 있는)를 포함할 수 있다.
본 기재의 실시 예들에서 도 3의 컨트롤러(315)가 어떤 구성 요소들을 포함할 수 있는지의 상세들로 들어가기 전에, 도 3의 컨트롤러(315)가 어떻게 동작하는지의 논의는 유용할 수 있다. 위에서 논의된 바와 같이, 도 1의 스토리지 장치(120)가 반복적으로 충돌하는 디스크가 되면, 현존하는 펌웨어를 통상적으로 업데이트 하여 문제를 정정하는 것이 불가능할 수 있다. 반복적으로 충돌하는 디스크는, 예를 들어 부트 롬 펌웨어(도 1의 스토리지 장치의 초기화 및 주 펌웨어의 로딩에 책임이 있을 수 있는)가 에러를 갖는 주 펌웨어를 로드하기를 시도할 때에 발생할 수 있다. 결과적으로, 도 1의 스토리지 장치(120)는 재부팅 할 수 있다. 그러나 도 1의 스토리지 장치(120)의 재부팅이 문제를 정정하지 않으면(주 펌웨어 자체가 에러를 저장하면 발생할 수 있는), 이 프로세스는 무한하게 반복되어, 도 1의 스토리지 장치(120)가 소비자가 주 펌웨어를 업데이트 할 수 있는 스테이지에 도달하는 것을 금지할 수 있다. 도 1의 스토리지 장치(120)가 제조사로 반환되고 그리고 제조사 모드로 진입하면, 펌웨어를 업데이트 하는 것이 가능할 수 있다. 그러나 제조사 모드에서 펌웨어를 업데이트 하는 통상적인 시도들은 도 1의 스토리지 장치(120)로부터 일부 또는 모든 사용자 데이터를 삭제하는 원하지 않은 결과를 초래할 수 있다.
이러한 문제를 해결하기 위해, 펌웨어 이미지(505)가 다운로드 될 때, 펌웨어 이미지(505)는 도 4의 주 펌웨어 슬롯(405)이 아닌, 도 4의 제2 펌웨어 슬롯(410)에 저장될 수 있다. 그리고, 도 1의 스토리지 장치(120)가 다음에 부팅 될 때(즉, 예측하지 못한 전력 차단, 통상적인 파워-다운 프로세스, 또는 도 1의 스토리지 장치(120)의 재부팅의 일부로서 다음 번 도 1의 스토리지 장치(120)가 다음 번에 복원된 전력을 가질 때), 부트 롬 펌웨어는 도 4의 제2 펌웨어 슬롯(410)이 부트 업 활성화를 기다리는 펌웨어를 저장함을 검출할 수 있다. 이후에, 도 4의 주 펌웨어 슬롯(405)의 펌웨어를 로드하는 대신, 부트 롬 펌웨어는 도 4의 제2 펌웨어 슬롯(410)으로부터 펌웨어를 로드할 수 있고, 그리고 해당 펌웨어를 활성화하는 것을 시도할 수 있다.
도 4의 제2 펌웨어 슬롯(410)에서 펌웨어를 활성화하는 것은 펌웨어가 올바른지 검증하는 것을 수반할 수 있다. 도 4의 제2 펌웨어 슬롯에서 펌웨어를 활성화하는 것은 또한 도 1의 스토리지 장치(120)의 파일 시스템의 업데이트 들을 생성하는 것을 수반할 수 있다. 파일 시스템을 업데이트 하는 것은 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어를 지원하는데 필요할 수 있다. 파일 시스템의 이 업데이트 는 일부 파일들을 수정하는 것, 예를 들어 업데이트 된 파일 시스템에 적합한 업데이트 된 파일 포맷들로 수정하는 것을 포함할 수 있다.
도 4의 제2 펌웨어 슬롯(410)의 펌웨어가 성공적으로 활성화되면, 활성화된 펌웨어는 도 4의 주 펌웨어 슬롯(405)으로 카피되고, 해당 펌웨어는 다음 부트 업에서 사용될 수 있다. 또한, 도 4의 제2 펌웨어 슬롯(410) 내의(그리고 또한 도 4의 주 펌웨어 슬롯(405) 내의) 펌웨어는 수정되어, 예를 들어 태그(545)의 값을 수정함으로써, 해당 펌웨어가 성공적으로 활성화되었음을 반영할 수 있다. 태그(545)를 수정함으로써, 부트 롬 펌웨어는 해당 펌웨어가 이미 활성화되었음을 인식하고 그리고 해당 펌웨어의 부트 업 활성화를 다시 시도하지 않을 수 있다. 태그(545)가 수정된 후에, 활성화된 펌웨어는 도 4의 주 펌웨어 슬롯(405)으로 카피되어, 해당 펌웨어는 다음 부트 업에서 사용될 수 있다. 또한, 펌웨어가 성공적으로 활성화된 후에, 도 4의 제2 파일 시스템 슬롯(420)은 도 4의 주 파일 시스템 슬롯(415)으로 카피될 수 있다.
반면, 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어가 성공적으로 활성화되지 않으면, 도 4의 주 펌웨어 슬롯(405) 내의 현존하는 펌웨어가 계속 사용될 수 있다. 도 1의 스토리지 장치(120)는 도 4의 주 펌웨어 슬롯(405)으로부터 도 4의 제2 펌웨어 슬롯(410)으로 펌웨어를 카피하여, 펌웨어의 추가적인 부트 업 활성화가 시도되지 않게 할 수 있다. 도 4의 주 펌웨어 슬롯(405) 내의 펌웨어가 에러를 가지면, 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어를 성공적으로 활성화하는 것의 실패는 이 에러를 정정하지 않을 수 있고, 도 1의 스토리지 장치(120)는 복구를 시도하기에 더 나빠질 수 있다. 즉, 도 4의 제2 펌웨어 슬롯(410)에 저장된 펌웨어가 성공적으로 활성화될 수 없으면, 도 1의 스토리지 장치(120)는 도 1의 스토리지 장치(120)를 공장 조건들(도 1의 스토리지 장치에 저장된 사용자 데이터의 일부 또는 전부를 손실하는 잠재적인 비용에도 불구하고)로 리셋함으로써 여전히 사용 가능해질 수 있다.
도 6은 본 기재의 실시 예들에 따른 도 3의 컨트롤러(315)의 상세들을 보여준다. 도 6에서, 컨트롤러(315)의 다양한 모듈들이 도시된다. 이러한 모듈들의 임의의 것 그리고/또는 모든 것들은 몇몇 가능성 있는 이름들로서 FPGA(Field Programmable Gate Array), ASIC(Application-Specific Integrated Circuit), CPU(central processing unit), GPU(graphics processing unit), GPGPU(general purpose GPU), 또는 TPU(Tensor processing unit)와 같은 하드웨어를 이용하여 구현될 수 있다. 이러한 모듈들의 임의의 것 그리고/또는 모든 것들은 또한 적절한 하드웨어 상에서 실행되는 소프트웨어를 이용하여 구현될 수 있다. 본 기재의 실시 예들은 이러한 모든 변형들을 포함함을 의도한다.
펌웨어 다운로더(605)는 펌웨어 이미지들을 다운로드 하는데 사용될 수 있다. 펌웨어 다운로더(605)는 도 1의 스토리지 장치(125)의 통상 동작의 일부로서 펌웨어 업데이트 들을 다운로드 하도록 동작하는 메인-투-메인(main-to-main) 펌웨어의 일부로 사용될 수 있고, 또는 펌웨어 다운로더(605)는 도 1의 스토리지 장치(125)가 제조사 모드인 때에 펌웨어 이미지를 다운로드 하는데 사용될 수 있다.
보호 제거기(610)는 펌웨어 다운로더(605)에 의해 다운로드 된 펌웨어에 적용되는 보호를 제거하는데 사용될 수 있다. 예를 들어, 도 5를 참조하여 논의된 바와 같이, 도 5의 제1 서명(515)은 도 5의 펌웨어 이미지(505)의 다양한 다른 부분들(예를 들어, 도 5의 제1 내지 제3 이미지들(520-1, 520-2, 520-3), 도 5의 제2 서명(525) 또는 도 5의 테일(530))을 보호하는데 사용될 수 있다. 도 5의 펌웨어 이미지(505)가 수정될 때에 서명(또는 다른 보호)은 수정되지 않으면(예를 들어, 도 5의 태그(545)와 연관된 값을 변경하는 것은 도 5의 서명들(515 그리고/또는 525)의 값을 변경하는 것을 유발할 것이지만, 도 5의 서명들(515 그리고/또는 525)은 수정 가능하지 않을 것이다(또는 쉽게 수정되지 않을 것이다.)), 보호 제거기(610)는 보호를 제거하는데 사용될 수 있다. 이러한 방식으로, 도 5의 펌웨어 이미지(505) 내의 데이터는 도 5의 펌웨어 이미지(505)에 적용된 임의의 보호와 문제를 생성하지 않으면서 수정될 수 있다.
입증기(615)는 도 5의 펌웨어 이미지(505)가 올바른지 입증하는데 사용될 수 있다. 예를 들어, 입증기(615)는 도 5의 펌웨어 이미지(505)에 적용된 임의의 서명들 또는 다른 보호가 도 5의 펌웨어 이미지(505)에 대해 올바른지 검증할 수 있다. 입증은 도 5의 펌웨어 이미지(505)가 도 4의 제2 펌웨어 슬롯(410)에 저장되기 전에 수행되므로, 입증기(615)의 동작은 도 5의 펌웨어 이미지(505)의 활성화에 선행할 수 있음에 유의하여야 한다.
소거기(620)는 도 4의 펌웨어 이미지(505)를 어느 슬롯에든 저장하기 전에, 도 4의 펌웨어 슬롯들(405 그리고/또는 410)로부터 정보를 소거하는데 사용될 수 있다. 예를 들어, 위에서 논의된 바와 같이, 플래시 메모리에 새로운 데이터를 기입하기 전에 플래시 메모리를 소거해야 할 필요가 있을 수 있다. 소거기(620)는 도 5의 펌웨어 이미지(505)가 도 4의 펌웨어 슬롯들(405 그리고/또는 410)에 기입되는 것을 허용하도록, 이러한 소거를 수행하는데 사용될 수 있다. 도 4의 펌웨어 슬롯들(405 그리고/또는 410)이 소거되면, 펌웨어 저장기(625)는 도 5의 펌웨어 이미지(505)를 도 4의 펌웨어 슬롯들(405 그리고/또는 410)에 저장하는데 사용될 수 있다.
판별기(630)는 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어가 부트 업 활성화를 위해 태그되어 있는지 판단할 수 있다. 예를 들어, 판별기(630)는 도 5의 태그(545)애 대해 도 5의 펌웨어 이미지(505)를 검사할 수 있다. 도 5의 태그(545)가 도 5의 펌웨어 이미지(505)가 부트 업 활성화를 대기하고 있음을 가리키도록 설정되었음을 판단함에 따라, 판별기(630)는 해당 정보를 이용하여 도 4의 제2 펌웨어 슬롯(410)에 저장된 펌웨어의 활성화를 시도할 수 있다. 이후에, 활성화기(635)는 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어의 활성화를 수행할 수 있다.
활성화의 일부로서, 파일 시스템 복사기(640)는 도 4의 주 파일 시스템 슬롯(415)으로부터 도 4의 제2 파일 시스템 슬롯(420)으로 파일 시스템을 카피할 수 있다. 이러한 방식으로, 펌웨어를 지원하는데 요구될 수 있는 파일 시스템에 대한 업데이트 들은 도 4의 제2 파일 시스템 슬롯(420) 내의 파일 시스템의 카피에서 수행될 수 있다. 펌웨어의 활성화기 성공하지 않으면, 도 4의 주 파일 시스템 슬롯(415) 내의 원본 파일 시스템은 제자리에 남아있을 수 있고, 따라서 파일 시스템은 가능하다면 여전히 사용될 수 있다. 파일 시스템 복사기(640)는 또한 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어의 성공적인 활성화에 따라, 도 4의 제2 파일 시스템 슬롯(420)으로부터 도 4의 주 파일 시스템 슬롯(415)으로 업데이트 된 파일 시스템을 카피할 수 있다. 또는, 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어의 활성화가 실패하면, 파일 시스템 복사기(640)는 도 4의 주 파일 시스템 슬롯(415)으로부터 도 4의 제2 파일 시스템 슬롯(420)으로 현존하는 파일 시스템을 카피할 수 있다.
검증기(645)는 도 4의 주 파일 시스템 슬롯(415) 또는 도 4의 제2 파일 시스템 슬롯(420) 내의 파일 시스템이 올바른지, 즉 파일 시스템이 오염되지 않았는지 검증하는데 사용될 수 있다. 도 4의 주 파일 시스템 슬롯(415) 또는 도 4의 제2 파일 시스템 슬롯(40) 내의 파일 시스템이 오염되었으면, 도 6의 복구기(650)는 가능하다면 오염을 복구할 수 있다.
도 4의 제2 파일 시스템 슬롯(420) 내의 파일 시스템이 올바른 것으로 알려져 있으면(오염되지 않았거나 복구되었거나), 갱신기(655)는 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어와 일관적 이도록 도 4의 제2 파일 시스템 슬롯(420) 내의 파일 시스템을 업데이트 할 수 있다.
도 4의 제2 파일 시스템 슬롯(420) 내의 파일 시스템이 오염을 갖지 않는지, 복구되지 않았는지, 또는 복구 불가능하지 않은지에 관계없이, 그리고 도 4의 제2 파일 시스템 슬롯(420) 내의 파일 시스템이 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어와 일관적 이도록 성공적으로 업데이트 되었는지에 관계없이, 소거기(660)는 도 4의 파일 시스템 슬롯들(415 그리고/또는 420) 중 하나를 소거할 수 있고, 따라서 파일 시스템 복사기(640)는 도 4의 파일 시스템 슬롯들(415 그리고/또는 420) 중 하나로부터 다른 하나로 파일 시스템을 카피할 수 있다. 예를 들어, 파일 시스템이 오염되지 않았거나 복구 가능하며 성공적으로 갱신되었으면, 소거기(660)는 도 4의 주 파일 시스템 슬롯(415) 내의 정보를 소거할 수 있고, 그리고 파일 시스템 복사기(640)는 도 4의 제2 파일 시스템 슬롯(420) 내의 업데이트 된 파일 시스템을 도 4의 주 파일 시스템 슬롯(415)으로 카피할 수 있다. 그렇지 않으면, 파일 시스템이 오염되었고 그리고 복구될 수 없으면, 또는 파일 시스템이 성공적으로 업데이트 될 수 없으며, 소거기(660)는 도 4의 제2 파일 시스템 슬롯(420) 내의 정보를 소거할` 수 있고, 그리고 파일 시스템 복사기(640)는 도 4의 주 파일 시스템 슬롯(415)으로부터 도 4의 제2 파일 시스템 슬롯(420)으로 파일 시스템을 카피할 수 있다. 기능적으로, 소거기(660)는 소거기(620)와 동일할 수 있으며(둘 모두 슬롯으로부터 데이터를 소거하는 점에서), 임의의 하나의 모듈이 두 기능들을 모두 수행할 수 있음에 유의하여야 한다.
도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어의 부트 업 활성화가 성공적이면, 태그 설정기(665)는 도 4의 제2 펌웨어 슬롯(410)의 내의 펌웨어의 성공적인 부트 업 활성화를 반영하도록 도 5의 태그(545)를 업데이트 할 수 있다. 그리고, 소거기(620)는 도 4의 펌웨어 슬롯들(405 또는 410) 중 하나를 소거하는데 사용될 수 있고, 펌웨어 복사기(670)는 도 4의 펌웨어 슬롯들(405 또는 410) 중 하나로부터 다른 하나로 펌웨어를 카피할 수 있다. 예를 들어, 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어가 성공적으로 활성화 되었으면, 소거기(620)는 도 4의 주 펌웨어 슬롯(405) 내의 정보를 소거할 수 있고, 그리고 펌웨어 복사기(670)는 도 4의 제2 펌웨어 슬롯(410)으로부터 도 4의 주 펌웨어 슬롯(405)으로 펌웨어를 카피할 수 있다. 그렇지 않으면, 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어가 성공적으로 활성화되지 않았으면, 소거기(620)는 도 4의 제2 펌웨어 슬롯(410) 내의 정보를 소거할 수 있고, 그리고 펌웨어 복사기(670)는 도 4의 주 펌웨어 슬롯(405)으로부터 도 4의 제2 펌웨어 슬롯(410)으로 펌웨어를 카피할 수 있다. 기능적으로, 펌웨어 복사기(670)는 파일 시스템 복사기(640)와 동일할 수 있고(둘 모두 하나의 슬롯으로부터 다른 하나로 데이터를 카피하는 점에서), 그리고 하나의 모듈이 두 기능들 모두를 수행할 수 있음에 유의하여야 한다.
도 7은 본 기재의 실시 예들에 따른 도 6의 갱신기(655)의 상세들을 보여준다. 도 7에서, 갱신기(655)는 차이 식별기(705), 포맷 갱신기(710) 및 파일 갱신기(715)를 포함하는 것으로 도시된다. 차이 식별기(705)는 도 4의 주 파일 시스템 슬롯(415) 내의 파일 시스템(현존하는 파일 시스템)과 도 4의 제2 파일 시스템 슬롯(420) 내의 파일 시스템(업데이트 된 파일 시스템) 사이의 차이를 식별할 수 있다. 그리고, 포맷 갱신기(710)는 업데이트 된 파일 시스템 내의 정보를 저장하는데 사용되는 포맷을 업데이트 할 수 있고, 그리고 파일 갱신기(715)는 업데이트 된 파일 시스템의 파일을 업데이트 할 수 있다.
도 8a 및 도 8b는 본 기재의 실시 예에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치(120)의 예시적인 절차의 흐름도를 보여준다. 도 8a에서, 805 블록에서, 도 6의 펌웨어 다운로더(605)는 펌웨어 패키지/펌웨어 이미지를 수신할 수 있다. 810 블록에서, 도 6의 입증기(615)는 펌웨어 패키지를 입증할 수 있다. 815 블록에서, 도 6의 판별기(630)는 펌웨어 패키지가 부트 업 활성화를 위한 자격이 있는지 판단할 수 있다.
펌웨어 패키지가 부트 업 활성화를 위한 자격이 없으면, 820 블록에서(도 8b), 도 6의 소거기(620)는 도 4의 펌웨어 슬롯들(405 그리고/또는 410)을 소거할 수 있다. 825 블록에서, 도 6의 펌웨어 저장기(625)는 펌웨어 패키지를 도 4의 펌웨어 슬롯들(405 그리고/또는 410) 중 하나 또는 그보다 많은 것들에 저장할 수 있다. 끝으로, 830 블록에서, 펌웨어 패키지는 활성화된 것으로 여겨질 수 있다.
펌웨어 패키지가 부트 업 활성화를 위한 자격이 있으면, 835 블록에서, 도 6의 소거기(620)는 도 4의 제2 펌웨어 슬롯(410)과 같은 적절한 펌웨어 슬롯들을 소거할(도 4의 주 펌웨어 슬롯을 홀로 남겨두고) 수 있다. 840 블록에서, 도 6의 펌웨어 저장기(625)는 펌웨어 패키지를 도 4의 제2 펌웨어 슬롯(410)과 같은 적절한 펌웨어 슬롯들에 저장할 수 있다. 845 블록에서, 도 4의 컨트롤러(315)는 부트 업 활성화가 완료될 때까지 어떤 추가적인 다운로드 들(주 펌웨어 다운로더에 의해 스케줄 되었을 수 있는)을 중지할 수 있다. 끝으로, 850 블록에서, 도 3의 컨트롤러(315)는 도 1의 스토리지 장치(120)의 다음 부트 후에 펌웨어 패키지의 부트 업 활성화를 수행할 수 있다.
도 9a 및 도 9b는 본 기재의 실시 예에 따른 펌웨어 이미지를 활성화하는 도 1의 스토리지 장치(120)에 대한 예시적인 절차의 흐름도를 보여준다. 도 9a에서, 905 블록에서, 도 3의 컨트롤러(315)는 통상적 부트 업 동작들의 일부로서 도 1의 스토리지 장치(120)를 초기화할 수 있다. 910 블록에서, 도 6의 검증기(645)는 주 파일 시스템이 오염되지 않았는지 검증할 수 있다. 915 블록에서, 주 파일 시스템이 오염된 것으로 밝혀지면, 920 블록에서 도 6의 복구기(650)는 주 파일 시스템을 복구할 수 있다. 주 파일 시스템이 복구되면(주 파일 시스템이 복구를 필요로 하는 것으로 가정할 때), 925 블록에서 도 6의 파일 시스템 복사기(640)는 도 4의 주 파일 시스템 슬롯(415)으로부터 도 4의 제2 파일 시스템 슬롯(420)으로 파일 시스템을 카피할 수 있고, 그 때에 도 1의 스토리지 장치(120)는 도 4의 제2 파일 시스템 슬롯(420)으로부터의 파일 시스템을 사용하도록 구성될 수 있다.
도 9b의 930 블록에서, 도 7의 차이 식별기(705)는 현존하는 파일 시스템 및 펌웨어 패키지에 의해 지원되는 업데이트 된 파일 시스템 사이에 어떤 차이들이 존재하는지 판단할 수 있다. 935 블록에서, 도 3의 컨트롤러(315)는 임의의 차이점이 존재하는지 판단할 수 있다. 임의의 차이점이 존재하면, 940 블록에서, 도 7의 포맷 변환기(710)는 도 4의 제2 파일 시스템 슬롯(420) 내의 파일 시스템의 파일 포맷을 업데이트 된 파일 시스템의 파일 포맷으로 변환할 수 있다. 그리고 945 블록에서, 도 7의 파일 갱신기(715)는 도 4의 제2 파일 시스템 슬롯 내의 파일 시스템의 하나 또는 그보다 많은 파일들을 업데이트 된 파일 시스템으로 업데이트 할 수 있다.
950 블록에서, 파일 시스템이 업데이트 되면, 도 6의 파일 시스템 복사기(640)는 도 4의 제2 파일 시스템 슬롯(420)으로부터 도 4의 주 파일 시스템 슬롯(415)으로 파일 시스템을 카피할 수 있고, 그 때에 도 1의 스토리지 장치(120)는 도 4의 주 파일 시스템 슬롯(420)으로부터의 파일 시스템을 사용하도록 구성될 수 있다. 끝으로, 955 블록에서, 도 6의 태그 설정기(665)는 도 5의 펌웨어 이미지(505)가 부트 업 활성화의 대상이었음을(그리고 다시 활성화되지 않아야 함을) 반영하도록 도 5의 태그(545)를 업데이트 할 수 있다. 그리고 960 블록에서, 도 1의 스토리지 장치(120)는 통상적 부트 프로세스를 지속할 수 있다.
도 10은 본 기재의 실시 예들에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치(120)를 위한 예시적인 절차의 대안적인 흐름도를 보여준다. 1005 블록에서, 부트 롬 펌웨어는 도 4의 주 펌웨어 슬롯(405) 내에 저장된 현존하는 펌웨어가 존재하는지 판단할 수 있다. 1010 블록에서, 부트 롬 펌웨어는 도 4의 제2 펌웨어 슬롯(410)에 저장된 펌웨어가 존재하는지 판단할 수 있다. 1015 블록에서, 도 6의 판별기(630)는 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어가 부트 업 활성화를 위해 태그 되었는지 판단할 수 있다. 1020 블록에서, 도 6의 활성화기(635)는 제2 펌웨어 슬롯(1020) 내의 펌웨어를 활성화하는 것을 시도할 수 있다. 끝으로, 1025 블록에서, 도 3의 컨트롤러(315)는 도 4의 주 펌웨어 슬롯(405) 및 제2 펌웨어 슬롯(410)에 저장된 펌웨어 및 현존하는 펌웨어를 통합할 수 있다. 이 맥락에서, '통합'은 도 4의 하나의 펌웨어 슬롯(405 또는 410)으로부터 도 4의 다른 펌웨어 슬롯(405 또는 410)으로 하나의 펌웨어를 카피하는 것을 의미함을 의도하며, 어느 펌웨어가 카피되는지는 도 4의 제2 펌웨어 슬롯(410)에 저장된 펌웨어가 성공적으로 활성화되는지에 의존할 수 있다.
도 11은 본 기재의 실시 예들에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치(120)를 위한 예시적인 절차의 다른 대안적인 흐름도를 보여준다. 도 11은 도 10과 유사하지만, 보다 일반적이다. 1005 블록에서, 부트 롬 펌웨어는 도 4의 주 펌웨어 슬롯(405) 내에 저장된 현존하는 펌웨어가 존재하는지 판단할 수 있다. 1010 블록에서, 부트 롬 펌웨어는 도 4의 제2 펌웨어 슬롯(410)에 저장된 펌웨어가 존재하는지 판단할 수 있다. 1105 블록에서, 도 6의 판별기(630)는 도 5의 태그(545)가 펌웨어가 활성화되어야 함을 가리키는지를 식별함으로써, 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어가 부트 업 활성화를 위해 태그 되었는지 판단할 수 있다. 1020 블록에서, 도 6의 활성화기(635)는 제2 펌웨어 슬롯(1020) 내의 펌웨어를 활성화하는 것을 시도할 수 있다. 끝으로, 1025 블록에서, 도 3의 컨트롤러(315)는 도 4의 주 펌웨어 슬롯(405) 및 제2 펌웨어 슬롯(410)에 저장된 펌웨어 및 현존하는 펌웨어를 통합할 수 있다. 이 맥락에서, '통합'은 도 4의 하나의 펌웨어 슬롯(405 또는 410)으로부터 도 4의 다른 펌웨어 슬롯(405 또는 410)으로 하나의 펌웨어를 카피하는 것을 의미함을 의도하며, 어느 펌웨어가 카피되는지는 도 4의 제2 펌웨어 슬롯(410)에 저장된 펌웨어가 성공적으로 활성화되는지에 의존할 수 있다.
도 12a 및 도 12b는 본 기재의 실시 예들에 따른 펌웨어 이미지를 다운로드 하고 그리고 활성화하는 도 1의 스토리지 장치(120)를 위한 예시적인 절차의 또 다른 흐름도를 보여준다. 도 12에서, 1205 블록에서, 도 1의 스토리지 장치(120)는 도 1의 스토리지 장치(120)를 제조사 모드로 진입시키는 신호를 수신할 수 있다. 예를 들어, 도 1의 스토리지 장치(120)는 도 1의 스토리지 장치(120)의 외부의 입력으로부터 유래할 수 있으며, 도 1의 스토리지 장치(120)를 제조사 모드로 진입시키는 신호를 수신할 수 있다. 이 신호를 수신한 결과로서, 1210 블록에서, 도 1의 스토리지 장치(120)는 제조사 모드로 진입할 수 있다. 점선(1215)으로 도시된 바와 같이, 1205 및 1210 블록들은 생략될 수 있다. 예를 들어, 부트 업 활성화는 펌웨어의 주 펌웨어 다운로드의 결과로서 발생할 수 있다, 1205 및 1210 블록들은 도 1의 스토리지 장치(120)가 주 펌웨어 다운로드 프로세스를 이용하여 펌웨어를 다운로드 할 수 없을 때에 사용될 수 있다.
1220 블록에서, 도 6의 펌웨어 다운로더(605)는 도 1의 스토리지 장치(120)를 위한 펌웨어를 다운로드 할 수 있다. 1225 블록에서, 도 6의 입증기(615)는 펌웨어가 성공적으로 다운로드 되었는지 입증할 수 있다. 1230 블록에서, 도 6의 판별기(630)는 펌웨어가 부트 업 활성화를 지원하는지 판단할 수 있다.
도 12b의 1235 블록에서, 도 6의 보호 제거기(610)는 다운로드 된 펌웨어로부터 보호를 제거할 수 있다. 예를 들어, 다운로드 된 펌웨어에 디지털 서명이 적용되었으면, 펌웨어 이미지가 수정되어 펌웨어 이미지가 활성화되었음을 반영할 수 있도록(도 5의 태그(545)를 설정하는 것과 같이) 디지털 서명은 제거될 수 있다. 1240 블록에서, 도 6의 소거기(620)는 도 4의 제2 펌웨어 슬롯(410) 내의 정보를 소거할 수 있고, 따라서 1245 블록에서, 도 6의 펌웨어 저장기(625)는 도 4의 제2 펌웨어 슬롯(410)에 펌웨어를 저장할 수 있다. 끝으로, 1250 블록에서, 도 3의 컨트롤러(315)는 펌웨어가 부트 업에서 활성화될 때까지 추가적인 다운로드 들을 중지할 수 있다.
도 13a 및 도 13b는 본 기재의 실시 예들에 따른 펌웨어 이미지를 활성화하는 도 1의 스토리지 장치(120)를 위한 예시적인 절차의 다른 흐름도를 보여준다. 도 13a에서, 1305 블록에서, 도 6의 검증기(645)는 현존하는 파일 시스템(도 4의 주 파일 시스템 슬롯(415)에 저장되어 있을 수 있는)이 오염되었는지 판단할 수 있다. 그렇다면, 1310 블록에서, 도 6의 복구기(650)는 현존하는 파일 시스템을 복구할 수 있다.
현존하는 파일 시스템이 복구를 필요로 하든 아니든(그리고 복구가 성공적으로 완료되었는지, 복구가 성공적으로 완료되지 않았다면 펌웨어 이미지가 성공적으로 활성화되지 않았는지), 1315 블록에서, 도 6의 파일 시스템 복사기(640)는 현존하는 파일 시스템을 도 4의 주 파일 시스템 슬롯(415)으로부터 도 4의 제2 파일 시스템 슬롯(420)으로 카피할 수 있다. 1320 블록에서, 도 6의 갱신기(655)는 도 4의 제2 파일 시스템 슬롯(420) 내의 현존하는 파일 시스템을 업데이트 된 파일 시스템으로 업데이트 할 수 있다. 위에서 논의된 바와 같이, 업데이트 는 도 7의 포맷 갱신기(710)가 업데이트 된 파일 시스템 내의 파일의 포맷을 업데이트 하는 것 그리고/또는 도 7의 파일 갱신기(715)가 업데이트 된 파일 시스템 내의 파일을 업데이트 하는 것을 수반할 수 있다.
도 13b의 1325 블록에서, 도 3의 컨트롤러(315)는 업데이트 된 파일 시스템이 검증되었는지 판단할 수 있다. 그렇다면, 1330 블록에서, 도 6의 소거기(660)는 도 4의 주 파일 시스템 슬롯(415)으로부터 정보를 소거할 수 있고, 그리고 1335 블록에서 도 6의 파일 시스템 복사기(640)는 업데이트 된 파일 시스템을 도 4의 제2 파일 시스템 슬롯(420)으로부터 도 4의 주 파일 시스템 슬롯(415)으로 카피할 수 있다. 그렇지 않다면, 1340 블록에서, 도 6의 소거기(660)는 도 4의 제2 파일 시스템 슬롯(420)으로부터 정보를 소거할 수 있고, 그리고 1345 블록에서 도 6의 파일 시스템 복사기(640)는 현존하는 파일 시스템을 도 4의 주 파일 시스템 슬롯(415)으로부터 도 4의 제2 파일 시스템 슬롯(420)으로 카피할 수 있다.
도 14는 본 기재의 실시 예들에 따른 파일 시스템을 업데이트 하는 도 1의 스토리지 장치(120)를 위한 절차의 흐름도를 보여준다. 도 14에서, 1405 블록에서, 도 7의 차이 식별기(705)는 현존하는 파일 시스템 및 업데이트 된 파일 시스템 사이의 차이를 식별할 수 있다. 1410 블록에서, 도 7의 포맷 갱신기(710)는 업데이트 된 파일 시스템 내의 파일의 포맷을 업데이트 할 수 있다. 끝으로, 1415 블록에서, 도 7의 파일 갱신기(715)는 업데이트 된 파일 시스템 내의 파일을 업데이트 할 수 있다.
도 15는 본 기재의 실시 예들에 따른 펌웨어 이미지를 활성화하는 것을 종료하는 도 1의 스토리지 장치(120)를 위한 예시적인 절차의 흐름도를 보여준다. 도 15에서, 1505 블록에서, 활성화기(635)는 펌웨어의 활성화가 성공적인지 판단할 수 있다. 그렇다면, 1510 블록에서, 도 6의 태그 설정기(665)는 도 5의 태그(545)를 도 4의 제2 펌웨어 슬롯(410) 내의 도 5의 펌웨어 이미지(505)로부터 제거함으로써, 도 4의 제2 펌웨어 슬롯(410) 내의 도 5의 펌웨어 이미지(505)가 다시 활성화되지 않게 보장할 수 있다. 1515 블록에서, 도 3의 컨트롤러(315)는 도 5의 태그(545)가 설정되는 것을 처리하도록 펌웨어 이미지(505)의 보호를 업데이트 할 수 있다. 끝으로, 1520 블록에서, 도 6의 펌웨어 복사기(670)는 도 4의 제2 펌웨어 슬롯(410) 내의 펌웨어를 도 4의 주 펌웨어 슬롯(405)으로 카피할 수 있다. 반대로, 활성화가 성공적이지 않으면, 1525 블록에서, 도 6의 펌웨어 복사기(670)는 도 4의 주 펌웨어 슬롯(405) 내의 현존하는 펌웨어를 도 4의 제2 펌웨어 슬롯(410)으로 카피할 수 있다.
도 8a 내지 도 15에서, 본 기재의 일부 실시 예들이 도시되었다. 그러나 이 분야에 숙련된 자는, 블록들의 순서를 변경함으로써, 블록들을 생략함으로써, 또는 도면들에 도시되지 않은 링크들을 포함함으로써 본 기재의 다른 실시 예들 또한 가능함을 인식할 것이다. 흐름도들의 이러한 모든 변경들은 명시적으로 기술되었든 그렇지 않든, 본 기재의 실시 예들로 여겨진다.
때때로, 소비자는 디스크 결함을 보고할 수 있다. 보통, 디스크는 펌웨어 이미지 버전이 다운로드 되어 버그를 고칠 수 있는 상태로 될 수 있다. 그러나 때때로 솔리드 스테이트 드라이브(SSD)와 같은 스토리지 장치는 반복적인 충돌 발생 상태로 진입할 수 있고, 또는 파일 시스템이 오염될 수 있다. 이러한 상황들에서, 스토리지 장치는 펌웨어가 다운로드 되고 활성화될 수 있는 상태로 진입할 수 없거나, 또는 오염된 파일 시스템이 복구 불가능할 수 있다. 제조사는 수동으로 또는 자동으로 스토리지 장치를 부트 롬 모드로 설정하여 펌웨어를 다운로드 할 수 있지만, 이러한 동작은 모든 펌웨어 시스템 슬롯들을 소거할 수 있다. 또한, 현존하는 파일 시스템 데이터는 펌웨어의 버전과 호환되지 않을 수 있고 그리고 제자리에 남아있지 않을 수 있으므로, 이러한 동작은 현존하는 파일 시스템 데이터를 소거할 수 있다.
스토리지 장치 동작들을 향상시키기 위해, 도 1의 스토리지 장치(120) 내의 펌웨어 활성화/파일 시스템 업데이트의 프로세스(파워 온 시의 부트 업 활성화)가 사용될 수 있다. 이 프로세스는 또한 펌웨어가 더 정상적인 환경들에서 다운로드 된 때에도 사용될 수 있지만, 활성화는 다음 번 스토리지 장치가 부팅 할 때까지 연기될 수 있다(스토리지 장치가 다운로드 된 펌웨어를 즉시 활성화하는 재부팅과 비교하여).
부트 업 활성화를 지원하기 위해, 파워 온 시에, 도 1의 스토리지 장치(120)는 펌웨어 이미지를 검출하고 그리고 활성화 프로세스로 전환할 수 있다.
펌웨어 이미지는 부트 업 후 활성화가 사용될 수 있음을 가리키도록 태그되고, 플래그 되고, 또는 그렇지 않으면 마크될 수 있다. 이러한 태그는 다운로드 프로세스 동안 부트 롬 또는 주 펌웨어에 의해 검출될 수 있다. 펌웨어 이미지는 스토리지 장치를 향상시키는 특색들을 포함할 수 있다.
부트 롬 모드에서, 부트 업 이후 펌웨어 활성화가 사용될 수 있음을 가리키는 플래그가 검출되면, 펌웨어 이미지는 도 1의 스토리지 장치(120) 내의 제2 펌웨어 슬롯에만 저장될 수 있고, 그리고 주 펌웨어 슬롯(그리고 파일 시스템)은 변경되지 않게 남겨질 수 있다. 이러한 방법으로, 스토리지 장치는 활성화 동안 임의의 에러가 발생하는 상황에서 원본 디스크 펌웨어/파일 시스템으로 복귀할 수 있다. 본 기재의 일부 실시 예들에서, 펌웨어 이미지는 제2 펌웨어 슬롯이 아닌 다른 어딘가에 저장될 수 있고, 그리고 펌웨어 이미지는 부트 업 활성화의 일부로서 제2 펌웨어 슬롯으로 카피될 수 있다.
주 펌웨어 다운로드 시에, 부트 업 후 펌웨어 활성화가 사용될 수 있음을 가리키는 플래그가 검출되면, 펌웨어 이미지는 도 1의 스토리지 장치 내의 제2 펌웨어 슬롯에만 저장될 수 있다. 추가적인 활동 없이 다른 커맨드들이 다운로드 될 수 있고, 그리고 다음 전원 사이클까지(펌웨어가 활성화될 수 있는 때) 임의의 다른 다운로드 동작은 차단될 수 있다. 본 기재의 일부 실시 예들에서, 펌웨어 이미지는 제2 펌웨어 슬롯이 아닌 다른 어딘가에 저장될 수 있고, 그리고 펌웨어 이미지는 부트 업 활성화의 일부로서 제2 펌웨어 슬롯으로 카피될 수 있다.
파워 온/부트 업에서, 도 1의 스토리지 장치(120)에서 사용되는 부트 롬/부트로더 또는 주 펌웨어 프로세스는 펌웨어 활성화를 관리할 수 있다. 펌웨어가 활성화 되었는지 아닌지를 가리키는 태그 또한 존재할 수 있다. 이 태그는 펌웨어가 부트 업 후에 활성화 될 것인지를 가리키는 태그와 같거나 다를 수 있다. 이 태그는 활성화 후에 제거될 수 있고, 따라서 펌웨어가 또 다른 부트 업 후에 다시 활성화되지 않게 할 수 있다.
도 1의 스토리지 장치(120) 내의 주 펌웨어가 제2 펌웨어 슬롯 내에서 활성화를 필요로 하는 펌웨어 이미지를 검출한 때에, 주 펌웨어는 펌웨어 활성화 프로세스를 시작할 수 있다. 본 기재의 실시 예들은 펌웨어 이미지를 주 펌웨어 슬롯 대신 제2 펌웨어 슬롯으로부터 로드하여 활성화할 수 있다.
주 펌웨어는 스토리지 장치를 파워-온 모드로부터 추가적인 몇몇 동작들을 포함할 수 있는 부트-업 모드로 전환할 수 있다.
본 기재의 일부 실시 예들에서, 주 파일 시스템 슬롯 내의 파일 시스템은 도 1의 스토리지 장치 내의 제2 파일 시스템 슬롯으로 백업될 수 있다. 이러한 방법으로, 파일 시스템을 복구하거나 교체하는 것에 문제가 발생하면, 이러한 복구 또는 교체가 되돌려질 수 있다.
본 기재의 일부 실시 예들에서, 도 1의 스토리지 장치(120) 내의 주 파일 시스템 슬롯 내의 현재 파일 시스템은 펌웨어와 함께 동작할 수 있고 그리고 오염을 갖지 않음을 보장하도록 검증/테스트될 수 있다. 오염된 파일 시스템은 가능하면 복구될 수 있다 본 기재의 이러한 실시 예들에서, 현존하는 파일 시스템 및 업데이트 된 파일 시스템은 비교될 수 있다. 그들의 데이터 구조들 또는 정의들이 다르면, 펌웨어에 호환되도록 현존하는 파일 시스템을 업데이트 하는 변환 기능이 사용될 수 있다. 파일 시스템 볼륨 버전은, 파일 데이터 구조들을 통해 현존하는 파일 시스템 및 업데이트 된 파일 시스템 사이의 차이들을 검출하고, 그리고 업데이트 된 파일 시스템 볼륨에 호환되도록 현존하는 파일 시스템 데이터를 업데이트 할 지를 결정하는데 사용될 수 있는 레이아웃에서 유지될 수 있다.
본 기재의 일부 실시 예들에서, 도 1의 스토리지 장치(120) 내의 파일들(파일 시스템 파일들과 같은)은 미리 정의된 정책에 따라 업데이트 될 수 있다.
파일 시스템 업데이트 가 성공적이면, 펌웨어 이미지의 버전은 도 1의 스토리지 장치(120 내의 주 펌웨어 슬롯으로 카피될 수 있다. 본 기재의 일부 실시 예들에서, 파일 시스템이 업데이트 되면, 업데이트 된 파일 시스템은 제2 파일 시스템 슬롯으로부터 주 파일 시스템 슬롯으로 카피되고, 그리고 현재 파일 시스템으로 설정될 수 있다. 이 지점에서, 부트 업 활성화는 성공적으로 완료될 수 있고, 그리고 부팅을 완료하는 프로세스가 이어질 수 있다. 파일 시스템 업데이트 가 성공적이지 않거나 펌웨어가 성공적으로 활성화되지 않으면, 주 슬롯들(펌웨어 그리고/또는 파일 시스템)로부터 제2 슬롯들로 이미지(들)가 카피되어, 스토리지 장치를 이전의 구성으로 되돌릴 수 있다.
본 기재의 일부 실시 예들에서, 도 1의 스토리지 장치(120) 내의 펌웨어 이미지는 펌웨어가 부트 업 활성화의 대상일 수 있는지를 가리키는 태그를 포함할 수 있다. 본 기재의 일부 실시 예들에서, 펌웨어 이미지는 또한 부트 업 활성화가 수행되어 부트 업 활성화가 반복되지 않아야 함을 가리키는 제2 태그를 포함할 수 있다. 이러한 태그들은 같거나 다를 수 있고, 그리고 펌웨어 이미지 내의 임의의 필요한 위치에 배치될 수 있다.
도 1의 스토리지 장치(120)는 두 개의 펌웨어 슬롯들 및 두 개의 파일 시스템 슬롯들을 포함할 수 있다. 복수의 펌웨어 및 파일 시스템 슬롯들을 포함함으로써, 스토리지 장치는 펌웨어 그리고/또는 파일 시스템의 백업 카피들을 저장할 수 있다. 주 슬롯의 정보가 읽혀질 수 없으면, 해당 정보는 제2 슬롯으로부터 읽혀질 수 있다. 본 기재의 실시 예들은 또한 각각의 타입의 둘 이상의 슬롯들을 포함할 수 있고, 펌웨어 슬롯들 및 파일 시스템 슬롯들의 수들은 다를 수 있다.
도 1의 스토리지 장치(120)에 저장된 펌웨어 이미지는 임의의 필요한 방식으로 펌웨어를 저장할 수 있다. 펌웨어의 일부들은 CRC(Cyclic Redundancy Check) 또는 CRC32 코드와 같은, 또는 RSA(Rivest-Shamir-Aldeman) 암호 시스템과 같은 서명을 이용하여 디지털로 서명된 패리티 코드를 포함할 수 있지만, 다른 패리티 코드들 그리고/또는 디지털 서명 알고리즘들 또한 사용될 수 있다. 태그들 또는 플래그들은 펌웨어가 부트 업 활성화의 대상인지를 식별하는데 사용될 수 있고, 그리고/또는 부트 업 활성화가 수행되었는지를 가리킬 수 있고, 펌웨어 이미지 내의 임의의 필요한 곳에 저장될 수 있다.
본 기재의 실시 예들은 선행 기술을 넘어선 기술적 장점들을 제안한다. 본 기재의 실시 예들은 스토리지 장치 상의 사용자 데이터의 손실 없이, 스토리지 장치 내에서 사용되는 펌웨어 또는 파일 시스템의 복구 또는 교체를 가능하게 할 수 있다. 사용자들은 카타스트로픽(catastrophic) 결함(스토리지 장치가 제조사에 의해 복구될 필요가 있는)의 사건에서도 그들의 데이터를 유지하는 것을 선호하므로, 이러한 사용자 데이터가 유지될 수 있는 시스템 및 방법이 요구된다. 본 기재의 실시 예들은 펌웨어 그리고/또는 파일 시스템에 대한 업데이트 들이 수행될 수 있는 제2 펌웨어 슬롯 그리고/또는 제2 파일 시스템 슬롯을 사용하여 동작할 수 있다. 이러한 업데이트 들이 성공적이면, 업데이트 들은 주 펌웨어 그리고/또는 파일 시스템 슬롯들로 옮겨질 수 있다. 그렇지 않으면, 원본 펌웨어 그리고/또는 파일 시스템이 여전히 유지되고, 펌웨어 그리고/또는 파일 시스템을 업데이트 하는 실패한 시도의 결과로서 잠재적인 데이터 손실을 회피할 수 있다.
다음의 논의는 본 기재의 특정한 측면들이 구현될 수 있는 적절한 기계 또는 기계들의 간결하고 일반적인 설명을 제공함을 의도한다. 기계 또는 기계들은 키보드, 마우스와 같은 전통적인 입력 장치들뿐 아니라, 다른 기계로부터 수신되는 지시들, 가상 현실(VR) 환경과의 상호 작용, 바이오메트릭 피드백, 또는 다른 입력 신호에 의해 적어도 부분적으로 제어될 수 있다. 여기에서 사용되는 바와 같이, '기계'의 용어는 단일 기계, 가상 기계, 또는 통신 가능하게 결합된 기계, 가상 기계들 또는 함께 동작하는 장치들의 시스템을 폭넓게 포함함을 의도한다. 모범적인 기계들은 개인용 컴퓨터들, 워크스테이션들, 서버들, 휴대용 컴퓨터들, 핸드헬드 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들뿐 아니라, 개인용 또는 공공 수송 수단들(예를 들어, 자동차들, 기차들, 택시들 등)과 같은 수송 장치들을 포함할 수 있다.
기계 또는 기계들은 프로그램 가능한 또는 프로그램 불가능한 로직 장치들 또는 어레이들과 같은 임베디드 컨트롤러들, ASIC들(Application Specific Integrated Circuits), 임베디드 컴퓨터들, 스마트 카드들 등을 포함할 수 있다. 기계 또는 기계들은, 예를 들어 네트워크 인터페이스, 모뎀 또는 다른 통신적인 결합을 통해 하나 또는 그보다 많은 원격 기계들에 대한 하나 또는 그보다 많은 연결들을 사용할 수 있다. 기계들은 인트라넷, 인터넷, 국부 지역 네트워크(LAN), 광대역 네트워크(WAN) 등과 같은 물리적 그리고/또는 논리적 네트워크의 수단으로 서로 연결될 수 있다. 이 분야에 숙련된 자는, 네트워크 통신이 무선 주파수(RF), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 다양한 유선 그리고/또는 무선 근거리 또는 원거리 캐리어들 또는 프로토콜들을 이용함을 이해할 것이다.
본 기재의 실시 예들은, 기계에 의해 액세스된 때에 기계가 작업들을 수행하게 하거나 또는 추상적인 데이터 타입들 또는 저레벨 하드웨어 콘텍스트들을 정의하게 하는 기능들, 절차들, 데이터 구조들, 응용 프로그램들 등을 포함하는 데이터를 참조하여 또는 연관되어 설명된다. 연관된 데이터는, 예를 들어 휘발성 그리고/또는 불휘발성 메모리(예를 들어, RAM, ROM 등), 또는 다른 스토리지 장치들 그리고 하드-드라이브들, 플로피-디스크들, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는 연관된 스토리지 매체에 저장될 수 있다. 연관된 데이터는 패킷들, 직렬 데이터, 병렬 데이터, 전송 신호들 등의 형태로, 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경들을 통해 전달될 수 있고, 그리고 압축된 또는 암호화된 포맷으로 사용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있고, 그리고 기계 액세스를 위해 국부적으로 그리고/또는 원격으로 저장될 수 있다.
본 기재의 실시 예들은 하나 또는 그보다 많은 프로세서들에 의해 실행 가능한 명령어들을 포함하는, 실재하고 비일시적인 기계로 독출 가능한 매체를 포함할 수 있고, 명령어들은 여기에 기술된 본 기재의 요소들을 수행하는 명령어들을 포함할 수 있다.
위에서 기술된 방법들의 다양한 동작들은, 동작들을 수행하는 것이 가능한 다양한 하드웨어 그리고/또는 소프트웨어 구성 요소(들), 회로들, 그리고/또는 모듈(들)과 같은 임의의 적절한 수단들에 의해 수행될 수 있다. 소프트웨어는 논리적 기능들을 구현하기 위한 실행 가능한 명령어들의 순서 정렬된 목록을 포함할 수 있고, 그리고 단일 또는 다중-코어 프로세서 또는 프로세서-포함 시스템과 같은 명령어 실행 시스템, 기기, 또는 장치에 의해 또는 연관되어 사용하기 위한 임의의 '프로세서로 독출 가능한 매체'로 실장될 수 있다.
여기에서 기재된 실시 예들과 연관되어 기술된 방법 또는 알고리즘 및 기능들의 블록들 또는 단계들은 하드웨어에 직접, 프로세서에 의해 실행되는 소프트웨어 모듈에, 또는 이 두 개의 조합에 실장될 수 있다. 소프트웨어로 구현되면, 기능들은 실재하고 비일시적인 컴퓨터로 독출 가능한 매체 상의 하나 또는 그보다 많은 명령어들 또는 코드로서 저장되거나 전송될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 플래시 메모리, 리드 온리 메모리(ROM), 전기적으로 프로그램 가능한 ROM(EPOM), 전기적으로 소거 및 프로그램 가능한 ROM(EEPROM), 레지스터들, 하드 디스크, 제거 가능한 디스크, CD ROM, 또는 이 분야에 알려진 임의의 형태의 스토리지 매체에 존재할 수 있다.
설명된 실시 예들을 참조하여 본 기재의 원리들이 기술되고 도시되었지만, 기술된 실시 예들은 이러한 원리들로부터 멀어지지 않으면서 배열 및 상세에서 수정될 수 있고, 그리고 임의의 필요한 방식으로 결합될 수 있음이 이해될 것이다. 그리고 앞선 논의는 특정한 실시 예들에 집중하였지만, 다른 구성들이 고려될 수 있다. 구체적으로, '본 기재의 실시 예들에 따른' 또는 이와 유사한 것과 같은 설명들이 여기에서 사용되었지만, 이러한 문구들은 일반적으로 참조 실시 예의 가능성들을 의미하며, 본 기재를 특정한 실시 예 구성들로 제한함을 의도하지 않는다. 여기에서 사용되는 바와 같이, 이러한 용어들은 다른 실시 예들로 결합 가능한 동일한 또는 상이한 실시 예들에 대한 참조일 수 있다.
앞선 예시적인 실시 예들은 본 기재를 그들로 제한하는 것으로 여겨지지 않는다. 몇몇 실시 예들만이 설명되었지만, 이 분야에 숙련된 자들은 본 기재의 신규한 교수들(teachings) 그리고 장점들로부터 실질적으로 멀어지지 않으면서, 이러한 실시 예들에 대해 다수의 수정들이 가능함을 충분히 이해할 것이다. 따라서, 이러한 모든 수정들은 청구항들에서 정의된 바와 같이 본 기재의 범위 내에 포함되는 것으로 의도된다.
본 기재의 실시 예들은 제한하지 않으면서 다음의 문구들로 확장될 수 있다.
제1 문구. 본 기재의 실시 예는 스토리지 장치를 포함하고, 상기 스토리지 장치는 제1 펌웨어를 저장하는 주 펌웨어 슬롯, 제2 펌웨어를 저장하는 제2 펌웨어 슬롯, 현존하는 파일 시스템을 저장하는 주 파일 시스템 슬롯, 그리고 제2 파일 시스템 슬롯을 포함하는 제1 스토리지, 상기 제1 펌웨어 또는 상기 제2 펌웨어를 실행하도록 구성되는 프로세서, 그리고 상기 현존하는 파일 시스템을 사용하도록 구성되고, 그리고 사용자 데이터를 저장하는 제2 스토리지를 포함하고, 상기 제2 펌웨어는 상기 제2 펌웨어가 부트 업 활성화의 대상인지를 가리키는 태그를 포함한다.
제2 문구. 본 기재의 실시 예는 제1 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브, 또는 실장된 스토리지 장치를 포함하는 장치를 포함한다.
제3 문구. 본 기재의 실시 예는 제1 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 펌웨어의 부트 업 활성화를 수행하도록 구성된다.
제4 문구. 본 기재의 실시 예는 제3 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 펌웨어가 부트 업 활성화의 대상인지를 가리키는 상기 태그를 상기 제2 펌웨어가 포함하는지 판단하는 판별기, 그리고 상기 제2 펌웨어가 부트 업 활성화의 대상임을 가리키는 상기 태그를 포함하는 상기 제2 펌웨어에 적어도 부분적으로 기반하여 상기 제2 펌웨어를 활성화하는 활성화기를 포함한다.
제5 문구. 본 기재의 실시 예는 제1 문구에 따른 상기 스토리지 장치를 포함하고, 상기 제2 펌웨어는 상기 제2 펌웨어가 활성화 되었는지를 가리키는 제2 태그를 포함한다.
제6 문구. 본 기재의 실시 예는 제5 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 펌웨어의 성공적인 활성화에 적어도 부분적으로 기반하여, 상기 제2 펌웨어가 활성화 되었음을 가리키는 상기 태그를 설정하는 태그 설정기를 포함한다.
제7 문구. 본 기재의 실시 예는 제1 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 펌웨어의 성공적인 부트 업 활성화에 적어도 부분적으로 기반하여 상기 제2 펌웨어를 상기 제2 펌웨어 슬롯으로부터 상기 주 펌웨어 슬롯으로 카피하는 펌웨어 복사기를 포함한다.
제8 문구. 본 기재의 실시 예는 제1 문구에 따른 상기 스토리지 장치를 포함하고, 상기 펌웨어 복사기는 상기 제2 펌웨어의 비성공적인 부트 업 활성화에 적어도 부분적으로 기반하여 상기 제1 펌웨어를 상기 주 펌웨어 슬롯으로부터 상기 제2 펌웨어 슬롯으로 카피하도록 구성된다.
제9 문구. 본 기재의 실시 예는 제1 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 소스로부터 상기 제2 펌웨어를 수신하는 펌웨어 수신기, 그리고 상기 제2 펌웨어가 부트 업 활성화의 대상임을 가리키는 상기 태그에 적어도 부분적으로 기반하여, 상기 제2 펌웨어를 상기 제2 펌웨어 슬롯에 저장하는 펌웨어 저장기를 포함한다.
제10 문구. 본 기재의 실시 예는 제9 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 스토리지 장치를 제조사 모드로 진입시키는 외부 신호를 수신하도록 구성되고, 상기 펌웨어 수신기는 제조사에 의해 상기 소스로부터 상기 제2 펌웨어를 수신하도록 구성된다.
제11 문구. 본 기재의 실시 예는 제9 문구에 따른 상기 스토리지 장치를 포함하고, 상기 펌웨어 수신기는 사용자에 의해 상기 소스로부터 상기 제2 펌웨어를 수신하도록 구성된다.
제12 문구. 본 기재의 실시 예는 제9 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 펌웨어로부터 보호를 제거하는 보호 제거기를 포함한다.
제13 문구. 본 기재의 실시 예는 제9 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 펌웨어를 입증하는 입증기를 더 포함한다.
제14 문구. 본 기재의 실시 예는 제9 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 펌웨어 슬롯 내의 정보를 소거하는 소거기를 더 포함한다.
제15 문구. 본 기재의 실시 예는 제1 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 현존하는 파일 시스템이 오염되지 않았는지 검증하는 검증기를 더 포함한다.
제16 문구. 본 기재의 실시 예는 제15 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 현존하는 파일 시스템이 오염되는 것에 적어도 부분적으로 기반하여 상기 현존하는 파일 시스템을 복구하는 복구기를 더 포함한다.
제17 문구. 본 기재의 실시 예는 제1 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 현존하는 파일 시스템을 상기 주 파일 시스템 슬롯으로부터 상기 제2 파일 시스템 슬롯으로 카피하는 파일 시스템 복사기를 더 포함한다.
제18 문구. 본 기재의 실시 예는 제17 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 슬롯 내의 업데이트 된 파일 시스템으로 업데이트 하는 갱신기를 더 포함하고, 상기 주 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템은 변경되지 않는다.
제19 문구. 본 기재의 실시 예는 제18 문구에 따른 상기 스토리지 장치를 포함하고, 상기 갱신기는 상기 제2 펌웨어와 연관된 상기 업데이트 된 파일 시스템 및 상기 현존하는 파일 시스템 사이의 차이를 식별하는 차이 식별기를 포함한다.
제20 문구. 본 기재의 실시 예는 제18 문구에 따른 상기 스토리지 장치를 포함하고, 상기 갱신기는 상기 현존하는 파일 시스템의 제1 파일 포맷을 상기 업데이트 된 파일 시스템의 제2 파일 포맷으로 업데이트 하는 포맷 갱신기를 포함한다.
제21 문구. 본 기재의 실시 예는 제18 문구에 따른 상기 스토리지 장치를 포함하고, 상기 갱신기는 상기 현존하는 파일 시스템의 제1 파일을 상기 업데이트 된 파일 시스템의 제2 파일로 업데이트 하는 파일 갱신기를 포함한다.
제22 문구. 본 기재의 실시 예는 제18 문구에 따른 상기 스토리지 장치를 포함하고, 상기 파일 시스템 복사기는 상기 업데이트 된 파일 시스템을 상기 제2 파일 시스템 슬롯으로부터 상기 주 파일 시스템 슬롯으로 카피하도록 구성된다.
제23 문구. 본 기재의 실시 예는 제22 문구에 따른 상기 스토리지 장치를 포함하고, 상기 파일 시스템 복사기는 상기 업데이트 된 파일 시스템을 검증하는 것에 적어도 부분적으로 기반하여, 상기 업데이트 된 파일 시스템을 상기 제2 파일 시스템 슬롯으로부터 상기 주 파일 시스템 슬롯으로 카피하도록 구성된다.
제24 문구. 본 기재의 실시 예는 제18 문구에 따른 상기 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 업데이트 된 파일 시스템을 검증하지 않은 것에 적어도 부분적으로 기반하여 상기 제2 파일 시스템 슬롯으로부터 상기 업데이트 된 파일 시스템을 소거하는 소거기를 더 포함한다.
제25 문구. 본 기재의 실시 예는 제24 문구에 따른 상기 스토리지 장치를 포함하고, 상기 파일 시스템 복사기는 상기 현존하는 파일 시스템을 상기 주 파일 시스템 슬롯으로부터 상기 제2 파일 시스템 슬롯으로 카피하도록 구성된다.
제26 문구. 본 기재의 실시 예는 방법을 포함한다. 상기 방법은 제1 펌웨어가 스토리지 장치 내의 주 펌웨어 슬롯에 저장되어 있는지 식별하는 단계, 제2 펌웨어가 상기 스토리지 장치 내의 제2 펌웨어 슬롯에 저장되어 있는지 식별하는 단계, 상기 제2 펌웨어가 부트 업 활성화를 위해 태그되어 있는지 판단하는 단계, 상기 제2 펌웨어를 활성화하는 것을 시도하는 단계, 그리고 상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계를 포함한다.
제27 문구. 본 기재의 실시 예는 제26 문구에 따른 방법을 포함하고, 상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는, 상기 제2 펌웨어를 부트 업에서 활성화하는 것을 시도하는 단계를 포함한다.
제28 문구. 본 기재의 실시 예는 제26 문구에 따른 방법을 포함하고, 상기 스토리지 장치는 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브, 또는 실장된 스토리지 장치를 포함하는 장치를 포함한다.
제29 문구. 본 기재의 실시 예는 제26 문구에 따른 방법을 포함하고, 상기 제2 펌웨어가 상기 스토리지 장치 내의 제2 펌웨어 슬롯에 저장되어 있는지 식별하는 단계는, 상기 제2 펌웨어가 활성화되어야 하는지를 가리키는 상기 제2 펌웨어의 필드를 식별하는 단계를 포함한다.
제30 문구. 본 기재의 실시 예는 제26 문구에 따른 방법을 포함하고, 상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계는, 상기 제2 펌웨어의 성공적인 부트 업 활성화에 적어도 부분적으로 기반하여, 상기 제2 펌웨어를 상기 제2 펌웨어 슬롯으로부터 상기 주 펌웨어 슬롯으로 카피하는 단계를 포함한다.
제31 문구. 본 기재의 실시 예는 제30 문구에 따른 방법을 포함하고, 상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계는, 상기 제2 펌웨어의 성공적인 부트 업 활성화에 적어도 부분적으로 기반하여 상기 제2 펌웨어가 활성화되어야 함을 가리키는 태그를 상기 제2 펌웨어로부터 제거하는 단계를 더 포함한다.
제32 문구. 본 기재의 실시 예는 제31 문구에 따른 방법을 포함하고, 상기 제2 펌웨어가 활성화되어야 함을 가리키는 태그를 상기 제2 펌웨어로부터 제거하는 단계는 상기 제2 펌웨어의 보호를 수정하는 단계를 포함한다.
제33 문구. 본 기재의 실시 예는 제30 문구에 따른 방법을 포함하고, 상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계는 상기 제2 펌웨어의 비성공적인 부트 업 활성화에 적어도 부분적으로 기반하여 상기 제1 펌웨어를 상기 주 펌웨어 슬롯으로부터 상기 제2 펌웨어 슬롯으로 카피하는 단계를 포함한다.
제34 문구. 본 기재의 실시 예는 제26 문구에 따른 방법을 포함하고, 상기 방법은 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계, 그리고 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계를 더 포함한다.
제35 문구. 본 기재의 실시 예는 제34 문구에 따른 방법을 포함하고, 상기 방법은 상기 스토리지 장치를 제조사 모드로 진입시키는 단계를 포함하고, 그리고 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계는 상기 제조사에 의해 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계를 포함한다.
제36 문구. 본 기재의 실시 예는 제35 문구에 따른 방법을 포함하고, 상기 스토리지 장치를 제조사 모드로 진입시키는 단계는 상기 스토리지 장치를 제조사 모드로 진입시키는 신호를 수신하는 단계를 포함한다.
제37 문구. 본 기재의 실시 예는 제36 문구에 따른 방법을 포함하고, 상기 스토리지 장치를 제조사 모드로 진입시키는 단계는 상기 스토리지 장치를 제조사 모드로 진입시키는 신호를 수신하는 단계는 상기 스토리지 장치를 제조사 모드로 진입시키는 신호를 외부 소스로부터 수신하는 단계를 포함한다.
제38 문구. 본 기재의 실시 예는 제34 문구에 따른 방법을 포함하고, 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는, 상기 제2 펌웨어가 부트 업 활성화를 지원하는지 판단하는 단계를 포함한다.
제39문구. 본 기재의 실시 예는 제34 문구에 따른 방법을 포함하고, 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는, 상기 제2 펌웨어로부터 보호를 제거하는 단계를 포함한다.
제40문구. 본 기재의 실시 예는 제34 문구에 따른 방법을 포함하고, 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계는 사용자에 의해 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계를 포함한다.
제41문구. 본 기재의 실시 예는 제40 문구에 따른 방법을 포함하고, 상기 방법은 상기 제2 펌웨어가 활성화되지 않은 것에 적어도 부분적으로 기반하여 추가적인 다운로드 들을 중지하는 단계를 더 포함한다.
제42문구. 본 기재의 실시 예는 제34 문구에 따른 방법을 포함하고, 상기 방법은 상기 제2 펌웨어를 입증하는 단계를 더 포함하고, 그리고 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는 상기 제2 펌웨어의 성공적인 입증에 적어도 부분적으로 기반하여 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계를 포함한다.
제43문구. 본 기재의 실시 예는 제34 문구에 따른 방법을 포함하고, 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는 상기 제2 펌웨어 슬롯으로부터 정보를 소거하는 단계를 포함한다.
제44문구. 본 기재의 실시 예는 제26 문구에 따른 방법을 포함하고, 상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는 상기 스토리지 장치의 현존하는 파일 시스템이 오염되지 않았는지 검증하는 단계를 포함한다.
제45문구. 본 기재의 실시 예는 제44 문구에 따른 방법을 포함하고, 상기 스토리지 장치의 현존하는 파일 시스템이 오염되지 않았는지 검증하는 단계는 상기 스토리지 장치의 상기 현존하는 파일 시스템이 오염된 것에 적어도 부분적으로 기반하여 상기 현존하는 파일 시스템 내의 오염된 파일을 복구하는 단계를 포함한다.
제46문구. 본 기재의 실시 예는 제26 문구에 따른 방법을 포함하고, 상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는 현존하는 파일 시스템을 주 파일 시스템 슬롯으로부터 제2 파일 시스템 슬롯으로 카피하는 단계를 포함한다.
제47문구. 본 기재의 실시 예는 제46 문구에 따른 방법을 포함하고, 상기 방법은 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계를 더 포함하고, 상기 주 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템은 변경되지 않는다.
제48문구. 본 기재의 실시 예는 제47 문구에 따른 방법을 포함하고, 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계는 상기 제2 펌웨어와 연관된 상기 업데이트 된 파일 시스템 및 상기 현존하는 파일 시스템 사이의 차이를 식별하는 단계를 포함한다.
제49문구. 본 기재의 실시 예는 제47 문구에 따른 방법을 포함하고, 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계는 상기 현존하는 파일 시스템의 제1 파일 포맷을 상기 업데이트 된 파일 시스템의 제2 파일 포맷으로 업데이트 하는 단계를 포함한다.
제50문구. 본 기재의 실시 예는 제47 문구에 따른 방법을 포함하고, 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계는 상기 현존하는 파일 시스템의 제1 파일을 상기 업데이트 된 파일 시스템의 제2 파일로 업데이트 하는 단계를 포함한다.
제51 문구. 본 기재의 실시 예는 제47 문구에 따른 방법을 포함하고, 상기 방법은 상기 업데이트 된 파일 시스템을 상기 제2 파일 시스템 슬롯으로부터 상기 주 파일 시스템 슬롯으로 카피하는 단계를 더 포함한다.
제52 문구. 본 기재의 실시 예는 제51 문구에 따른 방법을 포함하고, 상기 업데이트 된 파일 시스템을 상기 제2 파일 시스템 슬롯으로부터 상기 주 파일 시스템 슬롯으로 카피하는 단계는 상기 업데이트 된 파일 시스템을 검증하는 단계에 적어도 부분적으로 기반하여 상기 업데이트 된 파일 시스템을 상기 제2 파일 시스템 슬롯으로부터 상기 주 파일 시스템 슬롯으로 카피하는 단계를 포함한다.
제53 문구. 본 기재의 실시 예는 제47 문구에 따른 방법을 포함하고, 상기 방법은 상기 업데이트 된 파일 시스템을 검증하지 않은 단계에 적어도 부분적으로 기반하여 상기 제2 파일 시스템 슬롯으로부터 상기 업데이트 된 파일 시스템을 소거하는 단계를 더 포함한다.
제54 문구. 본 기재의 실시 예는 제53 문구에 따른 방법을 포함하고, 상기 방법은 상기 현존하는 파일 시스템을 상기 주 파일 시스템 슬롯으로부터 상기 제2 파일 시스템 슬롯으로 카피하는 단계를 더 포함한다.
본 기재의 실시 예는 장치를 포함하고, 상기 장치는 기계에 의해 실행된 때에 다음의 동작들을 유발하는 명령어들이 저장된 비일시적인 저장 매체를 포함하고, 상기 다음의 동작들은, 제1 펌웨어가 스토리지 장치 내의 주 펌웨어 슬롯에 저장되어 있는지 식별하는 단계, 제2 펌웨어가 상기 스토리지 장치 내의 제2 펌웨어 슬롯에 저장되어 있는지 식별하는 단계, 상기 제2 펌웨어가 부트 업 활성화를 위해 태그되어 있는지 판단하는 단계, 상기 제2 펌웨어를 활성화하는 것을 시도하는 단계, 그리고 상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계를 포함한다.
제56 문구. 본 기재의 실시 예는 제55 문구의 장치를 포함하고, 상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는, 상기 제2 펌웨어를 부트 업에서 활성화하는 것을 시도하는 단계를 포함한다.
제57 문구. 본 기재의 실시 예는 제55 문구의 장치를 포함하고, 상기 스토리지 장치는 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브, 또는 실장된 스토리지 장치를 포함하는 장치를 포함한다.
제58 문구. 본 기재의 실시 예는 제55 문구의 장치를 포함하고, 상기 제2 펌웨어가 상기 스토리지 장치 내의 제2 펌웨어 슬롯에 저장되어 있는지 식별하는 단계는, 상기 제2 펌웨어가 활성화되어야 하는지를 가리키는 상기 제2 펌웨어의 필드를 식별하는 단계를 포함한다.
제59 문구. 본 기재의 실시 예는 제55 문구의 장치를 포함하고, 상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계는, 상기 제2 펌웨어의 성공적인 부트 업 활성화에 적어도 부분적으로 기반하여, 상기 제2 펌웨어를 상기 제2 펌웨어 슬롯으로부터 상기 주 펌웨어 슬롯으로 카피하는 단계를 포함한다.
제60 문구. 본 기재의 실시 예는 제59 문구의 장치를 포함하고, 상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계는, 상기 제2 펌웨어의 성공적인 부트 업 활성화에 적어도 부분적으로 기반하여 상기 제2 펌웨어가 활성화되어야 함을 가리키는 태그를 상기 제2 펌웨어로부터 제거하는 단계를 더 포함한다.
제61 문구. 본 기재의 실시 예는 제60 문구의 장치를 포함하고, 상기 제2 펌웨어가 활성화되어야 함을 가리키는 태그를 상기 제2 펌웨어로부터 제거하는 단계는 상기 제2 펌웨어의 보호를 수정하는 단계를 포함한다
제62 문구. 본 기재의 실시 예는 제55 문구의 장치를 포함하고, 상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계는 상기 제2 펌웨어의 비성공적인 부트 업 활성화에 적어도 부분적으로 기반하여 상기 제1 펌웨어를 상기 주 펌웨어 슬롯으로부터 상기 제2 펌웨어 슬롯으로 카피하는 단계를 포함한다.
제63 문구. 본 기재의 실시 예는 제55 문구의 장치를 포함하고, 상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고, 상기 아래의 동작들은 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계, 그리고 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계를 더 포함한다.
제64 문구. 본 기재의 실시 예는 제63 문구의 장치를 포함하고, 상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고, 상기 아래의 동작들은 상기 스토리지 장치를 제조사 모드로 진입시기는 단계를 포함하고, 그리고 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계는 상기 제조사에 의해 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계를 포함한다.
제65 문구. 본 기재의 실시 예는 제64 문구의 장치를 포함하고, 상기 스토리지 장치를 제조사 모드로 진입시키는 단계는 상기 스토리지 장치를 제조사 모드로 진입시키는 신호를 수신하는 단계를 포함한다.
제66 문구. 본 기재의 실시 예는 제65 문구의 장치를 포함하고, 상기 스토리지 장치를 제조사 모드로 진입시키는 단계는 상기 스토리지 장치를 제조사 모드로 진입시키는 신호를 수신하는 단계는 상기 스토리지 장치를 제조사 모드로 진입시키는 신호를 외부 소스로부터 수신하는 단계를 포함한다.
제67 문구. 본 기재의 실시 예는 제63 문구의 장치를 포함하고, 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는, 상기 제2 펌웨어가 부트 업 활성화를 지원하는지 판단하는 단계를 포함한다.
제68 문구. 본 기재의 실시 예는 제63 문구의 장치를 포함하고, 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는, 상기 제2 펌웨어로부터 보호를 제거하는 단계를 포함한다.
제69 문구. 본 기재의 실시 예는 제63 문구의 장치를 포함하고, 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계는 사용자에 의해 상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계를 포함한다.
제70 문구. 본 기재의 실시 예는 제69 문구의 장치를 포함하고, 상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고, 상기 아래의 동작들은 상기 제2 펌웨어가 활성화되지 않은 것에 적어도 부분적으로 기반하여 추가적인 다운로드 들을 중지하는 단계를 더 포함한다.
제71 문구. 본 기재의 실시 예는 제63 문구의 장치를 포함하고, 상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고, 상기 아래의 동작들은 상기 제2 펌웨어를 입증하는 단계를 더 포함하고, 그리고 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는 상기 제2 펌웨어의 성공적인 입증에 적어도 부분적으로 기반하여 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계를 포함한다.
제72 문구. 본 기재의 실시 예는 제63 문구의 장치를 포함하고, 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는 상기 제2 펌웨어 슬롯으로부터 정보를 소거하는 단계를 포함한다.
제72 문구. 본 기재의 실시 예는 제55 문구의 장치를 포함하고, 상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는 상기 스토리지 장치의 현존하는 파일 시스템이 오염되지 않았는지 검증하는 단계를 포함한다.
제74 문구. 본 기재의 실시 예는 제73 문구의 장치를 포함하고, 상기 스토리지 장치의 현존하는 파일 시스템이 오염되지 않았는지 검증하는 단계는 상기 스토리지 장치의 상기 현존하는 파일 시스템이 오염된 것에 적어도 부분적으로 기반하여 상기 현존하는 파일 시스템 내의 오염된 파일을 복구하는 단계를 포함한다.
제75 문구. 본 기재의 실시 예는 제55 문구의 장치를 포함하고, 상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는 현존하는 파일 시스템을 주 파일 시스템 슬롯으로부터 제2 파일 시스템 슬롯으로 카피하는 단계를 포함한다.
제76 문구. 본 기재의 실시 예는 제75 문구의 장치를 포함하고, 상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고, 상기 아래의 동작들은 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계를 더 포함하고, 상기 주 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템은 변경되지 않는다.
제77 문구. 본 기재의 실시 예는 제76 문구의 장치를 포함하고, 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계는 상기 제2 펌웨어와 연관된 상기 업데이트 된 파일 시스템 및 상기 현존하는 파일 시스템 사이의 차이를 식별하는 단계를 포함한다.
제78 문구. 본 기재의 실시 예는 제76 문구의 장치를 포함하고, 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계는 상기 현존하는 파일 시스템의 제1 파일 포맷을 상기 업데이트 된 파일 시스템의 제2 파일 포맷으로 업데이트 하는 단계를 포함한다.
제79 문구. 본 기재의 실시 예는 제76 문구의 장치를 포함하고, 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계는 상기 현존하는 파일 시스템의 제1 파일을 상기 업데이트 된 파일 시스템의 제2 파일로 업데이트 하는 단계를 포함한다.
제80 문구. 본 기재의 실시 예는 제76 문구의 장치를 포함하고, 상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고, 상기 아래의 동작들은 상기 업데이트 된 파일 시스템을 상기 제2 파일 시스템 슬롯으로부터 상기 주 파일 시스템 슬롯으로 카피하는 단계를 더 포함한다.
제81 문구. 본 기재의 실시 예는 제80 문구의 장치를 포함하고, 상기 업데이트 된 파일 시스템을 상기 제2 파일 시스템 슬롯으로부터 상기 주 파일 시스템 슬롯으로 카피하는 단계는 상기 업데이트 된 파일 시스템을 검증하는 단계에 적어도 부분적으로 기반하여 상기 업데이트 된 파일 시스템을 상기 제2 파일 시스템 슬롯으로부터 상기 주 파일 시스템 슬롯으로 카피하는 단계를 포함한다.
제82 문구. 본 기재의 실시 예는 제76 문구의 장치를 포함하고, 상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고, 상기 아래의 동작들은 상기 업데이트 된 파일 시스템을 검증하지 않은 단계에 적어도 부분적으로 기반하여 상기 제2 파일 시스템 슬롯으로부터 상기 업데이트 된 파일 시스템을 소거하는 단계를 더 포함한다.
제83 문구. 본 기재의 실시 예는 제82 문구의 장치를 포함하고, 상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고, 상기 아래의 동작들은 상기 현존하는 파일 시스템을 상기 주 파일 시스템 슬롯으로부터 상기 제2 파일 시스템 슬롯으로 카피하는 단계를 더 포함한다.
결론적으로, 여기에 기재된 실시 예들에 대한 광범위하고 다양한 치환들의 관점에서, 이 상세한 설명 및 첨부된 것들은 예시만을 의도하는 것이며, 본 기재의 범위를 한정하는 것으로 여겨지지 않아야 한다. 따라서, 본 기재에서 청구되는 것은, 다음의 청구항들 및 그것들과 동등한 것들의 범위 및 사상 내의 모든 수정들일 것이다.
110: 프로세서 115: 메모리
120: 스토리지 장치 125: 메모리 컨트롤러
130: 장치 드라이버 205: 클럭
210: 네트워크 커넥터 220: 사용자 인터페이스
225: 입력 및 출력 엔진 310: 호스트 인터페이스 계층
315: 컨트롤러 330: 플래시 변환 계층
335: 펌웨어 NAND 405: 주 펌웨어 슬롯
410: 제2 펌웨어 슬롯 415: 주 파일 시스템 슬롯
420: 제2 파일 시스템 슬롯 505: 펌웨어 파일 레이아웃
510: 헤더 515: 제1 서명
520-1: 제1 이미지 520-2: 제2 이미지
520-3: 제3 이미지 525: 제2 서명
530: 테일 545: 태그
605: 펌웨어 다운로더 610: 보호 제거기
615: 입증기 620: 소거기
625: 펌웨어 저장기 630: 판별기
635: 활성화기 640: 파일 시스템 복사기
645: 검증기 650: 복구기
655: 갱신기 660: 소거기
665: 태그 설정기 670: 펌웨어 복사기
705: 차이 식별기 710: 포맷 갱신기
715: 파일 갱신기

Claims (20)

  1. 스토리지 장치에 있어서:
    제1 펌웨어를 저장하는 주 펌웨어 슬롯, 제2 펌웨어를 저장하는 제2 펌웨어 슬롯, 현존하는 파일 시스템을 저장하는 주 파일 시스템 슬롯, 그리고 제2 파일 시스템 슬롯을 포함하는 제1 스토리지;
    상기 제1 펌웨어 또는 상기 제2 펌웨어를 실행하도록 구성되는 프로세서; 그리고
    상기 현존하는 파일 시스템을 사용하도록 구성되고, 그리고 사용자 데이터를 저장하는 제2 스토리지를 포함하고, 상기 제2 펌웨어는 상기 제2 펌웨어가 부트 업 활성화의 대상인지를 가리키는 태그를 포함하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 스토리지 장치는 상기 제2 펌웨어의 부트 업 활성화를 수행하도록 구성되는 스토리지 장치.
  3. 제2항에 있어서,
    상기 스토리지 장치는:
    상기 제2 펌웨어가 부트 업 활성화의 대상인지를 가리키는 상기 태그를 상기 제2 펌웨어가 포함하는지 판단하는 판별기; 그리고
    상기 제2 펌웨어가 부트 업 활성화의 대상임을 가리키는 상기 태그를 포함하는 상기 제2 펌웨어에 적어도 부분적으로 기반하여 상기 제2 펌웨어를 활성화하는 활성화기를 포함하는 스토리지 장치.
  4. 제1항에 있어서,
    상기 스토리지 장치는:
    소스로부터 상기 제2 펌웨어를 수신하는 펌웨어 수신기; 그리고
    상기 제2 펌웨어가 부트 업 활성화의 대상임을 가리키는 상기 태그에 적어도 부분적으로 기반하여, 상기 제2 펌웨어를 상기 제2 펌웨어 슬롯에 저장하는 펌웨어 저장기를 포함하는 스토리지 장치.
  5. 제1항에 있어서,
    상기 현존하는 파일 시스템을 상기 주 파일 시스템 슬롯으로부터 상기 제2 파일 시스템 슬롯으로 카피하는 파일 시스템 복사기를 더 포함하는 스토리지 장치.
  6. 방법에 있어서:
    제1 펌웨어가 스토리지 장치 내의 주 펌웨어 슬롯에 저장되어 있는지 식별하는 단계;
    제2 펌웨어가 상기 스토리지 장치 내의 제2 펌웨어 슬롯에 저장되어 있는지 식별하는 단계;
    상기 제2 펌웨어가 부트 업 활성화를 위해 태그되어 있는지 판단하는 단계;
    상기 제2 펌웨어를 활성화하는 것을 시도하는 단계; 그리고
    상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계를 포함하는 방법.
  7. 제6항에 있어서,
    상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는, 상기 제2 펌웨어를 부트 업에서 활성화하는 것을 시도하는 단계를 포함하는 방법.
  8. 제6항에 있어서,
    상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계는, 상기 제2 펌웨어의 성공적인 부트 업 활성화에 적어도 부분적으로 기반하여, 상기 제2 펌웨어를 상기 제2 펌웨어 슬롯으로부터 상기 주 펌웨어 슬롯으로 카피하는 단계를 포함하는 방법.
  9. 제6항에 있어서,
    상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계; 그리고
    상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는, 상기 제2 펌웨어가 부트 업 활성화를 지원하는지 판단하는 단계를 포함하는 방법.
  11. 제9항에 있어서,
    상기 방법은 상기 제2 펌웨어를 입증하는 단계를 더 포함하고, 그리고
    상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계는 상기 제2 펌웨어의 성공적인 입증에 적어도 부분적으로 기반하여 상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계를 포함하는 방법.
  12. 제6항에 있어서,
    상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는 상기 스토리지 장치의 현존하는 파일 시스템이 오염되지 않았는지 검증하는 단계를 포함하는 방법.
  13. 제12항에 있어서,
    상기 스토리지 장치의 현존하는 파일 시스템이 오염되지 않았는지 검증하는 단계는 상기 스토리지 장치의 상기 현존하는 파일 시스템이 오염된 것에 적어도 부분적으로 기반하여 상기 현존하는 파일 시스템 내의 오염된 파일을 복구하는 단계를 포함하는 방법.
  14. 제6항에 있어서,
    상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는 현존하는 파일 시스템을 주 파일 시스템 슬롯으로부터 제2 파일 시스템 슬롯으로 카피하는 단계를 포함하는 방법.
  15. 제14항에 있어서,
    상기 방법은 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계를 더 포함하고,
    상기 주 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템은 변경되지 않는 방법.
  16. 기계에 의해 실행된 때에 다음의 동작들을 유발하는 명령어들이 저장된 비일시적인 저장 매체를 포함하는 장치에 있어서:
    상기 다음의 동작들은:
    제1 펌웨어가 스토리지 장치 내의 주 펌웨어 슬롯에 저장되어 있는지 식별하는 단계;
    제2 펌웨어가 상기 스토리지 장치 내의 제2 펌웨어 슬롯에 저장되어 있는지 식별하는 단계;
    상기 제2 펌웨어가 부트 업 활성화를 위해 태그되어 있는지 판단하는 단계;
    상기 제2 펌웨어를 활성화하는 것을 시도하는 단계; 그리고
    상기 스토리지 장치 내의 상기 제2 펌웨어 및 상기 제1 펌웨어를 통합하는 단계를 포함하는 장치.
  17. 제16항에 있어서,
    상기 제2 펌웨어가 부트 업 활성화를 위해 태그되어 있는지 판단하는 단계는, 상기 제2 펌웨어가 활성화되어야 하는지를 가리키는 상기 제2 펌웨어의 필드를 식별하는 단계를 포함하는 장치.
  18. 제16항에 있어서,
    상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고,
    상기 아래의 동작들은:
    상기 제2 펌웨어를 상기 스토리지 장치로 다운로드 하는 단계; 그리고
    상기 제2 펌웨어를 상기 스토리지 장치 내의 상기 제2 펌웨어 슬롯에 저장하는 단계를 더 포함하는 장치.
  19. 제16항에 있어서,
    상기 제2 펌웨어를 활성화하는 것을 시도하는 단계는 현존하는 파일 시스템을 주 파일 시스템 슬롯으로부터 제2 파일 시스템 슬롯으로 카피하는 단계를 포함하는 장치.
  20. 제19항에 있어서,
    상기 비일시적인 저장 매체는 상기 기계에 의해 실행된 때에 아래의 동작들을 유발하는 추가적인 명령어들을 저장하고,
    상기 아래의 동작들은 상기 제2 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템을 상기 제2 파일 시스템 내의 업데이트 된 파일 시스템으로 업데이트 하는 단계를 더 포함하고,
    상기 주 파일 시스템 슬롯 내의 상기 현존하는 파일 시스템은 변경되지 않는 장치.
KR1020220073804A 2021-06-28 2022-06-16 펌웨어 이미지의 부트 업 활성화를 위한 시스템들 및 방법 KR20230001522A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163215981P 2021-06-28 2021-06-28
US63/215,981 2021-06-28
US17/503,261 2021-10-15
US17/503,261 US11922170B2 (en) 2021-06-28 2021-10-15 Systems and method for bootup activation of firmware images

Publications (1)

Publication Number Publication Date
KR20230001522A true KR20230001522A (ko) 2023-01-04

Family

ID=82214162

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220073804A KR20230001522A (ko) 2021-06-28 2022-06-16 펌웨어 이미지의 부트 업 활성화를 위한 시스템들 및 방법

Country Status (5)

Country Link
US (1) US11922170B2 (ko)
EP (1) EP4113288B1 (ko)
KR (1) KR20230001522A (ko)
CN (1) CN115599461A (ko)
TW (1) TW202321912A (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4108973B2 (ja) * 2001-12-26 2008-06-25 株式会社日立製作所 バックアップシステム
US8286156B2 (en) 2006-11-07 2012-10-09 Sandisk Technologies Inc. Methods and apparatus for performing resilient firmware upgrades to a functioning memory
US9009357B2 (en) 2008-04-24 2015-04-14 Micron Technology, Inc. Method and apparatus for field firmware updates in data storage systems
CN103620567A (zh) 2011-06-07 2014-03-05 Lsi公司 主机看到的设备固件更新效果的管理
US9959125B2 (en) 2015-08-05 2018-05-01 Samsung Electronics Co., Ltd. Field update of boot loader using regular device firmware update procedure
KR102385552B1 (ko) 2015-12-29 2022-04-12 삼성전자주식회사 시스템-온-칩 및 이를 포함하는 전자 장치
US10346071B2 (en) * 2016-12-29 2019-07-09 Western Digital Technologies, Inc. Validating firmware for data storage devices
US11249748B2 (en) 2017-09-27 2022-02-15 Intel Corporation Firmware component with self-descriptive dependency information
CN111338662A (zh) * 2018-12-18 2020-06-26 深圳市优必选科技有限公司 从站的固件升级方法、固件升级装置及终端
US10983705B2 (en) * 2019-04-29 2021-04-20 EMC IP Holding Company LLC Handling pattern identifiers in a data storage system
US11126725B2 (en) 2019-06-12 2021-09-21 Dell Products L.P. Secure firmware capsule update using NVMe storage and method therefor

Also Published As

Publication number Publication date
US20220413871A1 (en) 2022-12-29
EP4113288A1 (en) 2023-01-04
TW202321912A (zh) 2023-06-01
EP4113288B1 (en) 2024-04-10
US11922170B2 (en) 2024-03-05
CN115599461A (zh) 2023-01-13

Similar Documents

Publication Publication Date Title
US10353779B2 (en) Systems and methods for detection of firmware image corruption and initiation of recovery
US9164756B2 (en) Software updating process for an embedded device
KR101143112B1 (ko) 페일세이프 방식으로 맞춤 소프트웨어 영상 갱신을불휘발성 저장 장치에 적용하는 시스템 및 방법
US9286164B2 (en) Electronic device to restore MBR, method thereof, and computer-readable medium
KR102198609B1 (ko) 모바일 장치 및 그것의 동작 방법
US9501404B2 (en) Back-up and restoration of data between volatile and flash memory
US20110004871A1 (en) Embedded electronic device and firmware updating method thereof
US8812910B2 (en) Pilot process method for system boot and associated apparatus
EP2329366B1 (en) Performing a pre-update on a non volatile memory
JP5963228B2 (ja) ストレージシステム及びデータバックアップ方法
US11314866B2 (en) System and method for runtime firmware verification, recovery, and repair in an information handling system
CN109086078B (zh) 安卓系统升级方法、装置、服务器及移动终端
EP2118746B1 (en) Method and system for in-place updating content stored in a storage device
US11740969B2 (en) Detecting and recovering a corrupted non-volatile random-access memory
EP2368187B1 (en) Replicated file system for electronic devices
KR20230001522A (ko) 펌웨어 이미지의 부트 업 활성화를 위한 시스템들 및 방법
KR20080060658A (ko) 멀티미디어 저장장치와 데이터 복구방법
US9275697B2 (en) Utilizing destructive features as RAM code for a storage device
US9971659B1 (en) Memory programming providing corruption protection
KR101545077B1 (ko) 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치
CN113050887A (zh) 闪存分区数据处理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal