系统管理指南:设备和文件系统

第 5 章 管理设备(概述/任务)

本章提供有关在 Solaris 发行版中管理外围设备(如磁盘、CD-ROM 和磁带设备)的概述信息和逐步说明。

以下是本章中概述信息的列表。

以下是本章中的逐步说明列表。

有关访问外围设备的信息,请参见第 10 章,访问设备(概述)

Solaris 发行版中的设备管理通常涉及在系统中添加和删除外围设备,其中还可能涉及添加支持设备的第三方设备驱动程序,以及显示系统配置信息。

Solaris 10 6/06 发行版在设备管理方面的新增功能

本节提供有关 Solaris 10 6/06 发行版在设备管理方面新增功能的信息。

x86: 支持 PCI Express (PCIe)

Solaris 10 6/06:此 Solaris 发行版可提供对 PCI Express (PCIe) 互连的支持,此功能旨在将外围设备连接至桌面、企业、移动、通信和嵌入式应用程序。

PCIe 互连是行业标准的高性能串行 I/O 总线。有关 PCIe 技术的详细信息,请访问以下站点:

http://www.pcisig.com

此 Solaris 发行版中的 PCIe 软件提供了以下功能:

热插拔 PCIe 外围设备与 PCI 外围设备的管理模型相同,也是使用 cfgadm 命令。

请检查硬件平台指南,确保系统提供 PCIe 以及 PCIe 热插拔支持。此外,请认真查阅有关以物理方式在系统中插入或移除适配器的说明以及设备自动配置的语义(如果适用)。

有关针对 PCIe 外围设备使用 cfgadm 命令的信息,请参见使用 cfgadm 命令执行 PCI 或 PCIe 热插拔(任务列表)

USB 和 1394 (FireWire) 支持增强功能

Solaris 10 6/06:在此 Solaris 发行版中,不可移除的 USB 存储设备和 1394 海量存储设备均标识为驱动程序级别的可热插拔设备。这种新行为意味着可以在不重新引导系统的情况下连接这些设备或断开其连接,并可在非交互情况下自动配置或取消配置这些设备。这些更改是在内核级别进行的,因此不会影响这些设备的使用。例如,挂载和取消挂载这些设备的工作仍然由 vold 控制。

此外,还可以使用 format 实用程序来访问和标记不可移除的 USB 设备和 1394 海量存储设备。但是,在 /kernel/drv/scsa2usb.conf 文件中将 remvalue 设置为 true 可以覆盖这些设备新的可热插拔行为。将此参数设置为 true 意味着将该设备视为驱动程序级别的可移除介质设备,前提是该行为是首选行为。

有关使用这些设备的更多信息,请参见 scsa1394(7D)使用 USB 海量存储设备(任务列表)

Solaris 10 发行版在设备管理方面的新增功能

本节提供有关 Solaris 10 发行版在设备管理方面新增功能的信息。

USB 设备增强功能

有关 USB 设备新增功能的信息,请参见Solaris 10 发行版在 USB 设备方面的新增功能

x86 系统的 1394 (FireWire) 和海量存储支持

在此 Solaris 发行版中,1394 OpenHCI 主机控制器驱动程序已进行了更新,从而提供对 x86 系统的支持。以前,仅有 SPARC 系统提供 1394 (FireWire) 支持。

IEEE 1394 也是因 Apple Computer 的商标名 Firewire 而得名。Sony 的 1394 商标名为 i.LINK。

1394 是一种行业标准串行总线,该总线可支持的数据速率为 100 Mbit/sec、200 Mbit/sec 或 400 Mbit/sec。由于该总线具有高带宽和同步(准时)功能,因此非常适用于处理用户电子设备(如摄像机)中的数据。

有关更多信息,请参见 hci1394(7D)

在此 Solaris 发行版中,添加了 scsa1394 驱动程序,以支持符合串行总线协议 2 (Serial Bus Portocol 2, SBP-2) 规范的 1394 海量存储设备。该驱动程序支持总线供电和自供电两种 1394 海量存储设备。以前仅支持 1394 摄像机。

1394 海量存储设备被视为可移除介质设备。可以使用 rmformat 命令对 1394 海量存储设备进行格式化。1394 海量存储设备的使用方法与 USB 海量存储设备相同。这意味着您可以挂载、弹出、热拆卸和热插入 1394 海量存储设备。有关使用这些设备的更多信息,请参见 scsa1394(7D)第 8 章,使用 USB 设备(任务)

设备文件系统 (devfs)

此 Solaris 发行版中 devfs 文件系统用于管理设备。请继续通过 /dev 目录中的各项来访问所有设备,这些项是指向 /devices 目录中各项的符号链接。/devices 目录的内容现在由 devfs 文件系统控制。/devices 目录中的各项可动态表示系统上可访问设备的当前状态,并且无需进行管理。

devfs 文件系统提供了下列增强功能:

有关更多信息,请参见 devfs(7FS) 手册页。

光纤通道设备的电源管理

许多以前的 Solaris 发行版中都提供了 Sun 系统的电源管理。例如,缺省情况下,以下系统中的内部驱动器会进行电源管理:

/etc/power.conf 文件中的缺省设置确保符合能源之星标准,并且完全支持这些系统的电源管理。

以下适配器用于连接外部光纤通道存储设备:

如果将上述适配器与 Sun 系统结合使用来连接外部光纤通道存储设备,则缺省情况下,外部存储设备也会进行电源管理。

在以下情况下,应禁用电源管理:

如果多个 Solaris 系统可能共享相同的设备(如上述情况下),则不应启用电源管理。

按以下方式更改 /etc/power.conf 文件中的 autopm 关键字,可以对系统禁用电源管理:


autopm 		disable

然后,通过运行 pmconfig 命令或重新引导系统,重新配置电源管理。

有关更多信息,请参见 power.conf(4)pmconfig(1M)

有关设备管理任务的参考信息

下表介绍了有关热插拔设备以及添加串行设备(如打印机和调制解调器)和外围设备(如磁盘、CD-ROM 或磁带设备)的逐步说明。

表 5–1 有关添加设备的参考信息

设备管理任务 

更多信息 

添加不可热插拔的磁盘。 

第 13 章,SPARC:添加磁盘(任务)第 14 章,x86:添加磁盘(任务)

热插拔 SCSI 或 PCI 设备。 

使用 cfgadm 命令执行 SCSI 热插拔使用 cfgadm 命令执行 PCI 或 PCIe 热插拔

热插拔 USB 设备。 

使用 USB 海量存储设备(任务列表)

添加 CD-ROM 或磁带设备。 

如何添加外围设备

添加调制解调器。 

《系统管理指南:高级管理》中的第 8  章 “管理终端和调制解调器(概述)”

添加打印机。 

《系统管理指南:高级管理》中的第 1  章 “管理打印服务(概述)”

保护设备。 

《系统管理指南:安全性服务》中的第 4  章 “控制对设备的访问(任务)”

关于设备驱动程序

一台计算机通常会使用大量外围设备和海量存储设备。例如,您的系统可能装有磁盘驱动器、键盘和鼠标,以及某种磁性备份介质。其他常用的设备包括以下各项:

Solaris 软件并不直接与所有这些设备进行通信。每种类型的设备都要求不同的数据格式、协议和传输率。

设备驱动程序是一种低级程序,可用于使操作系统与某个特定的硬件进行通信。驱动程序可用作操作系统对该硬件的“解释程序”。

设备的自动配置

内核包含一个小的通用核心,其中带有一个平台特定的组件和一组模块。在此 Solaris 发行版中,内核是自动配置的。

内核模块是用于在系统上执行特定任务的一个硬件组件或软件组件。可装入内核模块的一个示例是访问设备时装入的设备驱动程序。

与平台无关的内核为 /kernel/genunix。平台特定的组件为 /platform/`uname -m`/kernel/unix

内核模块在下表中介绍。

表 5–2 Solaris 内核模块的说明

位置 

目录内容 

/platform/`uname -m`/kernel

平台特定的内核组件 

/kernel

引导系统所需的通用于所有平台的内核组件 

/usr/kernel

特定指令集内通用于所有平台的内核组件 

系统可确定在引导时与其连接的设备。然后,内核会对其自身进行动态配置,将所需的模块装入内存中。此时,在访问磁盘和磁带等设备时就会装入设备驱动程序。此过程称为自动配置,因为所有的内核模块在需要时都会自动装入。

通过修改 /etc/system 文件,可以自定义装入内核模块的方式。有关修改此文件的说明,请参见 system(4)

自动配置的功能和优点

自动配置的优点如下:

向系统中添加新设备(和驱动程序)时会使用自动配置功能。此时,如果设备不是可热插拔的,则可能需要执行重新配置引导,以便系统可以识别新设备。有关热插拔设备的信息,请参见第 6 章,动态配置设备(任务)

不受支持的设备所需的内容

Solaris 发行版中包括支持大量标准设备所需的设备驱动程序。可以在 /kernel/drv/platform/`uname -m`/kernel/drv 目录中找到这些驱动程序。

但是,如果购买了不受支持的设备,制造商应该提供正确安装、维护和管理设备所需的软件。

此软件至少应包括设备驱动程序及其关联的配置 (.conf) 文件。.conf 文件驻留在 drv 目录中。此软件可能还包括自定义维护和管理实用程序,因为该设备可能与 Solaris 实用程序不兼容。

有关不受支持的设备所需内容的更多信息,请与设备制造商联系。

显示设备配置信息

有三个命令可用于显示系统和设备的配置信息。

命令 

说明 

手册页 

prtconf

显示系统配置信息,包括系统设备分层结构描述的内存总量和设备配置。通过此命令显示的输出取决于系统的类型。 

prtconf(1M)

sysdef

显示设备配置信息,包括系统硬件、伪设备、可装入模块以及选定的内核参数。  

sysdef(1M)

dmesg

显示系统诊断消息以及从上次系统重新引导以来与系统连接的设备的列表。 

dmesg(1M)

有关用于标识系统上设备的设备名称的信息,请参见设备命名约定

driver not attached 消息

prtconfsysdef 命令可能会显示以下与驱动程序有关的消息:


device, instance #number (driver not attached)

此消息并不总是表示驱动程序不可用于此设备。此消息表示当前没有向设备实例附加任何驱动程序,因为此节点中不存在任何设备或者设备未在使用中。驱动程序是在访问设备时自动装入的。如果设备未在使用中,则会取消挂载这些驱动程序。

Procedure如何显示系统配置信息

使用 prtconfsysdef 命令的输出可确定与系统连接的磁盘、磁带和 CD-ROM 设备。这些命令的输出会在设备实例旁边显示 driver not attached 消息。由于这些设备始终受某个系统进程监视,因此 driver not attached 消息通常明确表示该设备实例中不存在任何设备。

使用 sysdef 命令可显示系统配置信息,其中包括伪设备、可装入模块以及选定的内核参数。

    显示系统和设备的配置信息。

    • 显示与系统连接的所有设备。

      例如,SunBlade 1000 上的以下 prtconf -v 输出确定了与系统连接的磁盘设备。详细的磁盘信息在 ssd/fp 驱动程序部分中的 Device Minor Nodes 一节介绍。


      $ /usr/sbin/prtconf -v | more
      
      .
      
      .
      
      .
      
                  Device Minor Nodes:
      
                     dev=(118,8)
      
                        dev_path=/pci@8,600000/SUNW,qlc@4/fp@0,0/ssd@w210000
      
      2037bde864,0:a
      
                            spectype=blk type=minor
      
                            dev_link=/dev/dsk/c0t1d0s0
      
                        dev_path=/pci@8,600000/SUNW,qlc@4/fp@0,0/ssd@w210000
      
      2037bde864,0:a,raw
      
                            spectype=chr type=minor
      
                            dev_link=/dev/rdsk/c0t1d0s0
      
                     dev=(118,9)
      
                        dev_path=/pci@8,600000/SUNW,qlc@4/fp@0,0/ssd@w210000
      
      2037bde864,0:b
      
                            spectype=blk type=minor
      
                            dev_link=/dev/dsk/c0t1d0s1
      
                        dev_path=/pci@8,600000/SUNW,qlc@4/fp@0,0/ssd@w210000
      
      2037bde864,0:b,raw
      
      .
      
      .
      
      .
    • 显示有关与系统连接的某个特定设备的信息。

      例如,SunBlade 1000 上的以下 prtconf 输出显示了 /dev/dsk/c0t1d0s0ssd 实例编号。


      # prtconf -v /dev/dsk/c0t1d0s0
      
      ssd, instance #1
    • 仅显示与系统连接的设备。


      # prtconf | grep -v not
      
    • 显示设备使用信息。

      例如,以下 fuser 命令显示了正在访问 /dev/console 设备的进程。


      # fuser -d /dev/console
      
      /dev/console:      346o     323o
      
      #

示例 5–1 显示系统配置信息

基于 SPARC 的系统中会显示以下 prtconf 输出。


# prtconf

System Configuration:  Sun Microsystems  sun4u

Memory size: 512 Megabytes

System Peripherals (Software Nodes):



SUNW,Sun-Blade-1000

    scsi_vhci, instance #0

    packages (driver not attached)

        SUNW,builtin-drivers (driver not attached)

        deblocker (driver not attached)

        disk-label (driver not attached)

        terminal-emulator (driver not attached)

        obp-tftp (driver not attached)

        dropins (driver not attached)

        kbd-translator (driver not attached)

        ufs-file-system (driver not attached)

    chosen (driver not attached)

    openprom (driver not attached)

        client-services (driver not attached)

    options, instance #0

    aliases (driver not attached)

    memory (driver not attached)

    virtual-memory (driver not attached)

    SUNW,UltraSPARC-III, instance #0

    memory-controller, instance #0

    SUNW,UltraSPARC-III, instance #1

    memory-controller, instance #1

    pci, instance #0

        ebus, instance #0

            flashprom (driver not attached)

            bbc (driver not attached)

            ppm, instance #0

            i2c, instance #0

                dimm-fru, instance #0

                dimm-fru, instance #1

                dimm-fru, instance #2

                dimm-fru, instance #3

                nvram, instance #4

                idprom (driver not attached)

            i2c, instance #1

                cpu-fru, instance #5

                temperature, instance #0

                cpu-fru, instance #6

                temperature, instance #1

                fan-control, instance #0

                motherboard-fru, instance #7

                i2c-bridge (driver not attached)

            beep, instance #0

            rtc, instance #0

            gpio (driver not attached)

            pmc (driver not attached)

            floppy (driver not attached)

            parallel (driver not attached)

            serial, instance #0

        network, instance #0

        firewire, instance #0

        usb, instance #0

        scsi (driver not attached)

            disk (driver not attached)

            tape (driver not attached)

        scsi (driver not attached)

            disk (driver not attached)

            tape (driver not attached)

    pci, instance #1

        SUNW,qlc, instance #0

            fp (driver not attached)

                disk (driver not attached)

            fp, instance #1

                ssd, instance #1

                ssd, instance #0 (driver not attached)

                ssd, instance #2 (driver not attached)

                ssd, instance #3 (driver not attached)

                ssd, instance #4 (driver not attached)

                ssd, instance #5 (driver not attached)

                ssd, instance #6 (driver not attached)

    upa, instance #0

        SUNW,ffb, instance #0 (driver not attached)

    ppm, instance #0

    pseudo, instance #0

基于 x86 的系统中会显示以下 sysdef 输出。


# 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)

.

.

.

向系统添加外围设备

添加不可热插拔的新外围设备通常涉及以下操作:

可以参阅如何添加外围设备向系统添加以下不可热插拔的设备:

在某些情况下,为支持新设备,可能必须添加第三方设备驱动程序。

有关热插拔设备的信息,请参见第 6 章,动态配置设备(任务)

Procedure如何添加外围设备

  1. 成为超级用户。

  2. (可选的)如果需要添加设备驱动程序以支持设备,请完成过程如何添加设备驱动程序

  3. 创建 /reconfigure 文件。


    # touch /reconfigure
    

    /reconfigure 文件将导致 Solaris 软件在下次打开或引导系统时检查所有新近安装的设备是否存在。

  4. 关闭系统。


    # shutdown -i0 -g30 -y
    
    -i0

    使系统进入 0 初始状态,即适用于关闭系统电源以添加和删除设备的状态。

    -g30

    在 30 秒内关闭系统。缺省值为 60 秒。

    -y

    在没有用户介入的情况下,继续关闭系统。否则,系统会提示您继续执行关机过程。

  5. 在系统关闭后,选择以下方法之一关闭系统电源:

    • 对于 SPARC 平台,如果显示 ok 提示,则可以安全关闭电源。

    • 对于 x86 平台,如果显示 type any key to continue 提示,则可以安全关闭电源。

  6. 关闭所有外围设备的电源。

    有关所有外围设备的电源开关的位置,请参阅外围设备附带的硬件安装指南。

  7. 安装外围设备,确保要添加的设备与系统上的其他设备具有不同的目标号码。

    通常,磁盘背面有一个小开关,用于选择目标号码。

    有关安装和连接设备的信息,请参阅外围设备附带的硬件安装指南。

  8. 打开系统电源。

    系统将引导至多用户模式,并会显示登录提示。

  9. 通过尝试访问外围设备,检验是否已添加了该设备。

    有关访问该设备的信息,请参见第 10 章,访问设备(概述)

Procedure如何添加设备驱动程序

此过程假定已将设备添加到系统中。否则,请参见不受支持的设备所需的内容

  1. 成为超级用户。

  2. 将磁带、软盘或 CD-ROM 放入驱动器中。

  3. 安装驱动程序。


    # pkgadd [-d] device package-name
    
    -d device

    用于标识包含软件包的设备路径名。

    package-name

    用于标识包含设备驱动程序的软件包名称。

  4. 检验软件包是否已正确添加。


    # pkgchk package-name
    
    #

    如果正确安装了软件包,则系统提示不会返回任何响应。


示例 5–2 添加设备驱动程序

以下示例说明如何安装和检验名为 XYZdrv 的软件包。


# pkgadd XYZdrv

(licensing messages displayed)

.

.

.

Installing XYZ Company driver as <XYZdrv>

.

.

.

Installation of <XYZdrv> was successful.

# pkgchk XYZdrv

#