[go: up one dir, main page]

KR20160103811A - 가상 블록 장치 제공 시스템 - Google Patents

가상 블록 장치 제공 시스템 Download PDF

Info

Publication number
KR20160103811A
KR20160103811A KR1020150026653A KR20150026653A KR20160103811A KR 20160103811 A KR20160103811 A KR 20160103811A KR 1020150026653 A KR1020150026653 A KR 1020150026653A KR 20150026653 A KR20150026653 A KR 20150026653A KR 20160103811 A KR20160103811 A KR 20160103811A
Authority
KR
South Korea
Prior art keywords
memory
ids
data
logical block
memory cluster
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
Application number
KR1020150026653A
Other languages
English (en)
Inventor
김병섭
최현화
배승조
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020150026653A priority Critical patent/KR20160103811A/ko
Priority to US14/954,167 priority patent/US20160246523A1/en
Publication of KR20160103811A publication Critical patent/KR20160103811A/ko
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

본 발명의 일 실시예에 따른 가상 블록 장치 제공 시스템은 외부 컴퓨터와 데이터를 송수신하며 논리적 블록 ID들을 가지는 논리적 블록 장치 및 상기 데이터 중 적어도 일부가 저장되는 캐시 영역 및 저장 영역을 포함하는 물리적 블록 ID들을 가지는 물리적 블록 장치를 포함할 수 있고, 상기 캐시 영역은 제1 메모리 ID들을 가지는 제1 메모리 클러스터를 포함하며, 상기 저장 영역은 제2 메모리 ID들을 가지는 제2 메모리 클러스터 및 제3 메모리 ID들을 가지는 제3 메모리 클러스터를 포함할 수 있고, 상기 물리적 블록 ID들은 상기 제1 내지 제3 메모리 ID들을 포함할 수 있다.
본 발명의 일 실시예에 따른 가상 블록 장치 제공 시스템에 따르면, 다양한 종류의 저장 장치를 모두 포함하여 하나의 가상 블록 장치 제공 시스템만을 사용하여 큰 용량이 요구되는 어플리케이션과 빠른 액세스 타임이 요구되는 어플리케이션에 동시에 대응할 수 있다.

Description

가상 블록 장치 제공 시스템{SYSTEM FOR PROVIDING VIRTUAL BLOCK DEVICE}
본 발명의 실시예는 가상 블록 장치 제공 시스템에 관한 것이다.
최근, 블록 장치를 하부 저장 장치로 사용하는 시도가 있다. 그러한 시도들의 경우, 그 어플리케이션에 따라 빠른 액세스 타임(access time)이 요구되는 경우도 있고 큰 용량을 요구하는 경우도 있다.
현재 대표적으로 사용되는 저장 장치로는 HDD(hard disk drive)와 SSD(solid state drive)가 있다. HDD는 가격에 비해 큰 용량을 제공하지만 액세스 타임(데이터 접근 속도)이 느리고, SSD는 액세스 타임은 빠르지만 용량에 비해 가격이 비싼 단점이 있다. 따라서, 큰 용량이 요구되는 어플리케이션에 제공되는 가상 블록 장치 제공 시스템과 빠른 액세스 타임이 요구되는 가상 블록 장치 제공 시스템을 별도로 사용해야 하는 문제점이 있다.
본 발명의 실시예는 위와 같은 문제점을 해결하기 위한 것으로, 다양한 종류의 저장 장치를 모두 포함하여 하나의 가상 블록 장치 제공 시스템만을 사용하여 큰 용량이 요구되는 어플리케이션과 빠른 액세스 타임이 요구되는 어플리케이션에 동시에 대응할 수 있는 가상 블록 장치 제공 시스템을 제공하는 것을 목적으로 한다.
또한, 블록 사용 빈도 정보를 기반으로 상대적으로 짧은 액세스 타임을 가지는 저장 장치에 저장되어 있던 데이터를 상대적으로 긴 액세스 타임을 가지는 저장 장치에 옮기므로, 자주 사용되는 데이터만 상대적으로 짧은 액세스 타임을 가지는 저장 장치에 저장되어 액세스 타임이 단축된 가상 블록 장치 제공 시스템을 제공하는 것을 목적으로 한다.
본 발명의 일 실시예에 따른 가상 블록 장치 제공 시스템은 외부 컴퓨터와 데이터를 송수신하며 논리적 블록 ID들을 가지는 논리적 블록 장치 및 상기 데이터 중 적어도 일부가 저장되는 캐시 영역 및 저장 영역을 포함하는 물리적 블록 ID들을 가지는 물리적 블록 장치를 포함할 수 있고, 상기 캐시 영역은 제1 메모리 ID들을 가지는 제1 메모리 클러스터를 포함하며, 상기 저장 영역은 제2 메모리 ID들을 가지는 제2 메모리 클러스터 및 제3 메모리 ID들을 가지는 제3 메모리 클러스터를 포함할 수 있고, 상기 물리적 블록 ID들은 상기 제1 내지 제3 메모리 ID들을 포함할 수 있다.
실시예에 따라, 상기 제1 메모리 클러스터는 복수의 컴퓨터들로부터의 제1 메모리들을 포함하고, 상기 제2 메모리 클러스터는 상기 복수의 컴퓨터들로부터의 제2 메모리들을 포함하며, 상기 제3 메모리 클러스터는 상기 복수의 컴퓨터들로부터의 제3 메모리들을 포함할 수 있다.
실시예에 따라, 상기 가상 블록 장치 제공 시스템은, 상기 외부 컴퓨터의 라이트(WRITE) 명령에 의해 제공된 데이터를 상기 캐시 영역과 상기 저장 영역에 중복하여 기록할 수 있는 복제부 및 상기 논리적 블록 ID들과 상기 물리적 블록 ID들 사이의 맵핑 정보가 저장되는 맵핑 정보 저장부를 더 포함하고, 상기 복제부는 상기 라이트 명령에 의해 제공된 데이터를 기록한 이후, 상기 맵핑 정보를 상기 기록이 반영되도록 업데이트할 수 있다.
실시예에 따라, 상기 가상 블록 장치 제공 시스템은 선택부를 더 포함할 수 있고, 상기 외부 컴퓨터의 리드(READ) 명령에 의해 요청된 데이터가 존재하는 경우, 상기 선택부는 상기 리드 명령에 의해 요청된 데이터에 대응하는 논리적 블록 ID에 맵핑된 물리적 블록 ID를 상기 맵핑 정보 저장부로부터 수신할 수 있고, 상기 선택부는 상기 맵핑된 물리적 블록 ID에 대응하는 영역에 저장된 데이터를 상기 논리적 블록 장치에 제공할 수 있다.
실시예에 따라, 상기 복제부가 상기 라이트 명령에 의해 제공된 데이터를 중복하여 기록한 경우, 상기 라이트 명령에 의해 제공된 데이터에 대응하는 논리적 블록 ID는 제1 메모리 ID뿐 아니라 제2 또는 제3 메모리 ID 중 하나에도 맵핑될 수 있고, 상기 선택부는 상기 대응하는 논리적 블록 ID에 맵핑된 제1 메모리 ID에 대응하는 영역에 저장된 데이터뿐 아니라 상기 대응하는 논리적 블록 ID에 맵핑된 제2 또는 제3 메모리 ID에 대응하는 영역에 저장된 데이터도 상기 논리적 블록 장치에 제공할 수 있다.
실시예에 따라, 외부 컴퓨터의 라이트(WRITE) 명령에 의해 데이터뿐 아니라 상기 데이터의 출처(source)가 더 제공될 수 있고, 상기 복제부는 상기 출처를 기반으로 상기 라이트 명령에 의해 제공된 데이터를 상기 제2 메모리 클러스터에 기록할지 여부 및 상기 제3 메모리 클러스터에 기록할지 여부를 결정할 수 있다.
실시예에 따라, 상기 가상 블록 장치 제공 시스템은, 사용되는 논리적 블록 ID를 모니터링하여 블록 사용 빈도 정보를 생성하는 모니터부, 상기 블록 사용 빈도 정보를 저장하는 사용 빈도 저장부 및 상기 블록 사용 빈도 정보를 기반으로, 제a(a는 1 이상 3이하의 정수) 메모리 클러스터에 저장되어 있던 데이터 중 적어도 일부를 제b(b는 1 이상 3이하이며, a와 다른 정수) 메모리 클러스터로 옮기는 읽기 성능 조정 모듈을 더 포함할 수 있다.
실시예에 따라, 상기 제2 메모리 클러스터의 액세스 타임(access time)은 상기 제1 메모리 클러스터의 액세스 타임보다 길고 상기 제3 메모리 클러스터의 액세스 타임보다 짧으며, 상기 제2 메모리 클러스터는 솔리드 스테이트 드라이브(solid state drive)를 포함할 수 있다.
실시예에 따라, 상기 블록 사용 빈도 정보는 LRU(Least Recently Used) 리스트를 포함할 수 있고, 상기 읽기 성능 조정 모듈은, 상기 LRU 리스트에 포함되는 논리적 블록 ID들에 맵핑된 제2 메모리 ID들에 대응하는 영역들에 저장된 데이터들 중 적어도 일부를 상기 제1 메모리 클러스터로 옮길 수 있고, 상기 LRU 리스트에 포함되지 않은 논리적 블록 ID들에 맵핑된 제2 메모리 ID들에 대응하는 영역들에 저장된 데이터들 중 일부를 상기 제3 메모리 클러스터로 옮길 수 있다.
실시예에 따라, 상기 외부 컴퓨터는 미디어 스트림 서버, ftp 서버, dbms 서버 및 VMFS(Virtual Machine File System) 서버 중 적어도 하나와 데이터 송수신을 할 수 있다.
본 발명의 일 실시예에 따른 가상 블록 장치 제공 시스템은 다양한 종류의 저장 장치를 모두 포함하여 하나의 가상 블록 장치 제공 시스템만을 사용하여 큰 용량이 요구되는 어플리케이션과 빠른 액세스 타임이 요구되는 어플리케이션에 동시에 대응할 수 있다.
또한, 본 발명의 일 실시예에 따른 가상 블록 장치 제공 시스템은 블록 사용 빈도 정보를 기반으로 상대적으로 짧은 액세스 타임을 가지는 저장 장치에 저장되어 있던 데이터를 상대적으로 긴 액세스 타임을 가지는 저장 장치에 옮기므로, 자주 사용되는 데이터만 상대적으로 짧은 액세스 타임을 가지는 저장 장치에 저장되어 액세스 타임이 단축된다.
도 1은 본 발명의 일 실시예에 따른 가상 블록 장치 제공 시스템을 설명하기 위한 도면이다.
도 2는 도 1의 가상 블록 장치 제공 시스템 중 물리적 블록 장치를 설명하기 위한 도면이다.
도 3은 도 1의 가상 블록 장치 제공 시스템에서 사용되는 ID들 및 정보들을 설명하기 위한 도면이다.
도 4는 도 1의 가상 블록 장치 제공 시스템과 데이터를 송수신하는 외부 컴퓨터 및 외부 컴퓨터와 데이터 송수신을 할 수 있는 서버들을 설명하기 위한 도면이다.
이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예들을 상세히 설명한다. 명세서 전체에 걸쳐서 동일한 참조번호들은 실질적으로 동일한 구성요소들을 의미한다. 이하의 설명에서, 본 발명과 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 상세한 설명을 생략한다. 또한, 이하의 설명에서 사용되는 구성요소 명칭은 명세서 작성의 용이함을 고려하여 선택된 것일 수 있는 것으로서, 실제 제품의 부품 명칭과는 상이할 수 있다.
도 1은 본 발명의 일 실시예에 따른 가상 블록 장치 제공 시스템을 설명하기 위한 도면이다. 도 1을 참조하면, 가상 블록 장치 제공 시스템(200)은 논리적 블록 장치(210), 물리적 블록 장치(220), 복제부(230), 맵핑 정보 저장부(240), 선택부(250), 모니터부(260), 사용 빈도 저장부(270) 및 읽기 성능 조절 모듈(280)을 포함한다.
논리적 블록 장치(210)는 외부 컴퓨터(100)와 데이터를 송수신하고 논리적 블록 ID들을 가진다. 논리적 블록 ID는 이후에 도 3을 참조하여 자세히 설명될 것이다. 외부 컴퓨터(100)의 라이트(WRITE) 명령에 의해 데이터가 제공되고 외부 컴퓨터(100)의 리드(READ) 명령에 의해 데이터가 요청된다. 라이트(WRITE) 명령의 경우, 데이터 뿐 아니라 데이터의 출처가 더 제공될 수 있다. 데이터의 출처는 도 4를 참조하여 이후에 자세히 설명될 것이다.
물리적 블록 장치(220)는 캐시 영역(221) 및 저장 영역(226)을 포함한다. 캐시 영역(221)과 저장 영역(226) 각각에는 외부 컴퓨터(100)의 라이트 명령에 의해 제공된 데이터 중 적어도 일부가 저장된다. 캐시 영역(221)은 제1 메모리 클러스터(222)를 포함하고, 제1 메모리 클러스터(222)는 제1 메모리 ID들을 가진다. 저장 영역(226)은 제2 메모리 클러스터(227) 및 제3 메모리 클러스터(228)를 포함하고, 제2 메모리 클러스터(227)는 제2 메모리 ID들을 가지며, 제3 메모리 클러스터(228)는 제3 메모리 ID들을 가진다. 각각의 제1 메모리 ID는 제1 메모리 클러스터(222)의 일부 영역에 대응하며, 각각의 제2 메모리 ID는 제2 메모리 클러스터(227)의 일부 영역에 대응하고, 각각의 제3 메모리 ID는 제3 메모리 클러스터(228)의 일부 영역에 대응하며, 제1 내지 제3 메모리 클러스터(222, 227, 228)의 일부 영역에는 데이터가 저장될 수 있다. 물리적 블록 장치(220)는 물리적 블록 ID들을 가지고, 물리적 블록 ID들은 제1 내지 제3 메모리 ID들을 포함한다. 논리적 블록 ID들은 제1 내지 제3 메모리 ID들에 맵핑된다. 제1 내지 제3 메모리 ID들 및 논리적 블록 ID들과 물리적 블록 ID들 사이의 맵핑 정보는 이후에 도 3을 참조하여 자세히 설명될 것이다. 제1 메모리 클러스터(222)는 적어도 하나의 메모리(DRAM, SRAM 등)를 포함할 수 있고, 제2 메모리 클러스터(227)는 적어도 하나의 SSD를 포함할 수 있으며, 제3 메모리 클러스터(228)는 적어도 하나의 HDD를 포함할 수 있다. 이 경우, 제2 메모리 클러스터(227)의 액세스 타임은 제1 메모리 클러스터(222)의 액세스 타임보다 길고 제3 메모리 클러스터(228)의 액세스 타임보다 짧을 수 있다.
복제부(230)는 외부 컴퓨터(100)의 라이트 명령에 의해 제공된 데이터를 물리적 블록 장치(220)의 캐시 영역(221)과 저장 영역(226)에 중복하여 기록한다. 물론 캐시 영역(221)과 저장 영역(226) 중 하나에만 기록할 수도 있다. 복제부(230)가 저장 영역(226)에 데이터를 기록하는 경우, 라이트 명령에 의해 제공된 출처를 기반으로 제2 메모리 클러스터(227)에 기록할지 여부 및 제3 메모리 클러스터(228)에 기록할지 여부를 결정할 수 있다. 복제부(230)는 데이터를 기록한 이후, 기록이 반영되도록 맵핑 정보를 업데이트한다.
맵핑 정보 저장부(240)는 맵핑 정보가 저장된다. 복제부(230)는 라이트 명령에 의해 제공된 데이터를 물리적 블록 장치(220)의 캐시 영역(221)과 저장 영역(226)에 중복하여 기록하는 경우, 라이트 명령에 의해 제공된 데이터에 대응하는 논리적 블록 ID는 제1 메모리 ID에 맵핑된다. 동시에, 제2 또는 제3 메모리 ID 중 하나에도 맵핑된다. 만약 복제부(230)가 제1 내지 제3 메모리 클러스터들(222, 227, 228) 중 하나에만 라이트 명령에 의해 제공된 데이터를 기록하였다면, 라이트 명령에 의해 제공된 데이터에 대응하는 논리적 블록 ID는 제1 내지 제3 메모리 ID 중 하나에만 맵핑된다. 외부 컴퓨터(100)의 리드(READ) 명령에 의해 요청된 데이터가 존재하는 경우, 맵핑 정보 저장부(240)는 리드 명령에 의해 요청된 데이터에 대응하는 논리적 블록 ID에 맵핑된 제1 내지 제3 메모리 ID에 대응하는 제1 내지 제3 메모리 클러스터(222, 227, 228)의 영역을 찾아서 그 영역에 저장된 데이터를 외부로 송신한다.
선택부(250)는 외부 컴퓨터(100)의 리드(READ) 명령에 의해 요청된 데이터가 존재하는 경우, 맵핑 정보 저장부(240)로부터 맵핑된 물리적 블록 ID를 수신한다. 선택부(250)는 맵핑된 물리적 블록 ID에 저장된 데이터를 논리적 블록 장치(210)에 제공한다. 만약, 복제부(230)가 라이트 명령에 의해 제공된 데이터를 캐시 영역(221)과 저장 영역(226)에 중복하여 기록한 경우, 라이트 명령에 의해 제공된 데이터에 대응하는 논리적 블록 ID는 제1 메모리 ID뿐 아니라 제2 또는 제3 메모리 ID 중 하나에도 맵핑된다. 이 경우, 선택부(250)는 리드 명령에 의해 요청된 데이터에 대응하는 논리적 블록 ID에 맵핑된 제1 메모리 ID에 대응하는 영역에 저장된 데이터뿐 아니라 리드 명령에 의해 요청된 데이터에 대응하는 논리적 블록 ID에 맵핑된 제2 또는 제3 메모리 ID에 대응하는 영역에 저장된 데이터도 논리적 블록 장치(210)에 제공할 수 있다.
모니터부(260)는 사용되는 논리적 블록 ID를 모니터링하여 블록 사용 빈도 정보를 생성한다. 블록 사용 빈도 정보는 일정 시간 동안 사용된 횟수, 최근 사용된 시간 등을 포함할 수 있으나, 여기서는 설명의 편의를 위해 최근 사용된 시간만 포함한다고 가정한다. 이 경우, 블록 사용 빈도 정보는 LRU(least recently used) 리스트(정보)를 포함할 수 있다.
사용 빈도 저장부(270)는 블록 사용 빈도 정보를 저장한다.
읽기 성능 조정 모듈(280)은 블록 사용 빈도 정보를 기반으로, 제a(a는 1 이상 3이하의 정수) 메모리 클러스터에 저장되어 있던 데이터 중 적어도 일부를 제b(b는 1 이상 3이하이며, a와 다른 정수) 메모리 클러스터로 옮길 수 있다. LRU 리스트에 포함되는 논리적 블록 ID들의 경우, 자주 사용되어 가상 블록 장치 제공 시스템(200)의 전체 액세스 타임에 큰 영향을 미칠 수 있다. 제2 메모리 클러스터(227)가 SSD인 경우, 용량에 비해 가격이 비싸므로 용량이 작을 수 있다. 읽기 성능 조정 모듈(280)은 LRU 리스트에 포함되는 논리적 블록 ID들에 맵핑된 제2 메모리 ID들에 대응하는 영역들에 저장된 데이터 중 적어도 일부를 제1 메모리 클러스터(222)로 옮긴다. 또한, 읽기 성능 조정 모듈(280)은 LRU 리스트에 포함되지 않은 논리적 블록 ID들에 맵핑된 제2 메모리 ID들에 대응하는 영역들에 저장된 데이터들 중 적어도 일부를 제3 메모리 클러스터(228)로 옮긴다. 이렇게 LRU 리스트를 기반으로 제2 메모리 클러스터(227)에 저장되어 있던 데이터를 옮기는 경우, 제2 메모리 클러스터(227)의 용량이 효율적으로 사용될 수 있다.
도 2는 도 1의 가상 블록 장치 제공 시스템 중 물리적 블록 장치를 설명하기 위한 도면이다. 이하에서, 도 1 및 도 2를 참조하여 물리적 블록 장치(220)가 설명될 것이다.
캐시 영역(221) 내 제1 메모리 클러스터(222)는 제1 컴퓨터(300-1)로부터의 제1 메모리(222-1), 제2 컴퓨터(300-2)로부터의 제1 메모리(222-2) 및 제3 컴퓨터(300-3)로부터의 제1 메모리(222-3)를 포함한다. 즉, 제1 메모리 클러스터(222)는 복수의 컴퓨터들(300-1, 300-2, 300-3, 이하 300)로부터의 제1 메모리들(222-1, 222-2, 222-3)을 포함한다. 제2 메모리 클러스터(223)도 복수의 컴퓨터들(300)로부터의 제2 메모리들(227-1, 227-2, 227-3)을 포함하고, 제3 메모리 클러스터(228)도 복수의 컴퓨터들(300)로부터의 제3 메모리들(228-1, 228-2, 228-3)을 포함한다. 즉, 클러스터링으로 디스크(컴퓨터)를 추가시킴으로써, 캐시 영역(221) 및 저장 영역(226)의 용량을 용이하게 확장할 수 있다. 캐시 영역(221)은 시스템 내부에 의해 사용되는 영역으로 사용자 블록 중 액세스 타임의 단축 또는 부하 발생 시 부하 해결을 위해 사용될 수 있다. 여기서, 각각의 제1 메모리(222-1, 222-2, 222-3)는 메모리(DRAM, SRAM 등)일 수 있고, 각각의 제2 메모리(227-1, 227-2, 227-3)는 SSD일 수 있으며, 각각의 제3 메모리(228-1, 228-2, 228-3)는 HDD일 수 있다. 이 경우, 제2 메모리 클러스터(227)의 액세스 타임은 제1 메모리 클러스터(222)의 액세스 타임보다 길고 제3 메모리 클러스터(228)의 액세스 타임보다 짧다.
도 3은 도 1의 가상 블록 장치 제공 시스템에서 사용되는 ID들 및 정보들을 설명하기 위한 도면이다. 이하에서, 도 1 및 도 3을 참조하여 ID들 및 정보들이 설명될 것이다.
테이블(T210)은 논리적 블록 장치(210)의 논리적 블록 ID들을 설명하기 위한 테이블이고, 테이블(T222)은 제1 메모리 클러스터(222)의 제1 메모리 ID들을 설명하기 위한 테이블이며, 테이블(T227)은 제2 메모리 클러스터(227)의 제2 메모리 ID들을 설명하기 위한 테이블이고, 테이블(T228)은 제3 메모리 클러스터(228)의 제3 메모리 ID들을 설명하기 위한 테이블이다. 논리적 블록 장치(210)는 논리적 블록 ID들(B-0, B-1, B-2, B-3 등)을 가지며, 제1 메모리 클러스터(222)는 제1 메모리 ID들(M-0, M-1, M-2, M-3 등)을 가지고, 제2 메모리 클러스터(227)는 제2 메모리 ID들(S-0, S-1, S-2, S-3 등)을 가지고, 제3 메모리 클러스터(228)는 제3 메모리 ID들(H-0, H-1, H-2, H-3 등)을 가진다.
테이블(T240)은 맵핑 정보 저장부(240)에 저장되는 맵핑 정보를 설명하기 위한 테이블이다. 논리적 블록 ID들(B-0, B-1, B-2, B-3 등)이 물리적 블록 ID들(M-0, M-1, M-2, M-3, S-0, S-1, S-2, S-3, H-0, H-1, H-2, H-3 등)에 맵핑되어 있다. 외부 컴퓨터(100)의 라이트 명령에 의해 제공된 데이터가 캐시 영역(221)과 저장 영역(226)에 중복하여 기록되는 경우, 논리적 블록 ID는 제1 메모리 ID뿐 아니라 제2 또는 제3 메모리 ID 중 하나에도 맵핑된다. 예를 들어, 논리적 블록 ID(B-0)는 제1 메모리 ID(M-0) 및 제2 메모리 ID(S-1)에 맵핑되고, 논리적 블록 ID(B-1)은 제1 메모리 ID(M-1) 및 제3 메모리 ID(H-1)에 맵핑되며, 논리적 블록 ID(B-3)은 제1 메모리 ID(M-2) 및 제3 메모리 ID(H-3)에 맵핑된다. 또는, 외부 컴퓨터(100)의 라이트 명령에 의해 제공된 데이터가 캐시 영역(221) 또는 저장 영역(226) 중 어느 하나에만 기록되는 경우, 논리적 블록 ID는 제1 내지 제3 메모리 ID 중 하나에만 맵핑된다. 예를 들어, 논리적 블록 ID(B-2)는 제2 메모리 ID(S-2)에만 맵핑되고, 논리적 블록 ID(B-4)는 제1 메모리 ID(M-3)에만 맵핑된다.
테이블(T270)은 사용 빈도 저장부(270)에 저장된 LRU 리스트를 설명하기 위한 도면이다. LRU 리스트에 논리적 블록 ID들(B-10, B-8, B-120 및 B-2)이 저장되어 있다. LRU 리스트에 저장되어 있는 논리적 블록 ID들은 최근에 사용된 데이터에 대응하는 논리적 블록 ID들이라 판단될 수 있다. LRU 리스트에 저장되어 있는 논리적 블록 ID에 맵핑된 제2 메모리 ID들에 대응하는 영역들에 저장된 데이터가 읽기 성능 조절 모듈(280)에 의해 제1 메모리 클러스터(222)로 옮겨질 수 있다. 따라서, 논리적 블록 ID(B-2)에 맵핑된 제2 메모리 ID(S-2)에 대응하는 영역에 저장된 데이터가 제1 메모리 클러스터(222)로 옮겨질 수 있고, 논리적 블록 ID(B-2)에 제2 메모리 ID(S-2) 대신 제1 메모리 ID(예를 들어, M-4)가 맵핑될 수 있다. 도 3에 도시된 테이블(T270)과 달리, 만약 LRU 리스트에 B-2가 없는 경우, 논리적 블록 ID(B-2)에 맵핑된 제2 메모리 ID(S-2)에 대응하는 영역에 저장된 데이터가 제3 메모리 클러스터(228)로 옮겨질 수 있고, 논리적 블록 ID(B-2)에 제2 메모리 ID(S-2) 대신 제3 메모리 ID(예를 들어, H-4)가 맵핑될 수 있다.
도 4는 도 1의 가상 블록 장치 제공 시스템과 데이터를 송수신하는 외부 컴퓨터 및 외부 컴퓨터와 데이터 송수신을 할 수 있는 서버들을 설명하기 위한 도면이다. 이하에서, 도 1 및 도 4를 참조하여 설명될 것이다.
외부 컴퓨터(100)는 다양한 서버들(400)과 데이터 송수신을 할 수 있다. 서버들(400)로부터 데이터의 기록 요청을 수신하는 경우, 외부 컴퓨터(100)는 데이터를 수신하고 라이트 명령에 의해 데이터를 논리적 블록 장치(210)에 제공한다. 이 경우, 라이트 명령에 의해 데이터뿐 아니라 데이터의 출처가 더 제공될 수 있다. 예를 들어, 미디어 스트림 서버(410)로부터의 데이터인 경우 1, FTP 서버(420)로부터의 데이터인 경우 2, DBMS 서버(430)로부터의 데이터인 경우 3, VMFS 서버(440)로부터의 데이터인 경우 4라는 출처 데이터를 더 제공할 수 있고, 출처 데이터를 수신한 논리적 블록 장치(210)는 라이트 명령에 의해 제공된 데이터의 출처를 알 수 있다. 만약, 짧은 액세스 타임이 요구되는 서버(예를 들어, 미디어 스트림 서버(410))로부터 제공된 데이터는 저장 영역(226) 중 제2 메모리 클러스터(227)에 저장될 수 있다. 또한, 큰 용량이 요구되는 서버(예를 들어, FTP 서버(420))로부터 제공된 데이터는 저장 영역(226) 중 제3 메모리 클러스터(228)에 저장될 수 있다. 이와 같이, 출처를 기반으로 데이터를 저장하므로, 하나의 가상 블록 장치 제공 시스템만을 사용하여 큰 용량이 요구되는 어플리케이션과 빠른 액세스 타임이 요구되는 어플리케이션에 동시에 대응할 수 있다. 물론, 일단 제2 메모리 클러스터(227)에 저장되었던 데이터도 블록 사용 빈도 정보를 기반으로 제1 메모리 클러스터(222) 또는 제3 메모리 클러스터(228)로 옮겨질 수 있다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 명세서의 상세한 설명에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의해 정하여져야만 할 것이다.
200: 가상 블록 장치 제공 시스템 210: 논리적 블록 장치
220: 물리적 블록 장치

Claims (10)

  1. 외부 컴퓨터와 데이터를 송수신하며 논리적 블록 ID들을 가지는 논리적 블록 장치; 및
    상기 데이터 중 적어도 일부가 저장되는 캐시 영역 및 저장 영역을 포함하는 물리적 블록 ID들을 가지는 물리적 블록 장치를 포함하고,
    상기 캐시 영역은 제1 메모리 ID들을 가지는 제1 메모리 클러스터를 포함하며,
    상기 저장 영역은 제2 메모리 ID들을 가지는 제2 메모리 클러스터 및 제3 메모리 ID들을 가지는 제3 메모리 클러스터를 포함하고,
    상기 물리적 블록 ID들은 상기 제1 내지 제3 메모리 ID들을 포함하는 가상 블록 장치 제공 시스템.
  2. 제1항에 있어서,
    상기 제1 메모리 클러스터는 복수의 컴퓨터들로부터의 제1 메모리들을 포함하고,
    상기 제2 메모리 클러스터는 상기 복수의 컴퓨터들로부터의 제2 메모리들을 포함하며,
    상기 제3 메모리 클러스터는 상기 복수의 컴퓨터들로부터의 제3 메모리들을 포함하는 가상 블록 장치 제공 시스템.
  3. 제1항에 있어서,
    상기 가상 블록 장치 제공 시스템은,
    상기 외부 컴퓨터의 라이트(WRITE) 명령에 의해 제공된 데이터를 상기 캐시 영역과 상기 저장 영역에 중복하여 기록할 수 있는 복제부; 및
    상기 논리적 블록 ID들과 상기 물리적 블록 ID들 사이의 맵핑 정보가 저장되는 맵핑 정보 저장부를 더 포함하고,
    상기 복제부는 상기 라이트 명령에 의해 제공된 데이터를 기록한 이후, 상기 맵핑 정보를 상기 기록이 반영되도록 업데이트하는 가상 블록 장치 제공 시스템.
  4. 제3항에 있어서,
    상기 가상 블록 장치 제공 시스템은 선택부를 더 포함하고,
    상기 외부 컴퓨터의 리드(READ) 명령에 의해 요청된 데이터가 존재하는 경우, 상기 선택부는 상기 리드 명령에 의해 요청된 데이터에 대응하는 논리적 블록 ID에 맵핑된 물리적 블록 ID를 상기 맵핑 정보 저장부로부터 수신하고,
    상기 선택부는 상기 맵핑된 물리적 블록 ID에 대응하는 영역에 저장된 데이터를 상기 논리적 블록 장치에 제공하는 가상 블록 장치 제공 시스템.
  5. 제4항에 있어서,
    상기 복제부가 상기 라이트 명령에 의해 제공된 데이터를 중복하여 기록한 경우, 상기 라이트 명령에 의해 제공된 데이터에 대응하는 논리적 블록 ID는 제1 메모리 ID뿐 아니라 제2 또는 제3 메모리 ID 중 하나에도 맵핑되고,
    상기 선택부는 상기 대응하는 논리적 블록 ID에 맵핑된 제1 메모리 ID에 대응하는 영역에 저장된 데이터뿐 아니라 상기 대응하는 논리적 블록 ID에 맵핑된 제2 또는 제3 메모리 ID에 대응하는 영역에 저장된 데이터도 상기 논리적 블록 장치에 제공하는 가상 블록 장치 제공 시스템.
  6. 제4항에 있어서,
    외부 컴퓨터의 라이트(WRITE) 명령에 의해 데이터뿐 아니라 상기 데이터의 출처(source)가 더 제공되고,
    상기 복제부는 상기 출처를 기반으로 상기 라이트 명령에 의해 제공된 데이터를 상기 제2 메모리 클러스터에 기록할지 여부 및 상기 제3 메모리 클러스터에 기록할지 여부를 결정하는 가상 블록 장치 제공 시스템.
  7. 제1항에 있어서,
    상기 가상 블록 장치 제공 시스템은,
    사용되는 논리적 블록 ID를 모니터링하여 블록 사용 빈도 정보를 생성하는 모니터부;
    상기 블록 사용 빈도 정보를 저장하는 사용 빈도 저장부; 및
    상기 블록 사용 빈도 정보를 기반으로, 제a(a는 1 이상 3이하의 정수) 메모리 클러스터에 저장되어 있던 데이터 중 적어도 일부를 제b(b는 1 이상 3이하이며, a와 다른 정수) 메모리 클러스터로 옮기는 읽기 성능 조정 모듈을 더 포함하는 가상 블록 장치 제공 시스템.
  8. 제7항에 있어서,
    상기 제2 메모리 클러스터의 액세스 타임(access time)은 상기 제1 메모리 클러스터의 액세스 타임보다 길고 상기 제3 메모리 클러스터의 액세스 타임보다 짧으며,
    상기 제2 메모리 클러스터는 솔리드 스테이트 드라이브(solid state drive)를 포함하는 가상 블록 장치 제공 시스템.
  9. 제8항에 있어서,
    상기 블록 사용 빈도 정보는 LRU(Least Recently Used)리스트를 포함하고,
    상기 읽기 성능 조정 모듈은,
    상기 LRU 리스트에 포함되는 논리적 블록 ID들에 맵핑된 제2 메모리 ID들에 대응하는 영역들에 저장된 데이터들 중 적어도 일부를 상기 제1 메모리 클러스터로 옮기고,
    상기 LRU 리스트에 포함되지 않은 논리적 블록 ID들에 맵핑된 제2 메모리 ID들에 대응하는 영역들에 저장된 데이터들 중 일부를 상기 제3 메모리 클러스터로 옮기는 가상 블록 장치 제공 시스템.
  10. 제1항에 있어서,
    상기 외부 컴퓨터는 미디어 스트림 서버, ftp 서버, dbms 서버 및 VMFS(Virtual Machine File System) 서버 중 적어도 하나와 데이터 송수신을 할 수 있는 가상 블록 장치 제공 시스템.
KR1020150026653A 2015-02-25 2015-02-25 가상 블록 장치 제공 시스템 Withdrawn KR20160103811A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150026653A KR20160103811A (ko) 2015-02-25 2015-02-25 가상 블록 장치 제공 시스템
US14/954,167 US20160246523A1 (en) 2015-02-25 2015-11-30 System for providing virtual block device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150026653A KR20160103811A (ko) 2015-02-25 2015-02-25 가상 블록 장치 제공 시스템

Publications (1)

Publication Number Publication Date
KR20160103811A true KR20160103811A (ko) 2016-09-02

Family

ID=56693744

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150026653A Withdrawn KR20160103811A (ko) 2015-02-25 2015-02-25 가상 블록 장치 제공 시스템

Country Status (2)

Country Link
US (1) US20160246523A1 (ko)
KR (1) KR20160103811A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109725841B (zh) * 2017-10-30 2021-01-12 华为技术有限公司 数据写入方法、装置、存储系统、存储介质与控制器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4675985B2 (ja) * 2008-03-01 2011-04-27 株式会社東芝 メモリシステム

Also Published As

Publication number Publication date
US20160246523A1 (en) 2016-08-25

Similar Documents

Publication Publication Date Title
US6912669B2 (en) Method and apparatus for maintaining cache coherency in a storage system
US9665305B1 (en) Tiering data between two deduplication devices
US8938574B2 (en) Methods and systems using solid-state drives as storage controller cache memory
US9524220B1 (en) Memory optimization for configuration elasticity in cloud environments
JP2018163659A (ja) 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション
US20060174074A1 (en) Point-in-time copy operation
US20150227465A1 (en) Data storage within hybrid storage aggregate
US8713261B1 (en) Caching techniques
CN103907096B (zh) 闪存高速缓存中的部分数据片段的提升
US20110191523A1 (en) Priority Ordered Multi-Medium Solid-State Storage System and Methods for Use
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
US7080207B2 (en) Data storage apparatus, system and method including a cache descriptor having a field defining data in a cache block
CN105897859B (zh) 一种存储系统
US20150339058A1 (en) Storage system and control method
US20160350003A1 (en) Memory system
US9916256B1 (en) DDR storage adapter
US8078798B2 (en) Managing first level storage in a multi-host environment
US9977616B2 (en) Storage device and storage control method
US7177980B2 (en) Cache storage system and method
JP2019028954A (ja) ストレージ制御装置、プログラム、及び重複排除方法
US7743209B2 (en) Storage system for virtualizing control memory
US20150227323A1 (en) Use of flash cache to improve tiered migration performance
US20260023689A1 (en) Systems, methods, and apparatus for accessing data in versions of memory pages
JPWO2015141219A1 (ja) ストレージシステム、制御装置、データアクセス方法およびプログラム
KR20160103811A (ko) 가상 블록 장치 제공 시스템

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20150225

PG1501 Laying open of application
PC1203 Withdrawal of no request for examination