KR20130118876A - Ssd 환경에서의 적응형 raid - Google Patents
Ssd 환경에서의 적응형 raid Download PDFInfo
- Publication number
- KR20130118876A KR20130118876A KR1020137010801A KR20137010801A KR20130118876A KR 20130118876 A KR20130118876 A KR 20130118876A KR 1020137010801 A KR1020137010801 A KR 1020137010801A KR 20137010801 A KR20137010801 A KR 20137010801A KR 20130118876 A KR20130118876 A KR 20130118876A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- storage
- raid
- storage devices
- layout
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
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)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 적응적 RAID 지오메트리(geometries)를 위한 시스템 및 방법에 관한 것이다. 컴퓨터 시스템은 네트워크를 통해 서로 결합된 데이터 저장 어레이(data storage arrays) 및 클라이언트 컴퓨터를 포함한다. 데이터 저장 어레이는 데이터 저장을 위해 솔리드-스테이트 드라이브(solid-state drives) 및 플래시 메모리 셀(Flash memory cells)을 사용한다. 데이터 저장 어레이 내의 저장 컨트롤러는, 데이터를 저장할 때 사용하기 위한 제1 RAID 레이아웃을 결정하고, 상기 제1 RAID 레이아웃에 따라 장치 그룹에 제1 RAID 스트라이프(stripe)를 기록하도록 구성된다. 제1 조건을 감지하는 것에 대응하여, 상기 컨트롤러는 상기 제1 RAID 레이아웃과는 다른 제2 RAID 레이아웃을 결정하고, 상기 제2 RAID 레이아웃에 따라 상기 장치 그룹에 제2 RAID 스트라이프를 기록하도록 구성되며, 상기 제1 RAID 레이아웃 및 상기 제2 RAID 레이아웃 둘 다에 따라 상기 장치 그룹은 데이터를 동시에 저장한다.
Description
본 발명은 컴퓨터 네트워크에 관한 것으로, 더욱 상세하게는 복수의 솔리드-스테이트 저장 장치(solid-state storage devices) 간에 효율적으로 데이터를 분배하는 것에 관한 것이다.
컴퓨터 메모리의 저장용량 및 데이터의 대역폭이 증가함에 따라, 매일 업무에서 다루는 데이터의 크기 및 복잡성 또한 증가한다. 데이터 센터와 같은 대규모의 분산 저장 시스템(distributed storage systems)은 일반적으로 많은 사업 활동들을 운영하고 있다. 하나의 분산 저장 시스템은 하나 이상의 네트워크에 의해 상호접속된 클라이언트 컴퓨터들과 결합할 수 있다. 만약 분산 저장 시스템의 어느 일부분의 성능이 저하되거나 또는 사용할 수 없게 된다면, 회사의 운영이 손상되거나 완전히 멈출 수 있다. 따라서, 분산 저장 시스템이 데이터의 가용성 및 고성능의 기능을 위한 높은 기준을 유지하기를 바라게 된다. 본 명세서에서 사용되는 것처럼, 저장 디스크는 저장 기술의 유형으로 디스크를 포함하지 않는 저장 장치도 포함할 수 있다.
데이터 손실을 방지하기 위해, 저장 장치는 종종 오류 감지 및 수정 메커니즘(error detection and correction mechanisms)을 포함한다. 종종 이러한 메커니즘은, 장치에 의해 생성되며 장치 자체 내에 저장된 오류 수정 코드의 형태를 취한다. 게다가 분산 저장 시스템은 복수의 저장 장치 간에 데이터를 분배하기 위한 분산 알고리즘을 또한 사용할 수 있다. 이러한 알고리즘은 중앙 디렉토리(central directory)에 의존하지 않고 일반적으로 저장 장치에 데이터 객체(data objects)를 매핑(mapping)한다. 이와 같은 알고리즘의 예로서 RUSH(Replication Under Scalable Hashing) 및 CRUSH(Controlled Replication Under Scalable Hashing)가 있다. 중앙 디렉토리 없이, 분산 저장 시스템에서 복수의 클라이언트가 복수의 서버상의 데이터 객체에 동시에 접속할 수 있다. 또한, 저장되는 메타데이터의 크기를 줄일 수 있다. 그러나 용량의 변화, 입/출력(input/output; I/O) 특성 및 안정성 문제와 함께, 복수의 저장 디스크 간에 데이터를 분배하는 것이 어려운 작업으로 남아 있다. 저장 장치에서와 유사하게, 이러한 알고리즘은 (예를 들어, RAID5 및 RAID6와 같은) RAID 형태의 알고리즘 또는 리드-솔로몬 코드(Reed-Solomon codes)와 같은 오류 감지 및 수정 알고리즘을 또한 포함한다.
선택된 저장 장치와 관련된 기술과 메커니즘은, 동적으로(dynamically) 추가되고 제거될 수 있는 복수의 저장 장치 간에 데이터를 분배하기 위해 사용하는 방법을 결정한다. 예를 들어, 상기 설명한 알고리즘들은 하드 디스크 드라이브(hard disk drives; HDDs)를 사용하는 시스템을 위해 개발되었다. HDD는 하나 이상의 회전 디스크(rotating disks)를 포함하며, 각각은 자기 매체(magnetic medium)로 코팅되어 있다. 이러한 디스크는 매일 몇 시간 동안, 분당 수천 회의 비율로 회전한다. 또한, 자기 액추에이터(magnetic actuator)는 회전하는 디스크에 대한 자기 판독/기록 장치(magnetic read/write devices)의 위치를 설정하는 역할을 한다. 이러한 액추에이터는 마찰, 마모, 진동 및 기계적 정렬불량이 일어날 수 있으며, 이는 안정성 문제를 일으킨다. 상기 설명한 데이터 분배 알고리즘은 HDD의 특성 및 성향에 기반을 둔다.
저장 디스크의 또 다른 형태의 일례로 솔리드-스테이트 디스크(Solid-State Disk; SSD)가 있다. 솔리드-스테이트 디스크는 솔리드-스테이트 드라이브로 또한 지칭될 수 있다. SSD는 HDD 인터페이스를 에뮬레이트(emulate)할 수 있지만, SSD는 HDD에 있는 전기-기계식 장치 대신에 영구 데이터(persistent data)를 저장하기 위해 솔리드-스테이트 메모리를 사용한다. 예를 들면, SSD는 플래시 메모리 뱅크를 포함할 수 있다. 가동부(moving parts) 또는 기계적인 지연 없이, SSD는 HDD보다 더 낮은 액세스 시간(access time) 및 대기시간을 가질 수 있다. 그러나 SSD는 일반적으로 상당한 기록 대기시간(write latencies)이 있다. 입/출력(input/output; I/O) 특성이 다를 뿐만 아니라, SSD는 HDD와는 다른 장애 모드(failure modes)가 발생한다. 따라서, HDD를 위해 개발된 분산 데이터 배치 알고리즘(distributed data placement algorithms)을 사용해서는, 저장을 위해 SSD를 사용하는 시스템에서 고성능 및 높은 안정성을 달성할 수 없다.
상기 사항을 고려할 때, 복수의 솔리드-스테이트 장치 간에 효율적으로 데이터를 분배하고, 오류를 감지 및 수정하기 위한 시스템 및 방법이 필요하다.
복수의 솔리드-스테이트 저장 장치 간에 데이터를 효율적으로 분배하고 관리하기 위한 컴퓨터 시스템 및 방법의 다양한 실시예가 개시된다.
일실시예에서, 컴퓨터 시스템은, 네트워크를 통해 판독 및 기록 요청(read and write requests)을 수신하기 위해 결합한 하나 이상의 데이터 저장 어레이(data storage arrays)에 네트워크를 통해 판독 및 기록 요청을 전달하도록 구성된 복수의 클라이언트 컴퓨터를 포함한다. 복수의 저장 장치에서의 복수의 저장 위치를 포함하는 데이터 저장 어레이가 고려된다. 다양한 실시예에서, 데이터의 저장 및 보호를 위해서, 저장 장치는 독립 드라이브의 중복 어레이(redundant array of independent drives; RAID) 방식으로 구성된다. 데이터 저장 장치는 플래시 메모리 셀(Flash memory cells)과 같은, 데이터 저장을 위한 솔리드-스테이트 메모리 기술을 포함할 수 있다. 데이터 저장 서브시스템(data storage subsystem)은, 데이터를 저장할 때 사용하기 위한 제1 RAID 레이아웃을 결정하고, 상기 제1 RAID 레이아웃에 따라 장치 그룹에 제1 RAID 스트라이프(stripe)를 기록하도록 구성된 저장 컨트롤러(storage controller)를 더 포함한다. 제1 조건을 감지하는 것에 대응하여, 상기 컨트롤러는 상기 제1 RAID 레이아웃과는 다른 제2 RAID 레이아웃을 결정하고, 상기 제2 RAID 레이아웃에 따라 상기 장치 그룹에 제2 RAID 스트라이프를 기록하도록 구성되며, 상기 장치 그룹은 상기 제1 RAID 레이아웃 및 상기 제2 RAID 레이아웃 둘 다에 따라 데이터를 동시에 저장한다. 다양한 실시예에서, 상기 제1 조건은 상기 장치 그룹에 데이터를 저장하기 위해 공간이 할당됨을 감지하는 것을 포함한다. 또한, 하나 이상의 복수의 저장 장치의 특성들에 적어도 부분적으로 기반하여, 상기 컨트롤러가 사용하기 위한 RAID 레이아웃의 형태를 결정하는 실시예들이 고려된다.
다음 설명 및 첨부된 도면들을 고려하면, 이와 같은 실시예들 및 다른 실시예들이 명백해질 것이다.
도 1은 네트워크 구조의 일실시예를 도시하는 일반적인 블록도.
도 2는 동적인 장치내 리던던시 방안의 일실시예를 도시하는 일반적인 블록도.
도 3은 데이터 저장 서브시스템에서 장치내 보호를 조정하기 위한 방법의 일실시예를 도시하는 일반적인 흐름도.
도 4는 저장 서브시스템의 일실시예를 도시하는 일반적인 블록도.
도 5는 장치 유닛의 일실시예를 도시하는 일반적인 블록도.
도 6은 상태 테이블의 일실시예를 도시하는 일반적인 블록도.
도 7은 플렉서블 RAID 데이터 레이아웃 구조의 일실시예를 도시하는 일반적인 블록도.
도 8은 플렉서블 RAID 데이터 레이아웃 구조의 또 다른 일실시예를 도시하는 일반적인 블록도.
도 9는 데이터 저장 서브시스템에서 레이아웃을 동적으로 결정하기 위한 방법의 일실시예를 도시하는 일반적인 흐름도.
도 10은 플렉서블 RAID 데이터 레이아웃 구조의 또 다른 일실시예를 도시하는 일반적인 블록도.
도 11a는 장치 레이아웃의 일실시예를 도시하는 도면.
도 11b는 세그먼트의 일실시예를 도시하는 도면.
도 11c는 다른 페이지 형태 내에서의 데이터 저장 방식의 일실시예를 도시하는 일반적인 블록도.
도 12는 하이브리드 RAID 데이터 레이아웃의 일실시예를 도시하는 일반적인 블록도.
도 13은 데이터 저장 서브시스템에서 대체 RAID 지오메트리를 선택하기 위한 방법의 일실시예를 도시하는 일반적인 흐름도.
본 발명은 다양한 변경 및 대체적인 형태를 가질 수 있지만, 특정 실시예들은 도면에서 일례로 도시되며, 본 명세서에서 자세히 설명한다. 그러나 도면 및 이에 대한 상세한 설명이, 개시된 특정 형태로 본 발명을 제한하려는 것은 아니며, 오히려 첨부된 청구항에 의해 정의된 본 발명의 사상 및 범주에 속하는 모든 변경, 등가물 및 대안을 본 발명이 포함하고 있다는 점을 이해해야만 한다.
도 2는 동적인 장치내 리던던시 방안의 일실시예를 도시하는 일반적인 블록도.
도 3은 데이터 저장 서브시스템에서 장치내 보호를 조정하기 위한 방법의 일실시예를 도시하는 일반적인 흐름도.
도 4는 저장 서브시스템의 일실시예를 도시하는 일반적인 블록도.
도 5는 장치 유닛의 일실시예를 도시하는 일반적인 블록도.
도 6은 상태 테이블의 일실시예를 도시하는 일반적인 블록도.
도 7은 플렉서블 RAID 데이터 레이아웃 구조의 일실시예를 도시하는 일반적인 블록도.
도 8은 플렉서블 RAID 데이터 레이아웃 구조의 또 다른 일실시예를 도시하는 일반적인 블록도.
도 9는 데이터 저장 서브시스템에서 레이아웃을 동적으로 결정하기 위한 방법의 일실시예를 도시하는 일반적인 흐름도.
도 10은 플렉서블 RAID 데이터 레이아웃 구조의 또 다른 일실시예를 도시하는 일반적인 블록도.
도 11a는 장치 레이아웃의 일실시예를 도시하는 도면.
도 11b는 세그먼트의 일실시예를 도시하는 도면.
도 11c는 다른 페이지 형태 내에서의 데이터 저장 방식의 일실시예를 도시하는 일반적인 블록도.
도 12는 하이브리드 RAID 데이터 레이아웃의 일실시예를 도시하는 일반적인 블록도.
도 13은 데이터 저장 서브시스템에서 대체 RAID 지오메트리를 선택하기 위한 방법의 일실시예를 도시하는 일반적인 흐름도.
본 발명은 다양한 변경 및 대체적인 형태를 가질 수 있지만, 특정 실시예들은 도면에서 일례로 도시되며, 본 명세서에서 자세히 설명한다. 그러나 도면 및 이에 대한 상세한 설명이, 개시된 특정 형태로 본 발명을 제한하려는 것은 아니며, 오히려 첨부된 청구항에 의해 정의된 본 발명의 사상 및 범주에 속하는 모든 변경, 등가물 및 대안을 본 발명이 포함하고 있다는 점을 이해해야만 한다.
다음 설명에서, 여러 구체적인 세부 내용이 본 발명의 완전한 이해를 위해 명시되어 있다. 그러나 본 발명이 속하는 기술분야에서 통상의 지식을 가진 사람은, 이러한 구체적인 세부 내용 없이도 본 발명을 실시할 수 있음을 인식하여야만 한다. 일부 실시예에서, 잘 알려진 회로, 구조, 신호, 컴퓨터 프로그램 명령어 및 기술은 본 발명을 왜곡하지 않기 위해서 세부적인 내용에 표시되지 않았다.
도 1을 살펴보면, 네트워크 구조(100)의 일실시예의 일반적인 블록도가 도시되어 있다. 아래 더 상세히 설명하는 것처럼, 네트워크 구조(100)의 일실시예는 네트워크(180)를 통해 서로 상호접속되어 있고 데이터 저장 어레이들(120a 및 120b)과 상호접속되어 있는 클라이언트 컴퓨터 시스템들(110a 및 110b)을 포함한다. 네트워크(180)는 스위치(140)를 통해 다른 네트워크(190)에 연결될 수 있다. 클라이언트 컴퓨터 시스템(110c)은 네트워크(190)를 통해 클라이언트 컴퓨터 시스템들(110a 및 110b) 및 데이터 저장 어레이들(120a 및 120b)과 연결된다. 또한, 네트워크(190)는 인터넷(160) 또는 다른 외부 네트워크와 스위치(150)를 통해 연결될 수 있다.
또 다른 실시예에서, 클라이언트의 컴퓨터 및 서버, 스위치, 네트워크, 데이터 저장 어레이 및 데이터 저장 장치의 숫자 및 형태가 도 1에 도시된 것들로 제한되지 않음에 유의해야 한다. 여러 가지 경우에서, 하나 이상의 클라이언트가 오프라인으로 동작할 수 있다. 또한, 동작하는 동안 사용자가 네트워크 구조(100)에 연결, 차단 및 재연결함에 따라, 개별 클라이언트 컴퓨터의 연결 형태가 변할 수 있다. 도 1에 도시된 각 구성 요소에 대해서는 곧 더욱 자세히 설명될 것이다. 먼저, 데이터 저장 어레이들(120a 및 120b)이 제공하는 일부 특징들에 대한 개요를 설명한다.
네트워크 구조(100)에서, 클라이언트 컴퓨터 시스템들(110a 내지 110c)과 같이 다른 서버 및 컴퓨터들 간에 데이터를 공유하기 위해서, 각 데이터 저장 어레이(120a 및 120b)를 사용할 수 있다. 또한, 디스크 미러링(disk mirroring), 백업 및 복원(backup and restore), 보관(archival) 및 보관된 데이터의 복원, 및 한 저장 장치에서 다른 저장 장치로의 데이터 이송(data migration)을 위해 데이터 저장 어레이들(120a 및 120b)을 사용할 수 있다. 또 다른 실시예에서, 하나 이상의 클라이언트 컴퓨터 시스템(110a 내지 110c)은 클러스터(cluster)를 형성하기 위해서 빠른 근거리 네트워크(local area networks; LANs)를 통해 서로 연결될 수 있다. 서로 연결된 하나 이상의 노드(node)는 클러스터를 형성하며, 이는 데이터 저장 어레이들(120a 및 120b) 중 하나에 상주하는 클러스터 공유 볼륨(cluster shared volume)과 같은 저장 리소스(storage resource)를 공유할 수 있다.
각 데이터 저장 어레이(120a 및 120b)는 데이터 저장을 위해 저장 서브시스템(170)을 포함한다. 저장 서브시스템(170)은 복수의 저장 장치(176a 내지 176m)를 포함할 수 있다. 이러한 저장 장치들(176a 내지 176m)은 클라이언트 컴퓨터 시스템들(110a 내지 110c)에게 데이터 저장 서비스를 제공할 수 있다. 각 저장 장치(176a 내지 176m)는 판독 및 기록 요청을 수신하고 복수의 데이터의 저장 위치를 포함하도록 구성될 수 있으며, 데이터의 각 저장 위치는 어레이의 행과 열로서 주소 지정(addressable)이 된다. 일실시예에서, 저장 장치들(176a 내지 176m) 내에서의 데이터의 저장 위치는 논리적, 중복 저장 컨테이너(logical, redundant storage container) 또는 RAID 어레이{저가/독립 디스크의 중복 어레이(redundant arrays of inexpensive/independent disks)}에 마련될 수 있다. 그러나 저장 장치들(176a 내지 176m)은 디스크를 포함하지 않을 수 있다. 일실시예에서, 각 저장 장치(176a 내지 176m)는 종래의 하드 디스크 드라이브(HDD)와는 다른 데이터 저장 기술을 사용할 수 있다. 예를 들어, 하나 이상의 저장 장치(176a 내지 176m)는 영구 데이터를 저장하기 위해서 솔리드-스테이트 메모리로 구성된 저장매체를 포함하거나 여기에 결합할 수 있다. 다른 실시예에서, 하나 이상의 저장 장치(176a 내지 176m)는 스핀 토크 전달 기술(spin torque transfer technique), 자기저항 랜덤 액세스 메모리(magnetoresistive random access memory; MRAM) 기술 또는 다른 저장 기술들을 사용하는 저장매체를 포함하거나 여기에 결합할 수 있다. 이러한 서로 다른 저장 기술은, 저장 장치들 간에 서로 다른 안정성 특성으로 이어질 수 있다.
각 저장 장치(176a 내지 176m) 내에 사용된 기술 및 메커니즘의 형태는 데이터 객체 맵핑 및 오류의 감지 및 수정에 사용하는 알고리즘을 결정할 수 있다. 이러한 알고리즘에 사용되는 로직은, 하나 이상의 기본 운영체제(base OS, 132), 파일 시스템(134), 저장 서브시스템 컨트롤러(174) 내의 하나 이상의 글로벌 RAID 엔진(178) 및 각 저장 장치(176a 내지 176m) 내의 컨트롤 로직 내에 포함될 수 있다.
일실시예에서, 사용한 솔리드-스테이트 메모리는 솔리드-스테이트 드라이브(SSD) 기술을 포함한다. 일반적으로, SSD 기술은 플래시 메모리 셀을 이용한다. 당해 기술분야에서 잘 알려져 있듯이, 플래시 메모리 셀은 플로팅 게이트(floating gate)에 갇히고 저장된 전자들의 범위를 기준으로 이진 값을 갖는다. 완전히 삭제된 플래시 메모리 셀은 플로팅 게이트에 전자가 전혀 없거나 최소한의 숫자만을 저장하고 있다. 싱글-레벨 셀(single-level cell; SLC) 플래시에서의 이진수 1과 같이 특별한 이진 값은, 삭제된 플래시 메모리 셀과 관련되어 있다. 멀티-레벨 셀(multi-level cell; MLC) 플래시는 삭제된 플래시 메모리 셀과 관련된 이진 값 11을 가진다. 플래시 메모리 셀 내의 제어부 게이트(controlling gate)에 임의의 주어진 임계 전압보다 높은 전압을 인가하면, 플래시 메모리 셀은 플로팅 게이트에 임의의 주어진 범위의 전자들을 가두게 된다. 그에 따라 SLC 플래시의 이진수 0과 같은 또 다른 특별한 이진 값이, 프로그램된(기록된) 플래시 메모리 셀과 관련되게 된다. MLC 플래시 셀은 제어 게이트에 인가되는 전압에 따라 프로그램된 메모리 셀과 관련된 복수의 이진 값 중 하나를 가질 수 있다.
일반적으로, SSD 기술은 HDD 기술보다 더 짧은 판독 액세스 지연 시간(read access latency times)을 제공한다. 그러나 SSD 내의 자유 블록(free block) 및 프로그램 가능한 블록의 가용성에 의해, SSD의 기록 성능은 상당한 영향을 받는다. SSD의 기록 성능은 SSD의 판독 성능에 비해 상당히 느리기 때문에, 비슷한 지연시간을 기대하는 특정 기능 또는 연산에 문제가 발생할 수 있다. 또한, HDD 기술과 SSD 기술 간의 기술 및 메커니즘의 차이는 저장 장치들(176a 내지 176m)의 안정성 특성의 차이를 가져온다.
다양한 실시예에서, SSD 내의 플래시 셀은 새 데이터를 기록하기 전에 일반적으로 삭제되어야만 한다. 또한, 다양한 플래시 기술에서의 삭제 연산은 블록단위 기준(block-wise basis)으로 또한 수행되어야만 한다. 결과적으로, 블록(삭제 세크먼트 또는 삭제 블록) 내의 모든 플래시 메모리 셀은 함께 삭제된다. 플래시 삭제 블록은 복수의 페이지(pages)를 포함할 수 있다. 예를 들어, 1 페이지는 크기가 4 킬로바이트(kilobytes; KB)이며, 1 블록은 64 페이지 또는 256KB를 포함할 수 있다. 플래시 장치에서의 판독 연산과 비교해서, 삭제 연산은 상대적으로 긴 지연시간을 가질 수 있으며, 이는 차례로 이에 상응하는 기록 연산의 지연시간을 길게 할 수 있다. 플래시 기술의 프로그래밍 또는 판독은 삭제 블록의 크기보다 낮은 수준의 단위(granularity)에서 수행될 수 있다. 예를 들어, 플래시 셀은 바이트, 워드 또는 다른 크기 단위로 프로그램되거나 판독될 수 있다.
플래시 셀은 반복적인 삭제 및 프로그램 연산(erase-and-program operation) 후엔 마모된다. 이러한 경우의 마모는, 기판(substrate) 및 MLC 플래시 셀의 플로팅 게이트 사이의 유전체 산화물 층(dielectric oxide layer)에 주입되거나 갇힌 전하 때문이다. 일실시예로, MLC 플래시 셀은, 10,000 회에서 100,000 회 정도의 범위에서 삭제 및 프로그램 연산의 횟수 제한이 있을 수 있다. 또한, 다른 플래시 셀이 삭제되거나 프로그램되는 도중에, 이웃하거나 가까이에 있는 플래시 셀에서 우연히 상태 변화(state change)가 일어나는 프로그램 교란 오류(program disturb errors)를 SSD가 겪을 수도 있다. 더욱이, SSD는 판독 교란 오류를 포함하는데, 이는 다른 플래시 셀이 판독될 때 가까이에 있는 플래시 셀에서 우연히 상태 변화가 일어나는 것이다.
하나 이상의 저장 장치(176a 내지 176m) 각각의 특성을 안다는 것은 더욱 효율적인 데이터 객체 맵핑과 오류의 감지 및 수정에 이를 수 있게 한다. 일실시예에서, 저장 컨트롤러(174) 내의 글로벌 RAID 엔진(178)은, I/O 요청에 대한 일관성 없는 응답 시간, 해당 액세스에 대한 부정확한 데이터, 오류율(error rates) 및 액세스율(access rates) 중 적어도 하나 이상을 저장 장치들(176a 내지 176m)을 위해 검출할 수 있다. 적어도 이러한 특성에 대응하여, 글로벌 RAID 엔진(178)은 저장 장치들(176a 내지 176m) 내의 해당 저장 장치 그룹을 위해, 어느 RAID 데이터 레이아웃 구조를 사용할지를 결정할 수 있다. 또한, 글로벌 RAID 엔진(178)은 저장 장치들(176a 내지 176m)의 특성을 기준으로, 장치내 리던던시 방안(intra-device redundancy scheme) 및 장치내 RAID 데이터 레이아웃(intra-device RAID data layout)을 동적으로 전환할 수 있다.
일실시예에 따라, 도 1은 설명한 특징이 나타날 수 있는 시스템의 일례를 도시하고 있다. 보다 상세한 설명이 이하 제공된다. 도 1과 관련하여, 네트워크 구조(100)의 구성 요소에 대한 보다 상세한 설명이 이하 제공된다.
네트워크 구조의 구성 요소
도시된 것처럼, 네트워크 구조(100)는 네트워크(180 및 190)를 통해 서로 상호접속되어 있고 데이터 저장 어레이들(120a 및 120b)과 상호접속된 클라이언트 컴퓨터 시스템들(110a 내지 110c)을 포함한다. 네트워크들(180 및 190)은, 무선 접속, 직접 근거리 네트워크(direct LAN) 접속, 저장 영역 네트워크(storage area networks; SANs), 인터넷과 같은 광역 네트워크(wide area network; WAN) 접속, 라우터 및 기타 다양한 기술을 포함할 수 있다. 네트워크들(180 및 190)은 또한 무선으로도 가능한 하나 이상의 LAN을 포함할 수 있다. 네트워크들(180 및 190)은, 원격 직접 메모리 액세스(remote direct memory access; RDMA) 하드웨어 및 소프트웨어 또는 이들 중 어느 하나, 전송 제어 프로토콜/인터넷 프로토콜(transmission control protocol/internet protocol; TCP/IP) 하드웨어 및 소프트웨어 또는 이들 중 어느 하나, 라우터, 중계기, 스위치, 그리드(grids) 등과 같은 것들을 더 포함할 수 있다. 네트워크들(180 및 190)은 이더넷, 광섬유 채널, 이더넷 광섬유 채널(Fibre Channel over Ethernet; FCoE), iSCSI 등과 같은 프로토콜을 사용할 수 있다. 스위치(140)는 두 네트워크(180 및 190)와 관련된 프로토콜을 사용할 수 있다. 네트워크(190)는, 전송 제어 프로토콜(TCP) 및 인터넷 프로토콜(IP) 또는 TCP/IP와 같은 인터넷(160)을 위해 사용하는 통신 프로토콜 세트와 결부될 수 있다. 스위치(150)는 TCP/IP 스위치가 될 수 있다.
클라이언트 컴퓨터 시스템들(110a 내지 110c)은, 데스트톱 개인용 컴퓨터(desktop personal computers; PCs), 워크스테이션, 랩탑, 휴대용 컴퓨터(handheld computers), 서버, 서버 팜(server farms), 개인 휴대 정보 단말기(personal digital assistants; PDAs), 스마트폰 등과 같은 임의의 숫자로 구성된 고정 또는 모바일 컴퓨터(stationary or mobile computers)의 전형이다. 일반적으로, 클라이언트 컴퓨터 시스템들(110a 내지 110c)은 하나 이상의 프로세서 코어(processor cores)를 갖는 하나 이상의 프로세서를 포함한다. 각 프로세서 코어는 미리 정의된 범용 명령어 집합(predefined general-purpose instruction set)에 따라 명령어를 수행하기 위한 회로망을 포함한다. 예를 들어, x86 명령어 세트 구조를 선택할 수 있다. 대안으로, Alpha®, PowerPC®, SPARC® 또는 다른 범용 명령어 세트 구조를 선택할 수 있다. 프로세서 코어는 데이터 및 컴퓨터 프로그램 명령어를 위한 캐시 메모리 서브시스템(cache memory subsystems)에 액세스할 수 있다. 캐시 서브시스템은 램덤 액세스 메모리(random access memory; RAM) 및 저장 장치를 포함하는 메모리 계층(memory hierarchy)과 결합할 수 있다.
클라이언트 컴퓨터 시스템 내의 각 프로세서 코어 및 메모리 계층은 결국 네트워크 인터페이스와 접속할 수 있다. 하드웨어 구성 요소뿐만 아니라, 각 클라이언트 컴퓨터 시스템(110a 내지 110c)은 메모리 계층 내에 저장된 기본 운영체제(OS)를 포함할 수 있다. 기본 OS는, 예를 들어 MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, Linux®, Solaris® 또는 다른 알려진 운영체제와 같은 임의의 다양한 특별한 운영체제의 전형이 될 수 있다. 예를 들어, 기본 OS는 다양한 서비스를 최종 사용자에게 제공하기 위해 동작할 수 있으며, 다양한 프로그램의 실행을 지원하기 위해 동작 가능한 소프트웨어 프레임워크(software framework)를 제공할 수 있다. 또한, 각 클라이언트 컴퓨터 시스템들(110a 내지 110c)은, 높은 수준의 가상머신(virtual machines; VMs)을 지원하기 위해 사용하는 하이퍼바이저(hypervisor)를 포함할 수 있다. 당해 기술분야에서 통상의 지식을 가진 사람들에게 잘 알려진 바와 같이, 시스템의 하드웨어로부터 OS와 같은 소프트웨어를 완전히 또는 부분적으로 분리하기 위해서, 가상화(virtualization)를 데스크톱 및 서버에서 사용할 수 있다. 가상화는 각자 자신의 리소스를 가지고 동일한 머신에서 실행중인 복수의 OS의 환영(illusion)을 최종사용자에게 제공할 수 있으며, 이와 같은 {예를 들어, 논리적 유닛 번호(logial unit number; LUNs)와 같은} 논리적 저장 개체(logical storage entities)는 각 데이터 저장 어레이들(120a 및 120b) 내의 저장 장치(176a 내지 176m)에 해당한다.
클라이언트 컴퓨터 시스템들(110a 내지 110c)과 같은 다른 서버들 간에 데이터의 공유를 위해, 각 데이터 저장 어레이들(120a 및 120b)을 사용할 수 있다. 각 데이터 저장 어레이(120a 및 120b)는 데이터 저장을 위해 저장 서브시스템(170)을 포함한다. 저장 서브시스템(170)은 복수의 저장 장치(176a 내지 176m)를 포함할 수 있다. 이러한 각 저장 장치들(176a 내지 176m)은 SSD가 될 수 있다. 컨트롤러(174)는 수신한 판독/기록 요청을 처리하기 위한 로직을 포함할 수 있다. 예를 들어, 상기 간단히 설명한 알고리즘은 적어도 컨트롤러(174)에서 실행될 수 있다. 랜덤 액세스 메모리(RAM; 172)는 수신한 기록 요청과 같은 동작을 배치(batch)하기 위해 사용할 수 있다.
기본 OS(132), 파일 시스템(134), (도시되지 않은) 임의의 OS 드라이버 및 메모리 매체(130)에 저장된 다른 소프트웨어는 파일 및 LUNs로 액세스할 수 있는 기능을 제공할 수 있으며, 이러한 기능의 관리를 제공한다. 메모리 매체(130)에 저장되며, 수신한 요청에 해당하는 저장 서브시스템(170)에서 하나 이상의 메모리 액세스 연산을 수행하기 위해 프로세서(122)에 의해 실행되는 프로그램 명령어를 기본 OS(134) 및 OS 드라이버가 포함할 수 있다.
각 데이터 저장 어레이(120a 및 120b)는 네트워크(180)와 접속하기 위해서 네트워크 인터페이스(124)를 사용할 수 있다. 일실시예에서, 클라이언트 컴퓨터 시스템들(110a 내지 110c)과 유사하게, 네트워크 어댑터 카드(network adapter card)는 네트워크 인터페이스(124)의 기능을 포함할 수 있다. 네트워크 인터페이스(124)의 기능은 하드웨어 및 소프트웨어 둘 다를 사용하여 구현할 수 있다. 네트워크 인터페이스(124)의 네트워크 카드로의 구현에 랜덤 액세스 메모리(RAM) 및 판독 전용 메모리(read-only memory; ROM) 둘 다 포함될 수 있다. 네트워크 인터페이스(124) 기능을 제공하기 위해, 하나 이상의 주문형 집적 회로(application specific integrated circuits; ASICs)를 사용할 수 있다.
일실시예에서, 사용자 데이터 및 해당 오류 수정 코드(error correction code; ECC) 정보를 위한 데이터 레이아웃을 최적화하기 위해 추구하는 데이터 저장 모델을 개발할 수 있다. 일실시예에서, 상기 모델은 적어도 부분적으로는 저장 시스템 내의 저장 장치의 특성에 의존한다. 예를 들어 솔리드-스테이트 저장 기술을 사용하는 저장 시스템에서, 특정 장치의 특성은, 저장 시스템을 위한 모델을 개발하기 위해 사용할 수 있고, 해당 데이터 저장 방식의 알고리즘(data storage arrangement algorithms)을 알려주는 역할을 또한 수행할 수 있다. 예를 들어 사용하는 특정 저장 장치가 시간이 지남에 따라 안정성에 변화를 나타낸다면, 데이터 저장 배치를 동적으로 변경할 때 그와 같은 특성이 이유가 될 수 있다.
일반적으로 보면, 컴퓨팅 시스템을 위해 개발된 어느 모델이든 불완전하다. 임의의 주어진 시스템을 완전하게 모델링하기 위한 실제 시스템에서는, 종종 원인이 되는 너무나 많은 변수들이 단순히 존재하고 있다. 어떠한 경우에는, 완전하지는 않지만 가치있는 모델을 개발하는 것이 가능할 수 있다. 아래 더욱 자세히 논의되는 바와 같이, 기초가 되는 장치의 특성을 기준으로 저장 시스템을 모델링하는 실시예들을 설명한다. 다양한 실시예에서, 데이터 저장 배치를 결정하는 것은 시스템이 어떻게 작용할 지에 관한 특정한 예측을 기준으로 수행된다. 장치의 특성에 대한 이해에 기준을 두게 되면, 특정 장치의 성향이 다른 것들보다 더욱 예측 가능하게 된다. 그러나 장치의 성향은 시간이 지남에 따라 변할 수 있고, 이에 대응하여 선택된 데이터의 레이아웃 또한 변할 수 있다. 본 명세서에서 사용하는 바와 같이, 장치의 특성은, 장치 전체로서의 특성, 칩 또는 다른 구성 요소와 같은 장치의 하위 부분의 특성, 삭제 블록의 특성 또는 장치와 관련된 여러 다른 특성들을 지칭할 수 있다.
장치내
리던던시
도 2로 이제 되돌아가면, 동적인 장치내 리던던시 방안의 일실시예가 도시된 일반적인 블록도가 나타나 있다. 당해 기술분야에서 통상의 지식을 가진 사람들에게 잘 알려진 바와 같이, 일부 장치내 리던던시 방안 중 하나를 저장 장치에서의 잠재된 섹터 오류(latent sector errors)의 영향을 줄이기 위해 사용할 수 있다. 디스크 상의 임의의 주어진 트랙 내에서의 세그먼트와 같이, "섹터"라는 용어는 일반적으로 HDD에서 저장의 기본 유닛을 지칭한다. 여기서 "섹터"라는 용어는 SSD에 할당되는 기본 유닛을 또한 지칭할 수 있다.
SSD 내에서의 할당 유닛(allocation unit)은 SSD 내에서 하나 이상의 삭제 블록을 포함할 수 있다. 도 2를 참조하면, 사용자 데이터(210)는, 최종사용자에 의해 변형되고 액세스되는 저장된 데이터 및 장치내 오류 수정 코드(ECC) 데이터 둘 다를 지칭할 수 있다. 장치내 ECC 데이터는, 사용자 데이터를 보유한 다른 저장 장치상의 하나 이상의 페이지로부터 생성되는 패리티(parity) 정보가 될 수 있다. 예를 들어 장치내 ECC 데이터는 RAID 데이터 레이아웃 구조에서 사용하는 패리티 정보일 수 있다. 사용자 데이터(210)는, 하나 이상의 저장 장치(176a 내지 176k) 내에 포함된 하나 이상의 페이지 내에 저장될 수 있다. 일실시예에서, 각 저장 장치(176a 내지 176k)는 SSD이다.
SSD 내의 삭제 블록은 몇몇 페이지를 포함할 수 있다. 앞서 설명한 바와 같이, 일실시예에서, 1 페이지는 4KB의 데이터 저장 공간을 포함한다. 하나의 삭제 블록은 64 페이지 또는 256KB를 포함할 수 있다. 또 다른 실시예에서, 삭제 블록은 1 메가바이트(MB) 정도로 클 수 있으며, 256 페이지를 포함한다. 충분히 큰 유닛 및 할당 유닛의 오버헤드 트래킹(overhead tracking)을 줄이기 위한 상대적으로 작은 수의 유닛 둘 다를 제공하는 방식으로 할당 유닛의 크기를 선택할 수 있다. 일실시예에서, 하나 이상의 상태 테이블(state table)은 할당 유닛의 상태(할당됨, 해제(free), 삭제됨, 오류), 마모 정도 및 할당 유닛 내에서 발생한 (수정가능하거나 수정 불가능한) 오류의 횟수를 관리할 수 있다. 다양한 실시예에서, 할당 유닛을 관리하는 오버헤드에 대해 임의의 주어진 장치에서 사용할 수 있는 할당 유닛의 숫자를 균형 맞추기 위해서, 할당 유닛의 크기를 선택할 수 있다. 예를 들어, 일실시예에서, SSD의 총 저장 용량의 1 퍼센트의 약 백분의 일이 되도록, 할당 유닛의 크기를 선택할 수 있다. 페이지, 삭제 블록 및 다른 유닛 배치에 관해, 다른 크기의 데이터 저장 공간을 가질 수 있으며 이를 고려할 수 있다.
잠재된 섹터 오류(LSEs)는 임의의 주어진 섹터 또는 저장 장치내 다른 저장 유닛에 액세스할 수 없을 때 발생한다. 주어진 임의의 섹터에 대해 판독 또는 기록 연산을 완료할 수 없을 수 있다. 또한, 수정 불가능한 오류 수정 코드(ECC)의 오류가 있을 수 있다. LSE는 임의의 주어진 섹터에 액세스하기 전까지는 검출할 수 없는 오류이다. 따라서 임의의 주어진 섹터에 과거에 저장된 모든 데이터가 손실될 수도 있다. 하나의 LSE가 저장 장치의 장애가 발생한 이후 RAID를 복원(reconstruction)하는 도중에 발생할 경우, 데이터 손실로 이어질 수 있다. 임의의 SSD에 대해, 또 다른 LSE의 발생 확률은, 장치의 사용기간, 장치의 크기, 액세스율(access rates), 저장 장치의 조밀도(storage compactness) 및 과거 수정 가능 또는 불가능한 오류의 발생과 같은 통계자료 중 적어도 하나로 인해 증가할 수 있다. 임의의 주어진 장치 내에서의 LSEs 및 데이터 손실을 방지하기 위해서, 복수의 장치내 리던던시 방안 중 하나를 임의의 주어진 저장 장치 내에서 사용할 수 있다.
임의의 주어진 저장 장치 내에서 장치내 리던던시 방안은 패리티 정보와 같은 ECC 정보를 사용한다. 이 장치내 리던던시 방안 및 그것의 ECC 정보는, 임의의 주어진 장치와 부합하며 임의의 주어진 장치 내에서 관리될 수 있으나, 장치 그 자체에 의해 내부적으로 생성되고 관리될 수 있는 ECC와는 다르다. 일반적으로 보면, 장치의 내부에서 생성되고 관리되는 ECC는 상기 장치가 포함된 시스템에서 인식되지 못한다. 임의의 주어진 저장 장치 내에 포함된 장치내 ECC 정보는, 임의의 주어진 저장 장치 내에서 데이터 저장의 안정성을 높이는데 사용할 수 있다. 패리티 정보와 같이 다른 저장 장치 내에 포함될 수 있는 다른 ECC 정보뿐만이 아니라, 이 장치내 ECC 정보도 RAID 데이터 레이아웃 구조에서 사용된다.
높은 효율의 장치내 리던던시 방안은 임의의 주어진 RAID 데이터 레이아웃의 안정성을 충분히 향상시킬 수 있어, 패리티 정보를 보유하기 위해 사용하는 장치의 수가 감소한다. 예를 들어, 각 장치에서 데이터를 보호하기 위한 또 다른 장치내 리던던시 방안이 존재한다면, 이중 패리티 RAID 레이아웃(double parity RAID layout)은 단일의 패리티 RAID 레이아웃으로 대체될 수 있다. 저장의 효율성이 일정한 경우, 장치내 리던던시 방안에서 리던던시를 증가시키는 것은 임의의 주어진 저장 장치의 안정성을 높이게 된다. 그러나 그와 같은 방식으로 리던던시를 증가시키는 것은, 임의의 주어진 장치에서의 입/출력(I/O) 성능의 저하 또한 늘어날 수 있다.
일실시예에서, 장치내 리던던시 방안은 사용자 데이터가 저장된 위치의 그룹으로 장치를 분할한다. 예를 들어, 스트라이프들(250a 내지 250c)에 의해 도시된 것처럼, RAID 레이아웃 내의 스트라이프에 상응하는 장치 내에서의 위치의 그룹으로 분할될 수 있다. 데이터(210)에 도시된 것처럼, 사용자 데이터 또는 장치내 RAID 리던던시 정보는 각 저장 장치(176a 내지 176k) 내의 하나 이상의 페이지에 저장될 수 있다. 각 저장 장치 내에서, 장치내 오류 복구 데이터(error recovery data; 220)는 하나 이상의 페이지에 저장될 수 있다. 본 명세서에서 사용하는 것처럼, 장치내 오류 복구 데이터(220)는 장치내 리던던시 데이터(220)로 지칭될 수 있다. 당해 기술분야에서 통상의 지식을 가진 사람들에게 잘 알려진 것처럼, 장치내 리던던시 데이터(220)는 데이터(210) 내의 선택된 비트 정보에 임의의 작용을 수행함으로써 얻을 수 있다. 장치내 리던던시 데이터(220)에 저장하기 위한 패리티 정보를 얻기 위해, XOR 기반의 연산을 사용할 수 있다. 장치내 리던던시 방안의 다른 예로는 단일 패리티 검사(single parity check; SPC), MDS 말소 코드(maximum distance separable erasure codes), 인터리빙 방식의 패리티 검사 코드(interleaved parity check codes; IPC), 하이브리드 방식의 SPC 및 MDS 코드(MDS+SPC) 및 CDP(column diagonal parity)가 있다. 상기 방식들은, 데이터(220)가 연산되는 방법에 따른 오버헤드 및 산출된 안정성(delivered reliability) 측면에서 다르다. 상기 설명한 리던던시 정보 외에도, 시스템은 장치의 영역에 대한 체크섬 값(checksum value)을 계산하도록 구성될 수 있다. 예를 들어, 장치가 정보를 기록할 때 체크섬을 계산할 수 있다. 이러한 체크섬은 시스템에 의해 저장된다. 상기 정보가 상기 장치로부터 다시 판독될 때, 상기 시스템은 체크섬을 다시 계산하고 이를 원래 저장된 값과 비교할 수 있다. 만약 상기 두 체크섬이 다르면, 상기 정보는 올바로 판독된 것이 아니며, 상기 시스템은 데이터를 복구하기 위해 다른 방식을 사용할 수 있다. 체크섬 함수의 예로는 순환 리던던시 검사(cyclical redundancy check; CRC), MD5 및 SHA-1이 있다.
스트라이프들(250a 내지 250c)에 도시된 것처럼, 임의의 주어진 스트라이프 내에서 데이터(210)를 저장하기 위해 사용하는 페이지의 수 또는 폭은 각 저장 장치(176a 내지 176k)에서 같을 수 있다. 그러나 스트라이프들(250b 및 250c)에 도시된 것처럼, 임의의 주어진 스트라이프 내에서 장치내 리던던시 데이터(220)를 저장하기 위해 사용하는 페이지의 수 또는 폭은, 각 저장 장치(176a 내지 176k)에서 같지 않을 수 있다. 일실시예에서, 임의의 주어진 저장 장치의 성향 또는 특성의 변화는, 적어도 어느 정도는, 해당하는 장치내 리던던시 데이터(220)를 저장하기 위해 사용하는 폭을 결정할 수 있다. 예를 들어, 상기 설명한 것처럼, 플래시 셀에서 프로그램 교란 오류 및 판독 교락 오류(read disturb errors)가 발생할 수 있는데, 임의의 페이지를 프로그래밍하거나 판독하는 것이 주변 페이지에 교란을 일으킬 수 있고, 이러한 주변 페이지 내에서 오류를 일으킬 수 있다. 저장 장치가 노화되고 더 많은 오류가 양산될 때, 해당 장치내 리던던시 데이터(220)의 크기가 증가할 수 있다. 예를 들어, 스트라이프(250b)에 대한 기록 연산에 앞서, 각 저장 장치(176a 내지 176k)의 특성이 모니터링될 수 있으며 증가하는 오류율을 예측하기 위해 사용될 수 있다. 저장 장치들(176c 및 176j)에 대한 예측되는 오류의 증가를 감지할 수 있다. 이에 대응하여, 장치내 리던던시 데이터(220)의 크기가 저장 장치들(176c 및 176j)에 대해 증가할 수 있다. 도 2의 스트라이프들(250a 및 250b)의 예에서, 스트라이프들(250a 및 250b)에 대한 저장 장치들(176c 및 176j)에 대해서, 저장된 보호 데이터 크기의 증가를 볼 수 있다. 예를 들어, 단일 패리티로 저장 장치들(176c 및 176j)을 보호하기보다는 이중 패리티 또는 삼중 패리티를 사용하여 이러한 장치들을 보호할 수 있다. 장치들(176c 및 176j)에 대한 장치내 보호 크기의 증가로 인해, 같은 스트라이프의 다른 장치에서 상응하는 증가가 필요하게 되는 것은 아님에 주의해야 한다. 오히려 스트라이프에 대한 데이터는, 기대한 바대로 각 장치에서 다른 보호 수준을 가질 수 있다.
다양한 실시예에서, 데이터 보호의 임의의 주어진 수준의 증가 또는 감소는 선택적 기준에 따라 발생한다. 일실시예에서, 예를 들어 상기 예에서의 저장 장치들(176c 및 176j)과 같이, 더 많은 오류가 발생하는 것으로 검출된 저장 장치에 한해 보호 수준의 증가가 나타날 수 있다. 또 다른 실시예에서는, 저장 장치들(176c 및 176j)에서 더 많은 오류가 발생하는 것으로 검출될 때, 각 저장 장치(176a 내지 176k)에 대한 보호 수준의 증가가 나타날 수 있다. 일실시예에서, 장치(176k)와 같은 패리티 장치에 대한 장치내 보호 크기가 증가하려면, 스트라이프 내에서 보호되는 데이터 크기의 감소가 필요할 수 있다. 예를 들어, 임의의 주어진 스트라이프에 대한 패리티 장치에 저장된 장치내 데이터의 크기가 증가하면, 상기 스트라이프 내의 데이터에 대한 상기 장치에 의해 저장된 패리티 데이터의 크기가 필연적으로 감소할 것이다. 만약 스트라이프의 모든 데이터를 포함하기 위해 필요한 것보다 작은 크기로 패리티 데이터의 크기가 감소한 경우, 지속적인 패리티 보호가 필요하다면 스트라이프 내의 데이터는 감소 되어야만 한다. 스트라이프 내에 저장되는 데이터의 크기를 감소시키는 것의 대안으로써, 패리티 데이터를 저장하기 위해 다른 장치를 선택할 수 있다. 다양한 옵션이 가능하며 고려할 수 있다. 도 2 및 본 명세서에서 설명하는 다른 도면은 (예를 들어, 176k와 같은) 별개의 패리티 장치를 도시하지만, 다양한 실시예에서 상기 패리티는 단일의 장치에 저장되기보다는 복수의 장치에 걸쳐 분산될 수 있음을 또한 유의하여야 한다. 따라서 도면에서 별개의 패리티 장치의 묘사는, 일반적으로 쉬운 논의를 위한 논리적인 묘사로 여겨질 수 있다.
이제 도 3을 참조하면, 데이터 저장 서브시스템에서 내부 데이터의 보호를 조정하기 위한 방법(300)의 일실시예가 도시되어 있다. 상기 설명한 네트워크 구조(100) 및 데이터 저장 어레이들(120a 및 120b)에서 구체화되는 구성 요소들은 방법(300)에 따라 일반적으로 동작할 수 있다. 본 실시예의 단계들은 순차적인 순서로 도시된다. 그러나 일부 단계는 도시된 것과 다른 순서로 실행할 수 있으며, 일부 단계는 동시에 수행될 수 있고, 일부 단계는 다른 단계와 결합할 수 있으며, 일부 단계는 또 다른 실시예에서는 생략될 수 있다.
블록(302)에서, 저장 장치에 사용자 데이터를 저장하기 위한 제1 크기의 공간이 결정된다. 데이터(210)에 관해 이전에 설명한 것처럼, 이 사용자 데이터는, 최종 사용자 응용례 또는 RAID 구조에서 사용하는 장치내 패리티 정보에 사용하는 데이터가 될 수 있다. 이전에 설명한 것처럼, 이 제1 크기의 공간은 저장 장치 내에서 하나 이상의 페이지를 포함할 수 있다. 일실시예에서, 저장 컨트롤러(174) 내의 글로벌 RAID 엔진(178)은 각 저장 장치(176a 내지 176m) 중 하나로부터 성향에 관한 통계자료를 수신한다. 둘 이상의 저장 장치(176a 내지 176m)를 포함하는 임의의 주어진 장치 그룹에 대해, 글로벌 RAID 엔진(178)은, 둘 이상의 각 저장 장치 내에서 관리하는 내부 데이터의 리던던시의 초기 크기 및 RAID 데이터 레이아웃 둘 다를 결정할 수 있다. 블록(304)에서, RAID 엔진(178)은, 저장 장치에 해당 장치내 보호 데이터를 저장하기 위한 제2 크기의 공간을 결정할 수 있다. 제2 크기의 공간은 저장 장치 내에서 하나 이상의 페이지를 포함할 수 있다. 장치내 보호 데이터는 이전에 설명한 장치내 리던던시 데이터(220)와 일치할 수 있다.
블록(306)에서, 데이터는, 임의의 주어진 장치 그룹 내에 포함된 각 저장 장치내 제1 크기의 공간에 기록된다. 일실시예에서, 임의의 주어진 장치 그룹 내에 포함된 복수의 저장 장치에 걸친 단일 RAID 스트라이프로서, 사용자 데이터 및 장치내 패리티 정보 둘 다가 기록된다. 다시 도 2를 참조하면, 기록되는 해당 데이터에 대한 폭은 각 저장 장치 내에서 같다. 블록(308)에서, 장치내 보호 데이터는 ECC 알고리즘, XOR 기반의 알고리즘 또는 다른 적합한 알고리즘에 의해 생성된다. 또한, 시스템은, 올바르게 검색되지 않은 데이터의 식별을 돕기 위한 체크섬을 생성할 수 있다. 블록(310)에서, 생성된 장치내 보호 데이터는 저장 장치의 제2 크기의 공간에 기록된다.
블록(312)에서, RAID 엔진(178)은 하나 이상의 저장 장치의 성향을 모니터링할 수 있다. 일실시예에서, RAID 엔진(178)은, 해당하는 저장 장치의 모델을 포함할 수 있으며 상기 모델에 입력하기 위해 저장 장치로부터 성향에 관한 통계자료를 수신할 수 있다. 상기 저장 장치의 알려진 특성을 이용함으로써, 상기 모델은 상기 저장 장치의 성향을 예측할 수 있다. 예를 들어, 임의의 주어진 저장 장치에 대해, 상기 모델은 향후 증가할 오류율을 예측할 수 있다. (조건 블록(314)에서) 만약 RAID 엔진(178)이, 안정성에 영향을 주는 임의의 주어진 저장 장치의 특성을 검출한다면, 블록(316)에서, 데이터 및 해당하는 장치내 리던던시 데이터를 저장하기 위한 제1 크기 및 제2 크기의 공간을 RAID 엔진이 조정할 수 있다. 예를 들어, RAID 엔진은, 적어도 장치의 사용기간, 액세스율 및 오류율과 같은 이전에 설명한 통계자료를 모니터링할 수 있다. 다시 도 2를 참조하면, RAID 엔진(178)은 오류 횟수가 증가하는 저장 장치들(176c 및 176j)을 검출할 수 있다. 이와는 달리, RAID 엔진은 저장 장치들(176c 및 176j)에 대한 오류 횟수의 증가를 예측할 수도 있다. 따라서, 제2 스트라이프(250b)를 기록하기 전에, RAID 엔진(178)은 각 저장 장치(176a 내지 176k)에서 데이터(210) 및 데이터(220)를 저장하기 위해 사용하는 페이지의 숫자를 조정할 수 있다. 유사하게, RAID 엔진(178)은 저장 장치(176b)의 안정성이 감소한 것을 검출할 수 있다. 따라서, 제3 스트라이프(250c)를 기록하기 전에, RAID 엔진(178)은 각 저장 장치(176a 내지 176k)에서 데이터(210) 및 데이터(220)를 저장하기 위해 사용하는 페이지의 숫자를 다시 조정할 수 있다.
저장 장치 특성의
모니터링
이제 도 4로 돌아가 보면, 저장 서브시스템의 일실시예의 일반적인 블록도가 도시되어 있다. 하나 이상의 저장 장치(176a 내지 176m)의 각각은 하나 이상의 장치 그룹(173a 내지 173m) 중 하나로 구분될 수 있다. 다른 장치를 구비한 다른 장치 그룹들 또한 존재할 수 있다. 각 저장 장치에 대한 하나 이상의 해당 연산 큐(operation queues) 및 상태 테이블이 장치 유닛들(400a 내지 400w) 중 하나에 포함될 수 있다. 이러한 장치 유닛들은 RAM(172)에 저장될 수 있다. 각 장치 그룹(173a 내지 173m) 중 하나에 대해 해당 RAID 엔진들(178a 내지 178m)이 포함될 수 있다. 각 RAID 엔진(178)은 해당하는 장치 그룹 내에 포함된 각 저장 장치에 대한 통계자료를 추적하는 모니터(410)를 포함할 수 있다. 데이터 레이아웃 로직(420)은 사용자 데이터, 장치 간의 리던던시 데이터 및 장치내 리던던시 데이터에 대해, 해당하는 저장 장치 내에 할당되는 공간의 크기를 결정할 수 있다. 저장 컨트롤러(174)는, 마모도 평준화(wear leveling), 가비지 수집(garbage collection), I/O 스케줄링, 입, 출력 패킷에 대한 데이터 중복 제거(deduplication) 및 프로토콜 변환과 같은 작업들 중 적어도 하나를 수행하기 위해 다른 제어 로직(control logic; 430)을 포함할 수 있다.
이제 도 5로 돌아가 보면, 장치 유닛의 일실시예의 일반적인 블록도가 도시되어 있다. 장치 유닛은 장치 큐(device queue; 510) 및 테이블(tables; 520)을 포함할 수 있다. 장치 큐(510)는 판독 큐(512), 기록 큐(514) 및 다른 연산 큐(516)와 같이 하나 이상의 다른 큐를 포함할 수 있다. 각각의 큐는 하나 이상의 해당 요청(530a 내지 530d)을 저장하기 위한 복수의 엔트리(entries)를 포함할 수 있다. 예를 들어, 해당 SSD에 대한 장치 유닛은 적어도 판독 요청, 기록 요청, 트림 요청(trim requests), 삭제 요청 등을 저장하기 위한 큐를 포함할 수 있다. 테이블(520)은 하나 이상의 상태 테이블(522a 및 522b)을 포함할 수 있으며, 각각은 상태 데이터 또는 통계자료(530)를 저장하기 위한 복수의 엔트리를 포함한다. 큐 및 테이블은 본 도면 또는 다른 도면에서 특별한 숫자의 엔트리를 포함하는 것으로 도시되어 있는 반면, 엔트리 그 자체는 서로 부합할 필요가 없다는 점 또한 유의해야 한다. 또한, 큐, 테이블 및 엔트리의 숫자는 도면에 도시된 것과 다를 수 있으며, 서로 다를 수도 있다.
이제 도 6을 참조하면, 임의의 주어진 장치에 해당하는 상태 테이블의 일실시예를 도시하는 일반적인 블록도가 나타나 있다. 일실시예에서, SSD와 같은 임의의 주어진 저장 장치에 대해, 이와 같은 테이블은 상태, 오류 및 마모 정도의 정보에 해당하는 데이터를 포함할 수 있다. 해당 RAID 엔진은 이러한 정보에 액세스할 수 있으며, 이는 장치 간의 보호 및 장치내 보호를 위해 사용하는 데이터 저장 및 방식에 대해, RAID 엔진이 할당된 공간을 동적으로 변경할 수 있도록 한다. 일실시예에서, 상기 정보는 적어도 하나 이상의 장치의 사용기간(602), 오류율(604), 장치에서 검출된 총 오류의 수(606), 복구 가능한 오류의 수(608), 복구 불가능한 오류의 수(610), 장치의 액세스율(612), 저장된 데이터의 저장기간(614) 및 공간 할당을 위한 하나 이상의 할당 상태(616a 내지 616n)를 포함할 수 있다. 할당 상태는 가득참(filled), 빔(empty), 오류 등을 포함할 수 있다.
플렉서블
RAID
레이아웃(
Flexible
RAID
Layout
)
이제 도 7로 돌아가 보면, 플렉서블 RAID 데이터 레이아웃의 일실시예를 도시하는 일반적인 블록도가 나타나 있다. RAID 엔진은 저장 장치들(176a 내지 176k)을 위해 사용하는 보호의 수준을 결정할 수 있다. 예를 들어, RAID 엔진은 저장 장치들(176a 내지 176k)을 위해 RAID 이중 패리티를 이용할지를 결정할 수 있다. 장치 간의 리던던시 데이터(240)는 해당 사용자 데이터로부터 생성된 RAID 이중 패리티 값을 나타낸다. 일실시예에서, 저장 장치들(176j 및 176k)은 이중 패리티 정보를 저장할 수 있다. 다른 수준의 RAID 패리티 보호가 가능하며, 고려할 수 있음을 이해할 수 있다. 또한, 다른 실시예에서, 이중 패리티 정보의 저장은, 각 RAID 스트라이프에 대한 저장 장치들(176j 및 176k) 내에 저장되기보다는 오히려 저장 장치들 사이에서 순환할 수 있다. 도시 및 설명을 쉽게 하기 위해, 이중 패리티 정보의 저장이 저장 장치들(176j 및 176k)에 저장되는 것으로 도시된다.
이제 도 8을 참조하면, 플렉서블 RAID 데이터 레이아웃의 또 다른 실시예를 도시하는 일반적인 블록도가 나타나 있다. 도 7에 도시된 예와 유사하게, 이중 패리티를 저장 장치들(176a 내지 176k)에 대해 사용할 수 있다. 비록 RAID 이중 패리티를 본 실시예에서 설명하지만, RAID 데이터 레이아웃 구조에서는 어떠한 크기의 리던던시도 선택할 수 있다.
동작하는 동안, RAID 엔진(178)은 저장 장치들(176a 내지 176k)의 특성을 모니터링할 수 있고, 장치가 초기 또는 임의의 주어진 안정성 수준보다 더 높은 수준의 안정성을 나타내는지 판단할 수 있다. 이에 대응하여, RAID 엔진(178)은 RAID 이중 패리티로부터 RAID 단일 패리티로 RAID 보호를 변경할 수 있다. 다른 RAID 데이터 레이아웃 구조에서, 지원되는 리던던시의 크기가 추가로 감소할 수 있다. 다른 실시예에서, 저장 장치들(176a 내지 176k)의 모니터링 및 보호 수준의 변경은 저장 컨트롤러(174) 내의 다른 로직에 의해 수행될 수 있다.
상기 예를 계속 살펴보면, 단지 단일 패리티 정보만이 임의의 주어진 RAID 스트라이프 상에서 실행되는 이후의 기록 연산을 위해 생성되고 저장될 수 있다. 예를 들어, 지원되는 리던던시의 크기가 변한 후에는, 저장 장치(176k)는 기록 연산을 위해 이후의 RAID 스트라이프에서 사용될 수 없다. 또한, 저장 장치(176k)에 저장된 데이터를 무효화할 수 있으며, 저장공간을 해제(freeing)하게 된다. 저장 장치(176k)에서 해제된 데이터에 해당하는 페이지는 이후 다른 사용을 위해 재할당될 수 있다. 패리티 보호의 크기를 줄이고, 패리티 보호 데이터를 저장하기 위해 과거에 사용된 공간을 해제하는 과정을 "패리티 분해(parity shredding)"라고 칭할 수 있다. 또한, 일실시예에서, 저장 소자(176k)는 SSD이며, 스트라이프(250a) 내의 페이지를 재기록하기 전에, 하나 이상의 삭제 연산이 저장 장치(176k) 내에서 실행될 수 있다.
상기 패리티 분해의 예를 계속 살펴보면, 패리티 분해 이후 스트라이프(250a) 내에서 저장 장치(176k)의 재할당된 페이지에 저장된 데이터는, 스트라이프(250a)에 해당하지 않는 다른 RAID 스트라이프에 대한 RAID 단일 패리티 정보 또는 사용자 데이터를 보유할 수 있다. 예를 들어, 스트라이프(250a) 내의 저장 장치(176a 내지 176j)에 저장된 데이터는, 패리티 분해 전에 실행되는 하나 이상의 기록 연산에 해당할 수 있다. 스트라이프(250a) 내의 저장 장치(176k)에 저장된 데이터는, 패리티 분해 이후에 실행되는 하나 이상의 기록 연산에 해당할 수 있다. 유사하게, 스트라이프(250b) 내의 저장 장치(176a 내지 176j)에 저장된 데이터는 패리티 분해 전에 실행되는 하나 이상의 기록 연산에 해당할 수 있다. 스트라이프(250b) 내 저장장치(176k)의 페이지는 해제될 수 있으며, 이후 삭제될 수 있고, 이후 지원되는 리던던시의 크기 변경 이후에 실행되는 하나 이상의 기록 연산에 해당하는 데이터로 재기록될 수 있다. 리던던시 정보가 저장 장치들 사이에서 순환할 때, 이러한 방식이 훨씬 더 효과적임에 유의해야 한다. 이와 같은 실시예에서, 분해에 의해 해제된 공간은 저장장치들 간에 유사하게 분배될 것이다.
다시 도 8을 참조하면, 스트라이프(250c) 내의 저장 장치(176k)에 도시된 할당이 해제된(deallocated) 페이지는, 패리티 분해 전에 RAID 이중 패리티 정보가 과거에 저장될 수 있었던 저장 위치를 나타낸다. 그러나 이제 이러한 페이지는 무효(invalid)가 되며 아직 재할당되지도 않았다. SSD의 특별한 특성은 상기 예에서 저장 장치(176k) 내의 페이지를 해제하고 재할당하는 타이밍 및 방법을 결정한다. 이러한 특성의 예는, 하나 이상의 페이지를 재프로그래밍하기 (재기록하기) 전에 삭제 블록 전체를 삭제하는 것을 적어도 포함한다. 도 8에 도시된 것처럼, 패리티가 분해될 때, 장치 전체를 분해할 필요는 없다. 오히려, 기대하는 것처럼, 패리티는 개별적인 스트라이프에 대해 분해될 수 있다. 유사하게, 추가적인 장치에 저장된 보호 데이터를 스트라이프에 부가함으로써 스트라이프에 대한 패리티 보호가 증가할 수 있다.
이제 도 9를 참조하면, RAID 레이아웃을 동적으로 결정하는 방법의 일실시예가 도시되어 있다. 상기 설명한 네트워크(100) 및 데이터 저장 어레이들(120a 및 120b)은 방법(900)에 따라 일반적으로 동작할 수 있다. 도 9에는, 두 개의 과정(910 및 920)이 도시되어 있다. 각 과정은 동시에 또는 임의의 주어진 순서로 실행될 수 있다. 더욱이 본 실시예의 단계들은 순차적인 순서로 도시되어 있다. 그러나 일부 단계는 도시된 것과 다른 순서로 실행될 수 있고, 일부 단계는 동시에 수행될 수 있고, 일부 단계는 다른 단계와 결합 될 수 있으며, 일부 단계는 또 다른 실시예에서는 생략될 수 있다. 블록(910)은 과정을 도시하는데, 저장 제어 시스템(storage control system)은 시스템 내의 저장 장치의 성향 및 특성을 모니터링하게 된다(블록(912)). 예를 들어, 도 6에서 설명한 것과 같은 특성들을 관찰하고 기록하며 또는 이들 중 어느 하나를 수행한다. 만약 안정성의 변동과 같은 특정 조건이 감지되면(판단 블록(914)), 저장된 데이터에 사용되는 보호의 크기가 변경될 수 있다(블록(916)). 예를 들어, 임의의 주어진 장치가 상대적으로 사용기간이 짧으면, 장치의 안정성을 파악할 수 없을 수도 있다(예로서, 장치에 "초기 결함(infant mortality)"이 발생할 수 있으며 상대적으로 이른 시기에 고장 날 수 있다). 따라서 패리티 정보를 저장하기 위해, RAID 스트라이프 당 하나 이상의 추가적인 저장 장치를 사용할 수 있다. 나중에 장치가 안정성이 있음이 시간을 통해 증명될 때, 추가적인 보호를 하지 않을 수 있다. 다양한 실시예에서, 장치에 대해 오류율과 관련된 특성을 관리할 수 있다. 예를 들어, 수정 가능 또는 불가능한 오류에 관한 특성은, 임의의 주어진 장치의 안정성에 관한 판단을 하기 위해 사용되고 관리될 수 있다. 이러한 정보를 바탕으로, 저장 컨트롤러는 장치 또는 스트라이프에 대한 보호 수준을 다양하게 변경한다.
도 9의 블록(920)은 일반적으로 과정을 도시하는데, 스트라이프 또는 저장매체의 다른 부분이 할당될 때에(판단 블록(922)), 데이터를 위해 사용하는 레이아웃 및 보호 수준에 관한 판단을 할 수 있다(블록(924)). 이때에 블록(910)의 과정이 수행될 수 있었음에 유의해야 한다. 대신에, 보호 수준은 과정(910)에 의해 결정되며 저장되어 있을 수 있다. 상기 저장된 데이터를 기반으로 블록(924)의 결정을 할 수 있었다. 일실시예에서, 일단 임의의 주어진 레이아웃이 결정되면, 레이아웃에 사용될 특정 장치는 장치의 그룹으로부터 선택할 수 있다(블록(925)). 예를 들어, 일실시예에서 20개의 장치로 된 그룹을 사용할 수 있다. 만약 5+2의 레이아웃이 결정되면, 20개인 그룹으로부터 임의의 7개의 장치를 사용하기 위해 선택할 수 있다. 또한, 선택한 5+2 레이아웃과 이후의 기록(a subsequent write)은 동일한 7개의 장치를 사용할 필요가 없음에 유의해야 한다. 레이아웃, 보호 수준 및 스트라이프를 위한 장치를 결정한 이후에, 스트라이프를 기록할 수 있다(블록(926)).
다양한 실시예에서, 임의의 주어진 스트라이프에 대한 리던던시 정보 및 데이터가 상주하게 될 장치를 어느 것으로 할지 결정하기 위해, RUSH 알고리즘을 사용할 수 있다. 예를 들어, 저장 장치(176a 내지 176k)에서 임의의 주어진 스트라이프에 대해 8+2 RAID 레이아웃을 위해 사용할 특정 장치를 선택하기 위해, RUSH 알고리즘을 사용할 수 있다. 일반적으로 보면, 본 명세서에서 사용하는 것처럼, M+N 레이아웃은 임의의 주어진 데이터 스트라이프에 대해 M개의 데이터 장치 및 N개의 패리티 장치를 포함하는 레이아웃을 형성할 수 있다. 또한, 상기 논의한 것처럼, 패리티는 특정 장치 내에 완전히 위치해 있기보다는 장치들에 걸쳐 분산될 수 있다. 그에 따라, 8+2 레이아웃은 10개의 장치에 걸쳐 스트라이핑된(striped) 패리티 및 데이터를 포함할 수 있는데, 장치들 중 8개는 데이터를 저장하고 장치들 중 2개는 패리티를 저장한다. 다음 과정에서는, 12+2 레이아웃을 선택할 수 있다. 이 방법에서는, 기록(예를 들어, 스트라이프)이 기록될 때, 원하는 레이아웃 및 보호 특성이 동적으로 결정될 수 있다. 일실시예에서, 저장 장치(176a 내지 176k)는 30개, 50개 또는 그 이상의 저장 장치와 같이, 10개 이상의 저장 장치를 포함할 수 있다. 그러나 8+2 레이아웃을 가진 스트라이프는 단지 10개의 저장 장치만을 사용할 수 있다. 스트라이프의 저장에 사용하기 위해, 임의의 10개의 장치를 선택할 수 있으며 상기 10개의 장치를 선택하기 위한 임의의 알고리즘을 선택할 수 있음에 유의해야 한다. 예를 들어, 저장 장치들(176a 내지 176k) 중 임의의 주어진 8+2 RAID 레이아웃에 사용할 어느 10개를 선택하기 위해서, CRUSH 알고리즘을 사용할 수 있었다.
저장 장치들(176a 내지 176k)에 대해 선택된 8+2 RAID 레이아웃 중 하나의 예에서, 저장 장치들 중 2개는 패리티 정보와 같은 에러 수정 코드(ECC)를 저장하기 위해 사용할 수 있다. 이러한 정보는 복원 판독 요청(reconstruct read requests)을 수행하기 위해 사용할 수 있다. 다시 도 8을 참조하면, 이러한 예에서, RAID 이중 패리티 정보를 저장하기 위해 저장 장치들(176j 및 176k)을 선택할 수 있다. 또한, 패리티 정보는, 같은 저장 장치에 지속적으로 저장되기보다는, RAID 어레이 내에 포함된 각 저장 장치(176a 내지 176k) 사이에서 순환되는 방식으로 저장될 수 있다. 도시 및 설명을 쉽게 하기 위해서, 저장 장치들(176j 및 176k)이 RAID 이중 패리티를 저장하는 것으로 설명하였다.
블록(926)에서, 기록 연산을 수행하는 동안, 메타데이터, 사용자 데이터, 장치내 패리티 정보 및 장치 간의 패리티 정보는, RAID 어레이 내에 포함된 복수의 저장 장치에 걸친 RAID 스트라이프로 기록할 수 있다. 블록(912)에서, RAID 엔진(178)은 RAID 어레이 내의 하나 이상의 저장 장치의 성향을 모니터링할 수 있다. 일실시예에서, 도 4에 도시된 것처럼, RAID 엔진(178)은 모니터(410) 및 데이터 레이아웃 로직(420)을 포함할 수 있다. RAID 엔진(178)은, 적어도 임의의 주어진 저장 장치의 사용기간, 오류의 횟수 및 형태, 마지막 데이터의 할당 이후에 감지된 구성의 변화, 임의의 주어진 데이터의 저장기간, RAID 어레이에서 현재 저장 공간의 활용 등을 모니터링할 수 있다.
RAID 엔진(178)에 의해 모니터링되는 데이터는, 도 4에 도시된 장치 유닛들(400a 내지 400w) 중 하나에서와 같이 RAM(172)에 저장될 수 있다. 도 5 및 도 6에서 도시된 예들과 같이, 이러한 데이터를 저장하기 위해 테이블을 사용할 수 있다. 저장 장치의 갱신된 통계자료를 모니터링함으로써, 해당 RAID 엔진 내에 포함된 로직은 저장 장치의 성향을 감지하고 예측할 수 있다. 예를 들어, 모델은 임의의 주어진 저장 장치에 대한 곧 있을 오류율의 증가(upcoming increasing error rate)를 예측할 수 있다.
만약 저장 장치의 안정성 증가가 감지되면 (조건 블록(914)), 블록(910)에서 RAID 엔진은 시스템 내의 데이터 보호 수준을 낮출 수 있다. 예를 들어, 일실시예에서 저장 서브시스템에 저장된 패리티 정보의 크기를 줄일 수 있다. 상기 예와 관련하여, 해당 8+2 RAID 어레이에 대해서 RAID 엔진은 RAID 이중 패리티를 RAID 단일 패리티로 축소할 수 있으며, 이를 8+1 RAID 어레이로 변환할 수 있다. 다른 예에서, 블록(916) 이전의 RAID 구조에서 임의의 주어진 RAID 어레이는 N-레벨의 리던던시 크기 또는 패리티를 사용하고 있을 수 있다. 블록(916)에서, RAID 엔진은 (N-m)-레벨의 리던던시 크기를 사용할지를 결정할 수 있는데, 여기서 N > 1이고, 1 < m < N 이다. 따라서, 임의의 주어진 RAID 스트라이프에 대한 이후의 기록 연산을 수행하는 동안, 임의의 주어진 RAID 스트라이프 내에 기록되는 m 보다 작은 수의 저장 장치가 있을 수 있다.
시스템 내의 데이터 보호 수준을 낮추기 위해서, RAID 엔진(또는 다른 구성 요소)은 이전에 설명한 것처럼 패리티 분해를 수행할 수 있다. 이어서, 이후의 기록 연산에 사용하기 위해, 저장 컨트롤러(174)는 분해 작업의 결과로 해제된 페이지를 재할당할 수 있다.
각 저장 장치(176a 내지 176k)가 노화되고 데이터로 채워지는 동안, 추가적인 패리티 정보가 상기 설명한 것처럼 RAID 어레이로부터 제거될 수 있다. 메타데이터, 사용자 데이터, 해당하는 장치내 리던던시 정보 및 장치 간의 리던던시 정보의 일부가 남아있게 된다. 8+2 RAID 어레이를 갖는 상기 예와 관련해서는, 저장 장치들(176a 내지 176j)에 저장된 정보가 남아있게 된다. 그러나 추가적인 장치 간의 리던던시 정보 또는 추가적인 패리티 정보는 RAID 어레이로부터 제거될 수 있다. 예를 들어, 저장 장치(176k)에 저장된 추가적인 패리티 정보는 RAID 스트라이프로부터 제거될 수 있다.
저장 장치들(176a 내지 176j)에 저장된 정보와 같이, 남아있는 정보는 그 자리에 유지될 수 있다. 상기 예에서의 저장 장치(176k)의 해당 페이지와 같이, 추가적인 패리티 정보를 저장하고 있는 저장 공간은 이후의 기록 연산을 위해 재사용되고 재할당될 수 있다. 일실시예에서, 각각의 새로운 할당은 새로운 가상의 주소를 받게 된다. 각각의 새로운 할당은 임의의 정해진 크기, 임의의 정해진 정렬 또는 지오메트리를 가질 수 있으며, (가상이든 또는 물리적이든) 임의의 정해진 저장 공간에 맞아 들어갈 수 있다. 일실시예에서, 각 저장 장치(176a 내지 176k) 중 하나 및 저장 장치내 각 할당된 페이지는, 식별 정보를 포함하는 헤더를 가진다. 임의의 주어진 구성의 변경 없이, 이 식별 정보는 해제된 추가적인 패리티 정보에 대한 저장 공간의 재사용을 허용할 수 있다.
일실시예에서, 하나 이상의 저장 장치(176a 내지 176k)는 SSD이며, 삭제 블록 내의 하나 이상의 페이지를 재프로그래밍하기 이전에 삭제 블록은 삭제된다. 그러므로 일실시예에서, 저장 장치(176k)는 SSD이며, 해당하는 삭제 블록은 저장 장치(176k)에서 해제된 페이지를 재프로그래밍하기 이전에 삭제된다. 원래의 8+2 RAID 어레이와 함께 상기 예와 관련하여, 데이터(210)로 페이지를 재프로그래밍하기 이전에 스트라이프들(250a 및 250b) 내의 저장 장치(176k)에서, 하나 이상의 삭제 블록이 삭제된다. 이제 상기 원래의 8+2 RAID 어레이는, 패리티 분해 이전에 기록된 RAID 스트라이프에 대한 단일 패리티 정보를 제공하는 저장 장치(176j)를 구비한 8+1 RAID 어레이가 된다.
당해 기술분야에서 통상의 지식을 가진 사람들에게 잘 알려진 것처럼, 임의의 주어진 저장 장치에 대한 판독 또는 기록 장애가 있는 동안, 해당 RAID 스트라이프 내에서 지원되는 장치 간의 패리티 정보로부터 데이터가 복원될 수 있다. 복원된 데이터는 저장 장치에 기록될 수 있다. 그러나 만약 복원된 데이터가 저장 장치에 기록되지 못하게 되면, 저장 장치에 저장된 모든 데이터가 해당하는 패리티 정보로부터 재건될 수 있다. 재건된 데이터는 다른 위치로 이전될 수 있다. 플래시 메모리를 사용함으로써, 플래시 변환 계층(Flash Translation Layer; FTL)이 데이터의 저장 위치를 재배치(remap)한다. 또한, 플래시 메모리를 사용함으로써, 데이터의 이전은 삭제 블록 내의 해당 페이지를 재프로그래밍하기 이전에 삭제 블록 전체를 삭제하는 것을 포함한다. 삭제 블록 대 페이지의 단위로 매핑 테이블을 관리하는 것은, 재배치한 테이블을 더욱 간결하게 할 수 있다. 더욱이, 이전하는 동안, 패리티 분해 과정에서 해제된 추가적인 페이지를 사용할 수 있다.
오프셋 패리티(
Offset
Parity
)
이제 도 10으로 돌아가 보면, 플렉서블 RAID 데이터 레이아웃 구조의 또 다른 실시예를 도시하는 일반적인 블록도가 나타나 있다. 도 8에 도시된 일반적인 블록도와 유사하게, 플렉서블 RAID 데이터 레이아웃 구조를 사용할 수 있다. 저장 장치들(176a 내지 176k)은 복수의 저장 장치에 걸쳐 펼쳐진 복수의 RAID 스트라이프를 포함한다. 비록 각 저장 장치(176a 내지 176k)는 복수의 페이지를 포함하지만, 단지 페이지(1010) 및 페이지(1020)만이 쉽게 도시하기 위해 표시되어 있다. 도시된 예에서, 이중 패리티 RAID 데이터 레이아웃이 선택되었으며, 저장 장치들(176j 및 176k)이 이중 패리티 정보를 저장한다.
저장 장치들(176a 내지 176k)에서의 각 페이지는 특정 데이터 형태를 저장한다. 일부 페이지는 사용자 데이터(210) 및 생성된 해당 장치 간의 패리티 정보(240)를 저장한다. 다른 페이지는 생성된 해당 장치내 패리티 정보(220)를 저장한다. 그러나 다른 페이지는 메타데이터(242)를 저장한다. 메타데이터(242)는 페이지 헤더 정보, RAID 스트라이프의 식별 정보, 하나 이상의 RAID 스트라이프에 대한 로그 데이터(log data) 등을 포함할 수 있다. 장치 간의 패리티 보호 및 장치내 패리티 보호뿐만 아니라, 저장 장치들(176a 내지 176k)에서의 각 페이지는 임의의 주어진 각 페이지 내에 저장된 체크섬과 같은 추가적인 보호를 포함할 수 있다. 다양한 실시예에서, 각 스트라이프의 시작 부분에서의 단일의 메타데이터 페이지는 다른 스트라이프 헤더로부터 재건될 수 있다. 그렇지 않으면, 데이터가 장치 간의 패리티에 의해 보호될 수 있도록, 이러한 페이지는 패리티 샤드(shard)에서의 다른 오프셋에 존재할 수 있다. "샤드"는 장치의 일부분을 나타낸다. 따라서, 패리티 샤드는 패리티 데이터를 저장하는 장치의 일부분을 칭한다.
물리 계층(
Physical
Layer
)
다양한 실시예에서, 본 명세서에서 설명한 시스템은, 상기 시스템의 다른 요소들이 저장 장치와 연통되는 물리 계층을 포함할 수 있다. 예를 들어, 소프트웨어 및 하드웨어 또는 이들 중 어느 하나의 임의의 적절한 조합을 포함하는 물리 계층을 통해서, 스케줄링 로직, RAID 로직 및 다른 로직은 저장 장치와 연통할 수 있다. 일반적으로 물리 계층은, 영구 저장장치(persistent storage)로의 액세스를 제공하는 것 및 데이터 저장의 집적도(integrity of data storage)와 관련된 기능을 수행하는 것을 포함한 다양한 기능을 수행한다.
도 11a는 500GB 장치에 대한 가상의 장치의 레이아웃의 일실시예를 도시하고 있다. 다양한 실시예에서, 본 명세서에서 설명한 저장 장치는, 장치의 시작 부분에서의 파티션 테이블(partition table; 1101) 및 장치의 끝 부분에서의 파티션 테이블의 복사본에 의해 포맷(format)될 수 있다. 또한, 장치의 헤더(1103)는 첫 번째 및 마지막 블록에 저장될 수 있다. 예를 들어, 플래시 기반의 저장 장치에서, 장치의 헤더는 첫 번째 및 마지막 삭제 블록에 저장될 수 있다. 이전에 논의한 것처럼, 삭제 블록은 일반적으로 256KB 내지 1MB의 범위에 있는 플래시 구조(flash construct)이다. 첫 번째 삭제 블록에서의 추가적인 미사용 공간은 유보될 수 있다 (패딩(padding); 1105). 각 장치에서의 두 번째 삭제 블록은 기록 로깅 및 진단 정보(writing logging and diagnostic information; 1107)를 위해 유보될 수 있다. 사이에 있는 나머지 삭제 블록은, 복수의 삭제 블록의 할당 유닛(Allocation Units; AUs)(1109)으로 분할된다. 양호한 할당 단위를 위해 장치당 합리적인 숫자의 AU가 있도록, AU의 크기를 정할 수 있다. 일실시예에서, 추적을 쉽게 하기 위해 너무 많은 유닛으로는 불가하나, 오버헤드를 피할 만큼의 충분히 많은 유닛으로의 할당을 허용하도록, 장치에는 10,000개의 범위의 AU가 존재할 수 있다. AU의 상태(할당됨/해제/삭제됨/나쁨)의 추적은 AU 상태 테이블에서 관리될 수 있다. 임의의 AU의 마모 정도는 마모 수준 테이블(Wear Level Table)에서 관리될 수 있으며, 오류의 수는 AU 오류 테이블(Error Table)에서 관리될 수 있다.
다양한 실시예에서, 물리 계층은, (다른 노드들에 존재하였을 수 있는) 장치들의 세트에 걸쳐 각 장치에 하나의 세그먼트 샤드를 포함하는 세그먼트에 공간을 할당한다. 도 11b는 하나의 가능한 세그먼트 레이아웃에서, 세그먼트 및 해당 세그먼트의 다양한 식별가능한 부분의 일실시예를 도시한다. 세그먼트 내에 저장된 데이터의 형태를 도시하는 범례(legend)가 또한 포함되어 있다. 도시된 실시예에서, 단일의 세그먼트가 복수의 장치에 저장되어 나타난다. 도시된 것은 데이터 0 내지 데이터 N의 데이터 장치들 및 패리티 P 및 패리티 Q의 패리티 장치들이다. 일실시예에서, 각 세그먼트 샤드는 장치에서 하나 이상의 할당 유닛을 포함하여, 샤드의 크기는 각 장치에서 같아진다. 세그먼트 샤드(1123)는 세그먼트 샤드를 도시하기 위해 호출되었다. 또한, 도 11b에서는, 페이지에 해당하는 일실시예인 I/O 판독 크기(read size; 1127)가 도시되어 있다. I/O 샤드를 위한 페이지 패리티의 하나 이상의 페이지를 포함할 수 있는 I/O 패리티 청크(parity chunk; 1129)가 또한 도시되어 있다.
일실시예에서, 각 세그먼트는 하나 이상의 다음과 같은 파라미터를 포함할 수 있는 자신만의 지오메트리를 가지게 된다.
(1) RAID 수준 - 세그먼트에서 장치 간 교차 보호(cross device protection)를 위해 사용되는 RAID 수준. 이는 미러링, 패리티 또는 ECC RAID 및 얼마나 많은 세그먼트 샤드가 패리티를 포함할지를 결정할 수 있다.
(2) 장치 레이아웃의 I/O 샤드의 크기 - 이는, 기록을 수행하는 동안 각 장치에 걸쳐 스트라이프하기 위해 사용되는 크기를 나타낸다. 이는 일반적으로 256KB 내지 1MB의 범위에 있게 되며, 아마도 각 장치에서 복수의 삭제 블록의 크기가 될 것이다. 도 11b는 도시의 목적으로 I/O 샤드 크기(1125)를 호출한다.
(3) I/O 판독 크기 - 이는 논리적 판독 크기이다. 각 I/O 샤드는 일련의 논리적 페이지로 포맷될 수 있다. 각 페이지는, 페이지의 데이터를 위해 헤더 및 체크섬을 차례로 포함할 수 있다. 판독이 제기(issue)될 때, 이는 하나 이상의 논리적 페이지를 위해 존재하게 되며, 각 페이지에서의 데이터는 체크섬에 의해 유효화될 수 있다.
(4) I/O 샤드 RAID 수준 - I/O 샤드는, 재건하는 동안 발견되는 지연시간 오류(latent errors)를 다루기 위해 샤드내 패리티(intra-shard parity)를 가진다. 이 파라미터는, 샤드내 보호를 위해 어떠한 형태의 패리티가 사용되는지, 그에 따라 얼마나 많은 샤드내 패리티의 복사본을 관리할 것인지를 결정한다.
(5) I/O 패리티 청크 - 다양한 실시예에서, 저장 장치는 페이지 단위로 ECC를 실행한다. 따라서, 만약 오류가 나타나면, 물리적 페이지 전체의 장애를 나타낼 확률이 높다. I/O 패리티 청크는, 세그먼트의 각 장치에서의 최소한의 공통된 복수의 물리적 페이지의 크기이며, 샤드내 패리티는 I/O 패리티 청크 또는 I/O 판독 크기 중 더 큰 쪽에서의 I/O 샤드를 떼어내서 계산할 수 있다. 페이지 패리티의 하나 이상의 페이지를 포함할 수 있다. 다양한 실시예에서, 만약 체크섬 유효성 검사에 실패할 경우에 데이터를 재건하기 위해 이러한 패리티를 사용할 수 있다.
다양한 실시예에서, 각각의 새로운 세그먼트가 기록될 때, 상기 세그먼트에 대한 RAID 지오메트리가 선택될 것이다. RAID 지오메트리의 선택은, 액티브 노드 및 장치의 현재 세트와 세그먼트에서의 데이터 형태와 같은 요인에 기준을 둘 수 있다. 예를 들어, 만약 10개의 노드 또는 장치를 이용할 수 있다면, 임의의 (8+2) RAID 6 지오메트리를 선택할 수 있으며 2개의 장치 또는 노드의 장애를 극복하기 위해서, 세그먼트는 상기 노드에 걸쳐 스트라이핑될 수 있다. 만약 임의의 노드에 장애가 발생하면, 다음 세그먼트는 (7+2) RAID 6 지오메트리로 바뀔 수 있다. 세그먼트 내에서, 일부 세그먼트 샤드는 데이터를 포함할 것이고, 일부는 (예를 들어, 패리티와 같은) ECC를 포함할 것이다.
일실시예에서, 다섯 가지 형태의 세그먼트가 있다. 이러한 세그먼트 중 세 가지는 AU 상태 테이블, AU 오류 테이블 및 마모 수준 테이블에 해당한다. 일부 실시예에서, 이러한 세 가지 세그먼트는 추가적인 보호를 위해 미러링될 수 있다. 이러한 세 가지 세그먼트뿐만이 아니라, 미러링을 통해 추가적으로 또한 보호될 수 있는 메타데이터 세그먼트가 있다. 마지막으로 클라이언트 블록 및 로그 정보를 보유하는 데이터 세그먼트가 있다. 로그 정보는 세그먼트에서의 클라이언트 블록과 관련된 갱신된 정보를 포함한다. 패리티 P 및 패리티 Q 샤드로써 도 11b에 도시된 것처럼, 데이터 세그먼트는 RAID 6에 의해 보호될 것으로 보인다. 상기의 경우뿐만이 아니라, 모든 세그먼트 샤드의 헤더로부터의 정보에서 시작되어 덧붙여지는 메모리 내의 데이터 구조로서, 세그먼트 테이블이 관리된다. 일부 실시예에서, 상기 테이블은 모든 노드에서 캐시에 완전히 저장될 수 있어서, 임의의 노드가 저장 액세스를 물리적 주소로 변환할 수 있다. 그러나 다른 실시예에서는, 객체 저장 모델을 사용할 수 있는데, 여기에서는 논리적 참조를 인용할 수 있으며 데이터가 저장된 세그먼트 레이아웃 노드를 식별할 수 있는 세그먼트 테이블을 각 노드가 가질 수 있다. 이후 요청은, 노드 상에서 정확한 저장 위치를 식별하는 노드에 전달된다. 도 11b는 세그먼트에서 상당한 크기의 공간을 차지하는 임의의 조합(볼륨, 스냅샷(snapshot))을 식별하는 세그먼트 테일 데이터(segment tail data)를 또한 도시하고 있다. 스냅샷이 제거될 때, 이와 같은 데이터를 바탕으로 한 가비지 수집을 위해, 데이터 스크러버(data scrubber)는 세그먼트를 식별하는데 도움이 될 수 있다.
일실시예에서, 기록의 기본 유닛은 세그먼트 내 각 장치에서의 하나의 I/O 샤드인 세그아이오(segio)이다. Segio에서의 각 논리적 페이지는 ("미디어" 체크섬으로 칭할 수 있는) 페이지의 체크섬을 포함하는 페이지 헤더로 포맷되어, 데이터에 대한 실제 페이지의 크기는 하나의 페이지보다 약간 작아진다. 세그먼트의 패리티 샤드에서의 페이지에 대해, 페이지 헤더가 더 작으므로, 데이터 페이지에서의 페이지 체크섬은 패리티 페이지에 의해서 보호된다. 각 I/O 샤드의 마지막 페이지는, 또다시 더 작은 헤더를 다시 가지며 페이지의 장애에 대해 삭제 블록에 있는 모든 체크섬 및 페이지 데이터를 보호하는, 패리티 페이지이다. 여기에 언급된 페이지의 크기는, 하나 이상의 물리적 플래시 페이지가 될 수 있는 I/O 판독 크기가 된다. 일부 세그먼트에 대해서, 물리적 페이지보다 더 작은 판독 크기를 사용할 수 있다. 정보를 검색하기 위한 판독은 인덱스로 구동될 수 있고, 원하는 데이터를 얻는 동안만큼은 데이터의 작은 부분이 판독될 수 있는 메타데이터에 대해, 이러한 것이 발생할 수 있다. 이와 같은 경우에, 물리적 페이지의 절반을 판독하는 것은 더 적은 데이터로 (네트워크 및) I/O 버스를 엮는 것을 의미하며, 더 적은 데이터를 인증하는 것을 (예를 들어, 체크서밍(checksumming)) 의미한다. 물리적 페이지보다 더 작은 판독 크기를 지원하기 위해, 일실시예는, 삭제 블록의 마지막에 복수의 패리티 페이지를 포함할 수 있으며, 그 결과 모든 패리티 페이지의 총 크기는 플래시 페이지의 크기와 같아진다.
삭제 블록의 마모 수준이 증가할수록, 오류의 가능성이 증가한다. 마모 수준을 추적할 뿐만 아니라, 얼마나 자주 삭제 블록에서 오류가 나타나는지, 얼마나 자주 오류가 발생할 확률이 높은 블록이 발견되는지가 관찰되는 것과 관련하여, 데이터를 관리할 수 있다. 일부 삭제 블록에 대해, 단일의 RAID 5 패리티 대신에 삭제 블록의 마지막에 이중 또는 삼중의 오류 수정 패리티를 유지하기로 결정할 수 있다. 이러한 경우, segio의 데이터 페이로드(data payload)는 그에 맞춰 축소될 수 있다. 모든 삭제 블록 대신에, segio 내의 불량 삭제 블록을 축소할 필요만 있을 수도 있다. 삭제 블록에서의 페이지 헤더는 어느 페이지가 패리티인지 어느 것이 데이터인지를 식별하기 위해 사용할 수 있다.
페이지가 저장된 곳으로부터 판독될 때마다, 페이지 체크섬을 사용하여 그 내용을 인증할 수 있다. 만약 인증에 실패하면, 장치내 패리티를 사용하여 데이터의 재건을 시도할 수 있다. 만약 이도 실패한다면, 데이터의 복원을 위해서 세그먼트를 위한 크로스 장치 ECC(cross device ECC)를 사용할 수 있다.
데이터 세그먼트에서, 페이로드 영역은 두 영역으로 분할될 수 있다. 저장된 클라이언트 블록과 관련된 갱신정보를 포함할 수 있는 로그 데이터로 포맷된 페이지가 있을 것이다. 페이로드 영역의 나머지는 클라이언트 블록으로 포맷된 페이지를 포함할 수 있다. 클라이언트 블록의 데이터는 압축된 형태로 저장될 수 있다. 많은 압축 알고리즘이 가능하며, 고려될 수 있다. 게다가, 다양한 실시예에서, 체크섬을 생성하기 위해 인텔®의 고급 암호 표준(Intel® Advanced Encryption Standard)의 명령어를 사용할 수 있다. 게다가, 데이터를 압축하기 위해 사용하는 알고리즘을 식별하는 것을 포함하여, 데이터와 같은 페이지에 상주하고 클라이언트 블록을 판독하기 위해 필요한 정보를 포함하는, 클라이언트 블록을 위한 헤더가 있을 수 있다. 가비지 수집은 클라이언트 블록 헤더 및 segio의 로그 엔트리 둘 다를 사용할 수 있다. 또한, 클라이언트 블록은 데이터 해시(data hash)를 가질 수 있는데, 이는 데이터 중복 해소(deduplication) 및 압축이 풀린 데이터의 정확성을 확인하기 위해 사용하는 압축이 풀린 데이터의 체크섬일 수 있다.
일부 실시예에서, 세그먼트 및 segio는 이들에게 순서를 붙이기 위해 사용되는 단조 증가하는(monotonically increasing) ID 숫자를 가질 수 있다. segio를 기록하는 부분으로서, 논리 계층은 이전의 플러시(prior flushes)에 대한 의존성을 기록할 수 있다. 시작 지점에서, 물리 계층은 세그먼트 및 segio의 정렬된 목록을 만들 수 있으며, 만약 segio가 또 다른 완료되지 않은 segio에 의존한다면, 이는 롤백되며(rolled back) 기록된 것으로 고려되지 않을 수 있다.
마모 수준 테이블
각 장치에 대한 마모 수준 테이블(Wear Level Table; WLT)은 각 장치의 부분적인 세그먼트에 저장될 수 있다. 정보는 각 세그먼트 샤드의 헤더에 또한 저장될 수 있다. 일실시예에서, 마모 정보는, 할당 유닛이 삭제되거나 재사용된 횟수를 나타내는 정수(integer)이다. 마모 정보는 정확하지 않을 수 있으므로, 일정한 크기의 활동이 있어왔거나 시스템이 합당한 기간 동안 유휴상태였을 때, 장치에 대해 테이블의 플러시가 수행될 수 있다. WLT는 그것이 새로운 WLT 세그먼트를 할당하면, 오래된 WLT 세그먼트를 삭제할 책임이 또한 있을 수 있다. 추가적인 보호 계층을 부가하기 위해, 오래된 복사본들은 해제되기 전에 관리될 수 있다. 예를 들어, 테이블의 관리자는 항상 WLT 엔트리의 현재의 삭제 블록 및 이전의 삭제 블록을 계속 유지하고 있음을 보장할 수 있다. 테이블의 관리자는 새로운 세그먼트를 할당할 때, 새로운 세그먼트의 두 번째 삭제 블록에 오래된 세그먼트가 기록되기까지는 오래된 세그먼트를 해제하지 않을 것이다.
AU 상태 테이블
AU 상태 테이블(AU State Table; AST)은 각 AU의 상태를 추적한다. 상태로는 해제, 할당됨, 삭제됨 및 나쁨이 있다. AST는 장치의 세그먼트에 저장될 수 있다. 상태를 나쁨 또는 삭제됨으로 변경하는 것은 비동기적 갱신(asynchronous update)이지만, 상태를 할당됨 또는 해제로 변경하는 것은 동기적 갱신(synchronous update)이 될 수 있다. 이러한 테이블은 일반적으로 충분히 작으며, 갱신정보를 충분히 가지고 있어서, 갱신정보가 NVRAM에 기록될 수 있다. AST는 그것이 새로운 AST 세그먼트를 할당할 경우, 오래된 AST 세그먼트를 삭제할 책임이 있을 수 있다. AST는 드라이브 상의 각 AU의 첫 번째 블록을 스캐닝함으로써 완전하게 복구될 수 있기 때문에, 오래된 AST 복사본을 유지할 필요가 없다.
AU 오류 테이블
AU 오류 테이블(AU Error Table; AET)은 각 AU 내에서 복구 가능한 오류 및 복구 불가능한 오류의 수를 추적하기 위해 사용할 수 있다. AET는 장치의 세그먼트에 저장되며 각 필드는 2 바이트 정수가 될 수 있다. AU 당 4 바이트를 사용하여, 테이블 전체는 상대적으로 작을 수 있다.
이제 도 11c를 참조하면, 다른 페이지 형태 내의 데이터 저장 방식의 일실시예를 도시하는 일반적인 블록도를 나타낸다. 도시된 실시예에서, 세 가지 페이지 형태가 도시되어 있으나, 다른 형태도 가능하며, 고려될 수 있다. 도시된 페이지 형태는 메타데이터(1150)를 포함하는 페이지(1110), 사용자 데이터(1160)를 포함하는 페이지(1120) 및 (장치 간 또는 장치내) 패리티 정보(1170)를 포함하는 페이지(1130)를 포함한다. 각 페이지(1110 내지 1130)는 메타데이터(1140)를 포함하며, 이는 헤더와 식별 정보를 포함할 수 있다. 또한, 각 페이지(1110 내지 1130)는, 해당 체크섬 또는 다른 오류의 감지 및 수정 또는 이들 중 하나를 수행하는 코드와 같은 페이지내 오류 복구 데이터(1142)를 포함할 수 있다. 이러한 체크섬 값은 임의의 주어진 장치 그룹에서의 저장 장치들(176a 내지 176k)에 저장된 데이터에 대한 추가적인 보호를 제공할 수 있다.
더불어, 페이지(1130)는 페이지 간의 오류 복구 데이터(1144)를 포함할 수 있다. 데이터(1144)는 다른 저장 장치에 저장된 페이지내 데이터(1142)로부터 얻은 ECC 정보가 될 수 있다. 예를 들어, 다시 도 10을 참조하면, 저장 장치(176j) 내의 각 페이지는, 장치 간의 패리티 정보(240)를 저장하며, 페이지 간의 오류 복구 데이터(1144) 또한 저장할 수 있다. 데이터(1144)는 패리티, 체크섬 또는 하나 이상의 저장 장치(176a 내지 176i)에 저장된 페이지내 오류 복구 데이터(1142)로부터 생성된 다른 값이 될 수 있다. 일실시예에서, 데이터(1144)는 다른 저장 장치에 저장된 하나 이상의 다른 체크섬 값(1142)으로부터 생성된 체크섬 값이다. 하나 이상의 저장 장치(176a 내지 176i)에서의 해당 페이지의 데이터(1142)를 사용하여, 저장 장치(176j)에서의 임의의 주어진 페이지의 데이터(1144)를 정렬하기 위해, 패딩(1146)이 해당 페이지에 부가될 수 있다.
일실시예에서, 최종 사용자의 애플리케이션은 섹터 경계(sector-boundary)에서 I/O 연산을 수행하며, 섹터는 HDD의 경우 512 바이트이다. 추가적인 보호를 부가하기 위해서, 8-바이트의 체크섬이 520 바이트의 섹터를 형성하기 위해 부가될 수 있다. 다양한 실시예에서, 섹터 경계가 아닌 바이트 경계로 사용자 데이터를 배치할 수 있도록, 플래시 메모리 기반의 시스템에서 압축 및 재배치를 사용할 수 있다. 또한, 헤더의 뒤 및 사용자 데이터의 앞에 있는 페이지 내에 체크섬(8 바이트, 4 바이트 또는 기타)이 위치할 수 있으며, 이는 압축될 수 있다. 이러한 배치는 각 페이지(1110 내지 1130)에 나타나 있다.
최종 사용자의 애플리케이션이 512-바이트의 섹터를 판독하면, 일실시예에서 해당 페이지는 크기가 2KB 내지 8KB가 될 수 있으며, 페이지의 시작 부분의 8-바이트의 체크섬으로 추가적인 보호를 받을 수 있다. 다양한 실시예에서, 페이지는 2의 거듭제곱이 아닌 섹터 크기에 대해 포맷될 수 없다. 페이지(1110 내지 1120)에 도시된 것처럼, 체크섬은 페이지에 몇 바이트 오프셋될 수 있다. 이러한 오프셋은, 패리티 페이지를 다루는 체크섬 및 다른 페이지의 체크섬을 보호하기 위한 ECC 둘 다를 저장하기 위한 페이지(1130)와 같은 패리티 페이지를 허용한다.
또 다른 보호 수준과 관련하여, 데이터 위치 정보는 체크섬 값을 계산할 때 포함될 수 있다. 각 페이지(1110 내지 1130)의 데이터(1142)는 이러한 정보를 포함할 수 있다. 이러한 정보는 논리적 주소 및 물리적 주소 둘 다를 포함할 수 있다. 섹터의 수, 데이터 청크 및 오프셋의 수, 트랙의 수(track numbers), 플레인의 수(plane numbers) 등이 이러한 정보에 또한 포함될 수 있다.
대체 지오메트리(
Alternate
Geometries
)
이제 도 12로 돌아가 보면, 하이브리드 RAID 데이터 레이아웃(1200)의 일실시예가 도시된 일반적인 블록도가 나타나 있다. 비록 파티션(partitions) 수를 임의로 선택될 수 있지만, 세 개의 파티션이 도시되어 있다. 각 파티션은, 도 1에 도시된 장치 그룹(173a 및 173b)과 같은 개별 장치 그룹에 해당할 수 있다. 각 파티션은 복수의 저장 장치를 포함한다. 일실시예에서, 데이터 저장을 위해 사용하는 RAID 데이터 레이아웃 구조에서, 어느 장치를 사용할지 선택하기 위해서 CRUSH 알고리즘과 같은 알고리즘을 사용할 수 있다.
도시된 예에서는, L+1 RAID 어레이, M+1 RAID 어레이 및 N+1 RAID 어레이가 도시되어 있다. 다양한 실시예에서, L, M 및 N은 모두 다를 수도, 같을 수도 있으며 또는 이들의 조합이 될 수도 있다. 예를 들어, RAID 어레이(1210)는 파티션 1에 도시되어 있다. 다른 저장 장치들(1212)은 파티션 1 내에서의 다른 RAID 어레이를 위한 후보이다. 유사하게, RAID 어레이(1220)는 파티션 2에 임의의 주어진 RAID 어레이를 도시하고 있다. 다른 저장 장치들(1222)은 파티션 2 내에서의 다른 RAID 어레이를 위한 후보이다. RAID 어레이(1230)는 파티션 3에 임의의 주어진 RAID 어레이를 도시하고 있다. 다른 저장 장치들(1232)은 파티션 3 내에서의 다른 RAID 어레이를 위한 후보이다.
각 RAID 어레이(1210, 1220 및 1230) 내에서, 저장 장치(P1)는 각 RAID 어레이 내에 RAID 단일 패리티 보호를 제공한다. 저장 장치들(D1 내지 DN)은 각 RAID 어레이 내에 사용자 데이터를 저장한다. 다시, 사용자 데이터 및 RAID 단일 패리티 정보의 저장은 저장 장치들(D1 내지 DN 및 P1) 사이에서 순환할 수 있다. 그러나 사용자 데이터의 저장은 장치들(D1 내지 DN)에 저장되어 있는 것으로 설명한다. 유사하게, 도시 및 설명을 쉽게 하기 위해 RAID 단일 패리티 정보의 저장은 장치(P1)에 저장되어 있는 것처럼 설명되었다.
하나 이상의 임의의 주어진 RAID 어레이에 대한 추가적인 임의의 크기의 지원 리던던시를 제공하기 위해, 각 세 개의 파티션 중 하나 이상의 저장 장치를 선택할 수 있다. 예를 들어, 파티션 3의 저장 장치(Q1)는 각 RAID 어레이(1210, 1220 및 1230)와 결합할 수 있다. 저장 장치(Q1)는 각 RAID 어레이(1210, 1220 및 1230)를 위해 RAID 이중 패리티 정보를 제공할 수 있다. 스트라이프가 어레이들(1210, 1220 또는 1230) 중 하나에 기록될 때, 이러한 추가적인 패리티 정보가 생성되고 저장된다. 더욱이, 이러한 추가적인 패리티 정보는 각 어레이(1210, 1220 및 1230)에서 스트라이프를 다룰 수 있다. 그러므로 저장 장치의 총 수에 대한 RAID 패리티 정보를 저장하는 저장 장치의 수의 비는 더 낮다. 예를 들어, 만약 각 파티션이 N+2 RAID 어레이를 사용하였다면, 저장 장치의 총 수에 대한 RAID 패리티 정보를 저장하는 저장 장치 수의 비는 3(2)/(3(N+2)) 또는 2/(N+2)이다. 그에 반해서, 하이브리드 RAID 레이아웃(1200)에 대한 비는 (3+1)/(3(N+1)) 또는 4/(3(N+1))이다.
사용자 데이터를 저장하기 위해 사용하는 저장 장치의 숫자를 늘림으로써 상기의 비율을 줄일 수 있다. 예를 들어, 저장 장치(Q1)를 사용하는 대신에, 각 파티션은 3N+2 RAID 어레이를 사용할 수 있다. 이와 같은 경우에, 저장 장치의 총 수에 대한 RAID 패리티 정보를 저장하는 저장 장치 수의 비는 2/(3N+2)가 된다. 그러나 복원 판독 연산(reconstruct read operation)을 하는 동안, (3N+1)개의 저장 장치는 단일 장치의 장애로 인한 복구 판독 요청을 수신한다. 그에 반해서, 하이브리드 RAID 레이아웃(1200)에 대해서는, 단지 N개의 저장 장치가 단일 장치의 장애로 인한 복구 판독 요청을 수신한다.
각 세 개의 파티션은 다른 RAID 데이터 레이아웃 구조를 사용할 수 있음에 유의해야 한다. 저장 장치의 총 수에 대한 RAID 패리티 정보를 저장하는 저장 장치의 수의 임의의 주어진 비를 기준으로, 임의의 주어진 RAID 데이터 레이아웃 구조의 선택을 할 수 있다. 또한, 복원 중 복원 판독 요청을 수신할 수 있는, 임의의 주어진 숫자의 저장 장치를 기준으로 선택할 수 있다. 예를 들어, RAID 어레이들(1210, 1220 및 1230)은 각각 L+a, M+b 및 N+c와 같은 지오메트리를 포함할 수 있다.
또한, 파티션 내의 하나 이상의 RAID 어레이에 대한 추가적인 임의의 크기의 지원 리던던시를 제공하기 위해, 저장 장치(Q1)와 같은 하나 이상의 저장 장치는 상기 조건들을 기준으로 선택할 수 있다. 각 RAID 어레이에 대한 추가적인 보호를 제공하는 Q개의 저장 장치 및 상기 RAID 어레이를 포함하는 세 개의 파티션의 예에서, 저장 장치의 총 수에 대한 RAID 파티션 정보를 저장하는 저장 장치 수의 비는 (a+b+c+Q)/(L+a+M+b+N+c+Q)이다. 단일 장치에 장애가 발생할 경우, 상기 예에서의 파티션 1 내지 3에 대해서, 복원 판독 요청을 수신하는 저장 장치의 수는 각각 L, M 및 N이다. 상기의 논의는 도 12에서의 세 개의 별개의 파티션을 일반적으로 설명하고 있음에 유의해야 한다. 이와 같은 일실시예에서, 임의의 주어진 레이아웃이 특별한 장치의 그룹에 제한되는 이러한 형태의 "하드" 파티셔닝("hard" partitioning)은, 하나의 파티션에서의 복원 판독이 다른 파티션의 것과 충돌하지 않을 것을 보장할 수 있다. 그러나 다른 실시예에서, 파티션은 상기 설명한 것처럼 하드하지 않을 수 있다. 오히려 장치의 풀(a pool of devices)이 주어지면, 레이아웃은 임의의 장치들로부터 선택할 수 있다. 예를 들어, 장치가 대형 풀에 있는 것으로 취급하면, (L+1, M+1, N+1)+1과 같은 레이아웃을 구성할 수 있다. 결과적으로, 지오메트리가 중복되며 복원 판독이 충돌하는 경우가 발생한다. 만약 L, M 및 N이 풀의 크기에 비해 작다면, 일반적인 판독과 대비하여 복원 판독의 백분율은 낮게 유지될 수 있다.
이제 도 13을 참조하면, 데이터 저장 서브시스템에서 대체 RAID 지오메트리를 선택하는 방법의 일실시예가 도시되어 있다. 네트워크 구조(100)에 포함된 구성 요소 및 상기 설명한 데이터 저장 어레이들(120a 및 120b)은 방법에 따라 일반적으로 동작한다. 이러한 실시예에서의 단계들은 순차적인 순서로 도시된다. 그러나 일부 단계는 도시된 것과 다른 순서로 발생할 수 있으며, 일부 단계는 동시에 수행될 수 있으며, 일부 단계는 다른 단계와 결합할 수 있으며, 일부 단계는 다른 실시예에서는 생략될 수 있다.
블록(1302)에서, 저장 컨트롤러(174) 내의 RAID 엔진(178) 또는 다른 로직은, 저장 서브시스템의 각 파티션 내에서 RAID 어레이에 사용자 데이터를 저장하기 위해서 임의의 주어진 숫자의 장치를 사용하는 것을 결정한다. 어느 장치를 사용할지 선택하기 위해서, RUSH 또는 다른 알고리즘을 사용할 수 있다. 일실시예에서, 각 파티션은 같은 수의 저장 장치를 사용한다. 다른 실시예에서, 각 파티션은 사용자 데이터를 저장하기 위해 다른, 고유한 수의 장치를 사용할 수 있다. 블록(1304)에서, 저장 컨트롤러(174)는, 서브시스템의 각 파티션 내에서 해당하는 장치 간의 오류 복구(패리티) 데이터(Inter-Device Error Recovery data)를 저장하기 위한 다수의 저장장치를 지원하는 것을 결정할 수 있다. 다시, 각 파티션은 RAID 패리티 정보를 저장하기 위한 같은 수의 또는 다른, 고유한 수의 저장 장치를 사용할 수 있다.
블록(1306)에서, 저장 컨트롤러는, 서브시스템의 파티션에 걸쳐 추가적인 장치 간의 오류 복구(패리티) 데이터를 저장하기 위한 Q개의 저장 장치를 지원하는 것을 결정할 수 있다. 블록(1308)에서, 사용자 데이터 및 해당 RAID 패리티 데이터 둘 다 선택한 저장 장치에 기록될 수 있다. 다시 도 12를 참조하면, 파티션 1에서의 RAID 어레이(1210)와 같은 임의의 주어진 RAID 어레이가 기록될 때, 파티션 3에서의 저장 장치(Q1)에서 하나 이상의 패리티 정보의 비트가 생성되고 저장될 수 있다.
만약 저장 컨트롤러(174)가 임의의 주어진 파티션에서 판독 복원을 수행하는 조건을 감지한다면(조건 블록(1310)), 그리고 임의의 주어진 파티션에 사용 불가능한 저장 장치의 수를 조정하기 위한 RAID 패리터 정보를 보유하는 충분한 수의 저장 장치가 있다면(조건 블록(1312)), 블록(1314)에서, 임의의 주어진 파티션 내의 하나 이상의 해당 저장 장치를 가지고 복원 판독 연산을 수행한다. 조건은, 임의의 주어진 RAID 어레이 내의 저장 장치가 장치의 장애로 인해 사용 불가능하게 되거나, 장치가 임의의 주어진 성능 수준에 미달하여 동작하는 것을 포함한다. 임의의 주어진 RAID 어레이는, 임의의 주어진 파티션 내에서 RAID 패리티 정보를 저장하는 저장 장치의 수를 사용하여, 사용 불가능한 저장 장치의 최대의 수를 조정할 수 있다. 예를 들어, 만약 상기 예에서 파티션 1의 RAID 어레이(1210)가 L+a RAID 어레이이면, k(1≤k≤a)개의 저장 장치가 사용 불가능하게 될 때, RAID 어레이(1210)는 파티션 1 내의 저장 장치만을 사용하여 판독 복원을 수행할 수 있다.
만약 임의의 주어진 파티션에, 사용 불가능한 저장 장치의 수를 조정하기 위한 RAID 패리티 정보를 보유한 충분한 수의 저장 장치가 없다면(조건 블록(1312)), 그리고 사용 불가능한 저장 장치의 수를 조정하기 위한 충분한 Q개의 저장 장치가 있다면(조건 블록(1316)), 블록(1318)에서, 하나 이상인 해당하는 Q개의 저장 장치를 가지고서 복원 판독 연산을 수행한다. 다른 파티션에서의 하나 이상의 저장 장치는, 사용자 데이터를 저장하고 있으며, 판독 복원을 수행하는 동안 액세스할 수 있다. 하나 이상인 Q개의 저장 장치에 저장된 패리티 정보를 얻는 방법을 기준으로, 이러한 저장 장치를 선택할 수 있다. 예를 들어, 다시 도 12를 참조하면, 저장 장치(Q1)에 저장된 해당 RAID 패리티 정보를 생성하기 위해서 이러한 저장 장치를 사용하여 왔기 때문에, 파티션 2의 저장 장치(D2)는 판독 복원을 수행하는 동안 액세스할 수 있다. 만약 사용 불가능한 저장 장치의 수를 조정하기 위한 충분한 수의 Q개의 저장 장치가 없다면(조건 블록(1316)), 블록(1320)에서, 해당하는 사용자 데이터는 다른 소스로부터 판독되거나 손상된 것으로 여겨질 수 있다.
상기 설명한 실시예들은 소프트웨어를 포함할 수 있음에 유의해야 한다. 이와 같은 실시예에서, 방법 및 메커니즘 또는 이들 중 어느 하나를 구현하는 프로그램 명령어는, 컴퓨터 판독가능 매체(computer readable medium)에 전달되거나 저장될 수 있다. 프로그램 명령어를 저장하도록 구성된 많은 형태의 매체를 사용할 수 있으며, 이는 하드 디스크, 플로피 디스크, CD-ROM, DVD, 플래시 메모리, 프로그램 가능 ROM(PROM), 랜덤 액세스 메모리(RAM) 및 휘발성 또는 비휘발성 저장매체의 다양한 다른 유형들을 포함한다.
다양한 실시예에서, 본 명세서에서 설명한 하나 이상의 방법 또는 메커니즘의 일부분은, 클라우드 컴퓨팅 환경의 일부를 구성할 수 있다. 이와 같은 실시예에서, 하나 이상의 다양한 모델에 따른 서비스로서 리소스가 인터넷을 통해 제공될 수 있다. 이러한 모델로는 서비스형 인프라(Infrastructure as a Service; IaaS), 서비스형 플랫폼(Platform as a Service; PaaS) 및 서비스형 소프트웨어(Software as a Service; SaaS)가 포함될 수 있다. IaaS에서는, 컴퓨터 인프라가 서비스로 전달된다. 이와 같은 경우, 컴퓨팅 장비는 일반적으로 서비스 제공업자의 소유이며 이들에 의해 운영된다. PaaS 모델에서는, 소프트웨어 솔루션을 개발하기 위해 개발자가 사용하는 소프트웨어 도구 및 기초가 되는 장치가 서비스로 제공될 수 있으며, 서비스 제공업자에 의해 관리된다. SaaS는 주문형 서비스(service on demand)로서 소프트웨어를 라이센싱하는 서비스 제공업자를 일반적으로 포함한다. 서비스 제공업자는 소프트웨어를 관리하거나 임의의 주어진 기간 동안 고객에게 소프트웨어를 배포할 수 있다. 상기 모델의 많은 조합이 가능하며 고려된다.
비록 상기 실시예들이 상당히 자세하게 설명어 있기는 하지만, 일단 상기 개시된 내용을 충분히 이해한다면, 수많은 변경 및 수정이 당해 기술분야에서 통상의 지식을 가진 사람들에게 명백해질 것이다. 청구항들은 이러한 모든 변경 및 수정을 수용하기 위해 해석되도록 하였다.
Claims (20)
- 컴퓨터 시스템으로서,
네트워크를 통해 판독 및 기록 요청들(read and write requests)을 보내도록 구성된 클라이언트 컴퓨터; 및
상기 판독 및 기록 요청들을 수신하도록 구성된 상기 네트워크에 결합하며, 복수의 저장 장치를 포함하는 장치 그룹에서의 복수의 데이터 저장 위치를 포함하는 데이터 저장 서브시스템(data storage subsystem)
을 포함하며,
상기 데이터 저장 서브시스템은,
데이터를 저장할 때 사용하기 위한 제1 RAID 레이아웃을 결정하고;
상기 제1 RAID 레이아웃에 따라 상기 장치 그룹에 제1 RAID 스트라이프(stripe)를 기록하며;
제1 조건을 감지하는 것에 대응하여,
기록할 데이터의 크기에 관계없이 상기 제1 RAID 레이아웃과는 다른 제2 RAID 레이아웃을 결정하고;
상기 제2 RAID 레이아웃에 따라 상기 장치 그룹에 제2 RAID 스트라이프를 기록하도록
구성된 저장 컨트롤러(storage controller)를 더 포함하며,
상기 장치 그룹은 상기 제1 RAID 레이아웃 및 상기 제2 RAID 레이아웃 둘 다에 따라 데이터를 동시에 저장하는, 컴퓨터 시스템. - 제1항에 있어서,
상기 조건은 상기 장치 그룹에 데이터를 저장하기 위해 공간이 할당됨을 감지하는 것을 포함하는, 컴퓨터 시스템. - 제1항에 있어서,
상기 저장 컨트롤러는 하나 이상의 상기 복수의 저장 장치의 특성들에 기초하여, 상기 제1 RAID 레이아웃 및 상기 제2 RAID 레이아웃을 결정하도록 구성된, 컴퓨터 시스템. - 제3항에 있어서,
상기 특성들은, 하나 이상의 상기 복수의 장치로의 하나 이상의 액세스 횟수 또는 액세스율(rate of accesses), 하나 이상의 상기 복수의 장치에 저장된 데이터의 저장기간(age of data), 하나 이상의 상기 복수의 저장 장치에서 해제 공간(free space)의 크기, 상기 할당된 공간에 기록되는 데이터의 기대 수명, 하나 이상의 상기 복수의 저장 장치에 현재 저장된 데이터의 기대 수명, 장치의 사용기간(device age), 오류율(error rate), 오류들의 수, 복구 가능한 오류들의 수, 복구 불가능한 오류들의 수 및 할당 상태(allocation state)를 포함하는, 컴퓨터 시스템. - 제1항에 있어서,
상기 저장 컨트롤러는 상기 복수의 저장 장치에서 보호 데이터를 분해하도록 더 구성되며, 이에 의해 상기 저장 컨트롤러는 적어도
임의의 주어진 데이터에 대한 보호 수준(a level of protection)이 변경되는지 판단하고;
상기 임의의 주어진 데이터에 해당하는 보호 데이터를 저장하는 특정 저장 위치들을 식별하며;
상기 특정 저장 위치들의 할당을 해제(de-allocate)하도록
구성되는, 컴퓨터 시스템. - 제5항에 있어서,
상기 저장 컨트롤러는 후속하는 기록(a subsequent write) 동안 비보호 데이터(non-protection data)를 저장하기 위한 하나 이상의 상기 특정 저장 위치들을 재할당하도록 더 구성된, 컴퓨터 시스템. - 제6항에 있어서,
재할당된 특정 저장 위치는, 상기 비보호 데이터에 대해, 상기 보호 데이터에 대해 사용되었던 것과 같은 크기 또는 정렬을 사용할 필요가 없는, 컴퓨터 시스템. - 제1항에 있어서,
상기 복수의 저장 장치 중 하나의 저장 장치는 삭제 블록 크기의 유닛들(erase block size units)에서 데이터를 삭제하도록 구성되며, 상기 저장 컨트롤러는, 삭제 블록보다 크기가 더 작은 데이터의 일부분으로의 액세스에 장애가 발생한 점을 감지한 것에 대응하여,
장애가 발생했던 상기 데이터의 일부분을 포함하는, 특정 삭제 블록 크기의 데이터 부분(a particular erase block sized portion of data)을 식별하고;
장애가 발생했던 상기 데이터의 일부분을 재건하여 데이터의 재건 부분(a rebuilt portion of data)을 형성하며;
상기 저장 장치가, 상기 데이터의 재건 부분을 포함하는 상기 특정 삭제 블록 크기의 데이터 부분을 기록하도록
구성되는, 컴퓨터 시스템. - 제1항에 있어서,
데이터의 일부분으로의 액세스에 장애가 발생한 점을 감지한 것에 대응하여, 상기 저장 컨트롤러는,
장애가 발생했던 상기 데이터의 일부분을 재건하여 데이터의 재건 부분을 형성하며;
상기 복수의 저장 장치 중 특정 저장 장치에서 보호 데이터를 분해하며;
상기 특정 저장 위치에 상기 데이터의 재건 부분을 저장하도록
구성되는, 컴퓨터 시스템. - 제1항에 있어서,
상기 저장 컨트롤러는, 상기 저장 장치가 상기 저장 장치에 저장된 데이터의 일부분을 재배치(remap)하고 재작성하도록, 상기 복수의 저장 장치 중 하나의 저장 장치에 명령을 내리도록 더 구성되는, 컴퓨터 시스템. - 컴퓨터 시스템에서 사용하기 위한 방법으로서,
복수의 저장 장치를 포함하는 장치 그룹에서의 복수의 데이터 저장 위치를 포함하는 데이터 저장 서브시스템에서 판독 및 기록 요청들을 수신하는 단계;
데이터를 저장할 때 사용하기 위한 제1 RAID 레이아웃을 결정하는 단계;
상기 제1 RAID 레이아웃에 따라 상기 장치 그룹에 제1 RAID 스트라이프를 기록하는 단계; 및
제1 조건을 감지하는 것에 대응하여,
기록할 데이터의 크기에 관계없이 상기 제1 RAID 레이아웃과는 다른 제2 RAID 레이아웃을 결정하는 단계; 및
상기 제2 RAID 레이아웃에 따라 상기 장치 그룹에 제2 RAID 스트라이프를 기록하는 단계
를 포함하며,
상기 장치 그룹은 상기 제1 RAID 레이아웃 및 상기 제2 RAID 레이아웃 둘 다에 따라 데이터를 동시에 저장하는, 방법. - 제11항에 있어서,
상기 조건은 상기 장치 그룹에 데이터를 저장하기 위해 공간이 할당됨을 감지하는 것을 포함하는, 방법. - 제11항에 있어서,
하나 이상의 상기 복수의 저장 장치의 특성들에 기초하여, 상기 제1 RAID 레이아웃 및 상기 제2 RAID 레이아웃을 결정하는 단계를 더 포함하는 방법. - 제13항에 있어서,
상기 특성들은 하나 이상의 상기 복수의 장치로의 하나 이상의 액세스 횟수 또는 액세스율, 하나 이상의 상기 복수의 장치에 저장된 데이터의 저장기간, 하나 이상의 상기 복수의 저장 장치에서 해제 공간의 크기, 상기 할당된 공간에 기록되는 데이터의 기대 수명, 하나 이상의 상기 복수의 저장 장치에 현재 저장된 데이터의 기대 수명, 장치의 사용기간, 오류율, 오류들의 수, 복구 가능한 오류들의 수, 복구 불가능한 오류들의 수 및 할당 상태를 포함하는, 방법. - 제11항에 있어서,
상기 복수의 저장 장치에서 보호 데이터를 분해하는 단계를 더 포함하며, 이에 의해 상기 방법은,
임의의 주어진 데이터에 대한 보호 수준이 변경되는지 판단하는 단계;
상기 임의의 주어진 데이터에 해당하는 보호 데이터를 저장하는 특정 저장 위치들을 식별하는 단계; 및
상기 특정 저장 위치들의 할당을 해제하는 단계
를 포함하는, 방법. - 제15항에 있어서,
후속하는 기록 동안 비보호 데이터를 저장하기 위한 하나 이상의 상기 특정 저장 위치들을 재할당하는 단계를 더 포함하는 방법. - 제16항에 있어서,
재할당된 특정 저장 위치는, 상기 비보호 데이터에 대해, 상기 보호 데이터에 대해 사용되었던 것과 같은 크기 또는 정렬을 사용할 필요가 없는, 방법. - 제11항에 있어서,
상기 복수의 저장 장치 중 하나의 저장 장치는 삭제 블록 크기의 유닛들에서 데이터를 삭제하도록 구성되며, 상기 방법은, 삭제 블록보다 크기가 더 작은 데이터의 일부분으로의 액세스에 장애가 발생한 점을 감지한 것에 대응하여,
장애가 발생했던 상기 데이터의 일부분을 포함하는, 특정 삭제 블록 크기의 데이터 부분을 식별하는 단계;
장애가 발생했던 상기 데이터의 일부분을 재건하여 데이터의 재건 부분을 형성하는 단계; 및
상기 저장 장치가, 상기 데이터의 재건 부분을 포함하는 상기 특정 삭제 블록 크기의 데이터 부분을 기록하도록 하는 단계
를 더 포함하는, 방법. - 프로그램 명령어들을 저장하는 컴퓨터 판독가능 저장 매체(computer readable storage medium)로서,
상기 프로그램 명령어들은,
복수의 저장 장치를 포함하는 장치 그룹에서의 복수의 데이터 저장 위치를 포함하는 데이터 저장 서브시스템에서 판독 및 기록 요청들을 수신하는 단계;
데이터를 저장할 때 사용하기 위한 제1 RAID 레이아웃을 결정하는 단계;
상기 제1 RAID 레이아웃에 따라 상기 장치 그룹에 제1 스트라이프를 기록하는 단계; 및
제1 조건을 감지하는 것에 대응하여,
기록할 데이터의 크기에 관계없이 상기 제1 RAID 레이아웃과는 다른 제2 RAID 레이아웃을 결정하는 단계; 및
상기 제2 RAID 레이아웃에 따라 상기 장치 그룹에 제2 RAID 스트라이프를 기록하는 단계
를 실행 가능하며,
상기 장치 그룹은 상기 제1 RAID 레이아웃 및 상기 제2 RAID 레이아웃 둘 다에 따라 데이터를 동시에 저장하는, 컴퓨터 판독가능 저장 매체. - 제19항에 있어서,
상기 조건은 상기 장치 그룹에 데이터를 저장하기 위해 공간이 할당됨을 감지하는 것을 포함하는, 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/892,894 US8775868B2 (en) | 2010-09-28 | 2010-09-28 | Adaptive RAID for an SSD environment |
US12/892,894 | 2010-09-28 | ||
PCT/US2011/052222 WO2012044488A1 (en) | 2010-09-28 | 2011-09-19 | Adaptive raid for an ssd environment |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20130118876A true KR20130118876A (ko) | 2013-10-30 |
Family
ID=44720158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137010801A KR20130118876A (ko) | 2010-09-28 | 2011-09-19 | Ssd 환경에서의 적응형 raid |
Country Status (6)
Country | Link |
---|---|
US (6) | US8775868B2 (ko) |
EP (2) | EP2622475A1 (ko) |
JP (2) | JP5894167B2 (ko) |
KR (1) | KR20130118876A (ko) |
CN (1) | CN103348326B (ko) |
WO (1) | WO2012044488A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101532283B1 (ko) * | 2013-11-04 | 2015-06-30 | 인하대학교 산학협력단 | Ssd 기반 raid 스토리지에서 데이터 및 패리티 디스크의 복합적 중복제거 방법 |
WO2020092778A1 (en) * | 2018-10-31 | 2020-05-07 | Hewlett Packard Enterprise Development Lp | Masterless raid for byte-addressable non-volatile memory |
Families Citing this family (582)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8819208B2 (en) | 2010-03-05 | 2014-08-26 | Solidfire, Inc. | Data deletion in a distributed data storage system |
US8589625B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
US8732426B2 (en) | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O operations in a storage environment |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US8468318B2 (en) | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes in a storage environment |
US11275509B1 (en) | 2010-09-15 | 2022-03-15 | Pure Storage, Inc. | Intelligently sizing high latency I/O requests in a storage environment |
US8775868B2 (en) * | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US9244769B2 (en) | 2010-09-28 | 2016-01-26 | Pure Storage, Inc. | Offset protection data in a RAID array |
US20220398156A1 (en) * | 2010-10-01 | 2022-12-15 | Pure Storage, Inc. | Distributed multi-level protection in a hyper-converged infrastructure |
GB2486346B (en) * | 2010-12-08 | 2015-07-08 | Christopher Paul Carroll | Systems and methods for file loading |
US8601313B1 (en) * | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8615681B2 (en) * | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8850104B2 (en) * | 2011-03-21 | 2014-09-30 | Apple Inc. | Independent management of data and parity logical block addresses |
GB2492981B (en) * | 2011-07-18 | 2014-03-26 | Qando Service Inc | Data reconstruction |
US11636031B2 (en) | 2011-08-11 | 2023-04-25 | Pure Storage, Inc. | Optimized inline deduplication |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
KR101801147B1 (ko) * | 2011-08-30 | 2017-11-27 | 삼성전자주식회사 | 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치 |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
CN106469029B (zh) * | 2011-12-31 | 2019-07-23 | 华为数字技术(成都)有限公司 | 数据分层存储处理方法、装置和存储设备 |
US8966170B2 (en) * | 2012-01-31 | 2015-02-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Elastic cache of redundant cache data |
US8719540B1 (en) | 2012-03-15 | 2014-05-06 | Pure Storage, Inc. | Fractal layout of data blocks across multiple devices |
US8327185B1 (en) | 2012-03-23 | 2012-12-04 | DSSD, Inc. | Method and system for multi-dimensional raid |
US8341342B1 (en) | 2012-03-23 | 2012-12-25 | DSSD, Inc. | Storage system with incremental multi-dimensional RAID |
KR20130111821A (ko) * | 2012-04-02 | 2013-10-11 | 삼성전자주식회사 | Raid 메모리 시스템 |
CN104246898B (zh) * | 2012-05-31 | 2017-03-22 | 慧与发展有限责任合伙企业 | 局部错误检测和全局错误纠正 |
US10623386B1 (en) | 2012-09-26 | 2020-04-14 | Pure Storage, Inc. | Secret sharing data protection in a storage system |
US11032259B1 (en) | 2012-09-26 | 2021-06-08 | Pure Storage, Inc. | Data protection in a storage system |
US8745415B2 (en) | 2012-09-26 | 2014-06-03 | Pure Storage, Inc. | Multi-drive cooperation to generate an encryption key |
US9411717B2 (en) * | 2012-10-23 | 2016-08-09 | Seagate Technology Llc | Metadata journaling with error correction redundancy |
US8925098B2 (en) | 2012-11-15 | 2014-12-30 | Elwha Llc | Data security and access tracking in memory |
US9323499B2 (en) | 2012-11-15 | 2016-04-26 | Elwha Llc | Random number generator functions in memory |
US8966310B2 (en) | 2012-11-15 | 2015-02-24 | Elwha Llc | Redundancy for loss-tolerant data in non-volatile memory |
US9026719B2 (en) | 2012-11-15 | 2015-05-05 | Elwha, Llc | Intelligent monitoring for computation in memory |
US8464095B1 (en) | 2012-11-15 | 2013-06-11 | DSSD, Inc. | Method and system for multi-dimensional raid reconstruction and defect avoidance |
US9582465B2 (en) * | 2012-11-15 | 2017-02-28 | Elwha Llc | Flexible processors and flexible memory |
US9442854B2 (en) | 2012-11-15 | 2016-09-13 | Elwha Llc | Memory circuitry including computational circuitry for performing supplemental functions |
US8996951B2 (en) | 2012-11-15 | 2015-03-31 | Elwha, Llc | Error correction with non-volatile memory on an integrated circuit |
US9059736B2 (en) * | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US9448883B1 (en) * | 2012-12-04 | 2016-09-20 | Cadence Design Systems, Inc. | System and method for allocating data in memory array having regions of varying storage reliability |
US9372726B2 (en) | 2013-01-09 | 2016-06-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
US10908835B1 (en) | 2013-01-10 | 2021-02-02 | Pure Storage, Inc. | Reversing deletion of a virtual machine |
US9063967B2 (en) | 2013-01-10 | 2015-06-23 | Pure Storage, Inc. | Performing copies in a storage system |
US11768623B2 (en) | 2013-01-10 | 2023-09-26 | Pure Storage, Inc. | Optimizing generalized transfers between storage systems |
US11733908B2 (en) | 2013-01-10 | 2023-08-22 | Pure Storage, Inc. | Delaying deletion of a dataset |
US8554997B1 (en) * | 2013-01-18 | 2013-10-08 | DSSD, Inc. | Method and system for mirrored multi-dimensional raid |
WO2014209394A1 (en) | 2013-06-28 | 2014-12-31 | Hewlett-Packard Development Company, L.P. | Fault tolerance for persistent main memory |
CN104347122B (zh) | 2013-07-31 | 2017-08-04 | 华为技术有限公司 | 一种消息式内存模组的访存方法和装置 |
CN105453053B (zh) | 2013-08-13 | 2018-10-09 | 英派尔科技开发有限公司 | 存储器系统 |
KR101748717B1 (ko) * | 2013-09-27 | 2017-06-19 | 인하대학교 산학협력단 | Ssd 기반 raid 시스템에서 패리티 데이터의 중복제거 |
US11128448B1 (en) | 2013-11-06 | 2021-09-21 | Pure Storage, Inc. | Quorum-aware secret sharing |
US10365858B2 (en) | 2013-11-06 | 2019-07-30 | Pure Storage, Inc. | Thin provisioning in a storage device |
US10263770B2 (en) | 2013-11-06 | 2019-04-16 | Pure Storage, Inc. | Data protection in a storage system using external secrets |
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 |
US8924776B1 (en) | 2013-12-04 | 2014-12-30 | DSSD, Inc. | Method and system for calculating parity values for multi-dimensional raid |
US10235096B2 (en) | 2013-12-06 | 2019-03-19 | Concurrent Ventures, LLC | System and method for dynamically load balancing storage media devices based on an average or discounted average sustained performance level |
US9436404B2 (en) | 2013-12-06 | 2016-09-06 | Concurrent Ventures, LLC | System and method for dynamically load balancing across storage media devices having fast access rates |
US9274722B2 (en) | 2013-12-06 | 2016-03-01 | Concurrent Ventures, LLP | System, method and article of manufacture for monitoring, controlling and improving storage media system performance |
EP3078184A4 (en) * | 2013-12-06 | 2017-07-26 | Concurrent Ventures LLC | System and method for dynamically load balancing storage media devices based on a mid-range performance level |
US10048895B2 (en) | 2013-12-06 | 2018-08-14 | Concurrent Ventures, LLC | System and method for dynamically load balancing storage media devices based on a mid-range performance level |
US9898195B2 (en) | 2013-12-09 | 2018-02-20 | Empire Technglogy Development Llc | Hardware interconnect based communication between solid state drive controllers |
US9170746B2 (en) | 2014-01-07 | 2015-10-27 | Netapp, Inc. | Clustered raid assimilation management |
US9208086B1 (en) | 2014-01-09 | 2015-12-08 | Pure Storage, Inc. | Using frequency domain to prioritize storage of metadata in a cache |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9483349B2 (en) | 2014-01-17 | 2016-11-01 | Netapp, Inc. | Clustered raid data organization |
US9454434B2 (en) | 2014-01-17 | 2016-09-27 | Netapp, Inc. | File system driven raid rebuild technique |
US8949692B1 (en) | 2014-01-23 | 2015-02-03 | DSSD, Inc. | Method and system for service-aware parity placement in a storage system |
US20150205667A1 (en) * | 2014-01-23 | 2015-07-23 | DSSD, Inc. | Method and system for service-aware data placement in a storage system |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US10656864B2 (en) | 2014-03-20 | 2020-05-19 | Pure Storage, Inc. | Data replication within a flash storage array |
US9348695B2 (en) | 2014-05-21 | 2016-05-24 | Sandisk Technologies Inc. | System and method of storing redundancy data |
US9478274B1 (en) | 2014-05-28 | 2016-10-25 | Emc Corporation | Methods and apparatus for multiple memory maps and multiple page caches in tiered memory |
US9543988B2 (en) * | 2014-05-29 | 2017-01-10 | Netapp, Inc. | Adaptively strengthening ECC for solid state cache |
US9779268B1 (en) | 2014-06-03 | 2017-10-03 | Pure Storage, Inc. | Utilizing a non-repeating identifier to encrypt data |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US9612952B2 (en) * | 2014-06-04 | 2017-04-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
EP3152648B1 (en) * | 2014-06-04 | 2021-08-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US10496556B1 (en) | 2014-06-25 | 2019-12-03 | Pure Storage, Inc. | Dynamic data protection within a flash storage system |
US9218407B1 (en) | 2014-06-25 | 2015-12-22 | Pure Storage, Inc. | Replication and intermediate read-write state for mediums |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9563509B2 (en) | 2014-07-15 | 2017-02-07 | Nimble Storage, Inc. | Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US10296469B1 (en) | 2014-07-24 | 2019-05-21 | Pure Storage, Inc. | Access control in a flash storage system |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9864761B1 (en) | 2014-08-08 | 2018-01-09 | Pure Storage, Inc. | Read optimization operations in a storage system |
US9112890B1 (en) | 2014-08-20 | 2015-08-18 | E8 Storage Systems Ltd. | Distributed storage over shared multi-queued storage device |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US10430079B2 (en) | 2014-09-08 | 2019-10-01 | Pure Storage, Inc. | Adjusting storage capacity in a computing system |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
US9274720B1 (en) | 2014-09-15 | 2016-03-01 | E8 Storage Systems Ltd. | Distributed RAID over shared multi-queued storage devices |
US10275171B2 (en) | 2014-09-16 | 2019-04-30 | Kove Ip, Llc | Paging of external memory |
US9626108B2 (en) | 2014-09-16 | 2017-04-18 | Kove Ip, Llc | Dynamically provisionable and allocatable external memory |
WO2016051512A1 (ja) | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
US10164841B2 (en) | 2014-10-02 | 2018-12-25 | Pure Storage, Inc. | Cloud assist for storage systems |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US10430282B2 (en) | 2014-10-07 | 2019-10-01 | Pure Storage, Inc. | Optimizing replication by distinguishing user and system write activity |
KR102177421B1 (ko) | 2014-10-15 | 2020-11-11 | 삼성전자주식회사 | 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러 |
US9535619B2 (en) | 2014-11-10 | 2017-01-03 | Dell Products, Lp | Enhanced reconstruction in an array of information storage devices by physical disk reduction without losing data |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US9727485B1 (en) | 2014-11-24 | 2017-08-08 | Pure Storage, Inc. | Metadata rewrite and flatten optimization |
US9519666B2 (en) | 2014-11-27 | 2016-12-13 | E8 Storage Systems Ltd. | Snapshots and thin-provisioning in distributed storage over shared storage devices |
US9773007B1 (en) | 2014-12-01 | 2017-09-26 | Pure Storage, Inc. | Performance improvements in a storage system |
US10346245B2 (en) * | 2014-12-09 | 2019-07-09 | Tsinghua University | Data storage system and data storage method |
US9588842B1 (en) | 2014-12-11 | 2017-03-07 | Pure Storage, Inc. | Drive rebuild |
US10404409B2 (en) | 2014-12-11 | 2019-09-03 | Kabushiki Kaisha Toshiba | Reconfigurable encoding arrays for reduced outage probability sensor networks |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9864769B2 (en) | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
US10545987B2 (en) | 2014-12-19 | 2020-01-28 | Pure Storage, Inc. | Replication to the cloud |
US11947968B2 (en) | 2015-01-21 | 2024-04-02 | Pure Storage, Inc. | Efficient use of zone in a storage device |
US10296354B1 (en) | 2015-01-21 | 2019-05-21 | Pure Storage, Inc. | Optimized boot operations within a flash storage array |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US9710317B2 (en) | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
US9946471B1 (en) * | 2015-03-31 | 2018-04-17 | EMC IP Holding Company LLC | RAID groups based on endurance sets |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US9525737B2 (en) * | 2015-04-14 | 2016-12-20 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect |
US9529542B2 (en) | 2015-04-14 | 2016-12-27 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect |
US10466913B2 (en) | 2015-04-29 | 2019-11-05 | EMC IP Holding Company LLC | Method and system for replicating and using grid level metadata in a storage system |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US11102298B1 (en) | 2015-05-26 | 2021-08-24 | Pure Storage, Inc. | Locally providing cloud storage services for fleet management |
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 |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US9594678B1 (en) | 2015-05-27 | 2017-03-14 | Pure Storage, Inc. | Preventing duplicate entries of identical data in a storage device |
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 |
US10021170B2 (en) | 2015-05-29 | 2018-07-10 | Pure Storage, Inc. | Managing a storage array using client-side services |
US9444822B1 (en) | 2015-05-29 | 2016-09-13 | Pure Storage, Inc. | Storage array access control from cloud-based user authorization and authentication |
US11503031B1 (en) | 2015-05-29 | 2022-11-15 | 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 |
US9766837B2 (en) | 2015-06-10 | 2017-09-19 | Micron Technology, Inc. | Stripe mapping in memory |
US10496626B2 (en) | 2015-06-11 | 2019-12-03 | EB Storage Systems Ltd. | Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect |
US9594512B1 (en) | 2015-06-19 | 2017-03-14 | Pure Storage, Inc. | Attributing consumed storage capacity among entities storing data in a storage array |
US10310740B2 (en) * | 2015-06-23 | 2019-06-04 | Pure Storage, Inc. | Aligning memory access operations to a geometry of a storage device |
US9547441B1 (en) | 2015-06-23 | 2017-01-17 | Pure Storage, Inc. | Exposing a geometry of a storage device |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
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 |
US10191841B2 (en) | 2015-07-06 | 2019-01-29 | Shannon Systems Ltd. | Host device, access system, and access method |
CN106339179B (zh) * | 2015-07-06 | 2020-11-17 | 上海宝存信息科技有限公司 | 主机装置、存取系统、以及存取方法 |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US9697079B2 (en) | 2015-07-13 | 2017-07-04 | International Business Machines Corporation | Protecting data integrity in de-duplicated storage environments in combination with software defined native raid |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
US10180803B2 (en) | 2015-07-28 | 2019-01-15 | Futurewei Technologies, Inc. | Intelligent memory architecture for increased efficiency |
US9760432B2 (en) * | 2015-07-28 | 2017-09-12 | Futurewei Technologies, Inc. | Intelligent code apparatus, method, and computer program for memory |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
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 |
US10198194B2 (en) | 2015-08-24 | 2019-02-05 | Pure Storage, Inc. | Placing data within a storage device of a flash array |
US11294588B1 (en) | 2015-08-24 | 2022-04-05 | Pure Storage, Inc. | Placing data within a storage device |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
KR20170028825A (ko) | 2015-09-04 | 2017-03-14 | 퓨어 스토리지, 아이앤씨. | 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색 |
US9785525B2 (en) | 2015-09-24 | 2017-10-10 | Netapp, Inc. | High availability failover manager |
US10853266B2 (en) * | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US10360119B2 (en) | 2015-10-06 | 2019-07-23 | Netapp, Inc. | Data recovery in a distributed storage system |
US9886203B2 (en) | 2015-10-22 | 2018-02-06 | International Business Machines Corporation | Shifting wearout of storage disks |
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 |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US9836366B2 (en) | 2015-10-27 | 2017-12-05 | Netapp, Inc. | Third vote consensus in a cluster using shared storage devices |
US10284232B2 (en) | 2015-10-28 | 2019-05-07 | Pure Storage, Inc. | Dynamic error processing in a storage device |
US9740414B2 (en) | 2015-10-29 | 2017-08-22 | Pure Storage, Inc. | Optimizing copy operations |
US10374868B2 (en) | 2015-10-29 | 2019-08-06 | Pure Storage, Inc. | Distributed command processing in a flash storage system |
US10353777B2 (en) | 2015-10-30 | 2019-07-16 | Pure Storage, Inc. | Ensuring crash-safe forward progress of a system configuration update |
US10437480B2 (en) | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
US10235059B2 (en) | 2015-12-01 | 2019-03-19 | Netapp, Inc. | Technique for maintaining consistent I/O processing throughput in a storage system |
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 |
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 |
US9846538B2 (en) | 2015-12-07 | 2017-12-19 | International Business Machines Corporation | Data integrity and acceleration in compressed storage environments in combination with software defined native RAID |
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 |
US10162835B2 (en) | 2015-12-15 | 2018-12-25 | Pure Storage, Inc. | Proactive management of a plurality of storage arrays in a multi-array system |
US11347697B1 (en) | 2015-12-15 | 2022-05-31 | Pure Storage, Inc. | Proactively optimizing a storage system |
US10229009B2 (en) | 2015-12-16 | 2019-03-12 | Netapp, Inc. | Optimized file system layout for distributed consensus protocol |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10346043B2 (en) | 2015-12-28 | 2019-07-09 | Pure Storage, Inc. | Adaptive computing for data compression |
US10146618B2 (en) * | 2016-01-04 | 2018-12-04 | Western Digital Technologies, Inc. | Distributed data storage with reduced storage overhead using reduced-dependency erasure codes |
US9886314B2 (en) | 2016-01-28 | 2018-02-06 | Pure Storage, Inc. | Placing workloads in a multi-array system |
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 |
KR102533389B1 (ko) | 2016-02-24 | 2023-05-17 | 삼성전자주식회사 | 장치 수명을 향상시키는 데이터 저장 장치 및 이를 포함하는 raid 시스템 |
US10318378B2 (en) | 2016-02-25 | 2019-06-11 | Micron Technology, Inc | Redundant array of independent NAND for a three-dimensional memory array |
US10198313B2 (en) | 2016-03-11 | 2019-02-05 | Western Digital Technologies, Inc. | Redundancy of error correction encoded data in a storage system |
US11995315B2 (en) | 2016-03-16 | 2024-05-28 | Pure Storage, Inc. | Converting data formats in a storage system |
US9959043B2 (en) | 2016-03-16 | 2018-05-01 | Pure Storage, Inc. | Performing a non-disruptive upgrade of data in a storage system |
US10127113B1 (en) | 2016-03-31 | 2018-11-13 | EMC IP Holding Company LLC | Method and system for checkerboard RAID |
US9842084B2 (en) | 2016-04-05 | 2017-12-12 | E8 Storage Systems Ltd. | Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
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 |
US11809727B1 (en) | 2016-04-27 | 2023-11-07 | Pure Storage, Inc. | Predicting failures in a storage system that includes a plurality of storage devices |
US9811264B1 (en) | 2016-04-28 | 2017-11-07 | Pure Storage, Inc. | Deploying client-specific applications in a storage system utilizing redundant system resources |
US9952767B2 (en) | 2016-04-29 | 2018-04-24 | Netapp, Inc. | Consistency group management |
US10133503B1 (en) | 2016-05-02 | 2018-11-20 | Pure Storage, Inc. | Selecting a deduplication process based on a difference between performance metrics |
US10303390B1 (en) | 2016-05-02 | 2019-05-28 | Pure Storage, Inc. | Resolving fingerprint collisions in flash storage system |
US10452297B1 (en) | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a 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 |
TWI634418B (zh) * | 2016-07-13 | 2018-09-01 | 大陸商深圳衡宇芯片科技有限公司 | 用於程式化失敗時回復資料的方法與控制器及使用該方法與控制器的系統 |
US10452310B1 (en) | 2016-07-13 | 2019-10-22 | Pure Storage, Inc. | Validating cabling for storage component admission to a storage array |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US11706895B2 (en) | 2016-07-19 | 2023-07-18 | Pure Storage, Inc. | Independent scaling of compute resources and storage resources in a storage system |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US10459652B2 (en) | 2016-07-27 | 2019-10-29 | Pure Storage, Inc. | Evacuating blades in a storage array that includes a plurality of blades |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US10474363B1 (en) | 2016-07-29 | 2019-11-12 | Pure Storage, Inc. | Space reporting in a storage system |
US10290353B2 (en) * | 2016-09-06 | 2019-05-14 | Western Digital Technologies, Inc. | Error mitigation for 3D NAND flash memory |
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 |
US10146585B2 (en) | 2016-09-07 | 2018-12-04 | Pure Storage, Inc. | Ensuring the fair utilization of system resources using workload based, time-independent scheduling |
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 |
US11960348B2 (en) | 2016-09-07 | 2024-04-16 | Pure Storage, Inc. | Cloud-based monitoring of hardware components in a fleet of storage systems |
US10908966B1 (en) | 2016-09-07 | 2021-02-02 | Pure Storage, Inc. | Adapting target service times in a storage system |
US11481261B1 (en) | 2016-09-07 | 2022-10-25 | Pure Storage, Inc. | Preventing extended latency in a storage system |
US11531577B1 (en) | 2016-09-07 | 2022-12-20 | Pure Storage, Inc. | Temporarily limiting access to a storage device |
US11886922B2 (en) | 2016-09-07 | 2024-01-30 | Pure Storage, Inc. | Scheduling input/output operations for a storage system |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
KR102545698B1 (ko) | 2016-09-27 | 2023-06-19 | 삼성전자주식회사 | 데이터 저장 시스템 |
CN109196456B (zh) * | 2016-09-27 | 2021-06-04 | 株式会社日立制作所 | 存储系统和存储系统管理方法 |
US10162523B2 (en) | 2016-10-04 | 2018-12-25 | Pure Storage, Inc. | Migrating data between volumes using virtual copy operation |
US10545861B2 (en) | 2016-10-04 | 2020-01-28 | Pure Storage, Inc. | Distributed integrated high-speed solid-state non-volatile random-access memory |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10191662B2 (en) | 2016-10-04 | 2019-01-29 | Pure Storage, Inc. | Dynamic allocation of segments in a flash storage system |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
KR20180040767A (ko) | 2016-10-12 | 2018-04-23 | 삼성전자주식회사 | Raid 방식으로 데이터를 저장하는 스토리지 장치 |
US10372368B2 (en) | 2016-10-13 | 2019-08-06 | International Business Machines Corporation | Operating a RAID array with unequal stripes |
US11379132B1 (en) | 2016-10-20 | 2022-07-05 | Pure Storage, Inc. | Correlating medical sensor data |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10007459B2 (en) | 2016-10-20 | 2018-06-26 | Pure Storage, Inc. | Performance tuning in a storage system that includes one or more storage devices |
US10185505B1 (en) | 2016-10-28 | 2019-01-22 | Pure Storage, Inc. | Reading a portion of data to replicate a volume based on sequence numbers |
US10359942B2 (en) | 2016-10-31 | 2019-07-23 | Pure Storage, Inc. | Deduplication aware scalable content placement |
US10162566B2 (en) | 2016-11-22 | 2018-12-25 | Pure Storage, Inc. | Accumulating application-level statistics in a storage system |
US11620075B2 (en) | 2016-11-22 | 2023-04-04 | Pure Storage, Inc. | Providing application aware storage |
US10452290B2 (en) | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash 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 |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
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 |
US11093146B2 (en) | 2017-01-12 | 2021-08-17 | Pure Storage, Inc. | Automatic load rebalancing of a write group |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11340800B1 (en) | 2017-01-19 | 2022-05-24 | Pure Storage, Inc. | Content masking in a storage system |
US10503700B1 (en) | 2017-01-19 | 2019-12-10 | Pure Storage, Inc. | On-demand content filtering of snapshots within a storage system |
US10031872B1 (en) | 2017-01-23 | 2018-07-24 | E8 Storage Systems Ltd. | Storage in multi-queue storage devices using queue multiplexing and access control |
US11163624B2 (en) * | 2017-01-27 | 2021-11-02 | Pure Storage, Inc. | Dynamically adjusting an amount of log data generated for a storage system |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10503427B2 (en) | 2017-03-10 | 2019-12-10 | Pure Storage, Inc. | Synchronously replicating datasets and other managed objects to cloud-based storage systems |
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 |
US10866912B2 (en) | 2017-03-10 | 2020-12-15 | Toshiba Memory Corporation | Integrated heterogeneous solid state storage drive |
US11941279B2 (en) | 2017-03-10 | 2024-03-26 | Pure Storage, Inc. | Data path virtualization |
US11675520B2 (en) | 2017-03-10 | 2023-06-13 | Pure Storage, Inc. | Application replication among storage systems synchronously replicating a dataset |
US11089105B1 (en) | 2017-12-14 | 2021-08-10 | Pure Storage, Inc. | Synchronously replicating datasets in cloud-based storage systems |
US11803453B1 (en) | 2017-03-10 | 2023-10-31 | Pure Storage, Inc. | Using host connectivity states to avoid queuing I/O requests |
US10454810B1 (en) | 2017-03-10 | 2019-10-22 | Pure Storage, Inc. | Managing host definitions across a plurality of storage systems |
US11442825B2 (en) | 2017-03-10 | 2022-09-13 | Pure Storage, Inc. | Establishing a synchronous replication relationship between two or more storage systems |
US11169727B1 (en) | 2017-03-10 | 2021-11-09 | Pure Storage, Inc. | Synchronous replication between storage systems with virtualized storage |
US11762568B2 (en) | 2017-03-16 | 2023-09-19 | Microsoft Technology Licensing, Llc | Storage system control |
US10795760B2 (en) | 2017-03-20 | 2020-10-06 | Samsung Electronics Co., Ltd. | Key value SSD |
US11275762B2 (en) | 2017-03-20 | 2022-03-15 | Samsung Electronics Co., Ltd. | System and method for hybrid data reliability for object storage devices |
US10552062B2 (en) | 2017-03-20 | 2020-02-04 | Samsung Electronics Co., Ltd. | System and method for storing very large key value objects |
JP2018163450A (ja) * | 2017-03-24 | 2018-10-18 | 日本電気株式会社 | データ記憶制御装置、データ記憶システム、データ記憶方法およびプログラム |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
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 |
US11403019B2 (en) | 2017-04-21 | 2022-08-02 | Pure Storage, Inc. | Deduplication-aware per-tenant encryption |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10614019B2 (en) | 2017-04-28 | 2020-04-07 | EMC IP Holding Company LLC | Method and system for fast ordered writes with target collaboration |
US10289491B1 (en) * | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance |
US10466930B2 (en) | 2017-04-28 | 2019-11-05 | EMC IP Holding Company LLC | Method and system for fast ordered writes with atomic multicast |
US10339062B2 (en) | 2017-04-28 | 2019-07-02 | EMC IP Holding Company LLC | Method and system for writing data to and read data from persistent storage |
US10524022B2 (en) | 2017-05-02 | 2019-12-31 | Seagate Technology Llc | Data storage system with adaptive data path routing |
US11868629B1 (en) | 2017-05-05 | 2024-01-09 | Pure Storage, Inc. | Storage system sizing service |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US11989429B1 (en) | 2017-06-12 | 2024-05-21 | Pure Storage, Inc. | Recommending changes to a storage system |
US10552090B2 (en) * | 2017-09-07 | 2020-02-04 | Pure Storage, Inc. | Solid state drives with multiple types of addressable memory |
US11422731B1 (en) | 2017-06-12 | 2022-08-23 | Pure Storage, Inc. | Metadata-based replication of a dataset |
US11592991B2 (en) | 2017-09-07 | 2023-02-28 | Pure Storage, Inc. | Converting raid data between persistent storage types |
US11442669B1 (en) | 2018-03-15 | 2022-09-13 | Pure Storage, Inc. | Orchestrating a virtual storage system |
US11340939B1 (en) | 2017-06-12 | 2022-05-24 | Pure Storage, Inc. | Application-aware analytics for storage systems |
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 |
US10417092B2 (en) | 2017-09-07 | 2019-09-17 | Pure Storage, Inc. | Incremental RAID stripe update parity calculation |
US10884636B1 (en) | 2017-06-12 | 2021-01-05 | Pure Storage, Inc. | Presenting workload performance in a storage system |
US11016824B1 (en) | 2017-06-12 | 2021-05-25 | Pure Storage, Inc. | Event identification with out-of-order reporting in a cloud-based environment |
US11210133B1 (en) | 2017-06-12 | 2021-12-28 | Pure Storage, Inc. | Workload mobility between disparate execution environments |
US11609718B1 (en) | 2017-06-12 | 2023-03-21 | Pure Storage, Inc. | Identifying valid data after a storage system recovery |
CN116431072A (zh) | 2017-06-12 | 2023-07-14 | 净睿存储股份有限公司 | 集成到大容量存储设备的可访问快速耐久存储 |
US10853148B1 (en) | 2017-06-12 | 2020-12-01 | Pure Storage, Inc. | Migrating workloads between a plurality of execution environments |
US20180357017A1 (en) | 2017-06-12 | 2018-12-13 | Pure Storage, Inc. | Accessible fast durable storage integrated into a bulk storage device |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US11561714B1 (en) | 2017-07-05 | 2023-01-24 | Pure Storage, Inc. | Storage efficiency driven migration |
US10795583B2 (en) | 2017-07-19 | 2020-10-06 | Samsung Electronics Co., Ltd. | Automatic data placement manager in multi-tier all-flash datacenter |
US11477280B1 (en) | 2017-07-26 | 2022-10-18 | Pure Storage, Inc. | Integrating cloud storage services |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US11086525B2 (en) * | 2017-08-02 | 2021-08-10 | Kove Ip, Llc | Resilient external memory |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10685010B2 (en) | 2017-09-11 | 2020-06-16 | Amazon Technologies, Inc. | Shared volumes in distributed RAID over shared multi-queue storage devices |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10776202B1 (en) | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
US10789211B1 (en) | 2017-10-04 | 2020-09-29 | Pure Storage, Inc. | Feature-based deduplication |
US10452444B1 (en) | 2017-10-19 | 2019-10-22 | Pure Storage, Inc. | Storage system with compute resources and shared storage resources |
US10671434B1 (en) | 2017-10-19 | 2020-06-02 | Pure Storage, Inc. | Storage based artificial intelligence infrastructure |
US10360214B2 (en) | 2017-10-19 | 2019-07-23 | Pure Storage, Inc. | Ensuring reproducibility in an artificial intelligence infrastructure |
US11455168B1 (en) | 2017-10-19 | 2022-09-27 | Pure Storage, Inc. | Batch building for deep learning training workloads |
US11494692B1 (en) | 2018-03-26 | 2022-11-08 | Pure Storage, Inc. | Hyperscale artificial intelligence and machine learning infrastructure |
US11861423B1 (en) | 2017-10-19 | 2024-01-02 | Pure Storage, Inc. | Accelerating artificial intelligence (‘AI’) workflows |
CN107870744A (zh) * | 2017-10-27 | 2018-04-03 | 上海新储集成电路有限公司 | 一种非同步镜像的混合硬盘阵列存储系统及方法 |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
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 |
US10467107B1 (en) | 2017-11-01 | 2019-11-05 | Pure Storage, Inc. | Maintaining metadata resiliency among storage device failures |
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 |
US10509581B1 (en) | 2017-11-01 | 2019-12-17 | Pure Storage, Inc. | Maintaining write consistency in a multi-threaded storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10929226B1 (en) | 2017-11-21 | 2021-02-23 | Pure Storage, Inc. | Providing for increased flexibility for large scale parity |
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 |
US10496541B2 (en) | 2017-11-29 | 2019-12-03 | Samsung Electronics Co., Ltd. | Dynamic cache partition manager in heterogeneous virtualization cloud cache environment |
US10795598B1 (en) | 2017-12-07 | 2020-10-06 | Pure Storage, Inc. | Volume migration for storage systems synchronously replicating a dataset |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
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 |
US10901634B2 (en) | 2018-01-12 | 2021-01-26 | Seagate Technology Llc | Self-healing in a storage system where critical storage group is rebuilt with different raid geometry using remaining functioning drives (in the critical storage group) that have not failed, and not all data, drained from the critical storage group, is stopped in the critical storage group that is rebuilt |
US11144638B1 (en) | 2018-01-18 | 2021-10-12 | Pure Storage, Inc. | Method for storage system detection and alerting on potential malicious action |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US10970395B1 (en) | 2018-01-18 | 2021-04-06 | Pure Storage, Inc | Security threat monitoring for a storage system |
CN110058785B (zh) * | 2018-01-18 | 2022-07-05 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
US10992533B1 (en) | 2018-01-30 | 2021-04-27 | Pure Storage, Inc. | Policy based path management |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US10942650B1 (en) | 2018-03-05 | 2021-03-09 | Pure Storage, Inc. | Reporting capacity utilization in a storage system |
US10521151B1 (en) | 2018-03-05 | 2019-12-31 | Pure Storage, Inc. | Determining effective space utilization in a storage system |
US11861170B2 (en) | 2018-03-05 | 2024-01-02 | Pure Storage, Inc. | Sizing resources for a replication target |
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 |
US10296258B1 (en) | 2018-03-09 | 2019-05-21 | Pure Storage, Inc. | Offloading data storage to a decentralized storage network |
US10924548B1 (en) | 2018-03-15 | 2021-02-16 | Pure Storage, Inc. | Symmetric storage using 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 |
US11210009B1 (en) | 2018-03-15 | 2021-12-28 | Pure Storage, Inc. | Staging data 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 |
US10832728B2 (en) * | 2018-04-05 | 2020-11-10 | International Business Machines Corporation | Location selection based on adjacent location errors |
US11934322B1 (en) | 2018-04-05 | 2024-03-19 | Pure Storage, Inc. | Multiple encryption keys on storage drives |
US11436344B1 (en) | 2018-04-24 | 2022-09-06 | Pure Storage, Inc. | Secure encryption in deduplication cluster |
US11392553B1 (en) | 2018-04-24 | 2022-07-19 | Pure Storage, Inc. | Remote data management |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US10678433B1 (en) | 2018-04-27 | 2020-06-09 | Pure Storage, Inc. | Resource-preserving system upgrade |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
TWI650763B (zh) * | 2018-05-14 | 2019-02-11 | 慧榮科技股份有限公司 | 用來進行記憶裝置的頁可用性管理之方法、記憶裝置及電子裝置以及頁可用性管理系統 |
US11455409B2 (en) | 2018-05-21 | 2022-09-27 | Pure Storage, Inc. | Storage layer data obfuscation |
US11675503B1 (en) | 2018-05-21 | 2023-06-13 | Pure Storage, Inc. | Role-based data access |
US11954220B2 (en) | 2018-05-21 | 2024-04-09 | Pure Storage, Inc. | Data protection for container storage |
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 |
US10678436B1 (en) | 2018-05-29 | 2020-06-09 | Pure Storage, Inc. | Using a PID controller to opportunistically compress more data during garbage collection |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US10776046B1 (en) | 2018-06-08 | 2020-09-15 | Pure Storage, Inc. | Optimized non-uniform memory access |
US11281577B1 (en) | 2018-06-19 | 2022-03-22 | Pure Storage, Inc. | Garbage collection tuning for low drive wear |
US10929229B2 (en) | 2018-06-21 | 2021-02-23 | International Business Machines Corporation | Decentralized RAID scheme having distributed parity computation and recovery |
US10884889B2 (en) * | 2018-06-22 | 2021-01-05 | Seagate Technology Llc | Allocating part of a raid stripe to repair a second raid stripe |
US11748196B2 (en) | 2018-06-29 | 2023-09-05 | International Business Machines Corporation | Adaptive parity rotation for redundant arrays of independent disks |
US11157361B2 (en) | 2018-06-29 | 2021-10-26 | International Business Machines Corporation | Efficient utilization of storage space in arrays of storage drives |
US11869586B2 (en) | 2018-07-11 | 2024-01-09 | Pure Storage, Inc. | Increased data protection by recovering data from partially-failed solid-state devices |
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 |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US11632360B1 (en) | 2018-07-24 | 2023-04-18 | Pure Storage, Inc. | Remote access to a storage device |
US11146564B1 (en) | 2018-07-24 | 2021-10-12 | Pure Storage, Inc. | Login authentication in a cloud storage platform |
US11954238B1 (en) | 2018-07-24 | 2024-04-09 | Pure Storage, Inc. | Role-based access control for a storage system |
CN112513804B (zh) | 2018-07-26 | 2022-08-19 | 华为技术有限公司 | 一种数据处理方法及装置 |
US11055008B2 (en) * | 2018-08-02 | 2021-07-06 | EMC IP Holding Company LLC | Managing wear balancing in mapped RAID storage systems |
US10996886B2 (en) * | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11194759B2 (en) | 2018-09-06 | 2021-12-07 | Pure Storage, Inc. | Optimizing local data relocation operations of a storage device of a storage system |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US11133076B2 (en) | 2018-09-06 | 2021-09-28 | Pure Storage, Inc. | Efficient relocation of data between storage devices of a storage system |
US11860820B1 (en) | 2018-09-11 | 2024-01-02 | Pure Storage, Inc. | Processing data through a storage system in a data pipeline |
TWI703438B (zh) * | 2018-09-11 | 2020-09-01 | 慧榮科技股份有限公司 | 映射表更新方法 |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10846216B2 (en) | 2018-10-25 | 2020-11-24 | Pure Storage, Inc. | Scalable garbage collection |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US10671302B1 (en) | 2018-10-26 | 2020-06-02 | Pure Storage, Inc. | Applying a rate limit across a plurality of storage systems |
US11113409B2 (en) | 2018-10-26 | 2021-09-07 | Pure Storage, Inc. | Efficient rekey in a transparent decrypting storage array |
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 |
US11023179B2 (en) | 2018-11-18 | 2021-06-01 | Pure Storage, Inc. | Cloud-based storage system storage management |
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 |
US11194473B1 (en) | 2019-01-23 | 2021-12-07 | Pure Storage, Inc. | Programming frequently read data to low latency portions of a solid-state storage array |
US11588633B1 (en) | 2019-03-15 | 2023-02-21 | Pure Storage, Inc. | Decommissioning keys in a decryption storage system |
US11042452B1 (en) | 2019-03-20 | 2021-06-22 | Pure Storage, Inc. | Storage system data recovery using data recovery as a service |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11221778B1 (en) | 2019-04-02 | 2022-01-11 | Pure Storage, Inc. | Preparing data for deduplication |
US11397674B1 (en) | 2019-04-03 | 2022-07-26 | Pure Storage, Inc. | Optimizing garbage collection across heterogeneous flash devices |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US10990480B1 (en) | 2019-04-05 | 2021-04-27 | Pure Storage, Inc. | Performance of RAID rebuild operations by a storage group controller of a storage system |
US11068162B1 (en) | 2019-04-09 | 2021-07-20 | Pure Storage, Inc. | Storage management in a cloud data store |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11126364B2 (en) | 2019-07-18 | 2021-09-21 | Pure Storage, Inc. | Virtual storage system architecture |
US11853266B2 (en) | 2019-05-15 | 2023-12-26 | Pure Storage, Inc. | Providing a file system in a cloud environment |
US11327676B1 (en) | 2019-07-18 | 2022-05-10 | Pure Storage, Inc. | Predictive data streaming in a virtual storage system |
US11392555B2 (en) | 2019-05-15 | 2022-07-19 | Pure Storage, Inc. | Cloud-based file services |
US12001355B1 (en) | 2019-05-24 | 2024-06-04 | Pure Storage, Inc. | Chunked memory efficient storage data transfers |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11106370B2 (en) | 2019-07-02 | 2021-08-31 | Micron Technology, Inc. | Changing of memory components to be used for a stripe based on an endurance condition |
US10929046B2 (en) | 2019-07-09 | 2021-02-23 | Pure Storage, Inc. | Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device |
US11422751B2 (en) | 2019-07-18 | 2022-08-23 | Pure Storage, Inc. | Creating a virtual storage system |
US11797197B1 (en) | 2019-07-18 | 2023-10-24 | Pure Storage, Inc. | Dynamic scaling of 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 |
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 |
US11086713B1 (en) | 2019-07-23 | 2021-08-10 | Pure Storage, Inc. | Optimized end-to-end integrity storage system |
JP6942163B2 (ja) * | 2019-08-06 | 2021-09-29 | 株式会社日立製作所 | ドライブボックス、ストレージシステム及びデータ転送方法 |
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 |
US11963321B2 (en) | 2019-09-11 | 2024-04-16 | Pure Storage, Inc. | Low profile latching mechanism |
US11797569B2 (en) | 2019-09-13 | 2023-10-24 | Pure Storage, Inc. | Configurable data replication |
US11360689B1 (en) | 2019-09-13 | 2022-06-14 | Pure Storage, Inc. | Cloning a tracking copy of replica data |
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 |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11403043B2 (en) | 2019-10-15 | 2022-08-02 | Pure Storage, Inc. | Efficient data compression by grouping similar data within a data segment |
RU2019134842A (ru) * | 2019-10-30 | 2021-04-30 | ИЭмСи АйПи ХОЛДИНГ КОМПАНИ, ЛЛС | Система и способ выбора уровня избыточного массива независимых дисков (raid) для экстента сегмента запоминающего устройства |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US11625481B2 (en) | 2019-11-22 | 2023-04-11 | Pure Storage, Inc. | Selective throttling of operations potentially related to a security threat to a storage system |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US11720714B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Inter-I/O relationship based detection of a security threat to a storage system |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for a storage system |
US11755751B2 (en) | 2019-11-22 | 2023-09-12 | Pure Storage, Inc. | Modify access restrictions in response to a possible attack against data stored by a storage system |
US11657155B2 (en) | 2019-11-22 | 2023-05-23 | Pure Storage, Inc | Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system |
US11531487B1 (en) | 2019-12-06 | 2022-12-20 | Pure Storage, Inc. | Creating a replica of a storage system |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11733901B1 (en) | 2020-01-13 | 2023-08-22 | Pure Storage, Inc. | Providing persistent storage to transient cloud computing services |
US11709636B1 (en) | 2020-01-13 | 2023-07-25 | Pure Storage, Inc. | Non-sequential readahead for deep learning training |
US11720497B1 (en) | 2020-01-13 | 2023-08-08 | Pure Storage, Inc. | Inferred nonsequential prefetch based on data access patterns |
US12014065B2 (en) | 2020-02-11 | 2024-06-18 | Pure Storage, Inc. | Multi-cloud orchestration as-a-service |
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 |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US10990474B1 (en) * | 2020-03-06 | 2021-04-27 | Seagate Technology Llc | Cost-benefit aware read-amplification in RAID scrubbing |
US11321006B1 (en) | 2020-03-25 | 2022-05-03 | Pure Storage, Inc. | Data loss prevention during transitions from a replication source |
US11301152B1 (en) | 2020-04-06 | 2022-04-12 | Pure Storage, Inc. | Intelligently moving data between storage systems |
US11630598B1 (en) | 2020-04-06 | 2023-04-18 | Pure Storage, Inc. | Scheduling data replication operations |
US11494267B2 (en) | 2020-04-14 | 2022-11-08 | Pure Storage, Inc. | Continuous value data redundancy |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US11921670B1 (en) | 2020-04-20 | 2024-03-05 | Pure Storage, Inc. | Multivariate data backup retention policies |
US11789611B2 (en) | 2020-04-24 | 2023-10-17 | Netapp, Inc. | Methods for handling input-output operations in zoned storage systems and devices thereof |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
WO2021232024A1 (en) * | 2020-05-15 | 2021-11-18 | Rey Bruce | Artificial intelligence-based hybrid raid controller device |
US11431488B1 (en) | 2020-06-08 | 2022-08-30 | Pure Storage, Inc. | Protecting local key generation using a remote key management service |
CN111767165B (zh) * | 2020-06-30 | 2024-06-14 | 杭州海康存储科技有限公司 | 数据处理方法、装置及控制设备 |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11442652B1 (en) | 2020-07-23 | 2022-09-13 | Pure Storage, Inc. | Replication handling during storage system transportation |
US11349917B2 (en) | 2020-07-23 | 2022-05-31 | Pure Storage, Inc. | Replication handling among distinct networks |
US11507298B2 (en) * | 2020-08-18 | 2022-11-22 | PetaIO Inc. | Computational storage systems and methods |
US11275652B1 (en) * | 2020-09-01 | 2022-03-15 | EMC IP Holding Company LLC | Storing erasure coded data based on reliability of storage devices |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11934675B2 (en) * | 2020-09-12 | 2024-03-19 | Western Digital Technologies, Inc. | Mixed mode block cycling for intermediate data |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
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 |
EP4281853A1 (en) * | 2021-01-25 | 2023-11-29 | Volumez Technologies Ltd. | Method and system for distributed lvm |
US11340987B1 (en) | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
CN115220646A (zh) * | 2021-04-21 | 2022-10-21 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
US20220365827A1 (en) | 2021-05-12 | 2022-11-17 | Pure Storage, Inc. | Rebalancing In A Fleet Of Storage Systems Using Data Science |
US11816129B2 (en) | 2021-06-22 | 2023-11-14 | Pure Storage, Inc. | Generating datasets using approximate baselines |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
JP2023044168A (ja) | 2021-09-17 | 2023-03-30 | キオクシア株式会社 | メモリコントローラ、メモリシステム、及び情報処理システム |
US11797377B2 (en) | 2021-10-05 | 2023-10-24 | Netapp, Inc. | Efficient parity determination in zoned solid-state drives of a storage system |
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 |
US11914867B2 (en) | 2021-10-29 | 2024-02-27 | Pure Storage, Inc. | Coordinated snapshots among storage systems implementing a promotion/demotion model |
US11803329B2 (en) | 2021-11-22 | 2023-10-31 | Netapp, Inc. | Methods and systems for processing write requests in a storage system |
US11922052B2 (en) | 2021-12-15 | 2024-03-05 | Pure Storage, Inc. | Managing links between storage objects |
US11816359B2 (en) | 2021-12-16 | 2023-11-14 | Netapp, Inc. | Scalable solid-state storage system and methods thereof |
US11940911B2 (en) | 2021-12-17 | 2024-03-26 | Netapp, Inc. | Persistent key-value store and journaling system |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
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 |
CN114442950B (zh) * | 2022-01-21 | 2024-01-23 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据恢复方法、系统、装置及计算机可读存储介质 |
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 |
WO2023162465A1 (ja) * | 2022-02-24 | 2023-08-31 | ソニーセミコンダクタソリューションズ株式会社 | ライトバッファ制御回路 |
CN116027991B (zh) * | 2023-03-29 | 2023-09-19 | 苏州浪潮智能科技有限公司 | Raid阵列管理方法、装置、raid卡及存储介质 |
CN117908804B (zh) * | 2024-03-19 | 2024-05-28 | 中国空气动力研究与发展中心计算空气动力研究所 | 基于作业感知的文件条带化方法、装置、设备及介质 |
Family Cites Families (200)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5208813A (en) | 1990-10-23 | 1993-05-04 | Array Technology Corporation | On-line reconstruction of a failed redundant array system |
AU8683991A (en) * | 1990-11-09 | 1992-05-14 | Array Technology Corporation | Logical partitioning of a redundant array storage system |
US5379305A (en) * | 1992-07-20 | 1995-01-03 | Digital Equipment Corporation | Error correction system with selectable error correction capabilities |
US5403639A (en) | 1992-09-02 | 1995-04-04 | Storage Technology Corporation | File server having snapshot application data groups |
DE9310582U1 (de) | 1993-07-15 | 1993-09-23 | Paul Hettich GmbH & Co, 32278 Kirchlengern | Rasteinrichtung fuer schubkaesten o.dgl. |
JP2905368B2 (ja) * | 1993-08-10 | 1999-06-14 | 富士通株式会社 | 誤り検出・訂正方法 |
US5479653A (en) * | 1994-07-14 | 1995-12-26 | Dellusa, L.P. | Disk array apparatus and method which supports compound raid configurations and spareless hot sparing |
JPH08137627A (ja) * | 1994-11-07 | 1996-05-31 | Fujitsu Ltd | ディスクアレイ装置 |
US6412045B1 (en) | 1995-05-23 | 2002-06-25 | Lsi Logic Corporation | Method for transferring data from a host computer to a storage media using selectable caching strategies |
JP3062050B2 (ja) | 1995-07-21 | 2000-07-10 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | ディスク駆動制御方法及び装置 |
US5822782A (en) | 1995-10-27 | 1998-10-13 | Symbios, Inc. | Methods and structure to maintain raid configuration information on disks of the array |
JP3648311B2 (ja) | 1995-12-12 | 2005-05-18 | 富士通株式会社 | ディスクアレイ装置 |
JPH09244931A (ja) | 1996-03-06 | 1997-09-19 | Mitsubishi Electric Corp | リアルタイムファイルシステム |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
JP3595099B2 (ja) * | 1997-03-17 | 2004-12-02 | 富士通株式会社 | デバイスアレイ・システム |
US5940838A (en) | 1997-07-11 | 1999-08-17 | International Business Machines Corporation | Parallel file system and method anticipating cache usage patterns |
US6038639A (en) | 1997-09-09 | 2000-03-14 | Storage Technology Corporation | Data file storage management system for snapshot copy operations |
JPH11305954A (ja) | 1998-04-27 | 1999-11-05 | Oki Electric Ind Co Ltd | 半導体記憶装置及び半導体記憶装置の書き換え制御方法 |
US6530035B1 (en) * | 1998-10-23 | 2003-03-04 | Oracle Corporation | Method and system for managing storage systems containing redundancy data |
US6799283B1 (en) | 1998-12-04 | 2004-09-28 | Matsushita Electric Industrial Co., Ltd. | Disk array device |
JP2000181803A (ja) | 1998-12-18 | 2000-06-30 | Fujitsu Ltd | 鍵管理機能付電子データ保管装置および電子データ保管方法 |
US6275898B1 (en) * | 1999-05-13 | 2001-08-14 | Lsi Logic Corporation | Methods and structure for RAID level migration within a logical unit |
US6834298B1 (en) | 1999-09-21 | 2004-12-21 | Siemens Information And Communication Networks, Inc. | System and method for network auto-discovery and configuration |
US6516425B1 (en) * | 1999-10-29 | 2003-02-04 | Hewlett-Packard Co. | Raid rebuild using most vulnerable data redundancy scheme first |
US6826711B2 (en) * | 2000-02-18 | 2004-11-30 | Avamar Technologies, Inc. | System and method for data protection with multidimensional parity |
US6804755B2 (en) | 2000-06-19 | 2004-10-12 | Storage Technology Corporation | Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme |
US6912537B2 (en) | 2000-06-20 | 2005-06-28 | Storage Technology Corporation | Dynamically changeable virtual mapping scheme |
JP2002108573A (ja) | 2000-09-28 | 2002-04-12 | Nec Corp | ディスクアレイ装置、そのエラー制御方法、ならびにその制御プログラムを記録した記録媒体 |
US6718448B1 (en) | 2000-11-28 | 2004-04-06 | Emc Corporation | Queued locking of a shared resource using multimodal lock types |
US6757769B1 (en) | 2000-11-28 | 2004-06-29 | Emc Corporation | Cooperative lock override procedure |
KR100388498B1 (ko) * | 2000-12-30 | 2003-06-25 | 한국전자통신연구원 | 복수 개의 레이드를 구비한 계층적 레이드 시스템 |
US6681290B2 (en) | 2001-01-29 | 2004-01-20 | International Business Machines Corporation | Physical data layout to reduce seeks in a raid system |
US6850938B1 (en) | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
WO2002065298A1 (en) | 2001-02-13 | 2002-08-22 | Candera, Inc. | Silicon-based storage virtualization server |
US6854071B2 (en) | 2001-05-14 | 2005-02-08 | International Business Machines Corporation | Method and apparatus for providing write recovery of faulty data in a non-redundant raid system |
US6981171B2 (en) * | 2001-06-05 | 2005-12-27 | Sun Microsystems, Inc. | Data storage array employing block verification information to invoke initialization procedures |
US7075874B2 (en) * | 2001-07-17 | 2006-07-11 | Hewlett-Packard Development Company, L.P. | Data storage device monitoring system, method and removable data carrier use with data storage systems |
US6961890B2 (en) * | 2001-08-16 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Dynamic variable-length error correction code |
JP2003122508A (ja) * | 2001-10-15 | 2003-04-25 | Hitachi Ltd | ボリューム管理方法及び装置 |
US6973549B1 (en) | 2001-12-10 | 2005-12-06 | Incipient, Inc. | Locking technique for control and synchronization |
US6986015B2 (en) | 2001-12-10 | 2006-01-10 | Incipient, Inc. | Fast path caching |
US7111117B2 (en) * | 2001-12-19 | 2006-09-19 | Broadcom Corporation | Expansion of RAID subsystems using spare space with immediate access to new space |
US7200715B2 (en) | 2002-03-21 | 2007-04-03 | Network Appliance, Inc. | Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes |
US6985995B2 (en) * | 2002-03-29 | 2006-01-10 | Panasas, Inc. | Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data |
US6938123B2 (en) | 2002-07-19 | 2005-08-30 | Storage Technology Corporation | System and method for raid striping |
US7260628B2 (en) | 2002-09-06 | 2007-08-21 | Hitachi, Ltd. | Event notification in storage networks |
US7216164B1 (en) | 2002-10-09 | 2007-05-08 | Cisco Technology, Inc. | Methods and apparatus for determining the performance of a server |
US6952794B2 (en) * | 2002-10-10 | 2005-10-04 | Ching-Hung Lu | Method, system and apparatus for scanning newly added disk drives and automatically updating RAID configuration and rebuilding RAID data |
US7028218B2 (en) | 2002-12-02 | 2006-04-11 | Emc Corporation | Redundant multi-processor and logical processor configuration for a file server |
JP2004213064A (ja) * | 2002-12-26 | 2004-07-29 | Fujitsu Ltd | Raid装置及びその論理デバイス拡張方法 |
CA2520882A1 (en) | 2003-04-07 | 2004-10-28 | Itracs Corporation | Network security system based on physical location |
US7424498B1 (en) | 2003-06-30 | 2008-09-09 | Data Domain, Inc. | Probabilistic summary data structure based encoding for garbage collection |
GB0320494D0 (en) | 2003-09-02 | 2003-10-01 | Ibm | Methods apparatus and controllers for a raid storage system |
US7865485B2 (en) | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
US7206991B2 (en) * | 2003-10-15 | 2007-04-17 | Lsi Logic Corporation | Method, apparatus and program for migrating between striped storage and parity striped storage |
JP4426262B2 (ja) | 2003-11-26 | 2010-03-03 | 株式会社日立製作所 | ディスクアレイ装置及びディスクアレイ装置の障害回避方法 |
US8560747B1 (en) | 2007-02-16 | 2013-10-15 | Vmware, Inc. | Associating heartbeat data with access to shared resources of a computer system |
JP4456909B2 (ja) | 2004-03-29 | 2010-04-28 | 株式会社日立製作所 | バックアップ方法、ストレージシステム及びそのプログラム |
JP2005293774A (ja) | 2004-04-02 | 2005-10-20 | Hitachi Global Storage Technologies Netherlands Bv | ディスク装置の制御方法 |
US7424482B2 (en) | 2004-04-26 | 2008-09-09 | Storwize Inc. | Method and system for compression of data for block mode access storage |
EP1776699A1 (en) * | 2004-08-02 | 2007-04-25 | Koninklijke Philips Electronics N.V. | Data storage and replay apparatus |
US7681072B1 (en) | 2004-08-13 | 2010-03-16 | Panasas, Inc. | Systems and methods for facilitating file reconstruction and restoration in data storage systems where a RAID-X format is implemented at a file level within a plurality of storage devices |
JP4555029B2 (ja) * | 2004-09-01 | 2010-09-29 | 株式会社日立製作所 | ディスクアレイ装置 |
US7330998B2 (en) * | 2004-09-20 | 2008-02-12 | Intel Corporation | Data integrity verification |
US20060074940A1 (en) | 2004-10-05 | 2006-04-06 | International Business Machines Corporation | Dynamic management of node clusters to enable data sharing |
US7769975B2 (en) * | 2004-11-15 | 2010-08-03 | International Business Machines Corporation | Method for configuring volumes in a storage system |
JP4324088B2 (ja) * | 2004-12-17 | 2009-09-02 | 富士通株式会社 | データ複製制御装置 |
US7363444B2 (en) | 2005-01-10 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Method for taking snapshots of data |
US7398460B1 (en) * | 2005-01-31 | 2008-07-08 | Network Appliance, Inc. | Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array |
US7484137B2 (en) | 2005-03-31 | 2009-01-27 | Hitachi Global Storage Technologies Netherlands B.V. | RAID system using regional error statistics for redundancy grouping |
US7913300B1 (en) | 2005-04-08 | 2011-03-22 | Netapp, Inc. | Centralized role-based access control for storage servers |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
WO2006123416A1 (ja) | 2005-05-19 | 2006-11-23 | Fujitsu Limited | ディスク故障復旧方法及びディスクアレイ装置 |
US8364845B2 (en) | 2005-05-19 | 2013-01-29 | Wyse Technology Inc. | Method and system for thin client configuration |
JP4347265B2 (ja) * | 2005-05-31 | 2009-10-21 | Necシステムテクノロジー株式会社 | Raid制御装置、およびraid制御方法 |
JP4690783B2 (ja) * | 2005-06-08 | 2011-06-01 | 株式会社日立製作所 | ボリューム管理システムおよびその方法 |
US7933936B2 (en) | 2005-06-10 | 2011-04-26 | Network Appliance, Inc. | Method and system for automatic management of storage space |
US7979613B2 (en) | 2005-07-15 | 2011-07-12 | International Business Machines Corporation | Performance of a storage system |
JP2007087036A (ja) | 2005-09-21 | 2007-04-05 | Hitachi Ltd | スナップショット維持装置及び方法 |
JP4662548B2 (ja) | 2005-09-27 | 2011-03-30 | 株式会社日立製作所 | スナップショット管理装置及び方法並びにストレージシステム |
US20070124648A1 (en) * | 2005-10-31 | 2007-05-31 | Ajay Dholakia | Data protection method |
JP2007199953A (ja) | 2006-01-25 | 2007-08-09 | Fujitsu Ltd | ディスクアレイ装置およびディスクアレイ制御方法 |
JP4927408B2 (ja) | 2006-01-25 | 2012-05-09 | 株式会社日立製作所 | 記憶システム及びそのデータ復元方法 |
US7743197B2 (en) | 2006-05-11 | 2010-06-22 | Emulex Design & Manufacturing Corporation | System and method for virtualizing PCIe devices |
JP2007233903A (ja) | 2006-03-03 | 2007-09-13 | Hitachi Ltd | 記憶制御装置及び記憶制御装置のデータ回復方法 |
US8832247B2 (en) | 2006-03-24 | 2014-09-09 | Blue Coat Systems, Inc. | Methods and systems for caching content at multiple levels |
US7580956B1 (en) * | 2006-05-04 | 2009-08-25 | Symantec Operating Corporation | System and method for rating reliability of storage devices |
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 |
US7739576B2 (en) * | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
US7555599B2 (en) | 2006-09-06 | 2009-06-30 | International Business Machines Corporation | System and method of mirrored RAID array write management |
US7475215B2 (en) | 2006-09-08 | 2009-01-06 | Lsi Corporation | Identification of uncommitted memory blocks during an initialization procedure |
JP4573898B2 (ja) | 2006-11-27 | 2010-11-04 | 富士通株式会社 | サーバ管理プログラム、メールサーバ管理プログラム、サーバ管理システム、管理サーバおよびサーバ管理方法 |
US8694712B2 (en) | 2006-12-05 | 2014-04-08 | Microsoft Corporation | Reduction of operational costs of virtual TLBs |
WO2008070173A1 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage |
US20080155191A1 (en) | 2006-12-21 | 2008-06-26 | Anderson Robert J | Systems and methods for providing heterogeneous storage systems |
US8370562B2 (en) | 2007-02-25 | 2013-02-05 | Sandisk Il Ltd. | Interruptible cache flushing in flash memory systems |
US9632870B2 (en) | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
JP4900811B2 (ja) | 2007-03-30 | 2012-03-21 | 株式会社日立製作所 | 記憶システムおよび記憶制御方法 |
JP4529990B2 (ja) | 2007-03-30 | 2010-08-25 | ブラザー工業株式会社 | 画像処理プログラム及び画像処理装置 |
US7958303B2 (en) | 2007-04-27 | 2011-06-07 | Gary Stephen Shuster | Flexible data storage system |
US8086652B1 (en) | 2007-04-27 | 2011-12-27 | Netapp, Inc. | Storage system-based hole punching for reclaiming unused space from a data container |
EP2154815A4 (en) | 2007-05-30 | 2012-11-14 | Fujitsu Ltd | IMAGE ENCRYPTION DEVICE, IMAGE KEYING DEVICE, METHOD AND PROGRAM |
US7765426B2 (en) | 2007-06-07 | 2010-07-27 | Micron Technology, Inc. | Emerging bad block detection |
JP4894922B2 (ja) * | 2007-06-13 | 2012-03-14 | 富士通株式会社 | Raidグループ変換装置、raidグループ変換方法およびraidグループ変換プログラム |
US8874854B2 (en) | 2007-07-30 | 2014-10-28 | International Business Machines Corporation | Method for selectively enabling and disabling read caching in a storage subsystem |
JP2009037304A (ja) * | 2007-07-31 | 2009-02-19 | Hitachi Ltd | Raidレベルを変更する機能を有したストレージシステム |
CN101402501A (zh) | 2007-10-02 | 2009-04-08 | 周述均 | 医院污水无害化处理工艺及其全自动控制装置 |
JP2009211202A (ja) * | 2008-02-29 | 2009-09-17 | Toshiba Corp | メモリシステム |
US7970994B2 (en) | 2008-03-04 | 2011-06-28 | International Business Machines Corporation | High performance disk array rebuild |
US8352540B2 (en) | 2008-03-06 | 2013-01-08 | International Business Machines Corporation | Distinguishing data streams to enhance data storage efficiency |
JP4862847B2 (ja) * | 2008-03-07 | 2012-01-25 | 日本電気株式会社 | ディスクアレイのデータ復旧方法、ディスクアレイシステム及び制御プログラム |
US7873619B1 (en) | 2008-03-31 | 2011-01-18 | Emc Corporation | Managing metadata |
US8621241B1 (en) | 2008-04-25 | 2013-12-31 | Netapp, Inc. | Storage and recovery of cryptographic key identifiers |
US7958304B1 (en) * | 2008-04-30 | 2011-06-07 | Network Appliance, Inc. | Dynamically adapting the fault tolerance and performance characteristics of a raid-based storage system by merging and splitting raid groups |
US8117464B1 (en) | 2008-04-30 | 2012-02-14 | Netapp, Inc. | Sub-volume level security for deduplicated data |
US20090300283A1 (en) * | 2008-05-29 | 2009-12-03 | Yutaka Kudo | Method and apparatus for dissolving hot spots in storage systems |
US9678879B2 (en) | 2008-05-29 | 2017-06-13 | Red Hat, Inc. | Set partitioning for encoding file system allocation metadata |
JP2010015197A (ja) * | 2008-06-30 | 2010-01-21 | Toshiba Corp | ストレージ制御装置、データ復元装置およびストレージシステム |
US8296547B2 (en) | 2008-08-27 | 2012-10-23 | International Business Machines Corporation | Loading entries into a TLB in hardware via indirect TLB entries |
US20100057673A1 (en) | 2008-09-04 | 2010-03-04 | Boris Savov | Reusable mapping rules for data to data transformation |
JP4792490B2 (ja) * | 2008-09-08 | 2011-10-12 | 株式会社日立製作所 | 記憶制御装置及びraidグループの拡張方法 |
US20100077205A1 (en) | 2008-09-19 | 2010-03-25 | Ekstrom Joseph J | System and Method for Cipher E-Mail Protection |
US8756369B2 (en) | 2008-09-26 | 2014-06-17 | Netapp, Inc. | Priority command queues for low latency solid state drives |
US8239734B1 (en) * | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
JP4399021B1 (ja) | 2008-10-29 | 2010-01-13 | 株式会社東芝 | ディスクアレイ制御装置および記憶装置 |
US7945733B2 (en) | 2008-12-12 | 2011-05-17 | Lsi Corporation | Hierarchical storage management (HSM) for redundant array of independent disks (RAID) |
US8200922B2 (en) | 2008-12-17 | 2012-06-12 | Netapp, Inc. | Storage system snapshot assisted by SSD technology |
US20110258362A1 (en) | 2008-12-19 | 2011-10-20 | Mclaren Moray | Redundant data storage for uniform read latency |
US8312204B2 (en) | 2009-01-23 | 2012-11-13 | Seagate Technology Llc | System and method for wear leveling in a data storage device |
JP4869368B2 (ja) | 2009-03-12 | 2012-02-08 | 株式会社東芝 | ストレージ装置及び仮想化装置 |
US7941584B2 (en) | 2009-03-26 | 2011-05-10 | Arm Limited | Data processing apparatus and method for performing hazard detection |
US8205065B2 (en) | 2009-03-30 | 2012-06-19 | Exar Corporation | System and method for data deduplication |
US8560787B2 (en) | 2009-03-30 | 2013-10-15 | International Business Machines Corporation | Incremental backup of source to target storage volume |
TWI397009B (zh) | 2009-04-30 | 2013-05-21 | Inventec Corp | 基本輸入輸出系統的資料處理裝置 |
US8180955B2 (en) | 2009-05-06 | 2012-05-15 | Via Telecom, Inc. | Computing systems and methods for managing flash memory device |
US8037391B1 (en) | 2009-05-22 | 2011-10-11 | Nvidia Corporation | Raid-6 computation system and method |
CN101576833B (zh) * | 2009-06-26 | 2012-05-23 | 杭州华三通信技术有限公司 | 一种独立磁盘冗余阵列raid数据重建方法和装置 |
EP2302637B1 (fr) | 2009-09-21 | 2014-09-03 | STMicroelectronics (Rousset) SAS | Méthode d'écriture de données dans une mémoire non volatile, protegée contre l'arrachement |
US8688906B2 (en) * | 2009-11-16 | 2014-04-01 | Lenovo (Singapore) Pte. Ltd. | Apparatus and method for distributing writes asymmetrically among drives |
US8510569B2 (en) | 2009-12-16 | 2013-08-13 | Intel Corporation | Providing integrity verification and attestation in a hidden execution environment |
US9134918B2 (en) | 2009-12-31 | 2015-09-15 | Sandisk Technologies Inc. | Physical compression of data with flat or systematic pattern |
US8452932B2 (en) | 2010-01-06 | 2013-05-28 | Storsimple, Inc. | System and method for efficiently creating off-site data volume back-ups |
WO2011104663A1 (en) | 2010-02-23 | 2011-09-01 | Confidato Security Solutions Ltd | Method and computer program product for order preserving symbol based encryption |
JP4892072B2 (ja) | 2010-03-24 | 2012-03-07 | 株式会社東芝 | ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法 |
US20110252289A1 (en) * | 2010-04-08 | 2011-10-13 | Seagate Technology Llc | Adjusting storage device parameters based on reliability sensing |
US8799747B2 (en) * | 2010-06-03 | 2014-08-05 | Seagate Technology Llc | Data hardening to compensate for loss of data retention characteristics in a non-volatile memory |
US8738970B2 (en) | 2010-07-23 | 2014-05-27 | Salesforce.Com, Inc. | Generating performance alerts |
US8713268B2 (en) | 2010-08-05 | 2014-04-29 | Ut-Battelle, Llc | Coordinated garbage collection for raid array of solid state disks |
US8468318B2 (en) | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes in a storage environment |
US8589625B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
US8463991B2 (en) * | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US9229808B2 (en) * | 2010-10-01 | 2016-01-05 | Pure Storage, Inc. | Reconstruct reads in a raid array with dynamic geometries |
US20120117029A1 (en) | 2010-11-08 | 2012-05-10 | Stephen Gold | Backup policies for using different storage tiers |
US9092337B2 (en) | 2011-01-31 | 2015-07-28 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing eviction of data |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
US8595267B2 (en) | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
US8751463B1 (en) | 2011-06-30 | 2014-06-10 | Emc Corporation | Capacity forecasting for a deduplicating storage system |
US8788788B2 (en) | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US8793467B2 (en) | 2011-09-30 | 2014-07-29 | Pure Storage, Inc. | Variable length encoding in a storage system |
JP5768587B2 (ja) | 2011-08-17 | 2015-08-26 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御方法 |
US8700875B1 (en) | 2011-09-20 | 2014-04-15 | Netapp, Inc. | Cluster view for storage devices |
US9542413B2 (en) | 2011-10-06 | 2017-01-10 | Hitachi, Ltd. | Stored data deduplication method, stored data deduplication apparatus, and deduplication program |
US8825605B2 (en) | 2011-10-11 | 2014-09-02 | Netapp, Inc. | Deduplication aware scheduling of requests to access data blocks |
US8918579B2 (en) | 2012-02-06 | 2014-12-23 | Sandisk Technologies Inc. | Storage device and method for selective data compression |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US9519647B2 (en) | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US8996881B2 (en) | 2012-04-23 | 2015-03-31 | International Business Machines Corporation | Preserving redundancy in data deduplication systems by encryption |
US8793466B2 (en) | 2012-04-27 | 2014-07-29 | Netapp, Inc. | Efficient data object storage and retrieval |
US9645177B2 (en) | 2012-05-04 | 2017-05-09 | Seagate Technology Llc | Retention-drift-history-based non-volatile memory read threshold optimization |
US8874850B1 (en) | 2012-05-10 | 2014-10-28 | Netapp, Inc. | Hierarchically tagged cache |
US20130318314A1 (en) | 2012-05-25 | 2013-11-28 | Red Hat, Inc. | Managing copies of data on multiple nodes using a data controller node to avoid transaction deadlock |
US9659077B2 (en) | 2012-06-18 | 2017-05-23 | Actifio, Inc. | System and method for efficient database record replication using different replication strategies based on the database records |
US8959305B1 (en) | 2012-06-29 | 2015-02-17 | Emc Corporation | Space reclamation with virtually provisioned devices |
US9489293B2 (en) | 2012-08-17 | 2016-11-08 | Netapp, Inc. | Techniques for opportunistic data storage |
US9021263B2 (en) | 2012-08-31 | 2015-04-28 | Cleversafe, Inc. | Secure data access in a dispersed storage network |
JP5954081B2 (ja) | 2012-09-26 | 2016-07-20 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9176858B2 (en) | 2012-11-19 | 2015-11-03 | Hitachi, Ltd. | Storage system configured to selectively utilize data compression based on real pool usage rates |
US9348840B2 (en) | 2012-12-14 | 2016-05-24 | Intel Corporation | Adaptive data striping and replication across multiple storage clouds for high availability and performance |
US9063967B2 (en) | 2013-01-10 | 2015-06-23 | Pure Storage, Inc. | Performing copies in a storage system |
US9886346B2 (en) | 2013-01-11 | 2018-02-06 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9335932B2 (en) | 2013-03-15 | 2016-05-10 | Bracket Computing, Inc. | Storage unit selection for virtualized storage units |
US9519575B2 (en) | 2013-04-25 | 2016-12-13 | Sandisk Technologies Llc | Conditional iteration for a non-volatile device |
US10263770B2 (en) | 2013-11-06 | 2019-04-16 | Pure Storage, Inc. | Data protection in a storage system using external secrets |
US9516016B2 (en) | 2013-11-11 | 2016-12-06 | Pure Storage, Inc. | Storage array password management |
JP6233086B2 (ja) | 2014-02-20 | 2017-11-22 | 富士通株式会社 | ストレージ制御装置,ストレージシステム及び制御プログラム |
US10169121B2 (en) | 2014-02-27 | 2019-01-01 | Commvault Systems, Inc. | Work flow management for an information management system |
US10656864B2 (en) | 2014-03-20 | 2020-05-19 | Pure Storage, Inc. | Data replication within a flash storage array |
US9361469B2 (en) | 2014-03-26 | 2016-06-07 | Amazon Technologies, Inc. | Electronic communication with secure screen sharing of sensitive information |
US9513820B1 (en) | 2014-04-07 | 2016-12-06 | Pure Storage, Inc. | Dynamically controlling temporary compromise on data redundancy |
US9563509B2 (en) | 2014-07-15 | 2017-02-07 | Nimble Storage, Inc. | Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system |
US10430282B2 (en) | 2014-10-07 | 2019-10-01 | Pure Storage, Inc. | Optimizing replication by distinguishing user and system write activity |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US10459657B2 (en) | 2016-09-16 | 2019-10-29 | Hewlett Packard Enterprise Development Lp | Storage system with read cache-on-write buffer |
US10402266B1 (en) * | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
-
2010
- 2010-09-28 US US12/892,894 patent/US8775868B2/en active Active
-
2011
- 2011-09-19 JP JP2013531644A patent/JP5894167B2/ja active Active
- 2011-09-19 KR KR1020137010801A patent/KR20130118876A/ko not_active Application Discontinuation
- 2011-09-19 EP EP11761770.4A patent/EP2622475A1/en not_active Withdrawn
- 2011-09-19 WO PCT/US2011/052222 patent/WO2012044488A1/en active Application Filing
- 2011-09-19 CN CN201180053519.0A patent/CN103348326B/zh active Active
- 2011-09-19 EP EP16151734.7A patent/EP3082047B1/en active Active
-
2014
- 2014-05-21 US US14/283,628 patent/US9594633B2/en active Active
-
2016
- 2016-02-25 JP JP2016034148A patent/JP6307537B2/ja active Active
-
2017
- 2017-01-27 US US15/417,912 patent/US10452289B1/en active Active
-
2019
- 2019-08-29 US US16/555,274 patent/US11435904B1/en active Active
-
2022
- 2022-09-02 US US17/902,720 patent/US11797386B2/en active Active
-
2023
- 2023-10-18 US US18/489,496 patent/US20240152425A1/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101532283B1 (ko) * | 2013-11-04 | 2015-06-30 | 인하대학교 산학협력단 | Ssd 기반 raid 스토리지에서 데이터 및 패리티 디스크의 복합적 중복제거 방법 |
WO2020092778A1 (en) * | 2018-10-31 | 2020-05-07 | Hewlett Packard Enterprise Development Lp | Masterless raid for byte-addressable non-volatile memory |
US10922178B2 (en) | 2018-10-31 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Masterless raid for byte-addressable non-volatile memory |
CN112912851A (zh) * | 2018-10-31 | 2021-06-04 | 慧与发展有限责任合伙企业 | 用于可字节寻址的非易失性存储器的无主raid |
CN112912851B (zh) * | 2018-10-31 | 2022-03-29 | 慧与发展有限责任合伙企业 | 用于寻址的系统和方法、以及媒体控制器 |
Also Published As
Publication number | Publication date |
---|---|
US9594633B2 (en) | 2017-03-14 |
US20240152425A1 (en) | 2024-05-09 |
EP2622475A1 (en) | 2013-08-07 |
EP3082047B1 (en) | 2020-07-08 |
WO2012044488A1 (en) | 2012-04-05 |
US10452289B1 (en) | 2019-10-22 |
JP6307537B2 (ja) | 2018-04-04 |
JP5894167B2 (ja) | 2016-03-23 |
US20120079318A1 (en) | 2012-03-29 |
CN103348326A (zh) | 2013-10-09 |
CN103348326B (zh) | 2016-03-30 |
US20140317447A1 (en) | 2014-10-23 |
US11435904B1 (en) | 2022-09-06 |
JP2016105320A (ja) | 2016-06-09 |
US11797386B2 (en) | 2023-10-24 |
US8775868B2 (en) | 2014-07-08 |
US20220413958A1 (en) | 2022-12-29 |
EP3082047A1 (en) | 2016-10-19 |
JP2013539132A (ja) | 2013-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797386B2 (en) | Flexible RAID layouts in a storage system | |
US11579974B1 (en) | Data protection using intra-device parity and intra-device parity | |
US20210173741A1 (en) | Distributed multi-level protection in a hyper-converged infrastructure | |
USRE48222E1 (en) | Reconstruct reads in a raid array with dynamic geometries | |
KR101821001B1 (ko) | Raid 어레이에서 장치내 데이터 보호 | |
US20120084504A1 (en) | Dynamic raid geometries in an ssd environment | |
US20120084507A1 (en) | Multi-level protection with intra-device protection in a raid array based storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |