Logical Device Names
The final stage of the autoconfiguration process involves the creation of the logical device name to reflect the new set of devices on the system. Both SPARC and x86 systems use logical device names, but they differ slightly on each platform. To see a list of logical device names for the disks connected to a SPARC system, execute a long listing on the /dev/dsk directory as follows:
# ls -l /dev/dsk<cr> total 96 lrwxrwxrwx 1 root root 54 Jan 21 07:59 c1t0d0s0 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:a lrwxrwxrwx 1 root root 54 Jan 21 07:59 c1t0d0s1 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:b lrwxrwxrwx 1 root root 54 Jan 21 07:59 c1t0d0s2 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:c lrwxrwxrwx 1 root root 54 Jan 21 07:59 c1t0d0s3 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:d ... <output has been truncated> ...
On the second line of output from the ls -l command, notice that the logical device name c1t0d0s0 is linked to the physical device name, as shown in the following:
../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:a
On SPARC systems, you’ll see an eight-string logical device name (c#t#d#s#) for each disk slice that contains the following:
- Controller number (c#): Identifies the host bus adapter, which controls communications between the system and disk unit. The controller number is assigned in sequential order, such as c0, c1, c2, and so on.
- Target number (t#): Target numbers, such as t0, t1, t2, and t3 correspond to a unique hardware address that is assigned to each disk, tape, or DVD-ROM. Some external disk drives have an address switch located on the rear panel. Some internal disks have address pins that are jumpered to assign that disk’s target number.
- Disk number (d#): The disk number is also known as the logical unit number (LUN). This number reflects the number of disks at the target location. The disk number is always set to 0 on embedded SCSI controllers.
- Slice number (s#): A slice number ranging from 0 to 7.
On the x86 platform, IDE and SATA disk drives do not use target controllers. Device names of these types of disks represent the controller (c3), disk (d#), and slice (s#). Because IDE disks do not use target controllers, these disks use a t# value to represent the identity of the disks on its primary and secondary IDE buses. Target values on these systems are as follows:
- t0: Master device on the primary IDE bus
- t1: Slave device on the primary IDE bus
- t2: Master device on the secondary IDE bus
- t3: Slave device on the secondary IDE bus
The following is an example of IDE disks on an x86-based server:
# ls -l /dev/dsk<cr> total 48 lrwxrwxrwx 1 root root 45 Jan 23 18:11 c0t0d0s0 -> ../../devices/pci@1f,0/pci@1,1/ide@d/sd@0,0:a lrwxrwxrwx 1 root root 45 Jan 23 18:11 c0t0d0s1 -> ../../devices/pci@1f,0/pci@1,1/ide@d/sd@0,0:b lrwxrwxrwx 1 root root 44 Jan 23 18:11 c1t1d0s0 -> ../../devices/pci@1f,0/pci@1/scsi@8/sd@1,0:a lrwxrwxrwx 1 root root 44 Jan 23 18:11 c1t1d0s1 -> ../../devices/pci@1f,0/pci@1/scsi@8/sd@1,0:b
x86-based Oracle Solaris systems have a different disk-naming convention, but before describing the logical device name for a disk on an x86-based system, it’s worth pointing out a fundamental difference between disk slicing on a SPARC system and disk slicing on an x86-based system. Disk partitioning on Oracle Solaris for the x86 platform has one more level than that of Oracle Solaris for SPARC. On Oracle Solaris for SPARC, slices and partitions are one and the same; on Oracle Solaris for x86, slices are “subpartitions” of a fixed disk (fdisk) partition table. This was done to allow Oracle Solaris to coexist with other x86-based OSs, such as for dual-boot configurations.
This difference in slicing brings some differences in the naming of disk devices on an x86-based system. Slices are created in the first partition on a drive and, for SCSI disks, are named the same as with Oracle Solaris for SPARC (c#t#d0s#). However, because slices are within an fdisk partition table, the x86 partitions have their own device names. The entire drive is named c#t#d0p0, and the fdisk partitions (maximum of 4) are c#t#d0p1 through c#t#d0p4. To support the x86 environment, the format utility also has an added command called fdisk to deal with the fdisk partitions.
Oracle Solaris x86-based systems have 16 slices (numbered 0-15) versus 8 for SPARC. On the x86 system, slice 8 is used to hold boot code and contains the GRUB stage1 program in sector 0, the disk label, the VTOC in sectors 1 and 2, and GRUB stage2 program beginning at sector 50. GRUB is described in Chapter 3. Slice 8 also occupies the first cylinder (cylinder 0) of the fdisk partition.
On IDE and SATA disk drives, slice 9 is used for alternate sectors and contains blocks used to store bad block information. Higher slices are available for use but are not supported by format at this time, and the format utility will only allow you to modify slices 0–7. The major differences between the logical device names used on SPARC-based systems versus x86-based systems are as follows:
- c is the controller number.
- t is the SCSI target number.
- s is the slice number ranging from 0 to 15.
- p represents the fdisk partition (not slice partition). This number ranges from p0 to p4. p0 represents the entire disk.
- d is the LUN or IDE drive number.
If an IDE drive is used, d is used to determine MASTER or SLAVE, and the t is not used for IDE drives. For example, two controllers are installed on an x86 PC:
- c0 is an IDE controller.
- c1 is a SCSI controller.
On an x86-based system, the following devices are listed in the /dev/dsk directory for a SATA disk, target 0:
c1t0d0p0 c1t0d0s1 c1t0d0s15 c1t0d0s7 c1t0d0p1 c1t0d0s10 c1t0d0s2 c1t0d0s8 c1t0d0p2 c1t0d0s11 c1t0d0s3 c1t0d0s9 c1t0d0p3 c1t0d0s12 c1t0d0s4 c1t0d0p4 c1t0d0s13 c1t0d0s5 c1t0d0s0 c1t0d0s14 c1t0d0s6
Examples of logical device names are the following:
- c1t0d0s0: A SCSI, SAS, or SATA disk device name that specifies controller 1, target 0, disk 0, and slice 0
- c1d0p0: An IDE disk name on an x86-based system that specifies controller 1, disk 0, and fdisk partition 0
- c1d0s0: An IDE disk name that specifies controller 1, disk 0, and slice 0
- c2t11d0p0: A SCSI, SAS, or SATA disk device name on an x86 system that specifies controller 2, target 11, disk 0, and fdisk partition 0
- c2t11d0s0: A SCSI, SAS, or SATA disk device name that specifies controller 2, target 11, disk 0, and slice 0
- c3t266000C0FFF7C140d31s2: A Fibre Channel attached LUN name that specifies controller 3, WWN 266000C0FFF7C140, LUN 31, and slice 2
On both SPARC-based and x86-based systems, the logical device name is the name that the system administrator uses to refer to a particular device when running various file system commands.
For example, if running the mount command, use the logical device name /dev/dsk/c0t0d0s7 to mount the file system /home:
# mount /dev/dsk/c0t0d0s7 /home<cr>
Logical device files in the /dev directory are symbolically linked to physical device files in the /devices directory. Logical device names are used to access disk devices if you do any of the following:
- Add a new disk to the system.
- Move a disk from one system to another.
- Access (or mount) a file system residing on a local disk.
- Back up a local file system.
- Repair a file system.
Logical devices are organized in subdirectories under the /dev directory by their device types, as shown in Table 4-2.
Table 4-2 Device Directories
Directory |
Description of Contents |
/dev/dsk |
Block interface to disk devices |
/dev/rdsk |
Raw or character interface to disk devices |
/dev/rmt |
Tape devices |
/dev/term |
Serial line devices |
/dev/cua |
Dial-out modems |
/dev/pts |
Pseudo terminals |
/dev/fbs |
Frame buffers |
/dev/sad |
STREAMS administrative driver |
/dev/md |
Metadevices managed by Oracle Solaris Volume Manager (SVM) |
Block and Raw Devices
Disk drives have an entry under both the /dev/dsk and /dev/rdsk directories. The /dsk directory refers to the block or buffered device file, and the /rdsk directory refers to the character or raw device file. The “r” in rdsk stands for “raw.” You may even hear these devices referred to as “cooked” and “uncooked” devices.
The /dev/dsk directory contains the disk entries for the block device nodes in /devices, as shown in the following command output:
# ls -l /dev/dsk<cr> total 96 lrwxrwxrwx 1 root root 54 Jan 21 07:59 c1t0d0s0 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:a lrwxrwxrwx 1 root root 54 Jan 21 07:59 c1t0d0s1 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:b lrwxrwxrwx 1 root root 54 Jan 21 07:59 c1t0d0s2 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:c lrwxrwxrwx 1 root root 54 Jan 21 07:59 c1t0d0s3 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:d ... <Output has been truncated> ...
The /dev/rdsk directory contains the disk entries for the character device nodes in /devices, as shown in the following command:
# ls –l /dev/rdsk<cr> total 96 lrwxrwxrwx 1 root root 58 Jan 21 07:59 c1t0d0s0 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:a,raw lrwxrwxrwx 1 root root 58 Jan 21 07:59 c1t0d0s1 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:b,raw lrwxrwxrwx 1 root root 58 Jan 21 07:59 c1t0d0s2 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:c,raw lrwxrwxrwx 1 root root 58 Jan 21 07:59 c1t0d0s3 -> ../../devices/pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0:d,raw ... <Output has been truncated> ...