Next Generation ESX Storage: A Pluggable Core Storage...

46
Next Generation ESX Storage: A Pluggable Core Storage Architecture Tom Phelan Staff Engineer

Transcript of Next Generation ESX Storage: A Pluggable Core Storage...

Page 1: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

Next Generation ESX Storage:

A Pluggable Core Storage Architecture

Tom Phelan

Staff Engineer

Page 2: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Motivation

The current ESX storage stack is highly functional, but limited in flexibility and extensibility.

The Pluggable Core Storage Architecture addresses these limitations.Implements clear APIs between the various components of the storage stack.Allows third party software vendors to port their proprietary multipathing and load balancing code to the ESX platform.Allows SAN array hardware vendors to write device specific code for ESX that takes advantage of advanced array features without compromising proprietary information.

Page 3: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Audience

This presentation is focused at software developers and development managers.

The aim is to describe the current state of the ESX Pluggable Core Storage Architecture and ellicit feedback from our partners and customers about their needs in this area.

Page 4: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Outline

Core Storage Architecture DefinitionMotivation For ChangeESX Storage Architecture

Existing Storage ArchitectureNew Storage Architecture

ESX Storage PluginStorage Plugin Framework FunctionalityStorage Plugin Functionality

Native Multipathing Implementation of an ESX Storage Plugin

Page 5: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Definition

ESX Core Storage ArchitectureThe part of the storage stack that resides in the ESX operating system (vmkernel)• “below” the Virtual SCSI implementation, • “above” the Linux compatibility and physical disk driver layers

Page 6: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Core Storage Architecture

Common illustration of vmkernel architectureCore Storage Architecture Includes

Part of command processingDisk schedulingPath scanningMultipathing

Guest OSext3

lsilogic

VMMlsilogic

emulationVMkernel

Raw access

Virtual SCSI

Linux compat. layerQlogic driver

Virtual machine

VMFS

Cmd processing, disk scheduling

multipathing

LUN rescan COW

Virtual machine

Page 7: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Motivation for Changing the Core Storage Architecture

Enhance the ESX Server infrastructure for storage partner integrationEmpower Software partners to port their proprietary multipathingproducts to the ESX platformAllow Storage partners to take full advantage of their device specific functionality within ESX• Protect array specific code from regression (recertification)Speed the time to market of the support for new storage arrays• Enable asynchronous support for new arraysPromote the proliferation of enhanced load balancing algorithms

Pack ESX with more functionality than VMware can provide all by itself!

Page 8: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Existing ESX Storage Stack Architecture

Monolithic design.No support for isolating 3rd party proprietary code.

Service Console

VFS

Block

VMKernel Virtual SCSI Layer

File System Switch (FSS)

Console Helpers

COW VMFS-2 VMFS-3 NFSc

StorageMid-layer Command Processing, Error Handling

Queuing and Disk SchedulingMultipathing

LUN Rescanning and VMFS Vols

PTable

LinuxCompatibilityLayer

Utis SCSI Block iSCSI

SCSI/FC SCSI Block IDE iSCSI

VMM

LSILogic Emu.BusLogic Emu.

/vmfs{VMK, Shr, VB} Dev

SCSI

Buffer Cache

VMnix->VMK Syscall

vmkfstoolsfdisk ls cat

Page 9: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

New ESX Storage Stack Architecture

Well defined functional layersIsolate SCSI emulation code.Support multiple file system typesSupport multiple block device typesImproved path scanning functionalityImproved storage managementProvide APIs for

Multipathing implementationsDevice Drivers

VMFS3

Pass Thru RDM

Raw Disk

Filesystem Switch

Logical Device IO Scheduler

Linux Emulation

SCSI Disk Emulation

ESX Storage Framework

Multi-pathing plug-in

CONF IGURAT ION

Adapter IO Scheduler

Scanning

VMKernel

NFS

Non Pass Thru RDM

Guest OS

Scsi HBA Emulation

VM

Guest OS

Scsi HBA Emulation

VM

Ram Disk Disk

Block devices

Console OS

VMnix

Config Util Agent

COW

LVM

IDE Driver

SCSI Driver

FC Driver

iSCSI Driver

Block Driver

Page 10: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Plan To Get To The New Architecture

Redesign the Storage StackIntroduce functional layersImplement the new ESX Core Storage frameworkDevelop an example of an ESX Storage plugin

Port ESX native multipathing to the Core Storage frameworkModularise the code: core, array plugins, path policy plugins Port the failover engine to the Storage frameworkPort all array specific plug-ins to the new native multipathing APIs.Develop example array specific and path policy plugins.

Page 11: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Benefits of Using VMkernel Infrastructure APIs

VMkernel development kit

Build environment: compiler, header files, makefilesCode samples and DocumentationDebugging environment

Buildable on standard ESX installationPluggable modules can be shipped from 3rd parties

• Binary Compatible• Versionable

Headers and sample code available to non-Community Source partners

Page 12: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Components of VMkernel Infrastructure API

The VMkernel API

Library of routines used by both internal and external developers

The VMkernel SCSI API

Library of routines specific to SCSI path/device/I/O manipulation

Used to implement a new multipathing algorithm or support for a new SAN device.

Mechanisms to allow 3rd party software to be shipped separately from an ESX release

Init time & configuration integration

Page 13: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

VMkernel API

Functionality – basic OS servicesMemory: heaps, copy to/from virtual address & physical addressLocking: spinlock class, semaphore classWorlds: sleep, wakeup, delayTimers and time conversionCharacter devices

BenefitsBuilt on existing code currently used within ESX Self-contained header filesOpaque data structures hide ESX specifics

Page 14: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

VMkernel SCSI API

FunctionalityPlugins: create, register, unregisterDevice: create, remove, open, close, issue I/O, abort I/OPaths: claim, set state, issue I/O, complete I/OCommands: create, issue sync, issue async

BenefitsSharing of common code across storage plugin implementationsProvide support for Virtual Machine I/O without having to be aware of the Virtual Machines themselves.

Page 15: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Stages of the ESX Boot Process

Load RAM diskLoad COS kernel imageLoad VmkernelLoad modules

vmklinuxvmknmpmodOther mp plugins

Load Device DriversScan For Physical Devices

Scan pathsClaim pathsLocate boot device

Boot COS and Start VMs

Page 16: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Core Storage Architecture Functions

(1) Provide mechanisms to load/manage/unload multiple storage plugins(2) Hide Virtual Machine specific activities from the storage plugins(3) Route I/O requests for a specific logical device to the appropriate storage plugin(4) Handle I/O queuing to the logical devices(5) Implement logical device bandwidth sharing between Virtual Machines(6) Handle I/O queuing to the physical storage HBAs(7) Handle physical path discovery and removal process(8) Provide logical device and physical path I/O statistics

VMFS3

Pass Thru RDM

Raw Disk

Filesystem Switch

Logical Device IO Scheduler – 4, 5, 8

Linux Emulation

SCSI Disk Emulation - 2

ESX Storage Framework – 1, 3

Multi-pathing plug-in

CONF IGURAT ION

Adapter IO Scheduler – 6, 8

Scanning - 7

VMKernel

NFS

Non Pass Thru RDM

Guest OS

Scsi HBA Emulation

VM

Guest OS

Scsi HBA Emulation

VM

Ram Disk Disk

Block devices

Console OS

VMnix

Config Util Agent

COW

LVM

IDE Driver

SCSI Driver

FC Driver

iSCSI Driver

Block Driver

Page 17: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Core Storage Plugin Functions

Manage physical path claiming and unclaimingManage the open and closing of logical devicesProcess I/O requests to logical devices

Select an optimal physical path for the requestHandle failures and request retries if necessary• Specific actions may be required for storage devices.

Support management tasks such as abort or reset of logical devices

Page 18: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Core Storage Plugin States

EnabledLogical devices are operational

Path ClaimingIn the process of claiming physical paths and exporting logical devices• May be different behaviour for active/active and active/passive

arrays.Disabling

In the process of quiescing logical devicesDisabled

Logical devices are not operational

Page 19: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Path Discovery Process

Path scanningESX Storage Framework scans the device.Breakout scan process for new path discovery from scan process to remove missing paths.• Create/Keep/Destroy

The physical paths end up in the pool of unclaimed paths

Page 20: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Storage Plugin Path Claiming Process

The Storage Framework sends a “start of path claiming” notification to all pluginsNext the Framework presents the paths to the plugins based on inquiry data and configuration file rules

A plugin can claim or reject the pathOnly a single plugin can claim any given path

Finally the framework sends an “end of path claiming” notification to all plugins.

Now that a plugin has all the paths, it may create a logical device and expose it the Framework.

Page 21: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Path Claiming Rules

Sample vmkpath.confModel String “Disk Type A ” Plugin “mpmgmt#1”Model String “Disk Type B ” Plugin “mpmgmt#2”Model String “Disk Type C ” Plugin “mpmgmt#1,mpmgmt#2”Model String “” Plugin “vmware-nmp”

Default vmkpath.conf:Model String “” Plugin “vmware-nmp”

Reality will very likely be a more complex set of rules

Page 22: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Logical Device Identifiers

Support multiple Identifiers per logical deviceLegacy unique identifier (UID)

Format is ESX proprietary.Needed for backward compatibility/upgrade• RDMs, VMFS File system signature

Standards compliant UIDUTF-8 string version:• naa.1F92A3E84B4D56C7• eui.9A18F7B27E6C54D3• iqn.1987-05.com.cisco:01.7fef329e15c8Same UID across all storage plugins

Storage plugin specific identifiers

Page 23: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

ESX Native Multipathing Plugin Specific Goals

Replace existing ESX multipathing codeIsolate Storage Array Type specific implementations (SAT)• active/active• active/passiveIsolate Path Selection implementations (PS)• Fixed path selection• Most Recently Used path selection• Load Balanced path selection

Provide public APIs for SAT and PS plugins Simultaneously co-exist with other storage pluginsSupport true path load balancingDecrease the time and effort involved in supporting new SAN devices.

Page 24: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

NMP Initial Scope

Replace the existing ESX multipathing code

Implement as a plugin using the new Core Storage FrameworkUse only the VMkernel API and VMkernel SCSI APIs.

Path Selection Specific Plugins (PSP)FixedMRULoad balanced

SAN/Storage Array Type Specific Plugins (SATP)All the arrays currently supported by ESX 3.0

SAT and PS plugins can be shipped separately from an ESX release.

Page 25: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

ESX Native Multipathing (NMP)

ESX Storage Framework

Native multipathing

Con

figur

atio

n

Periodical path probing

Policy

Load

Balancing

MRU

Identification

Failover

Error codes

Storage Array X

Arrays Management

Fixed

Page 26: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

NMP SAT Plugin

Settable per physical pathHandle array specific actions

For Active/Passive Devices• Detect SP failures • Activate passive paths

Called for each I/O request that fails to complete successfullyMonitor health of each physical path.Periodically queried to report the state of each physical path to the NMP pluginSATP_UNKN by default

Page 27: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

NMP PS Plugin

Settable per logical deviceCalled on each I/O request to a logical deviceDetermine which of the physical paths should be used when issuing an I/O request to a logical device.PSP_UNKN by default

Page 28: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

NMP Flow of I/O

Native Multipathing I/O Path

NMP Plugin Storage Framework

Tell NMP an I/O is ready to be issued PS Plugin

Select the physical path

#1

Get the I/O to be issued #2

Send the I/O to the device d i

#4

#3

Device driver indicates I/O is complete

#5 Tell PS I/O is complete #6

SAT Plugin

Interpret the error codes

Activate paths Reset path

selection set

#7

#8

#9

Path Failover Mechanism

Post I/O completion #10

Page 29: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Status

Work on the new Storage Framework and the NMP plugin is underwayStorage partners have expressed interest in developing software for this framework

Page 30: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Many Ways to Add Functionality to ESX

Device Driver Toolkit (DDK)When adding a device driver

Native Multipath PluginWhen adding support for a specific SAN array or path policy

Storage Stack PluginWhen adding support for a complete multipathing mechanism

Community SourceWhen modifications beyond the scope of the existing APIs is required

Page 31: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Questions?

Rochan Dhand – [email protected]

Page 32: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

Presentation Download

Please remember to complete yoursession evaluation form

and return it to the room monitorsas you exit the session

The presentation for this session can be downloaded at http://www.vmware.com/vmtn/vmworld/sessions/

Enter the following to download (case-sensitive):

Username: cbv_repPassword: cbvfor9v9r

Page 33: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

Some or all of the features in this document may be representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Page 34: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

The remaining slides are backup information only

These slides describe how the data structures in the new framework may be defined.These slides show how the VMkernel SCSI API routines may be called.These slides are only illustrations to describe concepts. The API will evolve before its initial release with ESX.

Page 35: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Data Structures – Reference Counting

Getting a referenceLookup by name / identifier• SCSILookup{Adapter|Path|Device|Plugin}()Iteration over all instances• SCSI{Adapter|Path|Device|Plugin}IteratorInit()

• Returns the first object: takes a reference• SCSI{Adapter|Path|Device|Plugin}IteratorNext()

• Return the next object: takes a reference on the new instance and drops it on the previous instance

• SCSI{Adapter|Path|Device|Plugin}IteratorDone()• Stop iterating: drops the ref on the current object if any

Duplicate a reference• SCSIRef{Adapter|Path|Device|Plugin}

Page 36: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Data Structures Reference Counting

Dropping a referenceSCSIUnref{Adapter|Path|Device|Plugin}

Destroying the objectPrevent new lookupsSleep until the last reference is dropped• Avoids dance with global locks in IO pathReturns

Page 37: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Plugin Module Reference Counting

Always pin a module before accessing itSlow path: acceptablePerformance path: not acceptable• vmk_ScsiDevice: protected by open/close

• Device open atomically looks up the device and pins its module• Fails if the module is being unloaded

• vmk_ScsiPath: protected by claim/unclaim events• vmk_ScsiAdapter: protected by claimed paths

Page 38: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Data Structures – Physical Adapter

vmk_ScsiAdapterdriver nameadapter namemoduleIdcapabilities: maxIoSize, maxSgLen, paeCapableentry points: discover, command, taskMgmt, dumpdump info: interrupt handler & vector

ScsiAdapterlockflagsuseCountStats

Page 39: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Data Structures – Physical Path

vmk_ScsiPath

plugin private data

ScsiPathLocknameflagsuseCountstatsinquiry datapluginLegacy UID

Page 40: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Data Structures – Logical Device

vmk_ScsiDevicePlugin private data

ScsiDeviceLockFlagsuseCountstatsplugindevice UIDs

Page 41: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Data Structures - Plugin

vmk_ScsiPluginName, moduleId

version number, SCSI API revision numberentry points:• openDevice, closeDevice• startCommand, taskMgmt• device ioctl, path ioctl, plugin ioctl

ScsiPluginlockflagsuseCountStats

Page 42: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Data Structures – I/O Command

vmk_ScsiCommand

Issuing Path• cdb, cdbLen, sgArray• direction, requiredDataLen• senseData, senseDataLen• done(), doneData• worldId• commandId: serialNumber, originator• timeoutMs

Completion Path• host status, SCSI status• xferredDataLen

Page 43: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Data Structures – Task Management

vmk_ScsiTaskMgmtTask Mgmt TypeCompletion StatusInitiator Id (handle)Serial number

Page 44: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

Data Structures

Legacy Structures VMKAPI VMKAPI_SCSI

SCSI_CommandAsync_TokenSCSI_ResultID

vmk_ScsiCommandvmk_TaskMgmt

N/AN/A

SCSI_Target vmk_ScsiDevice ScsiDevice

N/A vmk_ScsiPlugin ScsiPlugin

SCSI_Path vmk_ScsiPath ScsiPath

SCSI_Adapter vmk_ScsiAdapter ScsiAdapter

Page 45: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

I/O Flow through the Data Structures

SCSI_Command from GOS is converted to a vmk_ScsiCommandvmk_ScsiCommand converted to Scsi_Command sent to physical device driver.

Logical Device IO Scheduler

Linux Emulation

Storage Framework

Multi-pathing plugin

CONF IGURAT ION

Adapter IO Scheduler

SCSIDevice

vmk_ScsiPath

vmk_ScsiDevice

Plugin Path

Plugin Device

ScsiPath

Vmk_ScsiCommand

ScsiAdapter

vmk_ScsiAdapter

Scsi_Host

Plugin Command

SCSI_Command Async_Token

SCSI_ResultID

VMkernel

Scsi_cmnd

vmk_ScsiPlugin

ScsiPlugin

Page 46: Next Generation ESX Storage: A Pluggable Core Storage …download3.vmware.com/vmworld/2006/tac9564.pdf · 2006. 11. 17. · Virtual SCSI Linux compat. layer Qlogic driver Virtual

These features are representative of feature areas under development. Feature commitments must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery.

I/O Flow Through the Framework

Strorage Framework

vmk_ScsiIssueAsyncPathCommand( vmk_ScsiPath*, vmk_ScsiCommand*)

Vmk_SCSI

vmk_ScsiGetNextDeviceCommand(vmk_ScsiDevice*)

plugin->startCommand( vmk_ScsiDevice*)

Storage Framework

(2)

(3) (4)

VMKlinuxMP Plug-in

cmd->done(vmk_ScsiCommand*) (7)

IO Path

Dump path

ScsiCompleteDeviceCommand(vmk_ScsiCommand*)

(8)

vmk_ScsiCreateCommand( vmk_ScsiPlugin*)

(1)

Vmk_ScsiIssuePathTaskMgmt( vmk_ScsiPath*, vmk_ScsiTaskMgmt*)

vmk_QueryTaskMgmtAction(vmk_ScsiTaskMgmt*, vmk_ScsiCommand*)

plugin->taskMgmt(vmk_ScsiDevice*, vmk_ScsiTaskMgmt)

(1)

(2)

(4)

ScsiCompleteDeviceCommand(vmk_ScsiCommand*)

(3)

Task Mgmt

Adapter->issueCommand( vmk_ScsoPath*, vmk_ScsiCommand*)

(5)

cmd->done(vmk_ScsiCommand*) (6)

Adapter->taskMgmt( vmk_ScsiPath*, vmk_ScsiTaskMgmt*)

(5)

vmk_ScsiIssueSyncDumpCommand( vmk_ScsiPath*, vmk_ScsiCommand*)

plugin->deviceIoctl( vmk_ScsiDevice*, DUMP)

(1) (2)

Adapter->dumpCommand( vmk_ScsiPath*, vmk_ScsiCommand*)

(3)

cmd->done(vmk_ScsiCommand*) (4)