StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale:...

58
StorPool Storage #SFD18, @storpool

Transcript of StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale:...

Page 1: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

StorPool Storage

#SFD18, @storpool

Page 2: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Introduction to StorPool

Boyan Ivanov, co-founder & CEO#SFD18, @storpool

Page 3: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Best-of-breed block storage software (1)

Page 4: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Best-of-breed block storage software (2)

Page 5: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Best-of-breed block storage software - Example:

Page 6: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

The Fastest And Most Efficient Block Storage Software

(SDS 2.0)

Page 7: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

You can't have your cake and eat itor can you?

Boyan Krosnov, Co-founder and CPO#SFD18, @storpool

Page 8: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Per

form

ance

Scale

Data Management

Page 9: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Per

form

ance

Scale

Data Management

API-driven, integrationsScale by adding nodes/drivesPooling of capacity & performanceMetrics collection & MonitoringDeployment automation

ThroughputLatencyPerformance/Watt, Performance/$/GB

End-to-end data integrity guarantee"LUN" per vDiskCoW - Thin provisioning, Snapshots, ClonesMulti-site with efficient transport of changesFast recovery (changed block tracking)

Page 10: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Per

form

ance

Scale

Data Management

Ceph Multi-PB HDD cluster

Local SSD

ZFS

Page 11: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Fast storage system = more work done per CPU

The virtualization & cloud promise: - near-zero overhead - vDisks as fast as a local SSD

are they really? - efficient consolidation of workloads

Why performance

Page 12: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Why performanceFast storage system = more work done per CPU

The virtualization & cloud promise:

Page 13: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Performance with StorPool

>1M IOPS per node>250k IOPS per core (server)>500k IOPS per core (client)

StorPool latency overhead on par with latency of NVMe devices. End-to-end latency approx 2x local NVMe latency.

100k IOPS per NVMe drive with <150 s end-to-end latencyWrites at QD1 ~ 70 s end-to-end

Page 14: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Why Scale

Public and private cloudMobile and Web apps, SaaSContainers & MicroservicesDevOps, Infrastructure as code

What is scale:API-driven, integrationsScale by adding nodes/drivesPooling of capacity & performanceMetrics collection & MonitoringDeployment automation

Page 15: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Scale with StorPool

Scale-out architecture>1PB usable All-SSD & Hybrid clusters in production for yearsSome customers of StorPool have multiple clusters per location and multiple locations

API control and integrations with Kubernetes, OpenStack, OpenNebula, CloudStack & OnApp

Detailed metrics collection, monitoring.

Page 16: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Why Data Management

Assumed that every storage system has itBut many don't

What is data management:End-to-end data integrity guaranteeCoW - Thin provisioning, Snapshots, Clones"LUN" per vDiskMulti-site with efficient transport of changesFast recovery (changed block tracking)

Page 17: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Data Management with StorPool

End-to-end data integrity protection

4k granularity - thin provisioning / reclaim - CoW snapshots, clones - changed block tracking, incremental recovery and transfer

Multi-site - connect 2 or more StorPool clusters over public Internet - send snapshots between clusters for backup and DR - commonly 100TB backup once per hour

Page 18: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Performance goal: vDisks as fast as Local SSDScalability goal: Better than CephData Management goal: Better than ZFS

In one system - StorPool

Page 19: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

And as conclusion...

Page 20: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

And as conclusion...

Page 21: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp
Page 22: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Architecture and Demo

Boyan Krosnov, Co-founder and CPO#SFD18, @storpool

Page 23: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Control planeData plane

Common infrastructure

PCIe devices Networking Service discovery

StorPool APIMonitoring &

Metrics Agents

block

iscsi target

server

bridge

Ope

nSta

ck

Clo

udS

tack

Ope

nNeb

ula

OnA

pp

Kub

erne

tes

CLI

& G

UI

Hosted analytics & Monitoring

Quorumcores & RAM

Linux BD

qemu/KVM vdisk

Page 24: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Data plane

Storage node

NVMeNVMeNVMeNVMeNVMeNVMeNVMeNVMe

3+ storage nodesScale-out ...

Host (using block storage)

Storage node

NVMeNVMeNVMeNVMeNVMeNVMeNVMeNVMe

Storage node

NVMeNVMeNVMeNVMeNVMeNVMeNVMeNVMe

Host (using block storage)

Host (using block storage)

Host (using block storage)

Host (using block storage)

Host (using block storage)

Host (using block storage)

Host (using block storage)

10s of servers using the storage system

Ethernet switch

Ethernet switch

Page 25: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp
Page 26: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

storpool_server instance1 CPU thread2-4 GB RAM

NIC

storpool_server instance1 CPU thread2-4 GB RAM

storpool_server instance1 CPU thread2-4 GB RAM

• Highly scalable and efficient architecture• Scales up in each storage node & out with multiple nodes

25GbE

. . .25GbE

storpool_block instance1 CPU thread

NVMe SSD

NVMe SSD

NVMe SSD

NVMe SSD

NVMe SSD

NVMe SSD

KVM Virtual Machine

KVM Virtual Machine

Page 27: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp
Page 28: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

●●●●

Page 29: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Analytics / metrics collection

Page 30: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Analytics / metrics collection

Page 31: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Analytics / metrics collection

Page 32: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp
Page 33: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp
Page 34: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Performance demo

Boyan Krosnov, Co-founder and CPO#SFD18, @storpool

Page 35: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Intel® Data Center Builders

Intel® Builders Construction Zone

Page 36: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

"The new HCI industry record: 13.7 million IOPS with Windows Server 2019 and Intel® Optane™ DC persistent memory"

https://blogs.technet.microsoft.com/filecab/2018/10/30/windows-server-2019-and-intel-optane-dc-persistent-memory/

Page 37: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Microsoft's HCI setup

● 12 nodes, each with:○ 384 GiB (12 x 32 GiB) DDR4 2666 memory○ 2 x Intel® Xeon® Scalable processor○ 1.5 TB Intel® Optane™ DC persistent memory as cache○ 32 TB NVMe (4 x 8 TB Intel® DC P4510) as capacity○ 2 x Mellanox ConnectX-4 25 Gbps w/RDMA

● For the best performance, every VM runs on the server node that owns the volume where its VHDX file is stored.

● S2D, Hyper-V, Windows Server 2019

Page 38: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp
Page 39: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Microsoft's HCI setup

● 12 nodes, each with:○ 2 x Intel® Xeon® Scalable processor○ 384 GiB (12 x 32 GiB) DDR4 2666 memory○ 1.5 TB Intel® Optane™ DC persistent memory as cache○ 32 TB NVMe (4 x 8 TB Intel® DC P4510) as capacity○ 2 x Mellanox ConnectX-4 25 Gbps w/RDMA

● For the best performance, every VM runs on the server node that owns the volume where its VHDX file is stored.

● S2D, Hyper-V, Windows Server 2019

Page 40: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

● 12 nodes, each with:○ 2 x Intel® Xeon® Scalable processor○ 384 GiB (12 x 32 GiB) DDR4 2666 memory○ 1.5 TB Intel® Optane™ DC persistent memory as cache○ 32 TB NVMe (4 x 8 TB Intel® DC P4510) as capacity○ 2 x Mellanox ConnectX-4 25 Gbps w/RDMA

● For the best performance, every VM runs on the server node that owns the volume where its VHDX file is stored.

● StorPool, KVM, CentOS 7

Page 41: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

● 12 nodes, each with:○ 2 x Intel® Xeon® Scalable processor○ 384 GiB (12 x 32 GiB) DDR4 2666 memory○ 1.5 TB Intel® Optane™ DC persistent memory as cache - REMOVE○ 32 TB NVMe (4 x 8 TB Intel® DC P4510) as capacity○ 2 x Mellanox ConnectX-4 25 Gbps w/RDMA

● For the best performance, every VM runs on the server node that owns the volume where its VHDX file is stored.

● StorPool, KVM, CentOS 7

Page 42: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

● 12 nodes, each with:○ 2 x Intel® Xeon® Scalable processor○ 384 GiB (12 x 32 GiB) DDR4 2666 memory○ 1.5 TB Intel® Optane™ DC persistent memory as cache - REMOVE○ 32 TB NVMe (4 x 8 TB Intel® DC P4510) as capacity○ 2 x Mellanox ConnectX-4 25 Gbps w/RDMA - REMOVE○ ADD: Intel XXV710-DA2 dual-port 25 Gbps

● For the best performance, every VM runs on the server node that owns the volume where its VHDX file is stored.

● StorPool, KVM, CentOS 7

Page 43: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

StorPool's HCI setup

● 12 nodes, each with:○ 2 x Intel® Xeon® Scalable processor○ 384 GiB (12 x 32 GiB) DDR4 2666 memory○ 1.5 TB Intel® Optane™ DC persistent memory as cache - REMOVE○ 32 TB NVMe (4 x 8 TB Intel® DC P4510) as capacity○ 2 x Mellanox ConnectX-4 25 Gbps w/RDMA - REMOVE○ ADD: Intel XXV710-DA2 dual-port 25 Gbps

● For the best performance, every VM runs on the server node that owns the volume where its VHDX file is stored. No! - 100% remote.

● StorPool, KVM, CentOS 7

Page 44: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

25G switch

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

Intel dual-socket Xeon-SP server

2x 25GbE

Page 45: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Resource usage in each node

Xeon-SP core

storpool_server

storpool_server

Xeon-SP core

storpool_server

storpool_server

Xeon-SP core

storpool_server

storpool_server

Xeon-SP core

storpool_server

storpool_server

Intel P4510 8TB NVMe drive

Xeon-SP core

storpool_block

storpool_block

Xeon-SP core

storpool_block

storpool_block

VM with 4 vCPUs

VM with 4 vCPUs

VM with 4 vCPUs

VM with 4 vCPUs

VM with 4 vCPUs

VM with 4 vCPUs

VM with 4 vCPUs

VM with 4 vCPUs

Intel P4510 8TB NVMe drive

Intel P4510 8TB NVMe drive

Intel P4510 8TB NVMe drive

Page 46: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Summary of resultsresult parameters comment

13.8 M IOPS Random read 4k qd 96x64 1.15M IOPS per node

5.5 M IOPS Random R/W 70/30 4k qd 96x40 183k read/writes /s per drive

2.5 M IOPS Random write 4k qd 96x40 156k writes /s per drive

64.6 GB/s Sequential read bs 128k qd 96x16

20.8 GB/s Sequential write bs 128k qd 96x16

70 μs Write latency bs 4k qd 1

Page 47: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Active set discussion

Active set in Microsoft / Hyper-V / S2D312 VMs * 10 GiB each = 2.9 TB(15% of 19.8 TB Optane DC persistent memory)

Active set in StorPool / KVM96 VMs * 500 GiB each = 44.7 TB(38% of 116 TB system capacity on P4510 NVMes)

storpool_server memory12 servers * 8 instances * 3.1 GiB = 277 GB

Page 48: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp
Page 49: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Case studies

Boyan Ivanov, co-founder & CEO#SFD18, @storpool

Page 50: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

●●●

●●●●●

Case study 1: NVMe-powered VDI cloud - requirement

Page 51: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Storage & compute

EmptyEmptyNVMeNVMe

Ethernet switch

39 nodes

Ethernet switch

...Storage & compute

EmptyEmptyNVMeNVMe

Storage & compute

EmptyEmptyNVMeNVMe

Case study 1: NVMe-powered VDI cloud - diagram

Page 52: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Case study 1: NVMe-powered VDI cloud - metrics

Page 53: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Case study 1: NVMe-powered VDI cloud - IOPS vs. latency

Page 54: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

●●●●●

●●

○●●

Case study 2: Imperia Online - requirement

Page 55: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Case study 2: Imperia Online

Page 56: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Case study 2: Imperia Online - diagram

Storage node

SSD

...5 storage nodes

Host (using block storage)

Storage node

Storage node

Host (using block storage)

Host (using block storage)

Host (using block storage)

Host (using block storage)

Host (using block storage)

Host (using block storage)

Host (using block storage)

…40 KVM hypervisors

Ethernet switch

Ethernet switch

SSDSSDSSD

SSDSSDSSDSSD

SSDSSDSSDSSD

Page 57: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Case study 2: Imperia Online - Metrics

Page 58: StorPool Storage … · Containers & Microservices DevOps, Infrastructure as code What is scale: API-driven, integrations Scale by adding nodes/drives ... CloudStack OpenNebula OnApp

Boyan I. / Boyan K.

StorPool [email protected]

@storpool

Thank you!