|Skip Navigation Links|
|Exit Print View|
|System Administration Guide: Devices and File Systems Oracle Solaris 10 1/13 Information Library|
The following sections provide overview information about features that manage devices in Oracle Solaris:
For information about accessing devices, see Accessing Devices.
You can use the device detection tool to identify whether your x86 hardware is supported in this Oracle Solaris release. For more information, go to http://www.oracle.com/webfolder/technetwork/hcl/hcts/device_detect.jsp.
A computer typically uses a wide range of peripheral devices and mass-storage devices. Your system, for example, probably has a disk drive, a keyboard and a mouse, and some kind of DVD writer.
Other commonly used devices include the following:
Printers and plotters
The Oracle Solaris software does not directly communicate with all of these devices. Each type of device requires different data formats, protocols, and transmission rates.
A device driver is a low-level program that enables the operating system to communicate with a specific piece of hardware. The driver serves as the operating system's “interpreter” for that piece of hardware.
The kernel consists of a small generic core with a platform-specific component and a set of modules. The kernel is configured automatically in the Oracle Solaris release.
A kernel module is a software component that is used to perform a specific task on the system. An example of a loadable kernel module is a device driver that is loaded when the device is accessed.
The kernel modules are described in the following table.
Table 3-2 Description of Solaris Kernel Modules
The system determines what devices are attached to it at boot time. Then, the kernel configures itself dynamically, loading needed modules into memory. At this time, device drivers are loaded when devices, such as disk devices and tape devices, are accessed. This process is called autoconfiguration because all kernel modules are loaded automatically when they are needed.
You can customize the way in which kernel modules are loaded by modifying the /etc/system file. For instructions on modifying this file, see system(4).
The benefits of autoconfiguration are as follows:
Main memory is used more efficiently because modules are loaded when needed.
There is no need to reconfigure the kernel when new devices are added to the system.
Drivers can be loaded and tested without having to rebuild the kernel.
Autoconfiguration is used when you add a new device (and driver) to the system. In previous releases, it was necessary to perform a reconfiguration boot if you added a device to a system that is shutdown. Device configuration enhancements make a reconfiguration boot unnecessary when a device is added to a system that is shutdown.
You can add, remove, or replace devices in the Oracle Solaris OS while the system is still running, if the system components support hot-plugging. For information about hot-plugging devices, see Chapter 4, Dynamically Configuring Devices (Tasks).
Device drivers that are needed to support a wide range of standard devices are included in the Oracle Solaris release. These drivers can be found in the /kernel/drv and /platform/`uname -m`/kernel/drv directories.
However, if you have purchased an unsupported device, the manufacturer should provide the software that is needed for the device to be properly installed, maintained, and administered.
At a minimum, this software includes a device driver and its associated configuration (.conf) file. The .conf files reside in the drv directories. This software might also include custom maintenance and administrative utilities because the device might be incompatible with Oracle Solaris utilities.
For more information about what you need for unsupported devices, contact your device manufacturer.
For information about the device names that are used to identify devices on the system, see Device Naming Conventions.
device, instance #number (driver not attached)
This message does not always mean that a driver is unavailable for this device. This message means that no driver is currently attached to the device instance because no device exists at this node or the device is not in use. Drivers are loaded automatically when the device is accessed. They are unloaded when the device is not in use.
The following utilities detect when a specified device is in use:
mkfs and newfs
These enhancements mean that the these utilities might detect some of the following usage scenarios:
Device is part of a ZFS storage pool
Device is a dump or swap device
Mounted file system or an entry for the device exists in the /etc/vfstab file
For example, if you attempt to use the format utility to access an active device, you will see a message similar to the following:
# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c1t0d0 <FUJITSU-MAY2073RCSUN72G-0401 cyl 8921 alt 2 hd 255 sec 63> /pci@0,0/pci1022,7450@2/pci1000,3060@3/sd@0,0 /dev/chassis/SYS/HD0/disk 1. c1t1d0 <FUJITSU-MAY2073RCSUN72G-0401-68.37GB> /pci@0,0/pci1022,7450@2/pci1000,3060@3/sd@1,0 /dev/chassis/SYS/HD1/disk Specify disk (enter its number): 0 selecting c1t0d0 [disk formatted] /dev/dsk/c1t0d0s0 is part of active ZFS pool rpool. Please see zpool(1M). FORMAT MENU: . . .
Use the output of the prtconf and sysdef commands to identify which disk, tape, and DVD devices are connected to the system. The output of these commands displays the driver not attached messages next to the device instances. Because these devices are always being monitored by some system process, the driver not attached message is usually a good indication that no device exists at that device instance.
For example, the following prtconf -v output on a SPARC system identifies the disk devices connected to the system. The detailed disk information is described in the Device Minor Nodes section.
$ /usr/sbin/prtconf -v | more Memory size: 32640 Megabytes System Peripherals (Software Nodes): SUNW,SPARC-Enterprise-T5220 . . . location: /dev/chassis/SUN-Storage-J4400.0918QAKA24/SCSI_Device__2/disk Device Minor Nodes: dev=(27,40) dev_path=/pci@0/pci@0/pci@8/pci@0/pci@a/LSILogic,sas@0/sd@2,0:a spectype=blk type=minor dev_link=/dev/dsk/c4t2d0s0 dev_path=/pci@0/pci@0/pci@8/pci@0/pci@a/LSILogic,sas@0/sd@2,0:a,raw spectype=chr type=minor dev_link=/dev/rdsk/c4t2d0s0 Device Minor Layered Under: mod=zfs accesstype=blk dev_path=/pseudo/zfs@0 Minor properties: name='Nblocks' type=int64 items=1 dev=(27,40) value=0000000074702c8f name='Size' type=int64 items=1 dev=(27,40) value=000000e8e0591e00 . . .
For example, the following prtconf output on a SPARC system displays the sd instance number for /dev/dsk/c4t2d0s0.
# prtconf -v /dev/dsk/c4t2d0s0 | grep instance sd, instance #5
# prtconf | grep -v not
For example, the following fuser command displays which processes are accessing the /dev/console device.
# fuser -d /dev/console /dev/console: 5742o 2269o 20322o 858o
Example 3-1 Displaying System Configuration Information
The following prtconf output is displayed on an x86 based system.
# prtconf System Configuration: Oracle Corporation i86pc Memory size: 8192 Megabytes System Peripherals (Software Nodes): i86pc scsi_vhci, instance #0 pci, instance #0 pci108e,4843, instance #0 pci8086,25e2, instance #0 pci8086,3500, instance #7 pci8086,3510, instance #9 pci8086,3518, instance #10 pci108e,4843, instance #0 pci108e,4843, instance #1 pci8086,350c, instance #8 pci8086,25e3 (driver not attached) pci8086,25f8, instance #2 pci108e,286, instance #0 disk, instance #0 disk, instance #2 disk, instance #3 disk, instance #1 pci8086,25e5 (driver not attached) pci8086,25f9 (driver not attached) pci8086,25e7 (driver not attached) pci108e,4843, instance #0 (driver not attached) pci108e,4843, instance #1 pci108e,4843, instance #2 (driver not attached) pci108e,4843 (driver not attached) pci108e,4843 (driver not attached) pci108e,4843 (driver not attached) pci108e,4843 (driver not attached) pci8086,2690, instance #6 pci108e,125e, instance #2 pci108e,125e, instance #3 pci108e,4843, instance #0 pci108e,4843, instance #1 device, instance #0 keyboard, instance #0 mouse, instance #1 pci108e,4843, instance #2 pci108e,4843, instance #3 pci108e,4843, instance #0 storage, instance #0 disk, instance #4 . . .
# sysdef * Hostid * 29f10b4d * * i86pc Configuration * * * Devices * +boot (driver not attached) memory (driver not attached) aliases (driver not attached) chosen (driver not attached) i86pc-memory (driver not attached) i86pc-mmu (driver not attached) openprom (driver not attached) options, instance #0 packages (driver not attached) delayed-writes (driver not attached) itu-props (driver not attached) isa, instance #0 motherboard (driver not attached) pnpADP,1542, instance #0 asy, instance #0 asy, instance #1 lp, instance #0 (driver not attached) fdc, instance #0 fd, instance #0 fd, instance #1 (driver not attached) kd (driver not attached) kdmouse (driver not attached) . . .
A device retirement mechanism isolates a device as faulty by the fault management framework (FMA). This feature allows faulty devices to be safely and automatically inactivated to avoid data loss, data corruption, or panics and system down time. The retirement process is done safely, taking into account the stability of the system after the device has been retired.
Critical devices are never retired. If you need to manually replace a retired device, use the fmadm repair command after the device replacement so that system knows that the device is replaced, in addition to the manual replacement steps.
For more information, see fmadm(1M).
A general message regarding device retirement is displayed on the console and written to the /var/adm/messages file so that you aware of a retired device. For example:
Aug 9 18:14 starbug genunix: [ID 751201 kern.notice] NOTICE: One or more I/O devices have been retired
You can use the prtconf command to identify specific retired devices. For example:
# prtconf . . . pci, instance #2 scsi, instance #0 disk (driver not attached) tape (driver not attached) sd, instance #3 sd, instance #0 (retired) scsi, instance #1 (retired) disk (retired) tape (retired) pci, instance #3 network, instance #2 (driver not attached) network, instance #3 (driver not attached) os-io (driver not attached) iscsi, instance #0 pseudo, instance #0 . . .
Use the steps that follow to resolve a faulty device or a device that has been retired.
You can also review ZFS device problem or failure information by using the zpool status or the fmadm command. For ZFS device problem or failure information, see Chapter 10, Oracle Solaris ZFS Troubleshooting and Pool Recovery, in Oracle Solaris ZFS Administration Guide.
# fmadm faulty --------------- ------------------------------------ -------------- --------- TIME EVENT-ID MSG-ID SEVERITY --------------- ------------------------------------ -------------- --------- Jun 20 16:30:52 55c82fff-b709-62f5-b66e-b4e1bbe9dcb1 ZFS-8000-LR Major Problem Status : solved Diag Engine : zfs-diagnosis / 1.0 System Manufacturer : unknown Name : ORCL,SPARC-T3-4 Part_Number : unknown Serial_Number : 1120BDRCCD Host_ID : 84a02d28 ---------------------------------------- Suspect 1 of 1 : Fault class : fault.fs.zfs.open_failed Certainty : 100% Affects : zfs://pool=86124fa573cad84e/vdev=25d36cd46e0a7f49/ pool_name=pond/vdev_name=id1,sd@n5000c500335dc60f/a Status : faulted and taken out of service FRU Name : "zfs://pool=86124fa573cad84e/vdev=25d36cd46e0a7f49/ pool_name=pond/vdev_name=id1,sd@n5000c500335dc60f/a" Status : faulty Description : ZFS device 'id1,sd@n5000c500335dc60f/a' in pool 'pond' failed to open. Response : An attempt will be made to activate a hot spare if available. Impact : Fault tolerance of the pool may be compromised. Action : Use 'fmadm faulty' to provide a more detailed view of this event. Run 'zpool status -lx' for more information. Please refer to the associated reference document at http://support.oracle.com/msg/ZFS-8000-LR for the latest service procedures and policies regarding this diagnosis.
# zpool clear pond c0t5000C500335DC60Fd0
If an intermittent device error occurred but the device was not replaced, you can attempt to clear the previous error.
# fmadm repaired zfs://pool=86124fa573cad84e/vdev=25d36cd46e0a7f49/ \ pool_name=pond/vdev_name=id1,sd@n5000c500335dc60f/a fmadm: recorded repair to of zfs://pool=86124fa573cad84e/vdev=25d36cd46e0a7f49/ pool_name=pond/vdev_name=id1,sd@n5000c500335dc60f/a
# fmadm faulty
If the error is cleared, the fmadm faulty command returns nothing.