]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume/ceph_volume/util: ceph-volume multi-actuator drive attribute
authorMichael English <michael.english@seagate.com>
Thu, 19 May 2022 19:13:48 +0000 (14:13 -0500)
committerGuillaume Abrioux <gabrioux@redhat.com>
Wed, 17 Aug 2022 04:31:40 +0000 (06:31 +0200)
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 <michael.english@seagate.com>
src/ceph-volume/ceph_volume/util/device.py
src/ceph-volume/ceph_volume/util/disk.py

index 015cfe6ff607c497176d9e73f910a9cb19f56a7a..ed24c38236ef179ecfc830226490a36340df4a09 100644 (file)
@@ -85,6 +85,7 @@ class Device(object):
         'lsm_data',
     ]
     pretty_report_sys_fields = [
+        'actuators',
         'human_readable_size',
         'model',
         'removable',
index d2459e1208674d6b49e63348b29138f4350d315e..fb699244233df468af87eeb43237f790de8cdc96 100644 (file)
@@ -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: