Add support to RBD erasure code pools#9808
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #9808 +/- ##
============================================
- Coverage 16.18% 16.18% -0.01%
+ Complexity 13046 13045 -1
============================================
Files 5645 5646 +1
Lines 494795 494841 +46
Branches 59955 59963 +8
============================================
+ Hits 80065 80069 +4
- Misses 405897 405937 +40
- Partials 8833 8835 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@blueorangutan package |
|
@BryanMLima a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 11365 |
DaanHoogland
left a comment
There was a problem hiding this comment.
clgtm, but needs testing
JoaoJandre
left a comment
There was a problem hiding this comment.
LGTM, did not test it. Only left a small nitpick
JoaoJandre
left a comment
There was a problem hiding this comment.
LGTM, did not test it
|
This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch. |
…l is of erasure code type. Also added javadoc for createPhysicalDisk method
|
@BryanMLima a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 12174 |
There was a problem hiding this comment.
Tested for both replicated and erasure coded pools:
- VM deployment
- VM deletion
- Snapshot creation
- Reversion to snapshot
- Template creation from snapshot
- VM deployment based on template created from snapshot
- Volume creation from snapshot
- Attachment of root disk created from snapshot
- Data disk attachment with VM running and stopped
- Volume resize
- Volume migration
- To/from local storage
- To/from NFS
- To/from another RBD pool
- Of volumes that have snapshots on primary (the snapshots get deleted)
- Live migration
|
@DaanHoogland @sureshanaparti @JoaoJandre, I think we can merge this one, right? |
|
@blueorangutan package |
@BryanMLima For formality's sake, we should run the CI still |
|
@JoaoJandre a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
|
@blueorangutan test |
|
@DaanHoogland a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests |
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 12848 |
|
@blueorangutan test |
|
@DaanHoogland a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests |
|
[SF] Trillian test result (tid-12807)
|
|
@blueorangutan package |
|
@JoaoJandre a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 12934 |
|
@DaanHoogland could we try the CI again? |
|
@blueorangutan test |
|
@DaanHoogland a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests |
|
[SF] Trillian test result (tid-12877)
|
* Readd filename string on qemuimg create * Remove empty object on the data pool details of storage pools with no data pool * Only use the method createPhysicalDiskByLibVirt with RBD when the pool is of erasure code type. Also added javadoc for createPhysicalDisk method * Change literal '/' string to File.separator * Add support for erasure code pools * Fix null on putAll
… on RBD RBD erasure-coded pool support (apache#9808) added handling of the rbd_default_data_pool storage-pool detail to RBDStringBuilder (qemu-img path) and to createPhysicalDisk (blank volumes), but not to createDiskFromTemplateOnRBD. As a result, ROOT volumes created from a template via rados-java rbd.clone()/rbd.create() are created without a data pool: all of their data objects land in the (replicated) metadata pool instead of the erasure-coded data pool, defeating the point of EC and consuming ~3x raw space. Set rbd_default_data_pool on the Rados connection (before connect) in both the same-cluster clone/copy branch and the cross-cluster copy branch of createDiskFromTemplateOnRBD, using the destination pool's detail. librbd then honors it as the default data pool when the new image is created, so template-derived volumes get data_pool set, the same way blank volumes already do. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Description
This PR adds support for Ceph erasure code pools, allowing users to specify the data pool required for using this type of Ceph pool.
Types of changes
Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale
Screenshots (if appropriate):
Details of the data pool in the UI
How Has This Been Tested?
The following tests were executed to verify this patch; tests were executed on replicated pools as well to check if this patch would interfere in it.
How did you try to break this feature and the system with this change?
I tried to migrate volumes from different type of pool types (NFS, iSCSI and RBD) to each other, verifying that the migration was successful.