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: v16.2.15~43^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c4d79e4990828840c8a8ec2d77fdbd0a6f2ba5a1;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 (cherry picked from commit e34237990631bb817f885a02b6a4abff79125035) --- diff --git a/src/ceph-volume/ceph_volume/util/device.py b/src/ceph-volume/ceph_volume/util/device.py index c5eab1310385..1706a21d6050 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 90527e2090b6..4152942d38b4 100644 --- a/src/ceph-volume/ceph_volume/util/disk.py +++ b/src/ceph-volume/ceph_volume/util/disk.py @@ -888,6 +888,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: