Hi all!
I’ve modified Ceph to allow using a RAID1 array as the metadata device.
Specifically, I've updated ceph_volume/util/device.py and
ceph_volume/util/disk.py to recognize the "raid1" device type as valid device
for OSDs and metadata storage. The changes are listed below.
My questions:
- What are the risks or issues which may arise from using RAID1 for metadata?
(e.g., performance, reliability, data integrity)
- Why this could be a bad idea, or in what scenarios could it be beneficial?
My test setup:
- Ceph version: 18.2.4 Reef (stable)
- OS: Ubuntu 22.04.5 LTS
- Hardware: 1 host, RAID1 array on two NVMe SSDs (/dev/nvme0n1 and
/dev/nvme0n2, 19.98 GiB) via mdadm for block.db, 4 HDDs for OSD data
- Additional details: Tested on a small cluster on VMs; no noticeable
performance changes so far, but I’m concerned about long-term implications.
Code changes:
diff --git a/src/ceph-volume/ceph_volume/util/device.py
b/src/ceph-volume/ceph_volume/util/device.py
index 1b52774d1a1..148a8e326f8 100644
--- a/src/ceph-volume/ceph_volume/util/device.py
+++ b/src/ceph-volume/ceph_volume/util/device.py
@@ -237,7 +237,7 @@ class Device(object):
self.disk_api = dev
device_type = dev.get('TYPE', '')
# always check is this is an lvm member
- valid_types = ['part', 'disk', 'mpath']
+ valid_types = ['part', 'disk', 'mpath', 'raid1']
if allow_loop_devices():
valid_types.append('loop')
if device_type in valid_types:
@@ -489,7 +489,7 @@ class Device(object):
elif self.blkid_api:
api = self.blkid_api
if api:
- valid_types = ['disk', 'device', 'mpath']
+ valid_types = ['disk', 'device', 'mpath', 'raid1']
if allow_loop_devices():
valid_types.append('loop')
return self.device_type in valid_types
diff --git a/src/ceph-volume/ceph_volume/util/disk.py
b/src/ceph-volume/ceph_volume/util/disk.py
index 2984c391d06..5dafd6dc62a 100644
--- a/src/ceph-volume/ceph_volume/util/disk.py
+++ b/src/ceph-volume/ceph_volume/util/disk.py
@@ -362,7 +362,7 @@ def is_device(dev):
TYPE = lsblk(dev).get('TYPE')
if TYPE:
- return TYPE in ['disk', 'mpath']
+ return TYPE in ['disk', 'mpath', 'raid1']
# fallback to stat
return _stat_is_device(os.lstat(dev).st_mode) and not is_partition(dev)
Any feedback is really appreciated as all of us care about not to lost our
precious bytes :)
_______________________________________________
ceph-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]