Add support for split OSD adds

Allows creating multiple OSDs on a single (NVMe) block device,
leveraging the "ceph-volume lvm batch" command. Replaces the previous
method of creating OSDs.

Also adds a new ZK item for each OSD indicating if it is split or not.
This commit is contained in:
2023-11-01 21:17:38 -04:00
parent aa0b1f504f
commit 526a5f4a74
8 changed files with 281 additions and 197 deletions

View File

@ -4284,12 +4284,18 @@ class API_Storage_Ceph_OSD_Root(Resource):
{
"name": "ext_db",
"required": False,
"helptext": "Whether to use an external OSD DB LV device.",
},
{
"name": "ext_db_ratio",
"required": False,
"helptext": "Decimal size ratio of the external OSD DB LV device.",
},
{
"name": "split",
"required": False,
},
{
"name": "count",
"required": False,
},
]
)
@ -4327,6 +4333,16 @@ class API_Storage_Ceph_OSD_Root(Resource):
type: float
required: false
description: Decimal ratio of total OSD size for the external OSD DB LV device, default 0.05 (5%)
- in: query
name: split
type: boolean
required: false
description: Whether to split the block device into multiple OSDs (recommended for NVMe devices)
- in: query
name: count
type: integer
required: false
description: If {split}, how many OSDs to create on the block device; usually 2 or 4 depending on size
responses:
200:
description: OK
@ -4345,6 +4361,8 @@ class API_Storage_Ceph_OSD_Root(Resource):
reqargs.get("weight", None),
reqargs.get("ext_db", False),
float(reqargs.get("ext_db_ratio", 0.05)),
reqargs.get("split", False),
reqargs.get("count", 1),
)