KR20230144434A - 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법 - Google Patents

호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR20230144434A
KR20230144434A KR1020220073186A KR20220073186A KR20230144434A KR 20230144434 A KR20230144434 A KR 20230144434A KR 1020220073186 A KR1020220073186 A KR 1020220073186A KR 20220073186 A KR20220073186 A KR 20220073186A KR 20230144434 A KR20230144434 A KR 20230144434A
Authority
KR
South Korea
Prior art keywords
dirty
information
data
bitmap
host device
Prior art date
Application number
KR1020220073186A
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 US18/188,882 priority Critical patent/US20230325110A1/en
Priority to CN202310349475.0A priority patent/CN116893877A/zh
Priority to EP23166960.7A priority patent/EP4258097A1/en
Publication of KR20230144434A publication Critical patent/KR20230144434A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

Abstract

본 발명의 실시 예에 따른 스토리지 장치를 제어하도록 구성된 호스트 장치의 동작 방법은 스토리지 장치로부터 초기 맵핑 정보를 수신하는 단계, 초기 맵핑 정보를 기반으로, 스토리지 장치의 제1 영역에 저장된 소스 데이터를 제2 영역으로 초기 마이그레이션을 수행하는 단계, 소스 데이터의 제1 더티 데이터에 대한 제1 더티 정보를 스토리지 장치로부터 수신하는 단계, 제1 더티 정보를 기반으로, 제1 더티 데이터에 대한 제1 마이그레이션을 수행하는 단계, 소스 데이터의 제2 더티 데이터에 대한 제2 더티 정보를 스토리지 장치로부터 수신하는 단계, 및 제2 더티 정보를 기반으로, 제2 더티 데이터에 대한 제2 마이그레이션을 수행하는 단계를 포함하고, 제1 더티 정보의 크기는 제2 더티 정보의 크기와 다르다.

Description

호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법{OPERATION METHOD OF OPERATING HOST DEVICE, AND OPERATION METHOD OF STORAGE DEVICE}
본 발명은 컴퓨터 시스템에 관한 것으로 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법에 관한 것이다.
컴퓨터 시스템은 스토리지 장치에 저장된 데이터를 사용하여 다양한 연산을 수행하거나 또는 다양한 프로그램을 구동하도록 구성된다. 컴퓨터 시스템에서는, 효율적인 데이터 관리를 위해 스토리지 장치에 저장된 데이터를 스토리지 장치 내의 다른 영역 또는 다른 스토리지 장치로 이동 또는 마이그레이션시킬 수 있다. 일 예로서, 컴퓨터 시스템 상에서 구동되는 가상 머신에 대한 마이그레이션은 서버 통합,시스템 복구 등을 목적으로 물리 서버의 가상 머신을 다른 물리 서버로 복제하는데 사용된다.
일반적으로 가상 머신에 대한 마이그레이션 동안, 가상 머신의 동작에 의해 데이터 변조가 발생하면 안되기 때문에, 가상 머신의 동작을 중단한 상태에서 마이그레이션이 수행된다. 반면에, 최근에 실시간 마이그레이션은 가상 머신의 중단없이 가상 머신에 대한 마이그레이션을 지원한다. 이 경우, 마이그레이션 동안, 가상 머신의 동작에 의해 변조된 데이터(예를 들어, 더티 데이터)에 대한 최신화가 요구된다.
본 발명의 목적은 향상된 성능을 갖는 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법에 관한 것이다.
본 발명의 실시 예에 따르면, 스토리지 장치를 제어하도록 구성된 호스트 장치의 동작 방법은: 상기 스토리지 장치로부터 초기 맵핑 정보를 수신하는 단계; 상기 초기 맵핑 정보를 기반으로, 상기 스토리지 장치의 제1 영역에 저장된 소스 데이터를 제2 영역으로 초기 마이그레이션을 수행하는 단계; 상기 소스 데이터의 제1 더티 데이터에 대한 제1 더티 정보를 상기 스토리지 장치로부터 수신하는 단계; 상기 제1 더티 정보를 기반으로, 상기 제1 더티 데이터에 대한 제1 마이그레이션을 수행하는 단계; 상기 소스 데이터의 제2 더티 데이터에 대한 제2 더티 정보를 상기 스토리지 장치로부터 수신하는 단계; 및 상기 제2 더티 정보를 기반으로, 상기 제2 더티 데이터에 대한 제2 마이그레이션을 수행하는 단계를 포함하고, 상기 제1 더티 정보의 크기는 상기 제2 더티 정보의 크기와 다르다.
본 발명의 실시 예에 따르면, 호스트 장치의 제어에 따라 동작하도록 구성된 스토리지 장치의 동작 방법은: 상기 호스트 장치로 소스 데이터에 대한 초기 매핑 정보를 전송하는 단계; 상기 호스트 장치의 제어에 따라, 상기 소스 데이터를 제1 영역으로부터 제2 영역으로 초기 마이그레이션을 수행하는 단계; 상기 초기 매핑 정보를 전송하고, 상기 초기 마이그레이션을 수행하는 동안, 상기 소스 데이터에서 발생한 제1 더티 데이터에 대한 정보를 제1 비트맵으로서 관리하는 단계; 상기 제1 비트맵을 기반으로 제1 더티 정보를 생성하고, 상기 제1 더티 정보를 상기 호스트 장치로 전송하는 단계; 상기 호스트 장치의 제어에 따라, 상기 제1 더티 데이터에 대한 제1 마이그레이션을 수행하는 단계; 상기 제1 더티 정보를 생성하고, 상기 제1 더티 정보를 전송하고, 상기 제1 마이그레이션을 수행하는 동안, 상기 소스 데이터에서 발생한 제2 더티 데이터에 대한 정보를 제2 비트맵으로 관리하는 단계; 상기 제2 비트맵을 기반으로 제2 더티 정보를 생성하고, 상기 제2 더티 정보를 상기 호스트 장치로 전송하는 단계; 및 상기 호스트 장치의 제어에 따라, 상기 제2 더티 데이터에 대한 제2 마이그레이션을 수행하는 단계를 포함하고, 상기 제1 더티 정보의 크기는 상기 제2 더티 정보의 크기와 다르다.
본 발명의 실시 예에 따르면, 스토리지 장치를 제어하도록 구성된 호스트 장치의 동작 방법은: 상기 스토리지 장치로부터 초기 맵핑 정보를 수신하는 단계; 상기 초기 맵핑 정보를 기반으로, 상기 스토리지 장치의 제1 영역에 저장된 소스 데이터를 제2 영역으로 초기 마이그레이션을 수행하는 단계; 상기 소스 데이터의 제1 더티 데이터에 대한 제1 비트맵을 기반으로, 상기 제1 더티 데이터에 대한 제1 마이그레이션을 수행하는 단계; 상기 제1 더티 데이터의 개수 및 기준값을 비교하는 단계; 및 상기 비교 결과를 기반으로, 상기 소스 데이터의 제2 더티 데이터에 대한 제2 비트맵 및 상기 제2 비트맵에 기반된 제2 더티 정보 중 하나를 기반으로 제2 마이그레이션을 수행하는 단계를 포함하고, 상기 제1 비트맵의 크기 및 상기 제2 비트맵의 크기는 서로 동일하고, 상기 제2 더티 정보의 크기는 상기 제1 비트맵의 상기 크기 및 상기 제2 비트맵의 상기 크기 각각보다 작다.
본 발명에 따르면, 향상된 성능을 갖는 호스트 장치의 동작 방법, 스토리지 장치의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 시스템의 소프트웨어 계층을 보여주는 블록도이다.
도 3은 도 1의 스토리지 시스템의 마이그레이션(또는 실시간 마이그레이션)을 설명하기 위한 순서도이다.
도 4는 도 3의 순서도의 반복 동작에 따라, 스토리지 장치로부터 호스트 장치로 제공되는 비트맵을 설명하기 위한 도면이다.
도 5는 도 1의 스토리지 시스템의 동작을 보여주는 순서도이다.
도 6은 도 5의 S232 단계의 동작, 즉, 가변 단위를 갖는 더티 데이터를 송수신하는 동작을 보여주는 순서도이다.
도 7은 도 6의 순서도에 따른 동작(즉, 즉, 가변 단위를 갖는 더티 데이터를 송수신하는 동작)을 보다 상세하게 설명하기 위한 도면이다.
도 8은 도 1의 더티 관리자의 동작을 설명하기 위한 개념도이다.
도 9는 본 발명의 실시 예에 따른 스토리지 시스템의 동작을 설명하기 위한 타이밍도이다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템의 동작을 설명하기 위한 타이밍도이다.
도 11은 도 1의 스토리지 시스템의 동작 방법을 보여주는 순서도이다.
도 12는 본 발명의 실시 예에 따른 더티 정보를 교환하는 동작을 보여주는 순서도이다.
도 13은 도 12의 순서도에 따른 동작에서, 더티 어드레스(DRT_ADDR)를 설명하기 위한 도면이다.
도 14는 본 발명의 실시 예에 따른 더티 정보를 교환하는 동작을 보여주는 순서도이다.
도 15a 내지 도 15c는 스토리지 시스템의 다양한 토폴로지를 보여주는 블록도들이다.
도 16은 본 발명의 실시예에 따른 호스트 장치-스토리지 시스템을 나타내는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(100)은 호스트 장치(110) 및 스토리지 장치(120)를 포함할 수 있다. 일 실시 예에서, 스토리지 시스템(100)은 컴퓨터, 노트북, 서버, 워크 스테이션, 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트폰, 또는 웨어러블(Wearable) 장치와 같은 컴퓨팅 시스템일 수 있다.
호스트 장치(110)는 스토리지 장치(120)에 데이터를 저장하거나 또는 스토리지 장치(120)에 저장된 데이터를 읽을 수 있다. 예를 들어, 호스트 장치(110)는 스토리지 장치(120)에 데이터를 저장하기 위하여 쓰기 커맨드 및 쓰기 데이터를 스토리지 장치(120)로 전송할 수 있다. 또는 호스트 장치(110)는 스토리지 장치(120)에 저장된 데이터를 읽기 위하여, 읽기 커맨드를 스토리지 장치(120)로 전송하고, 스토리지 장치(120)로부터 데이터를 수신할 수 있다. 일 실시 예에서, 호스트 장치(110) 및 스토리지 장치(120)는 미리 정해진 인터페이스를 기반으로 서로 통신할 수 있다. 미리 정해진 인터페이스는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI), UFS(Universal Flash Storage), NVMe(Nonvolatile Memory express), CXL(Compute eXpress Link) 등과 같은 다양한 인터페이스들 중 적어도 하나를 지원할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
스토리지 장치(120)는 호스트 장치(110)의 제어에 따라 동작할 수 있다. 예를 들어, 스토리지 장치(120)는 스토리지 컨트롤러(121) 및 불휘발성 메모리 장치(122)를 포함할 수 있다. 스토리지 컨트롤러(121)는 호스트 장치(110)로부터 수신된 쓰기 커맨드에 응답하여, 호스트 장치(110)로부터 수신된 쓰기 데이터를 불휘발성 메모리 장치(122)에 저장할 수 있다. 스토리지 컨트롤러(121)는 호스트 장치(110)로부터 수신된 읽기 커맨드에 응답하여, 불휘발성 메모리 장치(122)로부터 읽은 데이터를 호스트 장치(110)로 전달할 수 있다.
일 실시 예에서, 호스트 장치(110)는 실시간 마이그레이션(live migration)을 수행할 수 있다. 실시간 마이그레이션은 호스트 장치(110) 상에서 구동되는 제1 가상 머신의 가동 중지 없이, 제1 가상 머신과 관련된 데이터를 제2 가상 머신으로 이동시키는 동작을 가리킬 수 있다.
예를 들어, 호스트 장치(110)는 복수의 가상 머신들(virtual machines)을 구동하도록 구성될 수 있다. 복수의 가상 머신들 각각은 호스트 장치(110) 상에서 독립적으로 구동될 수 있으며, 복수의 가상 머신들 각각과 관련된 데이터는 스토리지 장치(120)에 구분하여 저장될 수 있다. 이 때, 호스트 장치(110)는 복수의 가상 머신들 중 제1 가상 머신(예를 들어, 소스 가상 머신)에 의해 관리되는 데이터를 제2 가상 머신(예를 들어, 목표 가상 머신)으로 이동 또는 마이그레시연시킬 수 있다. 이 때, 호스트 장치(110)는 제1 가상 머신의 가동을 중단하지 않고, 상술된 마이그레이션을 수행할 수 있다.
일 실시 예에서, 제1 가상 머신(즉, 소스 가상 머신)의 동작이 중단되지 않는 경우, 마이그레이션이 수행되는 동안, 제1 가상 머신에 의해 관리되는 데이터가 변경될 수 있다. (즉, 더티 데이터가 발생할 수 있음). 이 경우, 호스트 장치(110)는 더티 데이터에 대한 정보를 기반으로, 더티 데이터가 임계치(TH) 이하가 될 때까지, 상술된 마이그레이션을 반복 수행할 수 있다. 더티 데이터가 임계치(TH) 이하인 경우, 호스트 장치(110)는 제1 가상 머신에 대한 동작을 중단하고, 최종 더티 데이터를 제2 가상 머신으로 마이그레이션시킴으로써, 마이그레이션을 완료할 수 있다.
일 실시 예에서, 호스트 장치(110)는 마이그레이션 관리자(111)를 포함할 수 있다. 마이그레인션 관리자(111)는 상술된 실시간 마이그레인션 동작을 관리하도록 구성된 하드웨어, 소프트웨어, 또는 그것들의 조합의 형태를 가질 수 있다. 마이그레이션 관리자(111)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
일 실시 예에서, 스토리지 컨트롤러(121)는 더티 관리자(121a)를 포함할 수 있다. 더티 관리자(121a)는 실시간 마이그레이션 동안 발생하는 더티 데이터에 대한 정보를 관리하도록 구성될 수 있다. 더티 관리자(121a)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
일 실시 예에서, 호스트 장치(110)는 실시간 마이그레이션시, 더티 데이터를 확인하기 위해, 스토리지 장치(120)로 더티 데이터에 대한 정보를 요청할 수 있다. 이 때, 본 발명에 따른 호스트 장치(110) 및 스토리지 장치(120) 사이에서 송수신되는 더티 데이터에 대한 정보는 가변 단위(variable granularity)를 가질 수 있다. 이 경우, 더티 데이터에 대한 정보가 고정된 단위(fixed granularity)를 갖는 경우와 비교하여, 더티 데이터에 대한 정보를 송수신하기 위한 시간 또는 레이턴시가 감소될 수 있다. 따라서, 스토리지 시스템(100)의 성능이 향상될 수 있다.
도 2는 도 1의 스토리지 시스템의 소프트웨어 계층을 보여주는 블록도이다. 도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(110) 및 스토리지 장치(120)를 포함할 수 있다.
호스트 장치(110) 상에는, 운영 체제(OS), 하이퍼바이저(HP), 제1 가상 머신(VM1), 및 제2 가상 머신(VM2)이 구동될 수 있다. 운영 체제(OS)는 호스트 장치(110)에 포함된 다양한 하드웨어들 및 리소스들을 제어하고, 다양한 프로그램들을 구동하고, 다양한 서비스를 지원하도록 구성된 시스템 소프트웨어일 수 있다. 하이퍼바이저(HP)는 호스트 장치(110)에서 구동되는 제1 및 제2 가상 머신들(VM1, VM2)을 구동하도록 구성된 논리적 플랫폼일 수 있다.
제1 및 제2 가상 머신들(VM1, VM2) 각각은 호스트 장치(110)에서 구동될 수 있다. 일 실시 예에서, 제1 가상 머신(VM1)과 관련된 데이터는 스토리지 장치(120)의 제1 네임스페이스(NS1)에 저장될 수 있고, 제2 가상 머신(VM2)과 관련된 데이터는 스토리지 장치(120)의 제2 네임스페이스(NS2)에 저장될 수 있다. 네임스페이스(namespace)는 스토리지 장치(120)에서, 논리적 또는 물리적으로 구분된 저장영역을 가리킬 수 있다. 즉, 제1 가상 머신(VM1)에 의해 관리되는 데이터는 제2 가상 머신(VM2)에 의해 관리되는 데이터로부터 논리적 또는 물리적으로 구분될 수 있다.
호스트 장치(110)의 하이퍼바이저(HP)는 제1 가상 머신(VM1)에 의해 관리되는 데이터를 제2 가상 머신(VM2)에 대응하는 제2 네임스페이스(NS2)로 이동 또는 마이그레이션시킬 수 있다. 이 때, 도 1을 참조하여 설명된 바와 같이, 하이퍼바이저(HP)는 제1 가상 머신(VM1)의 가동 중단 없이, 마이그레이션을 수행할 수 있다. 마이그레이션 중, 제1 가상 머신(VM1)이 가동 중이므로, 제1 가상 머신(VM1)에 의해 관리되는 데이터에서 더티 데이터가 발생할 수 있다. 하이퍼바이저(HP)는 더티 데이터에 대한 정보를 기반으로 제1 네임스페이스(NS1)에 저장된 데이터 중 더티 데이터를 제2 네임스페이스(NS2)로 마이그레이션하는 동작을 반복 수행할 수 있다. 상술된 마이그레이션, 즉, 실시간 마이그레이션은 일부 예시이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
일 실시 예에서, 마이그레이션을 반복 수행하는 동안, 하이퍼바이저(HP)는 더티 데이터를 판별하기 위한 정보(즉, 더티 데이터에 대한 정보)를 스토리지 장치(120)로부터 수신할 수 있다. 이 때, 더티 데이터에 대한 정보는 가변 단위를 가질 수 있다. 이는 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
일 실시 예에서, 도 2의 하이퍼바이저(HP)는 도 1을 참조하여 설명된 마이그레이션 관리자(111)를 포함할 수 있다. 또는 하이버바이저(HP)는 마이그레이션 관리자(111)의 동작을 수행하도록 구성될 수 있다.
일 실시 예에서, 가상 머신에 대한 마이그레이션은 동일한 스토리지 장치내에서 다른 영역으로, 또는 다른 스토리지 장치로, 또는 다른 호스트 장치에 의해 관리되는 스토리지 장치로, 또는 다른 시스템 환경으로 수행될 수 있다.
도 3은 도 1의 스토리지 시스템의 마이그레이션(또는 실시간 마이그레이션)을 설명하기 위한 순서도이다. 설명의 편의를 위해, 스토리지 시스템(100)은 제1 가상 머신(VM1)(또는, 소스 가상 머신)에 의해 관리되는 데이터를 제2 가상 머신(VM2)(또는, 목표 가상 머신)으로 마이그레이션하는 것으로 가정한다. 즉, 제1 가상 머신(VM1)에 대응하는 제1 네임스페이스(NS1)(또는, 소스 네임스페이스 또는 소스 저장 공간)에 저장된 데이터 중 적어도 일부가 제2 가상 머신(VM2)에 대응하는 제2 네임스페이스(NS2)(또는 목표 네임스페이스 또는 목표 저장 공간)로 마이그레이션될 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 구현 방식에 따라, 소스 가상 머신, 목표 가상 머신, 소스 네임스페이스, 소스 저장 공간, 목표 네임스페이스, 및 목표 저장 공간은 다양하게 변형될 수 있다. 또는 구현 방식에 따라, 소스 가상 머신에 의해 관리되는 데이터 뿐만 아니라, 소스 가상 머신을 구동하는데 필요한 모든 데이터 또는 프로그램 코드가 목표 네임스페이스 또는 다른 호스트 장치로 마이그레이션될 수 있다.
도 1 내지 도 3을 참조하면, S100 단계에서, 호스트 장치(110)는 스토리지 장치(120)로 추적 시작 요청을 전송할 수 있다. 추적 시작 요청은 마이그레이션이 수행되는 동안, 제1 가상 머신(VM1)의 구동에 의해 발생한 더티 데이터를 추적하기 위한 요청이다. 일 실시 예에서, 스토리지 장치(120)는 호스트 장치(110)로부터 수신된 추적 시작 요청에 응답하여, 제1 가상 머신(VM1)의 구동에 따라 발생한 더티 데이터를 비트맵 형태로 관리할 수 있다.
S110 단계에서, 호스트 장치(110)는 스토리지 장치(120)로부터 초기 매핑 정보(MP_0)를 읽을 수 있다. 예를 들어, 호스트 장치(110)는 스토리지 장치(120)로부터 초기 매핑 정보(MP_0)를 읽기 위한 커맨드 또는 쿼리 요청을 스토리지 장치(120)로 전송할 수 있다. 스토리지 장치(120)는 호스트 장치(110)로부터 수신된 커맨드 또는 쿼리 요청에 응답하여, 초기 매핑 정보(MP_0)를 호스트 장치(110)로 전송할 수 있다. 일 실시 예에서, 초기 매핑 정보(MP_0)는 소스 가상 머신인 제1 가상 머신(VM1)에 의해 관리되는 데이터(즉, 마이그레이션될 데이터) 전체에 대한 매핑 정보를 가리킬 수 있다. 즉, 호스트 장치(110)는 초기 매핑 정보(MP_0)를 기반으로, 제1 네임스페이스(NS1)로부터 제2 네임스페이스(NS2)로 마이그레이션될 데이터(이하에서, "소스 데이터"라 칭한다.)를 판별할 수 있다.
S120 단계에서, 호스트 장치(110)는 스토리지 장치(120)의 제1 네임스페이스(NS1)에 저장된 초기 소스 데이터(DT_0)를 제2 네임스페이스(NS2)로 마이그레이션시킬 수 있다. 예를 들어, 호스트 장치(110)는 스토리지 장치(120)로 제1 네임스페이스(NS1)에 저장된 초기 소스 데이터(DT_0)를 읽기 위한 읽기 커맨드를 스토리지 장치(120)로 전송한다. 스토리지 장치(120)는 읽기 커맨드에 응답하여, 제1 네임스페이스(NS1)에 저장된 초기 소스 데이터(DT_0)를 호스트 장치(110)로 전송한다. 호스트 장치(110)는 초기 소스 데이터(DT_0)를 제2 네임스페이스(NS2)에 저장하기 위한 쓰기 커맨드 및 초기 소스 데이터(DT_0)를 스토리지 장치(120)로 전송한다. 스토리지 장치(120)는 쓰기 커맨드에 응답하여 초기 소스 데이터(DT_0)를 제2 네임 스페이스(NS2)에 저장한다.
일 실시 예에서, 소스 데이터가 저장된 소스 네임스페이스 또는 소스 저장 공간이 소스 데이터가 저장될 목표 네임스페이스 또는 목표 저장 공간과 동일한 스토리지 장치에 존재하거나 또는 서로 직접 데이터 전송이 가능한 경우, 소스 데이터는 호스트 장치(110)를 경유하지 않고, 스토리지 장치 내부에서 자체적으로 마이그레이션 또는 스왑될 수 있다.
상술된 S120 단계의 동작을 통해, 호스트 장치(110)는 초기 소스 데이터(DT_0)를 제1 네임스페이스(NS1)로부터 제2 네임스페이스(NS2)로 마이그레이션할 수 있다. 이 때, S120 단계의 동작이 수행되는 동안, 제1 가상 머신(VM1)이 구동 중이므로, 초기 소스 데이터(DT_0)에 대한 더티 데이터가 발생할 수 있다. 즉, S120 단계의 동작에서는, 더티 데이터가 반영되지 않은 초기 소스 데이터(DT_0)가 제2 네임스페이스(NS2)로 마이그레이션되었으므로, 제2 네임스페이스(NS2)에 저장된 소스 데이터는 최신 버전이 아닐 것이다.
S130 단계에서, 호스트 장치(110) 및 스토리지 장치(120)는 더티 데이터를 제2 네임스페이스(NS2)로 마이그레이션하기 위한 반복 동작을 수행할 수 있다. 예를 들어, S130 단계의 동작은 S131 단계 내지 S138 단계의 동작들을 포함할 수 있다.
S131 단계에서, 변수(i)가 "1"로 설정된다. 일 실시 예에서, 변수(i)는 단순히, 더티 데이터 반영을 위한 반복 동작을 설명하기 위한 것이며, 특정한 기술적 의미를 갖는 것으로 의도되지 않는다.
S132 단계에서, 호스트 장치(110)는 제i 비트맵(BM_i)를 스토리지 장치(120)로부터 수신할 수 있다. 예를 들어, 호스트 장치(110)는 제i 비트맵(BM_i)를 읽기 위한 커맨드 또는 쿼리 요청을 스토리지 장치(120)로 전송할 수 있다. 스토리지 장치(120)는 커맨드 또는 쿼리 요청에 응답하여, 제i 비트맵(BM_i)를 호스트 장치(110)로 전송할 수 있다. 일 실시 예에서, 제i 비트맵(BM_i)는 소스 데이터에 대한 이전 마이그레이션 수행 중, 제1 가상 머신(VM1)의 구동에 의해 발생한 더티 데이터에 대한 정보를 포함할 수 있다.
일 실시 예에서, 소스 데이터의 크기가 1TB이고, 소스 데이터 및 비트맵 사이의 매핑 단위가 8KB인 경우, 비트맵의 크기는 128Gbits(즉, 16GB)일 수 있다. 즉, 비트맵의 단위 비트는 미리 정해진 크기의 소스 데이터에 대한 더티 유무를 표현할 수 있다. 호스트 장치(110)는 제i 비트맵(BM_i)을 기반으로, 소스 데이터 중 더티 데이터(즉, 최신 버전의 데이터)를 판별할 수 있다.
S133 단계에서, 호스트 장치(110)는 제i 소스 데이터(예를 들어, 더티 데이터)를 제1 네임스페이스(NS1)로부터 제2 네임스페이스(NS2)로 마이그레이션할 수 있다. S133 단계의 동작은 소스 데이터 전체가 아닌 제i 비트(BM_i)을 기반으로 판별된 더티 데이터가 마이그레이션된다는 점을 제외하면, S120 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S134 단계에서, 호스트 장치(110)는 제i 비트맵(BM_i)을 기반으로 더티 데이터의 개수가 임계치(TH)보다 작은지 판별할 수 있다. 예를 들어, 호스트 장치(110)는 제i 비트맵(BM_i)에 포함된 복수의 비트들 중 더티 데이터를 가리키는 비트들의 개수를 카운트할 수 있다. 더티 데이터를 가리키는 비트들의 개수가 임계치(TH)보다 큰 경우, 호스트 장치(110)는 더티 데이터의 개수가 임계치(TH)보다 큰 것으로 판별한다. 이 경우, S135 단계에서, 변수(i)는 1만큼 증가한다. 이후에, 호스트 장치(110) 및 스토리지 장치(120)는 S131 단계 내지 S134 단계의 동작들, 즉, S130 단계의 동작을 반복 수행할 수 있다.
일 실시 예에서, 스토리지 장치(120)는 상술된 반복 동작이 수행되는 동안, 소스 데이터에서 발생한 더티 데이터에 대한 정보를 비트맵(BM_i)으로서 관리한다. 예를 들어, 스토리지 장치(120)는 제1 비트맵(BM_1)을 전송한 시점부터, 제1 소스 데이터(즉, 제1 더티 데이터)에 대한 마이그레이션이 완료될 때까지의 구간동안, 소스 데이터에서 발생한 제2 더티 데이터에 대한 정보를 제2 비트맵(BM_2)으로서 관리한다. 이 후에, 스토리지 장치(120)는 제2 비트맵(BM_2)을 전송한 시점부터, 제2 소스 데이터(즉, 제2 더티 데이터)에 대한 마이그레이션이 완료될 때까지의 구간동안, 소스 데이터에서 발생한 제3 더티 데이터에 대한 정보를 제3 비트맵(BM_3)으로서 관리한다.
일 실시 예에서, 상술된 바와 같이, S130 단계의 동작이 반복 수행됨에 따라, 각 반복 동작에서 판별되는 더티 데이터의 개수가 감소할 수 있다. 예를 들어, 첫번째 반복 동작에서, 제1 비트맵(BM_1)은 초기 소스 데이터(DT_0)에 대한 마이그레이션 동안 발생한 제1 더티 데이터에 대한 정보를 포함할 수 있다. 두번째 반복 동작에서, 제2 비트맵(BM_2)은 첫번째 반복 동작에서의 제1 더티 데이터에 대한 마이그레이션 동안 발생한 제2 더티 데이터에 대한 정보를 포함할 수 있다. 이 때, 제1 더티 데이터의 크기는 초기 소스 데이터(DT_0)의 크기보다 상대적으로 작다. 즉, 첫번째 반복 동작에서의 마이그레이션 수행 시간은 초기 소스 데이터(DT_0)에 마이그레이션 수행 시간보다 짧을 것이다. 즉, 제2 더티 데이터는 제1 더티 데이터와 비교하여 상대적으로 짧은 시간동안 발생한 것이므로, 제2 더티 데이터의 크기는 제1 더티 데이터의 크기보다 작을 것이다.
이와 같이, 더티 데이터에 대한 마이그레이션이 반복 수행됨에 따라, 각 반복 동작에서 발생하는 더티 데이터의 크기는 감소할 수 있으며, 소정의 횟수만큼 반복 동작이 수행된 이후에, 더티 데이터의 개수가 임계치보다 작아질 수 있다. 이 경우, S136 단계에서, 호스트 장치(110)는 스토리지 장치(120)로 중단 요청(Pause)을 전송할 수 있다. 일 실시 예에서, 스토리지 장치(120)는 중단 요청(Pause)에 응답하여, 제1 네임스페이스(NS1)에 대한 액세스를 중단 또는 차단할 수 있다. 즉, 중단 요청(Pause) 이후에, 제1 가상 머신(VM1)에 대한 동작/구동이 중단될 수 있다.
S137 단계에서, 호스트 장치(110)는 제i+1 비트맵(BM_i+1)를 스토리지 장치(120)로부터 수신할 수 있다. 일 실시 예에서, 제i+1 비트맵(BM_i+1)은 이전 비트맵(즉, BM_i)이 호스트 장치(110)로 전송된 시점으로부터, 중단 요청(Pause)이 스토리지 장치(120)로 전송된 시점까지 발생한 더티 데이터에 대한 정보를 포함할 수 있다. 다른 구성은 S132 단계의 동작을 통해 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.
S138 단계에서, 호스트 장치(110)는 제i+1 소스 데이터(예를 들어, 마지막 더티 데이터)를 제1 네임스페이스(NS1)로부터 제2 네임스페이스(NS2)로 마이그레이션할 수 있다. S138 단계의 동작은 소스 데이터 전체가 아닌 제i+1 비트맵(BM_i+1)을 기반으로 판별된 더티 데이터가 마이그레이션된다는 점을 제외하면, S120 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S140 단계에서, 호스트 장치(110) 및 스토리지 장치(120)는 마이그레이션을 완료한다. 일 실시 예에서, 호스트 장치(110)는 마이그레이션 동작이 완료된 이후에, 제2 네임스페이스(NS2)로 마이그레이션된 최신 버전의 소스 데이터를 제2 가상 머신(VM2)을 통해 액세스할 수 있다. 또는 호스트 장치(110)는 최신 버전의 소스 데이터를 제2 네임스페이스(NS2)로부터 액세스할 수 있다.
도 4는 도 3의 순서도의 반복 동작에 따라, 스토리지 장치로부터 호스트 장치로 제공되는 비트맵을 설명하기 위한 도면이다. 도 1 내지 도 4를 참조하면, 제0 시점(t0)에서, 호스트 장치(110) 및 스토리지 장치(120)는 마이그레이션을 시작할 수 있다. 예를 들어, 제0 시점(t0)으로부터 제1 시점(t1)까지의 구간동안, 호스트 장치(110) 및 스토리지 장치(120)는 S100 단계, S120 단계, 및 S130 단계의 동작들을 수행할 수 있다. 일 실시 예에서, 스토리지 장치(120)는 제0 시점(t0)으로부터 제1 시점(t1)까지의 구간동안, 제1 가상 머신(VM1)에 의해 발생한 더티 데이터에 대한 정보를 제1 비트맵(BM_1)으로 관리할 수 있다.
제1 시점(t1)에서, 호스트 장치(110) 및 스토리지 장치(120)는 제1 반복 동작을 시작할 수 있다. 예를 들어, 제1 시점(t1)으로부터 제2 시점(t2)까지의 구간동안, 호스트 장치(110) 및 스토리지 장치(120)는 S130 단계의 동작(이 때, i=1임)을 수행할 수 있다. 이 때, 호스트 장치(110)는 제1 비트맵(BM_1)을 스토리지 장치(120)로부터 수신할 수 있다. 호스트 장치(110)는 제1 비트맵(BM_1)을 기반으로 더티 데이터에 대한 마이그레이션을 수행할 수 있다. 일 실시 예에서, 스토리지 장치(120)는 제1 시점(t1)으로부터 제2 시점(t2)까지의 구간동안, 제1 가상 머신(VM1)에 의해 발생한 더티 데이터에 대한 정보를 제2 비트맵(BM_2)으로 관리할 수 있다.
제2 시점(t2)에서, 호스트 장치(110) 및 스토리지 장치(120)는 제2 반복 동작을 시작할 수 있다. 예를 들어, 제2 시점(t2)으로부터 제3 시점(t3)까지의 구간동안, 호스트 장치(110) 및 스토리지 장치(120)는 S130 단계의 동작(이 때, i=2임)을 수행할 수 있다. 이 때, 호스트 장치(110)는 제2 비트맵(BM_2)을 스토리지 장치(120)로부터 수신할 수 있다. 호스트 장치(110)는 제2 비트맵(BM_2)을 기반으로 더티 데이터에 대한 마이그레이션을 수행할 수 있다. 일 실시 예에서, 스토리지 장치(120)는 제2 시점(t2)으로부터 제3 시점(t3)까지의 구간동안, 제1 가상 머신(VM1)에 의해 발생한 더티 데이터에 대한 정보를 제3 비트맵(BM_3)으로 관리할 수 있다.
제3 시점(t3)에서, 호스트 장치(110) 및 스토리지 장치(120)는 제3 반복 동작을 시작할 수 있다. 예를 들어, 제3 시점(t3)으로부터 제4 시점(t4)까지의 구간동안, 호스트 장치(110) 및 스토리지 장치(120)는 S130 단계의 동작(이 때, i=3임)을 수행할 수 있다. 이 때, 호스트 장치(110)는 제3 비트맵(BM_3)을 스토리지 장치(120)로부터 수신할 수 있다. 호스트 장치(110)는 제3 비트맵(BM_3)을 기반으로 더티 데이터에 대한 마이그레이션을 수행할 수 있다. 일 실시 예에서, 스토리지 장치(120)는 제3 시점(t3)으로부터 제4 시점(t4)까지의 구간동안, 제1 가상 머신(VM1)에 의해 발생한 더티 데이터에 대한 정보를 제4 비트맵(BM_4)으로 관리할 수 있다.
제4 시점(t4)에서, 호스트 장치(110) 및 스토리지 장치(120)는 제4 반복 동작을 시작할 수 있다. 일 실시 예에서, 제4 반복 동작은 도 3의 S136 단계, S137 단계, 및 S138 단계의 동작들을 포함할 수 있다.
상술된 바와 같이, 호스트 장치(110) 및 스토리지 장치(120)는 소스 데이터에 대한 마이그레이션에서 더티 데이터를 최신 버전으로 유지하기 위해, 반복 동작을 수행할 수 있다. 이 때, 도 4에 도시된 바와 같이, 더티 데이터는 반복 동작이 수행됨에 따라 감소할 수 있다.
일 실시 예에서, 앞서 설명된 바와 같이, 호스트 장치(110)는 스토리지 장치(120)로부터 제공되는 비트맵을 기반으로 더티 데이터를 판별할 수 있다. 이 때, 스토리지 장치(120)는 더티 데이터의 개수와 무관하게, 반복 동작마다 비트맵 전체(즉, 전체 크기의 비트맵)을 호스트 장치(110)로 전송한다. 즉, 반복 동작시, 비트맵의 전송으로 인한 동작 지연이 발생할 수 있다.
본 발명의 실시 예에서는, 더티 데이터에 대한 정보를 고정된 매핑 단위를 갖는 비트맵이 아닌 가변 크기를 갖는 더티 정보로 관리 및 전송함으로써, 비트맵 전송으로 인한 지연시간이 감소될 수 있다. 이하에서, 본 발명의 실시 예에 따른 스토리지 시스템의 동작 방법이 좀 더 상세하게 설명된다.
도 5는 도 1의 스토리지 시스템의 동작을 보여주는 순서도이다. 설명의 편의를 위해, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 1, 도 2, 및 도 5를 참조하면, 호스트 장치(110) 및 스토리지 장치(120)는 S200 단계, S210 단계, 및 S220 단계의 동작들을 수행할 수 있다. S200 단계, S210 단계, 및 S220 단계의 동작들은 도 3의 S100 단계, S110 단계, 및 S120 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
이후에, 호스트 장치(110) 및 스토리지 장치(120)는 S230 단계의 동작을 수행할 수 있다. S230 단계의 동작은 S231 단계 내지 S238 단계의 동작들을 포함할 수 있다. S230 단계의 동작 중, S232 단계 및 S237 단계의 동작들을 제외하면, 나머지 동작들은 도 3의 S130 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
일 실시 예에서, S232 단계에서, 호스트 장치(110)는 스토리지 장치(120)로부터 가변 단위를 갖는 제i 더티 정보(DINF_i)를 수신할 수 있다. 반면에, 도 3의 S132 단계에서, 호스트 장치(110)는 스토리지 장치(120)로부터 제i 비트맵(BM_i)을 수신한다.
이 때, 제i 비트맵(BM_i)은 소스 데이터에 대하여 고정된 매핑 단위를 가지며, 제i 비트맵(BM_i) 전체가 스토리지 장치(120)로부터 호스트 장치(110)로 전송된다. 반면에, 도 5의 S232 단계에서, 가변 단위를 갖는 제i 더티 정보(DINF_i)는 소스 데이터에 대하여 가변 가능한 매핑 단위를 갖는다. 이 경우, 제i 더티 정보(DINF_i)는 제i 비트맵(BM_i)의 크기보다 작을 수 있으며, 이에 따라, 더티 정보를 수신하기 위한 레이턴시가 감소될 수 있다. 일 실시 예에서, 제i 더티 정보(DINF_i)는 제i 비트맵(BM_i)을 기반으로 생성될 수 있으며, 앞서 설명된 바와 유사하게, 스토리지 장치(120)는 상술된 반복 동작이 수행되는 동안, 소스 데이터에서 발생한 더티 데이터에 대한 정보를 비트맵(BM_i)으로서 관리한다. 예를 들어, 스토리지 장치(120)는 제1 비트맵(BM_1)을 전송한 시점부터, 제1 소스 데이터(즉, 제1 더티 데이터)에 대한 마이그레이션이 완료될 때까지의 구간동안, 소스 데이터에서 발생한 제2 더티 데이터에 대한 정보를 제2 비트맵(BM_2)으로서 관리한다. 이 후에, 스토리지 장치(120)는 제2 비트맵(BM_2)을 전송한 시점부터, 제2 소스 데이터(즉, 제2 더티 데이터)에 대한 마이그레이션이 완료될 때까지의 구간동안, 소스 데이터에서 발생한 제3 더티 데이터에 대한 정보를 제3 비트맵(BM_3)으로서 관리한다. 일 실시 예에서, 스토리지 장치(120)는 더티 정보에 대한 쿼리 요청에 응답하여, 다음 더티 정보 생성을 위한 비트맵을 관리할 수 있다. S232 단계의 동작은 도 6 및 도 7을 참조하여 더욱 상세하게 설명된다.
S237 단계의 동작은 제i+1 더티 정보(DINF_i+1)를 수신한다는 점을 제외하면, S232 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
상술된 바와 같이, 마이그레이션 또는 실시간 마이그레이션에서, 더티 데이터를 위한 판별하기 위한 정보가, 가변 단위를 갖는 더티 정보로서 송수신됨으로써, 전체적인 마이그레이션 수행 시간이 단축될 수 있다.
도 6은 도 5의 S232 단계의 동작, 즉, 가변 단위를 갖는 더티 데이터를 송수신하는 동작을 보여주는 순서도이다. 도 1, 도 2, 도 5, 및 도 6을 참조하면, S232 단계의 동작은 S232-1 단계 내지 S232-10 단계의 동작들을 포함할 수 있다.
이하에서, G[m]의 용어가 사용된다. G[m]은 더티 정보(DINF)에 포함된 복수의 비트들 각각에 대응하는 또는 매핑된 소스 데이터의 크기 또는 비트맵의 크기를 의미할 수 있다. 즉, G[m]의 매핑 단위를 갖는 더티 정보(DINF)에 포함된 1개의 비트는 m-bytes의 소스 데이터에 대한 더티 정보(즉, 더티 데이터인지 아닌지)를 가리킬 수 있다. (단, m은 양의 정수임.) 또는 즉, G[m]의 단위를 갖는 더티 정보(DINF)에 포함된 1개의 비트는 비트맵(BM)에 포함된 비트들 중 m개의 비트들과 대응될 수 있다. 이하에서는, 설명의 편의를 위해, G[m]은 더티 정보(DINF)의 하나의 비트에 대응하는 비트맵의 비트들의 개수를 의미하는 것으로 가정한다. 즉, G[8]인 경우, 더티 정보(DINF)의 하나의 비트에 비트맵(BM)의 8개의 비트들에 대응하고, G[1]인 경우, 더티 정보(DINF)의 하나의 비트에 비트맵(BM)의 1개의 비트들에 대응할 수 있다.
S232-1 단계에서, 호스트 장치(110)는 G[m]의 단위를 갖는 제i 서브 더티 정보(DINF_i_G[m])에 대한 쿼리 요청을 스토리지 장치(120)로 전송할 수 있다. 일 실시 예에서, m은 양의 정수이다.
S232-2 단계에서, 스토리지 장치(120)는 호스트 장치(110)로부터 수신된 쿼리 요청에 응답하여, G[m]의 단위를 갖는 제i 더티 정보(DINF_i_G[m])를 생성할 수 있다. 예를 들어, 설명의 편의를 위해, 스토리지 장치(120)에서 관리되는 비트맵(BM_i)은 64 비트인 것으로 가정한다. 이 때, 호스트 장치(110)로부터 수신된 쿼리 요청이 G[8]의 단위를 갖는 제i 서브 더티 정보(IDNF_i, G[m])에 대한 요청인 경우, 스토리지 장치(120)는 64 비트의 제i 비트맵(BM_i)을 기반으로, 8비트의 제i 서브 더티 정보(DINF_i_G[8])을 생성할 수 있다. 이 때, 8비트의 제i 서브 더티 정보(DINF_i_G[8])의 하나의 비트는 제i 비트맵(BM_i)의 8개의 비트들에 대응할 수 있다. 이는 도 7을 참조하여 더욱 상세하게 설명된다.
S232-3 단계에서, 스토리지 장치(120)는 G[m]의 단위를 갖는 제i 서브 더티 정보(DINF_i_G[m])를 호스트 장치(110)로 전송할 수 있다.
S232-4 단계에서, 호스트 장치(110)는 제i 서브 더티 정보(DINF_i_G[m])를 기반으로 인덱스 정보(IND#)를 판별할 수 있다. 예를 들어, 8비트의 제i 서브 더티 정보(DINF_i_G[8])가 [01000011]이며, "1"의 비트 값은 더티(dirty)임을 가리키는 것으로 가정한다. 이 경우, 호스트 장치(110)는 "1"의 비트 값에 대응하는 인덱스 정보(IND#)를 판별할 수 있다.
S232-5 단계에서, 호스트 장치(110)는 G[m-k]의 단위를 갖는 제i 서브 더티 정보(DINF_i_G[m-k])를 요청하기 위한 쿼리 요청을 스토리지 장치(120)로 전송할 수 있다. 일 실시 예에서, S232-5 단계에서 전송되는 쿼리 요청은 S232-4 단계에서 판별된 인덱스 정보를 포함할 수 있다.
S232-6 단계에서, 스토리지 장치(120)는 G[m-k]의 단위를 갖는 제i 서브 더티 정보(DINF_i_G[m-k])를 생성할 수 있다. 일 실시 예에서, S232-6 단계의 동작은 단위(즉, G[m-k])가 다르다는 점을 제외하면, S232-2 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다. 일 실시 예에서, G[m-k]의 단위를 갖는 제i 서브 더티 정보(DINF_i_G[m-k])의 크기(size)는 G[m]의 단위를 갖는 제i 서브 더티 정보(DINF_i_G[m])의 크기(size)보다 클 것이다.
S232-7 단계에서, 스토리지 장치(120)는 G[m-k]의 단위를 갖는 제i 서브 더티 정보(DINF_i_G[m-k]) 중 적어도 일부를 호스트 장치(110)로 전송할 수 있다. 예를 들어, 스토리지 장치(120)는 G[m-k]의 단위를 갖는 제i 서브 더티 정보(DINF_i_G[m-k]) 중 인덱스 정보(IND#)(S232-5 단계에서 수신됨)에 대응하는 정보를 호스트 장치(110)로 전송할 수 있다.
S232-8 단계에서, 호스트 장치(110)는 m-k의 값(즉, 서브 더티 정보에 대한 매핑 단위)가 최소인지 판별한다. m-k의 값(즉, 서브 더티 정보에 대한 매핑 단위)가 최소가 아닌 경우, S232-9 단계에서, 호스트 장치(110)는 G[m-k]의 단위를 갖는 제i 서브 더티 정보(DINF_i_G[m-k])를 기반으로 인덱스 정보(IND#)를 판별할 수 있다. 이후에, k의 값이 증가한다. 이후에, 호스트 장치(110) 및 스토리지 장치(120)는 S232-5 단계 내지 S232-8 단계의 동작들을 반복 수행한다.
m-k의 값(즉, 서브 더티 정보에 대한 매핑 단위)가 최소인 경우(예를 들어, m-k가 "1"인 경우), S232-10 단계에서, 호스트 장치(110)는 수신된 복수의 서브 더티 정보를 기반으로 더티 데이터를 판별할 수 있다. 이후에, 호스트 장치(110)는 더티 데이터에 대한 마이그레이션(도 5의 S233 단계의 동작)을 수행할 수 있다.
일 실시 예에서, k의 값은 다양한 방식에 따라 제어될 수 있다. 예를 들어, k의 값은 미리 정해진 크기 또는 순서에 따라 결정될 수 있다. 이 경우, 서브 더티 정보의 단위는 순차적으로 감소할 수 있다. 또는, k의 값은 판별된 인덱스 정보에 따라 결정될 수 있다.
예를 들어, S232-9에 의해 결정된 인덱스 정보의 개수가 특정 개수 이하인 경우, k의 값은 순차적으로 또는 미리 정해진 순서로 증가할 수 있다. 반면에, S232-9에 의해 결정된 인덱스 정보의 개수가 특정 개수 이상인 경우, k의 값은 상대적으로 크게 증가하거나 또는 m-k가 "1"이 되도록 증가할 수 있다. 인덱스 정보의 개수가 특정 개수보다 많다는 것은 가변 단위를 갖는 서브 더티 정보의 크기가 상대적으로 커질 수 있음을 의미한다. 이에 따라, k의 값을 크게 증가시킴으로써, G[1]의 단위를 갖는 서브 더티 정보가 바로 수신될 수 있으며, 이 경우, k의 값을 순차적으로 증가시키는 것보다 전체적인 서브 더티 정보의 크기를 감축시킬 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 호스트 장치(110)는 더티 데이터에 대한 정보를 풀-사이즈의 비트맵(BM) 대신에, 가변 단위를 갖는 서브 더티 정보로서 수신함으로써, 더티 데이터를 위한 정보의 크기가 감소될 수 있다. 이 경우, 더티 데이터를 위한 정보를 송수신하기 위한 시간 또는 레이턴시가 감소될 수 있다.
도 7은 도 6의 순서도에 따른 동작(즉, 즉, 가변 단위를 갖는 더티 데이터를 송수신하는 동작)을 보다 상세하게 설명하기 위한 도면이다. 설명의 편의를 위해, 도 4를 참조하여 설명된 제3 반복 동작 시작시, 호스트 장치(110)가 스토리지 장치(120)로부터 서브 더티 정보를 수신하는 실시 예가 설명된다. 또한, 설명의 편의를 위해, 제3 비트맵(BM_3)은 8×8의 데이터 구조(즉, 총 64비트)를 갖는 것으로 가정한다.
설명의 편의를 위해, 이하에서, RaCb 비트의 용어가 사용된다. RaCb 비트는 비트맵(BM)에서 제a 행 및 제b 열에 위치한 비트를 가리킨다. RaCb 비트가 마킹된 것은 RaCb 비트에 대응하는 소스 데이터가 더티 데이터임을 가리킬 수 있다.
도 1, 도2, 도 5, 도 6, 및 도 7을 참조하면, 제3 반복 동작이 시작되는 제3 시점(t3)에서, 제3 비트맵(BM_3)은 도 7에 도시된 바와 같은 구조를 가질 수 있다. 예를 들어, 제3 비트맵(BM_3)에서, R2C2 비트, R2C3 비트, R7C7 비트, 및 R8C6 비트가 마킹될 수 있다. 즉, 도 4를 참조하여 설명된 제3 반복 동작시, R2C2 비트, R2C3 비트, R7C7 비트, 및 R8C6 비트에 대응하는 또는 매핑된 소스 데이터가 제1 네임스페이스(NS1)로부터 제2 네임스페이스(NS2)로 마이그레이션될 수 있다.
일 실시 예에서, 도 3 및 도 4를 참조하여 설명된 실시 예에서, 제3 반복 동작이 시작되는 제3 시점(t3)에서, 제3 비트맵(BM_3)(즉, 64비트)이 호스트 장치(110)로 전송될 수 있다. 반면에, 도 5 내지 도 7을 참조하여 설명된 실시 예에서, 제3 반복 동작이 시작되는 제3 시점(t3)에서, 가변 단위를 갖는 서브 더티 정보(예를 들어, DINF_3_G[8], DINF_3_G[4], DINF_3_G[1])가 호스트 장치(110)로 전송될 수 있다. 이 경우, 호스트 장치(110)로 전송되는 정보 또는 데이터의 크기가 감소된다.
예를 들어, 호스트 장치(110)는 DINF_3_G[8]을 수신하기 위한 쿼리 요청을 스토리지 장치(120)로 전송할 수 있다. 스토리지 장치(120)는 쿼리 요청에 응답하여, DINF_3_G[8]을 생성하고, DINF_3_G[8]을 호스트 장치(110)로 전송할 수 있다. 이 때, 스토리지 장치(120)는 제3 비트맵(BM_3)을 기반으로, 8비트로 구성된 DINF_3_G[8]을 생성할 수 있다. DINF_3_G[8]의 각 비트는 각 비트는 제3 비트맵(BM_3)의 8개의 비트들과 대응될 수 있다.
좀 더 상세한 예로서, DINF_3_G[8]의 제1 비트는 제3 비트맵(BM_3)의 제1 행(R1)의 8개 비트들과 대응되고, DINF_3_G[8]의 제2 비트는 제3 비트맵(BM_3)의 제2 행(R2)의 8개 비트들과 대응되고, DINF_3_G[8]의 제3 비트는 제3 비트맵(BM_3)의 제3 행(R3)의 8개 비트들과 대응되고, DINF_3_G[8]의 제4 비트는 제3 비트맵(BM_3)의 제4 행(R4)의 8개 비트들과 대응되고, DINF_3_G[8]의 제5 비트는 제3 비트맵(BM_3)의 제5 행(R5)의 8개 비트들과 대응되고, DINF_3_G[8]의 제6 비트는 제3 비트맵(BM_3)의 제6 행(R6)의 8개 비트들과 대응되고, DINF_3_G[8]의 제7 비트는 제3 비트맵(BM_3)의 제7 행(R7)의 8개 비트들과 대응되고, DINF_3_G[8]의 제8 비트는 제3 비트맵(BM_3)의 제8 행(R8)의 8개 비트들과 대응된다. 이 경우, 제3 비트맵(BM_3)에서, R2C2 비트, R2C3 비트, R7C7 비트, 및 R8C6 비트가 마킹되어 있으므로, DINF_3_G[8]의 제2, 제7, 및 제8 비트들이 더티 데이터로서 마킹될 것이다.
호스트 장치(110)는 DINF_3_G[8]의 8비트의 정보를 기반으로, 인덱스 정보를 판별할 수 있다. 예를 들어, 호스트 장치(110)는 DINF_3_G[8]의 8비트들 중 더티 데이터로서 마킹된 비트들의 인덱스 정보를 판별할 수 있다. 도 7의 실시 예에서, DINF_3_G[8]의 8비트들에 기반된 인덱스 정보는 DINF_3_G[8]의 제2, 제7, 및 제8 비트들에 각각 대응하는 IND2_G[8], IND7_G[8], 및 IND8_G[8]일 수 있다.
호스트 장치(110)는 스토리지 장치(120)로부터, G[8]보다 낮은 단위를 갖는 DINF_3_G[4]를 수신하기 위한 쿼리 요청을 스토리지 장치로 전송할 수 있다. 스토리지 장치(120)는 쿼리 요청에 응답하여, 제3 비트맵(BM_3)을 기반으로, 16비트로 구성된 DINF_3_G[4]를 생성할 수 있다. DINF_3_G[4]의 각 비트는 제3 비트맵(BM_3)의 4개의 비트들과 대응될 수 있다.
좀 더 상세한 예로서, DINF_3_G[4]의 제11 비트는 제3 비트맵(BM_3)의 제1 행(R1)의 제1 내지 제4 열들(C1~C4)의 4개 비트들과 대응되고, DINF_3_G[4]의 제21 비트는 제3 비트맵(BM_3)의 제2 행(R2)의 제1 내지 제4 열들(C1~C4)의 4개 비트들과 대응되고, DINF_3_G[4]의 제31 비트는 제3 비트맵(BM_3)의 제3 행(R3)의 제1 내지 제4 열들(C1~C4)의 4개 비트들과 대응되고, DINF_3_G[4]의 제41 비트는 제3 비트맵(BM_3)의 제4 행(R4)의 제1 내지 제4 열들(C1~C4)의 4개 비트들과 대응되고, DINF_3_G[4]의 제51 비트는 제3 비트맵(BM_3)의 제5 행(R5)의 제1 내지 제4 열들(C1~C4)의 4개 비트들과 대응되고, DINF_3_G[4]의 제61 비트는 제3 비트맵(BM_3)의 제6 행(R6)의 제1 내지 제4 열들(C1~C4)의 4개 비트들과 대응되고, DINF_3_G[4]의 제71 비트는 제3 비트맵(BM_3)의 제7 행(R7)의 제1 내지 제4 열들(C1~C4)의 4개 비트들과 대응되고, DINF_3_G[4]의 제81 비트는 제3 비트맵(BM_3)의 제8 행(R8)의 제1 내지 제4 열들(C1~C4)의 4개 비트들과 대응된다. DINF_3_G[4]의 제12 비트는 제3 비트맵(BM_3)의 제1 행(R1)의 제5 내지 제8 열들(C5~C8)의 4개 비트들과 대응되고, DINF_3_G[4]의 제22 비트는 제3 비트맵(BM_3)의 제2 행(R2)의 제5 내지 제8 열들(C5~C8)의 4개 비트들과 대응되고, DINF_3_G[4]의 제32 비트는 제3 비트맵(BM_3)의 제3 행(R3)의 제5 내지 제8 열들(C5~C8)의 4개 비트들과 대응되고, DINF_3_G[4]의 제42 비트는 제3 비트맵(BM_3)의 제4 행(R4)의 제5 내지 제8 열들(C5~C8)의 4개 비트들과 대응되고, DINF_3_G[4]의 제52 비트는 제3 비트맵(BM_3)의 제5 행(R5)의 제5 내지 제8 열들(C5~C8)의 4개 비트들과 대응되고, DINF_3_G[4]의 제62 비트는 제3 비트맵(BM_3)의 제6 행(R6)의 제5 내지 제8 열들(C5~C8)의 4개 비트들과 대응되고, DINF_3_G[4]의 제72 비트는 제3 비트맵(BM_3)의 제7 행(R7)의 제5 내지 제8 열들(C5~C8)의 4개 비트들과 대응되고, DINF_3_G[4]의 제82 비트는 제3 비트맵(BM_3)의 제8 행(R8)의 제5 내지 제8 열들(C5~C8)의 4개 비트들과 대응된다. 이 경우, 제3 비트맵(BM_3)에서, R2C2 비트, R2C3 비트, R7C7 비트, 및 R8C6 비트가 마킹되어 있으므로, DINF_3_G[4]의 제21, 제72, 및 제82 비트들이 더티 데이터로서 마킹될 것이다.
스토리지 장치(210)는 DINF_3_G[4] 전체를 호스트 장치(110)로 전송하는 대신에, 호스트 장치(110)로부터 수신된 인덱스 정보를 기반으로 DINF_3_G[4] 중 일부를 호스트 장치(110)로 전송할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 호스트 장치(110)는 DINF_3_G[8]의 8비트의 정보를 기반으로, IND2_G[8], IND7_G[8], 및 IND8_G[8]의 인덱스 정보를 판별할 수 있다. 호스트 장치(110)는 판별된 인덱스 정보를, DINF_3_G[4]를 수신하기 위한 쿼리 요청과 함께 스토리지 장치(210)로 전송한다.
이 경우, 스토리지 장치(210)는 생성된 DINF_3_G[4] 중 수신된 인덱스 정보(IND2_G[8], IND7_G[8], IND8_G[8])에 대응하는 정보 또는 데이터만 호스트 장치(110)로 전송할 수 있다.
일 실시 예에서, 서브 더티 정보 중 인덱스 정보에 대응하는 정보 또는 데이터는 비트맵의 비트들 중 인덱스 정보와 관련된 비트들에 대응하는 정보 또는 데이터를 가리킬 수 있다. 예를 들어, IND2_G[8]에 대한 비트는 제3 비트맵(BM_3) 중 제2 행(R2)의 비트들에 대응한다. 이 때, DINF_3_G[4]의 비트들 중, 제2 행(R2)의 비트들에 대응하는 비트들은 제21 및 제22 비트들일 것이다. 마찬가지로, IND7_G[8]에 대한 비트는 제3 비트맵(BM_3) 중 제7 행(R7)의 비트들에 대응하고, 이 때, DINF_3_G[4]의 비트들 중, 제7 행(R7)의 비트들에 대응하는 비트들은 제71 및 제72 비트들이다. IND8_G[8]에 대한 비트는 제3 비트맵(BM_3) 중 제8 행(R8)의 비트들에 대응하고, 이 때, DINF_3_G[4]의 비트들 중, 제8 행(R8)의 비트들에 대응하는 비트들은 제81 및 제82 비트들이다.
이 경우, 스토리지 장치(210)는 수신된 인덱스 정보((IND2_G[8], IND7_G[8], IND8_G[8])를 기반으로, DINF_3_G[4] 중 일부 비트들(예를 들어, 제21, 제22, 제71, 제72, 제81, 및 제82 비트들)만 호스트 장치(110)로 전송할 수 있다.
이 후에, 호스트 장치(110)는 DINF_3_G[4] 중 일부 비트들(예를 들어, 제21, 제22, 제71, 제72, 제81, 및 제82 비트들)을 기반으로 인덱스 정보를 다시 판별할 수 있다. 예를 들어, 앞서 설명된 바와 같이 호스트 장치(110)는 수신된 비트들 중 더티 데이터로서 마킹된 비트들의 인덱스 정보를 판별할 수 있다. 도 7의 실시 예에서, 호스트 장치(110)는 DINF_3_G[4] 중 일부 비트들(예를 들어, 제21, 제22, 제71, 제72, 제81, 및 제82 비트들)을 기반으로, IND21_G[4], IND72_G[4], 및 IND82_G[4]의 인덱스 정보를 판별할 수 있다.
이후에, 호스트 장치(110)는 스토리지 장치(120)로부터, G[4]보다 낮은 단위를 갖는 DINF_3_G[1]를 수신하기 위한 쿼리 요청을 스토리지 장치로 전송할 수 있다. 이 때, 서브 더티 정보의 단위가 "1"(즉, G[1]임)이므로, 스토리지 장치(120)는 쿼리 요청에 응답하여, 제3 비트맵(BM_3)의 일부를 DINF_3_G[1]의 서브 더티 정보로서 호스트 장치(110)로 전송할 수 있다.
예를 들어, 앞서 설명된 바와 같이, 호스트 장치(110)는 DINF_3_G[4]의 일부 비트들을 기반으로, IND21_G[4], IND72_G[4], 및 IND82_G[4]의 인덱스 정보를 판별할 수 있다. 호스트 장치(110)는 판별된 인덱스 정보를, DINF_3_G[1]를 수신하기 위한 쿼리 요청과 함께 스토리지 장치(120)로 전송한다.
이 경우, 스토리지 장치(120)는 제3 비트맵(BM_3) 중 수신된 인덱스 정보(IND21_G[4], IND72_G[4], IND82_G[4])에 대응하는 비트들을 호스트 장치(110)로 전송할 수 있다. 좀 더 상세한 예로서, IND21_G[4]에 대한 비트는 제3 비트맵(BM_3) 중 제2 행(R2)의 제1 내지 제4 열들(C1~C4)의 비트들에 대응한다. IND72_G[4]에 대한 비트는 제3 비트맵(BM_3) 중 제7 행(R7)의 제5 내지 제8 열들(C5~C8)의 비트들에 대응한다. IND82_G[4]에 대한 비트는 제3 비트맵(BM_3) 중 제8행(R8)의 제5 내지 제8 열들(C5~C8)의 비트들에 대응한다. 스토리지 장치(120)는 각 인덱스 정보(IND21_G[4], IND72_G[4], IND82_G[4])에 대응하는 비트들을 호스트 장치(110)로 전송한다. 호스트 장치(110)는 수신된 더티 정보(DINF_3_G[8], DINF_3_G[4], DINF_3_G[1])를 기반으로 제3 비트맵(BM_3)의 R2C2 비트, R2C3 비트, R7C7 비트, 및 R8C6 비트에 대응하는 소스 데이터가 더티 데이터임을 판별할 수 있다.
일 실시 예에서, 더티 데이터에 대한 정보를 제공하기 위해, 전체 비트맵을 호스트 장치(110)로 전송하는 것보다, 상술된 바와 같이, 가변 단위를 갖는 서브 더티 정보를 전송하는 것이 전송되는 데이터 크기를 감소시킬 수 있다. 예를 들어, 도 7을 참조하여 설명된 바와 같이, 제3 비트맵(BM_3)은 8×8의 64비트의 구조를 갖는다. 반면에, 가변 단위를 갖는 서브 더티 정보가 전송되는 경우, DINF_3_G[8]의 8비트, DINF_3_G[4]의 6비트, 및 DINF_3_G[1]의 12비트, 총 36비트의 정보만 호스트 장치(110)로 전송된다. 즉, 본 발명의 실시 예에 따라, 가변 단위를 갖는 서브 더티 정보를 전송하는 것은 전체 비트맵을 전송하는 것보다 전송되는 전체 데이터 크기가 감소되고, 이에 따라 전체 마이그레이션 시간 또는 레이턴시가 감소될 수 있다.
도 8은 도 1의 더티 관리자의 동작을 설명하기 위한 개념도이다. 도 1 및 도 8을 참조하면, 더티 관리자(121a)는 스토리지 시스템(100)의 실시간 마이그레이션 동안, 소스 데이터에 대한 더티 데이터를 관리 또는 마킹하도록 구성될 수 있다. 예를 들어, 더티 관리자(121a)는 스토리지 시스템(100)의 실시간 마이그레이션 동안, 소스 데이터에 대하여 더티 데이터가 발생한 경우, 비트맵(BM)에서 대응하는 비트를 마킹하도록 구성될 수 있다. 일 실시 예에서, 비트맵(BM)은 반복 동작이 시작될때 마다 리셋될 수 있다. 또는, 비트맵(BM)은 복수 개로 구현될 수 있으며, 반복 동작이 시작될 때마다, 복수의 비트맵들(BM)이 서로 스왑되고 리셋될 수 있다.
더티 관리자(121a)는 호스트 장치(110)로부터 수신된 쿼리 요청에 응답하여, 서브 더티 정보를 생성하도록 구성될 수 있다. 예를 들어, 더티 관리자(121a)는 복수의 AND 연산기들을 포함할 수 있다. 복수의 AND 연산기들은 비트맵(BM)의 복수의 비트들에 대하여, AND 연산을 수행할 수 있다. 복수의 AND 연산기들의 출력은 서브 더티 정보로서 사용될 수 있다.
좀 더 상세한 예로서, 비트맵(BM)의 모든 비트들은 제1 AND 스테이지로 입력된다. 제1 AND 스테이지의 입력은 G[1]의 단위를 갖는 서브 더티 정보(DINF_G[1])로서 사용된다. 제1 AND 스테이지의 출력은 G[4]의 단위를 갖는 서브 더티 정보(DINF_G[4])로서 사용된다. 제1 AND 스테이지의 출력은 제2 AND 스테이지로 입력된다. 제2 AND 스테이지의 출력은 G[8]의 단위를 갖는 서브 더티 정보(DINF_G[8])로서 사용된다. 마찬가지로, 제2 AND 스테이지의 출력은 제3 AND 스테이지로 입력되고, 제3 AND 스테이지의 출력은 G[16]의 단위를 갖는 서브 더티 정보(DINF_G[16])로서 사용된다.
일 실시 예에서, 복수의 AND 스테이지의 출력들은 호스트 장치(110)의 쿼리 요청에 따라 선택될 수 있다. 또한, 복수의 AND 스테이지 출력들은 호스트 장치(110)로부터 수신된 인덱스 정보에 따라 선택적으로 호스트 장치(110)로 전송될 수 있다. 이에 대한 상세한 동작은 앞서 설명된 구성 및 동작들을 통해 구현 가능하므로, 이에 대한 상세한 설명은 생략된다. 일 실시 예에서, 상술된 구성은 일부 예시이며, 다양한 구현 방식에 따라 서브 더티 정보의 단위 또는 생성 방법은 다양하게 변형될 수 있다.
도 9는 본 발명의 실시 예에 따른 스토리지 시스템의 동작을 설명하기 위한 타이밍도이다. 본 발명의 실시 예에 따른 효과를 명확하게 설명하기 위해, 도 3 및 도 4를 참조하여 설명된 동작 및 도 5 내지 도 8을 참조하여 설명된 동작이 서로 비교된다.
도 1, 도 3, 도 5, 및 도 9를 참조하면, 도 9의 제1 타이밍도(TD1)는 도 3 및 도 4를 참조하여 설명된 동작에 따른 예시를 보여주고, 도 9의 제2 타이밍도(TD2)는 도 5 내지 도 8을 참조하여 설명된 동작에 따른 예시를 보여준다.
먼저, 제1 타이밍도(TD1)에 도시된 바와 같이, 스토리지 시스템(100)은 t0에 실시간 마이그레이션을 시작할 수 있다. 예를 들어, t0~t1까지의 구간 동안, 호스트 장치(110)는 스토리지 장치(120)로부터 초기 매핑 정보(MP_0)를 수신할 수 있다. 이후에, t1~t2까지의 구간 동안, 스토리지 시스템(100)은 제1 네임스페이스(NS1)에 저장된 소스 데이터를 제2 네임스페이스(NS2)로 마이그레이션할 수 있다.
t2~ta3의 구간에서, 호스트 장치(110)는 더티 데이터에 대한 정보를 스토리지 장치(120)로부터 수신할 수 있다. 이 때, 도 3 및 도 4를 참조하여 설명된 바와 같이, 고정된 단위를 갖는 비트맵이 더티 데이터에 대한 정보로서 제공되는 경우, 비트맵 전송은 ta3에 완료될 것이다.
이후에, ta3~ta4의 구간 동안, 더티 데이터에 대한 제1 반복 동작(MGR1)이 수행될 수 있다. 일 실시 예에서, 제1 반복 동작(MGR1)에서 마이그레이션되는 더티 데이터는 t0~t2의 구간동안 발생한 더티 데이터일 수 있다.
이후에, ta4~ta5의 구간 동안, 비트맵 전송이 수행된다. 이후에, ta5~ta6 구간 동안, 더티 데이터에 대한 제2 반복 동작이 수행될 수 있다. 일 실시 예에서, 제2 반복 동작(MGR2)에서 마이그레이션되는 더티 데이터는 t2~ta4의 구간동안 발생한 더티 데이터일 수 있다.
이후에, ta6~ta7의 구간 동안, 비트맵 전송이 수행된다. 이후에, ta7~ta8 구간 동안, 더티 데이터에 대한 제3 반복 동작이 수행될 수 있다. 일 실시 예에서, 제3 반복 동작(MGR3)에서 마이그레이션되는 더티 데이터는 ta4~ta6의 구간동안 발생한 더티 데이터일 수 있다.
이후에, ta8~ta9의 구간 동안, 비트맵 전송이 수행된다. 이후에, ta9~ta10 구간 동안, 더티 데이터에 대한 제4 반복 동작이 수행될 수 있다. 일 실시 예에서, 제4 반복 동작(MGR4)에서 마이그레이션되는 더티 데이터는 ta6~ta8의 구간동안 발생한 더티 데이터일 수 있다.
다음으로, 제2 타이밍도(TD2)에 도시된 바와 같이, 스토리지 시스템(100)은 t0에 실시간 마이그레이션을 시작할 수 있다. 예를 들어, t0~t1까지의 구간 동안, 호스트 장치(110)는 스토리지 장치(120)로부터 초기 매핑 정보(MP_0)를 수신할 수 있다. 이후에, t1~t2의 구간 동안, 스토리지 시스템(100)은 제1 네임스페이스(NS1)에 저장된 소스 데이터를 제2 네임스페이스(NS2)로 마이그레이션할 수 있다.
이후에, t2~tb3의 구간 동안, 스토리지 시스템(100)은 가변 단위를 갖는 서브 더티 정보에 대한 전송을 수행할 수 있다. 예를 들어, t2~tb3의 구간 동안, 도 5 내지 도 8을 참조하여 설명된 방법을 기반으로, 호스트 장치(110)는 스토리지 장치(120)로부터 가변 단위를 갖는 서브 더티 정보를 수신할 수 있다.
일 실시 예에서, 가변 단위를 갖는 서브 더티 정보가 전송되는 t2~tb3의 구간은 전체 비트맵이 전송되는 t2~ta3의 구간보다 짧을 수 있다. 이에 대한 이유 및 동작 원리는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
이후에, tb3~tb4의 구간 동안, 더티 데이터에 대한 제1 반복 동작(MGR1)이 수행될 수 있다. 일 실시 예에서, 제1 반복 동작(MGR1)에서 마이그레이션되는 더티 데이터는 t0~t2의 구간동안 발생한 더티 데이터일 수 있다.
이후에, tb4~tb5의 구간 동안, 가변 단위를 갖는 서브 더티 정보가 스토리지 장치(120)로부터 호스트 장치(110)로 전송될 수 있다. 이후에, tb5~tb6의 구간동안, 제2 반복 동작(MGR2')이 수행될 수 있다. 일 실시 예에서, 제2 반복 동작(MGR2)에서 마이그레이션되는 더티 데이터는 t2~tb4의 구간동안 발생한 더티 데이터일 수 있다.
이후에, tb6~tb7의 구간 동안, 가변 단위를 갖는 서브 더티 정보가 스토리지 장치(120)로부터 호스트 장치(110)로 전송될 수 있다. 이후에, tb7~tb8의 구간동안, 제3 반복 동작(MGR3')이 수행될 수 있다. 일 실시 예에서, 제3 반복 동작(MGR3)에서 마이그레이션되는 더티 데이터는 tb4~tb6의 구간동안 발생한 더티 데이터일 수 있다.
이후에, tb8~tb9의 구간 동안, 가변 단위를 갖는 서브 더티 정보가 스토리지 장치(120)로부터 호스트 장치(110)로 전송될 수 있다. 이후에, tb9~tb10의 구간동안, 제4 반복 동작(MGR4')이 수행될 수 있다. 일 실시 예에서, 제4 반복 동작(MGR4)에서 마이그레이션되는 더티 데이터는 tb6~tb8의 구간동안 발생한 더티 데이터일 수 있다.
상술된 바와 같이, 본 발명의 실시 예(예를 들어, 제2 타이밍도(TD2))에 따르면, 전체적인 마이그레이션 시간 또는 레이턴시가 단축될 수 있다. 예를 들어, 앞서 설명된 바와 같이, 반복 동작이 반복 수행됨에 따라, 더티 데이터의 개수는 감소한다. 이 때, 제1 타이밍도(TD1)에서는, 서브 더티 정보를 제공하기 위한 구간이 더티 데이터의 개수 감소와 무관하게 일정하다. 반면에, 제2 타이밍도(TD2)에서는, 더티 데이터의 개수가 감소함(즉, 반복 동작이 반복 수행됨)에 따라, 서브 더티 정보를 제공하기 위한 구간이 단축된다. 또한, 서브 더티 정보를 제공하기 위한 구간이 단축됨에 따라, 더티 데이터가 발생가능한 시간이 단축될 수 있으며, 이에 따라, 반복 동작 각각의 시간 또한 단축될 수 있다. 따라서, 스토리지 시스템(100)의 성능이 향상될 수 있다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템의 동작을 설명하기 위한 타이밍도이다. 도 10을 참조하여, 도 3 및 도 4를 참조하여 설명된 동작 및 도 5 내지 도 8을 참조하여 설명된 동작이 서로 비교된다.
도 1 및 도 10을 참조하면, 타이밍도의 가로축은 더티 데이터의 개수를 가리키고, 세로축은 더티 데이터에 대한 정보를 읽기 위한 레이턴시를 가리킨다. 도 10의 그래프의 제0 라인(L0)은 도 3 및 도 4를 참조하여 설명된 동작에 대응하고, 제1 라인(L1)은 도 5 내지 도 8을 참조하여 설명된 동작에 대응한다.
도 10에 도시된 바와 같이, 제0 라인(L0)은 더티 데이터에 대한 정보로서 전체 비트맵을 사용하기 때문에, 더티 데이터의 개수와 무관하게 일정한 레이턴시를 갖는다. 반면에, 제1 라인(L1)은 더티 데이터 대한 정보로서 가변 단위를 갖는 서브 더티 정보를 사용하기 때문에, 더티 데이터의 개수가 증가함에 따라, 서브 더티 정보의 크기가 증가한다. 이에 따라, 가변 단위의 서브 더티 정보를 읽기 위한 트랜잭션(즉, 쿼리 요청 및 이에 따른 서브 더티 정보 전송)이 증가하기 때문에, 레이턴시가 증가할 수 있다.
즉, 더티 데이터의 개수가 기준값(REF) 작은 경우, 제1 라인(L1)에 따른 동작 방법이 더욱 효과적일 수 있으며, 더티 데이터의 개수가 기준값(REF) 이상인 경우, 제0 라인(L0)에 따른 동작 방법이 더욱 효과적일 수 있다.
도 11은 도 1의 스토리지 시스템의 동작 방법을 보여주는 순서도이다. 도 1, 도 10, 및 도 11을 참조하면, S300 단계에서, 호스트 장치(100)는 스토리지 장치(120)로 추적 시작 요청을 전송할 수 있다. S300 단계의 동작은 도 3의 S100 단계의 동작 및 도 5의 S200 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S305 단계에서, 호스트 장치(110) 및 스토리지 장치(120)는 초기 매핑 정보(MP_0)를 기반으로 마이그레이션을 수행할 수 있다. S305 단계의 동작은 도 3의 S110 단계 및 S120 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S310 단계에서, 호스트 장치(110) 및 스토리지 장치(120)는 고정된 단위를 갖는 비트맵을 기반으로 마이그레이션을 수행할 수 있다. 예를 들어, 호스트 장치(110) 및 스토리지 장치(120)는 도 3 및 도 4를 참조하여 설명된 동작 방법을 기반으로 마이그레이션을 수행할 수 있다. 일 실시 예에서, S310 단계의 동작은 도 3 및 도 4를 참조하여 설명된 1회의 반복 동작을 가리킬 수 있다.
S320 단계에서, 호스트 장치(110)는 더티 데이터의 개수가 기준값(REF)보다 작은지 판별할 수 있다. 예를 들어, 도 10을 참조하여 설명된 바와 같이, 더티 데이터의 개수가 기준값(REF)이상인 경우, 가변 단위를 갖는 서브 더티 정보를 사용하는 대신, 고정된 단위를 갖는 비트맵을 사용하는 동작 방법이 보다 효과적일 수 있다. 즉, 더티 데이터의 개수가 기준값(REF) 이상인 경우, 호스트 장치(110) 및 스토리지 장치(120)는 S310 단계의 동작을 반복 수행할 수 있다.
더티 데이터의 개수가 기준값(REF)보다 작은 경우, 고정된 단위를 갖는 비트맵을 사용하는 대신에, 가변 단위를 갖는 서브 더티 정보를 사용하는 방법이 보다 효과적일 수 있다. 이 경우, S330 단계에서, 호스트 장치(110) 및 스토리지 장치(120)는 가변 단위를 갖는 서브 더티 정보(DINF)를 사용하여 마이그레이션을 수행할 수 있다. 일 실시 예에서 S330 단계의 동작은 도 5 내지 도 9를 참조하여 설명된 1회의 반복 동작을 가리킬 수 있다.
이후에, S340 단계에서, 호스트 장치(110)는 더티 데이터의 개수가 임계치(TH)보다 작은지 판별할 수 있다. 더티 데이터의 개수가 임계치(TH)이상인 경우, 호스트 장치(110) 및 스토리지 장치(120)는 S330 단계의 동작을 반복 수행한다.
더티 데이터의 개수가 임계치(TH)보다 작은 경우, 호스트 장치(110) 및 스토리지 장치(120)는 제1 네임스페이스(NS1)에 대한 동작을 중단(즉, 제1 가상 머신(VM1)에 대한 동작을 중단)하고, 가변 단위를 갖는 서브 더티 정보를 기반으로 마이그레이션을 수행할 수 있다. 이후에, S360 단계에서, 마이그레이션이 완료될 수 있다.
도 12는 본 발명의 실시 예에 따른 서브 더티 정보를 교환하는 동작을 보여주는 순서도이다. 일 실시 예에서, 도 12의 순서도에 따른 동작은 도 5의 S232 단계의 동작과 대치될 수 있다.
도 1 및 도 12를 참조하면, S410 단계에서, 호스트 장치(110)는 더티 어드레스(DRT_ADDR)를 수신하기 위한 쿼리 요청을 스토리지 장치(120)로 전송할 수 있다. 일 실시 예에서, 더티 어드레스(DRT_ADDR)는 비트맵 상에서 더티 데이터에 대하여 마킹된 비트의 위치, 즉, 비트맵 어드레스를 가리키는 정보일 수 있다.
S420 단계에서, 스토리지 장치(120)는 비트맵(BM)을 기반으로 더티 어드레스(DRT_ADDR)를 생성할 수 있다. 더티 어드레스(DRT_ADDR)의 구성은 도 13을 참조하여 더욱 상세하게 설명된다.
S430 단계에서, 스토리지 장치(120)는 호스트 장치(110)로 더티 어드레스(DRT_ADDR)를 전송할 수 있다.
S440 단계에서, 호스트 장치(110)는 더티 어드레스(DRT_ADDR)를 기반으로 더티 데이터를 판별할 수 있다. 이후에, 호스트 장치(110)는 더티 데이터에 대한 마이그레이션을 수행할 수 있다.
도 13은 도 12의 순서도에 따른 동작에서, 더티 어드레스(DRT_ADDR)를 설명하기 위한 도면이다. 설명의 편의를 위해, 제3 비트맵(BM_3)을 기준으로 더티 어드레스(DRT_ADDR)가 설명된다.
도 13에 도시된 바와 같이, 제3 비트맵(BM_3)은 8×8의 64비트로 구성될 수 있다. 이 경우, 제3 비트맵(BM_3)의 각 비트는 6비트의 어드레스로 표현 또는 지정될 수 있다.
이 경우, 더티 데이터에 대응하는 비트로서 마킹된 R2C2 비트, R2C3 비트, R7C7 비트, 및 R8C6 비트는 각각 ADDR22, ADDR23, ADDR77, 및 ADDR86으로 표현될 수 있으며, ADDR22, ADDR23, ADDR77, 및 ADDR86 각각은 6비트로 표현될 수 있다. 이 경우, 스토리지 장치(120)로부터 호스트 장치(110)로 전송되는 전체 어드레스의 비트수는 6×4 = 24비트이다. 즉, 전체 비트맵(BM_3) 64비트를 전송하는 것보다 비트맵(BM) 상에서 더티 비트의 위치를 가리키는 더티 어드레스(DRT_ADDR)를 전송하는 것이 보다 효율적일 수 있다.
도 14는 본 발명의 실시 예에 따른 더티 정보를 교환하는 동작을 보여주는 순서도이다. 일 실시 예에서, 도 14의 순서도에 따른 동작은 도 5의 S232 단계의 동작과 대치될 수 있다.
도 1 및 도 14를 참조하면, S510 단계에서, 호스트 장치(110)는 압축된 비트맵(BM_com)을 수신하기 위한 쿼리 요청을 스토리지 장치(120)로 전송할 수 있다.
S520 단계에서, 스토리지 장치(120)는 비트맵(BM)을 압축하여, 압축된 비트맵(BM_com)을 생성할 수 있다.
S530 단계에서, 스토리지 장치(120)는 압축된 비트맵(BM_com)을 호스트 장치(110)로 전송할 수 있다.
S540 단계에서, 호스트 장치(110)는 압축된 비트맵(BM_com)을 압축 해제할 수 있다.
S550 단계에서, 호스트 장치(110)는 압축 해제된 비트맵을 기반으로 더티 데이터를 판별할 수 있다.
상술된 바와 같이, 스토리지 장치(120)는 비트맵을 압축하여 호스트 장치(110)로 제공할 수 있다. 이 때, 앞서 설명된 바와 같이, 마이그레이션을 위한 반복 동작이 수행됨에 따라 더티 데이터의 개수가 감소하고, 이에 따라 비트맵에서 더티 비트로 마킹되는 개수가 감소할 것이다. 즉, 비트맵에서 "1"을 갖는 비트의 개수가 희소(sparse)해질 것이다. 비트맵이 희소해짐에 따라, 압축 효율이 증가할 수 있다. 즉, 마이그레이션을 위한 반복 동작이 수행됨에 따라, 스토리지 장치(110)로부터 호스트 장치(120)로 제공되는 압축된 비트맵(BM_com)의 크기가 감소할 수 있으며, 이에 따라 스토리지 시스템의 전체적인 레이턴시가 감소할 수 있다.
도 15a 내지 도 15c는 스토리지 시스템의 다양한 토폴로지를 보여주는 블록도들이다. 이하에서, 본 발명의 기술적 사상을 용이하게 설명하기 위하여, 물리 기능(PF)의 용어가 사용된다. 물리 기능(PF)은 복수의 호스트 장치들(1110, 1120) 각각에 대응하는 NVMe 컨트롤러를 지칭할 수 있다. NVMe 컨트롤러는 소프트웨어 형태, 하드웨어 형태, 또는 그것들의 조합의 형태로 구현될 수 있다. 또는, 물리 기능(PF)은 SR-IOV의 기능을 지원하도록 구성된 PCI-express 기능을 가리킬 수 있다. SR-IOV는 하나의 물리 기능이 하나 또는 그 이상의 종속적인 가상 기능을 지원하는 기능을 가리킬 수 있다. 즉, 이하에서, 물리 기능(PF)은 복수의 호스트 장치들(1110, 1120) 중 적어도 하나와 대응되며, 복수의 호스트 장치들(1110, 1120) 중 대응하는 호스트 장치에 대한 커맨드, 또는 대응하는 호스트 장치에 의해 관리되는 전송 큐의 커맨드를 처리하도록 구성되는 것으로 이해될 것이다.
이하에서, 설명의 편의를 위하여, 호스트 장치(1100)는 제1 및 제2 호스트 장치들(1110, 1120)을 포함하는 것으로 가정하나, 본 발명의 범위가 이에 한정되는 것은 아니다. 일 실시 예에서, 제1 및 제2 호스트 장치들(1110, 1120)은 서로 물리적으로 구분된 하드웨어 장치일 수 있다. 또는 제1 및 제2 호스트 장치들(1110, 1120)은 동일한 컴퓨팅 시스템 또는 서버 시스템에서 구현되는 가상머신(VM1, VM2)일 수 있다.
도 15a 내지 도 15c를 참조하면, 스토리지 시스템(1000a, 1000b, 1000c)은 호스트 장치들(1100) 및 스토리지 장치(1200a, 1200b, 1200c)를 포함할 수 있다. 제1 및 제2 호스트 장치들(1110, 1120) 각각은 대응하는 동작을 처리하기 위한 커맨드들(CMD1, CMD2)을 발행할 수 있다. 예를 들어, 제1 호스트 장치(1110)는 제1 커맨드(CMD1)를 발행할 수 있고, 발행된 제1 커맨드(CMD1)는 제1 전송 큐(SQ1; submission queue)에 큐잉될 수 있다. 제2 호스트 장치(1120)는 제2 커맨드(CMD2)를 발행할 수 있고, 발행된 제2 커맨드(CMD2)는 제2 전송 큐(SQ2)에 큐잉될 수 있다.
일 실시 예에서, 제1 및 제2 호스트 장치들(1110, 1120)이 각각 하나의 전송 큐를 관리하는 것으로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 제1 및 제2 호스트 장치들(1110, 1120) 각각은 복수의 전송 큐들을 관리할 수 있다. 또는 제1 및 제2 호스트 장치들(1110, 1120) 각각은 복수의 전송 큐들에 대한 완료(completion)를 수신하도록 구성된 완료 큐(Completion Queue)를 더 관리할 수 있다.
또는, 제1 및 제2 호스트 장치들(1110, 1120) 각각은 관리 커맨드(administrative command)를 발행하고, 관리 커맨드에 대한 완료(completion)을 수신하도록 구성된 관리 큐(Admin Queue) 및 관리 완료 큐(Admin Completion Queue)를 더 관리할 수 있다. 일 실시 예에서, 상술된 전송 큐, 완료 큐, 관리 큐, 관리 완료 큐 등은 스토리지 장치의 컨트롤러 메모리 버퍼(CMB; controller memory buffer)에 포함될 수 있다. 또는 상술된 전송 큐, 완료 큐, 관리 큐, 관리 완료 큐 등은 대응하는 호스트 장치의 호스트 장치 메모리 버퍼(HMB; host memory buffer)에 포함될 수 있다.
스토리지 장치들(1200a, 1200b, 1200c)은 제1 및 제2 호스트 장치들(1110, 1120)과 통신할 수 있다. 일 실시 예에서, 스토리지 장치(1200a, 1200b, 1200c)은 PCI-express 인터페이스의 기반의 물리 계층을 통한 인터페이스(예를 들어, NVMe over PCI-express)를 통해 제1 및 제2 호스트 장치들(1110, 1120)과 통신할 수 있다. 또는, 스토리지 장치들(1200a, 1200b, 1200c)은 파이버 채널(Fibre Channel), RDMA(remote direct random access memory) 등과 같은 네트워크 기반의 인터페이스(예를 들어, NVMe-oF; NVMe over Fabrics)를 통해 제1 및 제2 호스트 장치들(1110, 1120) 과 통신할 수 있다. 이하에서, 본 발명의 실시 예를 명확하게 설명하기 위하여, 스토리지 컨트롤러들(1210a, 1210b, 1210c)는 NVMe over PCI-express 인터페이스를 통해 제1 및 제2 호스트 장치들(1110, 1120)과 통신하는 것으로 가정한다.
스토리지 장치들(1200a, 1200b, 1200c)은 다양한 형태의 물리 계층을 통해 제1 및 제2 호스트 장치들(1110, 1120)과 통신할 수 있다. 제1 및 제2 물리 기능들(PF1, PF2)은 제1 및 제2 호스트 장치들(1110, 1120)과 각각 대응할 수 있다. 예를 들어, 제1 물리 기능(PF1)은 제1 호스트 장치(1110)와 통신할 수 있고, 제1 호스트 장치(1110)로부터의 제1 커맨드(CMD1)를 처리하도록 구성된 제1 NVMe 컨트롤러를 가리킬 수 있다. 제2 물리 기능(PF2)은 제2 호스트 장치(1120)와 통신할 수 있고, 제2 호스트 장치(1120)로부터의 제2 커맨드(CMD2)를 처리하도록 구성된 제2 NVMe 컨트롤러를 가리킬 수 있다.
제1 및 제2 물리 기능들(PF1, PF2)은 대응하는 호스트 장치로부터의 커맨드를 기반으로 불휘발성 메모리 장치(1220)에 대한 동작을 수행할 수 있다. 일 실시 예에서, 불휘발성 메모리 장치(1220)는 논리적으로 구분된 네임스페이스(NS; namespace)로 관리되거나 또는 물리적 또는 논리적으로 구분된 불휘발성 메모리 셋(NVM set)으로 관리될 수 있다. 제1 및 제2 물리 기능들(PF1, PF2) 각각은 , 커맨드에 대응하는 동작을 대응하는 네임스페이스(NS1 또는 NS2) 또는 대응하는 NVM 셋에 대하여 수행할 수 있다.
일 실시 예에서, 도 15a에 도시된 바와 같이, 스토리지 컨트롤러(1210a)에 포함된 제1 및 제2 물리 기능들(PF1, PF2)은 하나의 물리 포트(PT)를 통해 제1 및 제2 호스트 장치들(1110, 1120)과 통신할 수 있다. 물리 포트(PT)는 PCI-express 인터페이스를 지원하도록 구성된 물리 계층일 수 있다. 일 실시 예에서, 제1 및 제2 물리 기능들(PF1, PF2) 각각은 종속적인 가상 기능이거나 또는 종속적인 가상 기능을 지원할 수 있다.
또는, 도 15b에 도시된 바와 같이, 스토리지 컨트롤러(1210b)에 포함된 제1 및 제2 물리 기능들(PF1, PF2)은 복수의 물리 포트들(PT1, PT2)을 통해 제1 및 제2 호스트 장치들(1110, 1120)과 통신할 수 있다. 제1 및 제2 물리 포트들(PT1, PT2) 각각은 PCI-express 인터페이스를 지원하도록 구성된 독립적인 물리 계층일 수 있다. 제1 물리 기능(PF1)은 제1 물리 포트(PT1)를 통해 제1 호스트 장치(1110)와 통신할 수 있고, 제2 물리 기능(PF2)은 제2 물리 포트(PT2)를 통해 제2 호스트 장치(1120)와 통신할 수 있다.
일 실시 예에서, 도 15c에 도시된 바와 같이, 제1 및 제2 호스트 장치들(1110, 1120)은 스토리지 컨트롤러(1210c)에 포함된 하나의 물리 기능(PF1)과 통신할 수 있다. 즉, 제1 및 제2 호스트 장치들(1110, 1120)은 하나의 물리 기능(PF1)을 통해, 제1 및 제2 네임스페이스들(NS1, NS2)을 각각 액세스할 수 있다.
도 15a 내지 도 15c를 참조하여 설명된 구성은 일부 예시이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 앞서 설명된 바와 같이, 물리 기능(PF)은 복수의 호스트 장치들 각각과 대응되는 NVMe 컨트롤러를 가리킬 수 있으며, 복수의 물리 기능들(PF)은 하나의 물리 포트 또는 개별적인 물리 포트를 통해 대응하는 호스트 장치와 통신하도록 구성될 수 있다.
일 실시 예에서, 도 15a 내지 도 15c를 참조하여 설명된 토폴로지를 통해, 본 발명의 실시 예에 따른 마이그레이션 동작이 수행될 수 있다. 예를 들어, 제1 호스트 장치(1110)에 의해 관리되는 제1 데이터는 제1 네임스페이스(NS1)에 저장될 수 있고, 본 발명의 실시 예에 따른 실시간 마이그레이션(특히, 가변 단위를 갖는 더티 정보 전송)을 통해, 제1 데이터가 제1 네임스페이스(NS1)로부터 제2 네임스페이스(NS2)로 마이그레이션될 수 있다.
도 16은 본 발명의 실시예에 따른 호스트 장치-스토리지 시스템을 나타내는 블록도이다.
호스트 장치-스토리지 시스템(2000)은 호스트 장치(2100) 및 스토리지 장치(2200)를 포함할 수 있다. 또한, 스토리지 장치(2200)는 스토리지 컨트롤러(2210) 및 비휘발성 메모리 (NVM)(2220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트 장치(2100)는 호스트 장치 컨트롤러(2110) 및 호스트 장치 메모리(2120)를 포함할 수 있다. 호스트 장치 메모리(2120)는 스토리지 장치(2200)로 전송될 데이터, 혹은 스토리지 장치(2200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(2200)는 호스트 장치(2100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(2200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(2200)가 SSD인 경우, 스토리지 장치(2200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(2200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(2200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트 장치(2100)와 스토리지 장치(2200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(2200)의 비휘발성 메모리(2220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(2200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(2200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
일 실시예에 따라, 호스트 장치 컨트롤러(2110)와 호스트 장치 메모리(2120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 장치 컨트롤러(2110)와 호스트 장치 메모리(2120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 장치 컨트롤러(2110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 장치 메모리(2120)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 장치 컨트롤러(2110)는 호스트 장치 메모리(2120)의 버퍼 영역의 데이터(예컨대, 기록 데이터)를 비휘발성 메모리(2220)에 저장하거나, 비휘발성 메모리(2220)의 데이터(예컨대, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(2210)는 호스트 장치 인터페이스(2211), 메모리 인터페이스(2212) 및 CPU(central processing unit)(2213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(2210)는 플래시 변환 레이어(Flash Translation Layer; FTL)(2214), 패킷 매니저(2215), 버퍼 메모리(2216), ECC(error correction code)(2217) 엔진 및 AES(advanced encryption standard) 엔진(2218)을 더 포함할 수 있다. 스토리지 컨트롤러(2210)는 플래시 변환 레이어(FTL)(2214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(2213)가 플래시 변환 레이어를 실행하는 것에 의해 비휘발성 메모리(2220)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
호스트 장치 인터페이스(2211)는 호스트 장치(2100)와 패킷(packet)을 송수신할 수 있다. 호스트 장치(2100)로부터 호스트 장치 인터페이스(2211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(2220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 장치 인터페이스(2211)로부터 호스트 장치(2100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(2220)로부터 독출된 데이터 등을 포함할 수 있다. 메모리 인터페이스(2212)는 비휘발성 메모리(2220)에 기록될 데이터를 비휘발성 메모리(2220)로 송신하거나, 비휘발성 메모리(2220)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(2212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(2214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트 장치(2100)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(2220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(2220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(2220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(2215)는 호스트 장치(2100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트 장치(2100)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(2216)는 비휘발성 메모리(2220)에 기록될 데이터 혹은 비휘발성 메모리(2220)로부터 독출될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(2216)는 스토리지 컨트롤러(2210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(2210)의 외부에 배치되어도 무방하다.
ECC 엔진(2217)은 비휘발성 메모리(2220)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(2217)은 비휘발성 메모리(2220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(2220) 내에 저장될 수 있다. 비휘발성 메모리(2220)로부터의 데이터 독출 시, ECC 엔진(2217)은 독출 데이터와 함께 비휘발성 메모리(2220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
AES 엔진(2218)은, 스토리지 컨트롤러(2210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
일 실시 예에서, 스토리지 컨트롤러(2210)는 더티 관리자(2219)를 더 포함할 수 있다. 더티 관리자(2219)는 도 1 내지 도 14를 참조하여 설명된 방법을 기반으로 더티 데이터에 대한 정보(예를 들어, 비트맵 및 더티 정보)를 관리할 수 있고, 호스트 장치(2100)의 요청에 따라 더티 데이터에 대한 정보를 호스트 장치(2100)로 제공할 수 있다. 호스트 장치(2100)는 더티 데이터에 대한 정보를 기반으로 다양한 동작(예를 들어, 실시간 마이그레이션)을 수행할 수 있다.
도 17은 본 발명의 일 실시예에 따른 메모리 장치가 적용된 데이터 센터를 나타낸 도면이다.
도 17을 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 애플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)을 포함할 수 있다. 애플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 애플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 서로 다를 수 있다.
애플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 및/또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 애플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 애플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다. 스토리지 서버(3200)에 포함되는 스토리지 장치(3250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
애플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200 내지 3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 애플리케이션 서버(3100) 및 스토리지 서버(3200)를 중심으로 설명하기로 한다. 애플리케이션 서버(3100)에 대한 설명은 다른 애플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.
애플리케이션 서버(3100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200 내지 3200m) 중 하나에 저장할 수 있다. 또한, 애플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200 내지 3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
애플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 애플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버들(3200-3200m)에 포함된 메모리들(3220-3220m) 또는 스토리지 장치(3250-3250m)에 액세스할 수 있다. 이로써, 애플리케이션 서버(3100)는 애플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 애플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200-3200m)의 스토리지 장치(3250-3250m)로부터 스토리지 서버들(3200-3200m)의 메모리들(3220-3220m)을 거쳐서, 또는 바로 애플리케이션 서버들(3100-3100n)의 메모리(3120-3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251)의 물리적 연결 및 NIC(Network InterConnect)(3240)와 컨트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), 및/또는 CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)을 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)와 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다.
일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP(Digital Signal Processor), 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버들(3200-3200m) 또는 애플리케이션 서버들(3100-3100n)에서 프로세서는 스토리지 장치(3150-3150n, 3250-3250m) 또는 메모리(3120-3120n, 3220-3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(3150-3150n, 3250-3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252-3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252-3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)가 생성될 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(3251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 애플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다. 스토리지 장치(3250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.
일 실시 예에서, 특정 스토리지 서버(예를 들어, 3200)에 저장된 데이터는 도 1 내지 도 14를 참조하여 설명된 방법(즉, 가변 단위를 갖는 더티 정보를 사용한 마이그레이션 방법)을 기반으로 동일 스토리지 서버(예를 들어, 3200) 또는 다른 스토리지 서버(3200m)으로 마이그레이션될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 스토리지 시스템(100)은 실시간 마이그레이션시, 더티 데이터의 최신 버전 유지를 위해, 더티 데이터에 대한 마이그레이션을 반복 수행한다. 이 때, 호스트 장치(110)는 스토리지 장치(120)로부터 비트맵을 수신하고, 수신된 비트맵을 기반으로 더티 데이터를 판별한다. 그러나, 반복 동작마다 전체 비트맵이 호스트 장치(110)로 전송됨에 따라 레이턴시가 증가한다. 반면에, 본 발명의 실시 예에 따르면, 반복 동작이 수행됨에 따라 더티 데이터의 개수가 감소하고, 이에 따라 비트맵이 희소해지는 특성을 이용하여, 전체 비트맵을 전송하는 대신에, 가변 단위를 갖는 더티 정보가 스토리지 장치로부터 호스트 장치로 제공된다. 이 경우, 더티 정보가 전송되는 시간이 단축됨으로써, 스토리지 시스템의 전체적인 성능이 향상될 수 있다.
상술된 실시 예들에서, 스토리지 시스템(100)의 실시간 마이그레이션을 기준으로 본 발명의 실시 예들이 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 실시간 마이그레이션 이외에, 호스트 장치(110)가 스토리지 장치(120)의 특정 영역에 대한 더티 데이터를 확인할 경우, 도 5 내지 도 10을 참조하여 설명된 바와 같이, 가변 단위를 갖는 더티 정보를 통해, 더티 데이터를 확인할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (20)

  1. 스토리지 장치를 제어하도록 구성된 호스트 장치의 동작 방법에 있어서,
    상기 스토리지 장치로부터 초기 맵핑 정보를 수신하는 단계;
    상기 초기 맵핑 정보를 기반으로, 상기 스토리지 장치의 제1 영역에 저장된 소스 데이터를 제2 영역으로 초기 마이그레이션을 수행하는 단계;
    상기 소스 데이터의 제1 더티 데이터에 대한 제1 더티 정보를 상기 스토리지 장치로부터 수신하는 단계;
    상기 제1 더티 정보를 기반으로, 상기 제1 더티 데이터에 대한 제1 마이그레이션을 수행하는 단계;
    상기 소스 데이터의 제2 더티 데이터에 대한 제2 더티 정보를 상기 스토리지 장치로부터 수신하는 단계; 및
    상기 제2 더티 정보를 기반으로, 상기 제2 더티 데이터에 대한 제2 마이그레이션을 수행하는 단계를 포함하고,
    상기 제1 더티 정보의 크기는 상기 제2 더티 정보의 크기와 다른 동작 방법.
  2. 제 1 항에 있어서,
    상기 제1 더티 데이터는 상기 초기 마이그레이션 동안 상기 호스트 장치의 동작에 의해 발생하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 제2 더티 데이터는 상기 제1 마이그레이션 동안 상기 호스트 장치의 동작에 의해 발생하는 동작 방법.
  4. 제 1 항에 있어서,
    상기 제2 더티 정보를 상기 스토리지 장치로부터 수신하는데 사용되는 시간은 상기 제1 더티 정보를 상기 스토리지 장치로부터 수신하는데 사용되는 시간보다 짧은 동작 방법.
  5. 제 1 항에 있어서,
    상기 제2 마이그레이션을 수행하는 시간은 상기 제1 마이그레이션을 수행하는 시간보다 짧은 동작 방법.
  6. 제 1 항에 있어서,
    상기 제1 더티 정보를 수신하는 단계는:
    제1 서브 더티 정보를 상기 스토리지 장치로부터 수신하는 단계;
    상기 제1 서브 더티 정보를 기반으로 제1 인덱스 정보를 생성하는 단계; 및
    제2 서브 더티 정보를 상기 스토리지 장치로부터 수신하는 단계를 포함하고,
    상기 제1 더티 정보는 상기 제1 서브 더티 정보 및 상기 제2 서브 더티 정보를 포함하는 동작 방법.
  7. 제 6 항에 있어서,
    상기 제2 서브 더티 정보는 상기 제1 인덱스 정보를 기반으로 결정되는 동작 방법.
  8. 제 6 항에 있어서,
    상기 제1 서브 더티 정보는 제1 매핑 단위를 갖고, 상기 제2 서브 더티 정보는 상기 제1 매핑 단위와 다른 제2 매핑 단위를 갖고,
    상기 제1 매핑 단위는 상기 제1 서브 더티 정보의 각 비트에 대응되는 상기 소스 데이터의 제1 크기를 가리키고, 상기 제2 매핑 단위는 상기 제2 서브 더티 정보의 각 비트에 대응되는 상기 소스 데이터의 제2 크기를 가리키는 동작 방법.
  9. 제 8 항에 있어서,
    상기 제1 크기는 상기 제2 크기보다 큰 동작 방법.
  10. 제 8 항에 있어서,
    상기 제1 더티 정보를 수신하는 단계는:
    상기 제1 인덱스 정보를 기반으로 상기 제2 매핑 단위를 판별하는 단계를 더 포함하는 동작 방법.
  11. 제 10 항에 있어서,
    상기 제1 인덱스 정보의 개수가 기준값 이상인 경우, 상기 제2 매핑 단위를 최소 값으로 설정하고,
    상기 제1 인덱스 정복의 개수가 상기 기준값보다 작은 경우, 상기 제2 매핑 단위를 미리 정해진 값으로 설정하는 동작 방법.
  12. 제 1 항에 있어서,
    상기 제2 더티 데이터의 개수가 임계치보다 작은 경우, 상기 제1 영역에 대한 액세스를 중단하는 단계;
    상기 소스 데이터의 제3 더티 데이터에 대한 제3 더티 정보를 상기 스토리지 장치로부터 수신하는 단계; 및
    상기 제3 더티 정보를 기반으로, 상기 제3 더티 데이터에 대한 제3 마이그레이션을 수행하는 단계를 포함하는 동작 방법.
  13. 제 12 항에 있어서,
    상기 제3 마이그레이션이 완료된 이후에, 상기 소스 데이터에 대하여, 상기 제2 영역으로 액세스하는 단계를 더 포함하는 동작 방법.
  14. 제 1 항에 있어서,
    상기 호스트 장치는 제1 가상 머신 및 제2 가상 머신을 구동하도록 구성되고,
    상기 제1 영역은 상기 제1 가상 머신에 의해 액세스되고, 상기 제2 영역은 제2 가상 머신에 의해 액세스되는 동작 방법.
  15. 제 1 항에 있어서,
    상기 호스트 장치는 상기 스토리지 장치와 NVMe(Nonvolatile memory express) 인터페이스를 기반으로 서로 통신하는 동작 방법.
  16. 호스트 장치의 제어에 따라 동작하도록 구성된 스토리지 장치의 동작 방법에 있어서,
    상기 호스트 장치로 소스 데이터에 대한 초기 매핑 정보를 전송하는 단계;
    상기 호스트 장치의 제어에 따라, 상기 소스 데이터를 제1 영역으로부터 제2 영역으로 초기 마이그레이션을 수행하는 단계;
    상기 초기 매핑 정보를 전송하고, 상기 초기 마이그레이션을 수행하는 동안, 상기 소스 데이터에서 발생한 제1 더티 데이터에 대한 정보를 제1 비트맵으로서 관리하는 단계;
    상기 제1 비트맵을 기반으로 제1 더티 정보를 생성하고, 상기 제1 더티 정보를 상기 호스트 장치로 전송하는 단계;
    상기 호스트 장치의 제어에 따라, 상기 제1 더티 데이터에 대한 제1 마이그레이션을 수행하는 단계;
    상기 제1 더티 정보를 생성하고, 상기 제1 더티 정보를 전송하고, 상기 제1 마이그레이션을 수행하는 동안, 상기 소스 데이터에서 발생한 제2 더티 데이터에 대한 정보를 제2 비트맵으로 관리하는 단계;
    상기 제2 비트맵을 기반으로 제2 더티 정보를 생성하고, 상기 제2 더티 정보를 상기 호스트 장치로 전송하는 단계; 및
    상기 호스트 장치의 제어에 따라, 상기 제2 더티 데이터에 대한 제2 마이그레이션을 수행하는 단계를 포함하고,
    상기 제1 더티 정보의 크기는 상기 제2 더티 정보의 크기와 다른 동작 방법.
  17. 제 16 항에 있어서,
    상기 제1 비트맵을 기반으로 제1 더티 정보를 생성하고, 상기 제1 더티 정보를 상기 호스트 장치로 전송하는 단계는:
    상기 호스트 장치로부터 제1 매핑 단위에 대한 정보를 포함하는 제1 쿼리 요청을 수신하는 단계;
    상기 제1 쿼리 요청에 응답하여, 상기 제1 비트맵을 기반으로 제1 서브 더티 정보를 생성하고, 상기 제1 서브 더티 정보의 각 비트는 상기 제1 매핑 단위를 갖는 단계;
    상기 제1 서브 더티 정보를 상기 호스트 장치로 전송하는 단계;
    상기 호스트 장치로부터 제2 매핑 단위에 대한 정보 및 제1 인덱스 정보를 포함하는 제2 쿼리 요청을 수신하는 단계;
    상기 제2 쿼리 요청에 응답하여, 상기 제1 비트맵을 기반으로 제2 서브 더티 정보를 생성하고, 상기 제2 서브 더티 정보의 각 비트는 상기 제2 매핑 단위를 갖는 단계; 및
    상기 제2 서브 더티 정보 중 상기 제1 인덱스 정보에 대응하는 비트들을 상기 호스트 장치로 전송하는 단계를 포함하고, 상기 제1 매핑 단위는 상기 소스 데이터 중 상기 제1 서브 더티 정보의 각 비트에 대응하는 제1 크기를 가리키고,
    상기 제2 매핑 단위는 상기 소스 데이터 중 상기 제2 서브 더티 정보의 각 비트에 대응하는 제2 크기를 가리키고,
    상기 제1 크기는 상기 제2 크기보다 큰 동작 방법.
  18. 제 16 항에 있어서,
    상기 제1 더티 정보는 상기 제1 비트맵이 압축된 정보이고,
    상기 제2 더티 정보는 상기 제2 비트맵이 압축된 정보인 동작 방법.
  19. 제 16 항에 있어서,
    상기 제1 더티 정보는 상기 제1 비트맵 상에서, 상기 제1 더티 데이터에 대하여 마킹된 비트들의 위치들을 가리키는 비트맵 어드레스이고,
    상기 제2 더티 정보는 상기 제2 비트맵 상에서, 상기 제2 더티 데이터에 대하여 마킹된 비트들의 위치를 가리키는 비트맵 어드레스인 동작 방법.
  20. 스토리지 장치를 제어하도록 구성된 호스트 장치의 동작 방법에 있어서,
    상기 스토리지 장치로부터 초기 맵핑 정보를 수신하는 단계;
    상기 초기 맵핑 정보를 기반으로, 상기 스토리지 장치의 제1 영역에 저장된 소스 데이터를 제2 영역으로 초기 마이그레이션을 수행하는 단계;
    상기 소스 데이터의 제1 더티 데이터에 대한 제1 비트맵을 기반으로, 상기 제1 더티 데이터에 대한 제1 마이그레이션을 수행하는 단계;
    상기 제1 더티 데이터의 개수 및 기준값을 비교하는 단계; 및
    상기 비교 결과를 기반으로, 상기 소스 데이터의 제2 더티 데이터에 대한 제2 비트맵 및 상기 제2 비트맵에 기반된 제2 더티 정보 중 하나를 기반으로 제2 마이그레이션을 수행하는 단계를 포함하고,
    상기 제1 비트맵의 크기 및 상기 제2 비트맵의 크기는 서로 동일하고, 상기 제2 더티 정보의 크기는 상기 제1 비트맵의 상기 크기 및 상기 제2 비트맵의 상기 크기 각각보다 작은 동작 방법.
KR1020220073186A 2022-04-07 2022-06-16 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법 KR20230144434A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/188,882 US20230325110A1 (en) 2022-04-07 2023-03-23 Operation method of host device and operation method of storage device
CN202310349475.0A CN116893877A (zh) 2022-04-07 2023-03-31 主机装置的操作方法及存储装置的操作方法
EP23166960.7A EP4258097A1 (en) 2022-04-07 2023-04-06 Operation method of host device and operation method of storage device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220043456 2022-04-07
KR20220043456 2022-04-07

Publications (1)

Publication Number Publication Date
KR20230144434A true KR20230144434A (ko) 2023-10-16

Family

ID=88506357

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220073186A KR20230144434A (ko) 2022-04-07 2022-06-16 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법

Country Status (1)

Country Link
KR (1) KR20230144434A (ko)

Similar Documents

Publication Publication Date Title
TWI814975B (zh) 用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝置、以及其系統單晶片
US10740018B2 (en) Data migration method and apparatus applied to computer system, and computer system
US20230092562A1 (en) System, device, and method for memory interface including reconfigurable channel
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US11662949B2 (en) Storage server, a method of operating the same storage server and a data center including the same storage server
US20230153006A1 (en) Data processing method and data processing device
US20220179724A1 (en) Method for operating storage device and host device, and storage device
KR20230144434A (ko) 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법
EP4258097A1 (en) Operation method of host device and operation method of storage device
US20230325110A1 (en) Operation method of host device and operation method of storage device
KR102435910B1 (ko) 스토리지 장치 및 그것의 동작 방법
CN116893877A (zh) 主机装置的操作方法及存储装置的操作方法
US20230153237A1 (en) Method and device for storing data
US11893270B2 (en) Storage device, and host-storage system including the storage device
US11914879B2 (en) Storage controller and storage system comprising the same
US20230068365A1 (en) Storage package, storage device and method for operating the storage device
US11842076B2 (en) Storage system and operating method for same
KR102547251B1 (ko) 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US11809341B2 (en) System, device and method for indirect addressing
US20240134568A1 (en) Computational storage device, method for operating the computational storage device and method for operating host device
US20230393749A1 (en) Method and device of storage data
US20240045597A1 (en) Storage device and operation method thereof
EP4246330A1 (en) Storage device and operating method thereof
US20230143943A1 (en) Method of operating storage device for retention enhancement and storage device performing the same
EP4187398A1 (en) Controller controlling non-volatile memory device, storage device including the same, and operating method thereof