]> 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)
committerKonstantin Shalygin <k0ste@k0ste.ru>
Wed, 29 Nov 2023 11:46:07 +0000 (18:46 +0700)
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>
(cherry picked from commit e34237990631bb817f885a02b6a4abff79125035)

src/ceph-volume/ceph_volume/util/device.py
src/ceph-volume/ceph_volume/util/disk.py

index c5eab13103851e3aa582ca683f9e65b2ae184339..1706a21d6050b7cf205696237ba7fe64717bd9c9 100644 (file)
@@ -85,6 +85,7 @@ class Device(object):
         'lsm_data',
     ]
     pretty_report_sys_fields = [
+        'actuators',
         'human_readable_size',
         'model',
         'removable',
index 90527e2090b6c5366c8a81e88d6dd7b9f655acf1..4152942d38b416cb70c3d617e5bba416c64cabc7 100644 (file)
@@ -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: