KR20130095799A - 고가용성 솔리드 스테이트 드라이브를 제공하는 방법 및 장치 - Google Patents

고가용성 솔리드 스테이트 드라이브를 제공하는 방법 및 장치 Download PDF

Info

Publication number
KR20130095799A
KR20130095799A KR1020137015377A KR20137015377A KR20130095799A KR 20130095799 A KR20130095799 A KR 20130095799A KR 1020137015377 A KR1020137015377 A KR 1020137015377A KR 20137015377 A KR20137015377 A KR 20137015377A KR 20130095799 A KR20130095799 A KR 20130095799A
Authority
KR
South Korea
Prior art keywords
storage
pcie
memory
logic
controller
Prior art date
Application number
KR1020137015377A
Other languages
English (en)
Other versions
KR101455016B1 (ko
Inventor
파나카즈 쿠마르
제임스 미첼
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20130095799A publication Critical patent/KR20130095799A/ko
Application granted granted Critical
Publication of KR101455016B1 publication Critical patent/KR101455016B1/ko

Links

Images

Classifications

    • 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
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

고가용성 엔터프라이즈 시스템에서 솔리드 스테이트 드라이브들(SSD)을 사용하는 방법 및 장치가 제공된다. 직렬 시스템 버스를 통해 비저장 버스 프로토콜을 사용하여 적어도 2개의 저장 제어기들에 SSD로의 동시 예비 경로들이 제공된다.

Description

고가용성 솔리드 스테이트 드라이브를 제공하는 방법 및 장치{METHOD AND APPARATUS TO PROVIDE A HIGH AVAILABILITY SOLID STATE DRIVE}
본 발명은 솔리드 스테이트 드라이브(SSD)들의 사용에 관한 것으로 특히 고가용성 저장 시스템들에서 SSD들의 사용에 관한 것이다.
고가용성 시스템은 시스템 내의 저장 장치들로의 1차 경로에서 장애가 검출될 때 예비 경로를 통해 저장 장치들로의 액세스를 허용하기 위해 완전한 예비(fully redundant) 입력/출력 경로들 및 예비 저장 제어기들을 제공함으로써 단일 포인트 장애(single point failure)를 견딘다.
전형적으로, 파이버 채널(Fibre Channel), SAS(Serial Attached Small Computer Systems Interface) 및 SATA(Serial Advanced Technology Attachment)와 같은 직렬 저장 프로토콜들은 고가용성 시스템들 내의 저장 제어기들에 의해 저장 장치들과 저장 제어기들 사이의 데이터의 전송을 관리하기 위해 사용된다.
청구된 발명 대상의 실시예들의 특징들은 이하의 상세한 설명이 진행되면서, 도면들을 참조하면 명백해질 것이며, 도면에서 동일한 숫자들은 동일한 부분들을 도시한다.
도 1은 PCIe(Peripheral Component Interconnect Express) 솔리드 스테이트 드라이브(SSD)로의 예비 PCIe 경로를 제공하는 장치의 실시예의 블록도이다.
도 2는 PCIe SSD로의 완전한 예비 PCIe 경로들을 제공하기 위해 PCIe SSD에 통합되는 도 1에 도시된 장치의 실시예의 블록도이다.
도 3은 PCIe SSD에 액세스하기 위해 도 1 및 도 2에 도시된 실시예들에서 사용되는 기능들의 구현의 실시예를 예시하는 블록도이다.
도 4는 복수의 저장 제어기들에 의한 PCIe SSD의 공유를 허용하기 위해 도 1 및 도 2에 도시된 이중 포트/단일 포트 로직의 실시예의 블록도이다.
도 5는 엔터프라이즈 시스템 내의 저장 서브시스템의 실시예의 블록도이다.
도 6은 도 5에 도시된 저장 서브시스템의 실시예의 블록도이다.
도 7은 도 6에 도시된 DMA 제어기에 의해 사용되는 멀티캐스팅 동작 기술자 포맷을 갖는 DMA를 예시한다.
도 8은 도 7과 함께 설명되는 멀티캐스팅 동작 기술자를 사용하여 도 6에 도시된 저장 서브시스템에서 수행되는 RAID 레벨 5/6 스트리밍 미러 기록 동작을 예시하는 흐름 그래프이다.
도 9는 로컬 저장 제어기와 원격 저장 제어기 사이의 직접적인 어드레스 변환을 예시하는 블록도이다.
이하의 상세한 설명은 청구된 발명 대상의 예시적 실시예들을 참조하면서 진행될지라도, 그의 많은 대안들, 수정들, 및 변화들은 당업자들에게 명백할 것이다. 따라서, 청구된 발명 대상은 광범위하게 고찰되고, 단지 첨부한 청구항들에 진술된 바와 같이 정의되도록 의도된다.
전형적으로, 고가용성 시스템에서 사용되는 저장 장치들은 데이터가 회전 매체 상에 저장되는 하드 디스크 드라이브들(HDD), 예를 들어 자기 디스크 드라이브, 콤팩트 디스크 판독 전용 메모리(CD-ROM) 드라이브 또는 디지털 비디오 디스크(DVD) 드라이브이다. 전형적으로, 이 디스크 드라이브들은 직렬 저장 프로토콜 인터페이스를 포함한다. 시스템 내의 복수의 저장 제어기들 각각에 대한 액세스를 단일 직렬 저장 프로토콜 인터페이스를 통해 액세스 가능한 저장 장치들 모두에 제공함으로써 중복이 지원된다.
솔리드 스테이트 드라이브(SSD)는 블록 스토리지를 위한 NAND 플래시 기술을 사용하고 따라서 회전 매체를 갖는 디스크 드라이브보다 더 좋은 I/O 성능을 갖는다. NAND는 메모리 셀들로의 순차 액세스를 가능하게 하는 비휘발성 메모리이다. SSD는 전형적으로 SSD와 시스템 내의 저장 제어기 사이에서 점 대 점 직렬 링크들을 통해 데이터를 전송하는 PCIe(Peripheral Component Interconnect Express) 인터페이스를 포함한다.
PCIe 링크는 2개의 PCIe 포트들 및 그들의 상호 연결 PCIe 레인들의 집합이다. PCIe 포트는 논리적으로는 구성요소와 PCI 익스프레스 링크 사이의 인터페이스이고 물리적으로는 PCIe 링크를 정의하는 동일한 칩 상에 위치하는 송신기 및 수신기 그룹이다. PCIe 레인은 차동 신호 쌍 세트이며, 한 쌍은 송신을 위한 것이고 한 쌍은 수신을 위한 것이다.
본 발명의 실시예에서, PCIe SSD로의 예비 경로를 제공하는 방법 및 장치가 제공된다. 예비 경로 및 예비 저장 제어기는 단일 포인트 장애의 경우에 PCIe SSD 상에 저장된 데이터를 액세스 가능하게 유지한다.
도 1은 본 발명의 원리들에 따라 PCIe SSD로의 예비 PCIe 경로를 제공하는 장치의 실시예의 블록도이다. 도 1를 참조하면, 저장 서브시스템(104)은 적어도 2개의 저장 제어기들(102-1, 102-2)을 포함하며, 각각의 저장 제어기(102-1, 102-2)는 적어도 하나의 PCIe 포트를 포함한다. 다른 실시예들에서, 2개의 저장 제어기들(102-1, 102-2)보다 많은 저장 제어기들이 PCIe SSD(108)로의 액세스를 공유하는 것을 가능하게 하는 2개보다 많은 PCIe 포트들이 있을 수 있다. 다른 실시예들에서, 저장 제어기들(102-1, 102-2) 및 변환기(106)는 다른 시스템 버스 프로토콜들을 사용하여 통신할 수 있다.
저장 시스템(104) 내의 저장 제어기(102-1, 102-2)는 "캐니스터(canister)" 또는 "스토리지 블레이드(storage blade)"로 지칭될 수도 있다. 각 저장 제어기(102-1, 102-2)는 PCIe SSD로부터/에 데이터를 판독/기록하는 각각의 전용 PCIe 포트(110-1, 110-2)를 갖는다. 양 저장 제어기들(102-1, 102-2)은 동시에 활성이다. 저장 제어기들(102-1, 102-1) 중 하나가 장애일 때, 다른 저장 제어기(102-1, 102-2)는 장애 저장 제어기가 다시 동작할 때까지 PCIe SSD(108) 대 PCIe SSD(108)에 대한 모든 I/O 동작들을 처리한다. 저장 시스템(104)과 PCIe SSD(108) 사이에 결합된 변환기(106)는 양 저장 제어기들이 동시에 PCIe SSD(108)에 액세스하는 것을 가능하게 하기 위해 PCIe SSD로의 예비 경로들을 제공한다.
변환기(106)는 저장 서브시스템(104) 내의 저장 제어기(102-1)에 결합된 제1 PCIe 포트 커넥터(110-1) 및 저장 서브시스템(104) 내의 저장 제어기(102-2)에 결합된 제2 PCIe 포트 커넥터(110-2)를 갖는 이중 포트 PCIe 커넥터(114)를 포함한다. 변환기(106)는 또한 PCIe SSD(108) 내의 단일 PCIe 포트(120)에 결합된 단일 포트 PCIe 커넥터(112)를 포함한다. 변환기(106) 내의 이중 포트/단일 포트 로직(116)은 단일 포트 PCIe SSD(108)와 저장 서브시스템(104) 사이의 데이터 전송을 처리한다.
이중 포트/단일 포트 로직(116)은 각 포트에 대한 PCIe PHY 계층 및 프로토콜 기능들을 지원하는 로직을 포함한다. 게다가, 이중 포트/단일 포트 로직(116)은 각 저장 제어기(102-1, 102-2)가 SSD(108)의 자원들에 액세스하는 것을 가능하게 하기 위해 2개의 물리적 기능들(PF)을 포함하는 IO 가상화 로직을 포함한다. 실시예에서, IO 가상화 로직은 PCI SIG 멀티루트 IO 가상화(MR IOV) 사양에 의해 정의되는 기능들에 대한 지원을 포함한다. 이중 포트/단일 포트 로직(116)은 나중에 도 4와 함께 설명될 것이다.
도시된 실시예에서, 변환기(106)는 변환기(106)가 시스템(100)의 백플레인(또한 인쇄 회로 기판)의 커넥터에 삽입되는 것을 가능하게 하는 PCIe 이중 포트 커넥터(114)를 포함하는 인쇄 회로 기판이다. 실시예에서, 시스템(100)은 PCIe SSD(108)를 포함한다.
다른 실시예에서, 저장 제어기들(102-1, 102-2)은 그들이 미드-플레인(인쇄 회로 기판)의 일측 상의 커넥터에 삽입되는 것을 가능하게 하는 커넥터를 포함하고 PCIe SSD는 그것이 미드-플레인의 타측에 삽입되는 것을 가능하게 하는 드라이브 커넥터(PCIe 신호 및 전력을 가짐)를 포함한다. 미드-플레인은 PCIe 신호 및 전력 핀들을 갖는 드라이브 커넥터들을 포함한다.
2개의 저장 제어기들(캐니스터들)(102-1, 102-2)은 PCIe NTB(Non Transparent Bridge) 링크(120)를 통해 연결된다. NTB 링크(120)는 백 투 백 연결된 2개의 PCIe 종점들을 포함하여 각 종점의 베이스 어드레스 레지스터들이 도메인간 윈도우들, 즉 다른 종점에서의 어드레스 공간으로의 윈도우를 생성하는 것을 가능하게 한다. NTB 어드레스 도메인은 양 저장 제어기들(102-1, 102-2)에 의해 액세스 가능하다. NTB 링크(120)는 저장 제어기들(102-1, 102-2) 각각의 메모리가 2개의 저장 제어기들(102-1, 102-2) 사이에서 미러링되는(mirrored) 것을 가능하게 한다. NTB는 전형적으로 저장 서브시스템(104) 내의 2개의 저장 제어기들(102-1, 102-2) 사이에 페일오버(failover)를 허용하기 위해 사용된다.
실시예에서, 양 저장 제어기들(102-1, 102-2)은 동작하고 동시에 PCIe SSD(108)에 액세스(판독/기록)할 수 있다. 각각의 저장 제어기(102-1, 102-2)는 각각의 주기적 하트 비트(heart beat) 메시지를 NTB(120)를 통해 다른 저장 제어기(102-1, 102-2)에 송신한다.
실시예에서, 주기적 하트 비트 메시지를 송신하기 위해 NTB(120) 내의 도어벨 메커니즘이 사용된다. 예를 들어, 하트 비트 메시지를 저장 제어기(102-2)에 송신하기 위해, 저장 제어기(102-1)는 NTB(120) 내의 1차측 도어벨 레지스터에 비트를 기록한다(비트를 설정함). 1차측 도어벨 레지스터로의 기록의 결과로 NTB는 저장 제어기(102-2)에 대한 인터럽트를 발생시키고 그 다음에 하드웨어는 1차측 도어벨에서 연관된 비트를 소거한다. 저장 제어기(102-2)에 의한 인터럽트의 검출은 저장 제어기(102-1)에 장애가 생기지 않은 것을(즉, 저장 제어기(102-2)가 존속/활성이라는 것을) 저장 제어기(102-2)에 통지한다. 하트 비트 메시지를 저장 제어기(102-1)에 송신하기 위해, 저장 제어기(102-2)는 2차측 도어벨 레지스터에 비트를 기록하고 이 결과로 저장 제어기(102-1)에 대한 인터럽트가 발생된다.
하트 비트 메시지들을 NTB(120)를 통해 송신하는 것에 더하여, 각각의 저장 제어기(102-1, 102-2)는 그의 각각의 PCIe 포트들(110-1, 110-3 또는 110-2, 110-4)의 링크 상태를 주기적으로 감시한다. 예를 들어, 실시예에서, 링크 상태의 감시는 PCIe 포트들(110-1, 110-2, 110-3 및 110-4)과 연관된 PCIe 링크 상태 레지스터에서 데이터 링크 계층 링크 활성 비트의 상태를 체크함으로써 수행될 수 있다. 실시예에서, 링크 다운 지시 상태는 PCIe 링크 상태 레지스터 내의 비트 13(데이터 링크 계층 링크 활성 비트)의 상태에 의존한다.
저장 제어기들(102-1, 102-2) 중 어느 하나가 하트 비트 메시지 및/또는 링크 다운 지시 상태의 상실을 검출하면, 페일오버 절차가 그 저장 제어기에서 착수되고 장애 저장 제어기에 서비스가 요구되는 것을 표시하는 에러 메시지가 플래그된다.
도 2는 이중 포트 PCIe SSD(200)로의 완전한 예비 PCIe 경로들을 제공하기 위해 이중 포트 PCIe SSD(200)에 통합되는 도 1에 도시된 이중 포트/단일 포트 로직(116)의 실시예의 블록도이다. 도 1과 함께 논의된 바와 같이 저장 서브시스템(104)과 단일 포트 PCIe SSD(108) 사이에 결합된 개별 변환기(106) 대신에, 도 1 과 함께 설명된 이중 포트/단일 포트 로직(116)은 이중 포트 PCIe 인터페이스와 함께 PCIe SSD에 통합된다. 실시예에서, 이중 포트/단일 포트 로직(116)은 PCI SIG 멀티루트 IO 가상화(MR IOV) 사양에 의해 정의된 바와 같이 다수의 루트 컴플렉스들(root complexes) 사이에 I/O 장치들의 공유를 지원하는 소프트웨어 투명 멀티 프로세서 패브릭(software-transparent multi-processor fabric)을 포함한다.
다른 실시예에서, 각 저장 제어기(102-1, 102-2)는 단일 포트 PCIe SSD에 결합된다. PCIe SSD는 단일 물리적 기능(SR-IOV)을 갖는다. 제어 및 데이터 경로 라우팅 및 스위칭은 PCIe SSD에 의해 수행된다.
도 3은 PCIe SSD(108)에 액세스하기 위해 도 1 및 도 2에 도시된 실시예들에 사용되는 기능들의 구현의 실시예를 예시하는 블록도이다.
도 3을 참조하면, 각 저장 제어기(102-1, 102-2)는 가상 기계, 물리적 기능을 포함하는 하이퍼바이저 및 CPU 루트 컴플렉스를 포함한다. 각각의 CPU 루트 컴플렉스는 PCIe SSD 내의 물리적 기능과 통신한다.
PCIe MR-IOV(Multi-Root-Input-Output-Virtual) 장치가 각 포트에 대한 물리적 기능을 지원하기 때문에 양 저장 제어기들(102-1, 102-2)은 PCIe SSD로의 전용 경로를 갖는다. 물리적 기능 0(PF0)는 포트 0에 할당되고 물리적 기능 1(PF1)은 포트 0에 할당된다. 각 물리적 기능(PF0, PF1) 내에는, IO 가상화를 지원하는 많은 가상 기능들이 있다. 2개의 물리적 기능들 및 가상 기능들은 각 저장 제어기가 PCIe SSD로부터/에 데이터를 판독/기록하는 것을 가능하게 한다.
도 1-도 3에 도시되고 이들 도면과 함께 논의된 바와 같이, PCIe MR-IOV는 단일 PCIe SSD(108)를 저장 서브시스템(104)에 연결하기 위해 변환기(106) 내의 이중 포트/단일 포트 로직(116)에서 사용된다. 이것은 동일한 단일 포트 PCIe SSD(108)가 페일오버 지원이 없는 서버들에서 사용되고 또한 활성 저장 제어기에 장애가 있는 경우에 예비 저장 제어기로의 페일오버 지원을 포함하는 엔터프라이즈 저장 플랫폼들에서 사용되는 것을 가능하게 한다.
도 3에 도시된 바와 같이, PCIe 멀티루트 IO 가상화(MR-IOV) 장치는 PCIe SSD(108) 내에 통합되어 고가용성 시스템에서의 사용을 위한 이중 포트 PCIe SSD(108)를 제공한다. PCIe SSD(108)는 MR-IOV를 사용하여 2개의 호스트들로부터 액세스 가능하다. MR-IOV 프로토콜의 한 버전이 2008년 5월 12일에 PCI-SIG®에 의해 발표된 멀티루트 I/O 가상화 및 공유 사양 개정 1.0에 설명되어 있다.
도 1에 도시된 바와 같이, 변환기(106)는 3개의 PCIe 포트들(110-1, 110-2, 120)을 포함한다. 각 PCIe 포트는 IO 가상화 특징(물리적 기능(PF)) 및 가상 기능(VF)을 구현하는 내부 패브릭(IO 패브릭)을 통해 연결된 PCIe PHY 및 프로토콜 기능들을 포함한다. 각 저장 제어기(102-1, 102-2)는 각 물리적 기능(PF0(310), PF1(314))에 할당되고 변환기(106)는 각 물리적 기능(310, 314)으로부터의 요청들을 추적한다.
도 4는 PCIe SSD로의 완전한 예비 PCIe 경로들을 제공함으로써 복수의 저장 제어기들에 의한 PCIe SSD의 공유를 허용하기 위해 도 1 및 도 2에 도시된 이중 포트/단일 포트 로직(116)의 실시예의 블록도이다.
이중 포트/단일 포트 로직(116)은 어드레스 디코드 및 라우팅 로직(402)에 결합된 3개의 PCI 대 PCI(P2P) 브리지들(400-1, 400-2, 400-3)을 포함한다. 어드레스 디코드 및 라우팅 로직(402)은 2개의 업스트림 PCIe 포트들(102-1, 102-2)로부터 단일 다운스트림 PCIe 포트(120)로 수신된 패킷들/메시지들/명령들의 라우팅을 허용한다. 적절히 포맷된 트랜잭션이 2개의 업스트림 포트들 중 어느 하나에 제공될 때마다(다운스트림 포트의 메모리 윈도우 내에 버스 N+1, 장치 0, 기능 0, 또는 판독/기록 요청을 갖는 타입 0 구성 트랜잭션), 트랜잭션은 어드레스 디코드 및 라우팅 로직(402)을 통해 다운스트림 포트에 전송된다. 라우팅은 다운스트림 PCIe 종점에서 PCIe SSD(108)로의 동시 액세스를 2개의 저장 제어기들에 허용하기 위해 업스트림 PCIe 포트들에 결합된 각 저장 제어기에 동일한 다운스트림 PCIe 종점을 발견하는 경로를 허용한다.
실시예에서, 저장 제어기들(102-1, 102-2) 각각은 상이한 호스트 컴퓨터 시스템에 포함될 수 있다. 각각의 호스트 컴퓨터 시스템의 초기화 동안, PCIe 포트들(110-1, 110-2)을 통해 액세스 가능한 장치들을 발견하기 위해 호스트 컴퓨터 시스템들 각각에 의해 발견 프로세스가 개시된다.
장치들 내의 기능들의 구성 레지스터들에 액세스하기 위해 발견 프로세스 동안 PCIe 구성 트랜잭션들이 사용된다. 타입 O 구성 공간 헤더에 의해 표현되는 PCI 익스프레스 종점이 장치 내의 단일 기능으로서 구성 공간에 맵핑된다. 각 PCI 익스프레스 링크가 논리 PCI 대 PCI 브리지에 비롯되고 이 브리지의 2차 버스로서 구성 공간에 맵핑된다. 루트 포트는 PCI 익스프레스 루트 컴플렉스로부터 PCI 익스프레스 링크를 개시하는 PCI 대 PCI 브리지 구조이다. PCI 대 PCI 브리지들(400-1, 400-2)은 업스트림 포트들이다. PCI 대 PCI 브리지(400-3)는 다운스트림 포트를 나타낸다.
발견 프로세스 동안, PCI 대 PCI 브리지(400-1)는 PCIe 구성 트랜잭션들을 PCIe 포트(102-1)에 송신한 결과로서 발견된다. 2개의 타입들(타입 0 및 타입 1)의 구성 트랜잭션들이 사용될 수 있다. 타입 0 구성 트랜잭션들은 구성 트랜잭션이 실행되고 있는 버스 상에서 장치를 선택하기 위해 사용된다. 타입 1 트랜잭션들은 구성 트랜잭션 요청을 다른 버스 세그먼트에 전달하기 위해 사용된다.
예를 들어, 타입 1 구성 트랜잭션들은 PCIe 포트(110-1)를 통해 PCI 대 PCI 브리지(400-1)에 물리적으로 부착된 PCIe 루트 포트의 2차 PCIe 버스에 송신된다. PCIe 루트 포트는 호스트 루트 컴플렉스의 일부이고 본질적으로 외부 플랫폼에 대한 PCIe 브리지이다. PCIe 루트 포트는 타입 1 구성 트랜잭션을 타입 0 구성 트랜잭션으로 변환하고 타입 0 구성 트랜잭션을 PCI 대 PCI 브리지(400-1)에 송신한다.
PCI 대 PCI 브리지(400-1)를 발견했다면, PCI 대 PCI 브리지(400-1)를 통해 액세스 가능한 장치들을 결정하기 위해 PCI 대 PCI 브리지(400-1) 내의 구성 메모리 공간에 저장된 PCI 헤더가 판독된다. 타입 0 구성 트랜잭션에 응답하여 반환되는 PCI 대 PCI 브리지(400-1)와 연관된 PCI 헤더로부터 PCIe 포트 0(110-1) 상의 부착된 링크 파트너가 PCI-PCI 브리지라는 것을 검출하면, PCI 대 PCI 브리지(400-1)의 다운스트림 포트에 무엇이 연결되어 있는지를 판단하기 위해 PCI-PCI 브리지의 2차 버스에 추가 타입 1 구성 트랜잭션들이 송신된다.
타입 1 구성 트랜잭션들이 PCI 대 PCI 브리지(400-1)의 2차 버스를 타겟팅하는 것을 검출하면, PCI 대 PCI 브리지(400-1)는 타입 1 구성 트랜잭션들을 타입 0 구성 트랜잭션들로 변환하고 타입 0 구성 트랜잭션들을 어드레스 디코드 및 변환 로직(402)에 전송한다. 어드레스 디코드 및 변환 로직(402)은 타입 0 트랜잭션들을 PCI 대 PCI 브리지(400-3)에 전송한다. 타입 0 트랜잭션에 응답하여 판독되는 PCI 헤더로부터 해당 포트 상의 부착된 링크 파트너도 PCI-PCI 브리지라는 것을 검출하면, PCI 대 PCI 브리지(400-3)의 다운스트림 포트에 무엇이 연결되어 있는지를 판단하기 위해 PCI 대 PCI 브리지(400-3)의 2차측에 추가 타입 1 구성 트랜잭션들이 송신된다. 이 타입 1 구성 트랜잭션들은 그들이 PCI 대 PCI 브리지(400-3)에 도달할 때까지 PCI 대 PCI 브리지(400-1) 및 어드레스 디코드 및 변환 로직(402)을 통해 타입 1 구성 트랜잭션들로서 전송된다.
PCI 대 PCI 브리지(400-3)에 도달하면, 타입 1 구성 트랜잭션들은 타입 0 구성 트랜잭션들로 변환된다. PCIe 포트 3(120)를 통해 PCI 대 PCI 브리지(400-3)에 결합된 PCIe 종점의 PCI 헤더를 판독하는 것으로부터, 종점 장치가 PCIe SSD(108)라는 것을 검출하면, PCIe SSD의 메모리 공간 요건들이 결정될 수 있다. PCIe SSD(108)에 의해 요구되는 메모리 공간은 PCI 베이스 어드레스 레지스터(BAR) 공간을 판독하면 결정된다. 결정된 PCIe SSD 메모리 공간은 저장 제어기(102-1)에 의해 액세스 가능한 시스템 메모리 맵에 맵핑된다.
저장 제어기(102-1)에 대해 상술한 발견 프로세스는 저장 제어기(102-2)에 대해 반복되고 결정된 PCIe SSD 메모리 공간은 저장 제어기(102-2)에 의해 액세스 가능한 시스템 메모리 맵에 맵핑된다.
PCIe SSD가 양 저장 제어기들(102-1, 102-2)을 통해 발견된 후에, PCI 트리 발견 프로세스에 기초하여, 양 호스트들은 PCIe SSD(108)를 공유하고 둘 다 PCIe SSD 내의 구성 메모리 공간에 액세스할 수 있다. PCIe SSD 내의 구성 메모리 공간으로의 액세스들은 호스트 컴퓨터 시스템들 사이에서 동기화되고 따라서 저장 제어기들을 통한 PCIe SSD 내의 구성 공간에 대한 임의의 수정들은 이루어지기 전에 다른 호스트에 전달된다.
양 호스트들은 PCIe SSD 내의 구성 메모리 공간을 공유한다. 그러나, 각 호스트에게는 PCIe SSD(108) 내의 메모리 공간의 각각의 반으로의 배타적 액세스가 허용된다. 정상 동작 동안, 각 호스트는 PCIe SSD 어드레스 공간의 반을 소유하고 그의 각각의 반으로의 배타적 액세스를 갖는다. 게다가, 메모리 공간의 각각의 반은 다른 것의 미러 이미지이다(즉, 동일한 데이터를 저장함). 호스트들 중 하나의 장애를 검출하면, 비장애 호스트에게 PCIe SSD 내의 장애 호스트의 메모리 공간으로의 액세스가 허용된다.
도 5는 엔터프라이즈 시스템(500) 내의 저장 서브시스템(510)의 실시예의 블록도이다. 엔터프라이즈 시스템(500)은 복수의 스위치들(504-1, 504-2)에 결합된 복수의 서버들(502-1, 502-2, 502-3)을 포함한다. 복수의 스위치들(504-1, 504-2)은 저장 서브시스템(510)에 결합된다. 저장 서브시스템(510)은 PCIe NTB(Non Transparent Bridge) 링크(512)를 통해 연결된 2개의 저장 제어기들(캐니스터들)(506-1, 506-2)을 포함한다. 저장 서브시스템(510)은 또한 복수의 저장 장치들(508-1, 508-2, 508-3, 508-4)을 포함한다.
NTB는 백 투 백 연결된 2개의 PCIe 종점들을 포함하여 각 종점의 베이스 어드레스 레지스터들이 도메인간 윈도우들, 즉 다른 종점에서의 어드레스 공간으로의 윈도우를 생성하는 것을 가능하게 한다. NTB 어드레스 도메인은 양 저장 제어기들(506-1, 506-2)에 의해 액세스 가능하다. NTB 링크(512)는 저장 제어기들(506-1, 506-2) 각각 내의 메모리(512)가 2개의 저장 제어기들(506-1, 506-2) 사이에서 미러링되는 것을 가능하게 한다. NTB는 전형적으로 저장 서브시스템(510) 내의 2개의 저장 제어기들(506-1, 506-2) 사이에 페일오버를 허용하기 위해 사용된다.
도 6은 도 5에 도시된 저장 서브시스템(510)의 실시예의 블록도이다. 저장 서브시스템(510) 내의 각 저장 제어기(506-1, 506-2)는 호스트 입력/출력(I/O) 제어기(604), 장치 입력/출력(I/O) 제어기(606), 프로세서(600) 및 메모리(602)를 포함한다.
메모리(602)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(Synchronized Dynamic Random Access Memory), DDR(Double Data Rate) RAM, RDRAM(Rambus Dynamic Random Access Memory) 또는 임의의 다른 타입의 메모리일 수 있다.
프로세서(600)는 메모리 제어기(608), 하나 이상의 프로세서 코어들(610) 및 DMA(Direct Memory Access) 컨트롤러(DMAC)(612)를 포함한다. 실시예에서, 프로세서(600)는 시스템 온 칩(SOC)이다. 장치 I/O 제어기(606)는 장치 IOC(606)를 통해 액세스 가능한 저장 장치들(508-1, 508-2, 508-3, 508-4)로의 액세스를 제공한다. 실시예에서, 장치들(508-1, 508-2, 508-3, 508-4)은 RAID(Random Array of Independent Disks) 시스템으로 구성될 수 있다. 예를 들어, 실시예에서, 저장 장치들(508-1, 508-2, 508-3, 508-4)은 RAID 6 또는 RAID 5 시스템으로 구성될 수 있다.
실시예에서, DMA 제어기(612)는 복수의 DMA 채널들을 포함한다. 각 DMA 채널의 동작은 다른 DMA 채널들과 독립적이며, 이는 상이한 동작들이 각각의 DMA 채널에 의해 동시에 처리되는 것을 허용한다.
DMA 채널의 동작들은 메모리 대 메모리 데이터 전송들 및 메모리 대 메모리 맵핑된 I/O(MMIO) 데이터 전송들을 포함한다. 각 DMA 채널은 그를 제어하는 프로세스(DMA 클라이언트)의 명령에 따라 데이터를 이동시킨다. 메모리(602)에 저장된 기술자(614)는 데이터 전송을 설명하고 DMA 제어기(612)가 데이터 전송을 수행할 수 있게 한다. 기술자(614)는 DMA 데이터 전송을 정의하는 변수들을 저장하는 메모리(602)에 저장된 데이터 구조이다. 데이터 전송이 완료되면, DMA 제어기(612)는 프로세서 코어(610)에 대한 인터럽트, 프로그램된 위치로의 메모리 기록, 또는 둘 다를 통해 프로세서 코어(610)에 완료를 통지할 수 있다.
실시예에서, DMA 동작을 개시하기 위해, 기술자들의 체인(링크된 리스트)이 발생되어 시스템 메모리(602)에 저장될 수 있다. 체인 내의 제1 기술자의 어드레스는 DMA 제어기(612)에 제공된다. 실시예에서, 체인 내의 제1 기술자의 어드레스는 DMA 제어기(612) 내의 기술자 체인 어드레스 레지스터에 기록된다. 동작은 예를 들어 DMA 제어기(612) 내의 DMA 채널 명령 레지스터로의 기록을 통해 DMA 제어기(612) 내의 DMA 채널에 대해 개시된다.
호스트 I/O 제어기(604)는 도 5에 도시된 서버들 중 하나로의 연결을 제공한다. 장치 I/O 제어기(606)는 고성능 저장을 위해 사용되는 PCIe SSD일 수 있는 저장 장치들(508-1, 508-2, 508-3, 508-4) 중 어느 하나로의 액세스를 제공한다.
도 6에 도시된 저장 서브시스템(510)은 예비 저장 제어기("캐니스터들")(506-2), 예비 I/O 경로들, 예비 전원(도시되지 않음), 쿨링 솔루션(cooling solution)(도시되지 않음) 및 저장 장치들(508-1, 508-2, 508-3, 508-4)의 어레이를 포함한다. 저장 장치들(508-1, 508-2, 508-3, 508-4)은 디스크 드라이브들, 솔리드 스테이트 디바이스들(SSD들) 또는 임의의 다른 블록 지향 비휘발성 저장 장치일 수 있다. 저장 서브시스템(510)은 데이터를 액세스 가능하게 유지하는 완전한 예비 I/O 경로들 및 예비 저장 제어기 구성을 사용하여 단일 포인트 장애를 견딜 수 있다.
1차 저장 제어기(506-1)에 의해 저장 장치(508-1, 508-2, 508-3, 508-4)에 기록될 모든 중요한 I/O 트랜잭션 데이터가 NTB(512)를 통해 예비 저장 제어기(506-2) 내의 메모리(602)에서 미러링된다. NTB 어드레스 도메인은 양 저장 제어기들(506-1, 506-2)에 의해 액세스 가능하다. 이 미러링 동작은 주로 2개의 저장 제어기들(506-1, 506-2) 각각의 메모리(602)를 동기시키는 것을 포함한다. 이 메모리(602)는 복수의 저장 장치들(508-1, 508-2, 508-3, 508-4) 중 하나에 최근 기록된 데이터 및 복수의 저장 장치들(508-1, 508-2, 508-3, 508-4) 중 하나에 기록될 데이터를 저장한다. 단일 저장 제어기 장애의 결과로 그의 로컬 메모리(602)의 콘텐츠가 손실될 수 있지만, 장애 저장 제어기의 메모리의 콘텐츠의 사본은 예비 저장 제어기 내의 메모리에도 저장되기 때문에 이용가능하다.
1차(활성) 저장 제어기에 장애가 생길 때, 예비 저장 제어기는 활성 저장 제어기가 되고 장애 1차 저장 장치의 저장 장치(들)(508-1, 508-2, 508-3, 508-4)로 액세스할 수 있다. 활성 저장 제어기는 장애 1차 저장 제어기가 다시 접속될(back on-line) 때까지 저장 장치(들)에 대한 I/O를 수행한다.
호스트 IO 제어기(604)는 서버(들)(502-1, 502-2, 502-3)로의 연결을 제공하고 장치 IOC(606)는 저장 장치들(508-1, 508-2, 508-3, 508-4)로의 연결을 제공한다. 실시예에서, 장치 IOC(606)를 통해 액세스 가능한 저장 장치들(508-1, 508-2, 508-3, 508-4)은 RAID(Redundant Array of Independent Disks)로 구성될 수 있다.
RAID는 신뢰성, 용량, 또는 성능을 위해 복수의 물리적 저장 장치들(예를 들어, 하드 디스크 드라이브들 또는 솔리드 스테이트 드라이브들)을 논리적 저장 장치로 결합한다. 따라서, 다수의 물리적 저장 장치들 대신에, 운영 체제는 단일 논리 드라이브를 인식한다. 당업자들에게 공지되어 있는 바와 같이, 데이터를 RAID 시스템 내의 물리적 저장 장치들에 걸쳐 분배하기 위한 RAID 레벨들로 지칭되는 많은 표준 방법들이 있다.
예를 들어, 레벨 0 RAID 시스템에서는, 데이터를 블록들로 분해하고 각 블록을 개별 저장 장치에 기록함으로써 저장 장치들의 물리적 어레이에 걸쳐 데이터가 스트라이핑된다(striped). 부하를 많은 개별 저장 장치들에 걸쳐 분산시킴으로써 입력/출력(I/O) 성능이 개선된다. 레벨 0 RAID가 I/O 성능을 개선할지라도, 그것은 하나의 저장 장치에 장애가 생기면, 모든 데이터가 손실되기 때문에 중복을 제공하지 않는다.
레벨 5 RAID 시스템은 데이터와 패리티 정보 둘 다를 적어도 3개의 개별 저장 장치들에 걸쳐 스트라이핑함으로써 고레벨의 중복을 제공한다. 데이터 스트라이핑은 장애가 있는 경우에 복구 경로를 제공하기 위해 분산된 패리티와 결합된다. 레벨 6 RAID 시스템은 이중 디스크 장애들로부터의 복구를 허용함으로써 레벨 5 RAID 시스템보다 훨씬 고레벨의 중복을 제공한다.
레벨 6 RAID 시스템에서는, P 신드롬 및 Q 신드롬으로 지칭되는 2개의 신드롬이 데이터에 대해 발생되고 RAID 시스템 내의 하드 디스크 드라이브들에 저장된다. P 신드롬은 스트라이프(데이터 블록들(스트립들(strips)), P 신드롬 블록 및 Q 신드롬 블록) 내의 데이터에 대한 패리티 정보를 간단히 계산함으로써 발생된다. Q 신드롬의 발생은 갈로아 필드(GF) 승산들을 필요로 하고 디스크 드라이브 장애가 있는 경우에 복잡하다. 디스크 복구 동작들 동안 수행되는 데이터 및/또는 P 신드롬 블록 및/또는 Q 신드롬 블록을 복구하는 재생 방식은 GF 및 역 동작들 둘 다를 필요로 한다.
RAID 6에 대한 P 및 Q 신드롬 블록들 및 RAID 5에 대한 패리티의 발생 및 복구는 시스템 메모리와 저장 장치(디스크 드라이브) 사이의 데이터의 큰 블록들의 이동을 필요로 한다. 전형적으로, 컴퓨터 시스템들은 메모리와 I/O 장치들 사이에 데이터의 전송들을 수행하기 위해 직접 메모리 액세스(DMA) 제어기들(엔진들)을 포함한다. DMA 제어기는 컴퓨터 시스템이 프로세서(코어)와 관계없이 메모리에 액세스하는 것을 가능하게 한다. 프로세서는 DMA 제어기에 데이터 전송 요청을 발행함으로써 소스(메모리 또는 I/O 장치(제어기))로부터 수신지(메모리 또는 I/O 장치(제어기))로의 데이터의 전송을 개시한다. DMA 제어기는 전송을 수행하는 동안 프로세서는 다른 태스크들을 수행한다. DMA 제어기는 전송이 완료될 때 예를 들어 인터럽트를 통해 프로세서에 통지한다. 전형적으로, DMA 제어기는 복수의 독립 DMA 채널들을 관리하며, 그 각각은 소스와 수신지 사이에 하나 이상의 데이터 전송들을 동시에 수행할 수 있다.
전형적으로, 소스로부터 수신지로의 데이터 전송은 기술자, 즉 DMA 데이터 전송을 정의하는 변수들을 저장하는 메모리에 저장된 데이터 구조의 사용을 통해 지정된다. 예를 들어, 변수들은 소스 어드레스(전송될 데이터가 소스(메모리(또는 I/O 장치)의 어디에 저장되어 있는지); 사이즈(얼마나 많은 데이터를 전송할지) 및 수신지 어드레스(전송된 데이터가 수신지(메모리(또는 I/O 장치)의 어디에 저장되어야 하는지)를 포함할 수 있다. 프로세서가 각 DMA 데이터 전송 동작 전에 DMA 제어기 내의 레지스터들에 변수들을 직접 기록하게 하는 대신에 기술자들을 사용함으로써 이 기술자들의 체인을 사용하여 다수의 DMA 요청들을 체이닝(chaining)하는 것이 가능하다. 기술자들의 체인은 현재 DMA 데이터 전송이 완료된 후에 DMA 제어기가 기술자들의 체인 내의 다음 기술자에 의해 정의된 다른 DMA 데이터 전송을 자동으로 설정하고 개시하는 것을 가능하게 한다.
도 7은 도 6에 도시된 DMA 제어기에 의해 사용되는 멀티캐스팅 동작 기술자 포맷을 갖는 DMA를 예시한다.
도 7을 참조하면, 멀티캐스팅 동작 기술자(700)를 갖는 DMA는 기술자 제어 필드(702), 전송 사이즈 필드(704)(전송될 데이터의 사이즈를 저장함), 소스 어드레스 필드(706)(시스템 메모리에 저장된 데이터에 대한 소스 어드레스를 저장함) 및 수신지 어드레스 필드들(706, 708, 712, 714, 716, 718)(시스템 메모리에 저장된 데이터에 대한 수신지 어드레스들을 저장함)을 포함한다. 멀티캐스팅 동작 기술자(700)를 갖는 DMA는 또한 기술자들의 체인 내의 다음 기술자의 어드레스를 저장하기 위한 다음 기술자 어드레스(710)를 포함한다.
멀티캐스팅 동작 기술자를 갖는 DMA는 다수의 동시 수신지 복사 동작들이 하나의 기술자에서 처리되는 것을 가능하게 한다는 점에서 표준 DMA 동작에 대한 확장을 제공한다. 이 동작은 상이한 수신지 어드레스들을 처리한다. 멀티캐스팅 동작 기술자를 갖는 DMA는 소스 데이터를 다수의 수신지들에 전송한다. 수신지 어드레스 필드들의 수는 기술자 제어 필드 내의 3-비트 필드(수신지들(DEST)의 수)를 통해 인코딩된다.
실시예에서, 이 3개의 비트 필드는 이하의 표 1에 도시된 바와 같이 인코딩된다:
000: 수신지 어드레스 1로의 DMA 복사
001: 수신지 어드레스 1, 2로의 DMA 복사
010: 수신지 어드레스 1, 2, 3으로의 DMA 복사
011: 수신지 어드레스 1, 2, 3, 4로의 DMA 복사
100: 수신지 어드레스 1, 2, 3, 4, 5로의 DMA 복사
도 8은 도 7과 함께 설명된 멀티캐스팅 동작 기술자를 사용하여 도 6에 도시된 저장 서브시스템(510)에서 수행되는 RAID-5/6 스트리밍 미러 기록 동작을 예시하는 흐름도이다.
블록 800에서, 호스트 I/O 제어기(604)는 저장 장치에 기록될 데이터를 메모리(602) 내의 애플리케이션 데이터 메모리 영역에 기록한다. 처리는 블록 802에서 계속된다.
블록 802에서, 멀티캐스팅 동작 기술자(700)를 갖는 DMA가 생성되어 메모리에 저장된다. 멀티캐스팅 동작 기술자 내의 소스 어드레스 필드는 저장 장치에 기록될 데이터를 저장하는 메모리 내의 애플리케이션 데이터 메모리 영역으로의 포인터를 저장한다. 멀티캐스팅 동작 기술자(700) 내의 제1 수신지 어드레스 필드(708)는 메모리 내의 로컬 처리 영역으로의 포인터를 저장한다. 멀티캐스팅 DMA 기술자 내의 제2 수신지 어드레스 필드(708)는 "미러링 포트"라고도 불리는 PCIe NTB 포트로의 포인터를 저장한다.
도 9는 로컬 저장 제어기와 원격 저장 제어기 사이의 직접적인 어드레스 변환을 예시하는 블록도이다. 도 9를 참조하면, 로컬 호스트 어드레스 맵(900)은 저장 제어기(506-1)(도 5)에 저장되고 원격 호스트 어드레스 맵(902)은 저장 제어기(506-2)에 저장된다. PCIe NTB 포트는 PCIe 베이스 어드레스 레지스터(BAR) 및 리미트 레지스터(PCIe NTB)를 포함한다. 실시예에서, BAR 레지스터는 32 비트 또는 64 비트 레지스터일 수 있다. 각각의 저장 제어기들(506-1, 506-2) 내의 메모리 내의 PCI 구성 공간에 저장된 베이스 어드레스 레지스터(BAR)들 및 베이스 변환 레지스터들의 사용을 통해, 로컬 저장 제어기(506-1) 내의 메모리 영역(912)은 원격 저장 제어기(506-2) 내의 메모리 영역(914)에 맵핑된다.
예를 들어, 원격 호스트 어드레스 맵(902)으로부터 로컬 어드레스 맵(900)으로의 직접적인 어드레스 변환을 수행하기 위해, (원격 호스트로부터의) 수신된 어드레스를 체크하여 그 수신된 어드레스 값이 로컬 어드레스 맵(900)에 대한 BAR 레지스터 및 리미트 레지스터에 저장된 어드레스 값들 내에 있는지를 판단한다. 수신된 어드레스가 유효하면, 수신된 어드레스는 로컬 어드레스 맵 내의 로컬 어드레스로 변환된다. 예를 들어, 로컬 어드레스 맵 내의 로컬 BAR 레지스터에 저장된 어드레스는 16진법 표기(H)로 "0000 0040 0000 0000"일 수 있고 원격 호스트 어드레스 맵(902) 내의 원격 BAR 레지스터에 저장된 어드레스는 '0000 003A 0000 0000H'일 수 있다. 수신된 어드레스에 대해 직접적인 어드레스 변환을 수행하여 이하와 같이 그것을 로컬 BAR 레지스터 및 로컬 리미트 레지스터에 저장된 어드레스 사이의 로컬 어드레스 맵(902) 내의 어드레스 윈도우 내에 있는 어드레스로 맵핑한다:
변환된 어드레스 = ((수신된 어드레스[63:0] & ~Sign_Extend(2^SBAR23SZ) | XLAT 레지스터[63:0])).
예를 들어, '0000 003A 0000 0000H'를 베이스로 하는 4 GB 윈도우 대 '0000 0040 0000 0000H'를 베이스로 하는 4 GB 윈도우에 의해 요구되는 착신 어드레스 - 여기서 수신된 어드레스[63:0] = '0000 003A 00A0 0000H'; SBAR23SZ = 32 -- 이차 BAR 2/3의 사이즈 = 4GB를 설정; ~Sign_Extend(2^SBAR23SZ) = ~Sign_Extend(0000 0001 0000 0000H) = ~(FFFF FFFF 0000 0000H) = 00000000 FFFF FFFFH); SBAR2XLAT = 0000 0040 0000 0000H -- 베이스 어드레스 - 를 1차측 메모리(다수 정렬된 사이즈)로 변환하면;
변환된 어드레스 = 0000 003A 00A0 0000H & 0000 0000 FFFF FFFFH | 0000 0040 0000 0000H = 0000 004000A0 0000H
수신된 어드레스 상의 4 GB 윈도우의 베이스에 대한 오프셋은 변환된 어드레스에서 보존된다.
2개의 수신지 어드레스들 및 PCIe BAR 및 리미트 레지스터들(PCIe NTB)을 갖는 DMA 엔진은 데이터가 시스템 메모리 및 고가용성 포트로 라우팅되는 것을 보장한다. PCIe BAR 및 리미트 레지스터(PCIe NTB)는 미러링 데이터를 위해 예비된 예비 저장 제어기의 메모리 영역의 어드레스를 변환하기 위해 사용된다. 도 6에 도시된 실시예에서, PCIe NTB(Non Transparent Bridge)는 2개의 저장 노드들 사이에 시스템 메모리 분리를 제공한다. PCIe NTB는 2개의 저장 노드들 사이에서 시스템 메모리 데이터 교환을 위한 게이트웨이의 역할을 한다. 각 저장 노드는 독립적으로 그의 각각의 로컬 메모리를 구성 및 제어한다. PCIe NTB(베이스 어드레스 레지스터(BAR) 및 변환 레지스터)는 저장 노드들 사이에서 데이터 교환을 위한 메모리 영역을 제어한다. 실시예에서, 1차 저장 제어기와 예비 저장 제어기 사이의 메시징을 위한 NTB 도어벨 메커니즘이 사용된다.
도 8로 돌아가서, 블록 804에서 처리가 계속된다.
블록 804에서, DMA 제어기는 DMA 멀티캐스트 기술자에 의해 정의되는 DMA 동작을 수행한다. DMA 제어기는 메모리로부터 데이터를 판독하고 동시에 데이터를 다수의 수신지들, 즉 시스템 메모리 및 미러링 포트(PCIe NTB 포트)에 송신한다. 데이터를 처리하기 위해 데이터는 활성 저장 제어기 내의 메모리 내의 애플리케이션 메모리 영역으로부터 활성 저장 제어기 내의 메모리 내의 로컬 처리 영역으로 이동된다. 데이터 애플리케이션 메모리 영역에 저장된 데이터는 메모리 내의 로컬 처리 영역으로 이동되는 한편 데이터 애플리케이션 영역에 저장된 데이터는 동시에 PCIe NTB 포트에 전송된다. 각 저장 제어기는 로컬 처리를 위한 각각의 로컬 메모리 영역 및 원격 제어기를 위한 원격 메모리 영역을 구성한다. 예를 들어, 실시예에서, 저장 제어기 내의 로컬 처리 메모리 영역은 하위 메모리 영역(메모리 어드레스들에 기초함)을 사용하고 상위 메모리 영역(메모리 어드레스들에 기초함)은 원격 제어기에 의한 사용을 위해 구성된다.
다수의 수신지들로의 데이터의 동시 전송은 PCIe NTB 포트로의 데이터의 개별 전송을 수행하는 하나의 메모리 판독 동작을 제거하고 이 또한 메모리 대역폭을 절약한다. 처리는 블록 806에서 계속된다.
블록 806에서, 1차(활성) 저장 제어기 내의 프로세서는 로컬 처리 영역에 저장된 데이터에 대해 RAID 5/6 패리티 계산을 수행하고 계산된 RAID 5/6 패리티 데이터를 다시 로컬 처리 영역에 기록하는 한편 예비 저장 제어기 내의 프로세서는 PCIe NTB 포트를 통해 전송된 데이터에 동일한 동작들을 수행한다. 처리는 블록 808에서 계속된다.
블록 808에서, 예비 저장 제어기는 데이터를 시스템 메모리에 기록한다(미러 기록). 처리는 블록 810에서 계속된다.
블록 810에서, 1차 저장 제어기는 메모리로부터 데이터 및 RAID 5/6 패리티 데이터를 판독하고 저장 장치(들)에 기록한다. 1차 저장 제어기에서 실행되는 소프트웨어는 전송의 종료와 관련된 인터럽트를 처리하고 IOPS에 대한 인터럽트들을 통합한다. 큰 전송 사이즈의 인터럽트 통합은 IOPS 사용을 위한 성능을 최적화하고 프로세서 캐쉬 오염을 최소화한다. 단일 판독 및 이중 수신지들을 갖는 DMA 기술자는 전형적으로 1차 저장 제어기 내의 DMA 제어기에 의해 수행되는 시스템 메모리로부터 PCIe NTB 포트(미러 포트)로의 하나의 메모리 판독 동작을 제거한다. 일 실시예에서, 이중 활성 RAID-6 스트리밍 기록에 대한 추가 메모리 판독 동작의 제거는 메모리 버스 주파수가 변경되지 않는 시스템에서의 RAID-6의 성능의 증가를 야기한다. 다른 실시예에서, 동일한 성능은 메모리 버스 주파수를 감소시킴으로써 제공되고 이에 따라 시스템에 의해 사용되는 동적 전력이 감소된다.
실시예에서, 도 5-도 7과 함께 논의된 저장 제어기들 사이의 미러링은 외부 저장 플랫폼에서 저장 가속 기술을 사용하여 높은 RAID-5/6 스트리밍 미러 기록 성능을 제공하는 데 사용된다.
단일 소스 및 다수의 수신지들을 포함하는 멀티캐스트 DMA 기술자는 데이터를 애플리케이션 시스템 메모리 영역으로부터 RAID-5/6 및 데이터 무결성 체킹을 위해 로컬 시스템 메모리 영역으로 그리고 데이터를 예비 저장 제어기에서 미러링하기 위해 PCIe NTB 포트로 동시에 이동시키기 위해 사용된다. 데이터를 2개의 수신지들에 동시에 기록하기 위해 멀티캐스트 DMA 기술자를 사용함으로써 하나의 메모리 판독 동작에 의해 요구되는 메모리 판독 동작들의 전체 수를 감소시킨다. 에러 조건들을 처리하는 애플리케이션 스택에 통합된 PCIe, NTB 및 DMA 드라이버들에 의한 멀티캐스트 DMA 기술자의 사용은 더 나은 에러 처리의 제어를 제공한다.
본 발명의 실시예들에 포함된 방법들은 컴퓨터 사용가능 매체를 포함하는 컴퓨터 프로그램 제품에 구현될 수 있는 것이 당업자들에게 명백할 것이다. 예를 들어, 그러한 컴퓨터 사용가능 매체는 컴퓨터 판독가능 프로그램 코드를 저장한 콤팩트 디스크 판독 전용 메모리(CD ROM) 디스크 또는 종래의 ROM 장치들과 같은 판독 전용 메모리 장치, 또는 컴퓨터 디스켓으로 구성될 수 있다.
본 발명의 실시예들이 상세히 도시되고 그의 실시예들을 참조하여 설명되었을지라도, 첨부된 청구항들이 망라하는 본 발명의 실시예들로부터 벗어나지 않고 형태 및 상세의 각종 변경이 이루어질 수 있는 것이 당업자들에 의해 이해될 것이다.

Claims (20)

  1. 장치로서,
    블록 스토리지로서 구성된 비휘발성 메모리; 및
    상기 비휘발성 메모리에 연결된 로직
    을 포함하고, 상기 로직은 직렬 시스템 버스를 통해 상기 로직에 연결된 적어도 2개의 저장 제어기들 중 하나에 상기 비휘발성 메모리로의 동시 예비 경로들(redundant paths)을 제공하는 것이고, 상기 저장 제어기들 및 로직은 비저장(non-storage) 버스 프로토콜을 사용하여 상기 직렬 시스템 버스를 통해 통신하는 것인 장치.
  2. 제1항에 있어서, 상기 시스템 버스는 PCIe(Peripheral Component Interconnect Express) 버스 프로토콜을 사용하는 것인 장치.
  3. 제2항에 있어서, 상기 로직은 제1 인쇄 회로 기판(PCB)에 포함되고 상기 비휘발성 메모리는 제2 PCB에 포함되며, 상기 제1 PCB는 상기 제2 PCB에 연결되는 제1 커넥터를 포함하고 상기 제1 PCB는 적어도 2개의 제2 커넥터들을 포함하며, 각각의 제2 커넥터는 상기 저장 제어기들 중 하나에 연결되는 것인 장치.
  4. 제1항에 있어서, 상기 로직 및 비휘발성 메모리는 솔리드 스테이트 드라이브(SSD)에 있고 상기 로직은 적어도 2개의 커넥터들을 포함하며, 각각의 커넥터는 상기 저장 제어기들 중 하나에 연결되는 것인 장치.
  5. 제1항에 있어서, 상기 로직은 제1 저장 제어기에서 장애가 검출되면 상기 비휘발성 메모리로의 액세스를 상기 제1 저장 제어기로부터 제2 저장 제어기로 스위칭하는 MR-IOV(Multi Root-Input Output Virtualization) 로직을 포함하는 것인 장치.
  6. 제1항에 있어서, 상기 저장 제어기들은 PCIe NTB(Non-Transparent Bridge) 링크를 통해 통신하는 것인 장치.
  7. 제6항에 있어서, 상기 저장 제어기들 각각은 직접 메모리 액세스 제어기(DMAC)를 포함하고, 상기 DMAC는 데이터를 제1 저장 제어기 내의 메모리로 이동시키고 동시에 상기 데이터를 제2 저장 제어기 내의 메모리에 미러링하기 위해 상기 PCIe NTB 링크를 통해 상기 제2 저장 제어기로 송신하는 것인 장치.
  8. 방법으로서,
    비휘발성 메모리를 블록 스토리지로서 구성하는 단계;
    상기 비휘발성 메모리에 연결된 로직에 의해, 직렬 시스템 버스를 통해 상기 로직에 연결된 적어도 2개의 저장 제어기들 중 하나에 상기 비휘발성 메모리로의 동시 예비 경로들을 제공하는 단계; 및
    상기 저장 제어기들에 의해 상기 직렬 시스템 버스를 통해 비저장 버스 프로토콜을 사용하여 통신하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서, 상기 시스템 버스는 PCIe(Peripheral Component Interconnect Express) 버스 프로토콜을 사용하는 것인 방법.
  10. 제9항에 있어서, 상기 로직은 제1 인쇄 회로 기판(PCB)에 포함되고 상기 비휘발성 메모리는 제2 PCB에 포함되며, 상기 제1 PCB는 상기 제2 PCB에 연결되는 제1 커넥터를 포함하고 상기 제1 PCB는 적어도 2개의 제2 커넥터들을 포함하며, 각각의 제2 커넥터는 상기 저장 제어기들 중 하나에 연결되는 것인 방법.
  11. 제8항에 있어서, 상기 로직 및 비휘발성 메모리는 솔리드 스테이트 드라이브(SSD)에 있고 상기 로직은 적어도 2개의 커넥터들을 포함하며, 각각의 커넥터는 상기 저장 제어기들 중 하나에 연결되는 것인 방법.
  12. 제8항에 있어서, 상기 로직은 제1 저장 제어기에서 장애가 검출되면 상기 제1 저장 제어기로부터 제2 저장 제어기로 상기 비휘발성 메모리로의 액세스를 스위칭하는 MR-IOV(Multi Root-Input Output Virtualization) 로직을 포함하는 것인 방법.
  13. 제8항에 있어서, 상기 저장 제어기들은 PCIe NTB(Non-Transparent Bridge) 링크를 통해 통신하는 것인 방법.
  14. 제13항에 있어서, 상기 저장 제어기들 각각은 직접 메모리 액세스 제어기(DMAC)를 포함하고, 상기 DMAC는 데이터를 제1 저장 제어기 내의 메모리로 이동시키고 동시에 상기 데이터를 제2 저장 제어기 내의 메모리에 미러링하기 위해 상기 PCIe NTB 링크를 통해 상기 제2 저장 제어기에 송신하는 것인 방법.
  15. 정보가 연관되어 있는 기계 액세스 가능 매체를 포함하는 물품으로서, 상기 정보는, 액세스될 때, 기계가,
    비휘발성 메모리를 블록 스토리지로서 구성하는 단계;
    상기 비휘발성 메모리에 연결된 로직에 의해, 직렬 시스템 버스를 통해 상기 로직에 연결된 적어도 2개의 저장 제어기들 중 하나에 상기 비휘발성 메모리로의 동시 예비 경로들을 제공하는 단계; 및
    상기 저장 제어기들에 의해 상기 직렬 시스템 버스를 통해 비저장 버스 프로토콜을 사용하여 통신하는 단계를 수행하게 하는 것인 물품.
  16. 제15항에 있어서, 상기 시스템 버스는 PCIe(Peripheral Component Interconnect Express) 버스 프로토콜을 사용하는 것인 물품.
  17. 제15항에 있어서, 상기 저장 제어기들은 PCIe NTB(Non-Transparent Bridge) 링크를 통해 통신하는 것인 물품.
  18. 제17항에 있어서, 상기 저장 제어기들 각각은 직접 메모리 액세스 제어기(DMAC)를 포함하고, 상기 DMAC는 데이터를 제1 저장 제어기 내의 메모리로 이동시키고 동시에 상기 데이터를 제2 저장 제어기 내의 메모리에 미러링하기 위해 상기 PCIe NTB 링크를 통해 상기 제2 저장 제어기에 송신하는 것인 물품.
  19. 시스템으로서,
    적어도 2개의 저장 제어기들;
    블록 스토리지로서 구성된 비휘발성 메모리; 및
    상기 비휘발성 메모리에 연결된 로직
    을 포함하고, 상기 로직은 직렬 시스템 버스를 통해 상기 로직에 연결된 상기 적어도 2개의 저장 제어기들 중 하나에 상기 비휘발성 메모리로의 동시 예비 경로들을 제공하는 것이고, 상기 저장 제어기들 및 로직은 상기 직렬 시스템 버스를 통해 비저장 버스 프로토콜을 사용하여 통신하는 것인 시스템.
  20. 제19항에 있어서, 상기 저장 제어기들은 PCIe NTB(Non-Transparent Bridge) 링크를 통해 통신하는 것이고, 상기 저장 제어기들 각각은 직접 메모리 액세스 제어기(DMAC)를 포함하고, 상기 DMAC는 데이터를 제1 저장 제어기 내의 메모리로 이동시키고 동시에 상기 데이터를 제2 저장 제어기 내의 메모리에 미러링하기 위해 상기 PCIe NTB 링크를 통해 상기 제2 저장 제어기에 송신하는 것인 시스템.
KR1020137015377A 2010-12-22 2011-12-13 고가용성 솔리드 스테이트 드라이브를 제공하는 방법 및 장치 KR101455016B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/975,944 US8589723B2 (en) 2010-12-22 2010-12-22 Method and apparatus to provide a high availability solid state drive
US12/975,944 2010-12-22
PCT/US2011/064510 WO2012087648A2 (en) 2010-12-22 2011-12-13 Method and apparatus to provide a high availability solid state drive

Publications (2)

Publication Number Publication Date
KR20130095799A true KR20130095799A (ko) 2013-08-28
KR101455016B1 KR101455016B1 (ko) 2014-10-27

Family

ID=46314751

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137015377A KR101455016B1 (ko) 2010-12-22 2011-12-13 고가용성 솔리드 스테이트 드라이브를 제공하는 방법 및 장치

Country Status (4)

Country Link
US (1) US8589723B2 (ko)
EP (1) EP2656228B1 (ko)
KR (1) KR101455016B1 (ko)
WO (1) WO2012087648A2 (ko)

Families Citing this family (286)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8688926B2 (en) 2010-10-10 2014-04-01 Liqid Inc. Systems and methods for optimizing data storage among a plurality of solid state memory subsystems
JP5966243B2 (ja) * 2010-12-20 2016-08-10 富士通株式会社 ストレージ装置及びストレージ装置の制御方法
EP2565772A4 (en) * 2010-12-30 2013-05-01 Huawei Tech Co Ltd STORAGE ASSEMBLY, STORAGE SYSTEM, AND METHOD OF ACCESSING DATA
US8904105B2 (en) * 2011-03-15 2014-12-02 Dell Products L.P. System and method for performing raid I/O operations in PCIE-based storage resources
US8880768B2 (en) * 2011-05-20 2014-11-04 Promise Technology, Inc. Storage controller system with data synchronization and method of operation thereof
CN102819517A (zh) * 2011-06-08 2012-12-12 鸿富锦精密工业(深圳)有限公司 Pcie接口卡
US9134913B2 (en) * 2011-09-09 2015-09-15 Avago Technologies General Ip (Singapore) Pte Ltd Methods and structure for improved processing of I/O requests in fast path circuits of a storage controller in a clustered storage system
CN102541466A (zh) * 2011-10-27 2012-07-04 忆正存储技术(武汉)有限公司 一种混合存储控制系统和方法
US9767058B2 (en) * 2011-11-17 2017-09-19 Futurewei Technologies, Inc. Method and apparatus for scalable low latency solid state drive interface
US20130135816A1 (en) * 2011-11-17 2013-05-30 Futurewei Technologies, Inc. Method and Apparatus for Scalable Low Latency Solid State Drive Interface
US9086965B2 (en) * 2011-12-15 2015-07-21 International Business Machines Corporation PCI express error handling and recovery action controls
CN104126181A (zh) * 2011-12-30 2014-10-29 英特尔公司 作为随机存取存储器的非易失性半导体存储装置的系统存取的薄变换
CN102629225B (zh) * 2011-12-31 2014-05-07 华为技术有限公司 双控制器磁盘阵列、存储系统以及数据存储路径切换方法
JP6040612B2 (ja) * 2012-07-24 2016-12-07 富士通株式会社 ストレージ装置、情報処理装置、情報処理システム、アクセス制御方法、およびアクセス制御プログラム
TW201411358A (zh) * 2012-09-10 2014-03-16 Accusys Inc 透過PCIe介面連接於一主機系統的儲存裝置和方法
US8938559B2 (en) * 2012-10-05 2015-01-20 National Instruments Corporation Isochronous data transfer between memory-mapped domains of a memory-mapped fabric
US9189441B2 (en) 2012-10-19 2015-11-17 Intel Corporation Dual casting PCIE inbound writes to memory and peer devices
US9135101B2 (en) * 2013-03-01 2015-09-15 Avago Technologies General Ip (Singapore) Pte Ltd Virtual function timeout for single root input/output virtualization controllers
US9424219B2 (en) * 2013-03-12 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct routing between address spaces through a nontransparent peripheral component interconnect express bridge
US9244877B2 (en) * 2013-03-14 2016-01-26 Intel Corporation Link layer virtualization in SATA controller
WO2014169010A1 (en) * 2013-04-10 2014-10-16 Marvell World Trade Ltd. Tunneling transaction packets
US9298648B2 (en) * 2013-05-08 2016-03-29 Avago Technologies General Ip (Singapore) Pte Ltd Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
US9405566B2 (en) 2013-05-24 2016-08-02 Dell Products L.P. Access to storage resources using a virtual storage appliance
US9436630B2 (en) * 2013-06-11 2016-09-06 Western Digital Technologies, Inc. Using dual phys to support multiple PCIe link widths
US9128838B2 (en) 2013-08-02 2015-09-08 Infineon Technologies Ag System and method of high integrity DMA operation
US11630585B1 (en) 2016-08-25 2023-04-18 Pure Storage, Inc. Processing evacuation events in a storage array that includes a plurality of storage devices
AU2014348774A1 (en) 2013-11-12 2016-06-30 Western Digital Technologies, Inc. Apparatus and method for routing information in a non-volatile memory-based storage device
US10114784B2 (en) 2014-04-25 2018-10-30 Liqid Inc. Statistical power handling in a scalable storage system
US10467166B2 (en) 2014-04-25 2019-11-05 Liqid Inc. Stacked-device peripheral storage card
CN103984768B (zh) * 2014-05-30 2017-09-29 华为技术有限公司 一种数据库集群管理数据的方法、节点及系统
US10180889B2 (en) 2014-06-23 2019-01-15 Liqid Inc. Network failover handling in modular switched fabric based data storage systems
WO2015200313A1 (en) * 2014-06-23 2015-12-30 Liqid Inc. Modular switched fabric for data storage systems
CN105765545B (zh) * 2014-07-15 2018-10-12 华为技术有限公司 PCIe I/O设备共享方法及设备与互联系统
WO2016018383A1 (en) 2014-07-31 2016-02-04 Hewlett-Packard Development Company Live migration of data
WO2016036347A1 (en) 2014-09-02 2016-03-10 Hewlett Packard Enterprise Development Lp Serializing access to fault tolerant memory
US10362107B2 (en) 2014-09-04 2019-07-23 Liqid Inc. Synchronization of storage transactions in clustered storage systems
US9653124B2 (en) 2014-09-04 2017-05-16 Liqid Inc. Dual-sided rackmount storage assembly
US10594442B2 (en) 2014-10-24 2020-03-17 Hewlett Packard Enterprise Development Lp End-to-end negative acknowledgment
US9582366B2 (en) 2014-11-21 2017-02-28 International Business Machines Corporation Detecting and sparing of optical PCIE cable channel attached IO drawer
WO2016089343A1 (en) * 2014-12-01 2016-06-09 Hewlett-Packard Development Company, L.P. Disk sector based remote storage booting
WO2016101287A1 (zh) * 2014-12-27 2016-06-30 华为技术有限公司 一种存储系统数据分发的方法、分发装置与存储系统
US10402287B2 (en) 2015-01-30 2019-09-03 Hewlett Packard Enterprise Development Lp Preventing data corruption and single point of failure in a fault-tolerant memory
US10664369B2 (en) 2015-01-30 2020-05-26 Hewlett Packard Enterprise Development Lp Determine failed components in fault-tolerant memory
US10409681B2 (en) 2015-01-30 2019-09-10 Hewlett Packard Enterprise Development Lp Non-idempotent primitives in fault-tolerant memory
US10198183B2 (en) 2015-02-06 2019-02-05 Liqid Inc. Tunneling of storage operations between storage nodes
US9841904B2 (en) 2015-03-02 2017-12-12 Samsung Electronics Co., Ltd. Scalable and configurable non-volatile memory module array
KR102398213B1 (ko) 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US10698849B2 (en) * 2015-03-11 2020-06-30 Apple Inc. Methods and apparatus for augmented bus numbering
US10402261B2 (en) 2015-03-31 2019-09-03 Hewlett Packard Enterprise Development Lp Preventing data corruption and single point of failure in fault-tolerant memory fabrics
US10191691B2 (en) 2015-04-28 2019-01-29 Liqid Inc. Front-end quality of service differentiation in storage system operations
US10019388B2 (en) 2015-04-28 2018-07-10 Liqid Inc. Enhanced initialization for data storage assemblies
US10108422B2 (en) 2015-04-28 2018-10-23 Liqid Inc. Multi-thread network stack buffering of data frames
US9716755B2 (en) 2015-05-26 2017-07-25 Pure Storage, Inc. Providing cloud storage array services by a local storage array in a data center
US11102298B1 (en) 2015-05-26 2021-08-24 Pure Storage, Inc. Locally providing cloud storage services for fleet management
US9594678B1 (en) 2015-05-27 2017-03-14 Pure Storage, Inc. Preventing duplicate entries of identical data in a storage device
US10021170B2 (en) 2015-05-29 2018-07-10 Pure Storage, Inc. Managing a storage array using client-side services
US9300660B1 (en) 2015-05-29 2016-03-29 Pure Storage, Inc. Providing authorization and authentication in a cloud for a user of a storage array
US11503031B1 (en) 2015-05-29 2022-11-15 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9444822B1 (en) 2015-05-29 2016-09-13 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9588691B2 (en) 2015-06-10 2017-03-07 Pure Storage, Inc. Dynamically managing control information in a storage device
US9594512B1 (en) 2015-06-19 2017-03-14 Pure Storage, Inc. Attributing consumed storage capacity among entities storing data in a storage array
US10296236B2 (en) 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices
US9892071B2 (en) 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US9851762B1 (en) 2015-08-06 2017-12-26 Pure Storage, Inc. Compliant printed circuit board (‘PCB’) within an enclosure
US11625181B1 (en) 2015-08-24 2023-04-11 Pure Storage, Inc. Data tiering using snapshots
US11294588B1 (en) 2015-08-24 2022-04-05 Pure Storage, Inc. Placing data within a storage device
US10198194B2 (en) 2015-08-24 2019-02-05 Pure Storage, Inc. Placing data within a storage device of a flash array
CN105335103B (zh) * 2015-10-22 2017-05-03 湖南国科微电子股份有限公司 一种pcie ssd阵列的数据写方法及系统
CN105204787B (zh) * 2015-10-22 2017-03-08 湖南国科微电子股份有限公司 一种pcie ssd阵列的数据读方法、系统及读写方法
US9384082B1 (en) 2015-10-23 2016-07-05 Pure Storage, Inc. Proactively providing corrective measures for storage arrays
US11360844B1 (en) 2015-10-23 2022-06-14 Pure Storage, Inc. Recovery of a container storage provider
US10514978B1 (en) 2015-10-23 2019-12-24 Pure Storage, Inc. Automatic deployment of corrective measures for storage arrays
US10467163B1 (en) 2015-10-27 2019-11-05 Pavilion Data Systems, Inc. Solid state drive multiplexer
US10284232B2 (en) 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
US10374868B2 (en) 2015-10-29 2019-08-06 Pure Storage, Inc. Distributed command processing in a flash storage system
US9740414B2 (en) 2015-10-29 2017-08-22 Pure Storage, Inc. Optimizing copy operations
US10353777B2 (en) 2015-10-30 2019-07-16 Pure Storage, Inc. Ensuring crash-safe forward progress of a system configuration update
US10206297B2 (en) * 2015-11-23 2019-02-12 Liqid Inc. Meshed architecture rackmount storage assembly
US11762764B1 (en) 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US9760479B2 (en) 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US11616834B2 (en) 2015-12-08 2023-03-28 Pure Storage, Inc. Efficient replication of a dataset to the cloud
US10326836B2 (en) 2015-12-08 2019-06-18 Pure Storage, Inc. Partially replicating a snapshot between storage systems
US11347697B1 (en) 2015-12-15 2022-05-31 Pure Storage, Inc. Proactively optimizing a storage system
US10162835B2 (en) 2015-12-15 2018-12-25 Pure Storage, Inc. Proactive management of a plurality of storage arrays in a multi-array system
US10346043B2 (en) 2015-12-28 2019-07-09 Pure Storage, Inc. Adaptive computing for data compression
US9626111B1 (en) 2016-01-07 2017-04-18 International Business Machines Corporation Sequential write of random workload in mirrored performance pool environments
US9965410B2 (en) 2016-01-21 2018-05-08 Qualcomm Incorporated Priority-based data communication over multiple communication buses
US9886314B2 (en) 2016-01-28 2018-02-06 Pure Storage, Inc. Placing workloads in a multi-array system
US10255215B2 (en) 2016-01-29 2019-04-09 Liqid Inc. Enhanced PCIe storage device form factors
US10255955B2 (en) 2016-02-09 2019-04-09 Samsung Electronics Co., Ltd. Multi-port memory device and a method of using the same
US10572460B2 (en) 2016-02-11 2020-02-25 Pure Storage, Inc. Compressing data in dependence upon characteristics of a storage system
US9760297B2 (en) 2016-02-12 2017-09-12 Pure Storage, Inc. Managing input/output (‘I/O’) queues in a data storage system
US9959043B2 (en) 2016-03-16 2018-05-01 Pure Storage, Inc. Performing a non-disruptive upgrade of data in a storage system
US11995315B2 (en) 2016-03-16 2024-05-28 Pure Storage, Inc. Converting data formats in a storage system
US11809727B1 (en) 2016-04-27 2023-11-07 Pure Storage, Inc. Predicting failures in a storage system that includes a plurality of storage devices
US9841921B2 (en) 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US11112990B1 (en) 2016-04-27 2021-09-07 Pure Storage, Inc. Managing storage device evacuation
US9811264B1 (en) 2016-04-28 2017-11-07 Pure Storage, Inc. Deploying client-specific applications in a storage system utilizing redundant system resources
WO2017185322A1 (zh) * 2016-04-29 2017-11-02 华为技术有限公司 存储网元发现方法及装置
US10303390B1 (en) 2016-05-02 2019-05-28 Pure Storage, Inc. Resolving fingerprint collisions in flash storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US9507532B1 (en) 2016-05-20 2016-11-29 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US10082957B2 (en) 2016-07-20 2018-09-25 Western Digital Technologies, Inc. Dual-ported PCI express-based storage cartridge including single-ported storage controllers
US10509592B1 (en) * 2016-07-26 2019-12-17 Pavilion Data Systems, Inc. Parallel data transfer for solid state drives using queue pair subsets
US10459652B2 (en) 2016-07-27 2019-10-29 Pure Storage, Inc. Evacuating blades in a storage array that includes a plurality of blades
US10474363B1 (en) 2016-07-29 2019-11-12 Pure Storage, Inc. Space reporting in a storage system
US11294839B2 (en) 2016-08-12 2022-04-05 Liqid Inc. Emulated telemetry interfaces for fabric-coupled computing units
US11880326B2 (en) 2016-08-12 2024-01-23 Liqid Inc. Emulated telemetry interfaces for computing units
CN109891394B (zh) 2016-08-12 2022-10-25 利奇得公司 计算单元、操作计算单元的方法以及计算设备
US11481261B1 (en) 2016-09-07 2022-10-25 Pure Storage, Inc. Preventing extended latency in a storage system
US10235229B1 (en) 2016-09-07 2019-03-19 Pure Storage, Inc. Rehabilitating storage devices in a storage array that includes a plurality of storage devices
US10671439B1 (en) 2016-09-07 2020-06-02 Pure Storage, Inc. Workload planning with quality-of-service (‘QOS’) integration
US11886922B2 (en) 2016-09-07 2024-01-30 Pure Storage, Inc. Scheduling input/output operations for a storage system
US10146585B2 (en) 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
US11960348B2 (en) 2016-09-07 2024-04-16 Pure Storage, Inc. Cloud-based monitoring of hardware components in a fleet of storage systems
US10331588B2 (en) 2016-09-07 2019-06-25 Pure Storage, Inc. Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling
US10908966B1 (en) 2016-09-07 2021-02-02 Pure Storage, Inc. Adapting target service times in a storage system
US11531577B1 (en) 2016-09-07 2022-12-20 Pure Storage, Inc. Temporarily limiting access to a storage device
US10268384B2 (en) 2016-09-16 2019-04-23 International Business Machines Corporation File transfers between machines without target CPU intervention
US10007459B2 (en) 2016-10-20 2018-06-26 Pure Storage, Inc. Performance tuning in a storage system that includes one or more storage devices
US11379132B1 (en) 2016-10-20 2022-07-05 Pure Storage, Inc. Correlating medical sensor data
US11620075B2 (en) 2016-11-22 2023-04-04 Pure Storage, Inc. Providing application aware storage
US10162566B2 (en) 2016-11-22 2018-12-25 Pure Storage, Inc. Accumulating application-level statistics in a storage system
US10198205B1 (en) 2016-12-19 2019-02-05 Pure Storage, Inc. Dynamically adjusting a number of storage devices utilized to simultaneously service write operations
US11461273B1 (en) 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
US10489307B2 (en) 2017-01-05 2019-11-26 Pure Storage, Inc. Periodically re-encrypting user data stored on a storage device
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US10503700B1 (en) 2017-01-19 2019-12-10 Pure Storage, Inc. On-demand content filtering of snapshots within a storage system
US11340800B1 (en) 2017-01-19 2022-05-24 Pure Storage, Inc. Content masking in a storage system
US11163624B2 (en) 2017-01-27 2021-11-02 Pure Storage, Inc. Dynamically adjusting an amount of log data generated for a storage system
US10783103B1 (en) * 2017-02-24 2020-09-22 Xilinx, Inc. Split control for direct memory access transfers
US11803453B1 (en) 2017-03-10 2023-10-31 Pure Storage, Inc. Using host connectivity states to avoid queuing I/O requests
US11675520B2 (en) 2017-03-10 2023-06-13 Pure Storage, Inc. Application replication among storage systems synchronously replicating a dataset
US10521344B1 (en) 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US10454810B1 (en) 2017-03-10 2019-10-22 Pure Storage, Inc. Managing host definitions across a plurality of storage systems
US11941279B2 (en) 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US11089105B1 (en) 2017-12-14 2021-08-10 Pure Storage, Inc. Synchronously replicating datasets in cloud-based storage systems
US11169727B1 (en) 2017-03-10 2021-11-09 Pure Storage, Inc. Synchronous replication between storage systems with virtualized storage
US10503427B2 (en) 2017-03-10 2019-12-10 Pure Storage, Inc. Synchronously replicating datasets and other managed objects to cloud-based storage systems
US11442825B2 (en) 2017-03-10 2022-09-13 Pure Storage, Inc. Establishing a synchronous replication relationship between two or more storage systems
US10459664B1 (en) 2017-04-10 2019-10-29 Pure Storage, Inc. Virtualized copy-by-reference
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
WO2018200761A1 (en) 2017-04-27 2018-11-01 Liqid Inc. Pcie fabric connectivity expansion card
US11868629B1 (en) 2017-05-05 2024-01-09 Pure Storage, Inc. Storage system sizing service
US10795842B2 (en) 2017-05-08 2020-10-06 Liqid Inc. Fabric switched graphics modules within storage enclosures
US10884636B1 (en) 2017-06-12 2021-01-05 Pure Storage, Inc. Presenting workload performance in a storage system
WO2018231350A1 (en) 2017-06-12 2018-12-20 Pure Storage, Inc. Accessible fast durable storage integrated into a bulk storage device
US11989429B1 (en) 2017-06-12 2024-05-21 Pure Storage, Inc. Recommending changes to a storage system
US10417092B2 (en) 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US10976962B2 (en) 2018-03-15 2021-04-13 Pure Storage, Inc. Servicing I/O operations in a cloud-based storage system
US10613791B2 (en) 2017-06-12 2020-04-07 Pure Storage, Inc. Portable snapshot replication between storage systems
US11609718B1 (en) 2017-06-12 2023-03-21 Pure Storage, Inc. Identifying valid data after a storage system recovery
US11340939B1 (en) 2017-06-12 2022-05-24 Pure Storage, Inc. Application-aware analytics for storage systems
US11016824B1 (en) 2017-06-12 2021-05-25 Pure Storage, Inc. Event identification with out-of-order reporting in a cloud-based environment
US11442669B1 (en) 2018-03-15 2022-09-13 Pure Storage, Inc. Orchestrating a virtual storage system
US11210133B1 (en) 2017-06-12 2021-12-28 Pure Storage, Inc. Workload mobility between disparate execution environments
US10853148B1 (en) 2017-06-12 2020-12-01 Pure Storage, Inc. Migrating workloads between a plurality of execution environments
US11422731B1 (en) 2017-06-12 2022-08-23 Pure Storage, Inc. Metadata-based replication of a dataset
US11593036B2 (en) 2017-06-12 2023-02-28 Pure Storage, Inc. Staging data within a unified storage element
US11592991B2 (en) 2017-09-07 2023-02-28 Pure Storage, Inc. Converting raid data between persistent storage types
US10552090B2 (en) 2017-09-07 2020-02-04 Pure Storage, Inc. Solid state drives with multiple types of addressable memory
US10389342B2 (en) 2017-06-28 2019-08-20 Hewlett Packard Enterprise Development Lp Comparator
US11561714B1 (en) 2017-07-05 2023-01-24 Pure Storage, Inc. Storage efficiency driven migration
US11477280B1 (en) 2017-07-26 2022-10-18 Pure Storage, Inc. Integrating cloud storage services
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10452444B1 (en) 2017-10-19 2019-10-22 Pure Storage, Inc. Storage system with compute resources and shared storage resources
US10360214B2 (en) 2017-10-19 2019-07-23 Pure Storage, Inc. Ensuring reproducibility in an artificial intelligence infrastructure
US11861423B1 (en) 2017-10-19 2024-01-02 Pure Storage, Inc. Accelerating artificial intelligence (‘AI’) workflows
US11494692B1 (en) 2018-03-26 2022-11-08 Pure Storage, Inc. Hyperscale artificial intelligence and machine learning infrastructure
US10671435B1 (en) 2017-10-19 2020-06-02 Pure Storage, Inc. Data transformation caching in an artificial intelligence infrastructure
US11455168B1 (en) 2017-10-19 2022-09-27 Pure Storage, Inc. Batch building for deep learning training workloads
US10484174B1 (en) 2017-11-01 2019-11-19 Pure Storage, Inc. Protecting an encryption key for data stored in a storage system that includes a plurality of storage devices
US10817392B1 (en) 2017-11-01 2020-10-27 Pure Storage, Inc. Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices
US10671494B1 (en) 2017-11-01 2020-06-02 Pure Storage, Inc. Consistent selection of replicated datasets during storage system recovery
US10467107B1 (en) 2017-11-01 2019-11-05 Pure Storage, Inc. Maintaining metadata resiliency among storage device failures
US10509581B1 (en) 2017-11-01 2019-12-17 Pure Storage, Inc. Maintaining write consistency in a multi-threaded storage system
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
KR101854805B1 (ko) * 2017-11-22 2018-06-08 한국과학기술정보연구원 I/o 성능이 개선된 메인보드 및 컴퓨터
US10990282B1 (en) 2017-11-28 2021-04-27 Pure Storage, Inc. Hybrid data tiering with cloud storage
US10936238B2 (en) 2017-11-28 2021-03-02 Pure Storage, Inc. Hybrid data tiering
US10795598B1 (en) 2017-12-07 2020-10-06 Pure Storage, Inc. Volume migration for storage systems synchronously replicating a dataset
US11036677B1 (en) 2017-12-14 2021-06-15 Pure Storage, Inc. Replicated data integrity
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10365826B1 (en) 2018-01-24 2019-07-30 Micron Technology, Inc. Command processing for a storage system
US10992533B1 (en) 2018-01-30 2021-04-27 Pure Storage, Inc. Policy based path management
US10509753B2 (en) 2018-02-26 2019-12-17 Micron Technology, Inc. Dynamic allocation of resources of a storage system utilizing single root input/output virtualization
US10521151B1 (en) 2018-03-05 2019-12-31 Pure Storage, Inc. Determining effective space utilization in a storage system
US11150834B1 (en) 2018-03-05 2021-10-19 Pure Storage, Inc. Determining storage consumption in a storage system
US11972134B2 (en) 2018-03-05 2024-04-30 Pure Storage, Inc. Resource utilization using normalized input/output (‘I/O’) operations
US11861170B2 (en) 2018-03-05 2024-01-02 Pure Storage, Inc. Sizing resources for a replication target
US10942650B1 (en) 2018-03-05 2021-03-09 Pure Storage, Inc. Reporting capacity utilization in a storage system
US10296258B1 (en) 2018-03-09 2019-05-21 Pure Storage, Inc. Offloading data storage to a decentralized storage network
US10409760B1 (en) * 2018-03-09 2019-09-10 Samsung Electronics Co., Ltd. Adaptive interface high availability storage device
US10924548B1 (en) 2018-03-15 2021-02-16 Pure Storage, Inc. Symmetric storage using a cloud-based storage system
US11210009B1 (en) 2018-03-15 2021-12-28 Pure Storage, Inc. Staging data in a cloud-based storage system
US11048590B1 (en) 2018-03-15 2021-06-29 Pure Storage, Inc. Data consistency during recovery in a cloud-based storage system
US10917471B1 (en) 2018-03-15 2021-02-09 Pure Storage, Inc. Active membership in a cloud-based storage system
US11288138B1 (en) 2018-03-15 2022-03-29 Pure Storage, Inc. Recovery from a system fault in a cloud-based storage system
US11095706B1 (en) 2018-03-21 2021-08-17 Pure Storage, Inc. Secure cloud-based storage system management
US11171950B1 (en) 2018-03-21 2021-11-09 Pure Storage, Inc. Secure cloud-based storage system management
US10838833B1 (en) 2018-03-26 2020-11-17 Pure Storage, Inc. Providing for high availability in a data analytics pipeline without replicas
US11392553B1 (en) 2018-04-24 2022-07-19 Pure Storage, Inc. Remote data management
US11436344B1 (en) 2018-04-24 2022-09-06 Pure Storage, Inc. Secure encryption in deduplication cluster
US11954220B2 (en) 2018-05-21 2024-04-09 Pure Storage, Inc. Data protection for container storage
US11675503B1 (en) 2018-05-21 2023-06-13 Pure Storage, Inc. Role-based data access
US11455409B2 (en) 2018-05-21 2022-09-27 Pure Storage, Inc. Storage layer data obfuscation
US10992598B2 (en) 2018-05-21 2021-04-27 Pure Storage, Inc. Synchronously replicating when a mediation service becomes unavailable
US10871922B2 (en) 2018-05-22 2020-12-22 Pure Storage, Inc. Integrated storage management between storage systems and container orchestrators
US11403000B1 (en) 2018-07-20 2022-08-02 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11416298B1 (en) 2018-07-20 2022-08-16 Pure Storage, Inc. Providing application-specific storage by a storage system
US11146564B1 (en) 2018-07-24 2021-10-12 Pure Storage, Inc. Login authentication in a cloud storage platform
US11632360B1 (en) 2018-07-24 2023-04-18 Pure Storage, Inc. Remote access to a storage device
US11954238B1 (en) 2018-07-24 2024-04-09 Pure Storage, Inc. Role-based access control for a storage system
US10660228B2 (en) 2018-08-03 2020-05-19 Liqid Inc. Peripheral storage card with offset slot alignment
JP7474766B2 (ja) * 2018-08-13 2024-04-25 ストラタス テクノロジーズ アイルランド リミテッド 高信頼性フォールトトレラントコンピュータアーキテクチャ
US11860820B1 (en) 2018-09-11 2024-01-02 Pure Storage, Inc. Processing data through a storage system in a data pipeline
US10671302B1 (en) 2018-10-26 2020-06-02 Pure Storage, Inc. Applying a rate limit across a plurality of storage systems
US11379254B1 (en) 2018-11-18 2022-07-05 Pure Storage, Inc. Dynamic configuration of a cloud-based storage system
US10963189B1 (en) 2018-11-18 2021-03-30 Pure Storage, Inc. Coalescing write operations in a cloud-based storage system
US11526405B1 (en) 2018-11-18 2022-12-13 Pure Storage, Inc. Cloud-based disaster recovery
US11340837B1 (en) 2018-11-18 2022-05-24 Pure Storage, Inc. Storage system management via a remote console
US11650749B1 (en) 2018-12-17 2023-05-16 Pure Storage, Inc. Controlling access to sensitive data in a shared dataset
US11003369B1 (en) 2019-01-14 2021-05-11 Pure Storage, Inc. Performing a tune-up procedure on a storage device during a boot process
US10585827B1 (en) 2019-02-05 2020-03-10 Liqid Inc. PCIe fabric enabled peer-to-peer communications
US11042452B1 (en) 2019-03-20 2021-06-22 Pure Storage, Inc. Storage system data recovery using data recovery as a service
US11221778B1 (en) 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
US11068162B1 (en) 2019-04-09 2021-07-20 Pure Storage, Inc. Storage management in a cloud data store
WO2020219795A1 (en) 2019-04-25 2020-10-29 Liqid Inc. Machine templates for predetermined compute units
EP3959860A4 (en) 2019-04-25 2023-01-25 Liqid Inc. MULTI-PROTOCOL COMMUNICATION CONTROL FOR TISSUE
US11853266B2 (en) 2019-05-15 2023-12-26 Pure Storage, Inc. Providing a file system in a cloud environment
US11126364B2 (en) 2019-07-18 2021-09-21 Pure Storage, Inc. Virtual storage system architecture
US11392555B2 (en) 2019-05-15 2022-07-19 Pure Storage, Inc. Cloud-based file services
US11327676B1 (en) 2019-07-18 2022-05-10 Pure Storage, Inc. Predictive data streaming in a virtual storage system
JP7326863B2 (ja) * 2019-05-17 2023-08-16 オムロン株式会社 転送装置、情報処理装置、および、データ転送方法
US12001355B1 (en) 2019-05-24 2024-06-04 Pure Storage, Inc. Chunked memory efficient storage data transfers
US11487715B1 (en) 2019-07-18 2022-11-01 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11093139B1 (en) 2019-07-18 2021-08-17 Pure Storage, Inc. Durably storing data within a virtual storage system
US11526408B2 (en) 2019-07-18 2022-12-13 Pure Storage, Inc. Data recovery in a virtual storage system
US11861221B1 (en) 2019-07-18 2024-01-02 Pure Storage, Inc. Providing scalable and reliable container-based storage services
US11797197B1 (en) 2019-07-18 2023-10-24 Pure Storage, Inc. Dynamic scaling of a virtual storage system
US11086553B1 (en) 2019-08-28 2021-08-10 Pure Storage, Inc. Tiering duplicated objects in a cloud-based object store
US11693713B1 (en) 2019-09-04 2023-07-04 Pure Storage, Inc. Self-tuning clusters for resilient microservices
US11360689B1 (en) 2019-09-13 2022-06-14 Pure Storage, Inc. Cloning a tracking copy of replica data
US11797569B2 (en) 2019-09-13 2023-10-24 Pure Storage, Inc. Configurable data replication
US11573864B1 (en) 2019-09-16 2023-02-07 Pure Storage, Inc. Automating database management in a storage system
US11669386B1 (en) 2019-10-08 2023-06-06 Pure Storage, Inc. Managing an application's resource stack
US20210173945A1 (en) 2019-12-06 2021-06-10 Pure Storage, Inc. Replicating data to a storage system that has an inferred trust relationship with a client
US11709636B1 (en) 2020-01-13 2023-07-25 Pure Storage, Inc. Non-sequential readahead for deep learning training
US11733901B1 (en) 2020-01-13 2023-08-22 Pure Storage, Inc. Providing persistent storage to transient cloud computing services
US11720497B1 (en) 2020-01-13 2023-08-08 Pure Storage, Inc. Inferred nonsequential prefetch based on data access patterns
US11637896B1 (en) 2020-02-25 2023-04-25 Pure Storage, Inc. Migrating applications to a cloud-computing environment
US11868622B2 (en) 2020-02-25 2024-01-09 Pure Storage, Inc. Application recovery across storage systems
US11321006B1 (en) 2020-03-25 2022-05-03 Pure Storage, Inc. Data loss prevention during transitions from a replication source
US11630598B1 (en) 2020-04-06 2023-04-18 Pure Storage, Inc. Scheduling data replication operations
US11301152B1 (en) 2020-04-06 2022-04-12 Pure Storage, Inc. Intelligently moving data between storage systems
US11494267B2 (en) 2020-04-14 2022-11-08 Pure Storage, Inc. Continuous value data redundancy
US11150842B1 (en) 2020-04-20 2021-10-19 Western Digital Technologies, Inc. Dynamic memory controller and method for use therewith
US11921670B1 (en) 2020-04-20 2024-03-05 Pure Storage, Inc. Multivariate data backup retention policies
CN111639008B (zh) * 2020-05-29 2023-08-25 杭州海康威视系统技术有限公司 基于双端口ssd的文件系统状态监测方法、装置及电子设备
US11431488B1 (en) 2020-06-08 2022-08-30 Pure Storage, Inc. Protecting local key generation using a remote key management service
US11281399B2 (en) 2020-06-24 2022-03-22 Western Digital Technologies, Inc. Dual-interface storage system and method for use therewith
US20220012130A1 (en) 2020-07-13 2022-01-13 Samsung Electronics Co., Ltd. Storage device with fault resilient read-only mode
US11349917B2 (en) 2020-07-23 2022-05-31 Pure Storage, Inc. Replication handling among distinct networks
US11442652B1 (en) 2020-07-23 2022-09-13 Pure Storage, Inc. Replication handling during storage system transportation
US11467992B1 (en) * 2020-09-24 2022-10-11 Amazon Technologies, Inc. Memory access operation in distributed computing system
US11442665B2 (en) 2020-12-04 2022-09-13 Western Digital Technologies, Inc. Storage system and method for dynamic selection of a host interface
US11442776B2 (en) 2020-12-11 2022-09-13 Liqid Inc. Execution job compute unit composition in computing clusters
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system
US11853285B1 (en) 2021-01-22 2023-12-26 Pure Storage, Inc. Blockchain logging of volume-level events in a storage system
US20220365827A1 (en) 2021-05-12 2022-11-17 Pure Storage, Inc. Rebalancing In A Fleet Of Storage Systems Using Data Science
KR102669923B1 (ko) 2021-06-01 2024-05-29 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102635450B1 (ko) * 2021-05-26 2024-02-13 에스케이하이닉스 주식회사 PCIe 장치 및 그 동작 방법
KR102669925B1 (ko) 2021-06-01 2024-05-29 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
US11921657B2 (en) 2021-05-26 2024-03-05 SK Hynix Inc. Peripheral component interconnect express (PCIE) device for supporting separate reference clock(s) operating between host and direct memory access (DMA) controller
US11816129B2 (en) 2021-06-22 2023-11-14 Pure Storage, Inc. Generating datasets using approximate baselines
US11914867B2 (en) 2021-10-29 2024-02-27 Pure Storage, Inc. Coordinated snapshots among storage systems implementing a promotion/demotion model
US11714723B2 (en) 2021-10-29 2023-08-01 Pure Storage, Inc. Coordinated snapshots for data stored across distinct storage environments
US11893263B2 (en) 2021-10-29 2024-02-06 Pure Storage, Inc. Coordinated checkpoints among storage systems implementing checkpoint-based replication
US11922052B2 (en) 2021-12-15 2024-03-05 Pure Storage, Inc. Managing links between storage objects
US11847071B2 (en) 2021-12-30 2023-12-19 Pure Storage, Inc. Enabling communication between a single-port device and multiple storage system controllers
US12001300B2 (en) 2022-01-04 2024-06-04 Pure Storage, Inc. Assessing protection for storage resources
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction
CN115098413B (zh) * 2022-05-25 2023-08-11 苏州浪潮智能科技有限公司 一种存储控制器、方法、装置及存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732289B1 (en) * 2000-08-31 2004-05-04 Sun Microsystems, Inc. Fault tolerant data storage system
US7146448B2 (en) * 2001-09-28 2006-12-05 Dot Hill Systems Corporation Apparatus and method for adopting an orphan I/O port in a redundant storage controller
US7111084B2 (en) * 2001-12-28 2006-09-19 Hewlett-Packard Development Company, L.P. Data storage network with host transparent failover controlled by host bus adapter
ITSV20020018A1 (it) * 2002-05-03 2003-11-03 Alstom Transp Spa Dispositivo di elaborazione o comando operante in sicurezza intrinseca
US7293196B2 (en) * 2002-05-08 2007-11-06 Xiotech Corporation Method, apparatus, and system for preserving cache data of redundant storage controllers
JP2006221451A (ja) * 2005-02-10 2006-08-24 Hitachi Ltd ディスクアレイ装置
US7577134B2 (en) * 2005-08-19 2009-08-18 Brocade Communications Systems, Inc. Port expander for fibre channel fabrics in storage area networks
US7519854B2 (en) * 2005-10-14 2009-04-14 International Business Machines Corporation Internal failover path for SAS disk drive enclosure
US7681089B2 (en) * 2007-02-20 2010-03-16 Dot Hill Systems Corporation Redundant storage controller system with enhanced failure analysis capability
US7861113B2 (en) * 2007-03-16 2010-12-28 Dot Hill Systems Corporation Method and apparatus for operating storage controller system in elevated temperature environment
TWM338424U (en) 2008-02-20 2008-08-11 Accusys Inc Micro-disc array apparatus used in semiconductor automation equipment
JP2010015195A (ja) 2008-06-30 2010-01-21 Toshiba Corp 記憶制御装置及び記憶制御方法
US8020035B2 (en) * 2008-07-30 2011-09-13 Hewlett-Packard Development Company, L.P. Expander circuit for a solid state persistent storage device that provides a plurality of interfaces to corresponding storage controllers
JP5232602B2 (ja) * 2008-10-30 2013-07-10 株式会社日立製作所 ストレージ装置、及びストレージコントローラ内部ネットワークのデータ経路フェイルオーバー方法
JP5281942B2 (ja) * 2009-03-26 2013-09-04 株式会社日立製作所 計算機およびその障害処理方法
US7913027B2 (en) * 2009-04-07 2011-03-22 Lsi Corporation Configurable storage array controller
US8151051B2 (en) 2009-04-23 2012-04-03 International Business Machines Corporation Redundant solid state disk system via interconnect cards
US7818525B1 (en) * 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
WO2011048626A1 (en) * 2009-10-20 2011-04-28 Hitachi, Ltd. Storage controller for mirroring data written to cache memory area
US8954798B2 (en) * 2011-02-11 2015-02-10 Taejin Info Tech Co., Ltd. Alarm-based backup and restoration for a semiconductor storage device
US8832489B2 (en) * 2011-04-26 2014-09-09 Dell Products, Lp System and method for providing failover between controllers in a storage array

Also Published As

Publication number Publication date
WO2012087648A2 (en) 2012-06-28
EP2656228A4 (en) 2014-05-14
EP2656228B1 (en) 2016-03-02
US20120166699A1 (en) 2012-06-28
KR101455016B1 (ko) 2014-10-27
US8589723B2 (en) 2013-11-19
EP2656228A2 (en) 2013-10-30
WO2012087648A3 (en) 2012-09-20

Similar Documents

Publication Publication Date Title
KR101455016B1 (ko) 고가용성 솔리드 스테이트 드라이브를 제공하는 방법 및 장치
US9298648B2 (en) Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
CN102209103B (zh) 向多个存储控制器多播写请求
JP5903801B2 (ja) 通信装置およびid設定方法
US9753880B1 (en) Method and switch for transferring transactions between switch domains
KR101744465B1 (ko) 데이터를 저장하기 위한 방법 및 장치
US9495263B2 (en) Redundant SAS storage virtualization subsystem and system using the same, and method therefor
JP4643539B2 (ja) メモリシステムおよびその使用方法
US7093043B2 (en) Data array having redundancy messaging between array controllers over the host bus
WO2016135872A1 (ja) ストレージ装置及び記憶デバイス
KR102646616B1 (ko) 판독 명령 실행을 위한 NVMeoF RAID 구현 방법
US10901626B1 (en) Storage device
JP2007128437A (ja) ディスクアレイ装置及びその経路障害検出方法
US20150160984A1 (en) Information processing apparatus and method for controlling information processing apparatus
WO2014094250A1 (zh) 数据处理方法和设备
CN102843284B (zh) iSCSI存储节点、架构以及读取、写入方法
JP2009053946A (ja) 二重化コントーラ構成ブロックデバイス制御装置
JP6773974B2 (ja) ストレージ制御装置およびストレージ装置
JP5729043B2 (ja) ストレージ装置および制御装置
JP6825263B2 (ja) ストレージ制御装置、およびストレージシステム
CN100504747C (zh) 储存虚拟化子系统架构及其组态建构方法以及电脑系统
TWI766594B (zh) 伺服器與應用於伺服器的控制方法
JP7315753B2 (ja) ストレージ装置
TW202232328A (zh) 具有雙儲存虛擬化控制器之資料儲存系統架構及其資料存取方法
JP2022039501A (ja) ストレージ制御装置、送達状況判定プログラムおよびストレージシステム

Legal Events

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