여기에 개시된 특징들 및 교시들 각각은 NVMe-oF 표준과 호환 가능한 SSD를 정밀하게 튜닝하고 최적화하기 위한 시스템 및 방법을 제공하기 위해 별도로 또는 다른 특징 및 교시들과 조합하여 사용될 수 있다. 이 추가적인 특징들 및 교시들 중 다수를 개별적으로 그리고 조합하여 사용하는 대표적인 예들이 첨부된 도면들을 참조하여 설명된다. 본 명세서의 상세한 설명은 본 발명의 측면들을 실시하기 위한 상세한 내용을 당업자에게 예시하기 위한 것이며, 특허 청구 범위의 권리 범위를 제한하기 위한 것이 아니다. 따라서, 상세한 설명에 개시된 특징들의 조합은 가장 넓은 의미로 그 발명을 실행하는 데 필수적이지 않을 수 있으며, 단지 본 발명의 대표적인 예들을 구체적으로 설명하기 위해 교시된다.
이하의 설명에서, 단지 설명의 목적으로, 특정 용어가 본 발명의 완전한 이해를 위해 제시된다. 그러나, 당업자에게는 이러한 특정 세부 사항이 본 발명의 교시를 실행하는데 요구되지 않는다는 것이 분명할 것이다.
본 명세서의 상세한 설명의 일부분은 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 알고리즘 용어 및 기호적 표현으로 나타낸다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술 분야의 당업자가 자신의 연구 내용을 당업자에게 효과적으로 전달하기 위해 사용된다. 여기에서 알고리즘은 일반적으로 원하는 결과를 유도하는 단계의 자체-일관성 시퀀스로 이해된다. 이 단계는 물리적 양을 물리적으로 조작해야 하는 단계이다. 일반적으로 반드시 그런 것은 아니지만, 이러한 양은 저장, 전송, 결합, 비교 및 기타 조작이 가능한 전기 또는 자기 신호의 형태를 취한다. 주로 공통적인 사용을 이유로 이 신호들을 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 참조하는 것이 때로는 편리하다고 증명되었다.
그러나, 이들 및 유사한 용어들은 모두 적절한 물리적 양들과 연관되어 있어야 하며, 단지 이들 양에 적용되는 편리한 라벨일 뿐이라는 것을 명심해야 한다. 이하의 설명으로부터 명백하게 나타났듯이, 특별히 언급하지 않는 한, "처리", "컴퓨팅", "계산", "결정", "디스플레이"등과 같은 용어를 이용한 설명은 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적(전자) 량으로 표현된 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 정보 저장, 전송 또는 디스플레이 장치 내의 물리적 양으로 유사하게 표현되는 다른 데이터로 조작 및 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 처리를 나타낸다.
또한, 대표예 및 종속 청구항의 다양한 특징들은 본 발명의 추가적인 유용한 실시 예를 제공하기 위해 구체적으로 그리고 명시적으로 열거되지 않은 방식으로 결합될 수 있다. 또한, 실체 그룹의 모든 가치 범위 또는 표시는 청구된 주제를 제한할 목적 뿐만 아니라 최초 공개 목적으로 모든 가능한 중간 가치 또는 중간 실체를 공개한다는 점을 명시합니다. 또한, 도면에 도시된 구성 요소의 치수 및 형상은 본 발명의 교시가 어떻게 수행되는지를 이해하도록 돕기 위해 설계된 것으로서, 실시 예에 도시된 치수 및 형상을 제한하려는 의도는 아니라는 점에 유의해야 한다.
본 발명은 데이터 저장 시스템 및 데이터 저장 시스템에 존재하는 데이터 저장 장치를 미세 튜닝 및 최적화하기 위한 방법을 서술한다. 데이터 저장 장치는 여러 제조업체 및 공급 업체에 의해 제조되고 보급된 다양한 타입 및 크기를 가질 수 있다. 일 실시예에 따르면, 데이터 저장 장치는 NVMe-oF 사양(여기서, NVMe-oF 장치 또는 NVMe-oF SSD라고 함)과 호환 가능한 솔리드-스테이트 드라이브(solid-state driver: SSD)이다. NVMe-oF 장치는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 인피니밴드(InfiniBand), 및 전송 제어 프로토콜(transmission control protocol: TCP) 네트워크등과 같은 다양한 기본 저장 네트워킹 패브릭과 호환된다. 일 실시예에 따르면, 본 데이터 저장 시스템은 랙-장착 시스템(rack-mounted system)이다. 데이터 센터의 각 랙은 컴퓨터 및 데이터 저장 장치를 수용하기 위한 슬레드(sled) 및/또는 트레이(tray)의 조합을 포함할 수 있다.
본 데이터 저장 시스템은 샤시 및 샤시에 구비된 베이스보드 관리 컨트롤러(BMC)를 포함하는 마더 보드를 포함한다. 일 실시예에 따르면, BMC는 데이터 저장 시스템의 샤시에 있는 NVMe-oF SSD를 최적화할 수 있다. 데이터 저장 시스템이 최기화된 후에, BMC는 샤시에 있는 모든 NVMe-oF SSD를 인식한다. BMC에 의해 원하는 속성을 가진 것으로 식별된 NVMe-oF SSD는 최적화되어 특정 응용 프로그램에 할당될 수 있다.
본 데이터 저장 시스템은 사용자/응용 프로그램 특정 요구 사항을 만족시키는 SSD를 사용하기로 결정할 때 사용자 또는 응용 프로그램이 샤시에 존재하는 SSD에 관한 BMC의 지식을 이용할 수 있게 한다. BMC는 서비스 레벨 계약(Service Level Agreement: SLA)에 따라 SSD를 커밋하고 할당하기 전에 사용자 또는 응용 프로그램에서 지정한대로 SLA의 데이터 프로필 및 특성을 충족시킬 수 있는 SSD를 식별할 수 있습니다. BMC는 현재 실행중인 서비스가 만료된 이후 또는 새 서비스가 시작되기 전에 저장된 데이터를 안전하게 지우는 선택된 SSD를 준비할 수 있다.
요구되는 기준을 충족시키는 샤시에 존재하는 SSD를 식별하고, 이들을 준비하기 위해 BMC를 사용하는 것은 로컬 CPU가 성능 저하없이 데이터 입출력(I/O)과 같은 중요하고 그리고/또는 빈번한 작업을 실행할 수 있게 함으로써, 샤시의 로컬 CPU의 부담을 줄일 수 있다. BMC는 샤시에 있는 SSD의 식별, SSD의 데이터 프로파일 업데이트, 새 서비스 또는 응용 프로그램을 위한 SSD 준비 등과 같이 덜 중요하거나 덜 빈번한 작업을 처리할 수 있다. 한편, 로컬 CPU가 실행하는 덜 중요하고 덜 빈번한 작업을 BMC에 적절하게 위임함으로써, 자본 지출(CapEx) 및/또는 운영 비용(Opex)을 포함한 데이터 저장 시스템의 총 소유 비용(total cost of ownership: TCO)을 낮출 수 있다. 예를 들어, 샤시의 로컬 CPU는 원래 CPU와 동등하게 중요하고 빈번한 작업을 수행할 수 있는 사양을 가진 덜 비싼 CPU로 대체될 수 있다. 이로 인해 비용을 절감하면서 데이터 저장 시스템의 I/O 성능에 영향을 미치지 않거나 최소화할 수 있다.
도 1은 일 실시예에 따른 데이터 저장 시스템의 일 예를 나타낸다. 데이터 저장 시스템(100)은 클라우드 서비스 제공자의 데이터 센터 내의 많은 데이터 저장 시스템들 중 하나일 수 있다. 클라우드 서비스 제공자의 예로는 아마존 웹 서비스(Amazon Web Services®: AWS), 마이크로소프트 애저(Microsoft Azure®) 서비스 및 구글 클라우드 플랫폼(Google Cloud Platform®)가 포함된다. 또한, 데이터 센터는 응용 프로그램(110a, 110b, 110c)을 실행하는 하나 이상의 컴퓨팅 노드 및 클라우드 서비스를 위한 인터페이스를 제공하는 서버(150)를 구비한다.
데이터 저장 시스템(100)은 샤시의 다수의 장치 포트들을 통해 다수의 SSD들(130a-130e)을 홀딩할 수 있는 샤시를 구비한다. 예를 들어, 각 SSD(130)는 U.2 커넥터 및 다른 표준 커넥터를 사용하여 샤시의 장치 포트에 삽입될 수 있다. 비록, 본 발명은 3개의 응용 프로그램 및 5개의 SSD를 도시하였으나, 많은 수의 응용 프로그램이 실행될 수 있고, 많은 수의 SSD가 샤시에 구비될 수 있다. 예를 들어, 구성에 따라 최대 24개 또는 48개의 SSD가 데이터 저장 시스템(100)의 장치 포트에 삽입될 수 있다. 응용 프로그램(110a)은 SSD(130a, 130c)에 저장된 데이터를 사용할 수 있고, 응용 프로그램(110b)은 SSD(130b, 130d)에 저장된 데이터를 사용할 수 있으며, 응용 프로그램(110c)은 SSD(130e)에 저장된 데이터를 사용할 수 있다. 사용자(예를 들어, 기업 사용자)는 클라우드 서비스 제공자가 소유 및 관리하는 SSD를 사용하여 클라우드를 통해 응용 프로그램을 실행할 수 있다.
샤시는 CPU(120), BMC(121), 네트워크 신호를 전송하도록 구성된 네트워크 스위치(122), PCIe 버스를 통해 PCIe 신호들을 전송하도록 구성된 PCIe(Peripheral component interconnect express) 스위치(123), 다수의 업링크 포트(125), 및 다수의 다운링크 포트(126)를 포함한다. 일 실시예에 따르면, 데이터 저장 시스템(110)의 기본 패브릭은 이더넷이다. 이 경우, 네트워크 스위치(122)는 이더넷 스위치이고, 업링크 포트들(125) 및 다운링크 포트들(126)은 이더넷 포트들이다. 다운링크 포드들(126) 각각은 각 SSD(130)에 연결된다.
CPU(120)는 응용 프로그램(110) 및 SSD(130) 사이에서 I/O 동작을 제공하기 위해 이더넷과 같은 소프트웨어로 정의된 네트워킹 프로토콜을 갖는 운영 체제(예를 들어, 리눅스(Linux))를 실행하도록 구성된다. BMC(121)는 관리 포트(예를 들어, IPMI(Intelligent Platform Management Interface), NVMe-Mi(NVMe Management Interface), MTCP(Management Component Transport Protocol))를 통해 샤시의 마더 보드 및 샤시 내에 구비된 SSD를 관리한다. 예를 들어, BMC(121)는 SSD(130)의 추가, 제거 및 드라이브 오류를 감지할 수 있고, 샤시 전체의 센서들을 모니터링하고, 샤시의 팬 속도를 제어할 수 있다. CPU(120) 및 BMC(121) 모두 SSD(130)와 샤시의 다른 구성 요소에 대한 PCIe 트랜잭션을 개시할 수 있다. CPU(120)가 고성능, 고비용 CPU(예를 들어, 멀티 코어를 갖는 X86 CPU)를 사용하는 반면에, BMC(121)는 저비용 CPU(예를 들어, ARM 프로세서)를 사용한다.
일 실시예에 따르면, SSD(130)는 샤시의 마더 보드와 SSD(130) 사이에 설립된 PCIe 버스를 통해 제어 평면상의 BMC(121)로 일부 장치의 고유 정보를 푸시할 수 있다. 제어 평면을 통해 전달될 수 있는 일부 장치의 고유 정보의 예로는 SSD(130)의 발견 정보 및 FRU(field-replaceable unit) 정보가 포함될 수 있으나, 이에 한정되지 않는다. 특히, 장치 고유 정보는 특정 요구 사항 및 속성을 갖는 SSD(130)를 식별하기 위해 BMC(121)에 의해 소비될 수 있다. 이로써 SSD(130)의 상태를 폴링(polling)하기 위한 BMC(121)의 부담이 감소될 수 있다.
클라우드 서비스 공급자의 사용자 또는 서비스 관리자, 또는 데이터 센터의 컴퓨팅 노드에서 실행되는 응용 프로그램(110)은 클라우드 서비스 공급자로부터 컴퓨팅 및/또는 저장 리소스를 리스하기 위해 서버(150)로 쿼리(query)를 송부할 수 있다. 쿼리에 응답하여, 서버(150)는 데이터 센터 내의 BMC(121)(그리고 다른 BMC들)과 통신하여 그들이 관리하는 SSD의 장치 고유 정보를 전송한다. 일 실시예에 따르면, BMC(121)에 의해 검색된 SSD 정보는 SSD(130)의 속성을 포함한다. 속성의 예로는 벤더 ID(VID), 서브 시스템 벤더 ID(SSVID), 시리얼 넘버(SN), 모델 넘버(MN), 용량, 최대 데이터 전송 크기(MDTS), 읽기 데이터 단위 수, 쓰기 데이터 단위 수, 호스트 읽기 명령, 호스트 쓰기 명령 및 컨트롤러 사용 기간이 포함될 수 있으며, 그러나 이에 한정되지 않는다. SSD의 속성에 추가하여, BMC(121)는 서버(150)로 사용자 (또는 응용 프로그램)가 응용 프로그램을 실행하려고 하는 특정 기간 동안의 현재 사용 및/또는 가용성과 같은 SSD(130)의 추가적인 정보를 전송할 수 있다. 일 실시 예에서, 사용자의 쿼리는 사용자와 추가 SSD(130)를 필요로 하는 클라우드 서비스 공급자 혹은 응용 프로그램(110) 사이에 설정된 SLA에 근거하여 자동으로 생성될 수 있다.
일 실시예에 따르면, 서버(150)는 사용자 또는 서비스 관리자에게 사용자 인터페이스를 제공하도록 구성된 웹 서버일 수 있다. 서버(150)와 BMC(121) 사이의 통신은 관리 포트를 통할 수 있다. BMC(121)는 샤시 내에 구비된 SSD(130)를 관리하므로, 샤시 내에 존재하는 모든 SSD(130)의 상태 및 속성을 알고 있다. 일 실시예에 따르면, BMC(121)는 속성을 충족시키고 사용자에 의해 지정된 시간대 동안 이용 가능한 샤시 내에 구비된 SSD(130)의 상태 및 속성 정보를 전송할 수 있다. BMC(121) 및 데이터 센터의 다른 BMC로부터 수신된 상태 및 속성 정보에 근거하여, 서버(150)는 요구된 상태 및 속성을 만족시킬 수 있고 상기 시간대 동안 이용 가능한 SSD의 총 개수를 식별할 수 있다. 서버(150)에 의해 제공된 상태 및 속성 정보를 이용하여, 사용자는 클라우드 서비스 공급자와 서비스 계약을 체결하여 특정 시간대에 SSD를 사용하기로 결정할 수 있다. 서비스 계약에 기초하여, BMC(121)는 특정 SSD가 이용 가능하고 준비되어 있음을 사용자에게 보고할 수 있고, 사용자는 특정 시간대 동안 자격이 있는 SSD(130)의 저장 공간을 사용하여 응용 프로그램(110)을 실행할 수 있다. 리스가 완료되면, 서버(150)는 BMC(121)에 명령을 전송함으로써, 서비스가 만료되어 다음 서비스를 위해 SSD(130)를 비워야 한다는 것을 사용자에게 통지할 수 있다. SLA에서 지정된 응용 프로그램에 따라, BMC(121)는 응용 프로그램에 적합한 SSD(130)를 준비하기 위해 SSD(130)를 최적화 및/또는 초기화할 수 있다.
일 실시예에 따르면, 클라우드 서비스 공급자의 관리자 또는 데이터 센터의 컴퓨팅 노드에서 실행되는 적격 응용 프로그램은 그들의 속성 및 가용성에 기초하여 SSD(130)를 할당하고 사용할 수 있다. 클라우드 서비스 공급자의 관리자는 SSD의 상태 및 속성 정보를 다른 데이터 센터들의 관리자와 교환하여 서로 다른 데이터 센터들간에 SSD를 효율적으로 할당, 배정 및 사용할 수 있다.
일 실시예에 따르면, BMC(121)는 SSD가 이용 가능하게 될 때 하나 이상의 SSD의 속성 정보를 자발적으로 서버(150)에 전송할 수 있다. 서버(150)는 SSD의 상태가 변경되지 않는 한 속성 정보를 사용할 수 있고, 특정 속성을 갖는 SSD가 클라우드 서비스의 잠재적인 사용자에게 이용 가능하다는 것을 요청 측에 알릴 수 있다.
도 2a, 2b, 2c, 및 2d는 일 실시예에 따른 BMC를 사용하여 샤시 내의 SSD를 특성화하고 최적화하는 플로우챠트의 일 예를 나타낸다. 일 실시예에 따르면, BMC는 SSD의 성능을 최적화하기 위한 최적화 프로그램을 실행할 수 있다. 최적화 프로그램은 BMC에 의해 처리되는 프로세스이며, 소프트웨어 또는 펌웨어로 실행될 수 있다. 처음에는 BMC에 최적화 프로그램이 로드되지 않을 수 있다. 이 경우 최적화 프로그램은 클라우드 서비스 공급자의 사용자, 응용 프로그램 또는 관리자의 요청에 따라 외부에서 다운로드될 수 있다. 최적화 프로그램이 로드된 BMC는 요청 측에게 SSD의 속성 정보를 제공하여 SSD의 사용 및 조건을 최적화할 수 있다.
도 2a를 참조하면, 클라우드 서비스 공급자의 관리자(예를 들어, 리소스 이행 응용 프로그램)는 SSD의 특정 키 속성을 포함하는 사용자로부터 리스 명령을 수신하고, 풀에 BMC로부터의 응답을 요청한다. BMC로부터의 응답에 기초하여, 관리자는 특정 키 속성을 충족하는 샤시 내에 존재하는 SSD를 결정한다(201). BMC는 SSD가 센서를 사용하여 샤시의 장치 포트에 삽입될 때, 샤시 내에 있는 SSD 유형을 이미 알고 있을 수 있다. 처음에는 BMC가 최적화 프로그램을 장착하거나 실행하도록 구성될 수 없다. BMC의 최적화 프로그램이 인에이블 또는 로드되지 않은 경우(202), 클라우드 서비스 공급자의 관리자는 최적화 프로그램 소프트웨어(SW) 또는 펌웨어(FW)를 다운로드 할 수 있다(203). 그 다음, 관리자는 샤시가 고-가용성(HA) 모드로 실행되도록 구성되었는지 여부를 판단한다(204). 샤시가 HA 샤시로 구성된 경우, 관리자는 적절한 HA 드라이버를 선택하고, HA 샤시의 중복 복제 요소를 활성화한다(205). 관리자는 특정 샤시에 대해 HA 모드가 이용 가능한지를 더 체크한다(206). 선택된 샤시가 HA 샤시이지만, HA 모드를 사용할 수 없는 경우, 관리자는 오류를 보고하고(250), BMC의 최적화 프로그램은 활성화되지 않는 것으로 판단한다(260). HA 모드가 이용 가능하면, 관리자는 단계 205에서 선택된 HA 드라이버를 로딩하고(207), 페어링 파트너와 통신한다(208). HA 모드에서 페어링 파트너는 동일한 샤시 또는 다른 샤시에 있는 다른 컴퓨팅 노드일 수 있다. 파트너가 실패하면, 페어링 파트너가 파트너의 작업을 대신 처리할 수 있다. 이렇게 하면 시스템 가동 중지 시간을 최소화하거나 제거할 수 있다. 페어링 파트너를 사용할 수 있고(209), 선택한 샤시가 이중 경로를 사용할 수 있으면(210), 관리자는 샤시에 있는 SSD 유형을 결정한다. 예를 들어, 관리자는 BMC에 SSD 유형을 제공하도록 지시할 수 있다. 그렇지 않은 경우, 관리자는 경고를 보고하고, 비-HA 모드(211)로 샤시를 실행시키도록 구성한다(211).
도 2b를 참조하면, BMC는 샤시에 존재하는 SSD를 스캔한다(212). 스캔할 새로운 SSD가 있으면, BMC는 장치 고유 정보에 대한 쿼리를 새로운 SSD로 보내고, 장치 고유 정보 테이블에 새로운 SSD의 장치 고유 정보를 채운다(214). 스캔할 SSD가 더 이상 없으면(213), BMC는 수집된 장치 고유 정보를 서버로 송부한다(215). 이 스캐닝 및 쿼리 프로세스는 장치 고유 정보 테이블에 샤시에 있는 모든 스캔된 SSD에 대한 장치 고유 정보가 포함될 때까지 반복된다.
도 2c를 참조하면, BMC는 유형 및 속성에 따라 최적화 프로그램을 사용하여 샤시에 있는 SSD를 구성한다. 최적화 프로그램이 로드되면, BMC는 필요에 따라 최적화 프로세스를 수행할 준비가 된다. 예를 들어, BMC는 SSD의 추가, 제거 또는 오류를 감지하고, 이에 따라 최적화를 수행한다. 일 실시 예에서, BMC는 선택된 SSD가 NVMe-oF SSD인지(221) 또는 NVMe SSD인지를(231) 체크한다. 선택된 SSD가 NVMe-oF SSD인 경우, BMC는 선택된 SSD가 동일한 공급 업체 및 동일한 모델에서 온 것인지 여부를 확인한다(222). 이 경우, 공급 업체는 사용자, 응용 프로그램 또는 클라우드 서비스 공급자의 관리자의 요청으로 지정될 수 있다. 선택된 SSD가 동일한 공급 업체에서 온 것이 아닌 경우, BMC는 공통 매개 변수를 선택하여 SSD를 표준화한다(241). 다른 공급 업체의 경우, BMC는 다른 공급 업체의 SSD와 공통 매개 변수 및/또는 속성에 기초하여 하나의 공급 업체로부터 다른 SSD를 선택하여 SSD를 표준화할 수 있다. 샤시 내에 모든 SSD의 공통 매개 변수가 존재하면(242), BMC는 최적화 프로그램을 실행하기 시작한다(243). 선택된 SSD가 동일한 공급 업체로부터 나온 것이라면, BMC는 NVMe-oF 드라이버를 선택하고(223), 선택된 NVMe-oF 드라이버를 로드하여(224), SSD를 선택한다(225). 선택된 SSD가 NVMe SSD인 경우, BMC는 NVMe 드라이버를 선택하고(232), 선택된 NVMe 드라이버를 로드한다(233).
도 2d를 참조하면, BMC의 최적화 프로그램은 SLA 정보(252) 뿐만 아니라 선택된 SSD 상에서 실행될 응용 프로그램의 서명을 수신한다(251). 응용 프로그램이 실행되는 동안(253), BMC는 응용 프로그램이 멈출 때까지 SLA 정보를 계속 수신한다(260).
도 3은 일 실시예에 따른 BMC 및 SSD 사이의 트랜잭션(transactions)의 일 예를 나타낸다. 일 실시예에 따르면, BMC(310)는 응용 프로그램을 실행할 수 있다(ON). SSD(320)가 NVMe-oF SSD인 경우에, BMC(310) 상에서 실행되는 최적화 프로그램은 NVMe-oF 사양에 의해 지원된다.
최적화 프로그램은 IDFY 명령(351)을 SSD(320)로 전송한다. IDFY 명령(351)에 응답하여, SSD(320)는 SSD 정보(352)를 준비하여 BMC(310)로 전송한다. SSD 정보(352)를 성공적으로 전송한 후, SSD(320)는 BMC(310)로 IDFY 완료 엔트리를 전송한다. BMC(310)는 SSD(320)의 로그 정보를 요청하는 로그 명령을 SSD(320)로 전송한다. SSD(320)는 BMC(310)에 로그 페이지(355)를 전송한다. 로그 페이지(355)는 SMART/건강 정보 로그 및 성능과 리소스에 대한 공급 업체별 로그 페이지를 포함할 수 있다. 로그 페이지를 성공적으로 전송한 후, SSD(320)는 로그 완료 엔트리(356)를 전송한다.
BMC의 최적화 프로그램은 NVMe-oF SSD를 지원할 수 있고, 특정 속성을 갖는 NVMe-oF SSD를 식별할 수 있다. 그들의 속성에 기초하여, 최적화 프로그램은 샤시에 있는 다양한 유형/크기의 NVMe-oF SSD를 최적화 및 표준화할 수 있다.
샤시 내의 각각의 NVMe-oF SSD는 자신의 장치 고유 정보(350)를 BMC 상에서 실행되는 최적화 프로그램에 보고할 수 있다. 장치 고유 정보의 보고는 정기적으로 이루어지거나 BMC의 요청이 있을 때 할 수 있다. 장치 고유 정보(350)의 예로는 벤더 ID(VID), 서브 시스템 벤더 ID(SSVID), 시리얼 번호(SN), 모델 번호(MN), 용량, 최대 데이터 전송 크기(MDTS), 읽기 데이터 단위 수, 쓰기 데이터 단위 수, 호스트 읽기 명령, 호스트 쓰기 명령 및 컨트롤러 사용 시간이 포함되나, 이에 한정되지 않는다. 예를 들어, NVMe-oF SSD는 NVMe 식별(IDFY) 명령 및/또는 빠른 쿼리를 위한 CMBQuery 서비스를 통해 최적화 프로그램에 장치 고유 정보(350)를 제공 할 수 있다.
일 실시예에 따르면, 요청 측의 요청에 따라 샤시 내에 있는 SSD로 장치 고유 정보(350)를 요청하는 쿼리를 전송할 수 있다. 샤시에 있는 SSD에 대해 수집된 장치 고유 정보(350)을 바탕으로, BMC는 SSD를 그들의 속성에 따라 하나 이상의 그룹으로 분류할 수 있다. BMC는 SSD가 할당되고 SSD를 사용하려는 응용 프로그램이 시작되기 전에, 요청 측에게 이러한 속성을 제공할 수 있다. 최적화 프로그램은 장치 고유 정보(350)를 수집 및 분석하여 요청 측에게 유용한 정보를 제공할 수 있다. 예를 들어, 요청 측은 응용 프로그램에 사용되는 SSD가 필수 속성, 구성 및 데이터 프로필을 가지고 있는지의 여부에 대해 정보에 입각한 결정을 할 수 있다.
일 실시예에 따르면, SSD는 BMC가 논리적으로 소유, 관리 및 액세스할 수 있는 메모리 버퍼를 구비한다. BMC는 프로토콜 프로세스를 수반하지 않고, SSD의 메모리 버퍼에 직접 액세스할 수 있다.
일 실시예에 따르면, 본 발명은 다수의 공급 업체로부터의 다양한 SSD들의 최적화를 제공하기 위한 시스템 및 방법을 제공한다. 클라우드 서비스 공급자는 고객 정의 SLA를 기반으로 응용 프로그램을 실행하기 위한 SSD 풀을 제공할 수 있다. 클라우드 서비스 공급자는 BMC에서 수집한 SSD 정보를 사용하여 잠재적인 사용자에게 리소스 리스 서비스를 제공할 수 있다. 리스하기 전에, 사용자는 SSD의 원하는 속성을 지정하고, 사용 가능한 SSD의 속성과 상태를 검토할 수 있다. BMC는 현재 응용 프로그램이 완료되거나 현재 리스가 만료된 후 SSD를 비울 수 있다. 예를 들어, BMC는 신규 사용자에 대한 리스된 구성 및 가입 데이터를 안전하게 지우거나 제거할 수 있다.
일 실시예에 따르면, SSD는 응용 프로그램의 필요에 따라 재구성될 수 있다. SSD의 일부 속성은 여러 응용 프로그램에 대해 반복적으로 리스 및 구성된 후 일정 기간에 걸쳐 변경될 수 있다. BMC는 최적화 프로그램을 실행하여 SSD의 속성을 업데이트할 수 있다. 호스트는 고객 응용 프로그램 프로파일을 충족시킬 수 있는 SSD를 선택할 수 있을 뿐만 아니라 특정 응용 프로그램에 대해 현재 최적화되지 않은 SSD를 재구성할 수도 있다. BMC는 SSD가 응용 프로그램에 할당되기 전에 응용 프로그램을 실행할 준비가 된 최적의 상태로 SSD를 재구성할 수 있다.
일 실시예에 따르면, 데이터 저장 시스템은: 다수의 데이터 저장 장치; 베이스보드 관리 컨트롤러(BMC)를 포함하는 마더 보드; 및 상기 다수의 데이터 저장 장치에 네트워크 트래픽을 전송하기 위한 네트워크 스위치를 포함한다. 상기 BMC는 상기 다수의 데이터 저장 장치로부터 수신된 장치 고유 정보에 기초하여 상기 다수의 데이터 저장 장치들 중 데이터 저장 장치 그룹을 식별하고, 상기 데이터 저장 장치 그룹의 식별자를 쿼리측으로 전송한다.
상기 데이터 저장 장치는 NVMe-oF 표준과 호환 가능한 솔리드 스테이트 드라이브(SSD)이고, 상기 네트워크 스위치는 이더넷 스위치이며, 상기 복수의 업링크 포트 및 상기 다수의 다운링크 포트는 이더넷 포트들이다.
상기 다수의 데이터 저장 장치들 각각은 PCIe 버스를 통해 상기 BMC로 상기 장치 고유 정보를 전송한다.
상기 장치 고유 정보는 상기 다수의 데이터 저장 장치의 발견 정보 및 필드 재배치 유닛(FRU) 정보를 포함한다.
상기 장치 고유 정보는 벤더 ID(VID), 서브 시스템 벤더 ID(SSVID), 시리얼 번호(SN), 모델 번호(MN), 용량, 최대 데이터 전송 크기(MDTS), 읽기 데이터 단위 수, 쓰기 데이터 단위 수, 호스트 읽기 명령, 호스트 쓰기 명령 및 컨트롤러 비지(busy) 시간을 포함하는 상기 다수의 데이터 저장 장치의 속성을 더 포함한다.
상기 장치 고유 정보는 상기 특정 시간 기간동안 상기 다수의 데이터 저장 장치의 현재 사용 또는 가용성을 더 포함한다.
상기 BMC는 상기 쿼리측의 요청에 응답하여 상기 다수의 데이터 저장 장치로 쿼리를 전송하고, 상기 다수의 데이터 저장 장치는 상기 BMC의 상기 쿼리에 응답하여 상기 BMC로 상기 장치 고유 정보를 전송한다.
상기 쿼리는 서비스 레벨 계약(SLA)에 기반하여 자동적으로 생성된다.
상기 쿼리는 상기 데이터 저장 장치들의 속성에 대한 요구를 포함한다.
상기 BMC는 상기 다수의 데이터 저장 장치들 중 상기 속성에 대한 요구를 만족하는 상기 데이터 저장 장치의 그룹을 상기 쿼리측으로 전송한다.
상기 BMC는 상기 데이터 저장 장치의 그룹을 비우도록 더 구성된다.
다른 실시예에 따르면, 방법은: 베이스보드 관리 컨트롤러(BMC)를 사용하여 데이터 저장 시스템에 포함된 다수의 데이터 저장 장치로부터 장치 고유 정보를 수신하는 단계; 상기 다수의 데이터 저장 장치들의 속성에 기초하여 상기 다수의 데이터 저장 장치들 중 데이터 저장 장치의 그룹을 식별하는 단계; 및 상기 데이터 저장 장치 그룹의 식별자를 쿼리측으로 전송하는 단계를 포함한다.
상기 데이터 저장 장치는 NVMe-oF 표준과 호환 가능한 솔리드 스테이트 드라이브(SSD)이고, 상기 네트워크 스위치는 이더넷 스위치이며, 상기 복수의 업링크 포트 및 상기 다수의 다운링크 포트는 이더넷 포트들이다.
상기 다수의 데이터 저장 장치들 각각은 PCIe 버스를 통해 상기 BMC로 상기 장치 고유 정보를 전송한다.
상기 장치 고유 정보는 상기 다수의 데이터 저장 장치의 발견 정보 및 필드 재배치 유닛(FRU) 정보를 포함한다.
상기 장치 고유 정보는 벤더 ID(VID), 서브 시스템 벤더 ID(SSVID), 시리얼 번호(SN), 모델 번호(MN), 용량, 최대 데이터 전송 크기(MDTS), 읽기 데이터 단위 수, 쓰기 데이터 단위 수, 호스트 읽기 명령, 호스트 쓰기 명령 및 컨트롤러 비지(busy) 시간 중 하나 이상을 포함하는 상기 다수의 데이터 저장 장치의 속성을 더 포함한다.
상기 장치 고유 정보는 상기 특정 시간 기간동안 상기 다수의 데이터 저장 장치의 현재 사용 또는 가용성을 더 포함한다.
상기 BMC는 상기 쿼리측의 요청에 응답하여 상기 다수의 데이터 저장 장치로 쿼리를 전송하고, 상기 다수의 데이터 저장 장치는 상기 BMC의 상기 쿼리에 응답하여 상기 BMC로 상기 장치 고유 정보를 전송한다.
상기 방법은 서비스 레벨 계약(SLA)에 기반하여 쿼리를 자동으로 생성하는 것을 더 포함할 수 있다.
상기 쿼리는 상기 데이터 저장 장치들의 속성에 대한 요구를 포함한다.
상기 BMC는 상기 다수의 데이터 저장 장치들 중 상기 속성에 대한 요구를 만족하는 상기 데이터 저장 장치의 그룹을 상기 쿼리측으로 전송한다.
상기 방법은 BMC를 사용하여 상기 데이터 저장 장치의 그룹을 비우는 것을 더 포함할 수 있다.
NVMe-oF SSD를 정밀하게 튜닝하고 최적화하기 위한 시스템 및 방법을 구현하는 다양한 실시 예를 설명하기 위해 상기 실시 예들이 이상에서 설명되었다. 개시된 예시적인 실시 예들로부터의 다양한 변형 및 벗어남은 당업자에게 발생할 수 있는 것이다. 본 발명의 권리 범위 내에 있는 주제 구성은 다음의 특허 청구 범위에서 제시된다.