KR20140041408A - Selecting storage locations for storing data based on storage location attributes and data usage statistics - Google Patents
Selecting storage locations for storing data based on storage location attributes and data usage statistics Download PDFInfo
- Publication number
- KR20140041408A KR20140041408A KR1020137020457A KR20137020457A KR20140041408A KR 20140041408 A KR20140041408 A KR 20140041408A KR 1020137020457 A KR1020137020457 A KR 1020137020457A KR 20137020457 A KR20137020457 A KR 20137020457A KR 20140041408 A KR20140041408 A KR 20140041408A
- Authority
- KR
- South Korea
- Prior art keywords
- physical storage
- storage location
- data
- logical block
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
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)
- Debugging And Monitoring (AREA)
Abstract
데이터를 저장하기 위한 물리적 저장 위치를 선택하는 방법이 제공된다. 본 방법은 상기 물리적 저장 위치의 속성을 상기 데이터의 사용량 통계와 매칭함으로써 데이터 저장을 저장하기 위하여 물리적 저장 위치를 선택하는 것을 수반한다.A method of selecting a physical storage location for storing data is provided. The method involves selecting a physical storage location for storing data storage by matching an attribute of the physical storage location with usage statistics of the data.
Description
본 발명은 물리적 저장 위치를 선택하는 것에 관한 것이다. 보다 상세하게는, 본 발명은 저장 위치 속성 및 데이터 사용량 통계에 기초하여 데이터 저장을 위한 물리적 저장 위치를 선택하는 것에 관한 것이다.The present invention relates to selecting a physical storage location. More specifically, the present invention relates to selecting a physical storage location for data storage based on storage location attributes and data usage statistics.
데이터는 물리적 저장 매체 내의 물리적 저장 위치에 물리적으로 저장된다. 상기 물리적 저장 매체의 예는 자기 디스크, 광학 디스크, 광자기 디스크, 솔리드 스테이트 드라이브 등을 포함한다. 물리적 저장 매체는 또한 2개 이상의 다른 형태의 물리적 저장매체의 조합인 하이브리드를 포함할 수 있다. 예를 들어, 물리적 저장 매체는 솔리드 스테이트 드라이브와 회전 플래터 드라이브의 조합으로서 구현되어도 된다.Data is physically stored in a physical storage location within the physical storage medium. Examples of such physical storage media include magnetic disks, optical disks, magneto-optical disks, solid state drives, and the like. Physical storage media can also include hybrids, which are combinations of two or more different types of physical storage media. For example, the physical storage medium may be implemented as a combination of a solid state drive and a rotating platter drive.
물리적 저장 매체에 물리적으로 저장된 데이터는 운영 체제에 의해 유지된 디스크 파일에 조직화된다. 디스크 파일은 복수의 논리 블록으로 분할되며, 여기서 각 논리 블록은 상기 물리적 저장 매체 내의 물리적 저장 위치에 매핑되거나 할당된다. 특정 논리 블록 내에 조직화된 데이터는 상기 특정 논리 블록에 할당되는 물리적 저장 위치에 판독 또는 기록함으로써 액세스될 수 있다. 특정 논리 블록 내에 조직화된 데이터는 본원에서 특정 논리 블록 상에 논리적으로 저장된 데이터라 지칭될 수 있다. Data physically stored on a physical storage medium is organized in disk files maintained by the operating system. The disk file is divided into a plurality of logical blocks, where each logical block is mapped or assigned to a physical storage location within the physical storage medium. Data organized within a particular logical block can be accessed by reading or writing to a physical storage location assigned to that particular logical block. Data organized within a particular logical block may be referred to herein as data logically stored on a particular logical block.
이 부분에 기재된 접근법은 추구될 수 있는 접근법이지만, 반드시 이전에 예상되었다거나 추구되었던 접근법인 것은 아니다. 따라서, 달리 나타내지 않는 한, 이 부분에 기재된 어떠한 접근법도 단지 이 부분에 포함되었다고 해서 종래 기술로서의 자격이 있다고 가정하여서는 안 된다.The approach described in this section is an approach that can be pursued, but it is not necessarily the approach that was previously anticipated or pursued. Therefore, unless otherwise indicated, no approach described in this section should be assumed to be qualified as a prior art merely by inclusion in this section.
데이터 위치설정(data positioning)을 위한 방법이 제공된다. 하나 이상의 실시예에서, 상기 방법은 파일 시스템의 논리 블록에 논리적으로 저장된 데이터를 저장하기 위해 물리적 저장 위치를 선택하는 것을 수반한다. 상기 물리적 저장 위치의 선택은 (a) 상기 데이터에 대한 사용량 통계 및 (b) 저장 위치 속성에 기초한다.A method for data positioning is provided. In one or more embodiments, the method involves selecting a physical storage location for storing data logically stored in a logical block of the file system. The selection of the physical storage location is based on (a) usage statistics for the data and (b) storage location attributes.
일 실시예에서, 빈번하게 액세스된 데이터는 신속한 액세스 속도, 고장까지의 긴 수명, 및/또는 관련 데이터의 저장과 함께 물리적 저장 위치에 저장된다.In one embodiment, frequently accessed data is stored in a physical storage location with a fast access speed, long life to failure, and / or storage of associated data.
본 방법의 단계를 수행하는 것으로써 구체적인 구성요소가 본 명세서에 기재되어 있지만, 다른 실시예에서는, 지정된 구성요소를 대신하여 작용하는 에이전트나 메커니즘이 본 방법의 단계를 수행할 수 있다. 또한, 실시예는 단일 시스템 상의 구성요소와 관련하여 논의될 수 있지만, 이러한 실시예는 복수의 시스템들에 걸쳐 분산된 구성요소로써 구현될 수 있다. 또한, 본 발명은 특정 물리적 저장 장치 또는 특정 물리적 저장 유형와 관련하여 논의될 수 있지만, 실시예는 임의의 물리적 저장 장치 또는 물리적 저장 유형(예를 들어, 회전 디스크 드라이브, 솔리드 스테이트 드라이브(SSD), NAS(Network Attached Storage), SAN(Storage Area Network), 하이브리드 드라이브 등에 적용할 수 있다.Although specific components are described herein by performing the steps of the method, in other embodiments, agents or mechanisms acting on behalf of the designated components may perform the steps of the method. In addition, embodiments may be discussed with respect to components on a single system, but such embodiments may be implemented as components distributed across a plurality of systems. In addition, while the present invention may be discussed in the context of certain physical storage devices or specific physical storage types, embodiments may be any physical storage device or physical storage type (eg, rotating disk drive, solid state drive (SSD), NAS). (Network Attached Storage), Storage Area Network (SAN), Hybrid Drive, etc.
실시예는 또한 본 명세서에 기재된 방법 단계를 수행하기 위한 수단들을 포함하는 임의의 시스템(들) 또는 장치(들)을 포함한다. 실시예는 또한 프로세서에 의해 실행될 때 본 명세서에 기재된 방법 단계가 수행되게 하는 명령을 갖는 컴퓨터 판독가능 매체를 포함한다.The embodiment also includes any system (s) or device (s) including means for performing the method steps described herein. Embodiments also include a computer readable medium having instructions that when executed by a processor cause the method steps described herein to be performed.
본 발명은 비한정적으로 첨부 도면에 예시되어 있으며, 도면에서 유사한 참조 번호는 유사한 구성요소를 지칭한다.
도 1은 하나 이상의 실시예에 따라 저장 위치를 선택하기 위한 예시적인 시스템을 나타낸다.
도 2는 하나 이상의 실시예에 따라 데이터를 위치설정하기 위한 흐름도를 나타낸다.
도 3은 하나 이상의 실시예를 구현하는데 사용될 수 있는 컴퓨터 시스템의 블록도를 나타낸다.The invention is illustrated in the accompanying drawings without limitation, wherein like reference numerals refer to like elements.
1 illustrates an example system for selecting a storage location in accordance with one or more embodiments.
2 illustrates a flowchart for positioning data in accordance with one or more embodiments.
3 illustrates a block diagram of a computer system that can be used to implement one or more embodiments.
다음의 설명에서는, 설명의 목적을 위해, 본 발명의 완전한 이해를 제공하기 위하여 다수의 구체적인 세부사항이 서술된다. 그러나, 본 발명은 이들 구체적인 세부사항이 없이도 실시될 수 있다는 점이 명백할 것이다. 다른 경우에서는, 불필요하게 본 발명을 모호하게 하는 것을 피하기 위하여 공지된 구조 및 디바이스는 블록도 형태로 도시된다.In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent that the invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
서로 독립적으로 또는 다른 특징의 임의의 조합과 함께 각각 이용될 수 있는 여러 특징이 아래에 기재된다. 그러나, 개별적인 특징이 상기 논의된 임의의 문제점을 다루지 못할 수 있고, 또는 상기 논의된 문제점 중 하나만 다룰 수도 있다. 상기 논의된 문제점의 일부는 본 명세서에 기재된 특징에 의해 충분히 다루어지지 않을 수도 있다. 제목이 제공되어 있지만, 특정 제목과 관련된 정보는, 그 제목을 갖는 부분에서 찾아볼 수 없더라도 본 명세서의 다른 곳에서 찾아볼 수도 있다.Several features are described below, each of which can be used independently of one another or in combination with any combination of other features. However, individual features may not address any of the problems discussed above, or may address only one of the problems discussed above. Some of the problems discussed above may not be sufficiently addressed by the features described herein. Although a title is provided, information related to a particular title may be found elsewhere in this specification even if it is not found in the section having the title.
시스템 아키텍처System architecture
구체적인 시스템 아키텍처가 본 명세서에 기재되어 있지만, 데이터 위치설정에 사용될 수 있는 임의의 아키텍처에 본 발명의 기타 다른 실시예가 적용 가능하다. 도 1은 하나 이상의 실시예에 따라 데이터 위치설정을 위한 예시적인 시스템(100)을 도시한다. 도 1에 도시된 바와 같이, 상기 시스템(100)은 데이터 위치설정 엔진(108), 저장 드라이버(들)(112), 및 하나 이상의 데이터 저장소 (114)를 포함한다. 상기 시스템(100)은 또한, 도시되지는 않았지만 하나 이상의 실시예의 구현에 사용될 수 있는 기타 다른 하드웨어 및/또는 소프트웨어 구성요소를 포함할 수 있다. 예를 들어, 디스크 파일을 유지하는 운영 체제는 상기 데이터 위치설정 엔진(108) 또는 상기 저장 드라이버(들)(112)에 통신가능하게 연결될 수 있다. 이들 구성요소의 각각은 동일한 장치 상에 위치하거나 유선 및/또는 무선 세그먼트와 네트워크(예를 들어, 인터넷, 인트라넷, 익스트라넷, LAN(local Area Network), WAN(Wide Area Network) 등)에 의해 연결된 개별 장치들 상에 또는 다른 수단으로 연결된 개별 장치들 상에 위치될 수 있다. 일 실시예에서, 상기 시스템(100)은 다르게 구성될 수 있다. 예를 들어, 데이터 위치설정 엔진(108)은 상기 저장 드라이버(112)와 상기 데이터 저장소(114)사이에 논리적으로 위치해도 된다. 다른 실시예에서, 상기 데이터 위치설정 엔진(108)은 상기 저장 드라이버(112)의 구성요소로서 구현될 수 있다.Although specific system architectures are described herein, other embodiments of the present invention are applicable to any architecture that can be used for data positioning. 1 illustrates an
하나 이상의 실시예에서, 상기 시스템(100)은 클라이언트-서버 토폴로지를 사용하여 구현된다. 또한, 상기 시스템은 하나 이상의 인터페이스를 이용하여 다른 기계로부터 액세스 가능할 수 있다. 하나 이상의 실시예에서, 상기 시스템은 하나 이상의 사용자에 의해 인터넷과 같은 네트워크 접속을 통해 액세스 가능할 수 있다. 상기 시스템에 의해 제공된 정보 및/또는 서비스는 또한 네트워크 접속을 통해 저장되고 액세스될 수 있다.In one or more embodiments, the
데이터 저장소Data store
데이터 저장소(114)는 일반적으로 데이터(104)가 저장될 수 있는 물리적 저장 위치를 갖는 하나 이상의 저장 장치를 포함하는 물리적 저장 매체를 나타낸다. 상기 데이터 저장소(114)의 부분들은 상기 시스템(100)에 직접 접속되거나, 네트워크(116) 또는 기타 적합한 인터페이스를 통해 접속될 수 있다. 상기 데이터 저장소(114)는 당해 기술 분야에 공지된 임의의 유형의 저장 장치를 포함할 수 있다. 예를 들어, 상기 데이터 저장소(114)는 캐시(cash), RAM(random access memory), 보조 기억 장치, 전통적인 회전 플래터 드라이브, 솔리드 스테이트 드라이브(SSD), 전통적인 회전 플래터 드라이브와 SSD의 하이브리드 조합, SAN(Storage Area Network) 또는 NAS(Network Attached Storage) 장치와 같은 별도의 저장 시스템을 포함할 수 있다.
일 실시예에서, 상기 데이터 저장소(114) 내의 각 저장 장치는 상이한 유형의 저장 위치를 포함할 수 있다. 예를 들어, 상기 데이터 저장소(114)내의 SSD는 싱글 레벨 셀(SLC; single level cell), 멀티 레벨 셀(MLC; multi-level cell), 또는 이들의 조합과 같은 상이한 셀을 포함할 수 있다. 따라서, 상기 시스템(100)이 저장을 위해 이용 가능한 상기 데이터 저장소(114)내의 물리적 저장 위치는, 다양한 저장 장치에 걸쳐 또는 단일 저장 장치 내에서도 변화하는 구성으로 단일 저장 장치 또는 복수의 저장 장치 상에 있을 수 있다.In one embodiment, each storage device in the
물리적 저장 위치 속성Physical storage location attribute
일 실시예에서, 상기 데이터 저장소(114) 내의 물리적 저장 위치 및/또는 데이터 저장 장치는 물리적 저장 위치 속성(110)이 다양할 수 있다. 물리적 저장 위치 속성의 예는 순차 기록 속도, 순차 판독 속도, 랜덤 기록 속도, 랜덤 판독 속도, 수명, 초당 입력/출력 동작(IOPS; input/output operations per second) 등을 포함한다. 물리적 저장 위치 또는 데이터 저장 장치의 수명은 일반적으로 고장 나기 전까지의 물리적 저장 위치 또는 데이터 저장 장치의 추정 수명(estimated lifetime)을 나타낸다. 예를 들어, 물리적 저장 위치 또는 데이터 저장 장치의 수명은 고장 나기 전까지 수행될 수 있는 추정 기록 횟수(이하, “고장 나기 전까지의 기록 수”라 칭함) 또는 고장 나기 전까지 수행 될 수 있는 추정 판독 횟수(이하, “고장 나기 전까지의 판독 수”라 칭함)에 따라 달라질 수 있다. 이러한 고장 나기 전까지의 기록 수 및/또는 고장 나기 전까지의 판독 수는 예를 들어 유사한 장치의 사용에 기초한 통계에 기초하여 추정될 수 있다. 고장 나기 전까지의 추정되는 기록 수 및 고장 나기 전까지의 추정되는 판독 수는 제조자 또는 다른 소스로부터 수신될 수 있다. 고장 나기 전까지의 추정되는 기록 수 및 고장 나기 전까지의 추정되는 판독 수는 정확한 정보를 포함할 수 있다. 예를 들어, 물리적 저장 위치, 물리적 저장 위치의 영역, 또는 장치는 특정 수의 판독 및/또는 기록 후에 고장이 나도록 프로그램될 수 있다. 상기 추정치는 특정 숫자이거나, 또는 사실상 무한할 수 있다. 예를 들어, 저장 장치는 고장 없이 사실상 무한한 기록 횟수를 허용할 수 있다. 물리적 저장 위치의 수명은 고장 나기 전까지의 추정되는 판독 수 및 고장 나기 전까지의 추정되는 기록 수의 조합에 기초하여 산출된 값일 수 있다.In one embodiment, the physical storage location and / or data storage device within the
일 실시예에서, 물리적 저장 위치 또는 데이터 저장 장치의 추정된 수명은 상기 물리적 저장 위치 또는 데이터 저장 장치의 사용을 위한 시간 길이일 수 있다. 물리적 저장 위치 또는 저장 장치의 수명은 임의의 요인(예를 들어, 제조자, 연령, 운영 환경 등)에 기초하여 다양할 수 있다. 또한, 상기 물리적 저장 위치 속성(110)은 특정 물리적 저장 위치 또는 특정 저장 장치의 사용 내역을 포함할 수 있다. 물리적 저장 위치의 실제 사용은 일반적으로 물리적 저장 위치가 액세스된 횟수(예를 들어, 물리적 저장 위치에 기록되었거나 물리적 저장 위치로부터 판독된 횟수), 데이터 저장 장치가 사용된 시간 등을 나타낸다.In one embodiment, the estimated lifetime of a physical storage location or data storage device may be a length of time for use of the physical storage location or data storage device. The physical storage location or the lifetime of the storage device may vary based on any factor (eg, manufacturer, age, operating environment, etc.). In addition, the physical
일 실시예에서, 물리적 저장 위치를 위한 물리적 저장 위치 속성은 상기 물리적 저장 위치에 이미 저장된 데이터를 포함할 수 있다. 예를 들어, 보조 저장 장치(예를 들어, 회전 플래터 드라이브)로부터 RAM으로 로딩되는 특정 물리적 메모리 블록 내에 저장된 데이터는 관련된 논리 블록에 논리적으로 저장된 데이터를 포함할 수 있다. 일 실시예에서, 데이터를 위하여 물리적 저장 위치를 선택하기 위한 선택 절차는 상기 물리적 저장 위치 내에 이미 저장된 다른 데이터를 고려할 수 있다.In one embodiment, the physical storage location attribute for the physical storage location may include data already stored at the physical storage location. For example, data stored in a particular physical memory block loaded into RAM from an auxiliary storage device (eg, a rotating platter drive) may include data logically stored in an associated logical block. In one embodiment, the selection procedure for selecting a physical storage location for data may take into account other data already stored within the physical storage location.
일 실시예에서, 동일한 물리적 저장 위치(예를 들어, 동일한 물리적 메모리 블록 내에 또는 동일한 세트의 물리적 메모리 블록들 내에)에 관련된 데이터를 저장하는 것은 성능을 향상시킬 수 있다. 예를 들어, 단일 물리적 메모리 블록 내에서 관련된 데이터를 판독하는 것은 RAM으로 상기 단일 물리적 메모리 블록 보조 저장을 로딩하는 것을 포함한다. 복수의 물리적 메모리 블록 내에서 관련된 데이터를 판독하는 것은 보조 저장으로부터 RAM으로 복수의 물리적 메모리 블록을 로딩하는 것을 수반할 수 있다.In one embodiment, storing data related to the same physical storage location (eg, within the same physical memory block or within the same set of physical memory blocks) can improve performance. For example, reading related data within a single physical memory block includes loading the single physical memory block auxiliary storage into RAM. Reading related data within the plurality of physical memory blocks may involve loading the plurality of physical memory blocks into the RAM from auxiliary storage.
논리 블록Logic block
일 실시예에서, 논리 블록은 데이터(104)의 조직화를 위해 사용된 디스크 파일 내에서 분할된다. 논리 블록은 임의의 데이터 양을 포함해도 된다. 일 실시예에서, 논리 블록은 개별적으로 참조되고 보조 저장 장치로부터 로딩될 수 있는 페이지이다. In one embodiment, logical blocks are partitioned within disk files used for organization of
일 실시예에서, 특정 논리 블록 내에 조직화된 데이터는, 본원에서 그 특정 논리 블록 상에 논리적으로 저장된 데이터로 지칭될 수 있다. 논리 블록을 액세스하는 것은 이하 그 논리 블록 내에 논리적으로 저장된 임의의 데이터를 액세스하는 것을 포함하는 것으로 간주된다. 논리 블록내에 논리적으로 저장된 데이터는 그 논리 블록에 할당되는 물리적 저장 위치에 물리적으로 저장된다.In one embodiment, data organized within a particular logical block may be referred to herein as data logically stored on that particular logical block. Accessing a logical block is hereafter considered to include accessing any data logically stored within that logical block. Data logically stored in a logical block is physically stored in a physical storage location assigned to that logical block.
일 실시예에서, 운영 체제는 상기 데이터(104)를 논리적으로 저장하는 논리 블록으로 참조함으로써 데이터 저장소(114)에 저장된 데이터(104)를 액세스할 수 있다. 상기 디스크 파일로부터 물리적 저장 매체로 매핑하는 것에 기초하여, 상기 논리 블록에 할당된 상기 물리적 저장 위치가 식별될 수 있다. 예를 들어, 테이블은 상기 논리 블록에 대한 물리적 저장 위치의 어드레스를 나타낼 수 있다. 다른 실시예에서, 그 논리 블록에 매핑된 물리적 메모리 위치의 어드레스를 획득하기 위하여 논리 블록의 어드레스에 오프셋이 추가될 수 있다. 일단 상기 물리적 메모리 위치의 어드레스가 결정되면, 데이터는 상기 물리적 메모리 위치에 판독되거나 기록될 수 있다.In one embodiment, the operating system may access the
사용량 통계(Usage statistics ( usageusage statisticsstatistics ))
일 실시예에서, 사용량 통계(102)는 논리 블록과 연관된다. 특정 논리 블록과 관련된 사용량 통계(102)는 그 특정 논리 블록 내에 논리적으로 저장된 임의의 데이터에 관련되는 통계를 포함한다. In one embodiment,
일 실시예에서, 특정 논리 블록에 대한 사용량 통계는 상기 특정 논리 블록에의 액세스 빈도를 포함한다. 예를 들어, 사용량 통계는 상기 특정 논리 블록과 관련된 기록 액세스 빈도를 포함할 수 있다. 특정 논리 블록과 관련된 상기 기록 액세스 빈도는 그 특정 논리 블록 내에 논리적으로 저장된 임의의 데이터에 대한 모든 기록 액세스를 기록(tallying)함으로써 산출될 수 있다. 특정 논리 블록과 관련된 기록 액세스 빈도는 일정 시간 기간 당 그 특정 논리 블록 내에 논리적으로 저장된 임의의 데이터에 대한 기록 액세스의 수를 평균냄으로써 산출될 수 있다. 특정 논리 블록과 관련된 기록 액세스 빈도는, 기록 액세스의 전체 수에 대한, 그 특정 논리 블록 내에 논리적으로 저장된 임의의 데이터에 대한 기록 액세스의 수에 기초하여 산출될 수 있다. In one embodiment, the usage statistics for a particular logical block include the frequency of access to that particular logical block. For example, the usage statistics may include the write access frequency associated with the particular logical block. The write access frequency associated with a particular logical block can be calculated by tallying all write accesses to any data logically stored within that particular logical block. The write access frequency associated with a particular logical block can be calculated by averaging the number of write accesses to any data logically stored within that particular logical block per period of time. The write access frequency associated with a particular logical block may be calculated based on the number of write accesses to any data logically stored within that particular logical block, relative to the total number of write accesses.
판독 액세스 빈도는 또한 유사한 예의 산출 기법을 이용하여 계산될 수 있다. 일 실시예에서, 액세스 빈도는 기록 액세스 빈도와 판독 액세스 빈도의 조합에 기초할 수 있다.Read access frequency may also be calculated using similar example computation techniques. In one embodiment, the access frequency may be based on a combination of write access frequency and read access frequency.
일 실시예에서, 특정 논리 블록에 대한 사용량 통계는 상기 특정 논리 블록 내에 논리적으로 저장된임의의 데이터에 대한 액세스의 타이밍을 포함한다. 예를 들어, 상기 특정 논리 블록 내에 논리적으로 저장된 임의의 데이터에 대한 액세스는 이벤트(예를 들어 시스템 시동시, 시스템 종료시, 시스템 정지시, 시스템 절전시, 시스템 재개시) 전 또는 후, 매일, 주 단위로, 데이터 생성 직후 등이 될 수 있다. In one embodiment, the usage statistics for a particular logical block include the timing of access to any data logically stored within the particular logical block. For example, access to any data logically stored within the particular logical block may be performed before, after, or after an event (e.g., at system startup, system shutdown, system shutdown, system sleep, system restart). In units, it may be immediately after data generation.
데이터 위치설정 엔진Data positioning engine
일 실시예에서, 상기 시스템(100) 내의 데이터 위치설정 엔진(108)은 일반적으로 데이터를 저장하는 물리적 저장 위치를 선택하기 위한 로직을 포함하는 소프트웨어 및/또는 하드웨어를 나타낸다.In one embodiment, the
일 실시예에서, 본원에서 언급될 때 물리적 저장 위치를 선택하는 것은 물리적 저장 위치 유형 또는 물리적 저장 위치 속성을 선택하는 것을 포함할 수 있다. 상기 선택된 물리적 저장 위치는 상기 물리적 저장 위치 유형의 또는 상기 물리적 저장 위치 속성을 가진 임의의 물리적 저장 위치를 포함한다. 예를 들어, 물리적 저장 위치를 선택하는 것은 솔리드 스테이트 드라이브 및 회전 플래터 드라이브를 포함하는 하이브리드 드라이브의 솔리드 스테이트 드라이브 부분을 선택하는 것을 포함할 수 있다. 다른 예는 상기 회전 플래터 드라이브 상의 복수의 영역으로부터 회전 플래터 드라이브의 특정 영역을 선택하는 것을 포함한다. 다른 예는 최소 기록 속도를 선택하는 것과 적어도 최소 기록 속도를 가진 임의의 물리적 저장 위치(예를 들어, 영역 또는 장치)를 선택하는 것을 포함한다. In one embodiment, selecting a physical storage location as mentioned herein may include selecting a physical storage location type or a physical storage location attribute. The selected physical storage location includes any physical storage location of the physical storage location type or having the physical storage location attribute. For example, selecting a physical storage location may include selecting a solid state drive portion of a hybrid drive that includes a solid state drive and a rotating platter drive. Another example includes selecting a particular region of the rotating platter drive from a plurality of regions on the rotating platter drive. Another example includes selecting a minimum writing speed and selecting any physical storage location (eg, area or device) that has at least the minimum writing speed.
일 실시예에서, 본원에서 언급될 때 물리적 저장 위치를 선택하는 것은 특정 논리 블록에 논리적으로 저장된 데이터를 저장하기 위해 물리적 저장 위치의 물리적 어드레스를 선택하는 것을 포함할 수 있다.In one embodiment, selecting a physical storage location as referred to herein may include selecting a physical address of the physical storage location to store data logically stored in a particular logical block.
일 실시예에서, 상기 데이터 위치설정 엔진(108)은 하나 이상의 서버 상에서 실행되는 애플리케이션일 수 있고, 일부 실시예에서는 피어-투-피어(peer-to-peer) 애플리케이션이거나, 단일 컴퓨팅 시스템(예를 들어, 개인용 컴퓨터, 핸드헬드 장치, 키오스크, 자동차에 탑재된 컴퓨터, 또는 저장 장치를 갖는 임의의 기타 시스템)상에 상주할 수 있다.In one embodiment, the
일 실시예에서, 상기 데이터 위치설정 엔진(108)은 저장 드라이버(112)의 구성요소로서 상기 시스템(100)에서 구현될 수 있다. 일 실시예에서, 상기 데이터 위치설정 엔진(108)은 상기 시스템(100)에서 운영 체제(도시하지 않음)와 저장 드라이버(112) 사이에 구현될 수 있다. 일 실시예에서, 상기 데이터 위치설정 엔진(108)은 상기 시스템(100)에서 저장 드라이버(112)와 데이터 저장소(114) 사이에 배치될 수 있다.In one embodiment, the
일 실시예에서, 상기 데이터 위치설정 엔진(108)은 저장 드라이버(112)에 의해 이루어진 물리적 저장 위치의 선택을 덮어쓸 수 있다. 예를 들어, 상기 데이터 위치설정 엔진(108)은 특정 논리 블록에 논리적으로 저장된 데이터를 저장하도록 상기 저장 드라이버로부터 물리적 저장 위치의 선택을 수신할 수 있다. 상기 데이터 위치설정 엔진(108)은 하나 이상의 실시예에 따라 물리적 저장 위치를 교호하여 선택하고 이러한 교호하는 물리적 저장 위치에 데이터를 저장할 수 있다.In one embodiment, the
일 실시예에서, 상기 데이터 위치설정 엔진(108)은 특정 논리 블록에 논리적으로 저장된 데이터를 저장하기 위한 연속하는 물리적 저장 위치들의 세트를 식별할 수 있다. 상기 데이터 위치설정 엔진(108)은 물리적 저장 위치 시작 어드레스 및/또는 물리적 저장 위치 종료 어드레스를 식별함으로써 물리적 저장 위치들의 세트를 식별할 수 있다.In one embodiment, the
일 실시예에서, 상기 데이터 위치설정 엔진(108)은 데이터(104)를 저장하기 위해 데이터 저장소(114) 내에서 물리적 저장 장치를 식별하도록 구성될 수 있다(예를 들어, 둘 이상의 저장 장치가 이용가능한 경우). 상기 데이터 위치설정 엔진(108)은 또한 데이터(104)를 저장하기 위해 데이터 저장소(114) 내의 영역 또는 특정 저장 위치 어드레스를 선택하도록 구성될 수 있다.In one embodiment, the
저장 드라이버Storage driver
일 실시예에서, 저장 드라이버(들)(112)는 데이터 위치설정 엔진(108)으로부터 직접 또는 간접적으로 수신된 명령 세트에 기초하여 데이터 저장소(114)로부터 데이터(104)를 검색하고 저장한다.In one embodiment, storage driver (s) 112 retrieves and
일 실시예에서, 상기 저장 드라이버(들)(112)는 상기 데이터 위치설정 엔진(108)에 의해 식별된 물리적 저장 위치 유형 또는 물리적 저장 위치 속성을 수신한다. 그 후에 상기 저장 드라이버(112)는 데이터(104)를 저장하기 위하여 물리적 저장 위치 유형 또는 물리적 저장 위치 속성에 매칭되는 물리적 저장 위치의 어드레스를 선택한다.In one embodiment, the storage driver (s) 112 receives the physical storage location type or physical storage location attribute identified by the
일 실시예에서, 상기 데이터 위치설정 엔진(108)은 데이터(104)를 제공하고, 물리적 저장 매체에 데이터를 저장하기 위하여 물리적 저장 위치를 지정할 수 있다. 상기 저장 드라이버(112)에 의해 수신된 물리적 저장 위치는 저장 장치, 상기 저장 장치의 영역, 논리 저장 위치 어드레스, 또는 물리적 저장 위치 어드레스를 포함할 수 있다. 일 실시예에서, 상기 저장 드라이버(112)는 지정 영역 내에 또는 지정 장치 내에 이용가능한 물리적 저장 위치에 기초하여 물리적 저장 위치 어드레스를 결정할 수 있다.In one embodiment, the
일 실시예에서, 상기 저장 드라이버(112)는 데이터 위치설정 엔진(108)에 의한 데이터의 저장을 위하여 데이터 위치설정 엔진(108)에 물리적 저장 위치를 식별하는 정보와 데이터를 전송한다.In one embodiment, the
논리 블록과 관련된 사용량 통계 및 저장 위치 속성에 기초한 저장 위치의 선택Selection of storage location based on usage statistics and storage location attributes related to logical blocks
도 2는 하나 이상의 실시예에 따른 데이터 위치설정을 위한 흐름도를 도시한다. 하나 이상의 실시예에서, 아래에 기재된 하나 이상의 단계는 생략, 반복, 및/또는 상이한 순서로 수행될 수 있다. 따라서, 도 2에 도시된 단계의 특정 배열은 본 발명의 범위를 제한하는 것으로 해석되어서는 안 된다. 2 illustrates a flowchart for data positioning in accordance with one or more embodiments. In one or more embodiments, one or more steps described below may be omitted, repeated, and / or performed in a different order. Thus, the specific arrangement of steps shown in FIG. 2 should not be construed as limiting the scope of the invention.
일 실시예에서, 특정 논리 블록에 논리적으로 저장된 데이터에 대한 액세스는 특정 논리 블록에 대해 사용량 통계를 결정하도록 모니터링된다(단계 202). 특정 논리 블록에 논리적으로 저장된 데이터에 대한 액세스는 하나 이상의 상이한 시스템 레벨에서 모니터링될 수 있다. 예를 들어, 데이터에 대한 액세스는 애플리케이션 레벨, 운영 체제 레벨, 저장 드라이버 레벨, 또는 하드웨어 레벨에서 모니터링될 수 있다.In one embodiment, access to data logically stored in a particular logical block is monitored to determine usage statistics for the particular logical block (step 202). Access to data logically stored in a particular logical block can be monitored at one or more different system levels. For example, access to data can be monitored at the application level, operating system level, storage driver level, or hardware level.
일 실시예에서, 파일 요청은 운영 체제 레벨에서 모니터링될 수 있다. 예를 들어, 운영 체제에 의해 수신된 각 파일 요청을 위하여, 디스크 파일의 대응 논리 블록이 식별된다. 액세스 유형, 액세스 시간, 및 논리 블록을 나타내는 정보가 기록될 수 있다.In one embodiment, the file request may be monitored at the operating system level. For example, for each file request received by the operating system, the corresponding logical block of the disk file is identified. Information indicative of access type, access time, and logical block may be recorded.
일 실시예에서, 데이터에 대한 액세스는 저장 드라이버 레벨에서 모니터링될 수 있다. 예를 들어, 논리 블록에 기초하여(예를 들어, 포인터에 의해, 매핑에 의해, 연산에 의해 등) 물리적 저장 위치 어드레스를 결정하기 위한 요청이 기록될 수 있다. 이러한 요청 내의 논리 블록이 기록될 수 있다. In one embodiment, access to data may be monitored at the storage driver level. For example, a request may be recorded to determine a physical storage location address based on a logical block (eg, by pointer, by mapping, by operation, etc.). Logical blocks within this request can be written.
일 실시예에서, 데이터에 대한 액세스는 하드웨어 레벨에서 모니터링될 수 있다. 예를 들어, 물리적 메모리 위치는 판독 액세스 또는 기록 액세스에 대하여 모니터링될 수 있다. 데이터가 물리적 저장 어드레스로부터 판독되거나 물리적 저장 어드레스에 기록될 때마다, 상기 물리적 어드레스가 할당되는 대응 논리 블록이 결정되고 기록될 수 있다.In one embodiment, access to data may be monitored at the hardware level. For example, the physical memory location can be monitored for read access or write access. Each time data is read from or written to a physical storage address, the corresponding logical block to which the physical address is assigned can be determined and written.
논리 블록에 논리적으로 저장된 데이터에 대한 액세스는 다른 레벨(예를 들어, 운영 체제와 저장 드라이버 사이의 레벨 또는 저장 드라이버와 물리적 메모리 사이의 레벨)에서 모니터링될 수 있다. Access to data logically stored in logical blocks can be monitored at different levels (eg, between an operating system and a storage driver or between a storage driver and physical memory).
일 실시예에서, 임의의 로그된 정보는 사용량 통계(예를 들어, 액세스 빈도, 액세스 유형, 액세스 시간 등)로서 종합될 수 있다. 사용량 통계는 로그된 정보에서 식별되는 패턴을 포함할 수 있다. 예를 들어, 패턴은 특정 논리 블록에 논리적으로 저장된 데이터가 매일 오전 9시에 판독되는 것을 나타낼 수 있다.In one embodiment, any logged information may be aggregated as usage statistics (eg, access frequency, access type, access time, etc.). The usage statistics may include a pattern identified in the logged information. For example, the pattern may indicate that data logically stored in a particular logical block is read at 9:00 AM every day.
일 실시예에서, 데이터의 액세스 시간은 이벤트(예를 들어, 시스템 종료시, 시스템 시동시, 시스템 정지시, 시스템 절전시, 시스템 재개시 등)에 관련될 수 있다. 예를 들어 사용량 통계는, 시스템 시동 중에 특정 논리 블록에 논리적으로 저장된 데이터를 판독하고 시스템 종료 중에 특정 논리 블록에 논리적으로 저장된 데이터를 기록하는 패턴이 식별되는 것을 포함할 수 있다. 패턴은 이벤트 전, 후 또는 이벤트 중의 데이터 액세스에 관련될 수 있다. 예를 들어, 이벤트는 특정 시스템 상태를 포함할 수 있다. 시스템이 특정 시스템 상태에 있는 시간 동안에, 특정 논리 블록에 논리적으로 저장된 데이터가 연속적으로 판독될 수 있다. In one embodiment, the access time of data may be related to an event (eg, at system shutdown, system startup, system shutdown, system power saving, system restart, and so on). For example, the usage statistics may include identifying a pattern of reading data logically stored in a particular logical block during system startup and writing data logically stored in a specific logical block during system shutdown. The pattern may relate to data access before, after or during an event. For example, an event can include a specific system state. During the time the system is in a particular system state, data logically stored in a particular logical block may be read continuously.
일 실시예에서, 이용가능한 물리적 저장 위치를 위한 물리적 저장 위치 속성과 관련된 정보가 획득된다(단계 204). 물리적 저장 위치 속성과 관련된 정보는 상기 저장 장치의 제조자에 의해(또는 다른 엔티티에 의해) 제공될 수 있다. 예를 들어, 상기 물리적 저장 위치 속성은 저장 장치와 함께 판매된 솔리드 스테이트 드라이브(SSD) 상에 제공될 수 있다. 저장 장치의 물리적 저장 위치 속성은 또한 저장 장치 상에 저장될 수 있고, 따라서 상기 물리적 저장 위치 속성은 저장 장치를 액세스하는 시스템에 의해 저장 장치로부터 판독될 수 있다.In one embodiment, information relating to physical storage location attributes for available physical storage locations is obtained (step 204). Information relating to physical storage location attributes may be provided by the manufacturer of the storage device (or by another entity). For example, the physical storage location attribute may be provided on a solid state drive (SSD) sold with the storage device. The physical storage location attribute of the storage device can also be stored on the storage device, so that the physical storage location attribute can be read from the storage device by the system accessing the storage device.
일 실시예에서, 저장 장치 내에서 상이한 물리적 저장 위치의 속성을 결정하도록 저장 장치 상에서 테스트가 행해질 수 있다. 예를 들어, 전통적인 회전 플래터 드라이브 내에서 상이한 영역의 판독 및/또는 기록 속도를 결정하도록 판독 및/또는 기록의 시퀀스가 회전 플래터의 상이한 영역 상에서 행해질 수 있다. 다른 예로는 SSD 내의 싱글 레벨 셀 및 동일한 SSD 내에의 멀티-레벨 셀의 판독 및 기록 속도를 테스트하는 것을 수반한다. 테스트는 싱글 레벨 셀이 더 빠르다고 나타낼 수 있다. 다른 예는, 구체적으로 물리적 저장 위치와 관련되거나 또는 전체적으로 저장 장치와 관련된 수명을 결정하기 위하여 물리적 저장 위치 또는 물리적 저장 위치들의 세트가 고장 나기 전까지 액세스되는 횟수를 추적하는 것을 수반한다.In one embodiment, a test may be performed on the storage device to determine attributes of different physical storage locations within the storage device. For example, a sequence of reads and / or writes can be done on different areas of the rotating platter to determine the read and / or write speeds of the different areas within a traditional rotating platter drive. Another example involves testing the read and write speeds of a single level cell in an SSD and a multi-level cell in the same SSD. The test may indicate that the single level cell is faster. Another example involves tracking the number of times a physical storage location or a set of physical storage locations are accessed before they fail, specifically to determine the lifetime associated with the physical storage location or with the storage device as a whole.
일 실시예에서, 물리적 저장 위치는 (a) 특정 논리 블록에 대한 사용량 통계 및 (b) 물리적 저장 위치 속성에 기초하여, 특정 논리 블록에 논리적으로 저장된 데이터를 저장하기 위하여 선택된다(단계 206).In one embodiment, the physical storage location is selected to store data logically stored in the particular logical block based on (a) usage statistics for the particular logical block and (b) physical storage location attributes.
일 실시예에서, 높은 판독 및/또는 기록 액세스 속도를 갖는 물리적 저장 위치가 높은 액세스 빈도와 관련된 논리 블록에 논리적으로 저장된 데이터를 저장하기 위하여 선택된다. 또한, 낮은 판독 및/또는 기록 액세스 속도를 갖는 물리적 저장 위치는 낮은 액세스 빈도와 관련된 논리 블록에 논리적으로 저장된 데이터를 저장하기 위하여 선택된다.In one embodiment, a physical storage location having a high read and / or write access rate is selected to store data logically stored in a logical block associated with a high access frequency. In addition, physical storage locations with low read and / or write access rates are selected to store data logically stored in logical blocks associated with low access frequencies.
실시예에서, 긴 수명을 가진 물리적 저장 위치가 높은 액세스 빈도와 관련된 논리 블록에 논리적으로 저장된 데이터를 저장하기 위하여 선택된다. 또한, 짧은 수명을 가진 물리적 저장 위치는 낮은 액세스 빈도와 관련된 논리 블록에 논리적으로 저장된 데이터를 저장하기 위하여 선택된다.In an embodiment, a long lifetime physical storage location is selected for storing data logically stored in logical blocks associated with high access frequencies. In addition, physical storage locations with short lifetimes are selected to store data logically stored in logical blocks associated with low access frequencies.
일 실시예에서, 논리 블록에 논리적으로 저장된 데이터는, 상기 데이터가 데이터의 저장으로부터 특정 시간 윈도우 내에 판독되리라 기대된다고 결정하는 것에 응하여 고속 저장 위치에 저장될 수 있다. 물리적 저장 위치는 데이터가 저장되는 시간 또는 이벤트에 기초하여 논리 블록에 논리적으로 저장된 데이터를 저장하기 위하여 선택될 수 있다. 예를 들어, 특정 논리 블록에 논리적으로 저장된 데이터가 매일 오전 9시에 판독되고 데이터가 오전 7시와 오전 9시 사이에 저장된다고 사용량 통계가 나타내는 경우, 데이터는 높은 판독 속도를 가진 물리적 저장 위치에 저장될 수 있다.In one embodiment, data logically stored in a logical block may be stored in a fast storage location in response to determining that the data is expected to be read within a specific time window from storage of the data. The physical storage location may be selected to store data logically stored in a logical block based on the time or event at which the data is stored. For example, if usage statistics indicate that data logically stored in a particular logical block is read at 9:00 AM every day and the data is stored between 7:00 AM and 9:00 AM, the data is stored in a physical storage location with a high read rate. Can be stored.
일 실시예에서, 사용량 통계의 상이한 유형(예를 들어, 액세스 빈도, 액세스 유형, 액세스 시간 등) 및/또는 저장 위치 속성의 상이한 유형(예를 들어, 속도, 수명 등)은 특정 논리 블록에 논리적으로 저장된 데이터를 저장하기 위하여 물리적 저장 위치를 결정하도록 조합하여 평가될 수 있다. 예를 들어, 특정 논리 블록에 논리적으로 저장된 특정 데이터는 자주 판독될 수 있지만, 자주 기록되지 않을 수도 있다. 고장 나기 전까지의 높은 추정 판독 수 및 높은 판독 속도를 가진 물리적 저장 위치는 특정 데이터를 저장하기 위하여 선택될 수 있다. 상기 물리적 저장 위치는, 물리적 저장 위치가 고장 나기 전까지의 낮은 추정 기록 수 또는 낮은 기록 속도를 가지는 경우애도 선택될 수 있다.In one embodiment, different types of usage statistics (eg, access frequency, access type, access time, etc.) and / or different types of storage location attributes (eg, speed, age, etc.) are logically stored in a particular logical block. Can be evaluated in combination to determine a physical storage location for storing the stored data. For example, certain data logically stored in a particular logical block may be read frequently, but not often. Physical storage locations with high estimated read counts and high read rates until failure can be selected to store specific data. The physical storage location may be selected even if the estimated storage number or low writing speed before the physical storage location fails.
일 실시예에서, 물리적 저장 위치의 선택은 이용가능한 모든 저장 위치의 비교에 기초한다. 예를 들어, 이용 가능한 저장 위치 중에, 가장 빠르거나 가장 오래 지속되는 저장 위치의 상위 사분위(quartile)는 가장 자주 액세스 되는 데이터들의 상위 사분위와 매칭된다.In one embodiment, the selection of the physical storage location is based on a comparison of all available storage locations. For example, among the available storage locations, the upper quartile of the fastest or longest lasting storage locations matches the upper quartile of the data that is most frequently accessed.
다른 예로는 전통적인 플래터 드라이브 및 솔리드 스테이트 드라이브의 동시 사용을 수반한다. 전통적인 플래터 드라이브는 일반적으로 높은 수명 또는 추정 수명을 갖는 경향이 있다. 그러나, 전통적인 플래터 드라이브는 느린 경향이 있다. 이에 비해, 솔리드 스테이트 드라이브는 일반적으로 낮은 수명을 갖지만, 전통적인 플래터 드라이브보다 더 높은 판독/기록 속도를 제공한다. 일 실시예에서, 백그라운드 프로세스는 특정 논리 블록에 논리적으로 저장된 데이터 세트(예를 들어, 로그 파일)에 계속해서 기록할 수 있고, 상기 데이터를 거의 판독하지 않을 수 있다. 이 경우에, 낮은 우선순위의 백그라운드 프로세스가 기록을 요청하는 것에 근거하여 특정 논리 블록에 논리적으로 저장된 데이터에 대한 기록 속도가 중요하지 않다는 결정이 내려질 수 있다. 기록 액세스가 자주 요청되는 경우에도 판독 액세스가 거의 요청되지 않는 것에 근거하여 이러한 결정이 내려질 수 있다. 느린 기록 속도를 갖는 전통적인 플래터 드라이브는, 고장 없이 매우 높은 수의 기록을 허용할 것이고 기록 속도가 중요하지 않으므로 적합할 수 있다. 솔리드 스테이트 드라이브는 연속 기록에 실패할 가능성이 더 크고 솔리드 스테이트 드라이브의 높은 기록 속도가 필요하지 않을 것이므로 이 예에서는 솔리드 스테이트 드라이브가 적합하지 않을 수 있다. Another example involves the simultaneous use of traditional platter drives and solid state drives. Traditional platter drives generally have a high or estimated life. However, traditional platter drives tend to be slow. In comparison, solid state drives generally have a low lifespan, but provide higher read / write speeds than traditional platter drives. In one embodiment, the background process may continue to write to a data set (eg, log file) logically stored in a particular logical block, and may rarely read the data. In this case, it may be determined that the writing speed for data logically stored in a particular logical block is not important, based on the request of the writing by a lower priority background process. Even if write access is frequently requested, this determination can be made based on the fact that read access is rarely required. Traditional platter drives with a slow write speed may be suitable because they will allow a very high number of writes without failure and the write speed is not critical. Solid state drives may not be suitable in this example because solid state drives are more likely to fail serial writes and will not require the higher write speeds of solid state drives.
일단 데이터의 저장을 위한 적합한 물리적 저장 위치가 선택되면, 상기 데이터는 선택된 물리적 저장 위치에 저장된다(단계 208). 물리적 저장 위치에 데이터를 저장하는 것은, 저장 드라이버로 하여금 특정 저장 위치 속성(예를 들어, 최소 수명)에 매칭되는 임의의 물리적 저장 위치에 데이터를 저장하도록 지시하는 것을 수반할 수 있다. Once a suitable physical storage location for storage of data is selected, the data is stored at the selected physical storage location (step 208). Storing data in a physical storage location may involve instructing the storage driver to store the data in any physical storage location that matches a particular storage location attribute (eg, minimum lifetime).
일 실시예에서, 상기 물리적 저장 위치에 데이터를 저장하는 것은, 저장 드라이버로 하여금 메모리의 특정 영역 내의 임의의 물리적 저장 위치에 데이터를 저장하도록 지시하는 것을 수반할 수 있다. 예를 들어, 특정 저장 장치 또는 저장 장치 내의 특정 영역이 선택될 수 있다. 그 후에 저장 드라이버는 데이터를 저장하기 위하여 물리적 저장 위치의 특정 어드레스를 선택할 수 있다.In one embodiment, storing data in the physical storage location may involve instructing a storage driver to store the data in any physical storage location within a particular area of memory. For example, a particular storage device or specific area within the storage device may be selected. The storage driver can then select a specific address of the physical storage location to store the data.
일 실시예에서, 물리적 저장 위치에 데이터를 저장하는 것은, 저장 드라이버로 하여금 물리적 저장 위치의 특정 어드레스에 데이터를 저장하도록 지시하는 것을 수반할 수 있다.In one embodiment, storing data at the physical storage location may involve instructing the storage driver to store the data at a specific address of the physical storage location.
데이터 저장 복제Data store replication
일 실시예에서, 복수의 물리적 저장 위치(예를 들어, 복수의 상이한 장치들 및/또는 단일 장치의 복수의 영역들)에 데이터 사본이 저장될 수 있다. 예를 들어, 디스크 파일의 논리 블록에 논리적으로 저장된 데이터는 회전 플래터 드라이브 및 솔리드 스테이트 드라이브 상에 동시에 저장될 수 있다.In one embodiment, a copy of data may be stored in a plurality of physical storage locations (eg, a plurality of different devices and / or a plurality of areas of a single device). For example, data logically stored in logical blocks of a disk file may be stored simultaneously on a rotating platter drive and a solid state drive.
예를 들어, 데이터는 회전 플래터 드라이브 등의 제1 데이터 소스로부터 요청될 수 있다. 상기 요청에 응답하여, 상기 요청된 데이터가 또한 솔리드 스테이트 드라이브 상에 저장되는 것이 결정된다. 상기 데이터는 회전 플래터 드라이브 대신에 솔리드 스테이트 드라이브로부터 판독될 수 있다. 하나 이상의 요인들 때문에 요청된 데이터 소스 대신에 새로운 데이터 소스가 선택될 수 있다. 예를 들어, 솔리드 스테이트 드라이브로부터 데이터를 판독하는 것은 회전 플래터 드라이브로부터 데이터를 판독하는 것 보다 빠를 수 있다. 연속하는 판독 요청을 수반하는 다른 예에서, 회전 플래터 드라이브는 회전 플래터 드라이브의 수명으로 인하여 요청된 솔리드 스테이트 드라이브 대신에 데이터 소스로서 선택될 수 있다. For example, data may be requested from a first data source, such as a rotating platter drive. In response to the request, it is determined that the requested data is also stored on the solid state drive. The data can be read from a solid state drive instead of a rotating platter drive. One or more factors may cause a new data source to be selected instead of the requested data source. For example, reading data from a solid state drive can be faster than reading data from a rotating platter drive. In another example involving consecutive read requests, the rotating platter drive may be selected as a data source instead of the requested solid state drive due to the lifetime of the rotating platter drive.
일 실시예에서, 특정 물리적 저장 위치는 시스템의 현재 이용에 기초하여 선택될 수 있다. 예를 들어, 요청된 데이터를 저장하는 복수의 저장 장치는 현재 이용 또는 현재 입/출력 요청 큐를 결정하도록 평가될 수 있다. 가장 낮은 현재 사용 또는 가장 큰 현재 가용성을 가진 저장 장치가 데이터를 검색하기 위하여 데이터 소스로서 선택될 수 있다. 예를 들어, 다른 저장 장치가 이용가능한 동안에도, 데이터를 가진 저장 장치들 중 하나가 다가오는 컴퓨터 작업을 위하여 이미 스케줄링되어 있을 수 있다.In one embodiment, a particular physical storage location may be selected based on the current use of the system. For example, a plurality of storage devices that store the requested data can be evaluated to determine the current use or current input / output request queue. The storage device with the lowest current use or the highest current availability can be selected as the data source to retrieve the data. For example, while other storage devices are available, one of the storage devices with data may already be scheduled for upcoming computer tasks.
하드웨어 개요Hardware overview
일 실시예에 따르면, 여기에 설명된 기술은 하나 이상의 전용 컴퓨팅 장치들에 의해 구현될 수 있다. 상기 전용 컴퓨팅 장치는 상기 기술을 수행하기 위하여 하드웨어에 내장(hard-wired)될 수 있거나, 또는 하나 이상의 주문형 집적회로(ASIC) 또는 상기 기술을 수행하도록 지속적으로 프로그래밍되는 필드 프로그램가능 게이트 어레이(FPGA) 등의 디지털 전자 장치를 포함할 수 있거나, 펌웨어, 메모리, 다른 저장 장치 또는 조합으로 프로그램 명령에 따라 기술을 수행하도록 프로그램된 하나 이상의 범용 하드웨어 프로세서를 포함할 수 있다. 이러한 전용 컴퓨팅 장치는 기술을 성취하기 위하여 맞춤형 프로그래밍과 맞춤형 하드웨어-내장 로직, ASIC, 또는 FPGA를 조합할 수 있다. 전용 컴퓨팅 장치는 데스크톱 컴퓨터 시스템, 휴대용 컴퓨터 시스템, 핸드헬드 장치, 네트워킹 장치 또는 기술을 구현하기 위한 하드웨어-내장 및/또는 프로그램 로직을 포함하는 임의의 다른 장치일 수 있다.According to one embodiment, the techniques described herein may be implemented by one or more dedicated computing devices. The dedicated computing device may be hard-wired in hardware to perform the technique, or one or more application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) continuously programmed to perform the technique. Or digital electronic devices such as the electronic device, or one or more general-purpose hardware processors programmed to perform techniques according to program instructions in firmware, memory, other storage devices, or a combination thereof. These dedicated computing devices may combine custom programming with custom hardware-embedded logic, ASICs, or FPGAs to achieve the technology. The dedicated computing device may be a desktop computer system, a portable computer system, a handheld device, a networking device or any other device including hardware-built and / or program logic for implementing the technology.
예를 들어, 도 3은 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템(300)을 도시하는 블록도이다. 컴퓨터 시스템(300)은 버스(302) 또는 정보를 통신하기 위한 기타 통신 메커니즘, 및 정보를 처리하기 위해 버스(302)와 연결된 하드웨어 프로세서(304)를 포함한다. 하드웨어 프로세서(304)는 예를 들어, 범용 마이크로프로세서일 수 있다. For example, FIG. 3 is a block diagram illustrating a
컴퓨터 시스템(300)은 또한 프로세서(304)에 의해 실행될 명령 및 정보를 저장하기 위해 버스(302)에 연결된 랜덤 액세스 메모리(RAM) 또는 기타 동적 저장 장치와 같은 메인 메모리(306)를 포함한다. 메인 메모리(306)는 또한 프로세서(304)에 의해 실행될 명령의 실행 동안 임시 변수 또는 기타 중간 정보를 저장하기 위해 사용될 수 있다. 이러한 명령이 프로세서(304)에서 액세스 가능한 비일시적 저장 매체에 저장될 때, 컴퓨터 시스템(300)은, 명령에 특정된 동작을 행하도록 맞추어진 전용 기계가 된다.
컴퓨터 시스템(300)은 프로세서(304)에 대한 정적인 정보 및 명령을 저장하기 위해 버스(302)에 연결되는 판독 전용 메모리(ROM)(308) 또는 기타 정적인 저장 장치를 더 포함한다. 정보 및 명령을 저장하기 위해 자기 디스크 또는 광 디스크와 같은 저장 장치(310)가 제공되어 버스(302)에 연결된다.
컴퓨터 시스템(300)은 컴퓨터 사용자에게 정보를 표시하기 위해 CRT와 같은 디스플레이(312)에 버스(302)를 통하여 연결될 수 있다. 프로세서(304)에 정보 및 명령어 선택을 전달하기 위해 영숫자 및 기타 키를 포함하는 입력 장치(314)가 버스(302)에 연결된다. 다른 유형의 사용자 입력 장치로는 프로세서(304)에 방향 정보 및 명령어 선택을 전달하고 디스플레이(312) 상의 커서 이동을 제어하기 위해 마우스, 트랙볼 또는 커서 방향키와 같은 커서 제어부(316)가 있다. 이 입력 장치는 통상적으로 두 개의 축, 즉 제1 축(예컨대, x축) 및 제2 축(예컨대, y축)으로 2의 자유도를 갖고, 이는 장치가 평면에서의 위치를 지정할 수 있게 해준다.
컴퓨터 시스템(300)은 맞춤형 하드웨어 내장 로직, 하나 이상의 ASIC 또는 FPGA, 펌웨어 및/또는 전용 기계가 되도록 컴퓨터 시스템(300)을 프로그램 하거나 또는 컴퓨터 시스템(300)과 조합하여 전용 기계가 되는 프로그램 로직을 이용하여 여기에 설명된 기술들을 구현할 수 있다. 하나의 실시예에 따라, 이러한 기술은 메인 메모리(306)에 포함된 하나 이상의 명령의 하나 이상의 시퀀스를 프로세서(304)가 실행하는 것에 응답하여 컴퓨터 시스템(300)에 의해 수행된다. 이러한 명령은 저장 장치(310)와 같은 또 다른 저장 매체로부터 메인 메모리(306)로 판독될 수 있다. 메인 메모리(306)에 포함된 명령 시퀀스의 실행으로 프로세서(304)로 하여금 여기서 설명된 프로세스 단계를 수행하게 한다. 대안의 실시예에서, 하드웨어 내장 회로는 소프트웨어 명령을 대신하여 또는 이와 함께 사용될 수 있다.
여기에 사용되는 용어 “저장 매체”는 기계를 특정 방식으로 동작시키는 데이터 및/또는 명령을 저장하는 임의의 비일시적 매체를 칭한다. 이러한 저장 매체는 비휘발성 매체 및/또는 휘발성 매체를 포함할 수 있다. 비휘발성 매체는 예를 들어 저장 장치(310)와 같은 광학 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(306)와 같은 동적 메모리를 포함한다. 저장 매체의 일반적인 형태는 예를 들어 플로피 디스크, 플렉서블 디스크, 하드 디스크, 솔리드 스테이트 드라이브, 자기 테이프, 또는 임의의 기타 자기 데이터 저장 매체, CD-ROM, 임의의 기타 광학 데이터 저장 매체, 홀 패턴을 구비한 임의의 기타 물리적 매체, RAM, PROM, EPROM, FLASH-EPROM, NVRAM, 임의의 기타 메모리 칩 또는 카트리지를 포함한다.The term “storage medium” as used herein refers to any non-transitory medium that stores data and / or instructions that operate a machine in a particular way. Such storage media may include non-volatile media and / or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as
저장 매체는 전송 매체와 별개이지만, 전송 매체와 함께 이용될 수 있다. 전송 매체는 저장 매체 사이에 정보를 전송하는데 관여한다. 예를 들어, 전송 매체는 버스(302)를 포함하는 와이어를 비롯하여 동축 케이블, 구리 와이어 및 광섬유를 포함한다. 전송 매체는 또한 무선파 및 적외선 데이터 통신 중에 발생하는 것들과 같은 음향 또는 광파의 형태를 취할 수 있다.The storage medium is separate from the transmission medium, but can be used with the transmission medium. Transmission media is involved in transferring information between storage media. For example, the transmission medium includes coaxial cables, copper wires, and optical fibers, including wires that include
다양한 형태의 매체가 실행을 위해 프로세서(304)에 하나 이상의 명령의 하나 이상의 시퀀스를 전달하는 데에 수반될 수 있다. 예를 들어, 명령은 처음에 원격 컴퓨터의 자기 디스크 또는 솔리드 스테이트 드라이브 상에 전달될 수 있다. 원격 컴퓨터는 자신의 동적 메모리로 명령을 로딩하고, 모뎀을 사용하여 전화선을 통해 명령을 전송할 수 있다. 컴퓨터 시스템(300)에 국소적인 모뎀은 전화선 상에서 데이터를 수신하고 적외선 송신기를 사용하여 데이터를 적외선 신호로 변환할 수 있다. 적외선 검출기는 적외선 신호로 수송된 데이터를 수신할 수 있고, 적합한 회로가 버스(302)를 통해 데이터를 배치할 수 있다. 버스(302)는 메인 메모리(306)에 데이터를 전달하며, 메인 메모리(306)로부터 프로세서(304)는 명령을 검색하고 실행한다. 메인 메모리(306)에 의해 수신된 명령은 프로세서(304)에 의한 실행 전이나 후에 저장 장치(310) 상에 선택적으로 저장될 수 있다.Various forms of media may be involved in carrying one or more sequences of one or more instructions to the
컴퓨터 시스템(300)은 또한 버스(302)에 연결된 통신 인터페이스(318)를 포함한다. 통신 인터페이스(318)는 로컬 네트워크(322)에 접속되어 있는 네트워크 링크(320)에 양방향 데이터 통신 연결을 제공한다. 예를 들어, 통신 인터페이스(318)는 데이터 통신 접속을 대응하는 유형의 전화선에 제공하는 ISDN(integrated services digital network) 카드, 케이블 모뎀, 위성 모뎀, 또는 모뎀일 수 있다. 다른 예로서, 통신 인터페이스(318)는 데이터 통신 접속을 호환가능한 LAN에 제공하는 LAN 카드일 수 있다. 무선 링크도 또한 구현될 수 있다. 임의의 이러한 임의의 구현에서, 통신 인터페이스(318)는 다양한 유형의 정보를 나타내는 디지털 데이터 스트림을 전달하는 전기, 전자기, 또는 광학 신호를 송신 및 수신한다.
네트워크 링크(320)는 통상적으로 다른 데이터 장치에 하나 이상의 네트워크를 통하여 데이터 통신을 제공한다. 예를 들어, 네트워크 링크(320)는 호스트 컴퓨터(324) 또는 ISP(인터넷 서비스 제공자; 326)에 의해 동작되는 데이터 장비에 로컬 네트워크(322)를 통한 접속을 제공할 수 있다. 이어서 ISP(326)는 지금은 일반적으로 "인터넷"(328)으로 불리는 월드 와이드 패킷 데이터 통신 네트워크를 통하여 데이터 통신 서비스를 제공한다. 로컬 네트워크(322) 및 인터넷(328)은 둘 다 디지털 데이터 스트림을 전달하는 전기, 전자기 또는 광학 신호를 사용한다. 컴퓨터 시스템(300)에, 그리고 컴퓨터 시스템(300)으로부터 디지털 데이터를 전달하는, 다양한 네트워크를 통한 신호 및 네트워크 링크(320)와 통신 인터페이스(318)를 통한 신호는 전송 매체의 예시적인 형태이다.Network link 320 typically provides data communication through one or more networks to other data devices. For example,
컴퓨터 시스템(300)은 네트워크(들), 네트워크 링크(320) 및 통신 인터페이스(318)를 통하여 프로그램 코드를 비롯하여 메시지를 보내고 데이터를 수신할 수 있다. 인터넷 예에서, 서버(330)는 인터넷(328), ISP(326), 로컬 네트워크(322) 및 통신 인터페이스(318)를 통하여 애플리케이션 프로그램에 대하여 요청된 코드를 전송할 수 있다.
수신된 코드는 수신될 때 프로세서(304)에 의해 실행될 수 있고, 그리고/또는 추후 실행을 위해 저장 장치(310) 또는 기타 비휘발성 저장장치에 저장될 수 있다. The received code may be executed by the
전술한 명세서에서, 본 발명의 실시예는 구현예마다 달라질 수 있는 복수의 구체적인 세부사항을 언급하여 설명하였다. 따라서, 명세서 및 도면은 한정적 의미가 아니라 예시적인 것으로서 간주되어야 할 것이다. 본 발명의 범위 및 본 출원인이 본 발명의 범위로 의도하는 것은, 이후의 임의의 수정을 포함하여, 본 출원에 첨부된 청구항의 범위 및 이와 균등한 범위에 의해 유일하게 정해진다. In the foregoing specification, embodiments of the present invention have been described with reference to a plurality of specific details that may vary from implementation to implementation. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. The scope of the present invention and what the applicant intends as the scope of the present invention are defined solely by the scope of the claims appended hereto and their equivalents, including any subsequent modifications.
Claims (16)
파일 시스템에서 논리 블록과 관련된 사용량 통계를 결정하는 단계;
(a) 제1 물리적 저장 위치와 관련된 적어도 하나의 속성 및 (b) 상기 논리 블록과 관련된 상기 사용량 통계에 기초하여 상기 논리 블록에 할당하기 위해 복수의 물리적 저장 위치 중 제1 물리적 저장 위치를 선택하는 단계; 및
상기 논리 블록이 상기 제1 물리적 저장 위치에 할당되도록 하는 단계를 포함하는 컴퓨터 구현 방법.In a computer implemented method,
Determining usage statistics associated with logical blocks in the file system;
selecting a first physical storage location from among a plurality of physical storage locations for allocation to the logical block based on (a) at least one attribute associated with a first physical storage location and (b) the usage statistics associated with the logical block. step; And
Causing the logical block to be assigned to the first physical storage location.
상기 논리 블록에 논리적으로 저장된 데이터를 판독하기 위한 요청을 수신하는 단계로서, 상기 데이터는 상기 제1 물리적 저장 위치 및 제2 물리적 저장 위치에 저장되는, 요청을 수신하는 단계; 및
상기 제1 물리적 저장 위치와 관련된 적어도 특정 속성에 기초하여 상기 제1 물리적 저장 위치로부터 상기 데이터를 판독하는 단계를 더 포함하는 컴퓨터 구현 방법.The method of claim 1,
Receiving a request to read data logically stored in the logical block, the data being stored in the first physical storage location and a second physical storage location; And
And reading the data from the first physical storage location based at least on certain attributes associated with the first physical storage location.
제2 물리적 저장 위치에 저장된 데이터를 판독하기 위한 요청을 수신하는 단계;
상기 데이터가 또한 상기 제1 물리적 저장 위치에 저장되는 것을 결정하는 단계; 및
상기 제1 물리적 저장 위치와 관련된 적어도 특정 속성에 기초하여 상기 제1 물리적 저장 위치로부터 상기 데이터를 판독하는 단계를 더 포함하는 컴퓨터 구현 방법.The method of claim 1,
Receiving a request to read data stored at a second physical storage location;
Determining that the data is also stored in the first physical storage location; And
And reading the data from the first physical storage location based at least on certain attributes associated with the first physical storage location.
상기 특정 속성은 상기 제1 물리적 저장 위치의 현재 이용인 컴퓨터 구현 방법.The method of claim 3,
And wherein said particular attribute is a current use of said first physical storage location.
상기 사용량 통계를 결정하는 단계는 상기 논리 블록에 논리적으로 저장된 임의의 데이터에 대한 액세스를 모니터링하는 것을 포함하는 컴퓨터 구현 방법.The method of claim 1,
Determining the usage statistics comprises monitoring access to any data logically stored in the logical block.
상기 사용량 통계를 결정하는 단계는 상기 모니터링이 행해지는 동안 상기 논리 블록에 할당되는 하나 이상의 물리적 저장 위치에 대한 액세스를 모니터링하는 것을 포함하는 컴퓨터 구현 방법.The method of claim 1,
Determining the usage statistics comprises monitoring access to one or more physical storage locations allocated to the logical block while the monitoring is performed.
상기 사용량 통계를 결정하는 단계는, 운영 체제로부터 상기 논리 블록을 참조하는 데이터 액세스 요청을 모니터링하는 것을 포함하는 컴퓨터 구현 방법.The method of claim 1,
Determining the usage statistics comprises monitoring a data access request referencing the logical block from an operating system.
상기 사용량 통계는:
상기 논리 블록에 논리적으로 저장된 임의의 데이터와 관련된 판독 주파수;
상기 논리 블록에 논리적으로 저장된 임의의 데이터와 관련된 기록 주파수; 및
상기 논리 블록에 논리적으로 저장된 임의의 데이터와 관련된 액세스 타이밍
중 하나 이상을 포함하는 컴퓨터 구현 방법.The method of claim 1,
The usage statistics are:
A read frequency associated with any data logically stored in the logical block;
A write frequency associated with any data logically stored in the logical block; And
Access timing associated with any data logically stored in the logical block
Computer implemented method comprising one or more of the.
논리 블록에 논리적으로 저장된 상기 데이터는 보조 저장 장치로부터 개별적으로 요청될 수 있는 메모리의 가장 작은 단위인 컴퓨터 구현 방법.The method of claim 1,
And said data logically stored in a logical block is the smallest unit of memory that can be individually requested from an auxiliary storage device.
상기 제1 물리적 저장 위치를 선택하는 단계는 논리 메모리 블록에 논리적으로 저장된 데이터를 저장하기 위한 연속적인 물리적 메모리 공간을 선택하는 것을 포함하는 컴퓨터 구현 방법.The method of claim 1,
Selecting the first physical storage location comprises selecting a contiguous physical memory space for storing data logically stored in a logical memory block.
상기 적어도 하나의 속성은 상기 제1 물리적 저장 위치의 판독 액세스 속도 또는 상기 제1 물리적 저장 위치의 기록 액세스 속도 중 하나 이상을 포함하는 컴퓨터 구현 방법.The method of claim 1,
And the at least one attribute comprises one or more of a read access rate of the first physical storage location or a write access rate of the first physical storage location.
상기 적어도 하나의 속성은: 상기 제1 물리적 저장 위치에 대한 고장 나기 전까지의 기록 액세스의 추정 수 또는 상기 제1 물리적 저장 위치에 대한 고장 나기 전까지의 판독 액세스의 추정 수 중 하나 이상을 포함하는 컴퓨터 구현 방법.The method of claim 1,
The at least one attribute comprises: at least one of: an estimated number of write accesses before failure for the first physical storage location or an estimated number of read accesses before failure for the first physical storage location. Way.
상기 적어도 하나의 속성은 상기 제1 물리적 저장 위치가 선택되기 전에 상기 제1 물리적 저장 위치에 저장된 데이터를 포함하는 컴퓨터 구현 방법The method of claim 1,
Wherein the at least one attribute comprises data stored at the first physical storage location before the first physical storage location is selected.
상기 논리 블록이 상기 제1 물리적 저장 위치에 할당되도록 하는 단계는, 상기 복수의 물리적 저장 위치에 복수의 논리 블록의 매핑으로, 상기 제1 물리적 저장 위치에 상기 논리 블록을 매핑하는 것을 포함하는 컴퓨터 구현 방법.The method of claim 1,
Causing the logical block to be assigned to the first physical storage location comprises: mapping the logical block to the first physical storage location with mapping of the plurality of logical blocks to the plurality of physical storage locations. Way.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201113984553A | 2011-01-04 | 2011-01-04 | |
US12/984,553 | 2011-01-04 | ||
PCT/US2012/020198 WO2012094400A1 (en) | 2011-01-04 | 2012-01-04 | Selecting storage locations for storing data based on storage location attributes and data usage statistics |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140041408A true KR20140041408A (en) | 2014-04-04 |
Family
ID=50651197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137020457A Withdrawn KR20140041408A (en) | 2011-01-04 | 2012-01-04 | Selecting storage locations for storing data based on storage location attributes and data usage statistics |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20140041408A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11354056B2 (en) | 2018-02-05 | 2022-06-07 | Micron Technology, Inc. | Predictive data orchestration in multi-tier memory systems |
US11416395B2 (en) | 2018-02-05 | 2022-08-16 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
US11740793B2 (en) | 2019-04-15 | 2023-08-29 | Micron Technology, Inc. | Predictive data pre-fetching in a data storage device |
US11977787B2 (en) | 2018-02-05 | 2024-05-07 | Micron Technology, Inc. | Remote direct memory access in multi-tier memory systems |
US12135876B2 (en) | 2018-02-05 | 2024-11-05 | Micron Technology, Inc. | Memory systems having controllers embedded in packages of integrated circuit memory |
-
2012
- 2012-01-04 KR KR1020137020457A patent/KR20140041408A/en not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11354056B2 (en) | 2018-02-05 | 2022-06-07 | Micron Technology, Inc. | Predictive data orchestration in multi-tier memory systems |
US11416395B2 (en) | 2018-02-05 | 2022-08-16 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
US11669260B2 (en) | 2018-02-05 | 2023-06-06 | Micron Technology, Inc. | Predictive data orchestration in multi-tier memory systems |
US11977787B2 (en) | 2018-02-05 | 2024-05-07 | Micron Technology, Inc. | Remote direct memory access in multi-tier memory systems |
US12135876B2 (en) | 2018-02-05 | 2024-11-05 | Micron Technology, Inc. | Memory systems having controllers embedded in packages of integrated circuit memory |
US12386742B2 (en) | 2018-02-05 | 2025-08-12 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
US11740793B2 (en) | 2019-04-15 | 2023-08-29 | Micron Technology, Inc. | Predictive data pre-fetching in a data storage device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9052826B2 (en) | Selecting storage locations for storing data based on storage location attributes and data usage statistics | |
US11436159B2 (en) | Using multi-tiered cache to satisfy input/output requests | |
US11138124B2 (en) | Migrating data between block pools in a storage system | |
US9632707B2 (en) | Enhancing tiering storage performance | |
US11762569B2 (en) | Workload based relief valve activation for hybrid controller architectures | |
JP5719013B2 (en) | Host read command return reordering based on flash read command completion time estimation | |
US20090132621A1 (en) | Selecting storage location for file storage based on storage longevity and speed | |
US9152325B2 (en) | Logical and physical block addressing for efficiently storing data | |
CN103268204B (en) | The tuning method and device of solid state hard disc | |
US11620218B2 (en) | Using multi-tiered cache to satisfy input/output requests | |
US11086565B2 (en) | Reducing effects of read array operations of read apparent voltage | |
EP3879393A1 (en) | Data processing method, controller, storage device and storage system | |
US8161251B2 (en) | Heterogeneous storage array optimization through eviction | |
US20210279174A1 (en) | Using multi-tiered cache to satisfy input/output requests | |
JP2015069353A (en) | Storage device, staging control method, and staging control program | |
KR20140041408A (en) | Selecting storage locations for storing data based on storage location attributes and data usage statistics | |
JP7580398B2 (en) | Method, system, and program for improving cache hit ratio for selected volumes in a storage system | |
US20140068214A1 (en) | Information processing apparatus and copy control method | |
US10949359B2 (en) | Optimizing cache performance with probabilistic model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0105 | International application |
Patent event date: 20130801 Patent event code: PA01051R01D Comment text: International Patent Application |
|
PG1501 | Laying open of application | ||
PC1203 | Withdrawal of no request for examination | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |