Click here to load reader
Upload
avishay-traeger
View
324
Download
1
Embed Size (px)
DESCRIPTION
Introduction and example workflow for volume mirroring Cinder Havana proposal
Citation preview
© 2013 IBM Corporation
Volume Mirroring
Presenter: Avishay Traeger
IBM Research – Haifa
© 2013 IBM Corporation
Agenda
● Goal
● Definitions
● Example flow 1: Single Cinder deployment
– HA, shorter-distance DR● Example flow 2: Multiple Cinder deployments
– Longer-distance DR
© 2013 IBM Corporation
Goal
● Multiple consistent copies of selected volumes to mitigate failures of varying degrees
● Flexible framework for enabling mirroring technologies
– Where?● Back-end: driver/storage● Front-end: OS-level, hypervisor
– How?● Several techniques for volume mirroring● Biggest difference is RPO and RTO
© 2013 IBM Corporation
Recovery Point Objective (RPO)Recovery Time Objective (RTO)
Recovery Point Objective Recovery Time Objective
How far back in time a disaster takes one
How long until operational after a disaster
RPO=0 synchronous copy RTO=0 hot backup site
© 2013 IBM Corporation
Main technologies
● Synchronous
– Write to both copies before returning ACK
– Always consistent● Asynchronous
– Write to primary, ACK, forward to secondary ASAP● Periodic
– Accumulate changes and send to secondary periodically
© 2013 IBM Corporation
Single Cinder deployment: Admin setup
● 2 storage entities in a single Cinder deployment (e.g., controller, file system)
a
b© 2013 IBM Corporation
© 2013 IBM Corporation
Single Cinder deployment: Admin setup
● 2 storage entities in a single Cinder deployment (e.g., controller, file system)
● Mirroring is set up at a certain level (e.g., controller, file set)
a
b© 2013 IBM Corporation
© 2013 IBM Corporation
Single Cinder deployment: Admin setup
● 2 storage entities in a single Cinder deployment (e.g., controller, file system)
● Mirroring is set up at a certain level (e.g., controller, file set)
● Admin must ensure network connectivity between mirror participants (e.g., a-b)
a
b© 2013 IBM Corporation
© 2013 IBM Corporation
Single Cinder deployment: Admin setup
● 2 storage entities in a single Cinder deployment (e.g., controller, file system)
● Mirroring is set up at a certain level (e.g., controller, file set)
● Admin must ensure network connectivity between mirror participants (e.g., a-b)
● Each may have one or more pools managed by Cinder which store volumes
a
b
volume_backend_name=pool1
volume_backend_name=pool2
volume_backend_name=pool3
© 2013 IBM Corporation
© 2013 IBM Corporation
Single Cinder deployment: Admin setup
● 2 storage entities in a single Cinder deployment (e.g., controller, file system)
● Mirroring is set up at a certain level (e.g., controller, file set)
● Admin must ensure network connectivity between mirror participants (e.g., a-b)
● Each may have one or more pools managed by Cinder which store volumes
● Drivers report id of mirroring participant (e.g., controller, file set)
a
b
volume_backend_name=pool1mirroring_unit_id=a
volume_backend_name=pool2mirroring_unit_id=b
volume_backend_name=pool3mirroring_unit_id=b
© 2013 IBM Corporation
© 2013 IBM Corporation
Single Cinder deployment: Admin setup
● Admin creates partnerships – storage pairs with the potential to mirror between them
a
b
volume_backend_name=pool1mirroring_unit_id=a
volume_backend_name=pool2mirroring_unit_id=b
volume_backend_name=pool3mirroring_unit_id=b
© 2013 IBM Corporation
© 2013 IBM Corporation
Single Cinder deployment: Admin setup
● Admin creates partnerships – storage pairs with the potential to mirror between them
● Drivers report mirroring capabilities with each partner
a
b
volume_backend_name=pool1mirroring_unit_id=a
mirroring_capabilities=[b, [sync,async], active-passive]
volume_backend_name=pool2mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
volume_backend_name=pool3mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
© 2013 IBM Corporation
© 2013 IBM Corporation
Single Cinder deployment: User actions
● User creates a volume, specifying mirror requirements in volume type:sync, active-passive.Candidates: any in a/b
a
b
volume_backend_name=pool1mirroring_unit_id=a
mirroring_capabilities=[b, [sync,async], active-passive]
volume_backend_name=pool2mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
volume_backend_name=pool3mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
1
© 2013 IBM Corporation
© 2013 IBM Corporation
Single Cinder deployment: User actions
● User creates a volume, specifying mirror requirements in volume type:sync, active-passive.Candidates: any in a/b
● User creates second volume, passes requirements in volume type, and first volume's id as scheduler hint.Candidates: any in a
a
b
volume_backend_name=pool1mirroring_unit_id=a
mirroring_capabilities=[b, [sync,async], active-passive]
volume_backend_name=pool2mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
volume_backend_name=pool3mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
1
2
© 2013 IBM Corporation
© 2013 IBM Corporation
Single Cinder deployment: User actions
● User creates a volume, specifying mirror requirements in volume type:sync, active-passive.Candidates: any in a/b
● User creates second volume, passes requirements in volume type, and first volume's id as scheduler hint.Candidates: any in a
● User creates a mirror relationship between the two volumes and optionally starts the copy
a
b
volume_backend_name=pool1mirroring_unit_id=a
mirroring_capabilities=[b, [sync,async], active-passive]
volume_backend_name=pool2mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
volume_backend_name=pool3mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
1
2
© 2013 IBM Corporation
© 2013 IBM Corporation
Multi-Cinder deployment
Consider two or more Cinder deployments
ProblemThe mirror I/O is unchanged, but we can't control placement on the remote cloud and don't want the local driver calling the remote driver directly
SolutionLocal Cinder communicates with a gateway, and the gateway calls public Cinder APIs on the other sites
a
b
volume_backend_name=pool1mirroring_unit_id=a
mirroring_capabilities=[b, [sync,async], active-passive]
volume_backend_name=pool2mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
volume_backend_name=pool3mirroring_unit_id=b
mirroring_capabilities=[a, [sync,async], active-passive]
Local cloud_id = primary
Remote cloud_id = DRsite1© 2013 IBM Corporation