KR20160047482A - 데이터 중복제거 방법 및 스토리지 어레이 - Google Patents

데이터 중복제거 방법 및 스토리지 어레이 Download PDF

Info

Publication number
KR20160047482A
KR20160047482A KR1020167005272A KR20167005272A KR20160047482A KR 20160047482 A KR20160047482 A KR 20160047482A KR 1020167005272 A KR1020167005272 A KR 1020167005272A KR 20167005272 A KR20167005272 A KR 20167005272A KR 20160047482 A KR20160047482 A KR 20160047482A
Authority
KR
South Korea
Prior art keywords
controller
data block
cache
data
address
Prior art date
Application number
KR1020167005272A
Other languages
English (en)
Other versions
KR101716264B1 (ko
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 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20160047482A publication Critical patent/KR20160047482A/ko
Application granted granted Critical
Publication of KR101716264B1 publication Critical patent/KR101716264B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 실시예에서 제공하는 데이터 중복제거 방법 및 스토리지 어레이에 따르면,
제어기는 상기 스위칭 장치를 통해 캐시 장치에 접속되고, 상기 제어기는 중복제거될 데이터 블록의 고윳값에 따라 데이터 블록의 고윳값 지수 집합을 질의하고, 동일한 고윳값이 발견되지 않을 때, 상기 제어기는 상기 캐시 장치 내의 중복제거될 데이터 블록의 캐시 어드레스를 목표 하드디스크의 제어기에 송신하며, 상기 복표 하드디스크의 제어기는 상기 데이터 블록의 캐시 어드레스로부터 상기 중복제거될 데이터 블록을 읽어낸다.

Description

데이터 중복제거 방법 및 스토리지 어레이{DATA DEDUPLICATION METHOD AND STORAGE ARRAY}
본 발명은 정보 기술 분야에 관한 것이며, 특히 데이터 중복제거 방법 및 스토리지 어레이에 관한 것이다.
스토리지 어레이는 일반적으로 하나의 엔진을 포함하고, 하나의 엔진은 2개의 제어기를 포함하며, 이 2개의 제어기를 일반적으로 이중 제어기 구조라 한다. 입력/출력 관리자 A는 제어기 A에 접속되어 있고 입력/출력 관리자 B는 제어기 B에 접속되어 있다. 제어기 A는 주변 구성요소 상호접속 익스프레스(Peripheral Component Interconnect express, PCIe) 스위치 A, 중앙처리장치(Central Processing Unit, CPU) A, 및 메모리 A를 포함하고, 제어기 B는 주변 구성요소 상호접속 익스프레스(Peripheral Component Interconnect express, PCIe) 스위치 B, 중앙처리장치(Central Processing Unit, CPU) B, 및 메모리 B를 포함한다. PCIe 스위치 A는 PCIe 스위치 B에 접속된다. 도 1에 도시된 스토리지 어레이에서, 나중에 써넣을 데이터가 하드디스크에 써넣어지기 전에 데이터 중복제거가 수행된다. 특정한 프로세스는 다음과 같다: 제어기 A의 CPU A는 메모리 A에 나중에 써넣을 데이터를 분할하여 복수의 데이터 블록을 획득하고, 각각의 데이터 블록의 고윳값을 계산하고, 제어기 A의 고윳값 지수 집합 내의 고윳값들을 검색하여 데이터 블록이 중복제거 데이터 블록인지를 판정하며, 데이터 블록이 중복제거 데이터 블록이면 데이터 블록을 삭제하고, 데이터 블록이 중복제거 데이터 블록이 아니면 데이터 블록을 하드디스크에 써넣는다.
스토리지 어레이에서의 전술한 데이터 중복제거 프로세스는 제어기의 CPU 계산력 및 제어기의 메모리 자원을 소비하며 스토리지 어레이의 성능에 심각한 영향을 미친다.
본 발명의 실시예는 데이터 중복제거 방법 및 스토리지 어레이를 제공한다.
제1 관점에 따라, 본 발명의 실시예는 데이터 중복제거 방법을 제공하며, 상기 데이터 중복제거 방법은 스토리지 어레이에 적용되고, 상기 스토리지 어레이는 스위칭 장치, 제1 제어기, 및 캐시 장치를 포함하며, 상기 제1 제어기는 상기 스위칭 장치에 접속되고, 상기 캐시 장치는 상기 스위칭 장치에 접속되며, 상기 스위칭 장치는 상기 스토리지 장치 내의 하드디스크에 접속되며, 상기 데이터 중복제거 방법은,
상기 제1 제어기가 상기 캐시 장치로부터 중복제거될 데이터 블록의 고윳값을 수신하고, 상기 중복제거될 데이터 블록의 고윳값에 대한 데이터 블록의 고윳값 지수 집합을 검색하는 단계;
상기 중복제거될 데이터 블록의 고윳값이 데이터 블록의 고윳값 지수 집합에서 발견되지 않을 때, 상기 제1 제어기가 상기 스위칭 장치를 통해 상기 캐시 장치 내의 중복제거될 데이터 블록의 캐시 어드레스를 획득하는 단계;
상기 제1 제어기가 상기 스위칭 장치를 통해 목표 하드디스크의 제어기에 읽기 데이터 명령을 송신하는 단계 - 상기 읽기 데이터 명령은 상기 캐시 장치의 식별자 및 상기 캐시 어드레스를 반송함 - ;
상기 목표 하드디스크의 제어기가 상기 캐시 장치의 식별자 및 상기 캐시 어드레스에 따라 상기 스위칭 장치를 통해 상기 캐시 어드레스로부터 상기 중복제거될 데이터 블록을 읽어내는 단계; 및
상기 목표 하드디스크의 제어기가 상기 목표 하드디스크에 상기 중복제거될 데이터 블록을 저장하는 단계
를 포함한다.
본 발명의 제1 관점을 참조해서, 제1 가능한 실시 방식에서, 상기 데이터 중복제거 방법은:
상기 목표 하드디스크의 제어기가 상기 목표 하드디스크 내의 스토리지 어드레스를 상기 스위칭 장치를 통해 제1 제어기에 송신하는 단계 - 상기 목표 하드디스크 내의 스토리지 어드레스는 상기 목표 하드디스크의 제어기의 식별자 및 상기 목표 하드디스크에 중복제거될 데이터 블록을 저장하기 위한 논리 스토리지 어드레스를 포함함 - ; 및
상기 제1 제어기가 상기 중복제거될 데이터 블록의 고윳값 지수를 데이터 블록의 고윳값 지수 집합에 구성하는 단계
를 더 포함하며,
상기 중복제거될 데이터 블록의 고윳값 지수는 상기 중복제거될 데이터 블록의 고윳값 및 상기 목표 하드디스크 내의 스토리지 어드레스를 포함한다.
본 발명의 제1 관점을 참조해서, 제2 가능한 실시 방식에서, 상기 스토리지 어레이는 제2 제어기를 더 포함하고, 상기 제2 제어기는 상기 스위칭 장치에 접속되고, 상기 제2 제어기는 상기 중복제거될 데이터 블록의 어드레스를 저장하고, 상기 제2 제어기는 상기 중복제거될 데이터 블록이 위치하는 목표 논리 유닛의 홈 제어기이며,
상기 제1 제어기가 상기 캐시 장치로부터 중복제거될 데이터 블록의 고윳값을 수신하는 단계는 구체적으로,
상기 캐시 장치가 상기 중복제거될 데이터 블록의 고윳값을 상기 스위칭 장치를 통해 제2 제어기에 송신하는 단계;
상기 제2 제어기가, 상기 중복제거될 데이터 블록의 고윳값의 홈 제어기가 제1 제어기인 것으로 결정하는 단계; 및
상기 제2 제어기가 상기 중복제거될 데이터 블록의 고윳값을 상기 스위칭 장치를 통해 제1 제어기에 송신하는 단계
를 포함한다.
본 발명의 제1 관점의 제1 가능한 실시 방식을 참조해서, 제3 가능한 실시 방식에서, 상기 중복제거될 데이터 블록의 고윳값이 데이터 블록의 고윳값 지수 집합에서 발견되지 않을 때, 상기 데이터 중복제거 방법은,
상기 제1 제어기가 상기 스위치 장치를 통해 제2 제어기에 통지를 송신하는 단계 - 상기 통지는 상기 목표 하드디스크 내의 스토리지 어드레스를 반송함 - ; 및
상기 제2 제어기가 상기 통지에 따라 상기 중복제거될 데이터 블록의 어드레스, 상기 중복제거될 데이터 블록의 고윳값, 및 상기 목표 하드디스크 내의 스토리지 어드레스 간의 대응관계를 구성하는 단계
를 더 포함한다.
본 발명의 제1 관점의 제2 가능한 실시 방식을 참조해서, 제4 가능한 실시 방식에서, 상기 데이터 중복제거 방법은:
상기 제2 제어기가 상기 중복제거될 데이터 블록의 어드레스, 상기 중복제거될 데이터 블록의 고윳값, 및 상기 제1 제어기의 어드레스 간의 대응관계를 구성하는 단계
를 더 포함한다.
제2 관점에 따라, 본 발명의 실시예는 스토리지 어레이를 제공하며, 상기 스토리지 어레이는 스위칭 장치, 제1 제어기, 및 캐시 장치를 포함하며, 상기 제1 제어기는 상기 스위칭 장치에 접속되고, 상기 캐시 장치는 상기 스위칭 장치에 접속되며, 상기 스위칭 장치는 상기 스토리지 장치 내의 하드디스크에 접속되며,
상기 제1 제어기는 상기 캐시 장치로부터 중복제거될 데이터 블록의 고윳값을 수신하고, 상기 중복제거될 데이터 블록의 고윳값에 대한 데이터 블록의 고윳값 지수 집합을 검색하도록 구성되어 있으며,
상기 중복제거될 데이터 블록의 고윳값이 데이터 블록의 고윳값 지수 집합에서 발견되지 않을 때, 상기 제1 제어기는 상기 스위칭 장치를 통해 상기 캐시 장치 내의 중복제거될 데이터 블록의 캐시 어드레스를 획득하도록 추가로 구성되어 있으며,
상기 제1 제어기는 상기 스위칭 장치를 통해 목표 하드디스크의 제어기에 읽기 데이터 명령을 송신하도록 추가로 구성되어 있으며, 상기 읽기 데이터 명령은 상기 캐시 장치의 식별자 및 상기 캐시 어드레스를 반송하며,
상기 목표 하드디스크의 제어기는 상기 캐시 장치의 식별자 및 상기 캐시 어드레스에 따라 상기 스위칭 장치를 통해 상기 캐시 어드레스로부터 상기 중복제거될 데이터 블록을 판독하도록 구성되어 있으며, 그리고
상기 목표 하드디스크의 제어기는 상기 목표 하드디스크에 상기 중복제거될 데이터 블록을 저장하도록 추가로 구성되어 있다.
본 발명의 제2 관점을 참조해서, 제1 가능한 실시 방식에서, 상기 목표 하드디스크의 제어기는 목표 하드디스크 내의 스토리지 어드레스를 상기 스위칭 장치를 통해 제1 제어기에 송신하도록 추가로 구성되어 있으며, 상기 목표 하드디스크 내의 스토리지 어드레스는 상기 목표 하드디스크의 제어기의 식별자 및 상기 목표 하드디스크 내의 중복제거될 데이터 블록을 저장하기 위한 논리 저장 어드레스를 포함하며,
상기 제1 제어기는 상기 중복제거될 데이터 블록의 고윳값 지수를 데이터 블록의 고윳값 지수 집합에 구성하도록 추가로 구성되어 있으며, 상기 중복제거될 데이터 블록의 고윳값 지수는 상기 중복제거될 데이터 블록의 고윳값 및 상기 목표 하드디스크 내의 스토리지 어드레스를 포함한다.
본 발명의 제2 관점을 참조해서, 제2 가능한 실시 방식에서, 상기 스토리지 어레이는 제2 제어기를 더 포함하고, 상기 제2 제어기는 상기 스위칭 장치에 접속되고, 상기 제2 제어기는 상기 중복제거될 데이터 블록의 어드레스를 저장하고, 상기 제2 제어기는 상기 중복제거될 데이터 블록이 위치하는 목표 논리 유닛의 홈 제어기이며,
상기 제1 제어기가 상기 캐시 장치로부터 중복제거될 데이터 블록의 고윳값을 수신하는 것은 구체적으로,
상기 캐시 장치가 상기 중복제거될 데이터 블록의 고윳값을 상기 스위칭 장치를 통해 제2 제어기에 송신하는 단계;
상기 제2 제어기가, 상기 중복제거될 데이터 블록의 고윳값의 홈 제어기가 제1 제어기인 것으로 결정하는 단계; 및
상기 제2 제어기가 상기 중복제거될 데이터 블록의 고윳값을 상기 스위칭 장치를 통해 제1 제어기에 송신하는 단계
를 포함한다.
본 발명의 제2 관점의 제2 가능한 실시 방식을 참조해서, 제3 가능한 실시 방식에서, 상기 중복제거될 데이터 블록의 고윳값이 데이터 블록의 고윳값 지수 집합에서 발견되지 않을 때, 상기 제1 제어기는 상기 스위치 장치를 통해 제2 제어기에 통지를 송신하도록 추가로 구성되어 있으며, 상기 통지는 상기 목표 하드디스크 내의 스토리지 어드레스를 반송하며,
상기 제2 제어기는 상기 통지에 따라 상기 중복제거될 데이터 블록의 어드레스, 상기 중복제거될 데이터 블록의 고윳값, 및 상기 목표 하드디스크 내의 스토리지 어드레스 간의 대응관계를 구성하도록 추가로 구성되어 있다.
본 발명의 제2 관점의 제2 가능한 실시 방식을 참조해서, 제4 가능한 실시 방식에서, 상기 제2 제어기는 상기 중복제거될 데이터 블록의 어드레스, 상기 중복제거될 데이터 블록의 고윳값, 및 상기 제1 제어기의 어드레스 간의 대응관계를 구성하도록 구성되어 있다.
본 발명의 실시예에서 제공하는 데이터 중복제거 방법 및 스토리지 어레이에 따르면, 제어기는 스위칭 장치를 통해 캐시 장치에 접속되고, 제1 제어기는 캐시 장치로부터 중복제거될 데이터 블록의 고윳값을 수신하고, 중복제거될 데이터 블록의 고윳값에 대한 데이터 블록의 고윳값 지수 집합을 검색하며, 동일한 고윳값이 발견되지 않으면, 제1 제어기는 캐시 장치 내의 중복제거될 데이터 블록의 캐시 어드레스를 목표 하드디스크의 제어기에 송신하며, 목표 하드디스크의 제어기는 중복제거될 데이터 블록의 캐시 어드레스로부터 중복제거될 데이터 블록을 읽어낸다. 캐시 장치는 중복제거될 데이터 블록의 지문을 계산하고, 이에 의해 제어기의 계산 자원을 절감한다. 중복제거될 데이터 블록을 목표 하드디스크에 저장하는 프로세스 동안, 제1 제어기는 중복제거될 데이터 블록의 캐시 어드레스를 제공할 뿐이며, 목표 하드디스크의 제어기는 캐시 어드레스로부터 중복제거될 데이터 블록을 읽어내며, 이에 의해 제1 제어기의 계산 자원 및 메모리 자원을 절감하고 스토리지 어레이의 성능을 향상시킨다.
본 발명의 실시예의 기술적 솔루션을 더 명확하게 설명하기 위해, 이하에서는 본 발명의 실시예를 설명하는 데 필요한 첨부된 도면에 대해 간략하게 설명한다. 이하의 실시예의 첨부된 도면은 본 발명의 일부의 실시예에 지나지 않으며, 당업자라면 창조적 노력 없이 첨부된 도면으로부터 다른 도면을 도출해낼 수 있을 것이다.
도 1은 종래기술의 스토리지 어레이에 대한 구조도이다.
도 2는 본 발명의 실시예에 따른 스토리지 어레이에 대한 구조도이다.
도 3은 본 발명의 실시예에 따른 쓰기 데이터 요구를 처리하는 흐름도이다.
도 4는 본 발명의 실시예에 따른 쓰기 데이터 요구를 처리하는 흐름도이다.
도 5는 본 발명의 실시예에 따른 읽기 데이터 요구를 처리하는 흐름도이다.
도 6은 데이터 블록의 고윳값 지수 집합에 대한 개략도이다.
도 7은 본 발명의 실시예에 따른 데이터 중복제거 프로세싱에 대한 흐름도이다.
이하에서는 본 발명의 실시예에 첨부된 도면을 참조하여 본 발명의 실시예의 기술적 솔루션에 대해 명확하게 설명한다. 당연히, 설명된 실시예는 본 발명의 모든 실시예가 아닌 일부에 지나지 않는다. 당업자가 창조적 노력 없이 본 발명의 실시예에 기초하여 획득하는 모든 다른 실시예는 본 발명의 보호 범위 내에 있게 된다.
본 발명의 실시예에서 제공하는 스토리지 어레이는 입력/출력 관리자 A, 제어기 A, 입력/출력 관리자 B, 제어기 B, 스위칭 장치 A, 스위칭 장치 B, 및 캐시 장치 M을 포함한다. 제어기 A는 CPU A 및 메모리 A를 포함하며, 여기서 CPU A는 버스를 통해 메모리 A와 통신하며, 제어기 B는 CPU B 및 메모리 B를 포함하며, 여기서 CPU B는 버스를 통해 메모리 B와 통신한다. 입력/출력 관리자 A는 스위칭 장치 A 및 스위칭 장치 B에 접속되고, 입력/출력 관리자 B는 스위칭 장치 A 및 스위칭 장치 B에 접속되어 있다. 스위칭 장치 A는 스위칭 장치 B와 상호접속한다. 스위칭 장치 A 및 스위칭 장치 B는 모두 캐시 장치 M에 접속되어 있다. 캐시 장치 M에 대해서는 이하에 상세히 설명할 것이다. 제어기 A는 스위칭 장치 A 및 스위칭 장치 B에 접속되어 있고 제어기 B는 스위칭 장치 A 및 스위칭 장치 B에 접속되어 있다. 이상의 설명에 기초하여, 스위칭 장치 A와 스위칭 장치 B를 중심으로 입력/출력 관리자 A, 입력/출력 관리자 B, 제어기 A, 및 제어기 B가 완전한 상호접속 아키텍처를 형성한다. 도 2에 도시된 스토리지 어레이에서, 스위칭 장치 A는 모든 하드디스크에 접속되고, 스위칭 장치 B도 모든 하드디스크에 접속된다. 제어기 A 및 제어기 B 모두는 도 2에 도시된 모든 하드디스크와 통신한다. 구체적으로, 제어기 A는 스위칭 장치 A를 통해 모든 하드디스크와 통신하고 제어기 B는 스위칭 장치 B를 통해 모든 하드디스크와 통신한다. 제어기 A는 하드디스크를 가상화하여 논리 유닛(logical unit, LU) A를 형성하도록 구성되며, 이것은 호스트 A에 적용 가능하다. LU A는 호스트 A에 장착되고, 호스트 A는 제어기 A를 통해 LU A에 대한 데이터 액세스 동작을 수행한다. 여기서, LU A는 제어기 A에 안착되는데, 즉 제어기 A는 LU A의 홈 제어기이다. 마찬가지로, 제어기 B는 하드디스크를 가상화하여 LU B를 형성하도록 구성되어 있으며, 이것은 호스트 B에 적용 가능하다. LU B는 호스트 B에 장착되며, 호스트 B는 제어기 B를 통해 LU B에 대한 데이터 액세스 동작을 수행한다. 여기서 LU B는 제어기 B에 안착되는데, 즉 제어기 B는 LU B의 홈 제어기이다. 여기서 호스트는 물리적 호스트(또는 물리적 서버로 칭함) 또는 가상 호스트(또는 가상 서버로 칭함)일 수 있다. 논리 유닛 LU는 일반적으로 업계에서 논리 유닛 번호(Logical Unit Number, LUN)라 한다. 실제로 호스트에 LUN을 할당하는 것을 호스트에 LU의 식별자를 할당한다고 하며, 이에 따라 LU는 호스트에 장착된다. 그러므로 LU 및 LUN은 여기서 동일한 의미이다. 도 2에 도시된 스토리지 어레이에서, 스위칭 장치 A 및 B는 PCIe 스위칭 장치일 수 있거나, 비휘발성 메모리 익스프레스 전송 버스(Non-Volatile Memory express, NVMe) 스위칭 장치, 시리얼 부착 소형 컴퓨터 시스템 인터페이스(Serial attached SCSI, SAS) 스위칭 장치 등일 수 있으며, 이는 본 발명의 실시예에서 제한을 두지 않는다. 스위칭 장치 A 및 B가 PCIe 스위칭 장치일 때, PCIe 스위칭 장치에 접속된 하드디스크는 PCIe 프로토콜 인터페이스를 가진 하드디스크이고; 스위칭 장치 A 및 B가 NVMe 스위칭 장치일 때, NVMe 스위칭 장치에 접속된 하드디스크는 NVMe 프로토콜 인터페이스를 가진 하드디스크이고; 스위칭 장치 A 및 B가 SAS 스위칭 장치일 때, SAS 스위칭 장치에 접속된 하드디스크는 SAS 프로토콜 인터페이스를 가진 하드디스크이다. 도 2에 도시된 하드디스크는 기계적 하드디스크, 솔리드 스테이트 디스크(Solid State Disk, SSD), 또는 다른 매체로 이루어진 하드디스크일 수 있다. 도 2에 도시된 스토리지 어레이 내의 하드디스크와 관련해서, 다른 디스크로 이루어진 스토리지 매체는 다를 수 있으므로, 하이브리드 하드디스크 스토리지 어레이가 형성되며, 이는 본 발명의 실시예에서 제한을 두지 않는다.
캐시 장치 M은 구체적으로 상 변화 메모리(Phase Change Memory, PCM)와 같이, 휘발성 스토리지 매체 또는 비휘발성 스토리지 매체로 형성되는 스토리지 장치일 수 있거나, 캐시 장치로서 사용되는 데 적합한 다른 비휘발성 스토리지 매체일 수 있으며, 이는 본 발명의 실시예에서 제한을 두지 않는다. 캐시 장치 M은 데이터를 캐싱하도록 구성되어 있다. 이하에서는 본 발명의 특정한 실시예를 참조하여 캐시 장치 M에 대해 설명한다. 본 발명의 실시예에서는, 스위칭 장치 A가 PCIe 스위칭 장치이고, 스위칭 장치 B가 PCIe 스위칭 장치이며, 하드디스크는 PCIe 프로토콜 인터페이스를 가진 SSD인 것을 예로 들어 설명한다.
도 2에 도시된 스토리지 어레이에서, 입력/출력 관리자 A는 호스트에 의해 송신된 쓰기 데이터 요구를 수신한다. 실시 방식에서, 제어기 A는 입력/출력 관리자 A의 홈 제어기이다. 그러므로 입력/출력 관리자 A는 호스트에 의해 송신된 데이터 동작 요구를 수신한다. 입력/출력 관리자 A의 요구 송신 정책이 변경되지 않는 경우, 그 요구는 데이터 동작 요구에 따라 디폴트에 의해 제어기 A에 송신되고, 따라서 제어기 A를 입력/출력 관리자 A의 홈 제어기라 칭한다. 본 발명의 실시예에서, 입력/출력 관리자 A는 호스트에 의해 송신된 쓰기 데이터 요구를 수신하고, 이 쓰기 데이터 요구를 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 b를 통해 제어기 A에 송신한다. 요구가 포워딩되는 특정한 PCIe 스위칭 장치와 관련해서, 미리 정한 규칙에 따라 결정될 수 있다. PCIe 스위칭 장치가 일단 선택되면, 그 후에 입력/출력 관리자 A는 PCIe 스위칭 장치를 통해 제어기 A와 통신한다. 당연히, 입력/출력 관리자 A도 PCIe 스위칭 장치를 무작위로 선택하여 제어기 A와 통신할 수 있으며, 이는 본 발명의 이 실시예에서 제한을 두지 않는다. 본 발명의 이 실시예는 입력/출력 관리자 A가 스위칭 장치 A를 선택하여 제어기 A와 통신하는 예를 사용한다.
입력/출력 관리자 A에 의해 수신된 쓰기 요구 데이터는 나중에 써넣을 데이터(to-be-written data)의 어드레스를 반송(搬送)한다. 나중에 써넣을 데이터의 어드레스는 나중에 써넣을 데이터의 목표 LU의 식별자, 나중에 써넣을 데이터의 논리 블록 어드레스(Logical Block Address, LBA), 및 나중에 써넣을 데이터의 길이를 포함한다. 입력/출력 관리자 A는 제어기 A에 나중에 써넣을 데이터 요구를 송신한다. 제어기 A는 나중에 써넣을 데이터를 수신하고, 나중에 써넣을 데이터의 어드레스에 나중에 써넣을 데이터의 목표 LU의 식별자에 따라, 제어기 A가 목표 LU의 홈 제어기인지를 판정한다.
제어기 A가 목표 LU의 홈 제어기일 때, 즉 목표 LU가 하드디스크를 가상화함으로써 제어기 A에 의해 생성되어 호스트에 제공된다. 제어기 A는 나중에 써넣을 데이터를 캐싱하는 데 사용되는 캐시 장치를 결정하는데, 이 캐시 장치가 본 발명의 이 실시예에서 캐시 장치 M이다. 실시 방식은 다음과 같다: 제어기 A는 쓰기 데이터 요구에 따라, 캐시 어드레스를 나중에 써넣을 데이터에 할당하도록 캐시 장치 M에 명령하고, 캐시 장치 M은 나중에 써넣을 데이터의 길이에 따라 캐시 어드레스를 할당한다. 제어기 A는 캐시 장치 M에 의해 나중에 써넣을 데이터에 할당된 캐시 어드레스를 획득한다(이하에서는 캐시 장치 M에 의해 나중에 써넣을 데이터에 할당된 캐시 어드레스를 캐시 어드레스 M이라 하고, 실시 방식에서, 캐시 어드레스는 시작 어드레스 및 길이를 포함한다). 제어기 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 PCIe 스위칭 장치 A를 통해 입력/출력 관리자 A에 송신한다. 입력/출력 관리자 A는 제어기 A에 의해 송신되는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 수신하고, 캐시 장치 M의 식별자 및 캐시 어드레스 M에 따라 나중에 써넣을 데이터를 캐시 어드레스 M에 쓴다(또는 나중에 써넣을 데이터를 캐시 어드레스 M에 직접적으로 쓸 수도 있다). 제어기 A는 나중에 써넣을 데이터에 할당된 캐시 어드레스 M만을 획득하고, 입력/출력 관리자 A는 나중에 써넣을 데이터를 PCIe 스위칭 장치 A를 통해 캐시 어드레스 M에 써넣는데, 이것을 종래기술과 비교해 보면, 제어기 A의 CPU 계산 자원과 제어기 A의 메모리 자원을 절감하고 데이터 쓰기 효율성을 향상시킨다.
제어기 A는 나중에 써넣을 데이터의 어드레스, 캐시 장치 M의 식별자, 및 캐시 어드레스 M 간의 대응관계를 구성하며, 그러므로 나중에 써넣을 데이터를 읽을 때, 제어기 A는 나중에 써넣을 데이터의 캐시 어드레스 M을 입력/출력 관리자 A에 송신하고, 입력/출력 관리자 A는 나중에 써넣을 데이터의 캐시 어드레스 M으로부터 나중에 써넣을 데이터를 읽어낼 수 있으며(또는 나중에 써넣을 데이터의 캐시 어드레스 M으로부터 나중에 써넣을 데이터를 직접적으로 읽어낼 수 있으며), 이에 의해 제어기 A의 CPU 계산 자원과 제어기 A의 메모리 자원을 절감하고 데이터 쓰기 효율성을 향상시킨다.
조건을 만족한 후, 스토리지 어레이가 데이터 중복제거를 수행하지 않으면, 캐시 장치 M은 나중에 써넣을 데이터를 스토리지 어레이의 목표 SSD에 저장한다. 목표 SSD를 나중에 써넣을 데이터를 저장하기 위한 SSD라 한다. 나중에 써넣을 데이터를 목표 SSD에 써넣는 특정한 프로세스는 다음과 같을 수 있다: 제어기 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 목표 SSD의 제어기에 송신한다. 목표 SSD의 제어기는 캐시 장치 M의 식별자 및 캐시 어드레스 M에 따라 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 캐시 어드레스 M으로부터 나중에 써넣을 데이터를 직접적으로 읽어내고, 이 나중에 써넣을 데이터를 저장한다. 목표 SSD의 제어기는 목표 SSD에 나중에 써넣을 데이터의 스토리지 어드레스를 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 제어기 A에 저장한다. 목표 SSD에 나중에 써넣을 데이터의 스토리지 어드레스는 목표 SSD의 제어기의 식별자 및 목표 SSD에 나중에 써넣을 데이터를 저장하기 위한 논리 스토리지 어드레스를 포함한다. 제어기 A는 나중에 써넣을 데이터의 어드레스와 목표 SSD에 나중에 써넣을 데이터의 스토리지 어드레스 간의 대응관계를 구성한다.
전술한 프로세스는 구체적으로 도 3에 도시되어 있다.
단계 301: 호스트는 입력/출력 관리자 A에 쓰기 데이터 요구를 송신한다.
입력/출력 관리자 A는 스토리지 어레이 내의 입력/출력 수신 관리 장치이며, 호스트에 의해 송신된 데이터 동작 요구를 수신하고 이 데이터 동작 요구를 제어기에 포워딩하는 것을 담당한다. 본 발명의 실시예에서, 호스트는 나중에 써넣을 데이터의 어드레스를 반송하는 쓰기 데이터 요구를 입력/출력 관리자 A에 송신한다. 예시적으로, 소형 컴퓨터 시스템 인터페이스(small computer system interface, SCSI) 프로토콜, 즉, SCSI 프로토콜 쓰기 데이터 요구는 쓰기 데이터 요구에 사용될 수 있다. 당연히, 다른 프로토콜도 사용될 수 있으며, 이것은 본 발명의 실시예에서 제한을 두지 않는다.
단계 302: 쓰기 데이터 요구를 제어기 A에 송신한다.
본 발명의 이 실시예에서, 입력/출력 관리자 A는 일반적으로 특정한 제어기와 통신한다. 입력/출력 관리자 A는 예를 들어 제어기의 부하에 따라, 또는 특정한 경로 선택 알고리즘에 따라, 다양한 방식으로 제어기와의 대응관계를 구성할 수 있으며, 이것은 본 발명에 의해 제한되지 않는다. 입력/출력 관리자 A는 쓰기 데이터 요구를 수신하고, 이 쓰기 데이터 요구를 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 제어기 A에 송신한다. 본 발명의 이 실시예에서는, 입력/출력 관리자 A가 쓰기 데이터 요구를 수신하고 이 쓰기 데이터 요구를 PCIe 스위칭 장치 A에 송신하는 것을 예로 사용한다.
단계 303: 제어기 A는 나중에 써넣을 데이터의 캐시 어드레스를 획득한다.
제어기 A는 입력/출력 관리자 A에 의해 송신된 쓰기 데이터 요구를 수신하고, 나중에 써넣을 데이터를 캐싱하는 데 사용되는 캐시 장치를 결정하며, 이 캐시 장치는 본 발명의 이 실시예에서 캐시 장치 M이다. 실시 방식에서, 캐시 장치 M은 제어기 A에 캐시 어드레스의 세그먼트를 할당한다. 캐시 어드레스의 세그먼트에서, 제어기 A는 나중에 써넣을 데이터의 길이에 따라 나중에 써넣을 데이터에 캐시 어드레스 M을 할당한다. 다른 실시 방식에서, 제어기 A는 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 캐시 장치 M에 명령을 송신하며, 여기서 상기 명령은 나중에 써넣을 데이터의 길이를 반송하고 나중에 써넣을 데이터에 캐시 어드레스를 할당하도록 캐시 장치 M에 명령한다. 제어기 A는 캐시 어드레스 M을 획득한다.
단계 304: 캐시 장치 M의 식별자 및 캐시 어드레스 M을 송신한다.
제어기 A는 캐시 어드레스 M을 획득하고, 캐시 장치 M의 식별자 및 캐시 어드레스 M을 PCIe 스위칭 장치 A를 통해 입력/출력 관리자 A에 송신하며, 여기서 캐시 장치 M의 식별자는 장치 어드레스이다.
단계 305: 호스트는 나중에 써넣을 데이터를 입력/출력 관리자 A에 송신한다.
입력/출력 관리자 A는 제어기 A에 의해 송신되는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 수신하고 호스트에 의해 송신된 나중에 써넣을 데이터를 수신한다.
단계 306: 나중에 써넣을 데이터를 캐시 어드레스 M에 써넣는다.
입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M에 따라 PCIe 스위칭 장치 A를 통해 캐시 어드레스 M에 나중에 써넣을 데이터를 써넣는다. 입력/출력 관리자 A는 PCIe 스위칭 장치 A를 통해 캐시 장치 M에 의해 송신되는, 나중에 써넣을 데이터가 성공적으로 써넣어졌음을 나타내는 응답을 수신한다. 입력/출력 관리자 A는 쓰기 데이터 요구가 호스트에 완료되었음을 나타내는 응답을 송신하고, 쓰기 요구 동작이 완료되었음을 호스트에 통지한다.
단계 307: 나중에 써넣을 데이터가 캐시 어드레스 M에 써넣어졌다는 것을 제어기 A에 통지한다.
입력/출력 관리자 A는 나중에 써넣을 데이터를 캐시 어드레스 M에 성공적으로 써넣고, 나중에 써넣을 데이터가 캐시 어드레스 M에 써넣어졌다는 것을 제어기 A에 통지한다.
단계 308: 제어기 A는 나중에 써넣을 데이터의 어드레스, 캐시 장치 M, 및 캐시 어드레스 M 간의 대응관계를 구성한다.
제어기 A는 입력/출력 관리자 A에 의해 송신된 통지를 수신하고, 나중에 써넣을 데이터의 어드레스, 캐시 장치 M, 및 캐시 어드레스 M 간의 대응관계를 구성한다.
캐시 장치 M은 나중에 써넣을 데이터에 캐시 어드레스 M을 할당하고, 이에 의해 나중에 써넣을 데이터의 어드레스와 캐시 장치 M 간의 대응관계가 구성된다. 캐시 장치 M은 제어기 A에 의해 송신된 캐시 어드레스 할당 명령으로부터 나중에 써넣을 데이터의 어드레스를 획득할 수 있고, 캐시 어드레스 M을 할당한 후, 캐시 장치 M은 나중에 써넣을 데이터의 어드레스와 캐시 장치 M 간의 대응관계를 구성한다. 다른 실시 방식에서, 캐시 장치 M은 목표 LU의 배타적 캐시 장치이고, 목표 LU의 캐시 데이터를 캐싱하는 데만 사용되며, 그러므로 캐시 장치 M은 목표 LU, 목표 LU에서의 LBA, 및 캐시 어드레스 간의 대응관계를 디폴트에 의해 저장한다. 캐시 장치 M은 목표 LU, 목표 LU에서의 LBA, 및 캐시 장치 M의 캐시 어드레스 간의 대응관계를 디폴트에 의해 저장한다. 캐시 어드레스의 이 세그먼트에서, 캐시 장치 M은 캐시 어드레스 M을 나중에 써넣을 데이터에 할당한다.
스토리지 어레이의 신뢰도를 높이고 나중에 써넣을 데이터의 다중 사본을 캐싱하기 위해, 도 1에 도시된 종래기술에서는 입력/출력 관리자 A가 나중에 써넣을 데이터를 송신하고, CPU A는 이 나중에 써넣을 데이터를 메모리 A에 쓰고, CPU A는 메모리 A로부터 나중에 써넣을 데이터를 읽으며, 이 나중에 써넣을 데이터를 PCIe 스위치 A를 통해 PCIe 스위치 B에 송신한다. PCIe 스위치 B는 나중에 써넣을 데이터를 CPU B에 송신하고, CPU B는 나중에 써넣을 데이터를 메모리 B에 쓴다. 본 발명의 이 실시예에서, 캐시 장치 M에서 나중에 써넣을 데이터가 손실되는 것을 방지하기 위해, 스토리지 어레이는 나중에 써넣을 데이터를 복수의 캐시 장치에 캐싱한다. 그러므로 나중에 써넣을 데이터가 2개의 캐시 장치에 캐싱되는 것을 예로 사용한다. 도 2에 도시된 스토리지 어레이는 캐시 장치 N을 더 포함한다. PCIe 스위칭 장치 A 및 PCIe 스위칭 장치 B는 모두 캐시 장치 N에 접속된다. 그러므로 제어기 A는 입력/출력 관리자 A에 의해 송신된 쓰기 데이터 요구를 수신하고, 캐시 장치 M이 프라이머리 캐시 장치로서 기능하여 나중에 써넣을 데이터를 캐싱하는 것으로 결정하며, 캐시 장치 N이 세컨더리 캐시 장치로서 기능하여 나중에 써넣을 데이터를 캐싱하는 것으로 결정한다. 제어기 A는 나중에 써넣을 데이터에 할당되고 캐시 장치 M 및 캐시 장치 N에 위치하는 캐시 어드레스를 획득한다. 실시 방식에서, 제어기 A는 캐시 장치 M 및 캐시 장치 N 각각에 명령을 송신하며, 여기서 상기 명령은 캐시 어드레스를 나중에 써넣을 데이터에 할당하도록 캐시 장치 M 및 캐시 장치 N 모두에 명령하는 데 사용된다. 명령은 나중에 써넣을 데이터의 길이를 반송한다. 캐시 장치 M에 의해 나중에 써넣을 데이터에 할당된 캐시 어드레스를 캐시 어드레스 M이라 하고, 캐시 장치 N에 의해 나중에 써넣을 데이터에 할당된 캐시 어드레스를 캐시 어드레스 N이라 한다. 제어기 A는 캐시 어드레스 M 및 캐시 어드레스 N을 획득한다. 제어기 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 PCIe 스위칭 장치 A를 통해 입력/출력 관리자 A에 송신하고, 캐시 장치 N의 식별자 및 캐시 어드레스 N을 PCIe 스위칭 장치 A를 통해 입력/출력 관리자 A에 송신한다. 특정한 실시에서, 제어기 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M, 및 캐시 장치 N의 식별자 및 캐시 어드레스 N을, 하나의 메시지를 통해 또는 2개의 메시지를 각각 통해 입력/출력 관리자 A에 송신하고, 이것은 여기서 제한되지 않는다. 다른 실시 방식에서, 캐시 장치 M은 캐시 어드레스의 배타적 세그먼트를, 홈 제어기 A의 LU의 데이터를 캐싱하는 데만 사용되는 제어기 A에 할당한다. 캐시 장치 M의 캐시 어드레스의 이 세그먼트에서, 제어기 A는 캐시 어드레스 M을 나중에 써넣을 데이터에 할당한다. 캐시 장치 N은 캐시 어드레스의 배타적 세그먼트를 제어기 A에 할당하고, 캐시 장치 N의 캐시 어드레스의 세그먼트에서, 제어기 A는 캐시 어드레스 N을 나중에 써넣을 데이터에 할당한다.
입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 수신하고, 캐시 장치 N의 식별자 및 캐시 어드레스 N을 수신한다. 입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M에 따라 PCIe 스위칭 장치 A를 통해 나중에 써넣을 데이터를 캐시 어드레스 M에 직접적으로 쓰고; 입력/출력 관리자 A는 캐시 장치 N의 식별자 및 캐시 어드레스 N에 따라 PCIe 스위칭 장치 A를 통해 나중에 써넣을 데이터를 캐시 어드레스 N에 직접적으로 쓴다. 입력/출력 관리자 A는 PCIe 스위칭 장치 A를 통해 나중에 써넣을 데이터가 캐시 어드레스 M에 성공적으로 써넣어졌음을 나타내는 응답을 수신하고, 나중에 써넣을 데이터의 어드레스, 캐시 장치 M의 식별자, 및 캐시 어드레스 M 간의 대응관계를 구성하도록 제어기 A에 명령한다. 마찬가지로, 제어기 A는 나중에 써넣을 데이터의 어드레스, 캐시 장치 N의 식별자, 및 캐시 어드레스 N 간의 대응관계를 구성한다.
다른 실시 방식에서, 제어기 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 PCIe 스위칭 장치 A를 통해 입력/출력 관리자 A에 송신한다. 입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 수신한다. 입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M에 따라 PCIe 스위칭 장치 A 및 PCIe 스위칭 장치 B를 통해 나중에 써넣을 데이터를 캐시 어드레스 M에 직접적으로 쓴다. 제어기 A는 PCIe 스위칭 장치 A 및 PCIe 스위칭 장치 B를 통해 쓰기 데이터 명령을 캐시 장치 M에 송신하고, 여기서 쓰기 데이터 명령은 캐시 장치 N의 식별자 및 캐시 어드레스 N을 반송한다. 캐시 장치 M은 나중에 써넣을 데이터를 캐싱하고, 캐시 장치 M은 쓰기 데이터 명령에 따라 PCIe 스위칭 장치 A 및 PCIe 스위칭 장치 B를 통해 나중에 써넣을 데이터를 캐시 어드레스 N에 직접적으로 쓴다.
제어기 N은 나중에 써넣을 데이터에 할당되는 캐시 어드레스 M 및 캐시 어드레스 N을 획득하기만 하면 되며, 이에 따라 입력/출력 관리자 A는 캐시 어드레스 M 및 캐시 어드레스 N에 나중에 써넣을 데이터의 쓰기를 수행하며, 이에 의해 제어기 A의 CPU 계산 자원 및 제어기 A의 메모리 자원을 절감하고 데이터 쓰기 효율성을 향상시킨다.
다른 경우, 입력/출력 장치 A는 호스트의 쓰기 데이터 요구를 수신한다. 쓰기 데이터 요구는 나중에 써넣을 데이터의 어드레스를 반송한다. 입력/출력 장치 A는 PCIe 스위칭 장치 A에 의한 포워딩에 의해 쓰기 데이터 요구를 제어기 A에 송신한다. 제어기 A는 입력/출력 장치 A에 의해 송신된 쓰기 데이터 요구를 수신하고, 쓰기 데이터 요구를 통해 반송되는 목표 LU의 식별자에 따라, 제어기 A가 목표 LU의 홈 제어기가 아닌 것으로 결정한다. 특정한 실시예가 도 4에 도시되어 있다.
단계 401: 호스트는 입력/출력 관리자 A에 쓰기 데이터 요구를 송신한다.
호스트는 입력/출력 관리자 A에 쓰기 데이터 요구를 송신하여, 여기서 쓰기 데이터 요구는 나중에 써넣을 데이터의 어드레스를 반송한다.
단계 402: 나중에 써넣을 데이터를 제어기 A에 송신한다.
본 발명의 이 실시예에서, 제어기 A는 입력/출력 관리자 A의 홈 제어기이다. 입력/출력 관리자 A는 쓰기 데이터 요구를 수신하고, 이 쓰기 데이터 요구를 PCIe 스위칭 장치 A 및 PCIe 스위칭 장치 B를 통해 제어기 A에 송신한다. 본 발명의 이 실시예에서는, 입력/출력 관리자 A가 쓰기 데이터 요구를 수신하고 이 쓰기 데이터 요구를 PCIe 스위칭 장치 A를 통해 제어기 A에 송신하는 것을 예로 사용한다.
단계 403: 제어기 A가 목표 LU의 홈 제어기가 아닌 것으로 결정한다.
제어기 A는 입력/출력 관리자 A에 의해 송신된 쓰기 데이터 요구를 수신하고, 쓰기 데이터 요구를 반송하는 나중에 써넣을 데이터의 목표 LU의 식별자에 따라, 제어기 A가 목표 LU의 홈 제어기가 아닌 것으로 결정한다. 제어기 A는 제어기와 LU 간의 대응관계를 질의하고, 제어기 B가 목표 LU의 홈 제어기인 것으로 결정한다.
단계 404: 나중에 써넣을 데이터를 제어기 B에 송신한다.
제어기 A는 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 쓰기 데이터 요구를 제어기 B에 송신한다. 이 실시예에서는, PCIe 스위칭 장치 B가 제어기 B에 쓰기 데이터 요구를 포워딩하는 것을 예로 사용한다.
단계 405: 나중에 써넣을 데이터의 캐시 어드레스를 획득한다.
제어기 B는 제어기 A에 의해 송신된 쓰기 데이터 요구를 수신하고, 나중에 써넣을 데이터를 캐싱하는 데 사용되는 캐시 장치를 결정하며, 이 캐시 장치는 본 발명의 실시예에서 캐시 장치 M이다. 특정한 실시 방식에 대해서는, 제어기 A가 캐시 장치 M으로부터 나중에 써넣을 데이터의 캐시 어드레스를 획득하는 방식을 참조한다.
단계 406: 캐시 장치 M의 식별자 및 캐시 어드레스 M을 제어기 A에 송신한다.
제어기 B는 캐시 어드레스 M을 획득하고, PCIe 스위칭 장치 B를 통해 캐시 장치 M의 식별자 및 캐시 어드레스 M을 제어기 A에 송신한다. 다른 실시 방식에서, 캐시 장치 M의 식별자 및 캐시 어드레스 M은 또한 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 제어기 A에 직접적으로 송신될 수 있다.
단계 407: 캐시 장치 M의 식별자 및 캐시 어드레스 M을 입력/출력 관리자 A에 송신한다.
제어기 A는 제어기 B에 의해 송신된 캐시 장치 M의 식별자 및 캐시 어드레스 M을 제어기 A에 수신하고, PCIe 스위칭 장치를 통해 나중에 써넣을 데이터의 캐시 어드레스 M을 송신한다.
단계 408: 호스트는 입력/출력 관리자 A에 나중에 써넣을 데이터를 송신한다.
입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 수신하고, 호스트에 의해 송신된 쓰기 데이터 요구에 응답한다. 호스트는 쓰기 데이터 요구를 입력/출력 관리자 A에 송신한다.
단계 409: 나중에 써넣을 데이터를 캐시 어드레스 M에 쓴다.
입력/출력 관리자 A는 호스트에 의해 송신된 나중에 써넣을 데이터를 수신하고, 캐시 장치 M의 식별자 및 캐시 어드레스 M에 따라 PCIe 스위칭 장치 A를 통해 나중에 써넣을 데이터를 캐시 어드레스 M에 직접적으로 쓴다. 입력/출력 관리자 A는 PCIe 스위칭 장치 A를 통해 캐시 장치 M에 의해 송신되는, 나중에 써넣을 데이터가 성공적으로 써넣어졌음을 나타내는 응답을 수신한다. 입력/출력 관리자 A는 쓰기 데이터 요구가 호스트에 완료되었음을 나타내는 응답을 송신하고, 쓰기 요구 동작이 완료되었음을 호스트에 통지한다.
단계 410: 나중에 써넣을 데이터가 캐시 어드레스 M에 써넣어졌다는 것을 제어기 B에 통지한다.
입력/출력 관리자 A는 나중에 써넣을 데이터를 캐시 어드레스 M에 성공적으로 쓰고, 나중에 써넣을 데이터를 캐시 어드레스 M에 써넣어졌다는 것을 제어기 B에 통지한다. 이것은 구체적으로 입력/출력 관리자 A가 PCIe 스위칭 장치 A를 통해 제어기 A에 통지를 포워딩하는 것과, 제어기 A가 PCIe 스위칭 장치 B를 통해 제어기 B에 통지를 포워딩하는 것; 또는 입력/출력 관리자 A가 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 제어기 B에 통지를 포워딩하는 것을 포함한다.
단계 411: 제어기 B는 나중에 써넣을 데이터의 어드레스, 캐시 장치 M, 캐시 어드레스 M 간의 대응관계를 구성한다.
제어기 B는 입력/출력 관리자 A에 의해 송신된 통지를 수신하고, 나중에 써넣을 데이터의 어드레스, 캐시 장치 M, 및 캐시 어드레스 M 간의 대응관계를 구성한다.
캐시 장치 M이 나중에 써넣을 데이터의 어드레스와 캐시 어드레스 M 간의 대응관계를 구성하는 방법에 대해서는 전술한 실시예에서의 상세한 설명을 참조하면 되므로 이에 대해서는 여기서 다시 설명하지 않는다.
캐시 장치 N은 캐시 어드레스 N을 나중에 써넣을 데이터에 할당하고, 이에 의해 나중에 써넣을 데이터의 어드레스와 캐시 어드레스 N 간의 대응관계가 구축된다. 캐시 장치 N는 제어기 A에 의해 캐시 어드레스 할당 명령으로부터 나중에 써넣을 데이터의 어드레스를 획득하며, 캐시 어드레스 N을 할당한 후, 캐시 장치 N은 나중에 써넣을 데이터의 어드레스와 캐시 어드레스 N 간의 대응관계를 구성한다.
캐시 장치 M에서 캐싱되는 나중에 써넣을 데이터가 손실되는 것을 방지하기 위해, 나중에 써넣을 데이터가 캐시로서 기능할 복수의 캐시 장치를 필요로 할 때, 제어기 A가 나중에 써넣을 데이터의 목표 LU의 홈 제어기가 아닌 시나리오에서, 입력/출력 관리자 A는 제어기 B에 쓰기 데이터 요구를 송신한다. 이에 대한 프로세스에 대해서는 전술한 실시예에서의 상세한 설명을 참조한다. 제어기 B의 나중에 써넣을 데이터의 캐시 어드레스를 획득하는 프로세스에 대해서는, 제어기 A가 나중에 써넣을 데이터의 목표 LU의 홈 제어기이고 제어기 A가 복수의 캐시 장치의 캐시 어드레스를 획득하는 시나리오를 참조한다. 다른 단계에 대해서는 마찬가지로 전술한 실시예에서의 상세한 설명을 참조하며 이에 대해서는 여기서 다시 설명하지 않는다.
호스트가 스토리지 어레이에 데이터를 써넣은 후, 호스트는 그 써넣어진 데이터에 액세스하는데, 즉 읽기 데이터 요구를 송신한다. 특정한 프로세스가 도 5에 도시되어 있다.
단계 501: 읽기 데이터 요구를 송신한다.
호스트는 입력/출력 관리자 A에 읽기 데이터 요구를 송신하고, 여기서 읽기 데이터 요구는 나중에 읽을 데이터(to-be-read data)의 어드레스를 반송한다. 나중에 읽을 데이터의 어드레스는 나중에 읽을 데이터가 위치하는 논리 유닛 LU의 식별자, 나중에 읽을 데이터의 LBA, 및 나중에 읽을 데이터의 길이를 포함한다. 구체적으로, 호스트는 SCSI 프로토콜을 사용함으로써 입력/출력 관리자 A에 읽기 데이터 요구를 송신할 수 있으며, 이는 본 발명에 의해 제한되지 않는다. 설명을 쉽게 하기 위해, 여기서의 나중에 읽을 데이터는 위에서 언급한 나중에 써넣을 데이터이다.
단계 502: 제어기 A에 읽기 데이터 요구를 송신한다.
입력/출력 관리자 A는 호스트에 의해 송신된 읽기 데이터 요구를 수신하고, 이 읽기 데이터 요구를 PCIe 스위칭 장치 A를 통해 제어기 A에 송신한다.
단계 503: 제어기 A는 입력/출력 관리자 A에 캐시 장치 M의 어드레스 및 캐시 어드레스 M을 송신한다.
제어기 A가 나중에 읽을 데이터가 위치하고 나중에 읽을 데이터가 캐시 장치 M과 같은 캐시 장치에서 캐싱되는 LU의 홈 제어기이며, 나중에 읽을 데이터의 어드레스, 캐시 장치의 식별자, 및 캐시 어드레스 간의 대응관계는 읽기 데이터 요구에 따라 질의되고, 캐시 장치 M 내의 나중에 읽을 데이터를 캐싱하는 데 사용되는 캐시 어드레스 M이 결정된다. 나중에 읽을 데이터가 캐시 장치 M에서 여전히 캐싱될 때, 캐시 장치 M의 나중에 읽을 데이터의 캐시 어드레스는 캐시 어드레스 M이다. 제어기 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 PCIe 스위칭 장치 A를 통해 입력/출력 관리자 A에 송신한다.
단계 504: 캐시 어드레스 M으로부터 나중에 읽을 데이터를 읽어낸다.
입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M에 따라 PCIe 스위칭 장치 A를 통해 캐시 어드레스 M으로부터 나중에 읽을 데이터를 읽는다.
단계 505: 나중에 읽을 데이터를 되돌려보낸다.
입력/출력 관리자 A는 캐시 어드레스 M으로부터 나중에 읽을 데이터를 읽고, 이 나중에 읽을 데이터를 호스트에 되돌려보낸다.
입력/출력 관리자 A는 읽기 데이터 요구에 따라 PCIe 스위칭 장치 A를 통해 제어기 A에 나중에 읽을 데이터 질의 요구를 송신할 때, 제어기 A는 나중에 읽을 데이터가 위치하는 LU의 홈 제어기이며, 제어기 A는 나중에 읽을 데이터가 위치하는 LU와 홈 제어기 간의 대응관계를 질의하고, 제어기 B가 나중에 읽을 데이터가 위치하는 LU의 홈 제어기인 것으로 결정한다. 제어기 A는 나중에 읽을 데이터 질의 요구를 PCIe 스위칭 장치 B를 통해 제어기 B에 송신한다. 전술한 나중에 읽을 데이터가 여전히 여기서 언급된 나중에 읽을 데이터인 것을 예로 사용한다. 그러므로 나중에 읽을 데이터의 어드레스는 전술한 나중에 읽을 데이터의 어드레스이다. 나중에 읽을 데이터가 캐시 장치 M에서 여전히 캐싱될 때, 캐시 장치 M 내의 나중에 읽을 데이터의 캐시 어드레스는 캐시 어드레스 M이다. 제어기 B는 나중에 읽을 데이터의 어드레스, 캐시 장치 M의 식별자, 및 캐시 어드레스 M 간의 대응관계를 질의하고, 나중에 읽을 데이터를 캐싱하는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 결정하며, 캐시 장치 M의 식별자 및 캐시 어드레스 M을 PCIe 스위칭 장치 B를 통해 제어기 A에 송신한다. 제어기 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 PCIe 스위칭 장치 A를 통해 입력/출력 관리자 A에 송신한다. 제어기 B 역시 캐시 장치 M의 식별자 및 캐시 어드레스 M을 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 입력/출력 관리자 A에 직접적으로 송신할 수 있다. 후속의 읽기 동작에 대해서는 전술한 실시예에서의 읽기 동작을 참조하면 되므로 이에 대해서는 여기서 다시 설명하지 않는다.
전술한 나중에 써넣을 데이터가 여전히 여기서 언급한 나중에 읽을 데이터인 것을 예로 사용한다. 그러므로 나중에 읽을 데이터의 어드레스는 전술한 나중에 써넣을 데이터의 어드레스이다. 나중에 읽을 데이터가 이미 목표 SSD에 저장되어 있으면, 나중에 읽을 데이터가 위치하는 LU의 홈 제어기는 나중에 읽을 데이터의 어드레스(나중에 써넣을 데이터의 어드레스)와 목표 SSD 내의 나중에 읽을 데이터의 스토리지 어드레스 간의 대응관계를 질의하고, 목표 SSD 내의 나중에 읽을 데이터의 스토리지 어드레스를 획득하며, 목표 SSD 내의 나중에 읽을 데이터의 스토리지 어드레스를 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 입력/출력 관리자 A에 송신한다. 목표 SSD 내의 나중에 읽을 데이터의 스토리지 어드레스는 목표 SSD의 제어기의 식별자 및 목표 SSD 내의 나중에 읽을 데이터의 논리 스토리지 어드레스를 포함한다. 입력/출력 관리자 A는 목표 SSD 내의 나중에 읽을 데이터의 스토리지 어드레스에 따라 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 목표 SSD 내의 나중에 읽을 데이터의 논리 스토리지 어드레스를 직접적으로 읽어낸다.
전술한 실시예에서, 나중에 읽을 데이터가 목표 SSD 내에 부분적으로 저장되어 있고 본 발명의 이 실시예에서 캐시 장치 M에서 부분적으로 캐싱될 때, 전술한 바와 같이, 입력/출력 관리자 A는 캐시 장치 내의 나중에 읽을 데이터의 캐시 어드레스에 따라 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 캐시 어드레스로부터 데이터를 직접적으로 읽어내고, 입력/출력 관리자 A는 목표 SSD의 제어기의 식별자 및 목표 SSD 내의 나중에 읽을 데이터의 논리 스토리지 어드레스에 따라 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 목표 SSD 내의 논리 스토리지 어드레스로부터 데이터를 직접적으로 읽어내며, 이에 대해서는 여기서 상세히 설명하지 않는다.
복수의 캐시 장치가 나중에 읽을 데이터를 캐싱하는 동작을 수행할 때, 나중에 읽을 데이터가 위치하는 LU의 홈 제어기는 일반적으로 나중에 읽을 데이터 및 캐시 어드레스 M을 캐싱하는 프라이머리 캐시 장치 M의 식별자를 입력/출력 관리자 A에 되돌려보낸다. 다른 절차적 동작에 대해서는 전술한 실시예에서의 읽기 동작을 참조하며 이에 대해서는 여기서 다시 설명하지 않는다.
스토리지 어레이에서, 데이터 중복제거가 수행되며, 이것은 저장 공간 및 저장 비용을 절감할 수 있다. 본 발명의 실시예에 따른 도 2에 도시된 스토리지 어레이에서, 호스트는 입력/출력 관리자 A에 쓰기 데이터 요구를 송신하며, 쓰기 데이터 요구는 나중에 써넣을 데이터의 어드레스를 반송한다. 입력/출력 관리자 A는 PCIe 스위칭 장치 A를 통해 제어기 A에 쓰기 데이터 요구를 송신한다. 제어기 A가 나중에 써넣을 데이터의 목표 LU의 홈 제어기일 때, 제어기 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 입력/출력 관리자 A에 제공한다. 입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M에 따라 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 나중에 써넣을 데이터를 캐시 어드레스 M에 쓴다.
캐시 장치 M에서 캐싱된 나중에 써넣을 데이터가 스토리지 어레이의 SSD에 저장되기 전에, 데이터 중복제거가 수행되며, 이것은 저장 공간을 효과적으로 절감하고 저장 공간의 활용도를 향상시킨다. 도 2에 도시된 스토리지 어레이를 예로 들면, 스토리지 어레이 SSD에 저장되어 있는 데이터와 관련해서, 데이터가 캐시 장치 M에 의해 SSD에 저장되기 전에, 데이터 중복제거가 수행된다. 데이터 중복제거 기술은 미리 정한 규칙에 따라 데이터를 데이터 블록으로 분할하고 각각의 데이터 블록의 고윳값을 계산한다. 데이터 블록의 고윳값은 일반적으로 해시(Hash) 알고리즘에 의해 계산된다. 해시 동작은 데이터 블록에 대해 수행되어 해시 값을 획득하고, 이 값이 고윳값으로 사용된다. 공통 해시 알고리즘은 MD5, SHA1, SHA-256, SHA-512 등을 포함한다. 예를 들어, 데이터 블록 A의 고윳값이 SSD에 이미 저장되어 있는 데이터 블록 B의 고윳값과 같으면, 데이터 블록 A 및 데이터 블록 B는 동일하다. 그러므로 복제 데이터 블록 A는 캐시 장치 M으로부터 삭제되고, SSD에 데이터 블록 B를 저장하기 위한 논리 스토리지 어드레스가 SSD 내의 데이터 블록 A의 논리 스토리지 어드레스로서 사용된다.
특정한 실시에서, 데이터 블록의 고윳값들을 비교하는 것은 제어기에 의해 수행된다. 데이터 중복제거는 스토리지 어레이에서 수행되고, 각각의 고유한 데이터 블록은 고윳값을 가지고 있으므로 많은 고윳값이 생성된다. 스토리지 어레이 내의 제어기 간의 균형을 실현하기 위해, 각각의 제어기는 해시 분배 알고리즘과 같은 데이터 블록 고윳값 분배 알고리즘에 따라 일부의 데이터 블록의 고윳값을 비교하는 것을 담당한다. 이 방법에서, 각각의 제어기는 데이터 블록 고윳값 분배 알고리즘에 따라 스토리지 어레이에 저장되어 있는 일부의 고유한 데이터의 고윳값 지수만을 유지하며, 여기서 일부의 고유한 데이터의 고윳값 지수를 고윳값 지수 집합으로 한다. 제어기는 SSD에 써넣어질 데이터 블록의 고윳값에 대해 고윳값 지수 집합에 질의하고, 고윳값이 고윳값 지수 집합 내의 고윳값과 동일한지를 판정한다. 예를 들어, 제어기 A는 고윳값 분배 알고리즘에 따라 고윳값 지수 집합 A를 유지해야 하고, 그러므로 제어기 A는 고윳값 지수 집합 A 내의 모든 고윳값의 홈 제어기이거나; 또는 고윳값 지수 집합 A로부터 고윳값이 데이터 블록 X의 고윳값과 동일한 제어기는 데이터 블록 X의 고윳값의 홈 제어기이기도 하고 고윳값 지수 집합 A 내의 모든 고윳값의 홈 제어기이기도 하다.
구체적으로, 고윳값 지수 집합은 도 6에 도시된 바와 같이 고윳값 지수에 의해 형성된다. 예를 들어, 고윳값 1의 지수는 고윳값 1, 데이터 블록 스토리지 어드레스 1, 및 기준 카운트를 포함한다. 데이터 블록 스토리지 어드레스 1은 SSD A 내의 고유한 데이터 블록 C의 스토리지 어드레스 또는 캐시 장치의 데이터 블록 C의 스토리지 어드레스를 나타내는 데 사용된다. SSD A 내의 데이터 블록 C의 스토리지 어드레스는 SSD A의 제어기의 식별자 및 SSD A에 저장되어 있는 데이터 블록 C의 논리 스토리지 어드레스를 포함할 수 있다. 캐시 장치 내의 데이터 블록 C의 스토리지 어드레스는 캐시 장치의 식별자 및 캐시 어드레스를 포함한다. 고윳값 1은 데이터 블록 C의 고윳값을 나타낸다. 기준 카운트는 고윳값 1을 가지는 데이터 블록의 수를 나타낸다. 예를 들어, 데이터 블록 A가 스토리지 어레이에 최초로 저장되어 있을 때, 고윳값 1을 가지는 데이터 블록의 수는 1이고 기준 카운트는 1이다. 동일한 고윳값 1을 가지는 데이터 블록 D가 SSD에 다시 저장될 때, 데이터 블록 D는 데이터 중복제거의 원리에 따라 SSD에 저장되지 않지만, 기준 카운트는 1이 증가하여 2로 갱신된다. 요컨대, 고윳값 지수에서의 데이터 블록 스토리지 어드레스는 캐시 장치 내의 데이터 블록의 스토리지 어드레스 또는 목표 하드디스크 내의 데이터 블록의 스토리지 어드레스이다. 캐시 장치 내의 데이터 블록의 스토리지 어드레스는 캐시 장치의 식별자 및 캐시 장치 내의 데이터 블록의 캐시 어드레스를 포함하고, 목표 하드디스크 내의 데이터 블록의 스토리지 어드레스는 목표 하드디스크의 제어기의 식별자 및 목표 하드디스크에 데이터 블록을 저장하기 위한 논리 스토리지 어드레스를 포함한다. 도 6에 도시된 고윳값 지수는 단지 예시적 실행에 불과하며, 고윳값 지수는 다중레벨 지수일 수도 있다. 지수는 데이터 중복제거에 사용될 수 있는 임의의 지수 형태일 수 있으며, 이것은 본 발명의 이 실시예에서 제한되지 않는다.
도 2에 도시된 스토리지 어레이에서, 제어기 A가 캐시 장치 M에서 캐싱되는 데이터 블록의 목표 LU의 홈 제어기인 것을 예로 사용한다. 전술한 실시예를 참조하여, 쓰기 데이터 요구를 수신한 후, 입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M을 제어기 A로부터 획득한다. 입력/출력 관리자 A는 캐시 장치 M의 식별자 및 캐시 어드레스 M에 따라 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 나중에 써넣을 데이터를 캐시 어드레스 M에 쓴다. 제어기 A는 나중에 써넣을 데이터의 어드레스, 캐시 장치 M의 식별자, 및 캐시 어드레스 M 간의 대응관계를 구성한다. 홈 제어기 A의 LU에서 캐싱된 데이터가 캐시 장치 M으로부터 SSD로 써넣어질 때, 캐시 어드레스 M에서의 데이터를 예로 사용한다. 일반적으로, 데이터 중복제거가 수행될 때, 데이터 블록의 고윳값이 계산되어야 한다. 데이터 블록의 고윳값을 계산하기 위해, 데이터가 먼저 특정한 규칙에 따라 분할되어 데이터 블록을 획득한다. 데이터를 불록으로 분할하는 데는 2가지 방법이 있을 수 있다: 데이터를 고정 길이의 데이터 블록으로 분할하기, 또는 데이터를 가변 길의 데이터 블록으로 분할하기. 본 발명의 이 실시예에서는, 데이터를 고정 길이의 데이터 블록으로 분할하기를 예로 사용한다. 예를 들어, 데이터가 4 KB 크기의 데이터 블록으로 분할된다. 예시적으로, 캐시 어드레스 M에 써넣어질 나중에 써넣을 데이터는 크기가 4 KB인 수 개의 데이터 블록으로 분할된다. 제어기 A는 각각의 데이터 블록의 LU의 식별자, 데이터 블록의 LBA, 및 데이터 블록의 길이를 기록한다. 이하에서는 데이터 블록의 LU의 식별자, 데이터 블록의 LBA, 및 데이터 블록의 길이를 데이터 블록 스토리지 어드레스라 한다. 크기가 4 KB인 수 개의 데이터 블록 내의 데이터 블록 X를 예로 사용하면(여기서는 데이터 블록 X를 중복제거될 데이터 블록이라 하는데, 이는 간단히 나중에 써넣을 데이터 블록이라 알려져 있다), 제어기 A는 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 캐시 장치 M에 데이터 블록 고윳값 요구를 송신하며, 여기서 고윳값 요구는 데이터 블록 X의 어드레스를 포함한다. 캐시 장치 M은 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 데이터 블록 X의 고윳값을 제어기 A에 송신한다. 도 7에 도시된 바와 같이, 특정한 프로세스는 이하를 포함한다:
단계 701: 캐시 장치 M은 데이터 블록 X의 고윳값을 계산한다.
제어기 A는 캐시 장치 M에 명령을 송신하여 데이터 블록 X의 고윳값을 획득하며, 여기서 명령은 데이터 블록 X의 어드레스를 반송한다. 캐시 장치 M은 명령을 수신하여 제어기 A에 의해 송신되는 데이터 블록 X의 고윳값을 획득한다. 이 경우, 캐시 장치 M은 데이터 블록 X의 어드레스와 캐시 어드레스 B 간의 대응관계를 저장하고, 명령에 반송되는 데이터 블록 X의 어드레스에 따라 데이터 블록 X를 결정하여 데이터 블록 X의 고윳값을 획득하고, 데이터 블록 X의 고윳값을 계산하며, 데이터 블록 X의 고윳값을 캐시 어드레스 X에 캐싱한다.
단계 702: 데이터 블록 X의 고윳값을 제어기 A에 송신한다.
캐시 장치 M은 데이터 블록 X의 고윳값을 획득하고, 데이터 블록 X의 고윳값의 응답 메시지를 데이터 블록 X가 위치하는 LU의 홈 제어기 A에 송신하며, 여기서 데이터 블록 X의 고윳값의 응답 메시지는 데이터 블록 X의 고윳값을 반송한다. 또한, 데이터 블록 X의 고윳값의 응답 메시지는 데이터 블록 X의 고윳값을 반송하는 캐시 장치 M의 식별자 및 캐시 장치 M 내의 데이터 블록 X의 고윳값의 캐시 어드레스 X를 더 반송한다.
단계 703: 고윳값 분배 알고리즘에 따라 데이터 블록 X의 고윳값의 홈 제어기를 결정한다.
단계 704: 제어기 A는 논리 고윳값 지수 집합 A를 질의한다.
제어기 A가 데이터 블록 X의 고윳값의 홈 제어기일 때, 제어기 A는 논리 고윳값 지수 집합 A를 질의하고, 데이터 블록 X의 고윳값과 같은 고윳값이 고윳값 지수 집합 A에 존재하는지를 판정한다.
데이터 블록 X의 고윳값과 같은 고윳값이 고윳값 지수 집합 A에 존재할 때, 단계 705a 및 단계 706a가 수행된다. 도 6에 도시된 바와 같이, 데이터 블록 X의 고윳값은 고윳값 1과 같으며, 즉 데이터 블록 X는 데이터 블록 A와 같다.
단계 705a: 제어기 A는 데이터 고윳값 1의 지수 내의 기준 카운트를 갱신한다.
고윳값 1의 지수 내의 기준 카운트는 1이며, 즉 데이터 블록 A만이 스토리지 어레이에 존재한다. 데이터 블록 X의 고윳값이 고윳값 1과 같고, 그러므로 기준 카운트가 2로 갱신된다는 것을 알 수 있다.
단계 706a: 제어기 A는 데이터 블록 X를 삭제하도록 캐시 장치 M에 명령한다.
제어기 A는 데이터 블록 X를 삭제하도록 캐시 장치 M에 명령한다. 제어기 A는 데이터 블록 X의 어드레스와 데이터 블록 X의 고윳값 간의 대응관계를 구성하거나, 제어기 A는 데이터 블록 X의 어드레스, 데이터 블록 X의 고윳값, 및 데이터 블록 A의 스토리지 어드레스 간의 대응관계를 구성한다.
데이터 블록 X가 복제 데이터 블록이다는 것이 단계 704에서 결정된다. 그러므로 데이터 블록 X는 SSD로 저장되지 않아도 되며, 캐시 장치 M은 데이터 블록 X를 삭제하도록 명령받는다.
데이터 블록 X의 고윳값과 같은 고윳값이 고윳값 지수 집합 A에 존재하지 않으면, 단계들 705b, 706b, 707, 708, 709, 및 710이 수행된다.
단계 705b: 캐시 장치 M에서 캐싱된 데이터 블록 X의 캐시 어드레스 B를 획득한다.
제어기 A는 캐시 장치 M 내의 데이터 블록 X의 고윳값의 캐시 어드레스 X에 따라 PCIe 스위칭 장치 A를 통해 캐시 장치 M으로부터 데이터 블록 X의 캐시 어드레스 B를 획득한다.
단계 706b: 캐시 장치 M의 식별자 및 캐시 어드레스 B를 목표 SSD의 제어기에 송신한다.
제어기 A는 캐시 장치 M의 식별자 및 캐시 어드레스 B를 획득하고, 캐시 장치 M의 식별자 및 캐시 어드레스 B를 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 목표 SSD의 제어기에 송신한다.
단계 707: 목표 SSD의 제어기는 캐시 어드레스 B로부터 데이터 블록 X를 읽어낸다.
목표 SSD의 제어기는 캐시 장치 M의 식별자 및 캐시 어드레스 B를 수신하고, 캐시 장치 M의 식별자 및 캐시 어드레스 B에 따라, 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 캐시 어드레스 B로부터 데이터 블록 X를 직접적으로 읽어낸다.
단계 708: 목표 SSD의 제어기는 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 제어기 A에 송신한다.
목표 SSD의 제어기는 캐시 어드레스 B로부터 데이터 블록 X를 읽어내고, 데이터 블록 X를 목표 SSD에 저장한다. 목표 SSD의 제어기는 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 PCIe 스위칭 장치 A를 통해 제어기 A에 송신한다. 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스는 목표 SSD의 제어기의 식별자 및 목표 SSD에 데이터 블록 X를 저장하기 위한 논리 스토리지 어드레스를 포함한다.
단계 709: 제어기 A는 데이터 블록 X의 고윳값 지수를 구성한다.
제어기 A는 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 수신하고, 데이터 블록 X의 고윳값을 구성하며, 기준 카운트를 1에 설정한다. 제어기 A는 데이터 블록 X의 어드레스, 데이터 블록 X의 고윳값, 및 데이터 블록 X의 스토리지 어드레스 간의 대응관계를 목표 SSD에 구성한다. 제어기 A는 또한 데이터 블록 X의 고윳값의 캐시 어드레스 X를 기록해야 한다. 데이터 블록 X의 고윳값이 SSD에 저장되어 있으면, 제어기 A는 또한 데이터 블록 X의 고윳값의 스토리지 어드레스를 목표 SSD에 기록해야 한다.
다른 경우, 제어기 A는 데이터 블록 X의 고윳값의 홈 제어기가 아니라 데이터 블록 X가 위치하는 LU의 홈 제어기이다. 본 발명의 이 실시예에서, 제어기 B가 데이터 블록 X의 고윳값의 홈 제어기인 것을 예로 사용하고, 제어기 A는 데이터 블록 X의 고윳값을 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 제어기 B에 송신한다. 제어기 B는 제어기 A에 의해 송신되는 데이터 블록 X의 고윳값을 수신하고, 제어기 B의 고윳값 지수 집합 B를 질의한다. 데이터 블록 X의 고윳값과 같은 고윳값이 고윳값 지수 집합 A에 존재한다는 것을 제어기 B가 알게 되면, 예를 들어, 데이터 블록 R의 고윳값이 데이터 블록 X의 고윳값과 같다는 것으로 알게 되면, 제어기 B는 데이터 블록 X를 삭제하도록 캐시 장치 M에 명령한다. 이것은 구체적으로 제어기 B가 PCIe 스위칭 장치 B를 통해 제어기 A에 명령을 송신하는 것을 포함한다. 제어기 A는 PCIe 스위칭 장치 A를 통해 캐시 장치 M에 삭제 명령을 송신하고, 캐시 장치 M은 데이터 블록 X를 삭제한다. 제어기 B는 데이터 블록 X의 고윳값과 같은 고윳값의 지수의 기준 카운트를 갱신하는데, 즉 기준 카운트를 1만큼 증가시킨다. 데이터 블록 R이 SSD에 이미 존재하고 있으면, 데이터 블록 R의 지수 내의 데이터 블록 R의 스토리지 어드레스는 데이터 블록 R을 저장하는 SSD의 제어기의 식별자 및 SSD 내의 데이터 블록 R를 저장하기 위한 논리 스토리지 어드레스를 포함한다. 데이터 블록 R이 캐시 장치에 있으면, 데이터 블록 X의 지수 내의 데이터 블록 X의 스토리지 어드레스는 캐시 장치의 식별자 및 캐시 어드레스를 포함한다. 제어기 A는 데이터 블록 X의 어드레스, 데이터 블록 X의 고윳값, 및 데이터 블록 X의 고윳값의 홈 제어기 B의 어드레스 간의 대응관계를 구성하고, 그러므로 제어기 A는 각각의 데이터 블록의 어드레스, 데이터 블록의 고윳값, 및 데이터 블록의 스토리지 어드레스 간의 대응관계를 요구하지 않으며, 제어기 A에 의해 저장되는 데이터의 양은 효과적으로 감소한다. 대안으로, 제어기 ASMS 데이터 블록 X의 어드레스, 데이터 블록 X의 고윳값, 및 데이터 블록 R의 스토리지 어드레스 간의 대응관계를 구성한다. 이어서 데이터 블록 X를 읽을 때, 제어기 A는 데이터 블록 X의 어드레스, 데이터 블록 X의 고윳값, 및 데이터 블록 R의 스토리지 어드레스 간의 대응관계를 질의함으로써 데이터 블록 R의 스토리지 어드레스를 직접적으로 결정할 수 있고, 입력/출력 관리자 A는 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 데이터 블록 R의 스토리지 어드레스로부터 데이터 블록 X를 직접적으로 읽어내며, 이에 의해 데이터 읽기 효율성이 향상된다.
제어기 A가 데이터 블록 X가 위치하는 LU의 홈 제어기이지만 데이터 블록 X의 고윳값의 홈 제어기는 아닐 때, 제어기 B는 데이터 블록 X의 고윳값과 같은 고윳값이 고윳값 지수 집합 B에 존재하지 않는다는 것을 알게 되고, 제어기 B는 PCIe 스위칭 장치 B를 통해 제어기 A에 요구를 송신함으로써 캐시 장치 M 내의 데이터 블록 X의 캐시 어드레스 B를 획득한다. 제어기 A는 PCIe 스위칭 장치 A를 통해 캐시 장치 M에 요구를 송신한다. 캐시 장치 M은 캐시 장치 M의 식별자 및 캐시 어드레스 B를 제어기 B에 송신한다. 제어기 B는 캐시 장치 M의 식별자 및 캐시 어드레스 B를 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 목표 SSD의 제어기에 송신한다(여기서는 PCIe 스위칭 장치 A가 예로 사용된다). 목표 SSD의 제어기는 캐시 장치 M의 식별자 및 캐시 어드레스 B에 따라 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 캐시 어드레스 B로부터 데이터 블록 X를 직접적으로 읽어내고, 데이터 블록 X를 목표 SSD에 저장한다. 목표 SSD의 제어기는 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 제어기 B에 송신한다. 제어기 B는 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 수신하고, 데이터 블록 X의 고윳값 지수를 구성하며, 지수 내의 기준 카운트를 1로 설정한다. 제어기 B도 데이터 블록 X의 고윳값의 캐시 어드레스 X를 기록해야 한다. 데이터 블록 X의 고윳값이 SSD에 저장될 때, 제어기 B는 또한 데이터 블록 X의 고윳값의 스토리지 어드레스를 SSD에 기록해야 한다.
제어기 B는 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 수신하고, 제어기 A에 통지를 송신한다. 통지는 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 반송한다. 제어기 A는 제어기 B에 의해 송신된 통지에 따라 목표 SSD에 데이터 블록 X의 어드레스, 고윳값, 데이터 블록 X의 스토리지 어드레스 간의 대응관계를 구성한다. 다른 실시 방식에서, 제어기 A가 데이터 블록 X가 위치하는 LU의 홈 제어기이지만 데이터 블록 X의 고윳값의 홈 제어기가 아닐 때, 제어기 A는 데이터 블록 X의 어드레스, 데이터 블록 X의 고윳값, 및 제어기 B의 어드레스 간의 대응관계를 구성한다.
본 발명의 실시예에서의 스토리지 어레이에 따르면, 캐시 장치는 데이터 블록 X의 지문의 계산을 수행하고, 이것은 제어기의 계산 자원을 절감한다. 데이터 블록 X를 목표 SSD에 저장하는 프로세스 동안, 제어기는 데이터 블록의 캐시 어드레스를 제공할 뿐이며, 목표 하드디스크의 제어기는 캐시 장치 M의 식별자 및 캐시 어드레스 B만을 제공하며, 목표 SSD의 제어기는 캐시 어드레스 B로부터 데이터 블록 X를 직접적으로 읽어내며, 이것은 제어기의 계산 자원 및 메모리 자원을 절감하고 스토리지 어레이의 성능을 향상시킨다.
도 2에 도시된 스토리지 어레이에 기초하여, 전술한 데이터 중복제거 동작에 따라 데이터가 SSD에 써넣어진다. 입력/출력 관리자 A가 읽기 데이터 요구를 수신하면, 예를 들어, 데이터 블록 X를 읽는 요구를 수신하면, 여기서 읽기 데이터 요구는 데이터 블록 X의 어드레스를 반송하며, 입력/출력 관리자 A는 PCIe 스위칭 장치 A를 통해 읽기 데이터 요구를 제어기 A에 송신한다. 제어기 A는 제어기 A가 데이터 블록 X가 위치하는 LU의 홈 제어기인 것으로 결정한다. 실시 방식에서, 제어기 A는 목표 SSD에서 나중에 읽을 데이터 블록 X의 어드레스, 데이터 블록 X의 고윳값, 및 데이터 블록 X의 스토리지 어드레스를 검색하여, 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 결정한다. 제어기 A는 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 PCIe 스위칭 장치 A를 통해 입력/출력 관리자 A에 송신한다. 입력/출력 관리자 A는 목표 SSD에서, 나중에 읽을 데이터 블록의 스토리지 어드레스, 데이터 블록 X에 따라, PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 목표 SSD 내의 데이터 블록 X의 논리 스토리지 어드레스로부터 데이터 블록 X를 읽어낸다. 다른 실시 방식에서, 제어기 A는 데이터 블록 X의 어드레스, 데이터 블록 X의 고윳값, 데이터 블록 X의 고윳값의 홈 제어기의 어드레스 간의 대응관계를 검색하여, 데이터 블록 X의 고윳값의 홈 제어기 B를 결정하며, 제어기 B 내의 데이터 블록 X의 고윳값 지수를 질의하여 목표 SSD 내의 데이터 블록 X의 스토리지 어드레스를 결정하거나; 또는 데이터 블록 X의 고윳값의 홈 제어기 B를 결정하고, 제어기 B 내의 데이터 블록 X의 고윳값과 같은 데이터 블록의 고윳값 지수를 질의하여, 데이터 블록 X의 고윳값과 같은 고윳값을 가지는 데이터 블록의 스토리지 어드레스를 결정하며, 그런 다음 데이터 블록 X의 고윳값과 같은 고윳값을 가지는 데이터 블록의 스토리지 어드레스로부터 데이터를 읽어낸다. 제어기 A가 데이터 블록 X가 위치하는 LU의 홈 제어기이기도 하고 데이터 블록 X의 고윳값의 홈 제어기이기도 할 때, 다른 실시 방식에서, 제어기 A는 나중에 읽을 데이터의 어드레스와 데이터 블록 X의 고윳값 간의 대응관계를 검색하고, 데이터 블록 X의 고윳값에 따라, 제어기 A에 의해 유지되는 고윳값 지수 집합 A를 질의하여, 나중에 읽을 데이터 블록 X의 스토리지 어드레스를 결정하며, 그런 다음 나중에 읽을 데이터 블록 X의 스토리지 어드레스를 입력/출력 관리자 A에 송신한다. 입력/출력 관리자 A는 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 데이터 블록 X의 스토리지 어드레스로부터 데이터 블록을 읽어낸다.
도 2에 도시된 스토리지 어레이에 써넣어진 데이터가 복수의 캐시 장치에 캐싱될 때, 데이터 중복제거 동작이 수행되면, 캐시 장치 중 하나의 캐시 장치 내의 데이터에 대해서만 데이터 중복제거가 수행된다. 구체적으로, 데이터 중복제거는 프라이머리 캐시 장치 내의 데이터에 대해 수행될 수 있거나, 데이터를 캐싱하는 복수의 캐시 장치의 부하에 따라, 캐시 장치 중 하나를 선택하여 데이터 중복제거 동작을 수행하며, 이것은 본 발명의 이 실시예에 의해 제한되지 않는다.
본 발명의 이 실시예에서, 다른 실시 경우에, 안착(homing)의 개념이 입력/출력 관리자와 제어기 간에 반드시 존재하는 것은 아니다. 즉, 제어기 A는 입력/출력 관리자 A의 홈 제어기가 아니다. 각각의 입력/출력 관리자는 LU와 이 LU가 안착해 있는 제어기 간의 대응관계를 세이브한다. 입력/출력 관리자는, 데이터 동작 요구에 반송되는 목표 LU의 식별자에 따라, 목표 LU의 식별자와 홈 제어기 간의 대응관계를 질의하여, LU의 홈 제어기를 결정하며, PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 목표 LU의 홈 제어기에 요구를 직접적으로 송신한다. 또한, 통신은 임의의 PCIe 스위칭 장치를 통해 제어기 간에, 또는 제어기와 SSD 간에, 또는 입력/출력 관리자와 제어기 간에, 또는 입력/출력 관리자와 SSD 간에, 또는 캐시 장치와 제어기 간에, 또는 캐시 장치와 SSD 간에 수행될 수 있다. 본 발명의 이 실시예에서는, 목표 하드디스크 내의 스토리지 어드레스에 데이터 블록 X를 저장하기 위한 논리 스토리지 어드레스를 목표 하드디스크에 데이터 블록 X를 저장하기 위한 논리 블록 어드레스라 하며, 구체적으로 본 발명의 실시예에서 목표 SSD에 데이터 블록 X를 저장하기 위한 논리 블록 어드레스라 한다.
본 발명의 이 실시예에서의 도 2는 2개의 제어기, 2개의 스위칭 장치, 2개의 입력/출력 관리자, 및 하나의 캐시 장치만을 도시하고 있다. 그렇지만, 특정한 실시에서, 제어기, 스위칭 장치, 입력/출력 관리자, 및 캐시 장치의 수는 필요에 따라 설정될 수 있고 유연하게 확장될 수 있다. 임의의 입력/출력 관리자는 임의의 스위칭 장치를 통해 임의의, 제어기에 접속되거나, 또는 임의의 입력/출력 관리자는 임의의 스위칭 장치를 통해 임의의 하드디스크에 접속되거나, 또는 임의의 입력/출력 장치는 임의의 스위칭 장치를 통해 임의의 캐시 장치에 접속된다. 임의의 제어기는 임의의 스위칭 장치를 통해 임의의 제어기에 접속되거나, 또는 임의의 제어기는 임의의 스위칭 장치를 통해 임의의 하드디스크에 접속되거나, 또는 임의의 제어기는 임의의 스위칭 장치를 통해 임의의 캐시 장치에 접속된다. 임의의 캐시 장치는 스위칭 장치를 통해 임의의 하드디스크에 접속된다. 임의의 스위칭 장치를 통해 접속된 임의의 2개의 장치 간에 양방향 통신 실행된다. 임의의 2개의 스위칭 장치는 직접적으로 접속된다. 본 발명의 이 실시예에서 제공하는 스토리지 어레이 아키텍처에서, 논리적으로, 제어기를 제어기 평면으로 집합적으로 칭하며, 스위칭 장치를 스위칭 평면이라 집합적으로 칭하며, 하드디스크를 스토리지 평면이라 집합적으로 칭하며, 입력/출력 관리자를 입력/출력 관리자 평면이라 집합적으로 칭하며, 캐시 장치를 캐시 평면이라 집합적으로 칭한다. 본 발명의 이 실시예에서 제공하는 아키텍처에서, 데이터 읽기와 쓰기 제어는 데이터 읽기 및 쓰기와는 분리된다. 제어기는 데이터 읽기 및 쓰기 제어를 실행하지만, 데이터 읽기 및 쓰기(또는 다른 말로 읽히고 쓰인 데이터)는 제어기를 통한 흐름이 아니며, 이것은 제어기의 CPU 계산 자원 및 제어기의 메모리 자원을 절감하며, 데이터 쓰기 효율성을 향상시키고, 스토리지 어레이의 데이터 처리 효율성이 향상된다. 본 발명의 이 실시예에서의 스토리지 어레이 아키텍처는 제어기 및 하드디스크와 같은 장치의 확장을 실현할 수 있으므로, 제어기, 스위칭 장치, 하드디스크 등은 스토리지 어레이의 성능 조건에 따라 유연하게 부가될 수 있다.
당연히, 본 발명의 실시예에서의 기술적 응용소프트웨어는 스토리지 어레이가 하나의 입력/출력 관리자, 하나의 제어기, 하나의 스위칭 장치, 하나의 캐시 장치, 및 수 개의 하드디스크를 포함하는 시나리오에도 적용 가능하다. 이 시나리오의 스토리지 어레이에 데이터를 써넣은 방식에 대해서는 전술한 실시예에서의 상세한 설명을 참조한다. 스토리지 어레이에서 데이터 중복제거가 수행되는 시나리오에 대해서는 전술한 실시예에서의 상세한 설명을 참조한다. 스토리지 어레이에서 수행되는 데이터 읽기 동작에 대해서는 전술한 실시예에서의 상세한 설명을 참조한다. 당연히, 스토리지 어레이는 또한 2개의 제어기 및 하나의 스위칭 장치를 포함할 수 있고, 여기서 2개의 제어기는 스위칭 장치에 접속된다. 이러한 시나리오의 데이터 쓰기, 데이터 중복제거, 및 데이터 읽기의 동작에 대해서는 전술한 실시예에서의 상세한 설명을 참조하고, 상세한 사항에 대해서는 여기서 다시 설명하지 않는다. 본 발명의 이 실시예에서, 장치 A는 장치 B의 식별자 및 캐시 어드레스 A에 따라 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 캐시 어드레스 A로부터 데이터를 읽어내거나(또는 다른 말로, 캐시 어드레스 A로부터 데이터를 직접적으로 읽어내거나) 또는 캐시 어드레스 A에 데이터를 쓴다(또는 다른 말로, 캐시 어드레스 A에 데이터를 직접적으로 쓴다). 이러한 실시 방식은 다이렉트 메모리 액세스(Direct Memory Access, DMA) 기술을 사용함으로써 실현되며, 여기서 장치 A 및 장치 B는 구체적으로 본 발명의 실시예에서 DMA 액세스를 수행하는 장치를 나타낸다.
제어기는 장치 B의 캐시 어드레스를 획득하고, 장치 B의 식별자 및 장치 B의 캐시 어드레스를 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 장치 C에 송신한다. 제어기는 장치 B와 통신하여 PCIe 스위칭 장치 A 또는 PCIe 스위칭 장치 B를 통해 캐시 어드레스를 획득하고 장치 B의 식별자를 이미 학습하였으므로, 캐시 어드레스가 획득되고, 장치 B의 식별자 및 장치 B의 캐시 어드레스는 장치 C에 송신될 수 있다. 당연히, 제어기는 또한 장치 B의 식별자 및 캐시 어드레스를 획득할 수 있다. 장치 B의 식별자는 장치 B의 어드레스일 수 있거나 장치를 고유하게 식별하는 다른 식별자일 수 있다.
당업자라면 본 명세서에 개시된 실시예를 참조해서 설명되는 예시적 유닛 및 알고리즘 단계는 전자식 하드웨어, 또는 컴퓨터 소프트웨어와 전자식 하드웨어의 결합으로 실현될 수 있다는 것을 인식하고 있을 것이다. 이러한 기능들이 하드웨어의 방식으로 또는 소프트웨어의 방식으로 수행되느냐 하는 것은 기술적 솔루션의 특정한 애플리케이션 및 설계상의 제약에 달려 있다. 당업자라면 상이한 방법을 사용하여 각각의 특정한 애플리케이션에 대한 설명된 기능을 실행할 수 있을 것이지만, 이러한 실행이 본 발명의 범주를 넘는 것으로 파악되어서는 안 된다.
당업자라면 설명의 편의 및 간략화를 위해, 전술한 기능 모듈의 분할은 도해를 위한 예로서 취해진다는 것을 이해할 수 있을 것이다. 전술한 시스템, 장치, 및 유닛에 대한 상세한 작업 프로세스에 대해서는 전술한 방법 실시예의 대응하는 프로세스를 참조하면 된다는 것을 자명하게 이해할 수 있을 것이므로 그 상세한 설명은 여기서 다시 설명하지 않는다.
본 발명에서 제공하는 수 개의 실시예에서, 전술한 시스템 및 방법은 다른 방식으로도 실현될 수 있다는 것은 물론이다. 예를 들어, 설명된 장치 실시예는 단지 예시에 불과하다. 예를 들어, 유닛의 분할은 단지 일종의 논리적 기능 분할일 뿐이며, 실제의 실행 동안 다른 분할 방식으로 있을 수 있다. 예를 들어, 복수의 유닛 또는 구성요소를 다른 시스템에 결합 또는 통합할 수 있거나, 또는 일부의 특징은 무시하거나 수행하지 않을 수도 있다. 또한, 도시되거나 논의된 상호 커플링 또는 직접 결합 또는 통신 접속은 일부의 인터페이스를 통해 실현될 수 있다. 장치 또는 유닛 간의 직접 결합 또는 통신 접속은 전자식, 기계식 또는 다른 형태로 실현될 수 있다.
별도의 부분으로 설명된 유닛들은 물리적으로 별개일 수 있고 아닐 수도 있으며, 유닛으로 도시된 부분은 물리적 유닛일 수도 있고 아닐 수도 있으며, 한 위치에 위치할 수도 있고, 복수의 네트워크 유닛에 분산될 수도 있다. 유닛 중 일부 또는 전부는 실제의 필요에 따라 선택되어 실시예의 솔루션의 목적을 달성할 수 있다.
또한, 본 발명의 실시예에서의 기능 유닛은 하나의 프로세싱 유닛으로 통합될 수 있거나, 각각의 유닛이 물리적으로 단독으로 존재할 수도 있거나, 2개 이상의 유닛이 하나의 유닛으로 통합될 수도 있다.
통합 유닛이 소프트웨어 기능 유닛의 형태로 실현되어 독립 제품으로 시판되거나 사용되면, 이 통합 유닛은 컴퓨터 판독 가능형 저장 매체에 저장될 수 있다. 이러한 이해를 바탕으로, 본 발명의 필수적 기술적 솔루션 또는, 또는 종래기술에 기여하는 부분, 또는 기술적 솔루션의 일부는 소프트웨어 제품의 형태로 실현될 수 있다. 컴퓨터 소프트웨어 제품은 저장 매체에 저장되고, 본 발명의 실시예에 설명된 방법의 단계 중 일부 또는 전부를 수행하도록 컴퓨터 장치(이것은 퍼스널 컴퓨터, 서버, 또는 네트워크 장치 등이 될 수 있다)에 명령하는 수개의 명령어를 포함한다. 전술한 저장 매체는: 프로그램 코드를 저장할 수 있는 임의의 저장 매체, 예를 들어, USB 플래시 디스크, 휴대형 하드디스크, 리드-온리 메모리(Read Only Memory, ROM), 자기디스크 또는 광디스크를 포함한다.

Claims (10)

  1. 데이터 중복제거 방법으로서,
    상기 데이터 중복제거 방법은 스토리지 어레이에 적용되고, 상기 스토리지 어레이는 스위칭 장치, 제1 제어기, 및 캐시 장치를 포함하며, 상기 제1 제어기는 상기 스위칭 장치에 접속되고, 상기 캐시 장치는 상기 스위칭 장치에 접속되며, 상기 스위칭 장치는 상기 스토리지 장치 내의 하드디스크에 접속되며, 상기 데이터 중복제거 방법은,
    상기 제1 제어기가 상기 캐시 장치로부터 중복제거될 데이터 블록의 고윳값을 수신하고, 상기 중복제거될 데이터 블록의 고윳값에 대한 데이터 블록의 고윳값 지수 집합을 검색하는 단계;
    상기 중복제거될 데이터 블록의 고윳값이 데이터 블록의 고윳값 지수 집합에서 발견되지 않을 때, 상기 제1 제어기가 상기 스위칭 장치를 통해 상기 캐시 장치 내의 중복제거될 데이터 블록의 캐시 어드레스를 획득하는 단계;
    상기 제1 제어기가 상기 스위칭 장치를 통해 목표 하드디스크의 제어기에 읽기 데이터 명령을 송신하는 단계 - 상기 읽기 데이터 명령은 상기 캐시 장치의 식별자 및 상기 캐시 어드레스를 반송(搬送)함 - ;
    상기 목표 하드디스크의 제어기가 상기 캐시 장치의 식별자 및 상기 캐시 어드레스에 따라 상기 스위칭 장치를 통해 상기 캐시 어드레스로부터 상기 중복제거될 데이터 블록을 읽어내는 단계; 및
    상기 목표 하드디스크의 제어기가 상기 목표 하드디스크에 상기 중복제거될 데이터 블록을 저장하는 단계
    를 포함하는 데이터 중복제거 방법.
  2. 청구항 1에 있어서,
    상기 목표 하드디스크의 제어기가 상기 목표 하드디스크 내의 스토리지 어드레스를 상기 스위칭 장치를 통해 제1 제어기에 송신하는 단계 - 상기 목표 하드디스크 내의 스토리지 어드레스는 상기 목표 하드디스크의 제어기의 식별자 및 상기 목표 하드디스크에 중복제거될 데이터 블록을 저장하기 위한 논리 스토리지 어드레스를 포함함 - ; 및
    상기 제1 제어기가 상기 중복제거될 데이터 블록의 고윳값 지수를 데이터 블록의 고윳값 지수 집합에 구성하는 단계
    를 더 포함하며,
    상기 중복제거될 데이터 블록의 고윳값 지수는 상기 중복제거될 데이터 블록의 고윳값 및 상기 목표 하드디스크 내의 스토리지 어드레스를 포함하는, 데이터 중복제거 방법.
  3. 청구항 1에 있어서,
    상기 스토리지 어레이는 제2 제어기를 더 포함하고, 상기 제2 제어기는 상기 스위칭 장치에 접속되고, 상기 제2 제어기는 상기 중복제거될 데이터 블록의 어드레스를 저장하고, 상기 제2 제어기는 상기 중복제거될 데이터 블록이 위치하는 목표 논리 유닛의 홈 제어기이며,
    상기 제1 제어기가 상기 캐시 장치로부터 중복제거될 데이터 블록의 고윳값을 수신하는 단계는 구체적으로,
    상기 캐시 장치가 상기 중복제거될 데이터 블록의 고윳값을 상기 스위칭 장치를 통해 제2 제어기에 송신하는 단계;
    상기 제2 제어기가, 상기 중복제거될 데이터 블록의 고윳값의 홈 제어기가 제1 제어기인 것으로 결정하는 단계; 및
    상기 제2 제어기가 상기 중복제거될 데이터 블록의 고윳값을 상기 스위칭 장치를 통해 제1 제어기에 송신하는 단계
    를 포함하는, 데이터 중복제거 방법.
  4. 청구항 3에 있어서,
    상기 중복제거될 데이터 블록의 고윳값이 데이터 블록의 고윳값 지수 집합에서 발견되지 않을 때, 상기 데이터 중복제거 방법은,
    상기 제1 제어기가 상기 스위치 장치를 통해 제2 제어기에 통지를 송신하는 단계 - 상기 통지는 상기 목표 하드디스크 내의 스토리지 어드레스를 반송함 - ; 및
    상기 제2 제어기가 상기 통지에 따라 상기 중복제거될 데이터 블록의 어드레스, 상기 중복제거될 데이터 블록의 고윳값, 및 상기 목표 하드디스크 내의 스토리지 어드레스 간의 대응관계를 구성하는 단계
    를 더 포함하는 데이터 중복제거 방법.
  5. 청구항 3에 있어서,
    상기 제2 제어기가 상기 중복제거될 데이터 블록의 어드레스, 상기 중복제거될 데이터 블록의 고윳값, 및 상기 제1 제어기의 어드레스 간의 대응관계를 구성하는 단계
    를 더 포함하는 데이터 중복제거 방법.
  6. 스토리지 어레이로서,
    상기 스토리지 어레이는 스위칭 장치, 제1 제어기, 및 캐시 장치를 포함하며, 상기 제1 제어기는 상기 스위칭 장치에 접속되고, 상기 캐시 장치는 상기 스위칭 장치에 접속되며, 상기 스위칭 장치는 상기 스토리지 장치 내의 하드디스크에 접속되며,
    상기 제1 제어기는 상기 캐시 장치로부터 중복제거될 데이터 블록의 고윳값을 수신하고, 상기 중복제거될 데이터 블록의 고윳값에 대한 데이터 블록의 고윳값 지수 집합을 검색하도록 구성되어 있으며,
    상기 중복제거될 데이터 블록의 고윳값이 데이터 블록의 고윳값 지수 집합에서 발견되지 않을 때, 상기 제1 제어기는 상기 스위칭 장치를 통해 상기 캐시 장치 내의 중복제거될 데이터 블록의 캐시 어드레스를 획득하도록 추가로 구성되어 있으며,
    상기 제1 제어기는 상기 스위칭 장치를 통해 목표 하드디스크의 제어기에 읽기 데이터 명령을 송신하도록 추가로 구성되어 있으며, 상기 읽기 데이터 명령은 상기 캐시 장치의 식별자 및 상기 캐시 어드레스를 반송하며,
    상기 목표 하드디스크의 제어기는 상기 캐시 장치의 식별자 및 상기 캐시 어드레스에 따라 상기 스위칭 장치를 통해 상기 캐시 어드레스로부터 상기 중복제거될 데이터 블록을 읽어내도록 구성되어 있으며, 그리고
    상기 목표 하드디스크의 제어기는 상기 목표 하드디스크에 상기 중복제거될 데이터 블록을 저장하도록 추가로 구성되어 있는, 스토리지 어레이.
  7. 청구항 6에 있어서,
    상기 목표 하드디스크의 제어기는 목표 하드디스크 내의 스토리지 어드레스를 상기 스위칭 장치를 통해 제1 제어기에 송신하도록 추가로 구성되어 있으며,
    상기 목표 하드디스크 내의 스토리지 어드레스는 상기 목표 하드디스크의 제어기의 식별자 및 상기 목표 하드디스크 내의 중복제거될 데이터 블록을 저장하기 위한 논리 저장 어드레스를 포함하며,
    상기 제1 제어기는 상기 중복제거될 데이터 블록의 고윳값 지수를 데이터 블록의 고윳값 지수 집합에 구성하도록 추가로 구성되어 있으며,
    상기 중복제거될 데이터 블록의 고윳값 지수는 상기 중복제거될 데이터 블록의 고윳값 및 상기 목표 하드디스크 내의 스토리지 어드레스를 포함하는, 스토리지 어레이.
  8. 청구항 6에 있어서,
    상기 스토리지 어레이는 제2 제어기를 더 포함하고, 상기 제2 제어기는 상기 스위칭 장치에 접속되고, 상기 제2 제어기는 상기 중복제거될 데이터 블록의 어드레스를 저장하고,
    상기 제2 제어기는 상기 중복제거될 데이터 블록이 위치하는 목표 논리 유닛의 홈 제어기이며,
    상기 제1 제어기가 상기 캐시 장치로부터 중복제거될 데이터 블록의 고윳값을 수신하는 것은 구체적으로,
    상기 캐시 장치가 상기 중복제거될 데이터 블록의 고윳값을 상기 스위칭 장치를 통해 제2 제어기에 송신하는 단계;
    상기 제2 제어기가, 상기 중복제거될 데이터 블록의 고윳값의 홈 제어기가 제1 제어기인 것으로 결정하는 단계; 및
    상기 제2 제어기가 상기 중복제거될 데이터 블록의 고윳값을 상기 스위칭 장치를 통해 제1 제어기에 송신하는 단계
    를 포함하는, 스토리지 어레이.
  9. 청구항 8에 있어서,
    상기 중복제거될 데이터 블록의 고윳값이 데이터 블록의 고윳값 지수 집합에서 발견되지 않을 때, 상기 제1 제어기는 상기 스위치 장치를 통해 제2 제어기에 통지를 송신하도록 추가로 구성되어 있으며, 상기 통지는 상기 목표 하드디스크 내의 스토리지 어드레스를 반송하며,
    상기 제2 제어기는 상기 통지에 따라 상기 중복제거될 데이터 블록의 어드레스, 상기 중복제거될 데이터 블록의 고윳값, 및 상기 목표 하드디스크 내의 스토리지 어드레스 간의 대응관계를 구성하도록 추가로 구성되어 있는, 스토리지 어레이.
  10. 청구항 8에 있어서,
    상기 제2 제어기는 상기 중복제거될 데이터 블록의 어드레스, 상기 중복제거될 데이터 블록의 고윳값, 및 상기 제1 제어기의 어드레스 간의 대응관계를 구성하도록 구성되어 있는, 스토리지 어레이.
KR1020167005272A 2014-09-15 2014-09-15 데이터 중복제거 방법 및 스토리지 어레이 KR101716264B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/086530 WO2016041127A1 (zh) 2014-09-15 2014-09-15 重复数据删除方法和存储阵列

Publications (2)

Publication Number Publication Date
KR20160047482A true KR20160047482A (ko) 2016-05-02
KR101716264B1 KR101716264B1 (ko) 2017-03-14

Family

ID=55532419

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167005272A KR101716264B1 (ko) 2014-09-15 2014-09-15 데이터 중복제거 방법 및 스토리지 어레이

Country Status (9)

Country Link
US (1) US20170177489A1 (ko)
EP (1) EP3037949B1 (ko)
JP (1) JP6254293B2 (ko)
KR (1) KR101716264B1 (ko)
CN (1) CN105612489B (ko)
AU (1) AU2014403332B2 (ko)
BR (1) BR112016003763B1 (ko)
CA (1) CA2920004C (ko)
WO (1) WO2016041127A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3321792B1 (en) * 2016-09-28 2020-07-29 Huawei Technologies Co., Ltd. Method for deleting duplicated data in storage system, storage system and controller
US10705969B2 (en) * 2018-01-19 2020-07-07 Samsung Electronics Co., Ltd. Dedupe DRAM cache
CN108897806A (zh) * 2018-06-15 2018-11-27 东软集团股份有限公司 数据一致性比对方法、装置、存储介质及电子设备
CN112714910B (zh) * 2018-12-22 2022-12-27 华为云计算技术有限公司 分布式存储系统及计算机程序产品
WO2021016728A1 (zh) * 2019-07-26 2021-02-04 华为技术有限公司 存储系统中数据处理方法、装置及计算机存储可读存储介质
CN113411398B (zh) * 2021-06-18 2022-02-18 全方位智能科技(南京)有限公司 一种基于大数据的文件清理写入及清理管理系统及方法
CN113253947B (zh) * 2021-07-16 2021-10-15 苏州浪潮智能科技有限公司 一种重删方法、装置、设备及可读存储介质
CN113627132B (zh) * 2021-08-27 2024-04-02 智慧星光(安徽)科技有限公司 数据去重标记码生成方法、系统、电子设备及存储介质
CN114003181B (zh) * 2022-01-04 2022-05-20 苏州浪潮智能科技有限公司 数据写镜像系统、方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120233425A1 (en) * 2007-09-05 2012-09-13 Emc Corporation De-duplication in a virtualized storage environment
KR20130074605A (ko) * 2011-12-26 2013-07-04 성균관대학교산학협력단 공유 데이터 저장소 관리 장치 및 방법

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW579463B (en) * 2001-06-30 2004-03-11 Ibm System and method for a caching mechanism for a central synchronization server
US7428613B1 (en) * 2004-06-29 2008-09-23 Crossroads Systems, Inc. System and method for centralized partitioned library mapping
JP4901316B2 (ja) * 2006-06-06 2012-03-21 株式会社日立製作所 ストレージシステム及び記憶制御装置
JP4394670B2 (ja) * 2006-09-28 2010-01-06 株式会社日立製作所 ディスク制御装置及びストレージシステム
WO2009033074A2 (en) * 2007-09-05 2009-03-12 Emc Corporation De-duplication in virtualized server and virtualized storage environments
JP4480756B2 (ja) * 2007-12-05 2010-06-16 富士通株式会社 ストレージ管理装置、ストレージシステム制御装置、ストレージ管理プログラム、データ記憶システムおよびデータ記憶方法
JP2009251725A (ja) * 2008-04-02 2009-10-29 Hitachi Ltd 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。
US8185691B2 (en) * 2008-06-30 2012-05-22 Netapp, Inc. Optimized cache coherency in a dual-controller storage array
US8626723B2 (en) * 2008-10-14 2014-01-07 Vmware, Inc. Storage-network de-duplication
US8595397B2 (en) * 2009-06-09 2013-11-26 Netapp, Inc Storage array assist architecture
JP4838878B2 (ja) * 2009-12-04 2011-12-14 富士通株式会社 データ管理プログラム、データ管理装置、およびデータ管理方法
JP4892072B2 (ja) * 2010-03-24 2012-03-07 株式会社東芝 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法
US9110936B2 (en) * 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
CN102063274B (zh) * 2010-12-30 2013-10-09 华为技术有限公司 存储阵列和存储系统及数据访问方法
CN102156703A (zh) * 2011-01-24 2011-08-17 南开大学 一种低功耗的高性能重复数据删除系统
CN102833298A (zh) * 2011-06-17 2012-12-19 英业达集团(天津)电子技术有限公司 分布式的重复数据删除系统及其处理方法
CN102866935B (zh) * 2011-07-07 2014-11-12 北京飞杰信息技术有限公司 基于iscsi的即时复制方法和存储系统
US8620886B1 (en) * 2011-09-20 2013-12-31 Netapp Inc. Host side deduplication
WO2013095381A1 (en) * 2011-12-20 2013-06-27 Intel Corporation Method and system for data de-duplication
US9417811B2 (en) * 2012-03-07 2016-08-16 International Business Machines Corporation Efficient inline data de-duplication on a storage system
US8856443B2 (en) * 2012-03-12 2014-10-07 Infinidat Ltd. Avoiding duplication of data units in a cache memory of a storage system
US8706971B1 (en) * 2012-03-14 2014-04-22 Netapp, Inc. Caching and deduplication of data blocks in cache memory
CN102982122A (zh) * 2012-11-13 2013-03-20 浪潮电子信息产业股份有限公司 一种适用于海量存储系统的重复数据删除方法
WO2014136183A1 (ja) * 2013-03-04 2014-09-12 株式会社日立製作所 ストレージ装置及びデータ管理方法
US9602428B2 (en) * 2014-01-29 2017-03-21 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for locality sensitive hash-based load balancing
US9760578B2 (en) * 2014-07-23 2017-09-12 International Business Machines Corporation Lookup-based data block alignment for data deduplication
WO2016013086A1 (ja) * 2014-07-24 2016-01-28 株式会社日立製作所 計算機システムおよびメモリ割当管理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120233425A1 (en) * 2007-09-05 2012-09-13 Emc Corporation De-duplication in a virtualized storage environment
KR20130074605A (ko) * 2011-12-26 2013-07-04 성균관대학교산학협력단 공유 데이터 저장소 관리 장치 및 방법

Also Published As

Publication number Publication date
BR112016003763B1 (pt) 2019-04-02
CA2920004A1 (en) 2016-03-15
JP6254293B2 (ja) 2017-12-27
JP2017505487A (ja) 2017-02-16
CA2920004C (en) 2019-10-22
WO2016041127A1 (zh) 2016-03-24
CN105612489A (zh) 2016-05-25
AU2014403332B2 (en) 2017-04-20
EP3037949A4 (en) 2016-10-12
EP3037949A1 (en) 2016-06-29
CN105612489B (zh) 2017-08-29
KR101716264B1 (ko) 2017-03-14
EP3037949B1 (en) 2019-07-31
US20170177489A1 (en) 2017-06-22

Similar Documents

Publication Publication Date Title
AU2017248513B2 (en) Write data request processing method and storage array
KR101716264B1 (ko) 데이터 중복제거 방법 및 스토리지 어레이
US10891054B2 (en) Primary data storage system with quality of service
US10853274B2 (en) Primary data storage system with data tiering
US20200142617A1 (en) Controlled ordering of data page transfers for migration into deduplicated storage system
US20200019516A1 (en) Primary Data Storage System with Staged Deduplication
US10037161B2 (en) Tiered storage system, storage controller, and method for deduplication and storage tiering
CN114579045A (zh) 存储装置、存储装置的操作方法和存储服务器的操作方法
JP6924671B2 (ja) データ書込み要求処理方法及びストレージアレイ
US11226769B2 (en) Large-scale storage system and data placement method in large-scale storage system
JP6552583B2 (ja) データ重複排除方法及びストレージアレイ
US11144229B2 (en) Bandwidth efficient hash-based migration of storage volumes between storage systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 4