How to identify NVMe M.2 devices?

I have 8 NVMe M.2 devices in 2 external enclosures (NetStor NA622TB3), connected to a Mac mini via TB3. Disk utility gives the same description for all 8 devices; I don't really know which one is which. I have lived with that because I put them all into the same RAID set, so it didn't really matter yet (I suppose it will matter if/when one of the NVMe M.2 devices fails). I'm wondering if there is a way to map those Disk Utility device names to physical devices (such as which thunderbolt port, which device number in the chain, and ideally which NVMe M.2 device within). I'm hoping to expand my SSD storage and think the lack of clear identification of the drives will be problematic going forward.


Mac mini, macOS 10.15

Posted on Jan 20, 2020 5:18 PM

Reply
Question marked as Top-ranking reply

Posted on Feb 6, 2020 7:41 PM

Well I found something useful after all. The Disk Utility has an "Info" button in the top right. I might expect this to provide the same information as "diskutil info -all" you recommended, however it gives more, including the device path I was seeking. This theoretically should let me map the software devices to physical devices by examining the last bridge in the path. Here are the 8 paths for my two enclosures. The longer paths represent the daisy-chained enclosure presumably. Each NVMe M.2 device is on a different PCI bridge, so each one can run at full speed by themselves (but otherwise share the bus of course when multiple devices are accessed simultaneously).




Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@2/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@4/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@3/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@1/pci144d,a808@0/IONVMeController

Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@1/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@2/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@4/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@3/pci144d,a808@0/IONVMeController


Similar questions

7 replies
Question marked as Top-ranking reply

Feb 6, 2020 7:41 PM in response to BDAqua

Well I found something useful after all. The Disk Utility has an "Info" button in the top right. I might expect this to provide the same information as "diskutil info -all" you recommended, however it gives more, including the device path I was seeking. This theoretically should let me map the software devices to physical devices by examining the last bridge in the path. Here are the 8 paths for my two enclosures. The longer paths represent the daisy-chained enclosure presumably. Each NVMe M.2 device is on a different PCI bridge, so each one can run at full speed by themselves (but otherwise share the bus of course when multiple devices are accessed simultaneously).




Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@2/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@4/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@3/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@1/pci144d,a808@0/IONVMeController

Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@1/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@2/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@4/pci144d,a808@0/IONVMeController
Device tree path : IODeviceTree:/PCI0@0/PEG1@1,1/UPSB@0/DSB1@1/UPS0@0/pci-bridge@4/pci-bridge@0/pci-bridge@4/pci-bridge@0/pci-bridge@1/pci-bridge@0/pci-bridge@3/pci144d,a808@0/IONVMeController


Jan 20, 2020 7:10 PM in response to BDAqua

diskutil list is perhaps even less helpful, as even the Samsung SSD 970 EVO Plus 2TB identification is not given (refer to additional text).


System Report is also not providing the information I seek. Under PCI, I can see the NVM controllers, but can't map them to a device name within Disk Utility. Under NVMExpress, I do see the BSD disk name assigned to each device, but it still unclear to me which device is which! Under Storage, I do not see the individual devices. Instead, I see the RAID set to which they belong. Finally, under Thunderbolt, I only see the enclosures themselves (devices on the Thunderbolt chain), and not the individual NVMe M.2 devices within (nor their disk names obviously). So I'm still hoping there is something secret I just don't know about!






Jan 21, 2020 11:23 AM in response to BDAqua

No, no additional information is available. Here is one of the devices:


   Device Identifier:         disk0
   Device Node:               /dev/disk0
   Whole:                     Yes
   Part of Whole:             disk0
   Device / Media Name:       Samsung SSD 970 EVO Plus 2TB

   Volume Name:               Not applicable (no file system)
   Mounted:                   Not applicable (no file system)
   File System:               None

   Content (IOContent):       GUID_partition_scheme
   OS Can Be Installed:       No
   Media Type:                Generic
   Protocol:                  PCI-Express
   SMART Status:              Verified

   Disk Size:                 2.0 TB (2000398934016 Bytes) (exactly 3907029168 512-Byte-Units)
   Device Block Size:         512 Bytes

   Read-Only Media:           No
   Read-Only Volume:          Not applicable (no file system)

   Device Location:           External
   Removable Media:           Fixed

   Solid State:               Yes
   Virtual:                   No
   Hardware AES Support:      No

**********


I was hoping there was something akin to linux sysfs where I could have a path to identify a particular device, in this case it would be something like thunderbolt bus, position in the thunderbolt chain, path to PCI device, etc. The vendor (NetStor) has suggested naming the volumes explicitly, which implies adding devices one at a time to know which device is which. That works (albeit a bit painful in the beginning) if I treat them all as individual volumes, but I think I lose those volume names as soon as I put them into a RAID set.


This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

How to identify NVMe M.2 devices?

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.