KR101579941B1 - 가상머신 i/o 관리 방법 및 장치 - Google Patents

가상머신 i/o 관리 방법 및 장치 Download PDF

Info

Publication number
KR101579941B1
KR101579941B1 KR1020140117165A KR20140117165A KR101579941B1 KR 101579941 B1 KR101579941 B1 KR 101579941B1 KR 1020140117165 A KR1020140117165 A KR 1020140117165A KR 20140117165 A KR20140117165 A KR 20140117165A KR 101579941 B1 KR101579941 B1 KR 101579941B1
Authority
KR
South Korea
Prior art keywords
virtual machine
channel
ssd
storage
file
Prior art date
Application number
KR1020140117165A
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 KR1020140117165A priority Critical patent/KR101579941B1/ko
Application granted granted Critical
Publication of KR101579941B1 publication Critical patent/KR101579941B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

가상머신 I/O 관리 방법 및 장치가 개시된다. 일 예에 따라, 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서, 상기 물리머신의 스토리지에 대한 복수의 가상머신의 I/O를 관리하는 방법은, 상기 복수의 가상머신 각각에 대응하여 상기 스토리지에 저장되는 파일에 대하여, 상기 스토리지에 포함된 복수의 스토리지 영역 중 하나를 할당하고, 상기 파일 각각에 대응하는 가상머신 식별코드, 및 상기 가상머신 식별코드에 대응하는 스토리지 영역을 지시하는 영역코드를 포함한 할당 정보를 저장하는 단계; 특정 가상머신과 관련된 I/O 커맨드(input/output command)를 수신하면, 상기 특정 가상머신에 대해 할당된 스토리지 영역이 존재하는지를 판단하는 단계; 및 존재한다고 판단되면, 할당된 스토리지 영역에 대해서 상기 I/O 커맨드가 실행되도록 하는 단계를 포함한다.

Description

가상머신 I/O 관리 방법 및 장치 {METHOD AND APPARATUS FOR ISOLATING INPUT/OUTPUT OF VIRTUAL MACHINES}
본 발명은 일반적으로 컴퓨터 시스템에서 가상머신 입출력(Input/Out, I/O)을 관리하는 기술에 관한 것이다. 보다 상세하게는, 하나의 물리머신 상에서 복수의 가상머신이 운용되는 경우, 각 가상머신에 대해 특정 스토리지 영역을 미리 할당하고, 이 할당 정보에 기초하여 가상머신 I/O가 실행되도록 함으로써, 스토리지 공간의 효율적인 이용이 가능하고 더 나아가 혼잡한 상황에서도 신속하고 정확한 I/O 할당이 가능하게 하는 가상머신 I/O 관리 기술에 관한 것이다.
일반적으로 데이터센터(datacenter) 환경에서는 다수의 가상머신(virtual machine, VM)이 하나의 물리 머신 상에서 실행된다. 가상머신의 생성, 삭제, 시작 및 재시작 등의 관리는 통상적으로 가상머신 매니저에 의하여 이루어진다. 가상머신 매니저는 독립적인 애플리케이션의 형태로서 구현되거나, 운영 체제의 일부로서 구현될 수도 있다. 특히 다수의 VM 간에는 고립성(isolation)이 제공된다. 고립성은, 여러 VM 중에서 하나의 VM에 문제가 발생된 경우에도, 이러한 문제가 다른 VM에는 영향을 주지 않도록 함으로써 높은 안정성을 제공한다. 하지만 고립성이라는 특징 때문에, 각각의 VM에 대해 효율적으로 I/O들이 분배되도록 하는 QoS(Quality of service)가 요구된다.
QoS가 요구되는 자원으로는 CPU, 네트워크, 및 스토리지 자원 등이 있으나, 이 중에서 스토리지 자원에 대한 해결책이 부족하다. 스토리지 자원의 효율적 분배를 위해, 기존에 VM의 I/O를 고립화하기 위한 스케쥴러 기법, 또는 가상머신 관리자에 의한 디스크 I/O의 양을 제한하는 기법 등이 알려져 있다. 하지만 이러한 종래 기법들은 기본적으로 시간 할당 방식인데, 이는 각 VM이 일정시간마다 I/O를 할 수 있게 하는 것이다. 이 때문에, 스토리지 공간에 대한 효율적 이용에 한계가 있으며, 다수의 I/O가 동시에 또는 비교적 짧은 시간 동안에 수행되어야 하는 혼잡한 상황일 경우에는 각 VM의 I/O의 고립성을 유지하면서 신속 정확하게 할당하는 것이 용이하지 않다는 문제가 있었다.
본 발명은 스토리지 공간의 효율적인 이용이 가능하며, 정확하고 신속한 I/O 할당이 가능하도록 하도록 하는 가상머신 I/O 관리 방법 및 장치를 제공하는 것을 목적으로 한다.
상기 목적들은 본 발명에 따라 제공되는 가상머신 I/O 관리 방법 및 장치에 의하여 제공된다.
본 발명의 일 양상에 따라 제공되는 가상머신 I/O 관리 방법은, 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서, 상기 물리머신의 스토리지에 대한 복수의 가상머신의 I/O를 관리하는 방법으로서, 상기 복수의 가상머신 각각에 대응하여 상기 스토리지에 저장되는 파일에 대하여, 상기 스토리지에 포함된 복수의 스토리지 영역 중 하나를 할당하고, 상기 파일 각각에 대응하는 가상머신 식별코드, 및 상기 가상머신 식별코드에 대응하는 스토리지 영역을 지시하는 영역코드를 포함한 할당 정보를 저장하는 단계; 특정 가상머신과 관련된 I/O 커맨드(input/output command)를 수신하면, 상기 특정 가상머신에 대해 할당된 스토리지 영역이 존재하는지를 판단하는 단계; 및 존재한다고 판단되면, 할당된 스토리지 영역에 대해서 상기 I/O 커맨드가 실행되도록 하는 단계를 포함한다.
일 실시예에 있어서, 상기 파일에 대응하여 복수의 서로 다른 데이터 엔터티가 존재하는 경우, 상기 할당 정보는: 상기 복수의 서로 다른 데이터 엔터티룰 나타내는 어드레스 코드, 상기 어드레스 코드의 우선 순위를 나타내는 우선순위 코드를 더 포함할 수 있다.
다른 실시예에 있어서, 상기 할당 정보는: 상기 스토리지의 스토리지 영역 정보에 기초하여, 상기 물리머신의 커널 상의 파일 시스템에서 제공하는 상기 파일과 관련된 정보의 변화에 따라 생성되고 갱신될 수 있다.
본 발명의 다른 양상에 따라 제공되는 가상머신 I/O 관리 방법은, 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서, 상기 물리머신의 스토리지인 멀티채널 방식의 솔리드 스테이트 드라이브(SSD, solid state drive)에 대한 복수의 가상머신의 I/O를 관리하는 방법으로서, 상기 복수의 가상머신 각각에 대응하여 상기 SSD에 저장되는 파일에 대하여, 상기 SSD에 포함된 복수의 채널 중 하나를 할당하고, 상기 파일 각각에 대응하는 가상머신 식별코드, 및 상기 가상머신 식별코드에 대응하는 채널을 나타내는 채널코드를 포함한 할당 정보를 저장하는 단계; 특정 가상머신과 관련된 I/O 커맨드(input/output command)를 수신하면, 상기 특정 가상머신에 대해 할당된 채널이 존재하는지를 판단하는 단계; 및 존재한다고 판단되면, 할당된 채널에 대해서 상기 I/O 커맨드가 실행되도록 하는 단계를 포함한다.
일 실시예에 있어서, 상기 할당 정보는, 상기 SSD의 플래시 변환 계층(FTL, flash translation layer)에서 관리하는 어드레스 매핑 테이블을 확장한 매핑 테이블의 형태로 생성되고 갱신될 수 있다.
다른 실시예에 있어서, 상기 할당 정보는, 상기 물리머신의 커널의 파일 시스템 및 상기 SSD와 연결되는 디바이스 드라이버 사이에서 동작하는 매핑 모듈에서 관리하는 매핑 테이블의 형태로 생성되고 갱신될 수 있다.
또 다른 실시예에 있어서, 상기 물리머신의 스토리지는 복수의 멀티채널 SSD를 포함하여 구성된 경우, 상기 매핑 테이블에는: 상기 파일에 대응하는 상기 가상머신을 지시하는 가상머신 식별코드, 상기 가상머신 식별코드에 대응하는 상기 복수의 SSD 중 하나를 지시하는 SSD 식별코드, 상기 SSD 식별코드에 대응하는 상기 SSD 식별코드로 지시된 SSD 내의 채널을 나타내는 채널코드가 포함될 수 있다.
또 다른 실시예에 있어서, 상기 파일에 대응하여 복수의 서로 다른 데이터 엔터티가 존재하는 경우, 상기 할당 정보는: 상기 복수의 서로 다른 데이터 엔터티룰 나타내는 어드레스 코드, 상기 어드레스 코드의 우선 순위를 나타내는 우선순위 코드를 더 포함할 수 있다.
본 발명의 또 다른 양상에 따라 제공되는 가상머신 I/O 관리 기능을 포함하는 솔리드 스테이트 드라이브는, 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서, 상기 물리머신의 스토리지로서 사용되는, 플래시 변환 계층(FTL)을 포함하는 SSD 컨트롤러 및 상기 SSD 컨트롤러에 의해 멀티 채널 방식으로 인터리빙 제어되는 복수의 플래시 메모리를 포함하는, 멀티채널 방식의 솔리드 스테이트 드라이브(SSD, solid state drive)로서, 상기 FTL은 상기 복수의 가상머신 각각에 대응하여 상기 SSD에 저장되는 파일에 대하여, 상기 SSD에 포함된 복수의 채널 중 하나를 할당하고, 상기 파일 각각에 대응하는 가상머신 식별코드, 및 상기 가상머신 식별코드에 대응하는 채널을 나타내는 채널코드를 포함한 할당 정보를 저장하고; 상기 SSD 컨트롤러는, 특정 가상머신과 관련된 I/O 커맨드(input/output command)를 수신하면, 상기 할당 정보를 조회하여 상기 특정 가상머신에 대해 할당된 채널이 존재하는지를 판단하고, 존재한다고 판단되면, 할당된 채널에 대해서 상기 I/O 커맨드가 실행되도록 제어하는, 가상머신 I/O 관리 기능을 포함할 수 있다.
그리고, 본 발명의 또 다른 양상에 따라 가상머신 I/O 관리 기능을 구현한 컴퓨터-실행가능 소프트웨어를 저장한 컴퓨터-판독가능 매체가 제공되며, 컴퓨터-실행가능 소프트웨어는 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서, 상기 물리머신의 스토리지인 멀티채널 방식의 솔리드 스테이트 드라이브(SSD, solid state drive)에 대한 복수의 가상머신의 I/O를 관리하기 위한 컴퓨터-실행가능 인스트럭션을 포함하며, 상기 컴퓨터-실행가능 인스트럭션은 상기 물리머신의 프로세서에 의해 실행되면: 상기 복수의 가상머신 각각에 대응하여 상기 SSD에 저장되는 파일에 대하여, 상기 SSD에 포함된 복수의 채널 중 하나를 할당하고, 상기 파일 각각에 대응하는 가상머신 식별코드, 및 상기 가상머신 식별코드에 대응하는 채널을 나타내는 채널코드를 포함한 할당 정보를 저장하고; 특정 가상머신과 관련된 I/O 커맨드(input/output command)를 수신하면, 상기 특정 가상머신에 대해 할당된 채널이 존재하는지를 판단하며; 및 존재한다고 판단되며, 할당된 채널에 대해서 상기 I/O 커맨드가 실행되도록 할 수 있다.
상술한 바와 같은 본 발명에 따르면, 가상머신이 생성될 때 대응하는 가상 디스크, 즉 가상머신에 대응하는 파일이 스토리지의 어느 영역에 저장될 것인지를 미리 할당하고, 이러한 할당 정보를 매핑 테이블의 형태로 관리한다. 그리고, 이후 가상머신과 관련된 스토리지 I/O를 매핑 테이블에 기초하여 처리한다. 이에 따라, 가상머신의 I/O 고립성을 제공하면서도 스토리지의 공간을 효율적으로 이용할 수 있고, 혼잡한 상황에서도 신속한 I/O 관리가 가능하게 한다.
더 나아가, 스토리지가 다중 채널 방식의 솔리드 스테이트 드라이브(SSD)의 경우. 가상머신에 대응하는 파일이 SSD의 어느 채널에 저장될 것인지를 미리 할당한 매핑 테이블을 이용하는 것이 가능하다. 이에 따라, SSD 고유의 빠른 속도 특징을 효율적으로 이용하는 가상머신 I/O 고립을 제공할 수 있다.
또 더 나아가, SSD의 플래시 변환 계층에서 가상머신 별로 SSD의 채널을 미리 할당하여 가상머신의 I/O를 관리하는 기능을 포함하는 SSD를 제공할 수 있다.
또한 더 나아가, 가상머신 별로 스토리지의 특정 영역 또는 SSD의 채널을 미리 할당하고, 이에 따라 가상머신의 I/O를 스토리지 장치로 발행함으로써 가상머신의 I/O가 신속하고 정확하게 제공될 수 있도록 구성된, 커널 내에 설치되는 소프트웨어, 프로시저, 모듈, 플러그인, 인스트럭션 등으로 구현될 수 있는 스토리지 영역 또는 SSD 채널 매핑 모듈을 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 가상머신 I/O 관리 장치의 구성을 예시하는 블록도.
도 2는 본 발명의 일 실시예에 따른 가상머신 I/O 관리 방법에서, 매핑 테이블의 생성 및 갱신 과정을 예시하는 흐름도.
도 3은 본 발명의 일 실시예에 따른 가상머신 I/O 관리 방법에서, 매핑 테이블을 이용하여 I/O 커맨드를 수행하는 과정을 예시하는 흐름도.
도 4는 본 발명의 실시예들이 적용될 수 있는 SSD를 스토리지로서 채용한 컴퓨터 시스템의 구성을 예시하는 블록도.
도 5는 본 발명의 실시예들이 적용될 수 있는 멀티채널 멀티웨이 방식의 SSD의 일 예를 설명하기 위한 블록도.
도 6은 본 발명의 다른 실시예에 따라, 8채널 방식의 SSD를 채용한 컴퓨터 시스템에서 가상머신 I/O 관리 장치를 예시하는 블록도.
도 7은 본 발명의 또 다른 실시예에 따라, 4채널 방식의 SSD에서 플래시 변환 계층에서 매핑 테이블을 관리하는 가상머신 I/O 관리 장치를 예시하는 블록도.
도 8은 또 다른 실시예에 따라, 커널 내의 채널 매핑 모듈에 의해 매핑 테이블이 관리되는 가상머신 I/O 관리 장치를 예시하는 블록도.
도 9는 또 다른 실시예에 따라, 복수의 SSD를 채용한 컴퓨터 시스템에서, 커널 내의 채널 매핑 모듈에 의해 매핑 테이블이 관리되는 가상머신 I/O 관리 장치를 예시하는 블록도.
일반적으로 하나의 물리머신 상에 복수의 가상머신이 운용되는 예는 데이터 센터(datacenter) 환경에서 잘 알려져 있다. 데이터 센터는 인터넷 서비스 및 클라우드 서비스의 증가로 인해 그 필요성이 점점 증가되고 있다. 데이터 센터는 다양한 사용자 요구를 만족시키는 다양한 서비스를 제공하기 위해 가상화 기술을 이용한다.
가상화 기술에 있어서, 하나의 물리머신 상에 다수의 가상머신이 운용될 수 있다. 이들 다수의 가상머신 간에는 고립성이 제공되어야 한다. 특히 가상머신 I/O 고립성에 있어서, 동일 스토리지 장치에 대해 다수의 가상머신으로부터 동시에 다수의 I/O가 발행되는 경우, 이들 다수의 I/O가 스토리지 영역을 효율적으로 사용하도록 하면서도, 서로 충돌되지 않도록 관리될 수 있을 뿐만 아니라, 실행시 대기시간(레이턴시)을 감소시킬 수 있도록 하기 위한 QoS가 요구된다.
이러한 요구에 부응하기 위해, 본 발명에 따라 가상머신 I/O 관리 기술이 제공된다. 본 발명은 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서 가상머신의 스토리지에 대한 입출력(I/O, input/output)의 고립성을 제공하는 기술이다. 특히 복수의 가상머신들의 I/O들 관리하기 위해 미리 스토리지의 특정 영역을 각각의 가상머신에게 할당한다. 할당 정보는 메타데이터 또는 매핑 테이블의 형태로 생성 및 갱신될 수 있다. 이후 가상머신으로부터 유래하는 I/O 커맨드가 스토리지에서 실행될 때, 할당 정보에 의해 미리 결정되어 있는 스토리지 영역에 대해서 I/O 커맨드가 실행된다. 이에 따라, 복수의 가상머신으로부터 발행되는 복수의 I/O 커맨드들을 동시에 또는 짧은 시간 간격 내에 실행시켜야 하는 상황에서도, 이들 I/O 커맨드들이 서로 충돌하지 않도록 별도로 스케쥴링할 필요가 없다는 장점이 제공된다.
여기서 '물리머신'이란 컴퓨터 시스템을 의미하며, 하나의 물리머신이란 하나의 운영체제에 의해 운영되는 컴퓨터 시스템을 의미한다. 이 경우 운영체제에 의해 운용되는 물리머신 또는 이 운영체제를 호스트 시스템이라고도 지칭할 수 있다. 하나의 물리머신에는 하나 이상의 물리적인 CPU 자원, 하나 이상의 물리적인 네트워크 자원, 하나 이상의 물리적인 스토리지 자원들이 포함될 수 있다. 여기서 컴퓨터 시스템은 개인용 컴퓨터 장치, 서버용 컴퓨터 장치, 데이터 센터용 컴퓨터 장치 등을 포함하며, 다수의 컴퓨터 장치가 네트워크를 통해 연결되어 협력하여 동작할 수 있는 분산 환경도 포함한다.
일반적으로, 하나의 가상머신이 생성되는 경우, 이 가상머신에 대응하는 저장공간 즉 가상 디스크가 할당된다. 가상머신의 저장공간인 가상 디스크는 물리머신의 운영체제 또는 커널에 의해 물리머신의 스토리지에 저장되는 일종의 파일로서 취급된다. 가상머신에 대응하는 파일은 생성과 동시에 크기가 결정되고, 가상머신이 삭제되면 이에 대응하는 파일도 삭제된다. 하나의 가상머신/파일에 대해 복수의 데이터 엔터티가 대응될 수 있다. 본 발명에 따라, 하나의 가상머신이 생성되거나 삭제될 때 대응하는 파일의 크기뿐만 아니라, 이 파일/데이터 엔터티가 스토리지의 어느 영역에 저장될 것인지도 결정된다.
본 발명에 따라, 스토리지는 복수의 서로 다른 독립적인 영역으로 분할되어 관리된다. 스토리지는 복수의 영역으로 분할 관리되는 저장공간을 가지는 저장장치라면 제한 없이 이용될 수 있다. 예컨대, 스토리지에는 하드 디스크 드라이브(HDD, hard disk drive), 솔리드 스테이트 드라이브(SSD, solid state drive), ROM, RAM, DVD, CD, 플래시 메모리 등이 포함될 수 있다.
일 예에서, 스토리지의 영역 정보는 스토리지의 타입에 따라 미리 저장된 정보로부터 알려질 수 있다. 스토리지의 타입 정보는 HDD 또는 SSD와 같은 스토리지 기술 타입, 제조사 정보, 브랜드 정보, 모델 정보 등이 포함될 수 있다. 스토리지 내부의 저장 공간의 토폴로지 정보는 이러한 스토리지 타입 정보에 대응하여 알려질 수 있다. 일단 스토리지의 저장공간에 대한 토폴로지가 알려지면, 미리 결정된 규칙에 따라 스토리지의 총 저장공간을 복수의 영역으로 분할한 영역 정보가 생성될 수 있다.
예를 들어, 원판 형태의 저장공간에 대해 섹터 단위로 관리되는 HDD의 경우, HDD의 전체 저장공간이 임의의 수의 영역으로 분할될 수 있다. 각각의 영역은 동일한 수의 복수의 섹터를 포함할 수 있다. 예컨대 총 저장공간의 크기가 100GB인 HDD의 경우, 각간 10GB의 크기를 가지는 영역 10개로 분할되어 관리될 수 있다. 물론 이 예는 이해를 돕기 위한 예시에 불과하다. 스토리지 영역의 크기 및 개수는, 스토리지의 총 저장공간의 크기에 따라 및/또는 동시에 할당되어야 할 것으로 예상되는 VM의 수에 따라 다양하게 결정될 수 있음을 해당 기술분야의 지식을 가진 자라면 쉽게 이해할 것이다. 서로 다른 영역들은 서로 중복되는 저장공간을 가지지 않으며, 서로 다른 물리 어드레스를 가진다.
다른 예를 들어, 플래시 메모리 칩을 복수 개 구비하는 형태의 SSD의 경우, 멀티채널/멀티웨이 방식의 SSD에서 각각의 채널 또는 웨이가 하나의 스토리지 영역으로서 관리될 수 있다. SSD의 처리 속도를 향상시키기 위하여, 복수의 플래시 메모리 영역을 멀티채널 멀티웨이 방식이 널리 사용되고 있다. 본 발명에 따르면, 기존 SSD의 멀티채널 구성을 그대로 이용할 수 있다는 장점이 제공된다.
예컨대 8채널 8웨이 방식의 SSD의 경우, 8개의 채널 각각에 8개의 웨이(way)가 연결된다. 각각의 웨이는 하나 이상의 플레인(plane)이 포함될 수 있고, 각각의 플레인은 복수의 블록(block)이 포함되며, 각각의 블록은 복수의 페이지(page)가 포함된다. 각각의 페이지는 복수의 셀(cell)을 포함한다. 각각의 채널 및 각각의 웨이는 서로 다른 저장공간을 포함한다. 서로 다른 채널 및 서로 다른 웨이, 서로 다른 플레인, 서로 다른 블록, 서로 다른 페이지 등은 서로 중복되는 저장공간을 가지지 않으며, 서로 다른 물리 어드레스를 가진다.
이 경우, 본 발명에 따른 일 예에서 각 스토리지 영역은 멀티채널 방식의 SSD의 각 "채널(channel)"에 대응할 수 있다. 스토리지 영역은, 서로 중복되지 않은 별개의 물리적인 저장 공간을 포함하도록, 스토리지의 총 저장공간의 크기에 따라 및/또는 동시에 할당되어야 할 것으로 예상되는 VM의 수에 따라 다양하게 결정될 수 있다. 그러므로 본 발명에서 SSD의 "채널"이 스토리지 영역에 대응하는 실시예가 가능하며, 더 나아가 SSD의 "웨이(way)", "플레인(plain)", "블록(block)" 또는 임의의 "영역(area)"이 스토리지 영역에 대응하는 실시예들도 가능하다. 본 문서에서 비록 SSD의 "채널"이 스토리지 영역에 대응하는 실시예만이 설명되고는 있지만, 해당 기술 분야의 통상의 지식을 가진 자라면, "채널"은 "웨이", "플레인", "블록" 또는 임의의 "영역"을 의미할 수 있음이 이해될 것이다.
본 발명에 따라, 각 파일에 대응하여 복수의 서로 다른 데이터 엔터티가 존재하는 경우, 각각의 데이터 엔터티에 대해 특정 스토리지 영역이 할당될 수 있다. 이러한 할당 정보로서, 각각의 파일과 가상머신 식별코드에 대해 복수의 서로 다른 데이터 엔터티룰 나타내는 어드레스 코드, 각 어드레스 코드의 우선 순위 코드, 및 영역코드가 대응될 수 있다. 가상머신 식별코드는 특정 파일이 특정 가상머신에 관련된 것임을 나타낸다. 어드레스 코드는 데이터 엔터티를 고유하게 구별하는 논리 비트 어드레스를 나타내는 값일 수 있다. 우선 순위 코드는 특정 데이터 엔터티가 먼저 또는 나중에 처리해야 되는 순서를 나타낸다. 영역코드는 특정 파일 또는 특정 가상머신 또는 특정 데이터 엔터티가 특정 스토리지 영역에 저장될 것으로 할당되었음을 나타낸다.
이 할당정보는 매핑 테이블의 형태로 관리될 수 있다. 매핑 테이블은 각각의 파일에 대응하는 레코드를 포함하고, 각각의 레코드는 가상머신 식별코드를 엔트리로서 가지는 필드, 데이터 엔트리를 나타내는 코드를 엔트리로서 가지는 필드, 우선 순위 코드를 엔트리로서 가지는 필드, 및 영역코드를 엔트리로서 가지는 필드 등을 포함할 수 있다. 매핑 테이블은 가상머신이 생성 또는 삭제됨에 따라, 이에 대응하는 파일에 관련하여 새로운 레코드가 추가되거나 기존 레코드가 삭제되는 방식으로 갱신될 수 있다.
예를 들어, 새로운 가상머신이 생성되고, 이에 대응하여 2개의 데이터 엔트리를 가지는 새로운 파일이 생성되었다고 하자. 이 경우, 매핑 테이블에는 2개의 데이터 엔트리에 대한 2개의 레코드가 추가되고, 새로 생성된 2개의 데이터 엔트리 각각에 대해 스토리지 영역이 할당될 수 있다. 예컨대, 스토리지 영역이 8개(0-7)까지 존재하며, 이 중 4개(0, 2, 3, 4)가 이미 할당되어 있다면, 새로 생성된 가상머신에 대하여 할당되어 있지 않은 4개(1, 5, 6, 7)의 스토리지 영역 중에서 하나가 할당될 수 있다.
스토리지 영역을 새로운 파일에 대해 할당할 때, 보다 효율적인 저장공간의 이용을 가능하게 하기 위해, 할당 이력 정보가 이용될 수 있다. 위의 예에서, 아직 할당되어 있지 않은 4개(1, 5, 6, 7) 중에서 하나를 선택할 때, 만약 스토리지 영역 1은 이미 한번 할당되었다가 할당해제된 이력이 있고, 나머지는 할당되었던 적이 없었다면, 아직 한번도 할당되었던 적이 없었던 스토리지 영역들(5,6,7) 중에서 하나가 선택되어 할당될 수 있다. 이와 같은 할당 이력 정보는 SSD 저장공간의 마모도 관리와 연계될 수 있다.
다른 예를 들어, 기존 가상머신이 삭제되고, 이에 대응하여 2개의 데이터 엔트리를 가진 파일이 삭제된다고 하자. 이 경우, 매핑 테이블에는 2개의 데이터 엔트리와 관련된 2개의 레코드가 제거된다. 예컨대, 스토리지 영역이 8개(0-7)까지 존재하며, 이 중 6개(0, 2, 3, 4, 5, 6)가 할당되어 있었고, 삭제된 2개의 데이터 엔트리에 대해 할당되었던 스토리지 영역이 1개(예컨대, 스토리지 영역 2)라면, 이 스토리지 영역 2는 할당 해제된다.
이와 같이 본 발명에 따라 가상머신에 대해 미리 스토리지의 특정 영역이 할당되어 있으므로, 복수의 가상머신과 관련된 다수의 I/O의 실행시 서로 충돌할 염려없이 즉각적으로 할당된 영역에 대해 I/O를 실행시킬 수 있다는 장점이 제공된다. 그러므로, 별도의 I/O 스케쥴링 없이, 단순히 할당 정보를 포함하는 매칭 테이블의 엔트리 관리만으로 정확한 I/O 할당이 용이하게 이루어질 수 있다.
본 발명에 따라 할당 정보 즉 매핑 테이블은, SSD의 플래시 변환 계층(FTL, flash translation layer)에서 관리하는 어드레스 매핑 테이블을 확장한 매핑 테이블의 형태로 생성되고 갱신 즉 관리될 수 있다. 통상적으로 FTL의 어드레스 매핑 테이블은 커널의 파일 시스템에서 발행하는 I/O 커맨드에 포함된 논리 비트 어드레스(LBA, logical bit address)를 SSD의 플래시 메모리의 특정 지점을 나타내는 물리 비트 어드레스(PBA, physical bit address)로 변환하기 위하여 SSD 내의 FTL에서 관리하는 메타데이터이다. 본 발명에 따라, FTL의 어드레스 매핑 테이블은 각 파일의 데이터 엔트리에 대응하는 LBA에 대하여 가상머신 식별코드, 우선순위, 영역코드를 매핑시킨 할당정보를 추가한 확장된 매핑 테이블로서 변형될 수 있다. 이 경우, SSD는 운영체제 또는 커널 시스템으로부터 가상머신에 대응하는 파일정보, 가상머신 정보, 우선순위 정보를 수신하고, FTL 내에서 확장된 매핑 테이블을 생성 및 갱신할 수 있다.
한편, 본 발명에 따라, 할당 정보 즉 매핑 테이블은, 물리머신의 커널(즉, 호스트 운영체제)의 파일 시스템 및 스토리지(예컨대, SSD)와 연결되는 디바이스 드라이버 사이에서 동작하는 매핑 모듈에서 관리하는 매핑 테이블의 형태로 생성되고 갱신될 수 있다. 이 매핑 모듈은 본 발명에 따른 기능들을 수행하도록 하는 컴퓨터-실행가능 독립적인 소프트웨어, 플러그인, 프로세스, 스레드, 인스트럭션 등으로 구현될 수 있고, 물리머신의 커널 내에서 동작하도록 설치될 수 있다. 커널 내의 매핑 모듈에 의해 할당 정보가 관리되는 경우, 스토리지가 복수의 독립적인 저장장치를 포함하는 경우에 통합적으로 관리할 수 있다는 장점이 더 제공될 수 있다.
이제 아래에서 본 발명의 다양한 실시예를 도면들을 참조하여 예시로서 기술한다.
도 1은 본 발명의 일 실시예에 따른 가상머신 I/O 관리 장치의 구성을 예시하는 블록도이다.
도 1을 참조하면, 가상머신 I/O 관리 장치(10)는 가상머신 매니저(11), 파일 시스템(13), 영역 매핑 모듈(15), 및 스토리지(17) 등의 컴포넌트를 포함할 수 있다.
가상머신 매니저(11)는 복수의 가상머신(111, 112, 113)을 관리하는 컴포넌트이다. 가상머신 매니저(11)는 호스트 운영체제 상에서 가상머신을 생성하고, 삭제하는 등의 관리를 함으로써, 다수의 가상머신이 운영될 수 있게 한다. 가상머신 매니저(11)은 호스트 운영체제 내에 내장된 형태 또는 독립된 솔루션으로서 구현될 수 있다.
파일 시스템(13)은 호스트 운영체제의 커널 내에서 각 가상머신을 대응하는 각 파일로서 취급하고 처리하는 컴포넌트이다. 가상머신 매니저는 각 가상머신에서 발행되는 I/O 커맨드를 파일 시스템(13)으로 전달하며, 파일 시스템(13)은 가상머신의 I/O 커맨드를 대응하는 파일에 관한 I/O 커맨드로서 취급한다. 파일 시스템(13)은, 가상머신 매니저(11)에 의해 가상머신이 생성되면, 생성된 가상머신을 나타내는 가상머신 식별코드(VID)와 가상머신에 대응하는 파일을 나타내는 파일명(파일ID)를 대응시킬 수 있다.
영역 매핑 모듈(15)은 각각의 가상머신 식별코드(VID)에 스토리지의 영역들 중 하나를 나타내는 영역코드(영역ID)를 할당할 수 있다. 각 영역코드(영역ID)는 스토리지(17)에 포함되어 있는 영역들(영역0, 영역1, … 영역7) 중 하나이다. 영역 매핑 모듈(15)은 이 할당 정보를 매핑 테이블과 같은 메타데이터로서 생성하고 관리할 수 있다.
이후, 영역 매핑 모듈(15)은 특정 가상머신(예컨대, VM 0, VID = 0)으로부터 I/O 커맨드(input/output command)를 파일 시스템(13)을 경유하여 수신할 수 있다. I/O 커맨드는 입출력되는 데이터의 내용, 데이터의 크기, 및 입출력될 스토리지 상의 논리 비트 어드레스(LBA)를 포함한다. 그러면 영역 매핑 모듈(15)은 미리 저장되어 있는 할당 정보 또는 매핑 테이블을 조회하여, 이 가상머신(VID = 0)에 대해 할당된 스토리지 영역이 존재하는지를 판단한다. 예를 들어, 할당된 스토리지 영역은 "영역 0"(즉, 영역ID = 0)로서 존재한다고 판단된다고 하자. 그러면, 영역 매핑 모듈(15)은 I/O 커맨드에 영역ID를 포함시켜 스토리지(17)로 전달할 수 있다. 영역ID를 포함한 I/O 커맨드를 수신한 스토리지(17)는, 예컨대 스토리지가 SSD인 경우, I/O 커맨드에 포함된 영역ID의 PBA로 변환하고, 변환된 PBA에 대해 I/O 커맨드를 실행하고, 그 결과를 영역 매핑 모듈(15)를 통해 또는 직접 파일 시스템(13)으로 반환할 수 있다.
도 2는 본 발명의 일 실시예에 따른 가상머신 I/O 관리 방법에서, 매핑 테이블의 생성 및 갱신 과정을 예시하는 흐름도이다.
도 2를 참조하면, 도 1의 영역 매핑 모듈(15)에 의해 생성되고 관리되는 할당 정보 또는 매핑 테이블의 생성과 갱신 프로세스(200)가 예시된다. 먼저 초기에 영역 매핑 모듈(15)은 파일 시스템(13)으로부터 가상머신 정보를 수신한다(201). 가상머신 정보에는 가상머신 식별코드 VID와 이것에 대응하는 파일 식별코드 파일ID를 포함할 수 있다. 그리고, 이와 동시에 또는 그 이전/이후에 스토리지의 영역정보를 수신한다(203). 도시된 예에서, 스토리지의 영역정보는 스토리지(17)로부터 수신한다. 다른 예에서, 스토리지의 영역정보는 스토리지(17)에서 수신되는 스토리지 타입 정보에 기초하여 영역 매핑 모듈(15) 내에 저장되거나 외부에서 제공될 수 있는 스토리지 토폴로지 정보로부터 획득될 수도 있다. 또 다른 예에서, 스토리지 영역정보는 사용자에 의해 입력된 정보로부터 수신될 수 있다.
그런 다음 205에서, 영역 매핑 모듈(15)은 각 가상머신에 대하여 스토리지 영역을 할당하고, 그 결과 할당 정보는 매핑 테이블로서 생성된다. 예컨대, 파일ID 및/또는 VID에 대해 영역코드를 대응시킬 수 있다. 결과적으로, 각각의 가상머신에 스토리지의 특정 영역이 대응되어 있는 할당 정보, 즉 매핑 테이블이 생성된다.
이후 207에서, 만약 기존 VM이 삭제되거나 또는 새로운 VM이 생성되는 것과 같이 가상머신 정보에 변동이 발생하면, 이 수정된 가상머신 정보는 가상머신 매니저(11)로부터 파일 시스템(13)을 경유하여 영역 매핑 모듈(15)에서 수신된다. 수정된 가상머신 정보를 수신한 영역 매핑 모듈(15)은 새로운 가상머신(VM)이 생성된 경우라고 판단되면(209의 예), 새로운 가상머신에 대응하여 스토리지 영역을 할당하고, 이를 반영하여 매핑 테이블에 새로운 레코드를 추가함으로써, 매핑 테이블을 갱신할 수 있다(211). 만약 새로운 가상머신(VM)이 생성된 경우가 아니면(209의 아니오), 기존 VM이 삭제된 경우인지를 판단한다(213). 만약 기존 VM이 삭제된 경우라면(213의 예), 삭제된 VM에 대응하여 할당되었던 스토리지 영역을 할당해제하고, 이를 반영하여 매핑 테이블에서 해당하는 레코드를 삭제함으로써, 매핑 테이블을 갱신할 수 있다(215). 이 갱신과정(209~215)은 수정된 가상머신 정보가 수신(207)될 때마다 반복될 수 있다.
도 3은 본 발명의 일 실시예에 따른 가상머신 I/O 관리 방법에서, 매핑 테이블을 이용하여 I/O 커맨드를 수행하는 과정을 예시하는 흐름도이다.
도 3을 참조하면, 도 1의 영역 매핑 모듈(15)에 의해 생성되고 관리되는 할당 정보 또는 매핑 테이블을 이용하여, 가상머신 I/O 커맨드를 수행하는 프로세스(300)가 예시된다. 영역 매핑 모듈(15)은 초기화 단계에서 가상머신 정보와 스토리지 영역 정보를 수신하고(301), 각 가상머신에 스토리지 영역을 할당하고, 그 할당 정보를 매핑 테이블로 생성한다(303). 이후 특정 가상머신(VM)으로부터 I/O 커맨드를 수신할 수 있다(305). 일반적으로 I/O 커맨드는 특정 크기의 데이터를 스토리지에 쓰거나, 스토리지로부터 읽거나, 또는 삭제할 것을 지시하는 커맨드일 수 있다. 파일 시스템(13)은 I/O 커맨드를 영역 매핑 모듈(15)로 전송할 수 있다. 파일 시스템(13)에 의해 I/O 커맨드가 어느 가상머신에 의한 것인지가 가상머신 식별코드에 의해 표시된다. 그러므로, 영역 매핑 모듈(15)은 수신된 I/O 커맨드의 호스트 시스템의 데이터인지 가상머신의 데이터인지, 나아가 어느 가상머신의 데이터인지를 알 수 있다.
가상머신의 I/O 커맨드일 경우, 영역 매핑 모듈(15)은 매핑 테이블을 조회함으로써 이 가상머신에게 할당된 스토리지 영역이 있는지를 판단할 수 있다(307). 할당된 스토리지 영역이 있다면(307의 예), 영역 매핑 모듈(15)은 I/O 커맨드에 할당된 스토리지 영역의 영역코드를 포함시켜 스토리지(17)로 발행할 수 있다(309). 그러면 스토리지(17)에서는 I/O 커맨드에 포함되어 있는 영역코드에 의해 지시되는 스토리지 영역에 대하여 I/O 커맨드를 실행시킬 수 있다(311). 만약 할당된 스토리지 영역이 없다면(307의 아니오), 영역 매핑 모귤(15)은 I/O 커맨드에 영역코드를 포함시키지 않고 그대로 스토리지(17)로 발행할 수 있다(313). 그러면 스토리지(17)에서는 스토리지 영역과는 상관없이 I/O 커맨드를 실행시킬 수 있다(315).
도 4는 본 발명의 실시예들이 적용될 수 있는 SSD를 스토리지로서 채용한 컴퓨터 시스템의 구성을 예시하는 블록도이다.
도 4를 참조하면, 물리머신의 커널 부분과 스토리지 부분이 개략적으로 도시된다. 커널 부분은 호스트 운영체제 내에서 각 가상머신을 파일의 형태로 취급하는 파일 시스템(41)과 스토리지와 호스트 운영체제 사이를 인터페이싱하는 디바이스 드라이버(43)를 포함한다. 스토리지 부분은 SSD를 나타내며, 플래시 변환 계층(FTL, flash translation layer)(45)과 실제 데이터가 저장되는 공간을 제공하는 플래시 메모리(47)를 포함한다. FTL(45)은 파일 시스템(41)에서 발행되는 I/O 커맨드에 포함된 논리 비트 어드레스(LBA)를 플래시 메모리(47)의 실제 물리적인 위치를 나타내는 물리 비트 어드레스(PBA)로 변환시키는 어드레스 변환부(451)를 포함한다. 이외에도, FTL(45)은 가비지 콜렉션을 담당하는 유닛(453), 웨어-레벨링을 담당하는 유닛(455), 플래시 메모리(37) 상에 존재하는 배드 블록(bad block)에 관한 정보를 관리하는 배드 블록 관리부(457), 및 에러 정정 코드(ECC)(459) 등을 포함할 수 있다.
도시된 바와 같은 SSD는 기계적인 구조를 가지는 HDD와는 달리 반도체를 이용하여 정보를 입/출력하는 저장장치이다. HDD는 자기 디스크를 기계적으로 회전시켜 데이터를 기록하기 때문에 속도를 높이는데 한계가 있다. SSD는 예컨대 낸드 플래시 메모리를 사용하여 데이터를 입출력하며, 아래에서 도 5를 참조하여 설명하는 바와 같은 멀티채널 멀티웨이 방식을 채용함으로써 대용량이면서도 데이터 입출력 속도가 크게 향상될 수 있다는 장점을 제공한다.
도 5는 본 발명의 실시예들이 적용될 수 있는 멀티채널 멀티웨이 방식의 SSD의 일 예를 설명하기 위한 블록도이다.
도 5를 참조하면, 4채널 2웨이 방식의 SSD의 구조가 예시된다. 도시된 SSD(50)에는 호스트와의 연결을 위한 호스트 연결부(51), 호스트와 논리적인 연결을 위한 호스트 인터페이스 로직(52), FLT 등의 컨트롤러 기능을 수행하는 SSD 컨트롤러(53), 버퍼 메모리인 DRAM(54), 각각 채널을 독립적으로 제어하기 위한 4개의 채널 컨트롤러(55), 각각의 채널 컨트롤러(55)에 연결된 2개의 웨이를 가진 4개의 다이(57)가 포함된다.
호스트 연결부(51)는 HDD와 유사하게 호스트 시스템 즉 컴퓨터 본체에 연결되도록 하는 커넥터이며, 호스트 인터페이스 로직(52)은 호스트 시스템과의 데이터 통신을 위한 다양한 인터페이스 방식을 지원할 수 있다. 인터페이스 방식에는 병렬방식(PATA, Parallel ATA), 직렬방식(SATA, Serial ATA), PCIe, mSATA 등이 포함될 수 있다. SATA3의 경우 최대 전송속도는 600MB/sec인데, 이러한 높은 속도는 1개 이상의 플래시 메모리 버스 채널을 병렬 어레이 제어 방식을 통해 동시에 제어하는 구조 즉 멀티채널 멀티웨이 방식을 채용하기 때문에 가능하다.
도시된 예에서, SSD 컨트롤러(53)는 4채널 2웨이 방식의 구조를 보여준다. 즉 4개의 플래시 메모리 칩(즉, 다이1-다이4)을 각각 하나의 버스 채널로 연결하고, 각각의 칩 내에 있는 저장 공간을 2개의 웨이로 분류하고 있다. 각각의 웨이는 하나 이상의 플레인을 포함할 수 있다. 각 플레인은 수백개의 블록을 포함할 수 있고, 각각의 블록은 수백~수천의 페이지를 포함할 수 있다. 각 페이지는 또한 다수의 셀을 포함한다. 셀은 데이터가 기록되는 기본 단위이며, 데이터 입출력의 기본 단위는 페이지이다.
도 4에 도시된 SSD의 예는 단지 예시이며, 다양한 SSD의 구조가 가능하다. 플래시 메모리 칩을 하나만 포함하는 소용량 SSD에서부터 플래시 메모리 칩을 8개 이상 포함하는 대용량 SSD까지 다양한 제품이 출시된 바 있다. SSD 컨트롤러(53)는 각 채널에 연결된 다수의 웨이, 블록, 페이지들에 대한 I/O 동작을 인터리빙(interleaving) 방식으로 처리함으로써 특히 쓰기 및 지우기 동작의 성능을 최적화한다. 채널이 많으면 많을수록 입출력 속도가 빠르게 될 수 있지만, 속도가 빠를수록 데이터의 안정성과 신뢰성에 문제가 발생될 수 있다. 그러므로 SSD는, ECC를 이용한 에러정정 기능을 채용하며, 배드 블록을 관리함으로써 데이터의 안정성을 도모한다. 더 나아가 SSD의 각 셀에 대한 데이터 입출력 횟수가 제한되어 있기 때문에, 수명 연장을 위한 웨어-레벨링 기능을 마련하고 있다.
이러한 SSD는 데이터 센터 환경에서 점차 HDD를 대체하고 있으며, 장래에는 SSD의 비중이 더 커질 가능성이 높다. 본 발명에 따른 가상머신 I/O 관리 기술에 의하면, 호스트 시스템 상에서 복수의 가상머신이 운용되는 경우에, 아래의 도 6 내지 도 9를 참조하여 설명하는 바와 같이, 각각의 가상머신의 I/O에 고립성을 확립하면서 SSD의 데이터 입출력 속도를 충분히 활용할 수 있도록 하는 장점이 제공될 수 있다.
도 6은 본 발명의 다른 실시예에 따라, 8채널 방식의 SSD를 채용한 컴퓨터 시스템에서 가상머신 I/O 관리 장치를 예시하는 블록도이다.
도 6을 참조하면, 가상머신 I/O 관리 장치(60)는 가상머신 매니저(61), 파일 시스템(63), 영역 매핑 모듈(65), 및 SSD(67) 등의 컴포넌트를 포함할 수 있다.
가상머신 매니저(61)는 복수의 가상머신(611, 612, 613, 614)을 관리하는 컴포넌트이다. 도면에는 비록 4개의 가상머신이 나타나 있으나, 이것만으로 제한되는 것은 아니며 더 많은 가상머신이 관리될 수 있음은 자명하다. 가상머신 매니저(61)는 호스트 운영체제 상에서 가상머신을 생성하고, 삭제하는 등의 관리를 함으로써, 다수의 가상머신이 운영될 수 있게 한다. 가상머신 매니저(61)은 호스트 운영체제 내에 내장된 형태 또는 독립된 솔루션으로서 구현될 수 있다.
파일 시스템(63)은 호스트 운영체제의 커널 내에서 각 가상머신을 대응하는 각 파일로서 취급하고 처리하는 컴포넌트이다. 가상머신 매니저는 각 가상머신에서 발행되는 I/O 커맨드를 파일 시스템(63)으로 전달하며, 파일 시스템(63)은 가상머신의 I/O 커맨드를 대응하는 파일에 관한 I/O 커맨드로서 취급한다. 파일 시스템(63)은, 가상머신 매니저(61)에 의해 가상머신이 생성되면, 생성된 가상머신을 나타내는 가상머신 식별코드(VID)와 가상머신에 대응하는 파일을 나타내는 파일명(파일ID)를 대응시킬 수 있다.
채널 매핑 모듈(15)은 각각의 가상머신 식별코드(VID)에 SSD의 채널들 중 하나를 나타내는 채널코드(채널ID)를 할당할 수 있다. 각 채널코드(채널ID)는 멀티 채널 SSD(67)에 포함되어 있는 채널들(채널0, 채널1, … 채널7) 중 하나이다. 채널 매핑 모듈(65)은 이 할당 정보를 매핑 테이블과 같은 메타데이터로서 생성하고 관리할 수 있다.
이후, 채널 매핑 모듈(15)은 특정 가상머신(예컨대, VM 0, VID = 0)으로부터 I/O 커맨드를 파일 시스템(63)을 경유하여 수신할 수 있다. I/O 커맨드는 입출력되는 데이터의 내용, 데이터의 크기, 및 입출력될 스토리지 상의 논리 비트 어드레스(LBA)를 포함한다. 그러면 채널 매핑 모듈(65)은 미리 저장되어 있는 할당 정보 또는 매핑 테이블을 조회하여, 이 가상머신(VID = 0)에 대해 할당된 SSD 채널이 존재하는지를 판단한다. 예를 들어, 할당된 채널은 "채널 0"(즉, 채널ID = 0)로서 존재한다고 판단된다고 하자. 그러면, 채널 매핑 모듈(65)은 I/O 커맨드에 채널ID를 포함시켜 SSD(67)로 전달할 수 있다. 채널ID를 포함한 I/O 커맨드를 수신한 SSD(67)는, I/O 커맨드에 포함된 LBA를 I/O 커맨드에 포함된 채널ID에 의해 지시된 채널 상의 PBA로 변환한 다음, 변환된 PBA에 대해 I/O 커맨드를 실행하고, 그 결과를 채널 매핑 모듈(65)를 통해 또는 직접 파일 시스템(63)으로 반환할 수 있다.
도 7은 본 발명의 또 다른 실시예에 따라, 4채널 방식의 SSD에서 플래시 변환 계층에서 매핑 테이블을 관리하는 가상머신 I/O 관리 장치를 예시하는 블록도이다.
도 7을 참조하면, 가상머신 I/O 관리 장치(70)는 커널 측에 가상머신 매니저(미도시)로부터 가상머신 관련 정보를 수신하는 파일 시스템(71), 디바이스 드라이버(73)을 포함하고, SSD 측에 플래시 변환 계층(75) 및 4개의 채널로 구분된 플래시 메모리(77)를 포함할 수 있다.
파일 시스템(71)은 호스트 운영체제의 커널 내에서 각 가상머신을 대응하는 각 파일로서 취급하고 처리하는 컴포넌트이다. 파일 시스템(71)은, 가상머신이 생성되면, 생성된 가상머신을 나타내는 가상머신 식별코드(VID)와 가상머신에 대응하는 파일을 나타내는 파일명(파일ID)를 대응시킬 수 있다. 각 파일에 대해 서로 구별되는 복수 개의 데이터 엔터티(예컨대, 서로 다른 LBA에 의해 구별되는)가 존재할 경우, 각각의 데이터 엔터티에는 우선순위 코드(VPRIO)가 대응될 수 있다.
가상머신 식별코드(VID)에 SSD의 채널들 중 하나를 나타내는 채널코드(채널ID)를 할당하는 채널 매핑 모듈은, 이 예에서 SSD의 플래시 변환 계층(FTL)(75)이 담당한다. 각 채널코드(채널ID)는 플래시 메모리(77)가 구분되어 있는 채널들(채널0, 채널1, 채널2, 채널3) 중 하나이다. FTL(75)은 이 할당 정보를 매핑 테이블과 같은 메타데이터로서 생성하고 관리할 수 있다.
FTL(75)은 통상적으로 LBA-PBA 변환을 위한 어드레스 매핑 테이블을 생성하고 관리하는 기능을 수행한다. 본 발명에 따라, FTL(75)의 어드레스 매핑 테이블은 가상머신에 스토리지 영역을 할당한 할당정보를 포함하는 확장된 매핑 테이블(750)로서 생성되고 관리된다.
도시된 예에서, 확장된 매핑 테이블(750)을 살펴보면, 4개의 레코드(751, 752, 753, 754)를 포함한다. 각각의 레코드는 LBA, PBA, VID, VPRIO, 채널ID를 포함할 수 있다. 여기서 LBA(논리 비트 어드레스)는 파일ID(가상머신에 대응하는 파일을 식별하는 코드)에 대응하는 요소이다. LBA는 하나의 파일이 복수의 LBA로 구별되는 복수의 엔터티를 가질 때, 각각의 엔터티를 나타낼 수 있다. PBA(물리 비트 어드레스)는 플래시 메모리(77) 내의 저장공간을 식별하는 요소이다. VID는 각 파일에 대응하는 가상머신을 식별하는 코드이다. VPRIO는 동일 파일ID에 대응하는 복수의 LBA의 우선순위를 나타내는 코드이다. 채널ID는 할당된 스토리지 영역, 특히 SSD의 채널을 나타내는 코드이다.
확장된 매핑 테이블(750)에서, 첫번째 레코드(751)는 LBA를 나타내는 엔트리 1, PBA를 나타내는 엔트리 1, 가상머신 식별코드를 나타내는 엔트리 0, 우선순위를 나타내는 엔트리 1, 할당된 채널ID를 나타내는 엔트리 0를 가진다. 두번째 레코드(752)는 LBA를 나타내는 엔트리 10, PBA를 나타내는 엔트리 2, 가상머신 식별코드를 나타내는 엔트리 0, 우선순위를 나타내는 엔트리 1, 할당된 채널ID를 나타내는 엔트리 0를 가진다. 세번째 레코드(753)는 LBA를 나타내는 엔트리 20, PBA를 나타내는 엔트리 8, 가상머신 식별코드를 나타내는 엔트리 1, 우선순위를 나타내는 엔트리 2, 할당된 채널ID를 나타내는 엔트리 2를 가진다. 그리고, 네번째 레코드(754)는 LBA를 나타내는 엔트리 40, PBA를 나타내는 엔트리 9, 가상머신 식별코드를 나타내는 엔트리 1, 우선순위를 나타내는 엔트리 3, 할당된 채널ID를 나타내는 엔트리 2를 가진다.
여기서, LBA는 파일ID에 대하여 파일 시스템(71)에 의해 생성된 후 플래시 변환 계층(75)으로 전송된다. PBA는 FTL(75)에 의해 생성된다. VID 및 VPRIO도 역시 파일ID에 대하여 파일 시스템(71)에서 생성된 것이다. 채널ID는 플래시 변환 계층(75)에 의해 각각의 LBA에 대하여 할당된다.
이후, FTL(75)은 특정 가상머신(예컨대, VM 0, VID = 0)으로부터 I/O 커맨드를 파일 시스템(71) 및 디바이스 드라이버(73)를 경유하여 수신할 수 있다. 디바이스 드라이브(73)를 경유하여 FTL(75)에서 수신되는 I/O 커맨드는 입출력되는 데이터의 내용, 데이터의 크기, 및 입출력될 스토리지 상의 논리 비트 어드레스(LBA), 가상머신 식별코드(VID), 우선순위(VPRIO)를 포함한다. 그러면 FTL(75)은 확장된 매핑 테이블(750)을 조회하여, 이 가상머신(VID = 0)에 대해 할당된 SSD 채널이 존재하는지를 판단한다. 예를 들어, 할당된 채널은 "채널 0"(즉, 채널ID = 0)로서 존재한다고 판단된다고 하자. 그러면, FTL(75)은 I/O 커맨드에 포함된 LBA를 확장된 매핑 테이블에 포함된 채널ID에 의해 지시된 채널 상의 PBA로 변환한 다음, 변환된 PBA에 대해 I/O 커맨드를 실행하고, 그 결과를 디바이스 드라이버(73)를 통해 파일 시스템(71)으로 반환할 수 있다.
도 8은 또 다른 실시예에 따라, 커널 내의 채널 매핑 모듈에 의해 매핑 테이블이 관리되는 가상머신 I/O 관리 장치를 예시하는 블록도이다.
도 8을 참조하면, 가상머신 I/O 관리 장치(80)는 커널 측에 가상머신 매니저(미도시)로부터 가상머신 관련 정보를 수신하는 파일 시스템(81), 채널 매핑 모듈(82), 디바이스 드라이버(83)을 포함하고, SSD 측에 FTL(85) 및 멀티 채널로 구분된 플래시 메모리(미도시)를 포함할 수 있다.
파일 시스템(81)은 호스트 운영체제의 커널 내에서 각 가상머신을 대응하는 각 파일로서 취급하고 처리하는 컴포넌트이다. 파일 시스템(81)은, 가상머신이 생성되면, 생성된 가상머신을 나타내는 가상머신 식별코드(VID)와 가상머신에 대응하는 파일을 나타내는 파일명(파일ID)를 대응시킬 수 있다. 각 파일에 대해 서로 구별되는 복수 개의 데이터 엔터티(예컨대, 서로 다른 LBA에 의해 구별되는)가 존재할 경우, 각각의 데이터 엔터티에는 우선순위 코드(VPRIO)가 대응될 수 있다.
채널 매핑 모듈(82)은 가상머신 식별코드(VID)에 SSD의 채널들 중 하나를 나타내는 채널코드(채널ID)를 할당하고, 이 할당 정보를 매핑 테이블 형태로 관리하는 컴포넌트이다. 할당 정보의 생성 및 관리 기능은, 도 7의 SSD의 플래시 변환 계층(FTL)(75)이 담당하는 예와는 달리, 도 8에 도시된 예에서는 별도의 소프트웨어, 플러그인, 프로시저, 스레드, 미들웨어, 또는 호스트 운영체제의 일부 등의 형태로 구현되어 커널 측에서 동작하는 모듈의 형태이다. 각 채널코드(채널ID)는 SSD측의 FTL(85)에 의해 제어되는 플래시 메모리(미도시)가 구분되어 있는 채널들 중 하나이다.
도시된 예에서, 채널 매핑 모듈(82)은 매핑 테이블(820)을 생성하고 관리한다. 도시된 매핑 테이블(820)을 살펴보면, 4개의 레코드(821, 822, 823, 824)를 포함한다. 각각의 레코드는 파일ID, LBA, VID, VPRIO, 채널ID를 포함할 수 있다. 파일ID는 가상머신에 대응하는 파일을 식별하는 코드이다. LBA는 하나의 파일이 복수의 LBA로 구별되는 복수의 엔터티를 가질 때, 각각의 엔터티를 나타내는 요소이다. VID는 각 파일에 대응하는 가상머신을 식별하는 코드이다. VPRIO는 동일 파일ID에 대응하는 복수의 LBA의 우선순위를 나타내는 코드이다. 채널ID는 할당된 스토리지 영역, 특히 SSD의 채널을 나타내는 코드이다
매핑 테이블(820)에서, 첫번째 레코드(821)는 파일명을 나타내는 엔트리 a, LBA를 나타내는 엔트리 1, 가상머신 식별코드를 나타내는 엔트리 0, 우선순위를 나타내는 엔트리 1, 할당된 채널ID를 나타내는 엔트리 0를 가진다. 두번째 레코드(822)는 파일명을 나타내는 엔트리 a, LBA를 나타내는 엔트리 8, 가상머신 식별코드를 나타내는 엔트리 0, 우선순위를 나타내는 엔트리 1, 할당된 채널ID를 나타내는 엔트리 0를 가진다. 세번째 레코드(823)는 파일명을 나타내는 엔트리 b, LBA를 나타내는 엔트리 2, 가상머신 식별코드를 나타내는 엔트리 1, 우선순위를 나타내는 엔트리 2, 할당된 채널ID를 나타내는 엔트리 1를 가진다. 그리고, 네번째 레코드(824)는 파일명을 나타내는 엔트리 b, LBA를 나타내는 엔트리 9, 가상머신 식별코드를 나타내는 엔트리 1, 우선순위를 나타내는 엔트리 3, 할당된 채널ID를 나타내는 엔트리 1을 가진다.
여기서, LBA, VID, VPRIO는 파일ID에 대하여 파일 시스템(81)에 의해 생성된 후 채널 매핑 모듈(82)로 전송된다. PBA는 채널 매핑 모듈(82)에서 알 필요가 없다. 다만 채널ID는 채널 매핑 모듈(82)에게 알려져 있어야 한다. 이를 위하여, 채널 매핑 모듈(82)은 SSD의 채널 구조를 획득하기 위한 추가 기능을 더 포함할 수 있다. 채널 매핑 모듈(82)은 예컨대, 사용자가 입력한 정보 또는 SSD로부터 수신한 정보로부터 SSD의 채널 구조를 획득할 수 있다.
이후, 채널 매핑 모듈(82)은 특정 가상머신(예컨대, VM 0, VID = 0)으로부터 I/O 커맨드를 파일 시스템(81)로부터 수신할 수 있다. 그러면 채널 매핑 모듈(82)은 매핑 테이블(820)을 조회하여, 이 가상머신(VID = 0)에 대해 할당된 SSD 채널이 존재하는지를 판단한다. 예를 들어, 할당된 채널은 "채널 0"(즉, 채널ID = 0)로서 존재한다고 판단된다고 하자. 그러면, 채널 매핑 모듈(82)은 I/O 커맨드에 할당된 채널ID를 포함시켜 디바이스 드라이버(83)를 경유하여 SSD측으로 전송할 수 있다. SSD측에서 FTL(85)은 입출력되는 데이터의 내용, 데이터의 크기, 및 입출력될 스토리지 상의 논리 비트 어드레스(LBA), 가상머신 식별코드(VID), 우선순위(VPRIO), 및 채널ID를 포함하는 I/O 커맨드를 수신한다. FTL(85)은 I/O 커맨드에 포함된 LBA를 I/O 커맨드에 포함된 채널ID에 의해 지시된 채널 상의 PBA로 변환한 다음, 변환된 PBA에 대해 I/O 커맨드를 실행하고, 그 결과를 디바이스 드라이버(83)를 통해 파일 시스템(81)으로 반환할 수 있다.
도 9는 또 다른 실시예에 따라, 복수의 SSD를 채용한 컴퓨터 시스템에서, 커널 내의 채널 매핑 모듈에 의해 매핑 테이블이 관리되는 가상머신 I/O 관리 장치를 예시하는 블록도이다.
도 9를 참조하면, 가상머신 I/O 관리 장치(90)는 커널 측에 가상머신 매니저(미도시)로부터 가상머신 관련 정보를 수신하는 파일 시스템(91), 채널 매핑 모듈(92), 디바이스 드라이버(93)을 포함하고, SSD 측에 FTL(95) 및 멀티 채널로 구분된 플래시 메모리(미도시)를 포함할 수 있다.
파일 시스템(91)은 호스트 운영체제의 커널 내에서 각 가상머신을 대응하는 각 파일로서 취급하고 처리하는 컴포넌트이다. 파일 시스템(91)은, 가상머신이 생성되면, 생성된 가상머신을 나타내는 가상머신 식별코드(VID)와 가상머신에 대응하는 파일을 나타내는 파일명(파일ID)를 대응시킬 수 있다. 각 파일에 대해 서로 구별되는 복수 개의 데이터 엔터티(예컨대, 서로 다른 LBA에 의해 구별되는)가 존재할 경우, 각각의 데이터 엔터티에는 우선순위 코드(VPRIO)가 대응될 수 있다.
채널 매핑 모듈(92)은 가상머신 식별코드(VID)에 SSD의 채널들 중 하나를 나타내는 채널코드(채널ID)를 할당하고, 이 할당 정보를 매핑 테이블 형태로 관리하는 컴포넌트이다. 할당 정보의 생성 및 관리 기능은, 도 7의 SSD의 플래시 변환 계층(FTL)(75)이 담당하는 예와는 달리, 도 8에 도시된 예와 마찬가지로 도 9에 도시된 예에서도 별도의 소프트웨어, 플러그인, 프로시저, 스레드, 미들웨어, 또는 호스트 운영체제의 일부 등의 형태로 구현되어 커널 측에서 동작하는 모듈의 형태로서 구현된다. 각 채널코드(채널ID)는 SSD측의 FTL(95)에 의해 제어되는 플래시 메모리(미도시)가 구분되어 있는 채널들 중 하나이다.
도시된 예에서, 채널 매핑 모듈(92)은 매핑 테이블(920)을 생성하고 관리한다. 도시된 매핑 테이블(920)을 살펴보면, 4개의 레코드(921, 922, 923, 924)를 포함한다. 각각의 레코드는 파일ID, LBA, VID, VPRIO, 채널ID, SID를 포함할 수 있다. 파일ID는 가상머신에 대응하는 파일을 식별하는 코드이다. LBA는 하나의 파일이 복수의 LBA로 구별되는 복수의 엔터티를 가질 때, 각각의 엔터티를 나타내는 요소이다. VID는 각 파일에 대응하는 가상머신을 식별하는 코드이다. VPRIO는 동일 파일ID에 대응하는 복수의 LBA의 우선순위를 나타내는 코드이다. 채널ID는 할당된 스토리지 영역, 특히 SSD의 채널을 나타내는 코드이다. SID는 복수의 SSD 중에서 할당된 SSD를 나타내는 SSD 식별코드이다.
매핑 테이블(920)에서, 첫번째 레코드(921)는 파일명을 나타내는 엔트리 a, LBA를 나타내는 엔트리 1, 가상머신 식별코드를 나타내는 엔트리 0, 우선순위를 나타내는 엔트리 1, 할당된 채널ID를 나타내는 엔트리 0, 할당된 SID를 나타내는 엔트리 0를 가진다. 두번째 레코드(922)는 파일명을 나타내는 엔트리 a, LBA를 나타내는 엔트리 8, 가상머신 식별코드를 나타내는 엔트리 0, 우선순위를 나타내는 엔트리 1, 할당된 채널ID를 나타내는 엔트리 0, 할당된 SID를 나타내는 엔트리 1를 가진다. 세번째 레코드(923)는 파일명을 나타내는 엔트리 b, LBA를 나타내는 엔트리 2, 가상머신 식별코드를 나타내는 엔트리 1, 우선순위를 나타내는 엔트리 2, 할당된 채널ID를 나타내는 엔트리 1, 할당된 SID를 나타내는 엔트리 2를 가진다. 그리고, 네번째 레코드(924)는 파일명을 나타내는 엔트리 b, LBA를 나타내는 엔트리 9, 가상머신 식별코드를 나타내는 엔트리 1, 우선순위를 나타내는 엔트리 3, 할당된 채널ID를 나타내는 엔트리 1, 할당된 SID를 나타내는 엔트리 2를 가진다.
여기서, LBA, VID, VPRIO는 파일ID에 대하여 파일 시스템(91)에 의해 생성된 후 채널 매핑 모듈(82)로 전송된다. PBA는 채널 매핑 모듈(92)에서 알 필요가 없다. 다만 채널ID 및 SID는 채널 매핑 모듈(92)에게 알려져 있어야 한다. 이를 위하여, 채널 매핑 모듈(92)은 현재 이용가능한 SSD들 및 각 SSD의 채널 구조를 획득하기 위한 추가 기능을 더 포함할 수 있다. 채널 매핑 모듈(92)은 예컨대, 사용자가 입력한 정보 또는 각 SSD로부터 수신한 정보로부터 SSD의 식별정보 및 각 SSD의 채널 구조에 관한 정보를 획득할 수 있다.
이후, 채널 매핑 모듈(92)은 특정 가상머신(예컨대, VM 0, VID = 0)으로부터 I/O 커맨드를 파일 시스템(91)로부터 수신할 수 있다. 그러면 채널 매핑 모듈(92)은 매핑 테이블(920)을 조회하여, 이 가상머신(VID = 0)에 대해 할당된 SSD 및 이 할당된 SSD에 포함된 채널 중에서 할당된 채널이 존재하는지를 판단한다. 예를 들어, 할당된 SSD(SID = 0)와 할당된 채널이 존재한다고 판단된다고 하자. 그러면, 채널 매핑 모듈(92)은 I/O 커맨드에 할당된 채널ID을 포함시켜 디바이스 드라이버(93)를 경유하여, SSD들(95) 중에서 SID에 의해 지시된 SSD(예컨대, SSD 0)로 전송할 수 있다. 이 SSD 0에서 FTL(미도시)은 입출력되는 데이터의 내용, 데이터의 크기, 및 입출력될 스토리지 상의 논리 비트 어드레스(LBA), 가상머신 식별코드(VID), 우선순위(VPRIO), 및 채널ID를 포함하는 I/O 커맨드를 수신한다. FTL은 I/O 커맨드에 포함된 LBA를 I/O 커맨드에 포함된 채널ID에 의해 지시된 채널 상의 PBA로 변환한 다음, 변환된 PBA에 대해 I/O 커맨드를 실행하고, 그 결과를 디바이스 드라이버(93)를 통해 파일 시스템(91)으로 반환할 수 있다.
위에서 본 발명이 구체적인 실시예들 통해 설명되었으나, 해당 기술분야의 통상의 지식을 가진 자라면, 첨부된 특허청구범위의 기술범위나 요지를 변경하지 않으면서 다양한 수정, 변형, 등가물 치환을 통해 변형된 다양한 실시예들을 구현할 수 있다. 그러므로 상술한 설명은 오직 예시로서 해석되어야 하며 본 발명을 제한하는 것으로 해석되어서는 안된다.
10: 가상머신 I/O 관리 장치
111, 112, 113: 가상머신
11: 가상머신 매니저
13: 파일 시스템
15: 영역 매핑 모듈
17: 스토리지

Claims (10)

  1. 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서, 상기 물리머신의 스토리지에 대한 복수의 가상머신의 I/O를 관리하는 방법으로서,
    상기 복수의 가상머신 각각에 대응하여 상기 스토리지에 저장되는 파일에 대하여, 상기 스토리지에 포함된 복수의 스토리지 영역 중 하나를 할당하고, 상기 파일 각각에 대응하는 가상머신 식별코드, 및 상기 가상머신 식별코드에 대응하는 스토리지 영역을 지시하는 영역코드를 포함한 할당 정보를 저장하는 단계;
    특정 가상머신과 관련된 I/O 커맨드(input/output command)를 수신하면, 상기 특정 가상머신에 대해 할당된 스토리지 영역이 존재하는지를 판단하는 단계; 및
    존재한다고 판단되면, 할당된 스토리지 영역에 대해서 상기 I/O 커맨드가 실행되도록 하는 단계를
    포함하는, 가상머신 I/O 관리 방법.
  2. 제 1 항에 있어서,
    상기 파일에 대응하여 복수의 서로 다른 데이터 엔터티가 존재하는 경우, 상기 할당 정보는:
    상기 복수의 서로 다른 데이터 엔터티룰 나타내는 어드레스 코드, 상기 어드레스 코드의 우선 순위를 나타내는 우선순위 코드를 더 포함하는,
    가상머신 I/O 관리 방법.
  3. 제 1 항에 있어서,
    상기 할당 정보는:
    상기 스토리지의 스토리지 영역 정보에 기초하여, 상기 물리머신의 커널 상의 파일 시스템에서 제공하는 상기 파일과 관련된 정보의 변화에 따라 생성되고 갱신되는,
    가상머신 I/O 관리 방법.
  4. 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서, 상기 물리머신의 스토리지인 멀티채널 방식의 솔리드 스테이트 드라이브(SSD, solid state drive)에 대한 복수의 가상머신의 I/O를 관리하는 방법으로서,
    상기 복수의 가상머신 각각에 대응하여 상기 SSD에 저장되는 파일에 대하여, 상기 SSD에 포함된 복수의 채널 중 하나를 할당하고, 상기 파일 각각에 대응하는 가상머신 식별코드, 및 상기 가상머신 식별코드에 대응하는 채널을 나타내는 채널코드를 포함한 할당 정보를 저장하는 단계;
    특정 가상머신과 관련된 I/O 커맨드(input/output command)를 수신하면, 상기 특정 가상머신에 대해 할당된 채널이 존재하는지를 판단하는 단계; 및
    존재한다고 판단되면, 할당된 채널에 대해서 상기 I/O 커맨드가 실행되도록 하는 단계를
    포함하는, 가상머신 I/O 관리 방법.
  5. 제 4 항에 있어서,
    상기 할당 정보는, 상기 SSD의 플래시 변환 계층(FTL, flash translation layer)에서 관리하는 어드레스 매핑 테이블을 확장한 매핑 테이블의 형태로 생성되고 갱신되는,
    가상머신 I/O 관리 방법.
  6. 제 4 항에 있어서,
    상기 할당 정보는, 상기 물리머신의 커널의 파일 시스템 및 상기 SSD와 연결되는 디바이스 드라이버 사이에서 동작하는 매핑 모듈에서 관리하는 매핑 테이블의 형태로 생성되고 갱신되는,
    가상머신 I/O 관리 방법.
  7. 제 6 항에 있어서,
    상기 물리머신의 스토리지는 복수의 멀티채널 SSD를 포함하여 구성된 경우, 상기 매핑 테이블에는:
    상기 파일에 대응하는 상기 가상머신을 지시하는 가상머신 식별코드, 상기 가상머신 식별코드에 대응하는 상기 복수의 SSD 중 하나를 지시하는 SSD 식별코드, 상기 SSD 식별코드에 대응하는 상기 SSD 식별코드로 지시된 SSD 내의 채널을 나타내는 채널코드가 포함되는,
    가상머신 I/O 관리 방법.
  8. 제 4 항에 있어서,
    상기 파일에 대응하여 복수의 서로 다른 데이터 엔터티가 존재하는 경우, 상기 할당 정보는:
    상기 복수의 서로 다른 데이터 엔터티룰 나타내는 어드레스 코드, 상기 어드레스 코드의 우선 순위를 나타내는 우선순위 코드를 더 포함하는,
    가상머신 I/O 관리 방법.
  9. 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서, 상기 물리머신의 스토리지로서 사용되는, 플래시 변환 계층(FTL)을 포함하는 SSD 컨트롤러 및 상기 SSD 컨트롤러에 의해 멀티 채널 방식으로 인터리빙 제어되는 복수의 플래시 메모리를 포함하는, 멀티채널 방식의 솔리드 스테이트 드라이브(SSD, solid state drive)로서,
    상기 FTL은 상기 복수의 가상머신 각각에 대응하여 상기 SSD에 저장되는 파일에 대하여, 상기 SSD에 포함된 복수의 채널 중 하나를 할당하고, 상기 파일 각각에 대응하는 가상머신 식별코드, 및 상기 가상머신 식별코드에 대응하는 채널을 나타내는 채널코드를 포함한 할당 정보를 저장하고;
    상기 SSD 컨트롤러는, 특정 가상머신과 관련된 I/O 커맨드(input/output command)를 수신하면, 상기 할당 정보를 조회하여 상기 특정 가상머신에 대해 할당된 채널이 존재하는지를 판단하고, 존재한다고 판단되면, 할당된 채널에 대해서 상기 I/O 커맨드가 실행되도록 제어하는,
    가상머신 I/O 관리 기능을 포함하는 솔리드 스테이트 드라이브.
  10. 하나의 물리머신 상에 복수의 가상머신이 운용되는 환경에서, 상기 물리머신의 스토리지인 멀티채널 방식의 솔리드 스테이트 드라이브(SSD, solid state drive)에 대한 복수의 가상머신의 I/O를 관리하기 위한 컴퓨터-실행가능 인스트럭션을 포함하며, 상기 컴퓨터-실행가능 인스트럭션은 상기 물리머신의 프로세서에 의해 실행되면:
    상기 복수의 가상머신 각각에 대응하여 상기 SSD에 저장되는 파일에 대하여, 상기 SSD에 포함된 복수의 채널 중 하나를 할당하고, 상기 파일 각각에 대응하는 가상머신 식별코드, 및 상기 가상머신 식별코드에 대응하는 채널을 나타내는 채널코드를 포함한 할당 정보를 저장하고;
    특정 가상머신과 관련된 I/O 커맨드(input/output command)를 수신하면, 상기 특정 가상머신에 대해 할당된 채널이 존재하는지를 판단하며; 및
    존재한다고 판단되면, 할당된 채널에 대해서 상기 I/O 커맨드가 실행되도록 하는,
    가상머신의 I/O를 관리하기 위한 컴퓨터-실행가능 인스트럭션을 저장한 컴퓨터-판독가능 매체.
KR1020140117165A 2014-09-03 2014-09-03 가상머신 i/o 관리 방법 및 장치 KR101579941B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140117165A KR101579941B1 (ko) 2014-09-03 2014-09-03 가상머신 i/o 관리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140117165A KR101579941B1 (ko) 2014-09-03 2014-09-03 가상머신 i/o 관리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101579941B1 true KR101579941B1 (ko) 2015-12-23

Family

ID=55082648

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140117165A KR101579941B1 (ko) 2014-09-03 2014-09-03 가상머신 i/o 관리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101579941B1 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101982447B1 (ko) * 2018-07-20 2019-08-28 세종대학교산학협력단 가상 머신에 대한 입출력 처리 방법
CN110825320A (zh) * 2018-08-07 2020-02-21 马维尔国际贸易有限公司 虚拟化固态存储介质的隔离区域
WO2020130797A1 (en) * 2018-12-21 2020-06-25 Mimos Berhad Method of preparing virtual machine, method of managing downloading and uploading files at virtual machine and system therefor
US11042330B2 (en) 2017-03-01 2021-06-22 Samsung Electronics Co., Ltd. Methods and systems for distributed data storage
US11544181B2 (en) 2018-03-28 2023-01-03 Samsung Electronics Co., Ltd. Storage device for mapping virtual streams onto physical streams and method thereof
US11922057B2 (en) 2020-10-29 2024-03-05 Samsung Electronics Co., Ltd. Computing system including host and storage system with preload buffer memory and method of operating the same
KR20240071892A (ko) 2022-11-16 2024-05-23 정진우 다수 사용자의 독립제어 기능을 제공하는 컴퓨팅 장치 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179416A1 (en) * 2010-01-21 2011-07-21 Vmware, Inc. Virtual Machine Access to Storage Via a Multi-Queue IO Storage Adapter With Optimized Cache Affinity and PCPU Load Balancing
US20110271014A1 (en) * 2010-04-29 2011-11-03 Yoshio Turner Direct i/o device access by a virtual machine with memory managed using memory disaggregation
US20130135816A1 (en) * 2011-11-17 2013-05-30 Futurewei Technologies, Inc. Method and Apparatus for Scalable Low Latency Solid State Drive Interface
KR20140045286A (ko) * 2010-09-15 2014-04-16 퓨어 스토리지, 아이앤씨. 저장소 환경에서의 i/o 기록들의 스케줄링

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179416A1 (en) * 2010-01-21 2011-07-21 Vmware, Inc. Virtual Machine Access to Storage Via a Multi-Queue IO Storage Adapter With Optimized Cache Affinity and PCPU Load Balancing
US20110271014A1 (en) * 2010-04-29 2011-11-03 Yoshio Turner Direct i/o device access by a virtual machine with memory managed using memory disaggregation
KR20140045286A (ko) * 2010-09-15 2014-04-16 퓨어 스토리지, 아이앤씨. 저장소 환경에서의 i/o 기록들의 스케줄링
US20130135816A1 (en) * 2011-11-17 2013-05-30 Futurewei Technologies, Inc. Method and Apparatus for Scalable Low Latency Solid State Drive Interface

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042330B2 (en) 2017-03-01 2021-06-22 Samsung Electronics Co., Ltd. Methods and systems for distributed data storage
US11544181B2 (en) 2018-03-28 2023-01-03 Samsung Electronics Co., Ltd. Storage device for mapping virtual streams onto physical streams and method thereof
KR101982447B1 (ko) * 2018-07-20 2019-08-28 세종대학교산학협력단 가상 머신에 대한 입출력 처리 방법
CN110825320A (zh) * 2018-08-07 2020-02-21 马维尔国际贸易有限公司 虚拟化固态存储介质的隔离区域
WO2020130797A1 (en) * 2018-12-21 2020-06-25 Mimos Berhad Method of preparing virtual machine, method of managing downloading and uploading files at virtual machine and system therefor
US11922057B2 (en) 2020-10-29 2024-03-05 Samsung Electronics Co., Ltd. Computing system including host and storage system with preload buffer memory and method of operating the same
KR20240071892A (ko) 2022-11-16 2024-05-23 정진우 다수 사용자의 독립제어 기능을 제공하는 컴퓨팅 장치 및 방법

Similar Documents

Publication Publication Date Title
US10969963B2 (en) Namespaces allocation in non-volatile memory devices
KR101579941B1 (ko) 가상머신 i/o 관리 방법 및 장치
US11928332B2 (en) Namespace size adjustment in non-volatile memory devices
US11994984B2 (en) Namespace mapping optimization in non-volatile memory devices
US11640242B2 (en) Namespace management in non-volatile memory devices
US10223254B1 (en) Namespace change propagation in non-volatile memory devices
US10761731B2 (en) Array controller, solid state disk, and method for controlling solid state disk to write data
JP2019020788A (ja) メモリシステムおよび制御方法
US8935499B2 (en) Interface for management of data movement in a thin provisioned storage system
JP2012523622A (ja) フラッシュメモリデータストレージデバイスにおけるデータストライピング
US8966130B2 (en) Tag allocation for queued commands across multiple devices
US10310758B2 (en) Storage system and storage control method
CN113918087B (zh) 存储装置以及用于管理存储装置中的命名空间的方法
KR102276912B1 (ko) 스토리지 시스템 및 이의 동작 방법
JP2013089225A (ja) 階層変更方法及び装置
JP6427913B2 (ja) ストレージシステム、制御装置、ストレージ装置、入出力制御方法、及びプログラム
US20220391091A1 (en) Management of Namespace Block Boundary Alignment in Non-Volatile Memory Devices
JP6657990B2 (ja) ストレージ装置、仮想ボリューム制御システム、仮想ボリューム制御方法および仮想ボリューム制御プログラム
TW201916053A (zh) 資料儲存裝置之非揮發式記憶體的命名空間規劃

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181203

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191203

Year of fee payment: 5