HomeResourcesField Guides › NetApp LUN Serial in VMware

Field Guide · Storage Operations

How to Identify a NetApp LUN Serial Number in VMware vCenter and ESXi

When a VMware environment runs on NetApp ONTAP block storage, sooner or later somebody needs to point at a datastore and say, with certainty, which LUN that is — during a migration, a performance investigation, a DR planning exercise, or a reclamation sweep where guessing wrong deletes production. VMware never shows the NetApp serial number directly; it shows an NAA identifier. The good news that this guide is built on: the NAA identifier contains the serial number — hex-encoded, in plain sight — and once you can read it, every correlation question collapses into a one-line decode. The workflow this guide teaches runs storage-first: inventory the serials on the NetApp, then match VMware’s identifiers against that table.

Who this is for: VMware administrators · storage administrators · SAN engineers · anyone reconciling datastores against ONTAP LUNs

Applies to: ONTAP 9.x (and 7-mode, noted where it differs) · vSphere 7.x/8.x · FC, iSCSI and FCoE LUNs · Reviewed by WUC Storage Infrastructure Engineering · Last validated: 2026-07-21

FocusDatastore/RDM ↔ ONTAP LUN correlation
Key factNAA = 600a0980 + hex(serial)
ToolsvCenter UI · esxcli · PowerCLI · ONTAP CLI
RiskEverything here is read-only
Read time12 min

!!Safety model — read-only, but the stakes are not

Every command in this guide is read-only. The danger is what happens after a wrong answer. Two LUNs of the same size with similar names are indistinguishable in most views — and "unmap the old datastore's LUN" executed against the wrong one is an instant, cluster-wide outage. The serial number is the only identifier that is unique, stable across reboots and rescans, and identical on both the VMware and NetApp sides. Correlate by serial, never by size, never by name, never by LUN ID — and confirm the match in both directions before any destructive change order is written against it.
BadgeMeaning
Read-onlyInspects and lists. Every command on this page. Safe in production, any time.
DisruptiveNot used in this guide — but the change orders this guide feeds (unmap, resize, move) are, which is why the correlation must be right.

ENVReference environment

The worked example runs in the Boston environment used across this guide series: vCenter bos-vc-01 managing hosts esx-01 and esx-02, attached over dual FC fabrics to a NetApp AFF pair (aff-01a/aff-01b) running ONTAP 9.x. The SVM svm-vmware serves two LUNs: /vol/vmw_ds01/lun0 backing the VMFS datastore BOS-DS01 (serial 80NXq+ZvKmVf), and /vol/vmw_rdm01/lun0 presented to a database VM as an RDM (serial 80NXq+ZvKmVg) — deliberately one character apart, because that is exactly the near-miss the serial method has to distinguish and the size-and-name method cannot.

01Anatomy of a NetApp NAA identifier

ONTAP gives every LUN a 12-character ASCII serial number at creation. When VMware sees that LUN, it builds a Network Address Authority identifier from the SCSI Inquiry VPD page 83 data — and for NetApp ONTAP LUNs that identifier has a fixed, decodable structure:

One identifier, two names — the NAA decodes to the serial naa. 6 00a098 0 38304e58712b5a764b6d5666 NAA type 6: IEEE Registered Extended 00a098 = NetApp OUI (vendor fingerprint) 24 hex chars = ASCII hex of the 12-char serial: 38 30 4e 58 71 2b 5a 76 4b 6d 56 66 8 0 N X q + Z v K m V f → serial 80NXq+ZvKmVf All serials and identifiers on this page are synthetic reference values.
The full identifier for datastore BOS-DS01's LUN: naa.600a098038304e58712b5a764b6d5666. Strip naa.600a0980, read the remaining 24 hex characters as ASCII, and the ONTAP serial falls out. The encoding is exact and lossless in both directions — no lookup table, no vendor plugin required.
Which prefix you will see. Modern clustered ONTAP LUNs carry naa.600a0980…. Older 7-mode systems present naa.60a98000… — same NetApp OUI (00a098) packed differently, and the hex-encoded serial follows the prefix in exactly the same way. A 7-mode worked example: naa.60a9800057322d6a5a71437267307358 → drop naa.60a9800057322d6a5a71437267307358 → decodes to serial W2-jZqCrg0sX. Anything that does not start with one of these prefixes is not an ONTAP LUN: NetApp E-Series presents naa.60080e5… (a different acquired-product OUI), and other vendors have their own — the prefix is your fastest "is this even the right array?" check.

02Start on the NetApp: inventory the LUNs and their serials

The cleanest correlation workflow starts on the storage side, not in vCenter — ONTAP is the source of truth for what exists, and one command gives you every LUN with its serial already in the hex form the NAA uses. Build this table first; every VMware identifier you meet afterwards is a lookup against it.

Option 1 — every LUN with its serial hex (recommended) Read-only

The one command to run before anything else. The serial-hex column is, character for character, what follows the NetApp prefix in each LUN’s NAA identifier — no decoding required to match.

Command — ONTAP CLI (cluster shell)
lun show -fields serial-hex
Output
vserver    path                  serial-hex
---------- --------------------- ------------------------
svm-vmware /vol/vmw_ds01/lun0    38304e58712b5a764b6d5666
svm-vmware /vol/vmw_ds02/lun0    38304e58712b5a764b6d5668
svm-vmware /vol/vmw_rdm01/lun0   38304e58712b5a764b6d5667
3 entries were displayed.

The extended inventory — path, size, type, mapping state Read-only

The same list with the columns that matter during a migration or reclamation: how big each LUN is, what OS type it was created for, and — critically — whether it is actually mapped to anything. An unmapped LUN with a familiar name is a reclamation candidate; a mapped one is somebody’s datastore.

Command
lun show -fields path,serial-hex,size,ostype,mapped
Output
vserver    path                  size  ostype   mapped  serial-hex
---------- --------------------- ----- -------- ------- ------------------------
svm-vmware /vol/vmw_ds01/lun0    4TB   vmware   mapped  38304e58712b5a764b6d5666
svm-vmware /vol/vmw_ds02/lun0    4TB   vmware   mapped  38304e58712b5a764b6d5668
svm-vmware /vol/vmw_rdm01/lun0   2TB   vmware   mapped  38304e58712b5a764b6d5667
3 entries were displayed.

One LUN, everything — the -instance record Read-only

When a single LUN is the subject of the investigation, -instance prints its full record — serial in both forms, state, size, and the attributes that explain surprises. This is the record to paste into a ticket.

Command
lun show -vserver svm-vmware -path /vol/vmw_rdm01/lun0 -instance
Output
              Vserver Name: svm-vmware
                  LUN Path: /vol/vmw_rdm01/lun0
               Volume Name: vmw_rdm01
                   OS Type: vmware
                 LUN Size: 2TB
                     State: online
             Serial Number: 80NXq+ZvKmVg
       Serial Number (Hex): 38304e58712b5a764b6d5667
                    Mapped: mapped
              Space Reserved: disabled
      Space Allocation (SCSI UNMAP): enabled
Discovering what else you can ask for. lun show -fields ? prints every available field name — the menu for building your own inventory views (note the field names are the compact forms: ostype, not the “OS Type” display label) — and lun show -instance with no path dumps the full record for every LUN, which piped to a file is a serviceable point-in-time export of the estate. Both are read-only, like everything else on this page.

03Finding the NAA in the vCenter UI

The direct method, step by step Read-only

If you learn one sequence from this page, learn this one — it needs nothing installed and works from any vSphere Client session:

  1. Log into the vSphere Client.
  2. Select the ESXi host and open the Configure tab.
  3. Under Storage, click Storage Devices.
  4. Locate the NetApp device and read its Identifier — e.g. naa.60a9800057322d6a5a71437267307358 on a 7-mode system, or naa.600a098038304e58712b5a764b6d5666 on clustered ONTAP.
  5. Drop the NetApp prefixnaa.60a98000 or naa.600a0980, whichever the device carries.
  6. Convert the remaining 24 hex characters to ASCII. Use the decoder on this page — it runs entirely in your browser, transmits nothing, and works out the direction automatically — or the shell one-liners in section 06. Your storage identifiers do not belong in a random website's input box; this page never sends them anywhere. The result — W2-jZqCrg0sX or 80NXq+ZvKmVf in these examples — is the 12-character LUN serial exactly as ONTAP displays it.

For a VMFS datastore Read-only

Select the datastore → ConfigureGeneral, and read the Device Backing panel: the extent's device name is the NAA identifier. Equivalent path: Configure → Device Backing directly on older vSphere Client versions. For BOS-DS01 this shows naa.600a098038304e58712b5a764b6d5666.

For any storage device on a host Read-only

Select a host → ConfigureStorage Devices. Every LUN the host sees is listed by NAA name with capacity, transport and multipathing detail — the column view where the two near-identical LUNs in this environment finally look different (…5666 vs …5667). The Paths tab under the same view also tells you which target ports serve it, which is your fabric-side cross-check.

For an RDM Read-only

Select the VM → Edit Settings → expand the RDM hard disk: the Physical LUN field shows the backing device's NAA identifier. RDMs are precisely where this guide earns its keep — they are invisible in datastore views, routinely undocumented, and the first surprise of every migration.

Why VMware "hides" the serial. It does not, quite — vCenter simply standardises on the SCSI-standard NAA identifier rather than each vendor's serial format. The serial is inside the NAA for any array that builds its identifiers this way; NetApp's happens to be a clean ASCII encoding you can read back out.

04Finding it from the ESXi CLI

Datastore → device Read-only

The extent list maps every VMFS datastore to its backing device in one table — the fastest bulk answer on a single host.

Command
esxcli storage vmfs extent list
Output
Volume Name  VMFS UUID                            Extent Number  Device Name                           Partition
-----------  -----------------------------------  -------------  ------------------------------------  ---------
BOS-DS01     681f2c4e-8a31d970-55aa-3cecef1a2b30              0  naa.600a098038304e58712b5a764b6d5666          1
BOS-DS02     681f2d11-42b8ee01-9c02-3cecef1a2b30              0  naa.600a098038304e58712b5a764b6d5668          1

Device detail — vendor confirmation Read-only

Given an NAA, the device record confirms you are looking at a NetApp LUN before you decode anything — read the Vendor line.

Command
esxcli storage core device list -d naa.600a098038304e58712b5a764b6d5666
Output
naa.600a098038304e58712b5a764b6d5666
   Display Name: NETAPP Fibre Channel Disk (naa.600a098038304e58712b5a764b6d5666)
   Size: 4194304
   Device Type: Direct-Access
   Vendor: NETAPP
   Model: LUN C-Mode
   Is Local: false
   Is SSD: true
   Other UIDs: vml.02000000006...

The quick filter — NetApp devices and their identifiers Read-only

Grepping the full device list down to the lines that matter turns a wall of output into a scannable table of every device and its NAA — with the ONTAP inventory from section 02 beside it, the matching is visual.

Command
esxcli storage core device list | grep -E "Display Name|Serial Number|naa"
Output
naa.600a098038304e58712b5a764b6d5666
   Display Name: NETAPP Fibre Channel Disk (naa.600a098038304e58712b5a764b6d5666)
naa.600a098038304e58712b5a764b6d5668
   Display Name: NETAPP Fibre Channel Disk (naa.600a098038304e58712b5a764b6d5668)
naa.600a098038304e58712b5a764b6d5667
   Display Name: NETAPP Fibre Channel Disk (naa.600a098038304e58712b5a764b6d5667)
About the Serial Number pattern in that grep. Whether a distinct Serial Number: line appears in the device list varies by ESXi release and device type (NVMe devices print one; classic SCSI LUNs on many builds do not). Keeping it in the grep costs nothing and catches it where present — and where it is absent, nothing is lost: for an ONTAP LUN the NAA line is the serial, hex-encoded after the prefix.

Everything at once Read-only

The compact mapping of VMFS volumes to devices, one line each — the classic esxcfg form many operators still reach for first.

Command
esxcfg-scsidevs -m

05PowerCLI — the whole estate at once

Every datastore, with its NAA and decoded serial Read-only

One pipeline against vCenter answers the question for every VMFS datastore in the inventory — and decodes the serial inline, so the output is already in NetApp's language.

Command — PowerCLI, connected to bos-vc-01
Get-Datastore | Where-Object {$_.Type -eq "VMFS"} | Select-Object Name, @{N="NAA";E={$_.ExtensionData.Info.Vmfs.Extent[0].DiskName}}, @{N="NetAppSerial";E={$naa=$_.ExtensionData.Info.Vmfs.Extent[0].DiskName; if($naa -match "^naa\.600a0980(.+)$"){ -join (($Matches[1] -split "(..)" | Where-Object {$_}) | ForEach-Object {[char][convert]::ToInt32($_,16)}) } else {"(not ONTAP c-mode)"}}} | Format-Table -AutoSize
Output
Name      NAA                                   NetAppSerial
----      ---                                   ------------
BOS-DS01  naa.600a098038304e58712b5a764b6d5666  80NXq+ZvKmVf
BOS-DS02  naa.600a098038304e58712b5a764b6d5668  80NXq+ZvKmVh

Every RDM in the inventory Read-only

The RDM sweep migrations always forget — every raw mapping, its VM, and its backing NAA.

Command
Get-VM | Get-HardDisk -DiskType "RawPhysical","RawVirtual" | Select-Object Parent, Name, DiskType, ScsiCanonicalName, CapacityGB | Format-Table -AutoSize
Output
Parent      Name         DiskType     ScsiCanonicalName                     CapacityGB
------      ----         --------     -----------------                     ----------
bos-sql-01  Hard disk 2  RawPhysical  naa.600a098038304e58712b5a764b6d5667       2,048

06Decoding NAA ↔ serial, both directions

Decode it right here Read-only

Paste anything below — a full NAA identifier, the bare 24 hex characters, or a 12-character serial — and the decoder works out the direction. It runs entirely in your browser: nothing you type is transmitted, logged, or stored anywhere.

Client-side only — this page makes no network request with your input. Try the worked example: naa.600a098038304e58712b5a764b6d5666

NAA → serial Read-only

Strip naa.600a0980, hex-decode the remainder. Three one-liners, pick your shell:

Command — bash (ESXi shell or any Linux)
echo 38304e58712b5a764b6d5666 | xxd -r -p; echo
Command — PowerShell
-join (("38304e58712b5a764b6d5666" -split "(..)" | Where-Object {$_}) | ForEach-Object {[char][convert]::ToInt32($_,16)})
Command — python
python3 -c "print(bytes.fromhex('38304e58712b5a764b6d5666').decode())"
Output — all three
80NXq+ZvKmVf

Serial → NAA Read-only

The reverse direction — you hold an ONTAP serial and need the identifier to search for in vCenter:

Command — python
python3 -c "print('naa.600a0980' + '80NXq+ZvKmVf'.encode().hex())"
Command — PowerShell
"naa.600a0980" + -join ("80NXq+ZvKmVf".ToCharArray() | ForEach-Object {"{0:x2}" -f [int]$_})
Output — both
naa.600a098038304e58712b5a764b6d5666
Serials are case-sensitive and character-exact. ONTAP serials mix cases and use characters like +, - and /; the hex encoding preserves them exactly (2b is the + above). When comparing by eye, one character is the difference between two LUNs — which is why the decode belongs in a command, not in your head.

07Closing the loop on ONTAP

ONTAP will meet you halfway — it can display each LUN's serial already hex-encoded, which turns the correlation into a literal string match against the NAA tail. This is the cleanest verification available and the reason no decoding is strictly required at all:

Command — ONTAP CLI (cluster shell)
lun show -vserver svm-vmware -fields serial,serial-hex
Output
vserver    path                  serial       serial-hex
---------- --------------------- ------------ ------------------------
svm-vmware /vol/vmw_ds01/lun0    80NXq+ZvKmVf 38304e58712b5a764b6d5666
svm-vmware /vol/vmw_rdm01/lun0   80NXq+ZvKmVg 38304e58712b5a764b6d5667
2 entries were displayed.

Reverse lookup — NAA tail in hand Read-only

Paste the 24 hex characters from the NAA straight into a filtered query — the answer is the LUN path, volume and SVM in one line:

Command
lun show -serial-hex 38304e58712b5a764b6d5666
Output
Vserver   Path                 State   Mapped   Type     Size
--------- -------------------- ------- -------- -------- --------
svm-vmware /vol/vmw_ds01/lun0  online  mapped   vmware   4TB

In System Manager: Storage → LUNs → select the LUN — the serial number is on the details pane. And for the mapping sanity check, lun mapping show -vserver svm-vmware confirms which igroup (and therefore which ESXi initiators) the LUN is presented to — the final "this LUN, these hosts" confirmation before any change order.

08Worked example, end to end

The reclamation scenario that motivates all of this: BOS-DS01 is being evacuated and its LUN unmapped, and the change order must name the LUN beyond any doubt.

# 1. vCenter: BOS-DS01 > Configure > General > Device Backing
#    naa.600a098038304e58712b5a764b6d5666

# 2. ESXi cross-check (either host):
[root@esx-01:~] esxcli storage vmfs extent list | grep BOS-DS01
BOS-DS01  681f2c4e-...  0  naa.600a098038304e58712b5a764b6d5666  1

# 3. ONTAP: match the NAA tail directly
aff-01::> lun show -serial-hex 38304e58712b5a764b6d5666
svm-vmware /vol/vmw_ds01/lun0  online  mapped  vmware  4TB

# 4. Confirm presentation (which hosts see it)
aff-01::> lun mapping show -vserver svm-vmware -path /vol/vmw_ds01/lun0
svm-vmware /vol/vmw_ds01/lun0  ig-bos-esx  LUN-ID 0

# 5. The change order now reads:
#    "Unmap /vol/vmw_ds01/lun0 (serial 80NXq+ZvKmVf,
#     naa.600a098038304e58712b5a764b6d5666) from igroup ig-bos-esx"
#    -- three independent identifiers, one LUN, zero ambiguity.
Note what step 5 did. The change order carries the LUN path, the serial, and the NAA — so whoever executes it can re-verify on whichever side of the stack they stand. That redundancy costs one line of writing and eliminates the entire class of wrong-LUN incidents.

RBRunbook · condensed correlation sequence

  1. Build the ONTAP inventory firstlun show -fields serial-hex (add path,size,ostype,mapped for the working view). This is the table every VMware identifier gets matched against.
  2. Get the NAA — datastore: Configure → Device Backing (or esxcli storage vmfs extent list); RDM: VM → Edit Settings → Physical LUN (or the PowerCLI RDM sweep).
  3. Confirm the vendor prefixnaa.600a0980 (clustered ONTAP) or naa.60a98000 (7-mode). Anything else: stop, different array.
  4. Take the 24 hex characters after the prefix — that is the serial, hex-encoded.
  5. Match on ONTAPlun show -serial-hex <24-hex> → path, volume, SVM. Or decode to ASCII and match lun show -serial.
  6. Confirm the mappinglun mapping show → igroup → the hosts you expect.
  7. Write all three identifiers into the change order — path, serial, NAA.

Reconciling a VMware estate against its storage?

WUC engineers deliver datastore-to-LUN reconciliation as part of storage migrations, reclamation sweeps, and DR validation on NetApp estates inside and outside OEM support.

Talk to engineering →

FAQFrequently asked questions

Q01Why doesn't vCenter just show the NetApp serial?

vCenter standardises on the SCSI NAA identifier from VPD page 83 rather than parsing each vendor's serial convention. NetApp's identifiers happen to embed the serial losslessly, so nothing is hidden — it is just wearing hex.

Q02My NAA starts with 60a98000, not 600a0980 — is the method different?

Same method, older array: 60a98000 is the 7-mode-era packing of the same NetApp OUI. Strip that prefix instead and hex-decode what follows. The two prefixes are also a quick visual cue for which generation of system a device came from.

Q03Does this work for iSCSI LUNs, or only FC?

Both, and FCoE too — the NAA identifier comes from the SCSI inquiry data, not the transport. An ONTAP LUN presents the same NAA over any block protocol it is mapped through.

Q04What about NVMe namespaces (NVMe/FC, NVMe/TCP)?

Different identity scheme: NVMe namespaces are identified by NGUID/UUID, not NAA, and ESXi shows them as eui. or uuid. devices. The correlation is done with vserver nvme namespace show against the namespace UUID instead — the serial-in-hex trick on this page is a SCSI LUN behaviour.

Q05Are ONTAP LUN serials globally unique?

Unique within the cluster, and in practice the 12-character space plus the NAA's embedded vendor OUI makes collisions across your estate a non-concern. If two clusters in your environment ever presented the same serial (a cloned config restored somewhere it should not be), the igroup mapping check in section 07 is what catches it.

Q06Does a vVols environment need this?

Mostly no — vVols does away with the one-datastore-one-LUN model, and correlation runs through the VASA provider (ONTAP tools) instead. Where you will still meet NAA correlation in a vVols shop: the protocol endpoints themselves, and any remaining classic VMFS or RDM devices — of which migrations always find a few.

Q07The serial decodes to gibberish — what went wrong?

Almost always one of three things: you decoded a non-NetApp device (check the prefix); you included the 0 pad or dropped a hex digit when stripping the prefix (the tail must be exactly 24 hex characters); or the device is an NVMe namespace wearing a different identity format entirely. Re-check the prefix, re-count the characters.

Q08Can ONTAP tools for VMware do this for me?

Yes — NetApp's ONTAP tools vCenter plugin surfaces LUN and volume detail directly in the vSphere Client, and in an estate with it deployed, that is the convenient path. This guide exists because the plugin is frequently absent, broken, or version-stranded exactly when you need the answer — the NAA method needs nothing installed anywhere.

RFReferences

  1. NetApp ONTAP CLI — lun show (serial and serial-hex fields)
  2. NetApp Knowledge Base — LUN serial to NAA/device identifier correlation articles
  3. VMware KB 1014953 — Identifying disks when working with VMware ESXi
  4. VMware PowerCLI — documentation and download
  5. vmninja — Matching NetApp LUN serials to VMware NAA identifiers (community walk-through of this method)
  6. Video walk-through — identifying a NetApp LUN serial from the vSphere Client (community)

From the same practice

WE

About WUC Engineering

Storage engineers at WUC Technologies operate NetApp ONTAP estates alongside VMware infrastructure — FAS, AFF and legacy 7-mode systems — under post-OEM storage maintenance engagements across enterprise data centers.

How many of your datastores could you name the LUN for, right now?

Most VMware estates we assess cannot produce a current datastore-to-LUN map — and discover their undocumented RDMs mid-migration. WUC engineers deliver storage reconciliation as a deliverable: the full correlation table, the orphaned-LUN list, and the RDM inventory nobody knew they had.

  • Datastore / RDM to LUN correlation across the estate
  • Orphaned and unmapped LUN identification before reclamation
  • Migration and DR planning built on verified identifiers
  • NetApp estates inside and outside OEM support
e.g. Cisco, Dell, NetApp - and when your next contract renews.

Prefer to talk it through first? Book a technical consultation → · View managed services

All hostnames, domains, users, paths, serial numbers and IP addresses in this guide are synthetic reference values. No customer environment is depicted. NetApp and ONTAP are trademarks of NetApp, Inc.; VMware, vSphere and vCenter are trademarks of Broadcom. WUC Technologies is not affiliated with these vendors.

Get a Custom Solution