In
computer storage, a
logical unit number or
LUN is simply the number assigned to a logical unit. A logical unit is a
SCSI protocol entity, the only one which may be addressed by the actual
input/output (I/O) operations. Each
SCSI target provides one or more logical units, and does not perform I/O as itself, but only on behalf of a specific logical unit.
Examples
To provide a practical example, a typical
disk array has multiple physical SCSI ports, each with one SCSI target address assigned. Then the disk array is formatted as a
RAID and then this RAID is partitioned into several separate storage volumes. To represent each volume, a SCSI target is configured to provide a LUN. Each SCSI target may provide multiple LUNs and thus represent multiple volumes, which does
not mean that those volumes are
concatenated.
Another example is a single disk drive with one physical SCSI port. It usually provides just a single target, which in turn usually provides just a single LUN numbered zero. This LUN represents the entire storage of the disk drive.
Other protocols
LUN term is applicable not only to traditional
parallel SCSI, but also to its descendants, like
Fibre Channel Protocol (FCP),
iSCSI,
HyperSCSI, and others.
cXtXdXsX nomenclature in Unix
From the computer perspective, SCSI LUN is only a part of full SCSI address. The full device's address is made from the:
- controller ID of the host bus adapter,
- target ID identifying the SCSI target on that bus,
- disk ID identifying a LUN on that target,
- an optional (and largely obsolete) slice ID identifying a specific slice on that disk.
In the Unix family of operating systems, these IDs are often combined into a single "name". For example, /dev/dsk/c1t2d3s4 would refer to controller 1, target 2, disk 3, slice 4. Presently Solaris, HP-UX, NCR, and others continue to use "cXtXdXsX" nomenclature, while AIX has abandoned it in favor of more familiar names.
Other uses
The term
logical unit number also applies to a file access channel within certain
programming languages. For example in
FORTRAN, the WRITE statement has a form which identifies the LUN of the target file and the FORMAT of the data to be written as in WRITE(5,32) where 5 is the LUN of the file and 32 is the FORMAT statement for the write.
See also