KR20200037376A - 데이터 액세스 방법, 디바이스 및 시스템 - Google Patents
데이터 액세스 방법, 디바이스 및 시스템 Download PDFInfo
- Publication number
- KR20200037376A KR20200037376A KR1020207006897A KR20207006897A KR20200037376A KR 20200037376 A KR20200037376 A KR 20200037376A KR 1020207006897 A KR1020207006897 A KR 1020207006897A KR 20207006897 A KR20207006897 A KR 20207006897A KR 20200037376 A KR20200037376 A KR 20200037376A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- storage node
- read
- node
- storage
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 114
- 238000012545 processing Methods 0.000 claims description 60
- 238000013507 mapping Methods 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000013461 design Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 15
- 230000015654 memory Effects 0.000 description 13
- 239000003999 initiator Substances 0.000 description 12
- 230000009977 dual effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 8
- 239000000306 component Substances 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000003672 processing method Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012005 ligant binding assay Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 241001362551 Samba Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- -1 for example Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2221—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 출원의 실시예들은 저장 기술들의 분야에 관한 것이고, 데이터 액세스 방법, 장치, 및 시스템을 개시한다. 이 방법은 스토리지 시스템에서의 제1 스토리지 노드에 적용되고, 제1 스토리지 노드는 스위치를 사용하여 스토리지 시스템에서의 적어도 하나의 제2 스토리지 노드 및 호스트와 통신하고, 적어도 하나의 제2 스토리지 노드에 포함된 물리 디스크는 제1 스토리지 노드의 가상 디스크에 매핑된다. 방법은 다음을 포함할 수 있다: 제1 기입 요청을 수신하는 단계- 제1 기입 요청은 제1 기입될 데이터를 반송함 -; 제1 기입될 데이터를 스트라이핑하여 스트라이핑된 데이터를 획득하고, 스트라이핑된 데이터를 제1 스토리지 노드의 물리 디스크 및/또는 가상 디스크에 기입하는 단계; 및 스트라이핑된 데이터의 기입 위치를 기록하는 단계. 예를 들어, 기술적 해결책은 NVMe SSD를 포함하는 스토리지 시스템에 적용될 수 있지만, 이에 제한되는 것은 아니다.
Description
본 출원은 저장 기술 분야에 관한 것으로, 특히, 데이터 액세스 방법, 장치, 및 시스템에 관한 것이다.
도 1을 참조하면, 도 1은 종래 기술에 따른 스토리지 시스템의 아키텍처의 개략도이다. 스토리지 시스템은 2개의 스위치를 사용하여 호스트에 접속된다. 스토리지 시스템은 각각의 스위치에 접속되는 복수의 듀얼 컨트롤러 어레이를 추가로 포함한다. 각각의 듀얼 컨트롤러 어레이는 2개의 스토리지 컨트롤러, 및 각각의 스토리지 컨트롤러에 접속되는 복수의 기계적 하드 디스크(hard disk drive, HDD)를 포함한다. 2개의 스토리지 컨트롤러는 데이터 기입 절차에서 미러 동작을 구현하기 위해 중복 미러 채널을 사용하여 접속된다. 시스템에서, 각각의 듀얼 컨트롤러 어레이는 듀얼 컨트롤러 어레이 유닛으로서 사용되고, 각각의 듀얼 컨트롤러 어레이 유닛은 호스트의 일부 논리 블록 어드레스(logical block address, LBA)에 대응한다. 호스트에 의해 전송되는 판독/기입 요청은, 판독/기입 요청에서 반송되는 LBA에 대응하는 듀얼 컨트롤러 어레이 유닛에 스위치에 의해 포워딩된다. 그 후, 듀얼 컨트롤러 어레이 유닛은 듀얼 컨트롤러 어레이 유닛에서 데이터 판독/기입 동작을 국부적으로 구현한다.
도 1에 도시된 시스템 아키텍처는 HDD에 기초하여 제공된다. 비휘발성 메모리 익스프레스(non volatile memory Express, NVMe) 솔리드 스테이트 드라이브들(solid state drive, SSD)의 점진적인 인기로, NVMe SSD는 일반적으로 듀얼-컨트롤러 어레이에 적용된다. 그러나, HDD의 것과 비교하여, NVMe SSD의 성능은 수백 번 및 심지어 수천 번 향상되었다. 예를 들어, Intel의 P3600 NVMe SSD의 판독-전용 IOPS는 0.45백만에 도달하고, 기입-전용 IOPS는 또한 0.07백만에 도달한다. IOPS는 초당 입력/출력 동작들(input/output operations per second)의 영문 두문자어이다. 도 1에 도시된 시스템 아키텍처에서, 모든 처리 동작들은 2개의 스토리지 컨트롤러에 의해 수행되지만, 스토리지 컨트롤러들의 처리 능력들은 제한된다. 따라서, 도 1에 도시된 듀얼-컨트롤러 어레이 스토리지 아키텍처는 저장 매체로서 NVMe SSD를 사용하는 스토리지 시스템에 더이상 적용가능하지 않고, 새로운 타입의 시스템 아키텍처가 긴급하게 필요하다.
본 출원의 실시예들은 NVMe SSD를 저장 매체로서 사용하는 스토리지 시스템에 적용가능한 데이터 액세스 방법, 장치 및 시스템을 제공한다.
전술한 목적을 달성하기 위해, 본 발명의 실시예들에서 이하의 기술적 해결책들이 사용된다.
제1 양태에 따르면, 스토리지 시스템에서의 제1 스토리지 노드에 적용되는 데이터 액세스 방법이 제공되고, 여기서 제1 스토리지 노드는 스위치를 사용하여 스토리지 시스템에서의 적어도 하나의 제2 스토리지 노드 및 호스트와 통신하고, 적어도 하나의 제2 스토리지 노드에 포함된 물리 디스크는 제1 스토리지 노드의 가상 디스크에 매핑된다. 방법은 다음을 포함할 수 있다: 제1 기입 요청을 수신하는 단계- 제1 기입 요청은 제1 기입될 데이터를 반송함 -; 그 후, 제1 기입될 데이터를 스트라이핑하여 스트라이핑된 데이터를 획득하고, 스트라이핑된 데이터를 제1 스토리지 노드의 물리 디스크 및/또는 가상 디스크에 기입하는 단계; 및 스트라이핑된 데이터의 기입 위치를 기록하는 단계. 제1 스토리지 노드는 스토리지 시스템에서의 임의의 스토리지 노드일 수 있다. 제1 스토리지 노드에 의해 수신되는 제1 기입 요청은 호스트에 의해 전송되는 제1 기입 요청일 수 있거나, 임의의 제2 스토리지 노드에 의해 포워딩되는, 호스트로부터의 제1 기입 요청일 수 있다. 이러한 기술적 해결책에서, 각각의 스토리지 노드에 포함된 물리 디스크들(예를 들어, 메모리 칩들)의 일부 또는 전부가 다른 스토리지 노드에 매핑되어, 다른 스토리지 노드의 가상 디스크들로서 사용될 수 있다. 예를 들어, 물리 디스크들 중 일부 또는 전부는, 이에 제한되는 것은 아니지만, NOF 프로토콜을 사용하여 매핑될 수 있다. 따라서, 종래 기술과 비교하여, 이 기술적 해결책은 듀얼 컨트롤러 어레이에서 CPU 또는 스토리지 컨트롤러의 처리 능력에 의해 제한되지 않을 수 있어서, 스토리지 시스템의 처리 능력이 크게 개선될 수 있다.
가능한 설계에서, 스트라이핑된 데이터가 가상 디스크에 기입되는 경우, 스트라이핑된 데이터는 제2 스토리지 노드에 있고 가상 디스크에 매핑되는 물리 디스크에 기입된다. 예를 들어, 제1 스토리지 노드는 대응하는 스트라이핑된 데이터를 대응하는 제2 스토리지 노드에 전송하고, 그 후 제2 스토리지 노드는 수신된 데이터를 로컬 디스크(즉, 가상 디스크에 매핑된 물리 디스크)에 저장한다.
가능한 설계에서, 스트라이핑된 데이터의 기입 위치가 기록되는 경우, 제1 기입될 데이터의 지문이 추가로 기록된다. 예를 들어, 스트라이핑된 데이터의 기입 위치 및 제1 기입될 데이터의 지문은 제1 기입될 데이터의 분포 정보에 기록되지만, 이에 제한되지는 않는다. 특정 구현들에 대해서는, 이하의 특정 구현들을 참조한다.
가능한 설계에서, 스트라이핑된 데이터의 기입 위치가 기록되는 경우, 제1 기입될 데이터의 LBA가 추가로 기록되고, 여기서 LBA는 기입 요청에 반송되는 LBA이다. 예를 들어, 스트라이핑된 데이터의 기입 위치 및 제1 기입될 데이터의 LBA는 제1 기입될 데이터의 분포 정보에 기록되지만, 이에 제한되지는 않는다.
전술한 기술적 해결책들은 제1 스토리지 노드를 기입 동작을 수행하는 스토리지 노드로서 사용함으로써 제공된다. 일부 다른 실시예들에서, 제1 스토리지 노드는 다른 단계들을 추가로 수행할 수 있다:
가능한 설계에서, 제1 스토리지 노드는 호스트에 의해 전송된 제2 기입 요청을 수신할 수 있고- 제2 기입 요청은 제2 기입될 데이터를 반송함 -; 그 후, 제2 기입 요청에 기초하여 제2 기입 요청의 홈 노드를 결정하고, 제2 기입 요청의 홈 노드가 제1 스토리지 노드인 경우, 제1 스토리지 노드는 제2 기입 요청에 응답하여 기입 동작을 수행하거나, 또는 제2 기입 요청의 홈 노드가 제2 스토리지 노드인 경우, 제1 스토리지 노드는 제2 기입 요청을 제2 스토리지 노드에 포워딩하여, 제2 스토리지 노드가 제2 기입 요청에 응답하여 기입 동작을 수행하게 한다. 기입 동작을 수행하는 구현에 대해서는, 위에서 제공되는 기술적 해결책들 또는 이하에 제공되는 특정 구현들을 참조하고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
가능한 설계에서, 제2 기입 요청에 기초하여 제2 기입 요청의 홈 노드를 결정하는 것은: 제2 기입될 데이터의 지문을 계산하는 것; 및 그 후, 제2 기입될 데이터의 지문에 기초하여 제2 기입 요청의 홈 노드를 결정하는 것을 포함할 수 있다. 가능한 설계에서, 제2 기입 요청의 홈 노드는 구체적으로 제2 기입될 데이터의 홈 노드이다. 이에 기초하여, 선택적으로, 이 방법은 제2 기입 요청에서 반송되는 LBA의 홈 노드를 결정하는 것을 추가로 포함할 수 있고, LBA의 홈 노드는 LBA와 제2 기입될 데이터의 지문 사이의 매핑 관계를 관리하도록 구성된다.
가능한 설계에서, 제2 기입 요청에 기초하여 제2 기입 요청의 홈 노드를 결정하는 것은: 제2 기입 요청에 반송된 LBA에 기초하여 제2 기입 요청의 홈 노드를 결정하는 것을 포함할 수 있다. 이러한 가능한 설계에서, 제2 기입 요청의 홈 노드는 구체적으로 제2 기입 요청에서 반송되는 LBA의 홈 노드이다.
데이터 기입 절차에서 제1 스토리지 노드에 의해 수행되는 단계들은 설명을 위해 위의 예로서 사용되고, 다음은 데이터 판독 절차에서 제1 스토리지 노드에 의해 수행되는 단계들을 설명한다.
가능한 설계에서, 제1 스토리지 노드는 제1 판독 요청에 의해 요청된 제1 판독될 데이터의 지문을 수신하고; 그 후, 제1 판독될 데이터의 지문에 기초하여 제1 판독될 데이터의 기입 위치를 획득하고, 제1 판독될 데이터의 기입 위치로부터 제1 판독될 데이터의 스트라이핑된 데이터를 판독한다. 제1 스토리지 노드는 제1 기입될 데이터의 기입 위치와 제1 기입될 데이터의 지문 사이의 매핑 관계를 저장한다.
가능한 설계에서, 제1 스토리지 노드는 제1 판독 요청을 수신하고, 여기서 제1 판독 요청은 제1 LBA를 반송하고; 그 후, 제1 LBA에 기초하여, 제1 판독 요청에 의해 요청된 제1 판독될 데이터의 기입 위치를 획득하고, 제1 판독될 데이터의 기입 위치로부터 제1 판독될 데이터의 스트라이핑된 데이터를 판독한다. 제1 스토리지 노드는 제1 기입될 데이터의 기입 위치와 제1 LBA 사이의 매핑 관계를 저장한다.
데이터 판독 절차에서 위에서 제공된 기술적 해결책들은 제1 스토리지 노드가 판독 동작을 수행하는 스토리지 노드로서 사용되는 예를 사용하여 설명된다. 일부 다른 실시예들에서, 제1 스토리지 노드는 다른 단계들을 추가로 수행할 수 있다:
가능한 설계에서, 제1 스토리지 노드는 호스트에 의해 전송된 제2 판독 요청을 수신하고; 그 후, 제2 판독 요청에 기초하여 제2 판독 요청의 홈 노드를 결정하고, 제2 판독 요청의 홈 노드가 제1 스토리지 노드인 경우, 제1 스토리지 노드는 제2 판독 요청에 응답하여 판독 동작을 수행하거나, 또는 제2 판독 요청의 홈 노드가 제2 스토리지 노드이면, 제1 스토리지 노드는 제2 판독 요청을 제2 스토리지 노드에 포워딩하여, 제2 스토리지 노드가 제2 판독 요청에 응답하여 판독 동작을 수행하게 한다. 판독 동작을 수행하는 구현에 대해서는, 위에서 제공되는 기술적 해결책들 또는 이하에 제공되는 특정 구현들을 참조하고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
가능한 설계에서, 제2 판독 요청에 기초하여 제2 판독 요청의 홈 노드를 결정하는 것은 다음을 포함할 수 있다: 제2 판독 요청에서 반송되는 LBA의 홈 노드를 결정하는 것- LBA의 홈 노드는 제2 판독 요청에 의해 요청된 제2 판독될 데이터의 지문과 LBA 사이의 매핑 관계를 관리하도록 구성됨 -; 그 후, 제2 LBA의 홈 노드로부터 제2 판독될 데이터의 지문을 획득하는 것; 및 제2 판독될 데이터의 지문에 기초하여 제2 판독 요청의 홈 노드를 결정하는 것. 대안적으로, 제2 판독 요청에서 반송되는 LBA의 홈 노드가 결정되고, 그 후 제2 판독될 데이터의 지문 및 제2 판독 요청의 홈 노드가 제2 LBA의 홈 노드로부터 획득된다. 이러한 가능한 설계에서, 제2 판독 요청의 홈 노드는 구체적으로 제2 판독될 데이터의 홈 노드이다.
가능한 설계에서, 제2 판독 요청에 기초하여 제2 판독 요청의 홈 노드를 결정하는 것은: 제2 판독 요청에 반송되는 LBA에 기초하여 제2 판독 요청의 홈 노드를 결정하는 것을 포함할 수 있다. 이러한 가능한 설계에서, 제2 판독 요청의 홈 노드는 구체적으로 제2 판독 요청에서 반송되는 LBA의 홈 노드이다.
제2 양태에 따르면, 스토리지 노드가 제공되고, 스토리지 노드는 전술한 방법 예들에 따라 스토리지 노드에 대한 기능 모듈 분할을 수행할 수 있고, 예를 들어, 기능들에 대응하는 기능 모듈들을 분할할 수 있거나, 또는 2개 이상의 기능을 하나의 처리 모듈에 통합할 수 있다.
제3 양태에 따르면, 스토리지 및 프로세서를 포함하는 스토리지 노드가 제공되고, 스토리지는 컴퓨터 프로그램을 저장하도록 구성되고, 컴퓨터 프로그램이 프로세서에 의해 실행될 때, 제1 양태 또는 제1 양태의 임의의 가능한 설계에 따른 방법이 수행된다. 스토리지는 메모리 및/또는 메모리 칩, 및/또는 이와 유사한 것일 수 있다. 프로세서는 CPU 및/또는 제어 스토리지, 및/또는 이와 유사한 것일 수 있다.
제4 양태에 따르면, 제2 양태 또는 제3 양태에 따른 스토리지 노드를 포함하는 데이터 액세스 시스템이 제공되고, 여기서 스토리지 노드는 스위치를 사용하여 스토리지 시스템에서의 적어도 하나의 제2 스토리지 노드 및 호스트와 통신하고, 적어도 하나의 제2 스토리지 노드에 포함된 물리 디스크는 스토리지 노드의 가상 디스크에 매핑된다.
본 출원은 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 저장 매체를 추가로 제공하며, 프로그램이 컴퓨터 상에서 실행될 때, 컴퓨터는 제1 양태 또는 제1 양태의 임의의 가능한 설계에 따른 방법을 수행한다.
본 출원은 컴퓨터 프로그램 제품을 추가로 제공하며, 컴퓨터 프로그램 제품이 컴퓨터 상에서 실행될 때, 컴퓨터는 전술한 양태들 중 어느 하나에 따른 방법을 수행한다.
본 출원은 명령어를 저장하는 통신 칩을 추가로 제공하고, 여기서 통신 칩이 스토리지 노드 상에서 실행될 때, 스토리지 노드는 제1 양태 또는 제1 양태의 임의의 가능한 설계에 따른 방법을 수행한다.
위에서 제공된 임의의 장치 또는 컴퓨터 저장 매체 또는 컴퓨터 프로그램 제품이 위에 제공된 대응하는 방법들을 수행하기 위해 사용된다는 것이 이해될 수 있다. 따라서, 장치 또는 컴퓨터 저장 매체 또는 컴퓨터 프로그램 제품에 의해 달성될 수 있는 유익한 효과들에 대해서는, 대응하는 방법들의 유익한 효과들을 참조하고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
도 1은 종래 기술에 따른 스토리지 시스템의 아키텍처의 개략도이다;
도 2는 본 출원의 실시예에서 제공되는 기술적 해결책이 적용가능한 시스템 아키텍처의 개략도이다;
도 3은 본 출원의 실시예에 따른 물리 디스크와 가상 디스크 사이의 매핑의 개략도이다;
도 4a는 도 2에 도시된 시스템 아키텍처의 하드웨어 형태의 정면도이다;
도 4b는 도 2에 도시된 시스템 아키텍처의 하드웨어 형태의 배면도이다;
도 4c는 도 2에 도시된 시스템 아키텍처의 하드웨어 형태의 평면도이다;
도 5는 도 2에 도시된 시스템 아키텍처의 확장된 시스템 아키텍처의 개략도이다;
도 6a 및 도 6b는 본 출원의 실시예에 따른 데이터 기입 방법의 흐름도 1이다;
도 7은 본 출원의 실시예에 따른 도 6a 및 도 6b의 데이터 판독 방법의 흐름도이다;
도 8a 및 도 8b는 본 출원의 실시예에 따른 데이터 기입 방법의 흐름도 2이다;
도 9는 본 출원의 실시예에 따른 도 8a 및 도 8b의 데이터 판독 방법의 흐름도이다;
도 10a 및 도 10b는 본 출원의 실시예에 따른 데이터 기입 방법의 흐름도 3이다;
도 11은 본 출원의 실시예에 따른 도 10a 및 도 10b의 데이터 판독 방법의 흐름도이다;
도 12는 본 출원의 실시예에 따른 데이터 기입 방법의 흐름도 4이다;
도 13은 본 출원의 실시예에 따른 도 12의 데이터 판독 방법의 흐름도이다; 및
도 14는 본 출원의 실시예에 따른 스토리지 노드의 개략 구조도이다.
도 2는 본 출원의 실시예에서 제공되는 기술적 해결책이 적용가능한 시스템 아키텍처의 개략도이다;
도 3은 본 출원의 실시예에 따른 물리 디스크와 가상 디스크 사이의 매핑의 개략도이다;
도 4a는 도 2에 도시된 시스템 아키텍처의 하드웨어 형태의 정면도이다;
도 4b는 도 2에 도시된 시스템 아키텍처의 하드웨어 형태의 배면도이다;
도 4c는 도 2에 도시된 시스템 아키텍처의 하드웨어 형태의 평면도이다;
도 5는 도 2에 도시된 시스템 아키텍처의 확장된 시스템 아키텍처의 개략도이다;
도 6a 및 도 6b는 본 출원의 실시예에 따른 데이터 기입 방법의 흐름도 1이다;
도 7은 본 출원의 실시예에 따른 도 6a 및 도 6b의 데이터 판독 방법의 흐름도이다;
도 8a 및 도 8b는 본 출원의 실시예에 따른 데이터 기입 방법의 흐름도 2이다;
도 9는 본 출원의 실시예에 따른 도 8a 및 도 8b의 데이터 판독 방법의 흐름도이다;
도 10a 및 도 10b는 본 출원의 실시예에 따른 데이터 기입 방법의 흐름도 3이다;
도 11은 본 출원의 실시예에 따른 도 10a 및 도 10b의 데이터 판독 방법의 흐름도이다;
도 12는 본 출원의 실시예에 따른 데이터 기입 방법의 흐름도 4이다;
도 13은 본 출원의 실시예에 따른 도 12의 데이터 판독 방법의 흐름도이다; 및
도 14는 본 출원의 실시예에 따른 스토리지 노드의 개략 구조도이다.
본 명세서에서 "복수의"라는 용어는 2개 또는 2개 초과를 의미한다. 본 명세서에서 용어들 "제1", "제2" 등은 상이한 객체들을 구별하기 위해서만 사용되고, 그의 시퀀스를 제한하지 않는다. 예를 들어, 제1 스토리지 노드 및 제2 스토리지 노드는 상이한 객체들을 구별하기 위해 사용되고, 그것의 시퀀스를 제한하지 않는다. 본 명세서에서 "및/또는"이라는 용어는 연관된 객체들을 설명하기 위한 연관 관계만을 설명하고 3개의 관계가 존재할 수 있다는 것을 나타낸다. 예를 들어, A 및/또는 B는 다음 세 가지 경우를 나타낼 수 있는데: A만 존재하고, A와 B 둘 다가 존재하며, B만 존재한다. 또한, 본 명세서에서의 문자 "/"는 연관된 오브젝트들 사이의 "또는(or)" 관계를 일반적으로 표시한다.
도 2는 본 출원에 제공된 기술적 해결책이 적용가능한 시스템 아키텍처의 개략도이다. 도 2에 도시된 시스템 아키텍처는 호스트(1) 및 스토리지 시스템(2)을 포함할 수 있다. 스토리지 시스템(2)은 스위치(21), 및 스위치(21)에 개별적으로 접속된 복수의 스토리지 노드(22)를 포함할 수 있다. 신뢰성을 개선시키기 위해, 스토리지 시스템(2)은 일반적으로 적어도 2개의 스위치(21)를 구비할 수 있다는 점이 이해될 수 있다. 이 경우, 각각의 스토리지 노드(22)는 모든 스위치들(21)에 접속된다. 스토리지 시스템(2)이 2개의 스위치(21)를 포함하는 것은 설명을 위해 도 2에서 예로서 사용된다.
스위치(21)는 스토리지 노드들(22)과 통신하고, 스토리지 노드들(22)과 호스트(1)를 접속시키도록 구성된다. 예를 들어, 스위치(21)는 이더넷 스위치(Ethernet switch), IB 스위치(InfiniBand switch), PCIe 스위치(PCIe switch) 등일 수 있지만, 이들로 제한되지 않는다.
예를 들어, 기능들에 따라 분할되는 경우, 스위치(21)는 내부 교환 포트(211) 및 스토리지 서비스 포트(212)를 포함할 수 있다. 선택적으로, 스위치(21)는 확장 포트(213)를 추가로 포함할 수 있다. 내부 교환 포트(211)는 스토리지 노드들(22)에 접속된 포트이다. 각각의 스위치(22)는 하나 이상의 내부 교환 포트(211)를 구비할 수 있고, 각각의 내부 교환 포트(211)는 하나의 스토리지 노드(22)의 하나의 내부 포트(220)에 접속될 수 있다. 스토리지 서비스 포트(212)는 호스트(1)에 접속된 포트이고, 외부 디바이스를 위한 스토리지 서비스를 제공하도록 구성된다. 각각의 스위치(21)는 하나 이상의 스토리지 서비스 포트(212)를 구비할 수 있다. 확장 포트(213)는 복수의 스토리지 시스템(2)의 스케일링을 구현하기 위해 다른 스위치(21)에 접속하도록 구성된다. 전술한 포트들은 용도에 따라 분할된다는 점에 유의해야 한다. 이 포트들은 물리적으로 동일할 수 있다. 예를 들어, 일부 경우들에서, 확장 포트(213)는 스토리지 서비스 포트(212)로서 사용될 수 있고, 다른 예들은 하나씩 열거되지 않는다. 이론적으로, 내부 교환 포트(211)는 스토리지 서비스 포트(212) 또는 확장 포트(213)로서 사용될 수 있고, 실제로, 내부 교환 포트(211)는 스토리지 시스템의 하드웨어 형태에 따라 설정될 수 있다. 예를 들어, 도 4a 내지 도 4c에 도시된 하드웨어 형태들에서, 내부 교환 포트(211)가 섀시에 위치되고, 스토리지 서비스 포트(212) 및 확장 포트(213)가 섀시의 표면 상에 위치되기 때문에, 내부 교환 포트(211)는 일반적으로 스토리지 서비스 포트(212) 또는 확장 포트(213)로서 사용되지 않는다.
스토리지 노드(22)는 입력/출력(input/output, I/O) 처리 능력 및 저장 공간을 제공하고 스토리지 시스템에 있는 코어 컴포넌트이다. 예를 들어, 각각의 스토리지 노드(22)는 하나 이상의 내부 포트(220)를 구비할 수 있고, 여기서 내부 포트(220)는 스위치(21)의 내부 교환 포트(211)에 접속된 포트이고, 각각의 내부 포트(220)는 하나의 스위치(21)에 접속될 수 있다. 예를 들어, 내부 포트(220)는 원격 직접 메모리 액세스(remote direct memory access, RDMA) 네트워크 인터페이스 카드 등에 의해 제공될 수 있다. 스위치(21)가 이더넷 스위치인 경우, 스토리지 시스템(2)의 내부 이더넷으로도 지칭되는 중복 이더넷 네트워크가 형성된다. 이것은 임의의 포트 또는 접속 또는 스위치가 실패하는 경우 이용가능한 접속이 여전히 존재하는 구현을 용이하게 한다.
일 구현에서, 도 2에 도시된 스토리지 노드는 I/O 및 처리 모듈(221), 및 I/O 및 처리 모듈(221)에 접속된 하나 이상의 스토리지 모듈(222)을 포함한다.
I/O 및 처리 모듈(221)은 (판독/기입 요청을 포함하는) I/O 요청의 입력/출력 및 관련된 처리 절차의 실행을 담당한다. 특정 구현 동안, I/O 및 처리 모듈(221)은 I/O 버스를 사용하여 적어도 하나의 RDMA 네트워크 인터페이스 카드에 접속되는 적어도 하나의 중앙 처리 유닛(central processing unit, CPU)일 수 있다. 또한, CPU는 특정한 수량의 메모리에 추가로 접속될 수 있다. RDMA 네트워크 인터페이스 카드는 스위치(21)에 접속하기 위해 내부 포트(220)를 제공한다. 예를 들어, I/O 버스는 주변 컴포넌트 상호접속 익스프레스(peripheral component interconnect express, PCIe) 버스일 수 있지만, 이에 제한되는 것은 아니다. 물리 구현 동안, 본 명세서에서 CPU, I/O 버스, 및 RDMA 네트워크 인터페이스 카드는 부분적으로 또는 전체적으로 함께 통합될 수 있고, 예를 들어, 시스템 온 칩(system on chip, SoC) 또는 필드 프로그래머블 게이트 어레이(field-programmable gate array, FPGA)를 형성할 수 있거나, 일반적인 CPU(예를 들어, Xeon CPU) 또는 일반적인 RDMA 네트워크 인터페이스 카드와 같은 일반적인 컴포넌트를 형성할 수 있다는 점에 유의해야 한다. I/O 및 처리 모듈(221)은 내부 I/O 버스를 사용하여 스토리지 모듈(222)에 접속된다.
스토리지 모듈(222)은 적어도 하나의 스토리지 컨트롤러, 및 각각의 스토리지 컨트롤러에 접속되는 복수의 메모리 칩을 포함할 수 있다. 메모리 칩은 NAND 플래시 칩일 수 있거나, 상변화 메모리(phase change memory, PCM), 자기 랜덤 액세스 메모리(magnetic random access memory, MRAM), 또는 저항성 랜덤 액세스 메모리(resistive random access memory, RRAM)와 같은 다른 비휘발성 메모리 칩일 수 있다. 스토리지 컨트롤러는 애플리케이션-특정 집적 회로(application specific integrated circuit, ASIC) 칩일 수 있거나, FPGA일 수 있다. 마찬가지로, 본 명세서에서의 스토리지 모듈의 물리 형태는 일반적인 솔리드 스테이트 드라이브(solid state drive, SSD)일 수 있거나, I/O 버스를 사용하여 스토리지 컨트롤러, 메모리 칩, 및 I/O 및 처리 모듈(221)을 접속시키는 솔리드 스테이트 드라이브일 수 있다.
일 구현에서, I/O 및 처리 모듈(221) 및 스토리지 모듈(222) 둘 다가 일반적인 컴포넌트들을 포함하는 경우, 예를 들어, 컴포넌트들 예컨대 일반적인 CPU들(예를 들어, X86 Xeon), 일반적인 RDMA 네트워크 인터페이스 카드들 및 일반적인 SSD들을 포함하는 경우, 스토리지 노드(22)는 일반적인 서버이다.
본 출원에서 제공되는 기술적 해결책들에서, 호스트 및 스토리지 시스템은 NOF(NVMe over Fabric) 프로토콜을 사용하여 서로 액세스할 수 있다. 각각의 스토리지 노드에 포함된 물리 디스크들(예를 들어, 메모리 칩들)의 전부 또는 일부는 다른 스토리지 노드에 매핑되어, 다른 스토리지 노드의 가상 디스크들로서 사용될 수 있다. 예를 들어, 물리 디스크들은 NOF 프로토콜에 기초하여 매핑된다. 이러한 방식으로, 판독/기입 동작이 수행되는 경우, 스토리지 노드에서 소프트웨어 시스템(즉, CPU 또는 메모리 컨트롤러에 의해 실행되는 명령어)이 이러한 가상 디스크들을 로컬 물리 디스크들로서 사용할 수 있다. 즉, 본 출원은 분산형 스토리지 시스템을 제공한다. 이러한 스토리지 시스템에서, 상이한 스토리지 노드들은 NOF 프로토콜에서 제공된 RDMA 방식으로 RDMA 네트워크 인터페이스 카드들을 사용함으로써 서로 액세스하고 스위치들을 사용하여 서로 통신한다. 따라서, 도 1에 도시된 시스템 아키텍처와 비교하여, 스토리지 시스템은 듀얼 컨트롤러 어레이에서의 CPU 또는 스토리지 컨트롤러의 처리 능력에 의해 제한되지 않고, 따라서 스토리지 시스템의 처리 능력이 크게 개선될 수 있다.
도 3은 물리 디스크와 가상 디스크 사이의 매핑의 개략도이다. 도 3은 스토리지 시스템이 1에서 16까지 각각 번호가 매겨진 16개의 스토리지 노드를 포함하고, 스토리지 노드들 2 내지 15 각각의 물리 디스크가 스토리지 노드 1에 매핑되어, 스토리지 노드 1의 가상 디스크로서 사용되는 예를 사용하여 설명된다. 또한, 메모리 칩이 NVMe SSD인 것이 설명을 위한 예로서 사용된다. 예를 들어, 스토리지 노드들 2 내지 15 각각의 물리 디스크를 스토리지 노드 1에 매핑하는 구현은: 스토리지 시스템이 초기화되는 경우, 스토리지 노드 1에 매핑되도록 허용되는 물리 디스크에 관한 정보가 스토리지 노드들 2 내지 15 각각에 구성되고, 그 후 스토리지 노드들 2 내지 15 각각과 스토리지 노드 1 사이에 접속이 설정되는 것이다. 접속들이 확립된 후에, 스토리지 노드 1은, 스토리지 노드 1에 매핑되도록 허용되고 스토리지 노드들 2 내지 15 각각에 의해 결정되는 물리 디스크에 관한 정보를 획득하고, 스토리지 노드 1에 매핑되는 물리 디스크에 드라이브 문자를 할당하고, 스토리지 노드 1의 가상 디스크로서 물리 디스크를 사용하고, 가상 디스크와 원격 물리 디스크 사이의 매핑 관계를 기록할 수 있다. 이러한 방식으로, 스토리지 노드 1의 소프트웨어 시스템은 16개의 NVMe SSD가 존재한다는 것을 감지할 수 있지만, 스토리지 노드 1에서 실제로 단 하나의 NVMe SSD가 존재하고, 다른 15개의 NVMe SSD는 NOF 프로토콜에 기초하여 다른 스토리지 노드들의 NVMe SSD들을 가상화함으로써 획득된다. NOF 프로토콜의 낮은 지연 특성 때문에, 로컬 디스크(즉, 물리 디스크)가 액세스되는 경우의 성능과 가상 디스크가 액세스되는 경우의 성능 사이의 차이가 무시될 수 있다.
다음은 간단히 NOF 프로토콜을 설명한다. NOF 프로토콜의 목적은 NVMe SSD가 로컬 컴퓨터 시스템으로부터 분리될 수 있다는 것, 즉, 원격 NVMe SSD가 RDMA 네트워크 인터페이스 카드를 사용하여 로컬 컴퓨터 시스템에 접속될 수 있고, 가상 NVMe SSD가 로컬 컴퓨터 시스템에서 "보이는" 것이다. RDMA 기술이 사용되기 때문에, 원격 NVMe SSD(즉, 가상 NVMe SSD)와 로컬 NVMe SSD(즉, 물리 NVMe SSD) 사이에 기본적으로 성능 차이가 존재하지 않는다. NOF는 NVMe의 모든 커맨드들을 가지며, 일부 관리 커맨드들, 예를 들어, Authentication Send, Authentication Receive, Connect, Property Get, 및 Property Set가 추가된다. RDMA 네트워크에 적응하기 위해, 원래의 NVMe 프로토콜과 비교하여 NOF 프로토콜의 데이터 송신 방식 및 절차의 일부 변경들이 존재하고, 변경들은 구체적으로: NVMe에 의해 사용되는 PCIe 메모리 공간 매핑 방식 대신에 RDMA 방식으로 커맨드(예를 들어, 판독/기입 요청)/데이터를 송신하는 것을 포함할 수 있다. 이는, NOF 시스템에서, 개시자(initiator)와 타깃(target)이 다른 당사자의 메모리 공간을 "볼" 수 없기 때문이다.
본 출원의 구현에서, 개시자는 호스트일 수 있고, 타깃은 스토리지 노드일 수 있다. 다른 구현에서, 개시자는 스토리지 노드일 수 있고, 타깃은 다른 스토리지 노드일 수 있다.
NOF 프로토콜에서, 데이터 판독 절차는: 판독 요청(즉, READ 커맨드)을 수신한 후에, 판독 요청에 기초하여 타깃에 의해, 개시자의 버퍼에 기입될 어드레스 정보를 획득하는 것을 포함할 수 있다. 그 후, 타깃은 개시자에 대해 RDMA_WRITE 동작을 개시하여, 호스트의 버퍼에 판독되는 데이터를 기입한다. 다음으로, 타깃은 개시자에 대해 RDMA_SEND 동작을 개시하여, 개시자에게 송신이 완료된 것을 통지한다.
NOF 프로토콜에서, 데이터 기입 절차는: 개시자에 의해, 기입 요청(즉, Write 커맨드)을 셋업하고, RDMA_SEND 동작을 사용하여 기입 요청을 타깃에 전송하는 것을 포함할 수 있다. 기입 요청을 수신한 후, 타깃은 RDMA_READ 동작을 개시하고, 개시자로부터, 기입 요청에 응답하여 기입될 데이터를 획득한다. 개시자가 응답하는 데이터를 수신한 후, 타깃은 개시자에 대해 RDMA_SEND 동작을 개시하여, 개시자에게 송신이 완료된 것을 통지한다.
다음은 스토리지 시스템(2)의 하드웨어 형태를 설명한다. 스위치(21)의 하드웨어 형태 또는 스토리지 노드(22)의 하드웨어 형태는 본 출원에서 제한되지 않는다. 스토리지 노드(22) 및 스위치(21)는 하나의 섀시에 존재할 수 있다. 스토리지 노드(22)가 일반 서버로서 구현되는 경우, 스토리지 노드(22)와 스위치(21)는 하나의 섀시에 존재할 수 있다. 스토리지 노드(22) 및 스위치(21)가 하나의 섀시에 존재하는 경우, 섀시는 하나 이상의 스위치, 하나 이상의 전원, 복수의 스토리지 노드, 스토리지 노드(22)와 스위치(21)를 접속시키는 백플레인 등을 포함할 수 있다.
도 4a 내지 도 4c는 도 2에 도시된 시스템 아키텍처의 하드웨어 형태를 도시한다. 도 4a는 랙 섀시의 정면도이고, 도 4b는 랙 섀시의 배면도이고, 도 4c는 랙 섀시의 평면도이다. 도 4a 내지 도 2c로부터, 랙 섀시는 2개의 이더넷 스위치, 4개의 중복 전원, 16개의 스토리지 노드, 및 스토리지 노드와 이더넷 스위치를 접속시키는 백플레인을 포함한다는 것을 알 수 있다.
도 4a에 도시된 정면도 및 도 4c에 도시된 평면도로부터, 랙 섀시는 16개의 빈 슬롯을 구비하고 하나의 스토리지 노드가 각각의 빈 슬롯에 삽입될 수 있다는 것을 알 수 있다. 실제 구현 동안, 삽입 스토리지 노드들은 모든 빈 슬롯들에 삽입되지 않을 수 있고, 리던던시 요건을 충족시키기 위해, 적어도 2개의 스토리지 노드가 삽입될 수 있다. 각각의 스토리지 노드는 스토리지 노드를 빈 슬롯에 삽입하도록 구성되는 하나 이상의 캐리어를 구비한다.
도 4b에 도시된 배면도로부터, 스토리지 서비스 포트 및 확장 포트가 이더넷 스위치에 의해 제공된다는 것을 알 수 있다. 여기서 서비스 포트는 다양한 이더넷 레이트들(예를 들어, 10G/40G/25G/50G/100G)을 지원하는 포트일 수 있고, 확장 포트는 높은 레이트(예를 들어, 40G/50G/100G)를 지원하는 포트일 수 있다.
도 4c에 도시된 평면도로부터, 이더넷 스위치의 내부 포트가 백플레인을 사용하여 스토리지 노드의 내부 포트에 접속될 수 있다는 것을 알 수 있다.
도 4a 내지 도 4c에 도시된 랙 섀시는 도 2에 도시된 시스템 아키텍처의 하드웨어 형태의 일례에 불과하고, 도 2에 도시된 시스템 아키텍처의 하드웨어 형태에 대한 제한을 구성하지 않는다는 점에 유의해야 한다.
도 5는 확장된 시스템 아키텍처를 제공한다. 시스템 아키텍처에서, 스토리지 시스템은 스토리지 서비스 포트를 사용하여 외부 스토리지 서비스를 제공하고, 네트워크를 사용하여 M개의 호스트에 접속되며, 여기서 M은 1보다 크거나 같은 정수이다. 본 명세서에서 네트워크는 직접 네트워크 또는 스위치들을 포함하는 네트워크일 수 있다. 네트워크가 이더넷 네트워크인 경우, 스토리지 시스템에 의해 제공되는 외부 서비스는 다음의: iSCSI, NOF, iSER, NFS, Samba 등 중 어느 하나를 포함하지만 이에 제한되지 않는 이더넷 기반 저장 프로토콜을 사용하여 제공될 수 있다. 또한, 스토리지 시스템은 확장 포트를 사용하여 스케일링 아웃(scaling out)을 수행할 수 있다. 도 5에 도시된 바와 같이, 시스템 아키텍처는 N개의 스토리지 시스템을 포함하고, 여기서 N은 2보다 크거나 같은 정수이다. 마찬가지로, 스케일링 아웃은 직접 네트워크를 사용하거나 스위치들을 사용함으로써 수행될 수 있다.
이하에서는, 첨부 도면을 참조하여, 본 출원에 따라 제공되는 시스템 아키텍처에서의 데이터 판독/기입 절차를 설명한다. 이전에, 스토리지 시스템이 16개의 스토리지 노드를 포함하고 스토리지 노드들이 1 내지 16으로 번호가 매겨진 예를 사용하여 이하에 도시된 실시예들 전부가 설명된다는 점에 유의해야 한다. 물론, 특정 구현 동안, 본 출원은 이에 제한되지 않는다. 또한, 각각의 스토리지 노드에 의해 수행되는 단계들은 스토리지 노드에서 CPU 및/또는 스토리지 컨트롤러에 의해 수행될 수 있다는 점에 유의해야 한다.
실시예 1
도 6a 및 도 6b를 참조하면, 도 6a 및 도 6b는 본 출원의 실시예에 따른 도 2에 도시된 스토리지 시스템에 적용되는 데이터 기입 방법의 흐름도이다. 세부 사항들은 다음과 같다:
S101: 호스트가 스토리지 시스템에 기입 요청을 전송하고, 여기서 기입 요청은 LBA 1 및 기입될 데이터를 포함한다. 스토리지 시스템에서의 스토리지 노드 1은 기입 요청을 수신한다. 구체적으로, 호스트는 스위치를 사용하여 스토리지 노드 1에 기입 요청을 포워딩한다.
스토리지 노드 1은 스토리지 시스템에서의 임의의 스토리지 노드일 수 있다.
일반적으로, 기입 절차에서 이용가능한 스토리지 노드 등에 의해 야기되는 기입될 데이터 손실을 회피하기 위해, 호스트로부터 기입 요청을 수신한 후, 스토리지 시스템은 기입 요청을 백업한다. 세부 사항들에 대해서는, S102 및 S103을 참조한다. S102 및 S103은 선택적인 단계들이라는 것이 이해될 수 있다.
S102: 스토리지 노드 1은 스토리지 노드 2와 같은 스토리지 노드 1의 미러 노드에 기입 요청을 전송한다. 구체적으로, 스토리지 노드 1은 기입 요청을 스위치를 사용하여 스토리지 노드 2에 전송한다. 스토리지 노드 2는 기입 요청을 수신한다.
스토리지 시스템에서의 임의의 2개의 스토리지 노드는 서로의 미러 노드들일 수 있다. 일반적으로, 서로의 미러 노드들인 2개의 스토리지 노드는 특정 규칙에 따라 미리 설정될 수 있다. 예를 들어, 규칙은 부하 균형을 구현하기 위해 특정 규칙에 따라 설정될 수 있지만, 이에 제한되지 않는다. 본 명세서에서의 부하 균형은, 미러 동작을 수행하는 단계가 가능한 한 많이 스토리지 노드들에 의해 균일하게 수행되는 것을 의미한다. 예를 들어, 2개의 인접하게 번호가 매겨진 스토리지 노드들이 서로의 미러 노드들로서 사용된다. 예를 들어, 스토리지 노드 1 및 스토리지 노드 2가 서로의 미러 노드들인 것, 스토리지 노드 3 및 스토리지 노드 4가 서로의 미러 노드들인 것 등이다.
S103: 스토리지 노드 2는 기입 요청을 버퍼링하고, 미러 완료 표시를 스토리지 노드 1에 반환하고, 스토리지 노드 1은 미러 완료 표시를 수신한다.
S104: 미러 완료 표시를 수신한 후, 스토리지 노드 1은 기입 동작 완료 표시를 호스트에 전송한다.
보통, 스토리지 시스템이 호스트의 기입 요청에 더 신속하게 응답하게 하기 위해, 미러 완료 후에, 스토리지 시스템은 기입 동작 완료 표시를 호스트에 즉시 전송한다. 스토리지 시스템은 기입 요청에서의 기입될 데이터를 기입하기 위해 다음의 단계들 S105 내지 S118 중 일부 또는 전부를 계속 수행한다.
S105: 스토리지 노드 1은 기입될 데이터의 지문을 생성하고, 지문에 기초하여 기입될 데이터의 홈 노드, 예를 들어, 스토리지 노드 3을 결정한다.
데이터의 지문은 데이터의 특성을 고유하게 식별하기 위해 사용된다. 즉, 데이터의 지문은 데이터의 아이덴티티(identity, ID)로서 이해될 수 있다. 2개의 데이터 조각이 동일한 지문들을 갖는 경우, 2개의 데이터 조각이 동일한 것으로 간주된다. 2개의 데이터 조각의 지문들이 상이한 경우, 2개의 데이터 조각은 상이한 것으로 간주된다. 본 출원에서, 계산을 통해 데이터의 지문을 획득하는 방법은 제한되지 않는다. 예를 들어, 지문은 데이터에 대해 해시(hash) 동작을 수행함으로써 획득될 수 있다. 예를 들어, 해시 연산은 보안 해시 알고리즘 1(secure hash algorithm 1, SHA-1), 순환 중복 검사(cyclic redundancy check, CRC) 32 등일 수 있지만, 이에 제한되는 것은 아니다. CRC32는 CRC의 특정 구현이며, 32 비트 체크 값을 생성할 수 있다. SHA-1을 예로서 사용하여, 해시 연산이 데이터에 대해 수행된 후에, 160비트 다이제스트가 획득되고, 다이제스트는 데이터의 지문이다.
데이터의 홈 노드는 데이터에 대해 기입 동작을 수행하는 스토리지 노드이다. 본 출원에서, 데이터의 홈 노드를 결정하는 방법은 제한되지 않는다. 구체적으로, 예를 들어, 데이터의 홈 노드는 부하 균형을 구현하기 위해 특정 알고리즘에 기초하여 구체적으로 결정될 수 있지만, 이에 제한되는 것은 아니다. 본 명세서에서의 부하 균형은 기입 동작을 수행하는 단계가 스토리지 노드들에 의해 가능한 한 많이 균일하게 수행되는 것을 의미한다. 예를 들어, 알고리즘은 모듈로 연산일 수 있다. 구체적으로, 모듈로 연산은 지문에 대해 수행되고, 획득된 값이 a인 경우, 데이터의 홈 노드는 스토리지 노드 a+1이고, 여기서 a≥0이고, a는 정수이고, 스토리지 시스템에서의 스토리지 노드들은 1로부터 번호가 매겨진다. 예를 들어, 스토리지 시스템에 전체 16개의 스토리지 노드가 있고, 데이터의 지문이 65537인 경우, 모듈로 연산은 16에 기초하여 65537에 대해 수행될 수 있고, 1이 획득되는데, 즉, 데이터의 홈 노드는 스토리지 노드 2이다.
기입될 데이터의 홈 노드는 데이터의 지문에 기초하여 결정되고, 스토리지 노드 1의 미러 노드는 스토리지 노드 1에 기초하여 결정되어, 기입될 데이터의 홈 노드와 스토리지 노드 1의 미러 노드 사이에 연관 관계가 존재하지 않는다는 점에 유의해야 한다. 기입될 데이터의 홈 노드 및 스토리지 노드 1의 미러 노드는 동일한 스토리지 노드일 수 있거나 상이한 스토리지 노드들일 수 있다. 이 실시예에서, 기입될 데이터의 홈 노드와 스토리지 노드 1의 미러 노드가 상이한 스토리지 노드들인 것이 설명을 위한 예로서 사용된다.
호스트에 의해 전송된 기입 요청을 수신하는 스토리지 노드(이 실시예에서, 스토리지 노드 1이 예로서 사용됨)는 또한 기입 요청에서 반송되는 기입될 데이터의 홈 노드로서 사용될 수 있다는 점이 이해될 수 있다. 예를 들어, 전술한 예들에 기초하여, 기입될 데이터의 지문이 65536인 경우, 모듈로 연산이 16에 기초하여 65536에 대해 수행될 수 있고, 0이 획득되는데, 즉, 기입될 데이터의 홈 노드가 스토리지 노드 1이다.
S106: 스토리지 노드 1은 기입 요청을 기입될 데이터의 홈 노드(예를 들어, 스토리지 노드 3)에 포워딩하고, 스토리지 노드 3은 기입 요청을 수신한다.
S107: 스토리지 노드 3은 데이터 분포 정보 세트를 쿼리하고, 세트가 기입될 데이터의 지문을 포함하는지를 결정한다.
세트가 기입될 데이터의 지문을 포함하지 않는 경우, 그것은 스토리지 시스템이 기입될 데이터를 저장하지 않았다는 것을 나타내고, S108이 수행된다. 세트가 기입될 데이터의 지문을 포함하는 경우, 그것은 스토리지 시스템이 기입될 데이터를 저장했다는 것을 나타내고, S111이 수행되어, 반복된 스토리지를 피하고 스토리지 공간을 절약한다.
데이터의 홈 노드는 데이터 분포 정보 세트를 관리할 수 있다. 데이터의 홈 노드에 의해 관리되는 데이터 분포 정보 세트에 포함되는 데이터 분포 정보의 수량은 스토리지 노드에 의해 수행되는 IO 동작들의 수량에 따라 증가된다. 초기 순간에(즉, 스토리지 노드가 기입 동작을 수행하지 않을 때), 스토리지 노드에 의해 관리되는 데이터 분포 정보 세트가 비어 있는 것으로 간주될 수 있거나, 스토리지 노드에 의해 관리되는 데이터 분포 정보 세트가 스토리지 시스템에 확립되지 않았다는 것으로 간주될 수 있다. 다른 순간에, 각각의 데이터 분포 정보 세트는 적어도 하나의 데이터 조각 분포 정보를 포함할 수 있다. 데이터 분포 정보는 메타데이터 테이블 M1을 사용하여 표현될 수 있고, M1의 관련 설명들은 다음과 같다:
S108: 스토리지 노드 3은 기입될 데이터를 스트라이핑하여 스트라이핑된 데이터를 획득하고, 스트라이핑된 데이터를 스토리지 노드 3의 물리 디스크 및/또는 가상 디스크에 기입한다.
이 단계는 데이터에 대한 리던던시 처리를 수행하는 것으로 이해될 수 있고, 단계의 기본 원리는: 완전한 데이터 조각(구체적으로 기입 요청에서 반송되는 데이터임)을 분할하여 복수의 데이터 블록을 획득하는 것이고, 선택적으로 하나 이상의 패리티 블록이 생성될 수 있다. 그 후, 이 데이터 블록들 및 패리티 블록들은 상이한 디스크들(즉, 자기 디스크들)에 저장된다. S108에서의 스트라이핑된 데이터는 데이터 블록들을 포함할 수 있고, 패리티 블록들을 추가로 포함할 수 있다. 본 출원에서, 리던던시 처리 방식은 제한되지 않는다. 예를 들어, 리던던시 처리의 방식은 독립 디스크들의 중복 어레이(redundant array of independent disks, RAID, 줄여서 디스크 어레이) 또는 이레이저 코딩(erasure coding, EC)일 수 있지만, 이들로 제한되지 않는다.
본 출원에서, 하나 이상의 스토리지 노드의 물리 디스크는 동일한 스토리지 노드의 가상 디스크에 매핑될 수 있기 때문에, 가상 디스크는 데이터가 스토리지 노드 3에 기입되는 경우 로컬 디스크로서 사용될 수 있다. 이러한 방식으로, 스토리지 노드 3은 가상 디스크를 스트라이핑된 데이터가 기입되는 디스크로서 선택할 수 있다. 데이터가 가상 디스크에 기입되는 경우, 스토리지 노드 3은 가상 디스크에 매핑되는, 다른 스토리지 노드의 물리 디스크를 먼저 결정하고, 그 후 RDMA 방식으로 그리고 NOF 프로토콜에 기초하여, 가상 디스크에 기입되는 데이터 블록을 다른 스토리지 노드의 결정된 물리 디스크에 기입할 수 있다.
예를 들어, 스토리지 시스템은 16개의 스토리지 노드를 포함하고, 리던던시 처리 방식은 EC이다. 하나의 가능한 구현은: 스토리지 노드 3이 EC 알고리즘에 기초하여 기입될 데이터를 스트라이핑하여, 14개의 데이터 블록 및 2개의 패리티 블록을 획득하는 것이다. 그 후, 16개의 블록 각각은 스토리지 시스템에서의 하나의 스토리지 노드에 기입된다.
S109: 스토리지 노드 3은 스트라이핑된 데이터의 기입 위치를 기록한다. 구체적으로, 스토리지 노드 3은 기입될 데이터의 분포 정보를 기록함으로써 스트라이핑된 데이터의 기입 위치를 기록할 수 있다.
데이터 분포 정보는 메타데이터 테이블 M1을 사용하여 표현될 수 있고, 메타데이터 테이블 M1에 포함되는 요소들은 표 1에 도시될 수 있다.
FingerPrint, Seg.diskID, Seg.startLBA, 및 Seg.length는 데이터 조각의 스트라이핑된 데이터의 기입 위치를 표현하기 위해 사용될 수 있다.
hostLBA는 호스트와 스토리지 시스템 사이의 정보 교환 동안 사용되는 LBA를 나타낸다는 점에 유의해야 한다. Seg.startLBA는 스토리지 모듈에서 기입된 데이터의 시작 LBA 어드레스를 나타낸다. 이 애플리케이션은 표 1에서의 요소들의 기록 방식들을 제한하지 않는다. 예를 들어, 스트라이핑된 데이터에서의 모든 블록들이 동일한 길이를 갖는 경우, 단지 하나의 길이가 기록된다. 다른 예들은 하나씩 열거되지 않는다.
예를 들어, S108에서의 예에 기초하여, 단계 S109가 수행된 후에, 스토리지 노드 3에 의해 기록되는, 기입될 데이터의 분포 정보는, 기입될 데이터의 지문, LBA 1, 기입될 데이터의 총 길이, 기입될 데이터의 2개의 중복 블록 및 14개의 데이터 블록 각각의 타입, 및 데이터가 기입되는 디스크의 ID 및 길이와 같은 정보를 포함할 수 있다.
S108 및 S109는 데이터의 홈 노드가 기입 요청/기입될 데이터에 응답하여 기입 동작을 수행하는 것으로서 지칭될 수 있다. 신뢰성을 향상시키기 위해, 데이터의 홈 노드는 메타데이터 테이블 M1에 대해 리던던시 처리를 수행할 수 있다. 세부 사항들에 대해서는, S110을 참조한다. S110은 선택적인 단계라는 것이 이해될 수 있다.
S110: 스토리지 노드 3은 스트라이핑된 데이터의 기입 위치를 스토리지 노드 3의 물리 디스크 및/또는 가상 디스크에 기입한다. 구체적으로, 스토리지 노드 3은, 기입될 데이터의 분포 정보를 스토리지 노드 3의 물리 디스크 및/또는 가상 디스크에 기입함으로써, 스트라이핑된 데이터의 기입 위치를 스토리지 노드 3의 물리 디스크 및/또는 가상 디스크에 기입할 수 있다.
이 단계는 데이터 분포 정보에 대한 리던던시 처리를 수행하는 것으로서 이해될 수 있다. 이 단계는 선택적 단계라는 점이 이해될 수 있다. 리던던시 처리 방식은 본 출원에서 제한되지 않는다. 예를 들어, 이 방식은 멀티-카피, EC, 또는 RAID와 같은 방식이지만, 이에 제한되지 않는다. 예로서 삼중 카피들을 사용하여, 스토리지 노드 3은 기입될 데이터의 분포 정보의 하나의 카피를 로컬로 저장하고, 그 후 스토리지 시스템으로부터 2개의 스토리지 노드를 선택하고, 후속하여 기입될 데이터의 분포 정보의 2개의 카피를 만들고, 각각의 카피를 2개의 스토리지 노드 중 하나에 기입할 수 있다. 2개의 스토리지 노드를 선택하는 방법은 본 출원에서 제한되지 않는다. 예를 들어, 선택은 모듈로 연산을 사용하는 것에 의해 수행되지만, 이에 제한되는 것은 아니다.
S111: 스토리지 노드 3은 스토리지 노드 1에 기입 동작 완료 표시를 피드백하고, 스토리지 노드 1은 기입 동작 완료 표시를 수신한다.
S105에서, 스토리지 노드 1에 의해 결정되는, 기입될 데이터의 홈 노드가 스토리지 노드 1인 경우, S106 및 S111은 수행되지 않을 수 있고, S107 내지 S111은 스토리지 노드 1에 의해 수행된다는 것이 이해될 수 있다.
S112: 스토리지 노드 1은 기입 요청에서 반송되는 LBA 1의 홈 노드, 예를 들어, 스토리지 노드 4를 획득한다.
LBA의 홈 노드는 LBA와 지문 사이의 매핑 관계를 관리하도록 구성된다. 본 출원에서, LBA의 홈 노드를 결정하는 방법은 제한되지 않는다. 예를 들어, LBA의 홈 노드는 부하 균형을 구현하기 위해 특정 알고리즘에 기초하여 구체적으로 결정될 수 있지만, 이에 제한되는 것은 아니다. 본 명세서에서의 부하 균형은 LBA와 지문 사이의 매핑 관계를 관리하는 단계가 스토리지 노드들에 의해 가능한 한 많이 균일하게 수행되는 것을 의미한다. 예를 들어, 알고리즘은 모듈로 연산일 수 있다.
데이터의 홈 노드는 데이터의 지문에 기초하여 결정되고, LBA의 홈 노드는 LBA에 기초하여 결정된다는 점에 유의해야 한다. 따라서, 데이터의 홈 노드와 LBA의 홈 노드 사이에는 연관 관계가 없고, 데이터의 홈 노드와 LBA의 홈 노드가 동일한 스토리지 노드일 수 있거나, 상이한 스토리지 노드들일 수 있다. LBA의 홈 노드와 스토리지 노드 1의 미러 노드 사이에 연관 관계가 없다. 이 실시예에서, LBA 1의 홈 노드와 기입될 데이터의 홈 노드 둘 다가 스토리지 노드 1의 미러 노드와 상이하다는 것이 설명을 위한 예로서 사용된다.
S113: 스토리지 노드 1은 기입 요청에서 반송되는 LBA 1 및 기입될 데이터의 지문을 스토리지 노드 4에 전송한다.
S114: 스토리지 노드 4는 기입 요청에서 반송되는 LBA 1과 기입될 데이터의 지문 사이의 매핑 관계를 기록한다.
매핑 관계는 메타데이터 테이블 M2를 사용하여 표현될 수 있다. 메타데이터 테이블 M2에 포함되는 요소들은 표 2에 도시될 수 있다.
일 구현에서, 메타데이터 테이블 M2는 전술한 FingerPrint 및 LBA list만을 포함할 수 있다.
하나의 LBA 리스트는 하나 이상의 LBA를 포함할 수 있다. LBA 리스트는 단일 링크된 리스트로서 표현될 수 있다. 매핑 관계는 동일한 지문과 복수의 LBA 사이에 존재할 수 있다. 예를 들어, 호스트가 스토리지 시스템에 4개의 기입 요청을 전송하고, 4개의 기입 요청의 관련 정보가 표 3에 도시된다고 가정된다.
표 3에 기초하여, 스토리지 시스템이 4개의 기입 요청을 실행한 후에, 스토리지 노드 A에 의해 기록된 메타데이터 테이블 M2가 표 4에 도시된다.
표 3에 기초하여, 스토리지 시스템이 4개의 기입 요청을 실행한 후에, 스토리지 노드 B에 의해 기록된 메타데이터 테이블 M2가 표 5에 도시된다.
S115: 스토리지 노드 4는 기입 요청에서 반송되는 LBA 1과 기입될 데이터의 지문 사이의 매핑 관계를 스토리지 노드 4의 물리 디스크 및/또는 가상 디스크에 기입한다.
이 단계는 기입 요청에서 반송되는 LBA 1과 기입될 데이터의 지문 사이의 매핑 관계에 대해 리던던시 처리를 수행하는 것으로서 이해될 수 있다. 이 단계는 선택적이라는 것이 이해될 수 있다. 리던던시 처리 방식은 본 출원에서 제한되지 않는다. 예들은 전술한 설명에서 참조될 수 있다.
S116: 스토리지 노드 4는 스토리지 노드 1에 매핑 관계 완료 표시를 피드백하고, 스토리지 노드 1은 매핑 관계 완료 표시를 수신한다.
이러한 방식으로, 기입될 데이터가 후속하여 판독되는 경우, 동일한 지문을 갖는 데이터 조각들이 동일한 노드에서 판독되는 것이 방지되고, 그에 의해 혼잡을 방지한다. LBA가 상이한 노드들에서 분포되는 경우, 판독 동작이 후속하여 데이터에 대해 수행될 때, 기입될 데이터는 LBA의 홈 노드로부터 판독될 수 있다. 세부 사항들에 대해서는, 도 7에서 설명된 데이터 판독 절차를 참조한다.
S117: 스토리지 노드 1이 미러 데이터를 삭제하는 명령을 스토리지 노드 1의 미러 노드(예를 들어, 스토리지 노드 2)에 전송하고, 스토리지 노드 2는 명령을 수신한다.
S118: 명령을 수신한 후, 스토리지 노드 2는 미러 데이터를 기입 요청에서 삭제한다.
지금까지, 기입 절차가 종료된다.
도 7을 참조하면, 도 7은 본 출원의 실시예에 따른 도 2에 도시된 스토리지 시스템에 적용되는 데이터 판독 방법의 흐름도이다. 세부 사항들은 다음과 같다:
S201: 호스트가 스토리지 시스템에 판독 요청을 전송하고, 여기서 판독 요청은 LBA 1을 반송한다. 스토리지 시스템에서의 스토리지 노드 1은 기입 요청을 수신한다. 구체적으로, 호스트는 판독 요청을 스위치에 전송하고, 판독 요청을 수신한 후에, 스위치는 판독 요청을 스토리지 노드 1에 포워딩한다.
실시예 1에서, 도 6a 및 도 6b에 도시된 데이터 기입 절차와 도 7에 도시된 데이터 판독 절차 둘 다는 스토리지 노드 1이 호스트로부터 요청(기입 요청 및 판독 요청을 포함함)을 수신하는 예를 사용하여 설명된다는 점에 유의해야 한다. 실제 구현 동안, 실시예 1에 도시된 데이터 기입 절차 및 데이터 판독 절차 둘 다는 스위치가 기입 요청/판독 요청을 임의의 스토리지 노드에 포워딩하는 아이디어에 기초하여 설계되기 때문에, 데이터 기입 절차 및 데이터 판독 절차에서, 기입 요청을 수신하는 스토리지 노드는 호스트에 의해 전송된 판독 요청을 수신하는 스토리지 노드와 상이할 수 있다.
S202: 스토리지 노드 1은 LBA 1의 홈 노드를 획득한다. LBA 1의 홈 노드를 획득하는 특정 구현에 대해서는, 전술한 설명을 참조하고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다. 전술한 설명에 기초하여, LBA 1의 결정된 홈 노드가 스토리지 노드 4인 것을 알 수 있다.
S203: 스토리지 노드 1은 판독 요청을 스토리지 노드 4에 전송하고, 스토리지 노드 4는 판독 요청을 수신한다.
S204: 스토리지 노드 4는 LBA와 데이터의 지문 사이의 매핑 관계에 기초하여 판독될 데이터의 지문을 획득한다. 매핑 관계는 표 2에 도시된 메타데이터 테이블 M2와 같은 테이블에 도시된다. 판독될 데이터의 지문은 전술한 설명에서 기입될 데이터의 지문이다. 선택적으로, 스토리지 노드 4는 판독될 데이터의 홈 노드를 추가로 획득할 수 있다. 전술한 설명에 기초하여, 판독될 데이터의 결정된 홈 노드가 스토리지 노드 3이라는 것을 알 수 있다.
S205: 스토리지 노드 4는 판독될 데이터의 지문을 스토리지 노드 1에 피드백하고, 스토리지 노드 1은 판독될 데이터의 지문을 수신하고, 판독될 데이터의 지문에 기초하여, 판독될 데이터의 홈 노드, 즉, 스토리지 노드 3을 결정한다. 선택적으로, 스토리지 노드 4는 판독될 데이터의 홈 노드의 ID, 즉, 스토리지 노드 3의 ID를 스토리지 노드 1에 추가로 피드백할 수 있다. 이러한 방식으로, 스토리지 노드 1은 지문에 기초하여 판독될 데이터의 홈 노드를 획득할 필요가 없고, 따라서 스토리지 노드 1의 계산 복잡성이 감소될 수 있다.
S206: 스토리지 노드 1은 판독될 데이터의 지문을 스토리지 노드 3에 전송하고, 스토리지 노드 3은 판독될 데이터의 지문을 수신한다.
S207: 스토리지 노드 3은 판독될 데이터의 지문에 기초하여 판독될 데이터의 스트라이핑된 데이터의 기입 위치를 결정하고, 표 1에 도시된 메타데이터 테이블 M1과 같은 테이블에 기초하여 스트라이핑된 데이터의 기입 위치를 획득한다. 그 후, 스트라이핑된 데이터의 일부 또는 전부가 기입 위치로부터 획득된다.
정상 데이터 판독 프로세스에서, 판독될 데이터의 데이터 블록만이 판독될 필요가 있고, 패리티 블록은 판독될 필요가 없다는 것이 이해될 것이다. 선택적으로, 데이터가 복구될 필요가 있는 시나리오에서, 판독될 데이터의 패리티 블록은 판독될 수 있고, 그 후, 예를 들어, 데이터는 RAID 또는 EC 알고리즘 등에 기초하여 복구될 수 있다.
S208: 스토리지 노드 3은, 판독되는 데이터 블록들에 기초하여 완전한 데이터, 즉 스트라이핑이 수행되기 전의 데이터를 구성한다. 지금까지, 스토리지 노드 3이 판독될 데이터를 획득하는 것이 고려된다. 스토리지 노드 3은 판독될 데이터를 스토리지 노드 1에 피드백하고, 스토리지 노드 1은 판독될 데이터를 수신한다.
S209: 판독될 데이터를 수신한 후, 스토리지 노드 1은 판독될 데이터를 호스트에 피드백한다.
도 7에 도시된 데이터 판독 절차는 도 6a 및 도 6b에 도시된 데이터 기입 절차에 기초하여 설명된다. 본 기술분야의 통상의 기술자는, 도 7에 도시된 데이터 판독 절차에 기초하여, 다음의 시나리오: LBA 1의 홈 노드가 스토리지 노드 1과 동일한 시나리오, 및/또는 판독될 데이터의 홈 노드가 스토리지 노드 1과 동일한 시나리오, 및/또는 LBA 1의 홈 노드가 판독될 데이터의 홈 노드와 동일한 시나리오에서의 실시예들을 결정할 수 있어야 한다. 시나리오들은 본 명세서에서 다시 하나씩 설명되지 않는다.
이 실시예에 따른 데이터 판독/기입 절차에서, 판독/기입 동작을 수행하는 단계는 데이터의 지문에 기초하여 스토리지 시스템의 스토리지 노드에 할당되고, 호스트의 LBA 및 지문을 관리하는 단계는 LBA에 기초하여 스토리지 시스템의 스토리지 노드에 할당된다. 이러한 방식으로, 이 실시예는 부하 균형을 구현하는 것을 돕고, 그에 의해 시스템 성능을 개선시킨다.
실시예 2
도 8a 및 도 8b를 참조하면, 도 8a 및 도 8b는 본 출원의 실시예에 따른 도 2에 도시된 스토리지 시스템에 적용되는 데이터 기입 방법의 흐름도이다. 세부 사항들은 다음과 같다:
S301 내지 S304의 경우, S101 내지 S104를 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
S305에 대해서는, S112를 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
S306: 스토리지 노드 1은 기입 요청을 스토리지 노드 4에 전송하고, 스토리지 노드 4는 기입 요청을 수신한다.
S307: 스토리지 노드 4는 기입될 데이터를 스트라이핑하여 스트라이핑된 데이터를 획득하고, 스트라이핑된 데이터를 스토리지 노드 4의 물리 디스크 및/또는 가상 디스크에 기입한다.
S308: 스토리지 노드 4는 스트라이핑된 데이터의 기입 위치를 기록한다. 구체적으로, 스토리지 노드 4는 기입될 데이터의 분포 정보를 기록함으로써 스트라이핑된 데이터의 기입 위치를 기록할 수 있다.
데이터 분포 정보는 메타데이터 테이블 M3을 사용하여 표현될 수 있고, 메타데이터 테이블 M3에 포함되는 요소들은 표 1로부터 FingerPrint를 제거함으로써 획득되는 테이블에 있을 수 있다.
S309: 스토리지 노드 4는 스트라이핑된 데이터의 기입 위치를 스토리지 노드 4의 물리 디스크 및/또는 가상 디스크에 기입한다.
단계들 S307 내지 S309의 관련 설명들에 대해서는, S108 내지 S110을 참조하고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
S310: 스토리지 노드 4는 스트라이핑된 데이터의 기입 위치와 LBA 1 사이의 매핑 관계를 기록한다.
S311: 스토리지 노드 4는 스트라이핑된 데이터의 기입 위치와 LBA 1 사이의 매핑 관계를 스토리지 노드 4의 물리 디스크 및/또는 가상 디스크에 기입한다.
S312 내지 S314에 대해서는, S116 내지 S118을 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
도 9를 참조하면, 도 9는 본 출원의 실시예에 따른 도 2에 도시된 스토리지 시스템에 적용되는 데이터 판독 방법의 흐름도이다. 세부 사항들은 다음과 같다:
401 내지 S403에 대해서는, S201 내지 S203을 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
S404: 스토리지 노드 4는 LBA 1에 기초하여 판독될 데이터의 스트라이핑된 데이터의 기입 위치를 결정하고, 표 1로부터 데이터의 지문을 삭제함으로써 획득된 메타데이터 테이블과 같은 테이블에 기초하여 판독될 데이터의 스트라이핑된 데이터의 기입 위치를 획득한다. 그 후, 스트라이핑된 데이터의 일부 또는 전부가 기입 위치로부터 획득된다.
S405: 스토리지 노드 4는, 판독되는 데이터 블록들에 기초하여 완전한 데이터, 즉 스트라이핑이 수행되기 전의 데이터를 구성한다. 지금까지, 스토리지 노드 4가 판독될 데이터를 획득하는 것이 고려된다. 스토리지 노드 4는 판독될 데이터를 스토리지 노드 1에 피드백한다.
S406에 대해서는, S209를 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
도 9에 도시된 데이터 판독 절차는 도 8a 및 도 8b에 도시된 데이터 기입 절차에 기초하여 설명된다. 본 기술분야의 통상의 기술자는, 도 9에 도시된 데이터 판독 절차에 기초하여, 다음의 시나리오: LBA 1의 홈 노드가 스토리지 노드 1과 동일한 시나리오에서의 실시예들을 결정할 수 있어야 한다. 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
이 실시예에서, 데이터의 기입 위치 및 호스트의 LBA를 관리하는 단계는 LBA에 기초하여 스토리지 시스템의 스토리지 노드에 할당된다. 이러한 방식으로, 이 실시예는 부하 균형을 구현하는 것을 돕고, 그에 의해 시스템 성능을 개선시킨다.
실시예 3
도 10a 및 도 10b를 참조하면, 도 10a 및 도 10b는 본 출원의 실시예에 따른 도 2에 도시된 스토리지 시스템에 적용되는 데이터 기입 방법의 흐름도이다. 세부 사항들은 다음과 같다:
S501: 호스트는 스토리지 시스템에 기입 요청을 전송하고, 여기서 기입 요청은 LBA 1 및 기입될 데이터를 포함한다. 스토리지 시스템에서의 스토리지 노드 1은 기입 요청을 수신한다. 구체적으로, 호스트는 기입 요청을 스위치에 전송하고, 기입 요청을 수신한 후에, 스위치는 기입 요청에 반송되는 정보에 기초하여 기입 요청을 스토리지 노드 1에 포워딩한다.
실시예 1 및 실시예 2와 달리, 이 실시예에서, 호스트는 특정 LBA를 반송하는 기입 요청을 특정 스토리지 노드에 먼저 전송하여, 스토리지 시스템의 계산 복잡도가 감소될 수 있다.
일례에서, 호스트는 예를 들어, LBA 1 내지 LBA 100은 스토리지 노드 1에 대응함, LBA 101 내지 LBA 200은 스토리지 노드 2에 대응함, ...과 같은 LBA 범위와 스토리지 노드 사이의 대응관계를 미리 저장할 수 있고, 그 후, LBA에 대응하는 스토리지 노드에 관한 정보는 기입 요청에서 반송된다. 예를 들어, 스토리지 노드에 관한 정보는 스토리지 노드의 네트워크 어드레스를 포함할 수 있지만, 이에 제한되는 것은 아니다. 선택적으로, 스토리지 노드에 관한 정보는 스토리지 노드의 ID를 추가로 포함할 수 있다. 이러한 방식으로, 기입 요청을 수신하는 경우, 스위치는 기입 요청에서 반송되는, 스토리지 노드에 관한 정보에 기초하여, 기입 요청이 포워딩되는 스토리지 노드를 결정할 수 있다.
S502 내지 S511에 대해서는, S102 내지 S111을 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
S512: 스토리지 노드 1은 기입 요청에서 반송되는 LBA 1과 기입될 데이터의 지문 사이의 매핑 관계를 기록한다.
S513: 스토리지 노드 1은 기입 요청에서 반송되는 LBA 1과 기입될 데이터의 지문 사이의 매핑 관계를 스토리지 노드 1의 물리 디스크 및/또는 가상 디스크에 기입한다.
S512 및 S513의 관련 내용의 설명들에 대해서는, S114 및 S115를 참조하고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
S514 및 S515에 대해서는, S117 및 S118을 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
도 11을 참조하면, 도 11은 본 출원의 실시예에 따른 도 2에 도시된 스토리지 시스템에 적용되는 데이터 판독 방법의 흐름도이다. 세부 사항들은 다음과 같다:
S601: 호스트는 스토리지 시스템에 판독 요청을 전송하고, 여기서 판독 요청은 LBA 1을 반송한다. 스토리지 시스템에서의 스토리지 노드 1은 기입 요청을 수신한다. 구체적으로, 호스트는 판독 요청을 스위치에 전송하고, 판독 요청을 수신한 후에, 스위치는 판독 요청에 기초하여 판독 요청을 스토리지 노드 1에 포워딩한다.
도 11에 도시된 데이터 판독 절차는 도 10a 및 도 10b에 도시된 데이터 기입 절차에 기초하여 설명된다. 스위치가 판독 요청을 스토리지 노드 1에 포워딩하는 방법의 특정 구현 프로세스에 대해서는, 도 10a 및 도 10b에 도시된 스위치가 데이터 기입 절차에서 기입 요청을 스토리지 노드 1에 포워딩하는 방법의 특정 구현 프로세스를 참조하고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
S602: 스토리지 노드 1은 LBA와 데이터의 지문 사이의 매핑 관계에 기초하여 판독될 데이터의 지문을 획득한다. 매핑 관계는 표 2에 도시된 메타데이터 테이블 M2와 같은 테이블에 도시된다. 판독될 데이터의 지문은 전술한 설명에서 기입될 데이터의 지문이다. 그 후, 스토리지 노드 1은 계산을 통해 또는 메타데이터 테이블 M2에 기록되는 정보에 기초하여 판독될 데이터의 홈 노드를 추가로 획득할 수 있다. 전술한 설명에 기초하여, 판독될 데이터의 결정된 홈 노드가 스토리지 노드 3이라는 것을 알 수 있다.
S603: 스토리지 노드 1은 판독될 데이터의 홈 노드, 예를 들어, 스토리지 노드 3을 획득한다.
S604 내지 S607에 대해서는, S206 내지 S209를 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
이 실시예에서, 호스트는 LBA와 스토리지 노드 사이의 대응관계에 기초하여, 판독/기입 요청이 전송되는, 스토리지 시스템에서의 스토리지 노드를 결정하는데, 즉 스토리지 노드가 LBA의 홈 노드를 결정할 필요가 없다. 이러한 방식으로, 스토리지 노드들 사이의 시그널링 상호작용이 감소될 수 있고, 그에 의해 판독/기입 레이트를 개선시킨다. 또한, 실시예 1의 이로운 효과들에 기초하여, 이 실시예는 부하 균형을 구현하는 것을 돕고, 그에 의해 시스템 성능을 개선시킨다는 것을 알 수 있다.
실시예 4
도 12를 참조하면, 도 12는 본 출원의 실시예에 따른 도 2에 도시된 스토리지 시스템에 적용되는 데이터 기입 방법의 흐름도이다. 세부 사항들은 다음과 같다:
S701 내지 S704에 대해서는, S501 내지 S504를 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
S705: 스토리지 노드 1은 기입될 데이터를 스트라이핑하여 스트라이핑된 데이터를 획득하고, 스트라이핑된 데이터를 스토리지 노드 1의 물리 디스크 및/또는 가상 디스크에 기입한다.
S706: 스토리지 노드 1은 스트라이핑된 데이터의 기입 위치를 기록한다. 구체적으로, 스토리지 노드 1은 기입될 데이터의 분포 정보를 기록함으로써 스트라이핑된 데이터의 기입 위치를 기록할 수 있다.
S707: 스토리지 노드 1은 스트라이핑된 데이터의 기입 위치를 스토리지 노드 1의 물리 디스크 및/또는 가상 디스크에 기입한다.
S705 내지 S707의 관련 설명들에 대해서는, S307 내지 S309를 참조하고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
S708: 스토리지 노드 1은 스트라이핑된 데이터의 기입 위치와 LBA 1 사이의 매핑 관계를 기록한다.
S709: 스토리지 노드 1은 스트라이핑된 데이터의 기입 위치와 LBA 1 사이의 매핑 관계를 스토리지 노드 1의 물리 디스크 및/또는 가상 디스크에 기입한다.
S710 및 S711에 대해서는, S117 및 S118을 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
도 13을 참조하면, 도 13은 본 출원의 실시예에 따른 도 2에 도시된 스토리지 시스템에 적용되는 데이터 판독 방법의 흐름도이다. 세부 사항들은 다음과 같다:
S801에 대해서는 S601을 참조한다. 물론, 본 출원은 이에 제한되지 않는다.
S802: 스토리지 노드 1은 LBA에 기초하여 판독될 데이터의 스트라이핑된 데이터의 기입 위치를 결정하고, 표 1로부터 데이터의 지문을 삭제함으로써 획득된 메타데이터 테이블과 같은 테이블에 기초하여 판독될 데이터의 스트라이핑된 데이터의 기입 위치를 획득한다. 그 후, 스트라이핑된 데이터의 일부 또는 전부가 기입 위치로부터 획득된다.
S803: 스토리지 노드 1은, 판독되는 데이터 블록들에 기초하여 완전한 데이터, 즉 스트라이핑이 수행되기 전의 데이터를 구성한다.
S802 및 S803의 관련 설명들에 대해서는, S404 및 S405를 참조하고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
S804: 스토리지 노드 1은 판독될 데이터를 호스트에 피드백한다.
이 실시예에서, 호스트는 LBA와 스토리지 노드 사이의 대응관계에 기초하여, 판독/기입 요청이 전송되는, 스토리지 시스템에서의 스토리지 노드를 결정한다. 즉, 스토리지 노드는 LBA의 홈 노드를 결정할 필요가 없다. 이러한 방식으로, 스토리지 노드들 사이의 시그널링 상호작용이 감소될 수 있고, 그에 의해 판독/기입 레이트를 개선시킨다. 또한, 실시예 2의 이로운 효과들에 기초하여, 이 실시예는 부하 균형을 구현하는 것을 돕고, 그에 의해 시스템 성능을 개선시킨다는 것을 알 수 있다.
전술한 내용은 노드들 사이의 상호작용의 관점에서 본 출원의 실시예들의 해결책들을 주로 설명한다. 전술한 기능들을 구현하기 위해, 호스트 또는 스토리지 노드와 같은 각각의 노드는, 각각의 기능을 실행하는 대응하는 하드웨어 구조체 및/또는 소프트웨어 모듈을 포함한다는 점이 이해될 수 있다. 본 기술분야의 통상의 기술자는, 본 명세서에 개시된 실시예들에서 설명된 예들의 유닛들 및 알고리즘 단계들과 조합하여, 본 출원은 하드웨어 또는 하드웨어와 컴퓨터 소프트웨어의 조합에 의해 구현될 수 있다는 것을 용이하게 인식해야 한다. 기능이 하드웨어 또는 컴퓨터 소프트웨어 구동 하드웨어의 모드로 실행되는지는 기술적 해결책들의 특정 애플리케이션들 및 설계 제약 조건들에 의존한다. 본 기술분야의 통상의 기술자는 각각의 특정한 애플리케이션에 대해 설명되는 기능들을 구현하기 위해 상이한 방법들을 사용할 수 있지만, 이러한 구현이 본 발명의 범위를 벗어나는 것으로 고려되어서는 안 된다.
본 출원의 실시예들에서, 기능 모듈 분할은 전술한 방법 예에 기초하여 스토리지 노드에 대해 수행될 수 있는데, 예를 들어, 각각의 기능 모듈은 각각의 기능에 대응하여 분할될 수 있거나, 또는 2개 이상의 기능이 하나의 처리 모듈에 통합될 수 있다. 통합 모듈은 하드웨어의 형태로 구현될 수 있거나 소프트웨어 기능 모듈의 형태로 구현될 수 있다. 본 출원의 실시예들에서의 모듈 분할은 예이고, 단지 논리적 기능 분할이고, 실제 구현 동안의 다른 분할일 수 있다는 점에 유의해야 한다. 이하의 설명은 기능 모듈들이 기능들에 대응하여 분할되는 예를 사용하여 이루어진다.
도 14는 스토리지 노드(140)의 개략 구조도이다. 스토리지 노드(140)는 위에서 사용된 임의의 스토리지 노드일 수 있다. 스토리지 노드(140)는 스위치를 사용하여 스토리지 시스템에서의 적어도 하나의 제2 스토리지 노드 및 호스트와 통신하고, 적어도 하나의 제2 스토리지 노드에 포함된 물리 디스크는 스토리지 노드(140)의 가상 디스크에 매핑된다. 스토리지 노드(140)는 송수신기 유닛(1401), 처리 유닛(1402) 및 스토리지 유닛(1403)을 포함한다. 송수신기 유닛(1401)은 제1 기입 요청을 수신하도록 구성되고, 여기서 제1 기입 요청은 제1 기입될 데이터를 반송한다. 처리 유닛(1402)은 제1 기입될 데이터를 스트라이핑하여 스트라이핑된 데이터를 획득하고, 스트라이핑된 데이터를 스토리지 노드(140)의 물리 디스크 및/또는 가상 디스크에 기입하도록 구성된다. 스토리지 유닛(1403)은 스트라이핑된 데이터의 기입 위치를 기록하도록 구성된다. 예를 들어, 도 6a 및 도 6b 또는 도 10a 및 도 10b를 참조하면, 스토리지 노드(140)는 스토리지 노드 3일 수 있고, 송수신기 유닛(1401)은 S106/S506을 수행하도록 구성될 수 있고, 처리 유닛(1402)은 S108/S508을 수행하도록 구성될 수 있고, 스토리지 유닛(1403)은 S109/S509를 수행하도록 구성될 수 있다. 예를 들어, 도 8a 및 도 8b를 참조하면, 스토리지 노드(140)는 스토리지 노드 4일 수 있고, 송수신기 유닛(1401)은 S306을 수행하도록 구성될 수 있고, 처리 유닛(1402)은 S307을 수행하도록 구성될 수 있고, 스토리지 유닛(1403)은 S308을 수행하도록 구성될 수 있다. 예를 들어, 도 12를 참조하면, 스토리지 노드(140)는 스토리지 노드 1일 수 있고, 송수신기 유닛(1401)은 S701을 수행하도록 구성될 수 있고, 처리 유닛(1402)은 S705를 수행하도록 구성될 수 있고, 스토리지 유닛(1403)은 S706을 수행하도록 구성될 수 있다.
가능한 설계에서, 처리 유닛(1402)은, 스트라이핑된 데이터가 가상 디스크에 기입되는 경우, 스트라이핑된 데이터를 가상 디스크에 매핑되는, 제2 스토리지 노드에서의 물리 디스크에 기입하도록 구체적으로 구성될 수 있다.
가능한 설계에서, 스토리지 유닛(1403)은, 스트라이핑된 데이터의 기입 위치를 기록하는 경우, 제1 기입될 데이터의 지문을 추가로 기록하도록 추가로 구성될 수 있다. 예를 들어, 실시예 1에서의 표 1을 참조한다.
가능한 설계에서, 스토리지 유닛(1403)은, 스트라이핑된 데이터의 기입 위치를 기록하는 경우, 제1 기입될 데이터의 LBA를 추가로 기록하도록 추가로 구성될 수 있다. 예를 들어, 도 8a 및 도 8b 또는 도 12를 참조하면, 스토리지 유닛(1403)은 S310/S708을 수행하도록 구성될 수 있다.
가능한 설계에서, 송수신기 유닛(1401)은 호스트에 의해 전송된 제2 기입 요청을 수신하도록 추가로 구성될 수 있고, 여기서 제2 기입 요청은 제2 기입될 데이터를 반송한다. 처리 유닛(1402)은 제2 기입 요청에 기초하여 제2 기입 요청의 홈 노드를 결정하도록 추가로 구성되며, 제2 기입 요청의 홈 노드가 스토리지 노드(140)인 경우, 스토리지 노드(140)는 제2 기입 요청에 응답하여 기입 동작을 수행하거나, 제2 기입 요청의 홈 노드가 제2 스토리지 노드인 경우, 스토리지 노드(140)는 제2 기입 요청을 제2 스토리지 노드에 포워딩하여, 제2 스토리지 노드가 제2 기입 요청에 응답하여 기입 동작을 수행하게 한다. 예를 들어, 도 6a 및 도 6b, 도 8a 및 도 8b, 또는 도 10a 및 도 10b를 참조하면, 스토리지 노드(140)는 스토리지 노드 1일 수 있다. 송수신기 유닛(1401)은 S101/S301/S501을 수행하도록 구성될 수 있다. 처리 유닛(1402)은 S105/S305/S505를 수행하도록 구성될 수 있다.
가능한 설계에서, 처리 유닛(1402)은 구체적으로: 제2 기입될 데이터의 지문을 계산하고; 그 후, 제2 기입될 데이터의 지문에 기초하여 제2 기입 요청의 홈 노드를 결정하도록 구성될 수 있다. 예를 들어, 도 6a 및 도 6b 또는 도 10a 및 도 10b를 참조하면, 처리 유닛(1402)은 S105/S505를 수행하도록 구성될 수 있다. 가능한 설계에서, 처리 유닛(1402)은 제2 기입 요청에서 반송되는 LBA의 홈 노드를 결정하도록 추가로 구성될 수 있고, 여기서 LBA의 홈 노드는 LBA와 제2 기입될 데이터의 지문 사이의 매핑 관계를 관리하도록 구성된다. 예를 들어, 도 6a 및 도 6b를 참조하면, 처리 유닛(1402)은 S112를 수행하도록 구성될 수 있다.
가능한 설계에서, 처리 유닛(1402)은 제2 기입 요청에서 반송되는 LBA에 기초하여 제2 기입 요청의 홈 노드를 결정하도록 구체적으로 구성될 수 있다. 예를 들어, 도 8a 및 도 8b를 참조하면, 처리 유닛(1402)은 S305를 수행하도록 구성될 수 있다.
가능한 설계에서, 송수신기 유닛(1401)은 제1 판독 요청에 의해 요청된 제1 판독될 데이터의 지문을 수신하도록 추가로 구성될 수 있다. 처리 유닛(1402)은 제1 판독될 데이터의 지문에 기초하여 제1 판독될 데이터의 기입 위치를 획득하고, 제1 판독될 데이터의 기입 위치로부터 제1 판독될 데이터의 스트라이핑된 데이터를 판독하도록 추가로 구성될 수 있다. 예를 들어, 도 7 또는 도 11을 참조하면, 스토리지 노드(140)는 스토리지 노드 3일 수 있다. 송수신기 유닛(1401)은 S206/S604를 수행하도록 구성될 수 있고, 처리 유닛(1402)은 S207/S605를 수행하도록 구성될 수 있다.
가능한 설계에서, 송수신기 유닛(1401)은 제1 판독 요청을 수신하도록 추가로 구성될 수 있고, 제1 판독 요청은 제1 LBA를 반송한다. 처리 유닛(1402)은, 제1 LBA에 기초하여, 제1 판독 요청에 의해 요청된 제1 판독될 데이터의 기입 위치를 획득하고, 제1 판독될 데이터의 기입 위치로부터 제1 판독될 데이터의 스트라이핑된 데이터를 판독하도록 추가로 구성될 수 있다. 예를 들어, 도 9를 참조하면, 스토리지 노드(140)는 스토리지 노드 4일 수 있고, 송수신기 유닛(1401)은 S403을 수행하도록 구성될 수 있고, 처리 유닛(1402)은 S404를 수행하도록 구성될 수 있다. 예를 들어, 도 13을 참조하면, 스토리지 노드(140)는 스토리지 노드 1일 수 있고, 송수신기 유닛(1401)은 S801을 수행하도록 구성될 수 있고, 처리 유닛(1402)은 S803을 수행하도록 구성될 수 있다.
가능한 설계에서, 송수신기 유닛(1401)은 호스트에 의해 전송된 제2 판독 요청을 수신하도록 추가로 구성될 수 있다. 처리 유닛(1402)은 제2 판독 요청에 기초하여 제2 판독 요청의 홈 노드를 결정하도록 추가로 구성될 수 있고, 제2 판독 요청의 홈 노드가 스토리지 노드(140)인 경우, 스토리지 노드(140)는 제2 판독 요청에 응답하여 판독 동작을 수행하거나, 제2 판독 요청의 홈 노드가 제2 스토리지 노드인 경우, 스토리지 노드(140)는 제2 판독 요청을 제2 스토리지 노드에 포워딩하여, 제2 스토리지 노드가 제2 판독 요청에 응답하여 판독 동작을 수행하게 한다. 예를 들어, 도 7, 도 9, 또는 도 11을 참조하면, 스토리지 노드(140)는 스토리지 노드 1일 수 있다. 송수신기 유닛(1401)은 S201/S401/S601을 수행하도록 구성될 수 있고, 처리 유닛(1402)은 S205/S402/S603을 수행하도록 구성될 수 있다.
가능한 설계에서, 처리 유닛(1402)은 구체적으로: 제2 판독 요청에서 반송되는 LBA의 홈 노드를 결정하고- LBA의 홈 노드는 제2 판독 요청에 의해 요청된 제2 판독될 데이터의 지문과 LBA 사이의 매핑 관계를 관리하도록 구성됨 -; 제2 LBA의 홈 노드로부터 제2 판독될 데이터의 지문을 획득하고; 제2 판독될 데이터의 지문에 기초하여 제2 판독 요청의 홈 노드를 결정하도록 구성될 수 있다. 예를 들어, 도 7 또는 도 11을 참조하면, 송수신기 유닛(1401)은 S201/S601을 수행하도록 구성될 수 있고, 처리 유닛(1402)은 S205/S603을 수행하도록 구성될 수 있다.
가능한 설계에서, 처리 유닛(1402)은 제2 판독 요청에서 반송되는 LBA에 기초하여 제2 판독 요청의 홈 노드를 결정하도록 구체적으로 구성될 수 있다. 예를 들어, 도 9를 참조하면, 송수신기 유닛(1401)은 S401을 수행하도록 구성될 수 있고, 처리 유닛(1402)은 S402를 수행하도록 구성될 수 있다.
전술한 구현들 중 일부에서, 스토리지 노드(140)는 구체적으로 동일한 첨부 도면에서의 상이한 스토리지 노드들일 수 있다는 점에 유의해야 한다. 예를 들어, 도 6a 및 도 6b를 참조하면, 스토리지 시스템이 제1 기입 요청을 수신하는 시나리오에서, 스토리지 노드(140)는 구체적으로 스토리지 노드 3일 수 있고; 스토리지 시스템이 제1 판독 요청을 수신하는 시나리오에서, 스토리지 노드(140)는 구체적으로 스토리지 노드 1일 수 있다. 그러나, 스토리지 시스템에서의 각각의 스토리지 노드는 임의성을 갖기 때문에, 특정 구현 동안, 상이한 데이터가 복수 회 판독/기입되는 시나리오에서, 동일한 스토리지 노드(140)는 전술한 기술적 해결책들 중 임의의 것에서 제공되는 기능을 가질 수 있다.
또한, 스토리지 노드(140)에서의 유닛들과 전술한 방법 실시예들의 일부 단계들 사이의 관계들은 예로서 전술된다는 점에 유의해야 한다. 실제로, 스토리지 노드(140)에서의 유닛들은 전술한 방법 실시예들에서 다른 관련 단계들을 추가로 수행할 수 있고, 세부 사항들은 본 명세서에서 하나씩 열거되지 않는다.
스토리지 노드(140)의 하드웨어 구현에 대해서는, 도 2에 도시된 스토리지 노드를 참조한다. 도 2를 참조하면, 송수신기 유닛(1401)은 도 2의 내부 포트(220)에 대응할 수 있다. 처리 유닛(1402)은 도 2의 CPU 및/또는 스토리지 컨트롤러에 대응할 수 있다. 스토리지 유닛(1403)은 도 2의 메모리에 대응할 수 있다. 선택적으로, 스토리지 유닛(1403)은 도 2의 메모리 칩에 대응할 수 있다.
본 출원의 이 실시예에서 제공되는 스토리지 노드는 위에서 제공된 판독/기입 절차를 수행하도록 구성될 수 있기 때문에, 스토리지 노드에 의해 달성될 수 있는 기술적 효과들에 대해서는, 전술한 방법 실시예들을 참조하고, 세부 사항들은 본 출원의 이 실시예에서 다시 설명되지 않는다.
전술한 실시예들에서, 본 출원은 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합을 사용하여 완전히 또는 부분적으로 구현될 수 있다. 본 출원이 소프트웨어 프로그램을 사용하여 구현되는 경우, 본 출원은 컴퓨터 프로그램 제품의 형태로 완전히 또는 부분적으로 구현될 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령어를 포함한다. 컴퓨터 명령어들이 컴퓨터 상에서 로딩되고 실행될 때, 본 출원의 실시예들에 따른 절차들 또는 기능들은 모두 또는 부분적으로 생성된다. 컴퓨터는, 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크, 또는 다른 프로그램가능 장치일 수 있다. 컴퓨터 명령어들은 컴퓨터 판독가능 저장 매체에 저장될 수 있거나, 하나의 컴퓨터 판독가능 저장 매체로부터 다른 컴퓨터 판독가능 저장 매체에 송신될 수 있다. 예를 들어, 컴퓨터 명령어들은 유선(예를 들어, 동축 케이블, 광섬유 또는 디지털 가입자 라인(digital subscriber line, DSL) 또는 무선(예를 들어, 적외선, 라디오, 또는 마이크로파) 방식으로, 하나의 웹 사이트, 컴퓨터, 서버, 또는 데이터 센터로부터, 다른 웹 사이트, 컴퓨터, 서버 또는 데이터 센터에 송신될 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨터가 액세스할 수 있는 임의의 이용가능한 매체, 또는 하나 이상의 통합된 이용가능한 매체를 포함하는 데이터 센터 또는 서버와 같은 데이터 스토리지 디바이스일 수 있다. 이용가능한 매체는, 자기 매체(예를 들어, 플로피 디스크, 하드 디스크, 또는 자기 테이프), 광학 매체(예를 들어, DVD), 반도체 매체(예를 들어, SSD) 등일 수 있다.
본 출원이 실시예들을 참조하여 설명되지만, 보호를 주장하는 본 출원을 구현하는 과정에서, 본 기술분야의 통상의 기술자는 첨부 도면들, 개시된 내용, 및 첨부 청구범위를 고려함으로써 개시된 실시예들의 다른 변형을 이해하고 구현할 수 있다. 청구범위에서, "포함하는"(comprising)은 다른 컴포넌트 또는 다른 단계를 배제하지 않으며, 단수 표현("a" 또는 "one")은 복수의 경우를 배제하지 않는다. 단일 프로세서 또는 다른 유닛이 청구항들에서 나열되는 여러 기능들을 구현할 수 있다. 특정 수단들이 서로 다른 종속항들에서 인용된다는 사실은 이러한 수단들의 조합이 더 나은 효과들을 가져올 수 없다는 것을 나타내지는 않는다.
본 출원이 본 출원의 특정 특징들 및 실시예들을 참조하여 설명되지만, 명백하게, 본 출원의 사상 및 범위로부터 벗어나지 않고 본 출원에 대해 다양한 수정들 및 조합들이 이루어질 수 있다. 이에 대응하여, 본 명세서 및 첨부 도면들은 첨부된 청구항들에 의해 정의되는 본 출원의 설명들의 예들에 불과하고, 본 출원의 범위에서의 임의의 그리고 모든 수정들, 변경들, 조합들, 또는 등가물들이 이미 커버되어 있는 것으로 고려된다. 명백하게, 통상의 기술자는 본 출원의 사상 및 범위를 벗어나지 않으면서 본 출원에 대해 다양한 수정들 및 변형들을 행할 수 있다. 본 출원은, 이하의 청구 범위 및 그와 동등한 기술들에 의해 정의된 보호 범위 내에 있는 한, 본 출원의 이러한 수정들 및 변형들을 포괄하도록 의도된다.
Claims (29)
- 스토리지 시스템에서의 제1 스토리지 노드에 적용되는 데이터 액세스 방법으로서,
상기 제1 스토리지 노드는 스위치를 사용하여 상기 스토리지 시스템에서의 적어도 하나의 제2 스토리지 노드 및 호스트와 통신하고, 상기 적어도 하나의 제2 스토리지 노드에 포함된 물리 디스크는 상기 제1 스토리지 노드의 가상 디스크로서 매핑되고; 상기 방법은:
제1 기입 요청을 수신하는 단계- 상기 제1 기입 요청은 제1 기입될 데이터를 반송함 -;
상기 제1 기입될 데이터를 스트라이핑하여 스트라이핑된 데이터를 획득하고, 상기 스트라이핑된 데이터를 상기 제1 스토리지 노드의 물리 디스크 및/또는 상기 가상 디스크에 기입하는 단계; 및
상기 스트라이핑된 데이터의 기입 위치를 기록하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 스트라이핑된 데이터가 상기 가상 디스크에 기입되는 경우, 상기 스트라이핑된 데이터는 상기 가상 디스크에 매핑되는, 상기 제2 스토리지 노드에서의 상기 물리 디스크에 기입되는 방법. - 제1항 또는 제2항에 있어서,
상기 스트라이핑된 데이터의 상기 기입 위치가 기록되는 경우, 상기 제1 기입될 데이터의 지문이 추가로 기록되는 방법. - 제1항 또는 제2항에 있어서,
상기 스트라이핑된 데이터의 상기 기입 위치가 기록되는 경우, 상기 제1 기입될 데이터의 논리 블록 어드레스 LBA가 추가로 기록되는 방법. - 제1항 또는 제2항에 있어서,
상기 방법은:
상기 호스트에 의해 전송된 제2 기입 요청을 수신하는 단계- 상기 제2 기입 요청은 제2 기입될 데이터를 반송함 -; 및
상기 제2 기입 요청에 기초하여 상기 제2 기입 요청의 홈 노드를 결정하고, 상기 제2 기입 요청의 상기 홈 노드가 상기 제1 스토리지 노드인 경우, 상기 제1 스토리지 노드에 의해, 상기 제2 기입 요청에 응답하여 기입 동작을 수행하거나, 상기 제2 기입 요청의 상기 홈 노드가 상기 제2 스토리지 노드인 경우, 상기 제1 스토리지 노드에 의해, 상기 제2 기입 요청을 상기 제2 스토리지 노드에 포워딩하여, 상기 제2 스토리지 노드가 상기 제2 기입 요청에 응답하여 기입 동작을 수행하게 하는 단계를 추가로 포함하는 방법. - 제5항에 있어서,
상기 제2 기입 요청에 기초하여 상기 제2 기입 요청의 홈 노드를 결정하는 것은:
상기 제2 기입될 데이터의 지문을 계산하는 것; 및
상기 제2 기입될 데이터의 상기 지문에 기초하여 상기 제2 기입 요청의 상기 홈 노드를 결정하는 것을 포함하는 방법. - 제6항에 있어서,
상기 방법은:
상기 제2 기입 요청에서 반송되는 LBA의 홈 노드를 결정하는 단계를 추가로 포함하고, 상기 LBA의 상기 홈 노드는 상기 LBA와 상기 제2 기입될 데이터의 지문 사이의 매핑 관계를 관리하도록 구성되는 방법. - 제5항에 있어서,
상기 제2 기입 요청에 기초하여 상기 제2 기입 요청의 홈 노드를 결정하는 것은:
상기 제2 기입 요청에서 반송되는 LBA에 기초하여 상기 제2 기입 요청의 상기 홈 노드를 결정하는 것을 포함하는 방법. - 제3항에 있어서,
상기 방법은:
제1 판독 요청에 의해 요청된 제1 판독될 데이터의 지문을 수신하는 단계; 및
상기 제1 판독될 데이터의 상기 지문에 기초하여 상기 제1 판독될 데이터의 기입 위치를 획득하고, 상기 제1 판독될 데이터의 상기 기입 위치로부터 상기 제1 판독될 데이터의 스트라이핑된 데이터를 판독하는 단계를 추가로 포함하는 방법. - 제4항에 있어서,
상기 방법은:
제1 판독 요청을 수신하는 단계- 상기 제1 판독 요청은 제1 LBA를 반송함 -; 및
상기 제1 LBA에 기초하여, 상기 제1 판독 요청에 의해 요청된 제1 판독될 데이터의 기입 위치를 획득하고, 상기 제1 판독될 데이터의 상기 기입 위치로부터 상기 제1 판독될 데이터의 스트라이핑된 데이터를 판독하는 단계를 추가로 포함하는 방법. - 제1항 또는 제2항에 있어서,
상기 방법은:
상기 호스트에 의해 전송된 제2 판독 요청을 수신하는 단계; 및
상기 제2 판독 요청에 기초하여 상기 제2 판독 요청의 홈 노드를 결정하고, 상기 제2 판독 요청의 상기 홈 노드가 상기 제1 스토리지 노드인 경우, 상기 제1 스토리지 노드에 의해, 상기 제2 판독 요청에 응답하여 판독 동작을 수행하거나, 상기 제2 판독 요청의 상기 홈 노드가 상기 제2 스토리지 노드인 경우, 상기 제1 스토리지 노드에 의해, 상기 제2 판독 요청을 상기 제2 스토리지 노드에 포워딩하여, 상기 제2 스토리지 노드가 상기 제2 판독 요청에 응답하여 판독 동작을 수행하게 하는 단계를 추가로 포함하는 방법. - 제11항에 있어서,
상기 제2 판독 요청에 기초하여 상기 제2 판독 요청의 홈 노드를 결정하는 것은:
상기 제2 판독 요청에서 반송되는 LBA의 홈 노드를 결정하는 것- 상기 LBA의 상기 홈 노드는 상기 제2 판독 요청에 의해 요청된 제2 판독될 데이터의 지문과 상기 LBA 사이의 매핑 관계를 관리하도록 구성됨 -;
상기 제2 LBA의 상기 홈 노드로부터 상기 제2 판독될 데이터의 상기 지문을 획득하는 것; 및
상기 제2 판독될 데이터의 상기 지문에 기초하여 상기 제2 판독 요청의 상기 홈 노드를 결정하는 것을 포함하는 방법. - 제11항에 있어서,
상기 제2 판독 요청에 기초하여 상기 제2 판독 요청의 홈 노드를 결정하는 것은:
상기 제2 판독 요청에서 반송되는 LBA에 기초하여 상기 제2 판독 요청의 상기 홈 노드를 결정하는 것을 포함하는 방법. - 스토리지 노드로서,
상기 스토리지 노드는 스위치를 사용하여 상기 스토리지 시스템에서의 적어도 하나의 제2 스토리지 노드 및 호스트와 통신하고, 상기 적어도 하나의 제2 스토리지 노드에 포함된 물리 디스크는 상기 스토리지 노드의 가상 디스크로서 매핑되고; 상기 스토리지 노드는:
제1 기입 요청을 수신하도록 구성된 송수신기 유닛- 상기 제1 기입 요청은 제1 기입될 데이터를 반송함 -;
상기 제1 기입될 데이터를 스트라이핑하여 스트라이핑된 데이터를 획득하고, 상기 스트라이핑된 데이터를 상기 스토리지 노드의 물리 디스크 및/또는 상기 가상 디스크에 기입하도록 구성된 처리 유닛; 및
상기 스트라이핑된 데이터의 기입 위치를 기록하도록 구성된 스토리지 유닛을 포함하는 스토리지 노드. - 제14항에 있어서,
상기 처리 유닛은 상기 스트라이핑된 데이터가 상기 가상 디스크에 기입되는 경우, 상기 가상 디스크에 매핑되는, 상기 제2 스토리지 노드에서의 상기 물리 디스크에 상기 스트라이핑된 데이터를 기입하도록 구체적으로 구성되는 스토리지 노드. - 제14항 또는 제15항에 있어서,
상기 스토리지 유닛은 상기 스트라이핑된 데이터의 상기 기입 위치를 기록하는 경우, 상기 제1 기입될 데이터의 지문을 추가로 기록하도록 추가로 구성되는 스토리지 노드. - 제14항 또는 제15항에 있어서,
상기 스토리지 유닛은 상기 스트라이핑된 데이터의 상기 기입 위치를 기록하는 경우, 상기 제1 기입될 데이터의 논리 블록 어드레스 LBA를 추가로 기록하도록 추가로 구성되는 스토리지 노드. - 제14항 또는 제15항에 있어서,
상기 송수신기 유닛은 상기 호스트에 의해 전송된 제2 기입 요청을 수신하도록 추가로 구성되고- 상기 제2 기입 요청은 제2 기입될 데이터를 반송함 -; 및
상기 처리 유닛은: 상기 제2 기입 요청에 기초하여 상기 제2 기입 요청의 홈 노드를 결정하도록 추가로 구성되고, 상기 제2 기입 요청의 상기 홈 노드가 상기 스토리지 노드인 경우, 상기 스토리지 노드가 상기 제2 기입 요청에 응답하여 기입 동작을 수행하거나, 상기 제2 기입 요청의 상기 홈 노드가 상기 제2 스토리지 노드인 경우, 상기 스토리지 노드가 상기 제2 기입 요청을 상기 제2 스토리지 노드에 포워딩하여, 상기 제2 스토리지 노드가 상기 제2 기입 요청에 응답하여 기입 동작을 수행하게 하는 스토리지 노드. - 제18항에 있어서,
상기 처리 유닛은 구체적으로:
상기 제2 기입될 데이터의 지문을 계산하고;
상기 제2 기입될 데이터의 상기 지문에 기초하여 상기 제2 기입 요청의 상기 홈 노드를 결정하도록 구성되는 스토리지 노드. - 제19항에 있어서,
상기 처리 유닛은 상기 제2 기입 요청에서 반송되는 LBA의 홈 노드를 결정하도록 추가로 구성되고, 상기 LBA의 상기 홈 노드는 상기 LBA와 상기 제2 기입될 데이터의 상기 지문 사이의 매핑 관계를 관리하도록 구성되는 스토리지 노드. - 제18항에 있어서,
상기 처리 유닛은 상기 제2 기입 요청에서 반송되는 LBA에 기초하여 상기 제2 기입 요청의 상기 홈 노드를 결정하도록 구체적으로 구성되는 스토리지 노드. - 제16항에 있어서,
상기 송수신기 유닛은 제1 판독 요청에 의해 요청된 제1 판독될 데이터의 지문을 수신하도록 추가로 구성되고;
상기 처리 유닛은: 상기 제1 판독될 데이터의 상기 지문에 기초하여 상기 제1 판독될 데이터의 기입 위치를 획득하고; 상기 제1 판독될 데이터의 상기 기입 위치로부터 상기 제1 판독될 데이터의 스트라이핑된 데이터를 판독하도록 추가로 구성되는 스토리지 노드. - 제17항에 있어서,
상기 송수신기 유닛은 제1 판독 요청을 수신하도록 추가로 구성되고- 상기 제1 판독 요청은 제1 LBA를 반송함 -; 및
상기 처리 유닛은: 상기 제1 LBA에 기초하여, 상기 제1 판독 요청에 의해 요청된 제1 판독될 데이터의 기입 위치를 획득하고; 상기 제1 판독될 데이터의 상기 기입 위치로부터 상기 제1 판독될 데이터의 스트라이핑된 데이터를 판독하도록 추가로 구성되는 스토리지 노드. - 제14항 또는 제15항에 있어서,
상기 송수신기 유닛은 상기 호스트에 의해 전송된 제2 판독 요청을 수신하도록 추가로 구성되고;
상기 처리 유닛은 상기 제2 판독 요청에 기초하여 상기 제2 판독 요청의 홈 노드를 결정하도록 추가로 구성되고, 상기 제2 판독 요청의 상기 홈 노드가 상기 스토리지 노드인 경우, 상기 스토리지 노드가 상기 제2 판독 요청에 응답하여 판독 동작을 수행하거나, 상기 제2 판독 요청의 상기 홈 노드가 상기 제2 스토리지 노드인 경우, 상기 스토리지 노드가 상기 제2 판독 요청을 상기 제2 스토리지 노드에 포워딩하여, 상기 제2 스토리지 노드가 상기 제2 판독 요청에 응답하여 판독 동작을 수행하게 하는 스토리지 노드. - 제24항에 있어서,
상기 처리 유닛은 구체적으로:
상기 제2 판독 요청에서 반송되는 LBA의 홈 노드를 결정하고- 상기 LBA의 상기 홈 노드는 상기 제2 판독 요청에 의해 요청된 제2 판독될 데이터의 지문과 상기 LBA 사이의 매핑 관계를 관리하도록 구성됨 -;
상기 제2 LBA의 상기 홈 노드로부터 상기 제2 판독될 데이터의 상기 지문을 획득하고;
상기 제2 판독될 데이터의 상기 지문에 기초하여 상기 제2 판독 요청의 상기 홈 노드를 결정하도록 구성되는 스토리지 노드. - 제24항에 있어서,
상기 처리 유닛은 상기 제2 판독 요청에서 반송되는 LBA에 기초하여 상기 제2 판독 요청의 상기 홈 노드를 결정하도록 구체적으로 구성되는 스토리지 노드. - 스토리지 노드로서,
스토리지 및 프로세서를 포함하고, 상기 스토리지는 컴퓨터 프로그램을 저장하도록 구성되고, 상기 컴퓨터 프로그램이 상기 프로세서에 의해 실행될 때, 제1항 내지 제13항 중 어느 한 항에 따른 상기 방법이 수행되는 스토리지 노드. - 데이터 액세스 시스템으로서,
제14항 내지 제27항 중 어느 한 항에 따른 상기 스토리지 노드를 포함하며, 상기 스토리지 노드는 스위치를 사용하여 상기 스토리지 시스템에서의 적어도 하나의 제2 스토리지 노드 및 호스트와 통신하고, 상기 적어도 하나의 제2 스토리지 노드에 포함된 물리 디스크는 상기 스토리지 노드의 가상 디스크에 매핑되는 데이터 액세스 시스템. - 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 저장 매체로서,
상기 프로그램이 컴퓨터 상에서 실행될 때, 제1항 내지 제13항 중 어느 한 항에 따른 상기 방법이 수행되는 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/096958 WO2019028799A1 (zh) | 2017-08-10 | 2017-08-10 | 一种数据访问方法、装置和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200037376A true KR20200037376A (ko) | 2020-04-08 |
Family
ID=62141827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207006897A KR20200037376A (ko) | 2017-08-10 | 2017-08-10 | 데이터 액세스 방법, 디바이스 및 시스템 |
Country Status (6)
Country | Link |
---|---|
US (3) | US11416172B2 (ko) |
EP (2) | EP3657315A4 (ko) |
JP (1) | JP7105870B2 (ko) |
KR (1) | KR20200037376A (ko) |
CN (2) | CN113485636B (ko) |
WO (1) | WO2019028799A1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033420B (zh) * | 2018-08-08 | 2020-11-03 | 北京奇艺世纪科技有限公司 | 一种数据处理方法和装置 |
CN112256657B (zh) * | 2019-07-22 | 2023-03-28 | 华为技术有限公司 | 日志镜像方法及系统 |
CN112988034B (zh) * | 2019-12-02 | 2024-04-12 | 华为云计算技术有限公司 | 一种分布式系统数据写入方法及装置 |
CN111158948B (zh) * | 2019-12-30 | 2024-04-09 | 深信服科技股份有限公司 | 基于去重的数据存储与校验方法、装置及存储介质 |
WO2022002010A1 (zh) * | 2020-07-02 | 2022-01-06 | 华为技术有限公司 | 使用中间设备对数据处理的方法、计算机系统、及中间设备 |
CN112162693B (zh) * | 2020-09-04 | 2024-06-18 | 郑州浪潮数据技术有限公司 | 一种数据刷写方法、装置、电子设备和存储介质 |
CN112783722B (zh) * | 2021-01-12 | 2021-12-24 | 深圳大学 | 一种区块链安全监测方法、装置、电子设备及存储介质 |
CN113253944A (zh) * | 2021-07-07 | 2021-08-13 | 苏州浪潮智能科技有限公司 | 一种磁盘阵列访问方法、系统及存储介质 |
CN113419684B (zh) * | 2021-07-09 | 2023-02-24 | 深圳大普微电子科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7389393B1 (en) * | 2004-10-21 | 2008-06-17 | Symantec Operating Corporation | System and method for write forwarding in a storage environment employing distributed virtualization |
US9032164B2 (en) * | 2006-02-17 | 2015-05-12 | Emulex Corporation | Apparatus for performing storage virtualization |
JP4643543B2 (ja) | 2006-11-10 | 2011-03-02 | 株式会社東芝 | キャッシュ一貫性保証機能を有するストレージクラスタシステム |
US8639871B2 (en) * | 2009-04-08 | 2014-01-28 | Google Inc. | Partitioning a flash memory data storage device |
US8117388B2 (en) * | 2009-04-30 | 2012-02-14 | Netapp, Inc. | Data distribution through capacity leveling in a striped file system |
US8473690B1 (en) * | 2009-10-30 | 2013-06-25 | Netapp, Inc. | Using logical block addresses with generation numbers as data fingerprints to provide cache coherency |
CN102402394B (zh) * | 2010-09-13 | 2014-10-22 | 腾讯科技(深圳)有限公司 | 一种基于哈希算法的数据存储方法及装置 |
US8788788B2 (en) * | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
CN102622189B (zh) * | 2011-12-31 | 2015-11-25 | 华为数字技术(成都)有限公司 | 存储虚拟化的装置、数据存储方法及系统 |
US8972478B1 (en) * | 2012-05-23 | 2015-03-03 | Netapp, Inc. | Using append only log format in data storage cluster with distributed zones for determining parity of reliability groups |
CN102915278A (zh) * | 2012-09-19 | 2013-02-06 | 浪潮(北京)电子信息产业有限公司 | 重复数据删除方法 |
US20140195634A1 (en) | 2013-01-10 | 2014-07-10 | Broadcom Corporation | System and Method for Multiservice Input/Output |
CN103092786A (zh) * | 2013-02-25 | 2013-05-08 | 浪潮(北京)电子信息产业有限公司 | 一种双控双活存储控制系统及方法 |
US9009397B1 (en) | 2013-09-27 | 2015-04-14 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
US9483431B2 (en) | 2013-04-17 | 2016-11-01 | Apeiron Data Systems | Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA) |
US9986028B2 (en) | 2013-07-08 | 2018-05-29 | Intel Corporation | Techniques to replicate data between storage servers |
US11016820B2 (en) * | 2013-08-26 | 2021-05-25 | Vmware, Inc. | Load balancing of resources |
CN103942292A (zh) * | 2014-04-11 | 2014-07-23 | 华为技术有限公司 | 虚拟机镜像文件处理方法、装置及系统 |
CN105095290B (zh) * | 2014-05-15 | 2019-02-15 | 中国银联股份有限公司 | 一种分布式存储系统的数据布局方法 |
CN104020961B (zh) * | 2014-05-15 | 2017-07-25 | 深信服科技股份有限公司 | 分布式数据存储方法、装置及系统 |
US9558085B2 (en) * | 2014-07-02 | 2017-01-31 | Hedvig, Inc. | Creating and reverting to a snapshot of a virtual disk |
CN105612488B (zh) | 2014-09-15 | 2017-08-18 | 华为技术有限公司 | 数据写请求处理方法和存储阵列 |
US9565269B2 (en) | 2014-11-04 | 2017-02-07 | Pavilion Data Systems, Inc. | Non-volatile memory express over ethernet |
CN108702374A (zh) * | 2015-09-02 | 2018-10-23 | 科内克斯实验室公司 | 用于以太网类型网络上的存储器和I/O的远程访问的NVM Express控制器 |
CN105487818B (zh) * | 2015-11-27 | 2018-11-09 | 清华大学 | 针对云存储系统中重复冗余数据的高效去重方法 |
CN111427517A (zh) * | 2015-12-28 | 2020-07-17 | 华为技术有限公司 | 一种数据处理方法以及NVMe存储器 |
EP3286631A4 (en) * | 2016-01-29 | 2018-05-30 | Hewlett-Packard Enterprise Development LP | Remote direct memory access |
US10034407B2 (en) * | 2016-07-22 | 2018-07-24 | Intel Corporation | Storage sled for a data center |
US20180032249A1 (en) * | 2016-07-26 | 2018-02-01 | Microsoft Technology Licensing, Llc | Hardware to make remote storage access appear as local in a virtualized environment |
US10509708B2 (en) * | 2017-06-13 | 2019-12-17 | Vmware, Inc. | Code block resynchronization for distributed multi-mirror erasure coding system |
-
2017
- 2017-08-10 WO PCT/CN2017/096958 patent/WO2019028799A1/zh unknown
- 2017-08-10 JP JP2020507656A patent/JP7105870B2/ja active Active
- 2017-08-10 EP EP17920626.3A patent/EP3657315A4/en not_active Withdrawn
- 2017-08-10 KR KR1020207006897A patent/KR20200037376A/ko not_active Application Discontinuation
- 2017-08-10 CN CN202110394808.2A patent/CN113485636B/zh active Active
- 2017-08-10 CN CN201780002892.0A patent/CN108064374B/zh active Active
- 2017-08-10 EP EP23177282.3A patent/EP4273688A3/en active Pending
-
2020
- 2020-02-07 US US16/785,008 patent/US11416172B2/en active Active
-
2022
- 2022-07-25 US US17/872,201 patent/US11748037B2/en active Active
-
2023
- 2023-07-17 US US18/353,334 patent/US20230359400A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4273688A2 (en) | 2023-11-08 |
US20220357894A1 (en) | 2022-11-10 |
JP7105870B2 (ja) | 2022-07-25 |
EP3657315A1 (en) | 2020-05-27 |
US11416172B2 (en) | 2022-08-16 |
CN108064374A (zh) | 2018-05-22 |
CN113485636A (zh) | 2021-10-08 |
CN108064374B (zh) | 2021-04-09 |
JP2020530169A (ja) | 2020-10-15 |
WO2019028799A1 (zh) | 2019-02-14 |
EP4273688A3 (en) | 2024-01-03 |
EP3657315A4 (en) | 2020-07-22 |
US20230359400A1 (en) | 2023-11-09 |
US11748037B2 (en) | 2023-09-05 |
CN113485636B (zh) | 2023-07-18 |
US20200174708A1 (en) | 2020-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11748037B2 (en) | Physical disk and virtual disk mapping in storage systems | |
KR100995466B1 (ko) | 저장장치 영역 네트워크 내의 저장장치 가상화 구현을 위한 방법 및 장치 | |
US8943227B2 (en) | Data storage architecture extension system and method | |
KR101996708B1 (ko) | 기입 데이터 요청 처리 방법과 저장소 어레이 | |
US20230289258A1 (en) | Object format resilient to remote object store errors | |
US8756345B2 (en) | Methods and structure for managing protection information with a serial attached SCSI expander | |
WO2021017782A1 (zh) | 分布式存储系统访问方法、客户端及计算机程序产品 | |
KR20140101684A (ko) | 연쇄된,확장가능한 저장 디바이스들 | |
US11100008B2 (en) | Efficient memory usage for snapshots | |
US10296247B2 (en) | Security within storage area network having fabric-attached storage drives, SAN agent-executing client devices, and SAN manager | |
US11347641B2 (en) | Efficient memory usage for snapshots based on past memory usage | |
US10097636B1 (en) | Data storage device docking station | |
US12032849B2 (en) | Distributed storage system and computer program product | |
JPWO2017126097A1 (ja) | 計算機システム、計算機 | |
US10289576B2 (en) | Storage system, storage apparatus, and communication method | |
US11496563B2 (en) | System and method for migrating volumes between storage appliances | |
US11822808B2 (en) | Remotely replicating duplicated data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |