KR20180023784A - 사전 부팅 환경에서 raid 볼륨에 접근하는 데이터 저장 시스템 및 방법 - Google Patents

사전 부팅 환경에서 raid 볼륨에 접근하는 데이터 저장 시스템 및 방법 Download PDF

Info

Publication number
KR20180023784A
KR20180023784A KR1020170026577A KR20170026577A KR20180023784A KR 20180023784 A KR20180023784 A KR 20180023784A KR 1020170026577 A KR1020170026577 A KR 1020170026577A KR 20170026577 A KR20170026577 A KR 20170026577A KR 20180023784 A KR20180023784 A KR 20180023784A
Authority
KR
South Korea
Prior art keywords
raid
storage device
option rom
data storage
volume
Prior art date
Application number
KR1020170026577A
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 KR20180023784A publication Critical patent/KR20180023784A/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

사전 부팅 환경에서 RAID 볼륨에 접근하는 데이터 저장 시스템 및 방법이 제공된다. 상기 데이터 저장 장치는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스에 연결된 적어도 두 개의 저장 장치 및 마더 보드와 독립적인 RAID 볼륨으로 부팅 할 수 있도록 RAID 를 구현하기 위해 부팅 전에 설정된 시스템 코드를 포함하는 옵션 ROM을 포함한다.

Description

사전 부팅 환경에서 RAID 볼륨에 접근하는 데이터 저장 시스템 및 방법 {Data storage system and method thereof to access RAID volume in pre-boot environment}
본 발명은 일반적으로 저장 장치에 관한 것이다. 특히, 사전 부팅 환경에서 RAID(Redundant Array of Independent Disk) 볼륨에 접근(access)하는 데이터 저장 시스템 및 그 방법에 관한 것이다.
데이터 처리 시스템에서의 RAID 기술은 드라이브들간에 데이터를 공유 또는 복제하는 다수의 하드 디스크 드라이브들의 시스템, 즉 독립 디스크들의 중복 어레이(Redundant Array of Independent Disks)를 지칭한다. 단일 드라이브에 비해 데이터 무결성, 내결함성, 처리량 또는 용량을 향상시킬 수 있도록 여러 버전의 RAID 기술이 개발되었다. RAID를 사용하면 용량이 크고 안정성이 뛰어나며 속도가 빠른 어레이에 여러 개의 즉시 사용 가능하고 저렴한 장치를 조합하여 사용할 수 있다.
RAID 기술의 다양한 버전 또는 레벨은 데이터를 더 작은 청크(chunk)로 분할하고 처리량을 향상시키기 위해 다수의 드라이브 사이에 청크를 분배하는 데이터 스트라이핑(striping)을 갖는 RAID '0'를 포함하지만, RAID '0'는 데이터를 보호하지는 못한다. RAID '1'은 적어도 하나의 다른 드라이브에 데이터를 복사하는 미러링을 활성화하여 디스크 장애시 손실된 데이터를 복원할 수 있도록 복제를 보장한다. RAID '0'와 '1'을 결합하면 처리량과 데이터 보호의 목적을 모두 달성할 수 있다. RAID '5'는 3 개 이상의 드라이브에서 데이터와 패리티 정보를 모두 제거하며 내결함성도 제공한다.
또한, RAID 기술은 하드웨어 또는 소프트웨어로 구현 될 수 있다. 소프트웨어 RAID는 일반적으로 RAID '0' 및 '1'을 지원하여 호스트 중앙 처리 장치(CPU)에서 RAID 기능을 실행하여 특히 RAID '5' 쓰기 수행 동안 패리티가 계산됨에 따라서 다른 계산 성능이 크게 저하 될 수 있다. 하드웨어 RAID 구현은 성능과 내결함성을 높이기 위해 호스트 CPU에서 프로세서 집약적인 RAID 작업을 덜어주고, 일반적으로 기능이 풍부하다.
기존의 기술에서도 사전 부팅 환경(pre-boot environment)에서 RAID를 생성하는 방법이 존재한다. 기존의 방법의 대부분은 하드웨어 RAID 컨트롤러 또는 하드웨어 RAID 컨트롤러를 에뮬레이트(emulate)하는 가짜 RAID 카드이다. 하드웨어 RAID 컨트롤러 또는 가짜 RAID 카드의 경우 가짜 RAID 카드에 노출된 포트에 연결된 물리 디스크를 사용하여 RAID 볼륨을 생성해야 한다. SATAe(Serial ATA Express) 또는 NVMe(Non-Volatile Memory Express)와 같은 PCIe(Peripheral Component Interconnect Express) 기반 SSD(Solid-State Drive)의 출현으로 인해 기존의 시스템 및 방법은 적합하지 않게 되었다. PCIe 기반 SSD의 경우와 마찬가지로 기존의 시스템에서 버스에 연결된 컨트롤러는 하나뿐이다. 이러한 기존의 시스템은 사용된 호스트 컨트롤러 인터페이스에 따라 단일 컨트롤러(SATAe와 함께 사용되는 AHCI의 경우) 또는 컨트롤러와 연결된 여러 개의(NVMe의 경우처럼) 저장 장치를 가질 수 있다. 이러한 경우, 다른 PCIe 슬롯에 연결된 다른 컨트롤러와 연결된 저장 장치를 포함하여 RAID 볼륨을 생성해야 한다면 해당 HBA(host bus adapter)의 옵션 ROM에 RAID 기능이 구현되는 가짜 RAID 카드의 상기 방법으로는 불가능하다.
기존의 또 다른 방법(예: iRST)은 상이한 PCIe 슬롯 상에 연결된 장치에 걸쳐 RAID를 생성 및 삭제할 수 있게 한다. 그러나 기존 방법은 기본 프레임 워크의 일부로 구현되므로 이러한 방식은 메인 보드와 독립적이지 못하다.
본 발명이 해결하고자 하는 기술적 과제는, 사전 부팅 환경에서 RAID 볼륨에 접근하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 호스트 장치에 의해 PCIe 슬롯에 연결된 적어도 2 개의 저장 유닛을 포함하는 적어도 하나의 데이터 저장 장치를 검출하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 호스트 장치에 의해 적어도 2 개의 저장 유닛에 대한 부트 연결 벡터(boot connection vector, BCV)를 생성하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 관리자 완료 동작과 I/O 완료 동작 중 어느 하나에 의해 완료 큐를 사용하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 관리자 제출 동작 및 I/O 제출 동작 중 어느 하나에 의해 제출 큐를 사용하는 방법을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는, 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스에 연결된 적어도 두 개의 저장 장치 및 마더 보드와 독립적인 RAID 볼륨으로 부팅 할 수 있도록 RAID 를 구현하기 위해 부팅 전에 설정된 시스템 코드를 포함하는 옵션 ROM을 포함한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 시스템은 PCIe (Peripheral Component Interconnect Express) 슬롯을 포함하는 호스트 시스템 및 상기 호스트 시스템의 상기 PCIe 슬롯에 연결된 복수의 데이터 저장 장치를 포함하되, 상기 각각의 데이터 저장 장치는, 적어도 하나의 저장 유닛과, RAID 볼륨으로 부팅할 수 있도록 RAID를 구현하기 위해 부팅 전에 설정된 시스템 코드를 포함하는 옵션 ROM을 포함하고, 상기 호스트 시스템은 상기 적어도 하나의 저장 장치의 옵션 ROM으로부터 시스템 코드를 실행하여, 사전 부팅 호스트 프로그램(pre boot host program)이 적어도 두 개의 저장 유닛과 통신하여 I / O 동작을 수행하여 운영 체제를 부팅하게 한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 호스트 시스템은 사전 부팅 환경에서 RAID 볼륨에 접근(access)하기 위한 호스트 시스템에 있어서, 프로세서와, 상기 프로세서에 연결된 옵션 ROM 으로서, 상기 옵션 ROM은PCIe 슬롯에 연결되고, 적어도 2 개의 저장 유닛을 포함하는, 적어도 하나의 데이터 저장 장치를 검출하고, 상기 적어도 하나의 저장 유닛과의 부트 연결 벡터(boot connection vector)를 생성하는 옵션 ROM을 포함한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 호스트 시스템은 사전 부팅 환경에서 RAID 볼륨에 접근하기 위한 호스트 시스템에 있어서, 프로세서와, 상기 프로세서에 연결된 호스트 컨트롤러 인터페이스와, 상기 프로세서와 연결되고, 완료 큐(completion queue) 및 제출 큐(submission queue)를 포함하는 메모리 영역으로서, 상기 완료 큐는 관리자 완료 동작(admin complete operation) 및 I/O 완료 동작(IO complete operation) 중 어느 하나에 의해 사용되고, 상기 제출 큐는 관리자 제출 동작(admin submission operation) 및 I/O 제출 동작(IO submission operation) 중 어느 하나에 의해 사용되는 메모리 영역을 포함한다.
상기 다른 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 사전 부팅 환경에서 RAID 볼륨에 접근하는 방법은 호스트 시스템에 의해서 적어도 하나의 저장 장치의 옵션 ROM으로부터 시스템 코드를 실행하여, 사전 부팅 호스트 프로그램(pre boot host program)이 적어도 2 개의 저장 유닛과 통신하여 I/O 동작을 수행하여 운영 체제를 부팅하게 하는 것을 포함한다.
상기 다른 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 사전 부팅 환경에서 RAID 볼륨에 접근하는 방법은 호스트 시스템에 의해, 적어도 2 개의 저장 유닛을 포함하고, PCIe 슬롯에 연결된 적어도 하나의 데이터 저장 장치를 검출하고, 상기 호스트 시스템에 의하여, 상기 적어도 2 개의 저장 유닛과의 부트 연결 벡터를 생성하는 것을 포함하되, 상기 호스트 시스템은 프로세서와, 상기 프로세서에 연결된 옵션 ROM을 포함한다.
본 명세서의 실시예의 이들 및 다른 양상들은 다음의 설명 및 첨부 도면들과 함께 고려될 때 더 잘 이해되고 이해 될 것이다. 그러나, 이하의 설명은 바람직한 실시예 및 그것의 다수의 특정 세부 사항을 나타내지만, 예시를 위한 것이지 한정하기 위한 것은 아니다. 본 발명의 사상을 벗어나지 않으면서 본 실시예의 범위 내에서 많은 변경 및 수정이 이루어질 수 있으며, 본 명세서의 실시예는 그러한 모든 수정을 포함한다.
본 발명은 첨부된 도면에 도시되어 있으며, 도면 전체에 걸쳐서 동일한 참조 부호는 다양한 도면에서 대응하는 부분을 나타낸다. 본 명세서의 실시예는 도면을 참조한 다음의 설명으로부터 더 잘 이해될 수 있다.
도 1a는 RAID 기능이 메인 보드 펌웨어 내부에서 구현되는 기존의 방법을 도시한다.
도 1b는 RAID 기능이 호스트 버스 어댑터에서 구현되는 다른 기존의 방법을 도시한다.
도 2는 RAID 기능이 본 명세서에 개시된 실시예에 따라 데이터 저장 장치의 옵션 ROM에 구현되는 제안된 방법을 도시한다.
도 3은 본 명세서에 개시된 실시예에 따른 데이터 저장 장치의 블록도이다.
도 4a 및 도 4b는 각각의 장치의 옵션 ROM 인스턴스(instance)가 호스트 메모리에 복사되고 각각의 장치를 독립적으로 관리하는 다수의 장치를 도시한다.
도 4c는 본 명세서에 개시된 실시예에 따라 확장 ROM 영역을 공유하는 제안된 방법을 도시한다.
도 5a 및 도 5b는 EBDA(Extended Basic Input/ Output System(BIOS) Data Area)를 공유하는 기존의 방법을 도시한다.
도 5c는 본 명세서에 개시된 실시예에 따라 EBDA를 공유하는 제안된 방법을 도시한다.
도 6은 본원에 개시된 실시예에 따라 사전 부팅 환경에서 RAID 볼륨에 접근하기 위한 데이터 저장 시스템을 도시한다.
도 7은 디바이스 큐 공유의 기존의 방법을 도시한다.
도 8은 본 명세서에 개시된 실시예에 따른, 디바이스 큐 공유의 제안된 방법을 도시한다.
도 9는 본 명세서에 개시된 실시예에 따른 호스트 시스템의 블록도이다.
도 10은 본원에 개시된 실시예에 따라 사전 부팅 환경에서 RAID 볼륨에 접근하는 방법을 도시하는 흐름도이다.
도 11은 본 명세서에 개시된 실시예에 따른, 레거시 BIOS 환경에서 RAID I/O 인터페이스를 등록하는 방법을 나타내는 다른 흐름도이다.
도 12는 본원에 개시된 실시예에 따라 사전 부팅 환경에서 RAID 볼륨으로 부팅하는 방법을 도시하는 흐름도이다.
도 13은 여기에 개시된 실시예에 따라 사전 부팅 환경에서 RAID 볼륨에 접근하기 위한 방법 및 시스템을 구현하는 컴퓨팅 환경을 도시한다.
본 명세서의 실시예 및 이의 다양한 특징 및 유리한 세부 사항은 첨부 도면에 도시되고 다음의 상세한 설명에서 상세히 설명되는 비 제한적인 실시예를 참조하여보다 완전하게 설명된다. 공지 된 구성 요소 및 처리 기술의 설명은 본 명세서의 실시예를 불필요하게 불명료하게하지 않기 위해 생략된다. 또한, 일부 실시예가 새로운 실시예를 형성하기 위해 하나 이상의 다른 실시예와 결합 될 수 있기 때문에, 여기에 설명 된 다양한 실시예는 필수적으로 상호 배타적이지 않다. 본원에 사용 된 용어 "또는"은 달리 명시되지 않는 한 비 배타적인 또는를 의미한다. 본 명세서에서 사용 된 예는 단지 본 실시예가 실시 될 수있는 방법의 이해를 용이하게하고 당업자가 본 명세서의 실시예를 실시 할 수 있도록하기위한 것이다. 따라서, 실시예는 본원의 실시 양태의 범위를 제한하는 것으로 해석되어서는 안된다.
본 명세서의 실시예는 사전 부팅 환경에서 RAID 볼륨에 접근하는 방법을 개시한다. 상기 방법은 호스트 시스템에 의해 적어도 하나의 데이터 저장 장치의 옵션 ROM으로부터 시스템 코드를 실행하여 사전 부팅 호스트 프로그램이 적어도 2 개의 저장 유닛과 통신하여 I/O 작업을 수행하여 운영 체제를 부팅하게 하는 것을 포함한다.
본 발명의 다른 실시예는 사전 부팅 환경에서 RAID 볼륨에 접근하는 방법을 개시한다. 상기 방법은, 호스트 시스템에 의해, PCIe 슬롯에 연결된 적어도 2 개의 저장 유닛을 포함하는 적어도 하나의 데이터 저장 장치를 검출하는 단계를 포함한다. 또한, 상기 방법은 호스트 시스템에 의해 적어도 2 개의 저장 유닛에 대한 부트 연결 벡터를 생성하는 단계를 포함한다. 호스트 시스템은 프로세서 및 프로세서에 연결된 옵션 ROM을 포함한다. 일 실시예에서, 정상 부팅 모드의 경우, 하나의 저장 유닛에 대한 레거시 부트 연결 벡터가 생성된다. 그러나 RAID 모드의 경우 하나의 RAID 볼륨에 대해 하나의 부트 연결 벡터가 생성된다.
기존의 시스템 및 방법에서, 마더 보드 또는 하드웨어와의 의존성을 가지지 않는 사전 부팅 환경에서의 RAID 솔루션이 없었다. 또한 장치 옵션 ROM에는 RAID 솔루션의 다른 구현도 없었다. 기존의 시스템 및 방법과 달리 RAID 솔루션은 PCIe 저장 장치의 확장 ROM에 구현되어 마더 보드와의 종속성을 제거할 수 있다.
도면, 특히 도 2, 도 3c, 도 5c, 도 6, 도 8 내지 도 13을 참조하면, 유사한 도면 부호는 도면 전체에 걸쳐 동일한 구성 요소를 나타낸다. 상기 도면에서는 본 발명의 바람직한 실시예가 도시되어 있다.
도 1a는 RAID 기능이 메인 보드 펌웨어 내부에서 구현되는 기존의 방법을 도시한다. 도 1a에 도시 된 바와 같이, RAID 기능은 메인 보드 펌웨어(즉, 마더 보드) 내에 구현된다. 여기에서 기존의 방법을 사용하면 서로 다른 PCIe 슬롯에 연결된 여러 장치에서 RAID를 만들고 삭제할 수 있다. 그러나, 기존의 방법은 마더 보드에 의존되는 기본 펌웨어 코드의 일부로서 구현된다.
도 1a에 도시 된 바와 같이, RAID 드라이버는 메인 보드 펌웨어에 통합되어 있다. 또한 RAID 기능이 메인 보드 프레임 워크에 통합되어 있으므로 벤더는 동일하게만 설정할 수 있다. 또한, 이러한 유형의 기존의 방법은 오직 이러한 지원을 제공하는 메인 보드에서 사용 가능하다.
도 1b는 RAID 기능이 호스트 버스 어댑터에서 구현되는 또 다른 기존의 방법을 도시한다. 도 1b에 도시된 바와 같이, RAID 기능은 어댑터 카드(즉, 호스트 버스 어댑터)에서 구현된다. 이 경우 해당 포트에 연결된 장치에만 RAID가 생성된다. 나아가, 상기 방법은 PCIe 기반 SSD에는 적합하지 않다.
도 2는 RAID 기능이 본 명세서에 개시된 실시예에 따라 데이터 저장 장치(200a)의 옵션 ROM에 구현되는 시스템(200)을 도시한다. 일 실시예에서, 시스템(200)은 데이터 저장 장치(200a) 및 호스트 시스템(200b)을 포함한다. 일 실시예에서, 데이터 저장 장치(200a)는 예를 들어 PCIe 기반 플래시 SSD일 수 있다. 일 실시예에서, 호스트 시스템(200b)은 기본 펌웨어(202b) 및 PCI 버스 드라이버(204b)를 포함한다. PCI 버스 드라이버(204b)는 Disk-1 및 Disk-2와 연결되어있다. 도 2에 도시 된 바와 같이, RAID 기능은 마더 보드와 독립적인 RAID 볼륨으로 부팅할 수 있도록 데이터 저장 장치(200a)의 옵션 ROM에 구현된다. 또한, 제안된 방법은 UEFI 및 레거시 BIOS 인터페이스를 지원하는 시스템간에 호환 가능하다. 이어서, 데이터 저장 장치(200a)의 기능은 도 3과 관련하여 설명된다.
기존의 시스템 및 방법과는 달리, 본 발명의 몇몇 실시예에 따른 방법은 PnP(Plug and Play) 확장 장치(즉, 데이터 저장 장치(200a)에 상주) 내의 사전 부팅 환경에서 RAID 볼륨으로 부팅할 수 있다. 또한, 본 발명의 몇몇 실시예에 따른 방법에서, 드라이버 코드는 데이터 저장 장치(200a) 및 데이터 저장 장치(200a)에 상주하는 RAID 드라이버와 상호 작용한다. 나아가, 본 발명의 몇몇 실시예에 따른 방법은 메인 보드 또는 호스트 버스 어댑터의 하드웨어 또는 소프트웨어 구성 요소에 의존하지 않는다.
도 3은 본 명세서에 개시된 실시예에 따른 데이터 저장 장치(200a)의 블록도이다. 일 실시예에서, 데이터 저장 장치(200a)는 호스트 제어기 인터페이스(306) 및 옵션 ROM(304)에 연결된 적어도 두 개의 저장 유닛(3021 내지 302N)(이후에 저장 유닛(302)이라 칭함)을 포함한다. 옵션 ROM(304)은 시스템 코드(304a)를 포함한다.
시스템 코드(304a)를 포함하는 옵션 ROM(304)은 마더 보드와 독립적인 RAID 볼륨으로 부팅할 수 있도록 RAID를 구현하기 위해 부팅 전에 설정된다. 여기서, 데이터 저장 장치(200a)와 저장 유닛(302)은 독립적으로 데이터 저장 장치(200a)에 설치된 운영 체제로 부팅 가능하다. 일 실시예에서, 옵션 ROM(304) 및 OS 드라이버는 사전 부팅 환경 및 런타임 환경에서 동일한 RAID 메타 데이터 포맷을 포함한다. 일 실시예에서, 사전 부팅 환경은 레거시 BIOS 또는 UEFI이다.
도 3은 데이터 저장 장치(200a)의 제한된 구성 요소를 도시하지만, 이에 제한되는 것은 아니다. 다른 실시예에서, 데이터 저장 장치(200a)는 더 적은 또는 더 많은 수의 구성 요소를 포함할 수 있다. 또한, 각 구성 요소의 라벨 또는 명칭은 단지 예시적인 목적으로 사용 된 것이며, 본 발명의 범위를 제한하지 않는다. 하나 이상의 구성 요소는 데이터 저장 장치(200a)에서 동일하거나 실질적으로 유사한 기능을 수행하도록 함께 조합될 수 있다.
도 4a 및 도 4b는 각각의 장치의 옵션 ROM 인스턴스가 호스트 메모리에 복사되고 각각의 장치를 독립적으로 관리하는 다수의 장치를 도시한다. 이 때, 확장 ROM 영역의 크기는 128KB인 경우를 가정한다. 또한 만일 확장 ROM 영역에서 다른 장치가 80KB를 차지하면 48KB의 크기가 남을 수 있다.
도 4a 및 도 4b에 도시된 바와 같이, 19KB의 크기를 갖는 별도의 옵션 ROM을 사용하는 4 개의 PCI 장치(Device-1, Device-2, Device-3 및 Device-4)를 고려한다. 두 개의 PCI 장치(즉, Device-1 및 Device-2)가 19 * 2 = 38KB의 코드 영역을 차지하면 세 번째 및 네 번째 PCI 장치(즉, Device-3 및 Device-4)는 실행할 공간을 가지지 못한다.
도 4c는 본 명세서에 개시된 실시예에 따라 확장 ROM 영역을 공유하는 제안된 방법을 도시한다. 확장 ROM 영역의 크기가 128KB 인 경우를 가정한다. 이 때, 모든 장치 옵션 ROM 이미지가 로드되고 모든 장치에 대해 실행 된다. 본 발명의 몇몇 실시예에 따른 방법에서 레거시 옵션 ROM 크기는 19KB이다. 첫 번째 옵션 ROM은 NVMe(Non-Volatile Memory Express) SSD(Solid-State Drive) 또는 SSD(Solid State Disk)의 숫자를 센다. 확장 ROM 영역은 BIOS 쉐도우가 Option ROM 이미지를 복사하여 실행하는 메모리 영역이다. 일반적으로 확장 ROM 영역 크기는 128KB이고 0C0000h ~ 0DFFFFh의 범위를 가진다.
옵션 ROM에 구현된 기술 :
초기화 :
a. 옵션 ROM 이미지는 데이터 저장 장치(200)로부터 복사되고 2KB 정렬로 확장 ROM 영역에 배치된다.
b. 옵션 ROM은 범위 C0000에서 DFFFF까지 매 2KB마다 검색하고 옵션 ROM이 이미 실행되었는지 확인한다. 시작 옵션 ROM 이미지는 벤더 ID와 장치 ID가 포함된 ROM 헤더를 포함한다.
c. 만일 옵션 ROM이 이미 모든 장치에 대해 실행 중이면 아무 것도 수행하지 않고 옵션 ROM 실행이 반환된다.
d. 만일 현재 옵션 ROM이 첫 번째 옵션 ROM이면 다음의 사항을 수행한다:
ⅰ. PCI 인터럽트를 발행하고 시스템의 모든 PCIe 기반 저장 장치 인터페이스를 감지한다. 감지된 각 장치에 대해 컨트롤러를 초기화하고 장치를 사용할 준비한다. 또한 버스 장치 기능(bus device function)과 MBAR를 컨트롤러 정보 테이블에 저장한다. 버스 장치 기능과 마찬가지로 MBAR도 각 장치마다 고유할 수 있다. 이것은 BIOS가 MMIO(Memory-mapped I/O)를 위해 장치에 할당한 물리적 주소 공간의 기본 주소이다. 버스 장치 기능은 시스템의 PCI 장치를 식별하며, 다른 슬롯에 연결된 서로 다른 장치는 서로 다른 버스 장치 기능을 가질 수 있다. 이를 통해서 개별 장치를 식별할 수 있다.
ii. 컨트롤러의 각 네임 스페이스(namespace)에 대해 Option ROM은 BIOS가 네임 스페이스를 부팅 가능한 장치로 감지할 수 있도록 PnP 헤더를 만들어야 한다. 각 네임 스페이스에 대해 PnP 헤더를 만들어 각각이 별도의 부팅 드라이브로 식별되도록 한다.
인터럽트 등록 :
a. 각 네임 스페이스에 대해 동일한 Int13 핸들러를 연결하고 드라이브인포(DriveInfo) 테이블에 레코드를 추가하는 부팅 연결 벡터를 정의한다. 드라이브인포 테이블은 Int 13이 보낸 드라이브 번호를 해당 네임 스페이스에 매핑한다. 이는 레거시 시스템에 적용된다.
인터럽트 처리 :
a. 각 Int 13 요청은 드라이브 번호를 보내고 드라이브 인포 테이블의 드라이브 번호를 매핑하고 드라이브가 속한 컨트롤러와 네임 스페이스를 찾은 다음 적절하게 명령을 전달한다.
도 5a 및 도 5b는 EBDA를 공유하는 기존의 방법을 도시한다. EBDA 공간의 크기는 64KB인 것으로 가정한다. EBDA 메모리에서, 만일 각 장치에 대해 30KB가 요구된다면, 도 5b에 도시된 바와 같이 2 개 이하의 장치가 접속 될 수 있다.
도 5b에 도시 된 바와 같이, 디바이스 큐에 대한 메모리는 모든 장치에 사용되는 크기가 64KB 인 EBDA 메모리 영역에 할당된다. NVMe 옵션 ROM은 약 30KB의 EBDA 영역을 사용하므로 단 2 개의 장치만을 감지할 수 있다.
도 5c는 본 명세서에 개시된 실시예에 따라, EBDA를 공유하는 제안된 방법을 도시한다. 상기 단점을 극복하기 위해, 많은 장치를 지원하는 모든 NVMe SSD에 대해 제 1 NVMe SSD EBDA 메모리를 재사용하는 기술이 제안된다.
도 6은 본원에 개시된 실시예에 따라 사전 부팅 환경에서 RAID 볼륨에 접근하기 위한 데이터 저장 시스템(600)을 도시한다. 일 실시예에서, 데이터 저장 시스템(600)은 호스트 시스템(200b) 및 복수의 데이터 저장 장치들(200a1 내지 200aN)을 포함한다. 호스트 시스템(200b)은 PCIe 슬롯(206b)을 포함한다. 여기서, 복수의 데이터 저장 장치들(200a1 내지 200aN)(이하, 데이터 저장 장치(들)(200a)로 지칭 됨)은 PCIe 슬롯(206b)에 연결된다. 데이터 저장 장치(200a)는 저장 유닛(302) 및 옵션 ROM(304)을 포함한다. 옵션 ROM(304)은 시스템 코드(304a)를 포함한다.
시스템 코드(304a)를 포함하는 옵션 ROM(304)은 마더 보드와 독립적인 RAID 볼륨으로 부팅할 수 있도록 RAID를 구현하기 위해 부팅 전에 설정될 수 있다. 호스트 시스템(200b)은 데이터 저장 장치(200a)의 옵션 ROM(304)으로부터 시스템 코드(304a)를 실행하여 사전 부팅 호스트 프로그램이 저장 유닛(302)과 통신할 수 있게 하여 운영 시스템을 부팅하기 위한 I/O 동작을 수행하도록 구성 될 수 있다.
또한, 데이터 저장 장치(200a) 내의 옵션 ROM(304)과 통신하는 호스트 시스템(200b)은 PCIe 슬롯(206b)을 스캔하여 데이터 저장 장치(200a)를 검출하도록 구성된다. 또한, 데이터 저장 장치(200a) 내의 옵션 ROM(304)과 통신하는 호스트 시스템(200b)은 검출된 데이터 저장 장치(200a)를 초기화하여, RAID 메타 데이터를 판독한다. 상기 RAID 메타 데이터는 RAID 볼륨과 함께, GUID(Globally Unique Identifier), RAID 볼륨의 전체 크기 및 RAID 레벨을 포함한다. 나아가, 데이터 저장 장치(200a)의 옵션 ROM(304)과 통신하는 호스트 시스템(200b)은 검출된 RAID 볼륨에 RAID I/O 인터페이스를 설치하여 RAID 볼륨을 단일 I/O 유닛으로 보고하게 한다.
또한, 호스트 시스템(200b)은 비 RAID 볼륨 상에 정상 I/O 인터페이스를 설치할 수 있다. 일 실시예에서, 데이터 저장 장치(200a) 및 저장 유닛(302)은 데이터 저장 장치(200a)에 설치된 운영 시스템으로 독립적으로 부팅할 수 있다. 일 실시예에서, 옵션 ROM(304) 및 OS 드라이버는 사전 부팅 환경 및 런타임 환경에서 동일한 RAID 메타 데이터 포맷을 분석한다. 사전 부팅 환경은 레거시 BIOS 인터페이스 또는 UEFI 중 어느 하나이다.
도 6은 데이터 저장 시스템(600)의 제한된 구성 요소를 도시하지만, 다른 실시예가 이에 한정되는 것은 아니다. 다른 실시예에서, 데이터 저장 시스템(600)은 더 적은 또는 더 많은 수의 구성 요소를 포함 할 수 있다. 또한, 각 구성 요소의 라벨 또는 명칭은 단지 예시적인 목적으로 사용된 것이며, 본 발명의 범위를 제한하지 않는다. 하나 이상의 구성 요소는 함께 결합되어 데이터 저장 시스템(600)에서 동일하거나 실질적으로 유사한 기능을 수행 할 수 있다.
도 7은 디바이스 큐 공유의 기존의 방법을 도시한다. 도 7은 디바이스 큐에 대한 기존의 메모리 레이아웃을 도시한다.
또한, 도 8은 본 명세서에 개시된 실시예에 따른, 제안된 디바이스 큐 공유의 제안된 방법을 도시한다. 일반적으로 EBDA는 레거시 옵션 ROM에서 데이터 세그먼트로 사용되는 영역이다. 일반적으로 EBDA는 상술한 장치에서 사용된다. 상술한 장치는 EBDA에 할당된 큐에서 명령을 수집하고 응답을 게시한다.
몇몇의 호스트 제어기 인터페이스는 I/O 및 관리 목적을 위해 상이한 세트의 요청 및 응답 큐를 특정한다. 단일 스레드 실행 환경(single threaded execution environment)의 경우 호스트와 장치 간의 모든 통신이 동기 방식으로 이루어질 수 있다. 또한, 호스트 메모리 영역은 관리 및 I/O 목적을 위한 큐로서 등록될 수 있다.
도 9는 본 명세서에 개시된 실시예에 따른 호스트 시스템(200b)의 블록도이다. 일 실시예에서, 호스트 시스템(200b)은 프로세서(902), 프로세서(902)에 연결된 호스트 컨트롤러 인터페이스(904), 프로세서(902)에 연결된 메모리 영역(906), 옵션 ROM(908)을 포함한다. 옵션 ROM(902)은 시스템 코드(908a)를 포함한다. 메모리 영역(906)은 완료 큐(906a) 및 제출 큐(906b)를 포함한다. 완료 큐(906a)는 관리자 완료 동작 및 I/O 완료 동작 중 어느 하나에 의해 사용된다. 또한, 제출 큐(906b)는 관리자 제출 동작 및 I/O 제출 동작 중 어느 하나에 의해 사용된다.
일 실시예에서, 제출 큐(906b)는 옵션 ROM(908)에 의해 관리자 제출 큐에 요청이 게시되고, 응답이 옵션 ROM(304)에 의해 관리자 완료 큐에 게시될 때 생성된다. 일 실시 형태에서, 완료 큐(906a)는 옵션 ROM(908)에 의해 관리자 제출 큐에 요청이 게시되고, 응답이 호스트 시스템(200b)에 의해 관리자 완료 큐에 게시될 때 생성된다.
도 9는 호스트 시스템(200b)의 제한된 구성 요소를 도시하지만, 다른 실시예가 이에 제한되지 않는다. 다른 실시예에서, 호스트 시스템(200b)은 더 적은 또는 더 많은 수의 구성 요소를 포함 할 수 있다. 또한, 각 구성 요소의 라벨 또는 명칭은 단지 예시적인 목적으로 사용된 것이며, 본 발명의 범위를 제한하지 않는다. 호스트 시스템(200b)에서 동일하거나 실질적으로 유사한 기능을 수행하기 위해 하나 이상의 구성요소가 함께 결합될 수 있다.
도 10은 본원에 개시된 실시예에 따라 사전 부팅 환경에서 RAID 볼륨에 접근하는 방법(1000)을 도시하는 흐름도이다. 단계(1002) 에서, 상기 방법은 데이터 저장 장치(200a)의 옵션 ROM(304)으로부터 시스템 코드를 실행하여 사전 부팅 호스트 프로그램이 저장 유닛(302)과 통신할 수 있게 하여 운영 시스템을 부팅하기 위한 I/O 동작을 수행하는 단계를 포함한다. 상기 방법은 호스트 시스템(200b)이 데이터 저장 장치(200a)의 옵션 ROM(304)으로부터 시스템 코드를 실행하여 사전 부팅 호스트 프로그램이 저장 장치들(302)과 통신할 수 있게 하여 I/O 동작을 수행하여 운영 체제를 부팅하게 한다.
단계(1004)에서, 본 방법은 PCIe 슬롯(206b)을 스캐닝하여 데이터 저장 장치(200a)를 검출하는 단계를 포함한다. 상기 방법은 호스트 시스템(200b)이 PCIe 슬롯(206b)을 스캔하여 데이터 저장 장치(200a)를 검출하게 한다. 단계(1006)에서, 본 방법은 검출 된 데이터 저장 장치(200)를 초기화하여 RAID 메타 데이터를 판독하는 단계를 포함한다. RAID 메타 데이터는 RAID 볼륨과 함께, GUID, RAID 볼륨의 전체 크기 및 RAID 레벨을 포함한다. 이 방법은 호스트 시스템(200b)이 검출된 데이터 저장 장치(200a)를 초기화하여 RAID 메타 데이터를 판독하는 단계를 포함한다. RAID 메타 데이터는 RAID 볼륨과 함께, GUID, RAID 볼륨의 전체 크기 및 RAID 레벨을 포함한다.
단계(1008)에서, 본 방법은 검출된 RAID 볼륨에 RAID I/O 인터페이스를 설치하여 RAID 볼륨을 단일 I/O 유닛으로 보고하는 단계를 포함한다. 이 방법은 호스트 시스템(200b)이 검출된 RAID 볼륨에 RAID I/O 인터페이스를 설치하여 RAID 볼륨을 단일 I/O 유닛으로 보고하게 한다. 일 실시예에서, 호스트 시스템(200b)은 비 RAID 볼륨 상에 정상 I/O 인터페이스를 설치한다. 일 실시예에서, 옵션 ROM(304)은 마더 보드와 독립적인 RAID 볼륨으로 부팅할 수 있도록 RAID를 구현하도록 설정된 시스템 코드(304a)를 포함한다. 일 실시예에서, 사전 부팅 환경은 레거시 BIOS 인터페이스 및 UEFI 중 어느 하나이다.
흐름도(1000)의 다양한 동작, 동작, 블록, 단계 등은 다른 순서 또는 동시에 제시된 순서로 수행될 수 있다. 또한, 일부 실시예에서, 동작, 블록, 단계 등의 일부는 본 발명의 범위를 벗어나지 않고 생략되거나, 추가되거나, 수정될 수 있다.
도 11은 본 명세서에 개시된 실시예에 따라, 레거시 BIOS 환경에 RAID I/O 인터페이스를 등록하는 방법을 나타내는 다른 흐름도(1100)이다.
단계(1102)에서, 본 방법은 PCIe 슬롯(206b)에 연결된 저장 유닛(302)를 포함하는 데이터 저장 장치(200a)를 검출하는 단계를 포함한다. 이 방법은 호스트 시스템(200b)이 PCIe 슬롯(206b)에 연결된 저장 유닛(302)을 포함하는 데이터 저장 장치(200a)를 검출할 수 있게 한다. 단계(1104)에서, 이 방법은 저장 유닛들(302)에 대한 부트 연결 벡터를 생성하는 단계를 포함한다. 이 방법은 호스트 시스템(200b)이 저장 유닛들(302)에 대한 부트 연결 벡터를 생성하게 한다.
일 실시예에서, 저장 유닛들(302)은 옵션 ROM(304) 내의 RAID 볼륨으로 부팅할 수 있도록 RAID를 구현하기 위해 부팅 이전에 설정된 시스템 코드를 포함한다.
흐름도(1100)에서의 다양한 동작, 동작, 블록, 단계 등은 다른 순서 또는 동시에 제시된 순서로 수행 될 수 있다. 또한, 일부 실시예에서, 동작, 블록, 단계 등의 일부는 본 발명의 범위를 벗어나지 않고 생략되거나, 추가되거나, 수정될 수 있다.
도 12는 본 명세서에 개시된 실시예에 따라 사전 부팅 환경에서 RAID 볼륨으로 부팅하는 방법을 도시하는 흐름도(1200)이다. 연결된 각 장치에 대해 아래에 설명 된 프로세스가 수행된다. 단계(1202)에서, 상기 방법은 상기 장치가 초기화되었는지 여부를 결정하는 단계를 포함한다.
단계(1204)에서, 상기 장치가 초기화되지 않았다고 결정되면, 단계(1206)에서, 상기 방법은 상기 장치를 초기화하는 단계를 포함한다. 단계(1208)에서, 상기 방법은 각 네임 스페이스 또는 디스크(lun)에 대한 RAID 메타 데이터를 읽는 단계를 포함한다. 단계(1210)에서, 디스크가 RAID 그룹의 일부라고 결정되면, 단계(1212)에서, 상기 방법은 디스크가 RAID 그룹의 제 1 멤버인지 여부를 결정하는 단계를 포함한다.
단계(1212)에서, 디스크가 RAID 그룹 내의 제 1 멤버인 것으로 결정되면, 단계(1214)에서, 상기 방법은 디스크를 RAID 멤버 마스터로서 마킹하는 단계를 포함한다. 단계(1216)에서, 다른 장치가 검출되었다고 결정되면, 상기 방법은 단계(1204)로 루프(loop)된다. 단계(1216)에서, 다른 장치가 검출되지 않는다고 결정되면, 상기 방법은 플랫폼 펌웨어로 제어를 복귀시키는 단계를 포함한다.
단계(1212)에서, 디스크가 RAID 그룹에서 제1 멤버가 아니라고 결정되면, 단계(1218)에서, 상기 방법은 디스크를 RAID 멤버 슬레이브로 마킹하는 것을 포함하고 상기 방법은 단계(1216)으로 반복된다. 단계(1210)에서, 디스크가 RAID 그룹의 일부가 아니라고 결정되면, 단계(1220)에서, 상기 방법은 비 RAID 멤버로서 디스크를 마킹하는 단계를 포함한다. 단계(1222)에서, 상기 방법은 디스크 I/O 인터페이스를 설치하는 단계를 포함하고, 상기 방법은 단계(1218)로 반복된다.
단계(1204)에서, 장치가 초기화되었다고 결정되면, 단계(1224)에서, 상기 방법은 디스크가 비 RAID 멤버인지 여부를 결정하는 단계를 포함한다. 단계(1224)에서, 디스크가 비 RAID 멤버라면, 상기 방법은 단계(1222)로 루프된다. 단계(1204)에서, 장치가 초기화되었다고 결정되면, 단계(1226)에서, 상기 방법은 디스크는 RAID 멤버 마스터인지를 결정한다. 단계(1226)에서, 디스크가 RAID 멤버 마스터 인 것으로 결정되면, 단계(1228)에서, 상기 방법은 RAID I/O 인터페이스를 설치하는 단계를 포함하고, 상기 방법은 단계(1218)로 반복된다.
단계(1204)에서, 장치가 초기화되었다고 결정되면, 단계(1230)에서, 상기 방법은 디스크가 RAID 멤버 슬레이브인지 여부를 결정하는 단계를 포함한다. 단계(1230)에서, 디스크가 RAID 멤버 슬레이브라고 결정되면, 상기 방법은 단계(1218)로 루프된다.
흐름도(1200)의 다양한 동작, 동작, 블록, 단계 등은 다른 순서 또는 동시에 제시된 순서로 수행 될 수 있다. 또한, 일부 실시예에서, 동작, 블록, 단계 등의 일부는 본 발명의 범위를 벗어나지 않고 생략되거나, 추가되거나, 수정될 수 있다.
본 발명의 일 실시예에서, 아래의 표 1에 나타낸 바와 같이 디바이스 C1 내지 C6 및 디스크 D1 내지 D9를 고려한다 :
Devices Disks
C1 D1
C2 D2, D3, D4
C3 D5
C4 D6
C5 D7, D8
C6 D9
초기에, 각각의 장치(Cx)에 대해, 하기와 같은 사항을 수행한다.
a. 버스 장치 기능을 사용하여 디바이스 인포 테이블(DEVICE_INFO_TABLE)을 질의한다. 디바이스 인포 테이블은 장치에 관한 북키핑(book keeping)정보를 저장한다. 상기 정보는 PCI 버스 장치 기능, 호스트 메모리에 있는 큐의 네임 스페이스 주소의 개수 등을 포함한다.
b. 만일 엔트리가 존재하지 않으면,
ⅰ. 장치를 초기화한다.
ii. 디바이스에 대한 디스크 인포 테이블(DISK_INFO_TABLE)을 작성한다. 디스크 인포 테이블은 상기 장치와 관련된 저장 유닛(302)에 관한 북키핑 정보를 저장한다. 저장 유닛(302)이 RAID 마스터인지, 슬레이브인지 또는 비 RAID인지의 마킹은 디스크 인포 테이블에 설정된다.
iii. 장치(Cx)의 각 디스크(Dx)에 대해 다음을 수행한다.
1. Ddf를 읽는다.
1- 1)만일 디스크가 RAID 그룹의 일부라면,
1- 2)만일 디스크가 RAID 그룹의 첫 번째 멤버라면, 이를 감지한다(RAID 인포 테이블(RAID_INFO_TABLE)에 질의한다). RAID 인포 테이블은 RAID 그룹에 대한 북키핑 정보를 저장한다. RAID 그룹의 첫 번째 멤버가 발견되면 테이블의 엔트리가 생성된다. 이후 다른 RAID 멤버 디스크가 상기 엔트리를 업데이트한다.
디스크를 RAID 멤버 마스터(RaidMemberMaster)로 표시한다.
RAID 인포 테이블(RAID_INFO_TABLE)에 새 항목을 추가한다.
1- 2)그렇지 않으면,
디스크를 RAID 멤버 슬레이브(RaidMemberSlave)로 표시한다.
RAID 인포 테이블을 업데이트한다.
1- 1)그렇지 않으면,
디스크를 비RAID멤버(NonRaidMember)로 표시한다.
2. 디스크 인포 테이블에 항목을 추가한다.
iv. 디바이스 인포 테이블에 엔트리를 추가한다.
v. 2- 1)만일 Dx가 RAID 멤버 마스터로 표시되고, 전체 시스템의 첫 번째 마스터라면,
1. 모든 장치의 위치를 찾는다.
2. 위치가 지정된 각 장치에 대해 다음을 수행한다.
3. 1 단계를 반복한다.
2- 1)그렇지 않으면,
디바이스 엔트리(DeviceEntry)를 복사하여 컨텍스트 구조(context structure)에 저장한다.
만일 Dx가 RAID 멤버 마스터로 표시된 경우, RAID 블록 I/O를 설치한다(I/O 블록은 UEFI 사양에 따른 인터페이스이다).
만일 Dx가 RAID 멤버 슬레이브로 표시된 경우 블록 I/O를 설치하지 않는다.
만일 Dx가 비RAID멤버로 표시된 경우 블록 I/O를 설치한다. 이 경우 정상 모드 I/O 인터페이스가 등록된다.
도 13은 여기에 개시된 실시예에 따라 사전 부팅 환경에서 RAID 볼륨으로 부팅 할 수 있는 방법 및 시스템을 구현하는 컴퓨팅 환경(1300)을 도시한다. 도면에 도시된 바와 같이, 컴퓨팅 환경(1302)은 제어 유닛(1304) 및 산술 논리 유닛(ALU)(1306), 메모리(1310), 저장 유닛(1312), 복수의 네트워킹 장치(1316) 및 다수의 입출력(I/O) 장치(1314)를 포함한다. 처리 유닛(1308)은 각 스킴(scheme)들의 명령들을 처리하는 역할을 한다. 처리 유닛(1308)은 그 처리를 수행하기 위해 제어 유닛(1304)으로부터 명령을 수신한다. 또한, 명령들의 실행에 관련된 임의의 논리 및 산술 연산들은 ALU(1306)의 도움으로 계산된다.
전체 컴퓨팅 환경(1302)은 다수의 동종 또는 이종 코어, 상이한 종류의 다수의 CPU, 특수 매체 및 다른 가속기로 구성 될 수 있다. 처리 유닛(1308)은 상기 스킴들의 명령들을 처리하는 역할을 한다. 또한, 복수의 처리 유닛(1308)은 단일 칩 상에 또는 복수의 칩 상에 배치될 수 있다.
구현에 필요한 명령들 및 코드들을 포함하는 스킴은 메모리 유닛(1310) 또는 저장 장치(1312) 또는 둘 모두에 저장된다. 실행시, 명령들은 대응하는 메모리(1310) 또는 저장 유닛(1312)으로부터 인출 될 수 있고 처리 유닛(1308)에 의해 실행될 수 있다.
임의의 하드웨어 구현의 경우, 네트워킹 유닛 및 I/O 장치 유닛을 통한 구현을 지원하기 위해 다양한 네트워킹 장치(1316) 또는 외부 I/O 장치(1314)가 컴퓨팅 환경에 접속될 수 있다.
본 명세서에 개시된 실시예는 적어도 하나의 하드웨어 장치 상에서 실행되는 적어도 하나의 소프트웨어 프로그램을 통해 구현 될 수 있고 구성요소를 제어하기 위해 네트워크 관리 기능을 수행할 수 있다. 도 2, 3, 4c, 5c, 6, 8 내지 13에 나타난 구성요소는 하드웨어 장치 또는 하드웨어 장치와 소프트웨어 장치의 조합 중 적어도 하나 일 수 있는 블록을 포함한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (20)

  1. 호스트 컨트롤러 인터페이스;
    상기 호스트 컨트롤러 인터페이스에 연결된 적어도 두 개의 저장 장치; 및
    마더 보드와 독립적인 RAID(Redundant Array of Independent Disk) 볼륨으로 부팅 할 수 있도록 RAID 를 구현하기 위해 부팅 전에 설정된 시스템 코드를 포함하는 옵션 ROM (Option Read-Only Memory)을 포함하는 데이터 저장 장치.
  2. 제1 항에 있어서,
    상기 데이터 저장 장치 및 상기 적어도 2 개의 저장 유닛은 상기 데이터 저장 장치에 설치된 운영 시스템으로 독립적으로 부팅 가능한 데이터 저장 장치
  3. 제1 항에 있어서,
    상기 데이터 저장 장치 내의 상기 적어도 2 개의 저장 유닛은 독립적으로 부팅 가능한 데이터 저장 장치.
  4. 제1 항에 있어서,
    상기 옵션 ROM 및 OS 드라이버는 사전 부팅 환경(pre-boot environment) 및 런타임 환경(run-time environment)에서 동일한 RAID 메타 데이터 포맷을 분석(parse)하는 데이터 저장 장치.
  5. 제1 항에 있어서,
    사전 부팅 환경은 레거시 BIOS(Legacy Basic Integrated Operating System) 인터페이스 및 UEFI(Unified Extensible Firmware Interface) 중 어느 하나인 데이터 저장 장치.
  6. PCIe (Peripheral Component Interconnect Express) 슬롯을 포함하는 호스트 시스템; 및
    상기 호스트 시스템의 상기 PCIe 슬롯에 연결된 복수의 데이터 저장 장치를 포함하되,
    상기 각각의 데이터 저장 장치는, 적어도 하나의 저장 유닛과, RAID 볼륨으로 부팅할 수 있도록 RAID를 구현하기 위해 부팅 전에 설정된 시스템 코드를 포함하는 옵션 ROM을 포함하고,
    상기 호스트 시스템은 상기 적어도 하나의 저장 장치의 옵션 ROM으로부터 시스템 코드를 실행하여, 사전 부팅 호스트 프로그램(pre boot host program)이 적어도 두 개의 저장 유닛과 통신하여 I / O 동작을 수행하여 운영 체제를 부팅하게 하는 데이터 저장 시스템.
  7. 제6 항에 있어서,
    상기 저장 장치 내의 상기 옵션 ROM과 통신하는 상기 호스트 시스템은,
    상기 PCIe 슬롯을 스캔하여 상기 적어도 하나의 저장 장치를 검출하고;
    검출된 상기 적어도 하나의 저장 장치를 초기화하여 RAID 메타 데이터를 판독하되, 상기 RAID 메타 데이터는 RAID 볼륨과 함께 GUID(Globally Unique Identifier), 상기 RAID 볼륨의 전체 크기 및 RAID 레벨을 포함하고,
    감지된 RAID 볼륨에 RAID I/O 인터페이스를 설치하여 상기 RAID 볼륨을 단일 I/O 유닛으로 보고하는 것을 더 포함하는 데이터 저장 시스템.
  8. 제7 항에 있어서,
    상기 호스트 시스템은 비 RAID 볼륨(non-RAID volume) 상에 정상 I/O 인터페이스를 설치하는 것을 더 포함하는 데이터 저장 시스템.
  9. 제7 항에 있어서,
    상기 옵션 ROM은 마더 보드와 독립적인 RAID 볼륨으로 부팅을 가능하게 하기 위해 RAID를 구현하게 하는 시스템 코드를 포함하는 데이터 저장 시스템.
  10. 제7 항에 있어서,
    상기 데이터 저장 장치 및 상기 적어도 2 개의 저장 유닛은 상기 데이터 저장 장치에 설치된 상기 운영 시스템으로 독립적으로 부팅 가능한 데이터 저장 시스템.
  11. 제7 항에 있어서,
    상기 옵션 ROM 및 OS 드라이버는 사전 부팅 환경 및 런타임 환경에서 동일한 RAID 메타 데이터 포맷을 분석하는 데이터 저장 시스템.
  12. 제7 항에 있어서,
    사전 부팅 환경은 레거시 BIOS 인터페이스 및 UEFI 중 어느 하나인 데이터 저장 시스템.
  13. 사전 부팅 환경에서 RAID 볼륨에 접근(access)하기 위한 호스트 시스템에 있어서,
    프로세서와,
    상기 프로세서에 연결된 옵션 ROM 으로서, 상기 옵션 ROM은PCIe 슬롯에 연결되고, 적어도 2 개의 저장 유닛을 포함하는, 적어도 하나의 데이터 저장 장치를 검출하고, 상기 적어도 하나의 저장 유닛과의 부트 연결 벡터(boot connection vector)를 생성하는 옵션 ROM을 포함하는 호스트 시스템.
  14. 제13 항에 있어서,
    상기 적어도 2 개의 저장 유닛은 상기 옵션 ROM 내의 RAID 볼륨으로 부팅할 수 있도록 RAID를 구현하기 위해 부팅 전에 설정된 시스템 코드를 포함하는 호스트 시스템.
  15. 사전 부팅 환경에서 RAID 볼륨에 접근하기 위한 호스트 시스템에 있어서,
    프로세서와,
    상기 프로세서에 연결된 호스트 컨트롤러 인터페이스와,
    상기 프로세서와 연결되고, 완료 큐(completion queue) 및 제출 큐(submission queue)를 포함하는 메모리 영역으로서, 상기 완료 큐는 관리자 완료 동작(admin complete operation) 및 I/O 완료 동작(IO complete operation) 중 어느 하나에 의해 사용되고, 상기 제출 큐는 관리자 제출 동작(admin submission operation) 및 I/O 제출 동작(IO submission operation) 중 어느 하나에 의해 사용되는 메모리 영역을 포함하는 호스트 시스템.
  16. 제15 항에 있어서,
    상기 제출 큐는 옵션 ROM에 의해 관리자 제출 큐에 요청이 게시되고, 상기 옵션 ROM에 의해 응답이 관리자 완료 큐에 게시될 때 생성되는 호스트 시스템.
  17. 제15 항에 있어서,
    상기 완료 큐는 요청이 옵션 ROM에 의해 관리자 제출 큐에 게시되고, 상기 옵션 ROM에 의해 응답이 관리자 완료 큐에 게시될 때 생성되는 호스트 시스템.
  18. 제15 항에 있어서,
    상기 메모리 영역은 상기 호스트 시스템의 DRAM 어드레스인 호스트 시스템.
  19. 호스트 시스템에 의해서 적어도 하나의 저장 장치의 옵션 ROM으로부터 시스템 코드를 실행하여, 사전 부팅 호스트 프로그램(pre boot host program)이 적어도 2 개의 저장 유닛과 통신하여 I/O 동작을 수행하여 운영 체제를 부팅하게 하는 것을 포함하는 사전 부팅 환경에서 RAID 볼륨에 접근하는 방법.
  20. 제19 항에 있어서,
    상기 저장 장치 내의 옵션 ROM과 통신하는 호스트 시스템에 의해, PCIe 슬롯을 스캐닝하여 상기 적어도 하나의 저장 장치를 검출하고,
    상기 저장 장치 내의 옵션 ROM과 통신하는 호스트 시스템에 의해, 위해 상기 검출된 적어도 하나의 저장 장치를 초기화하여 RAID 메타 데이터를 판독하되, 상기 RAID 메타 데이터는 RAID 볼륨과 함께 GUID, 전체 RAID 볼륨의 크기 및 RAID 레벨을 포함하고,
    상기 저장 장치 내의 옵션 ROM과 통신하는 호스트 시스템에 의해 검출된 RAID 볼륨 상의 RAID I/O 인터페이스를 설치하여 상기 RAID 볼륨을 단일 I/O 유닛으로 보고하는 것을 더 포함하는 사전 부팅 환경에서 RAID 볼륨에 접근하는 방법.
KR1020170026577A 2016-08-25 2017-02-28 사전 부팅 환경에서 raid 볼륨에 접근하는 데이터 저장 시스템 및 방법 KR20180023784A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201641028979 2016-08-25
IN201641028979 2016-08-25

Publications (1)

Publication Number Publication Date
KR20180023784A true KR20180023784A (ko) 2018-03-07

Family

ID=61242640

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170026577A KR20180023784A (ko) 2016-08-25 2017-02-28 사전 부팅 환경에서 raid 볼륨에 접근하는 데이터 저장 시스템 및 방법

Country Status (2)

Country Link
US (1) US20180059982A1 (ko)
KR (1) KR20180023784A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261698B2 (en) * 2017-05-16 2019-04-16 Dell Products Systems and methods for hardware-based raid acceleration for variable-length and out-of-order transactions
KR102406857B1 (ko) * 2018-02-09 2022-06-10 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US11507288B2 (en) * 2021-04-15 2022-11-22 Dell Products L.P. Detecting and reconfiguring of boot parameters of a remote non-volatile memory express (NVME) subsystem
US11934841B2 (en) * 2021-07-27 2024-03-19 Dell Products L.P. System and method for managing a power supply management namespace during a chassis boot up

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6651165B1 (en) * 2000-11-13 2003-11-18 Lsi Logic Corporation Method and apparatus for directly booting a RAID volume as the primary operating system memory
US6904497B1 (en) * 2001-09-21 2005-06-07 Adaptec, Inc. Method and apparatus for extending storage functionality at the bios level
US6961791B2 (en) * 2001-10-17 2005-11-01 Hewlett-Packard Development Company, L.P. Method for expansion and integration of option ROM support utilities for run-time/boot-time usage
US7143234B2 (en) * 2002-11-26 2006-11-28 Intel Corporation Bios storage array
US7320052B2 (en) * 2003-02-10 2008-01-15 Intel Corporation Methods and apparatus for providing seamless file system encryption and redundant array of independent disks from a pre-boot environment into a firmware interface aware operating system
US7127603B2 (en) * 2003-11-14 2006-10-24 Dell Products, L.P. System and method for manufacture of information handling systems with selective option ROM executions
US7552319B2 (en) * 2004-06-30 2009-06-23 Intel Corporation Methods and apparatus to manage memory access
US7447889B2 (en) * 2005-04-20 2008-11-04 Hewlett-Packard Development Company, L.P. Method and apparatus for configuring a computer system utilizing a read only memory storing an option file containing selectable configuration options and a script file
US7987438B2 (en) * 2006-08-10 2011-07-26 International Business Machines Corporation Structure for initializing expansion adapters installed in a computer system having similar expansion adapters
US7958343B2 (en) * 2006-09-08 2011-06-07 Hewlett-Packard Development Company, L.P. BIOS bootable RAID support
US7743243B2 (en) * 2007-02-14 2010-06-22 Dell Products, Lp System and method to enable teamed network environments during network based initialization sequences
US8595458B2 (en) * 2008-09-29 2013-11-26 International Business Machines Corporation Intelligent extent initialization in storage environment
US9135029B2 (en) * 2014-01-02 2015-09-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Securely reconfiguring a multi-node system to prevent firmware rollback
JP6502879B2 (ja) * 2016-03-08 2019-04-17 東芝メモリ株式会社 記憶装置
US10146606B2 (en) * 2016-04-06 2018-12-04 Dell Products, Lp Method for system debug and firmware update of a headless server
US20180095679A1 (en) * 2016-09-30 2018-04-05 Piotr Wysocki Device driver to provide redundant array of independent disks functionality
US10656873B2 (en) * 2016-12-21 2020-05-19 Intel Corporation Technologies for prioritizing execution of storage commands

Also Published As

Publication number Publication date
US20180059982A1 (en) 2018-03-01

Similar Documents

Publication Publication Date Title
US10261800B2 (en) Intelligent boot device selection and recovery
US9372754B2 (en) Restoring from a legacy OS environment to a UEFI pre-boot environment
US7818500B2 (en) Apparatus and method for using one core for RAID control in multi-core CPU
US8015353B2 (en) Method for automatic RAID configuration on data storage media
CN108255410B (zh) 一种处理磁盘漫游的方法、raid控制器和设备
US10067777B2 (en) Supporting multiple operating system environments in computing device without contents conversion
JP4802527B2 (ja) 計算機システム
US8037210B2 (en) Computer and method for directly accessing computer hardware by virtual system
US20080072224A1 (en) Enhanced store facility list system and operation
KR20180023784A (ko) 사전 부팅 환경에서 raid 볼륨에 접근하는 데이터 저장 시스템 및 방법
US10346065B2 (en) Method for performing hot-swap of a storage device in a virtualization environment
CN113312140A (zh) 虚拟可信平台模块
US9870162B2 (en) Method to virtualize PCIe controllers to support boot/hibernation/crash-dump from a spanned virtual disk
US7594077B2 (en) System, method and apparatus to accelerate raid operations
US10331557B1 (en) Distribution of memory address resources to bus devices in a multi-processor computing system
US9361123B2 (en) Boot from logical volume spanning plurality of PCI devices
US20060047858A1 (en) ROM scan memory expander
US20190213147A1 (en) Storage system and mapping method
CN101825994B (zh) 基于固件的非操作***依赖的闪存阵列管理装置和方法
US6970986B1 (en) Software based system and method for I/O chip hiding of processor based controllers from operating system
US11347435B2 (en) One-touch migration of virtual assets
TWI840849B (zh) 計算系統、電腦實施方法及電腦程式產品
US12045623B2 (en) Systems and methods for memory content sharing between hosts and management controllers
US20230297390A1 (en) Systems and methods for memory content sharing between hosts and management controllers
KR100947136B1 (ko) 소프트웨어의 증분 프로비져닝