From: Michael English Date: Thu, 19 May 2022 19:13:48 +0000 (-0500) Subject: ceph-volume/ceph_volume/util: ceph-volume multi-actuator drive attribute X-Git-Tag: v18.0.0~59^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e34237990631bb817f885a02b6a4abff79125035;p=ceph.git ceph-volume/ceph_volume/util: ceph-volume multi-actuator drive attribute As storage capacities grow, multi-actuator technology introduced by Seagate addresses the downward pressure on performance that comes with growing drive capacities and areal densities. Having multiple actuators enables drives to maintain the performance needs of customers with data-intensive applications. However, this innovation requires storage stack changes because a single hard drive is now represented by two or more independent actuators (independent_access_ranges) that transfer data concurrently and are represented by a single LBA address space. This code addition to the `ceph-volume` command assists Ceph administrators in identifying drives with multiple actuators by utilizing the Linux kernel's multi-actuator support introduced in version 5.16. Dual-actuator hard drives are gaining market share and becoming more important to Ceph deployments on large discs. The code has been tested with Seagate Osprey Exos 2X18 with Mach.2 technology. $ sudo ceph-volume inventory /dev/sdd ====== Device report /dev/sdd ====== path /dev/sdd ceph device None lsm data {} available False rejected reasons Has GPT headers device id ST18000NM0092-3CX103_MVV00H3J removable 0 ro 0 vendor ATA model ST18000NM0092-3C sas address rotational 1 actuators 2 scheduler mode mq-deadline human readable size 16.37 TB Copyright (c) 2022 Seagate Technology LLC and/or its Affiliates Signed-off-by: Michael English --- diff --git a/src/ceph-volume/ceph_volume/util/device.py b/src/ceph-volume/ceph_volume/util/device.py index 015cfe6ff607..ed24c38236ef 100644 --- a/src/ceph-volume/ceph_volume/util/device.py +++ b/src/ceph-volume/ceph_volume/util/device.py @@ -85,6 +85,7 @@ class Device(object): 'lsm_data', ] pretty_report_sys_fields = [ + 'actuators', 'human_readable_size', 'model', 'removable', diff --git a/src/ceph-volume/ceph_volume/util/disk.py b/src/ceph-volume/ceph_volume/util/disk.py index d2459e120867..fb699244233d 100644 --- a/src/ceph-volume/ceph_volume/util/disk.py +++ b/src/ceph-volume/ceph_volume/util/disk.py @@ -872,6 +872,13 @@ def get_devices(_sys_block_path='/sys/block', device=''): else: metadata['device_nodes'] = devname + metadata['actuators'] = "" + if os.path.isdir(sysdir + "/queue/independent_access_ranges/"): + actuators = 0 + while os.path.isdir(sysdir + "/queue/independent_access_ranges/" + str(actuators)): + actuators += 1 + metadata['actuators'] = actuators + metadata['scheduler_mode'] = "" scheduler = get_file_contents(sysdir + "/queue/scheduler") if scheduler is not None: