NVME: InfoScale 7.4.3 introduces new libvxnvme_nonscsi.so IOCTL based ASL for NVMe devices due to RHEL8 changes

book

Article ID: 100048758

calendar_today

Updated On:

Description

Description

 

NVMe (Non-Volatile Memory Express) is a host controller interface & storage protocol created to accelerate the transfer of data using solid-state drives (SSDs).

Uses a servers high-speed Peripheral Component Interconnect Express (PCIe) interface.


InfoScale (IS) 7.3 initially introduced support for Linux

-   Generic ASL support was developed for NVMe & SATA disks
-   The existing IS 7.3 based Intel NVMe ASL was also enhanced to claim other NVMe disks as well
-   The Generic NVMe ASL (Array Support Library) will attempt to claim NVMe type devices

InfoScale (IS) 7.3.1 introduced support for NVMe (Non-Volatile Memory Express) devices with Solaris Sparc servers.


InfoScale 7.4.3 Changes


The existing NVMe ASL does SCSI inquiries to get device formation when discovering NVMe related devices. Due to RHEL8 requirements, Veritas have developed a revised ASL which uses NVMe IOCTLs to fetch device information and discover NVMe devices.

 

KEY POINTS:


- Older SCSI NVMe ASL are now deprecated with InfoScale 7.4.3, as we have changed the way of discovering NVMe devices
 

- SCSI inquiry support for NVMe devices is deprecated with RHEL8 and future RedHat releases
- Effectively, the existing NVMe ASL (ddlnvme.so) is unable to claim NVMe devices on RHEL8 platform

As a resolution, new ASL is developed which uses NVMe IOCTL instead of SCSI inquiry to detect NVMe attributes.
NVMe IOCTL ASL works on all Linux platform (Supported for VOLGA).

The SCSI inquiry based NVMe ASL will be deprecated from InfoScale 7.4.3 onwards for all supported Linux platforms.

- The New NVMe IOCTL based ASL is only for Linux platforms.

- No changes are required for Solaris Sparc environments.
 

Solaris Example:
 

# vxddladm list devices
DEVICE               TARGET-ID    STATE   DDL-STATUS (ASL)
===============================================================
c1t0d0s2             -            Online  CLAIMED (ALUA)
c6t5000CCA01D1EF4B9d0 -            Online  CLAIMED (Disk)
c3t1d0               -            Online  CLAIMED (libvxnvme_sol.so)


Exclusion of the NVMe ASL array will not work for the RHEL8 platform:


RHEL8:

As RHEL8 dropped SCSI support for NVMe  devices. There will be no fallback ASL to claim those disks, if the NVMe-ASL is excluded. Hence NVMe-disks will go into an error state after the exclusion of the NVMe-ASL.
 

RHEL7:

If the new NVMe ASL is excluded on RHEL7 servers, NVMe disks will be claimed under the default SCSI3 JBOD category. This is because SCSI support for NVMe is still available in RHEL7. In that case, NVMe disks will be shown as OTHER_DISKS.

 

AIX & HP-UX


We do not support NVMe devices on AIX and HP-UX platforms.


Veritas Volume Manager (VxVM) is unable to detect NVME devices on AIX
The NVMe devices are not supporting SCSI inquiry requests on AIX.

The generic libvxnvme ASL responsible for detecting and claiming NVMe devices is not available on AIX. As a result the Device Discovery Layer (DDL) is unable to detect NVMe devices on AIX.

 

New ASL changes becomes available with the InfoScale 7.4.3 VRTSaslapm package installation.

Name of the new ASL is: libvxnvme_nonscsi.so

 

Run following command to verify presence of newly added ASL.

 

# vxddladm listsupport | grep libvxnvme_nonscsi.so
libvxnvme_nonscsi.so NVMe                All
 

If NVMe devices are available on the system and the claiming is succesful using the new ASL can be verified using the following command.
 

# vxddladm list devices | grep libvxnvme_nonscsi.so
nvme0n1              -            Online   CLAIMED (libvxnvme_nonscsi.so)

 

Known issue:


On RHEL8 platform Excludearray of nonscsi_nvme.so ASL causes a NVMe disk to go into an error state.
eTrack : 4015783

After the exclusion of libvxnvme_nonscsi.so ASL,  NVMe disks will go into an error state. This is expected, as there is no fallback ASL for NVMe devices on RHEL8. RHEL8 dropped SCSI support for NVMe devices.
 

Workaround is to include the NVMe ASL back and rescan using the "vxdisk scandisk" command:


# vxddladm includearray libname=libvxnvme_nonscsi.so
# vxdisk scandisks


When excluding the ASLs, the NVMe device(s) will be shown in an error state

# vxddladm excludearray all
# vxdisk scandisks

# vxdisk list
DEVICE          TYPE            DISK         GROUP        STATUS
nvme0n1         auto:cdsdisk    -            -            error
sda             auto:LVM        -            -            LVM


 
Once the NVMe ASL has been included the for nonscsi_nvme.so disk(s) will transition from "error" back to the normal "online" state


# vxddladm includearray all
# vxdisk scandisks

# vxdisk list
DEVICE          TYPE            DISK         GROUP        STATUS
nvme0n1         auto:cdsdisk    -            -            online
sda             auto:LVM        -            -            LVM

 

 

Issue/Introduction

NVME: InfoScale 7.4.3 introduces new libvxnvme_nonscsi.so IOCTL based ASL for NVMe devices due to RHEL8 changes