设备是被驱动用于某种功能的硬件。当某个RS 6000 兼容设备启动后,AIX将驱动、管理这个设备,使其发挥功能——这就需要AIX中的设备管理。在服务器设备管理中,我们常会用到如下几个概念。
■ 物理设备:通过某种挂接方式连接到RS 6000 系统的硬件,例如一块硬盘。
■ 设备驱动程序:AIX内核用于控制该硬件动作和数据发送的接口软件。
■ 逻辑设备:提供给用户和应用程序使用的软件接口,也称为设备文件。数据被发送给逻辑设备后,根据逻辑设备的定义,数据将被传送给对应的设备驱动程序。对逻辑设备的使用,实际上就是设备驱动程序运行在对应物理设备上的具体应用。
和其他UNIX类似,AIX将设备文件放在一个特殊目录/dev下。这个目录包含了能被用户使用的所有逻辑设备,查看其目录内容如下。
上面结果中显示的各个文件,就是当前AIX系统中存在的设备。一般而言,AIX(和其他UNIX)中的设备可以分为两种类型:
■ 块设备:随机存取的设备,在访问设备时可以使用缓冲技术,实现按块的数据访问。典型的块设备即为硬盘上安装的文件系统。
■ 字符设备:使用顺序方式写入的、面向流的设备类型,在访问过程中并不采用缓冲区方法优化。典型的字符设备即为未定义文件系统的逻辑卷(称裸设备),或者磁带机、终端等。
当我们使用ls –alt命令列出/dev目录中文件类型时,第一列的字母如果是b,则表示是块设备文件;如果是c,则表示是字符设备文件。另外,很多设备既提供按照块方式的访问,也提供按照流方式的访问,也就是同一个物理设备可能同时存在块设备和字符设备文件。典型的类型如物理磁盘(如某块磁盘hdisk10,其块设备为/dev/hdisk10,字符设备为/dev/rhdisk10)等,示例如下:
上面的返回结果中,第一个域标示了设备类型和访问权限,第三、第四个域标示了设备属主和组,第五个域标识了设备的主设备号和次设备号。主设备号指明了驱动某种设备的驱动程序代码,次设备号则指明了这个设备在同类设备中的位置。
例如上述结果中的磁盘设备hdisk10,其主设备号是 47,次设备号是 8,表明AIX将使用驱动程序代码为 47 的驱动程序,来驱动和控制第 8 号磁盘设备。
一般而言,AIX中有如下类型的块设备。
■ cd0:CD-ROM
■ fd0:软盘驱动器
■ hdl、fslv00:逻辑卷
■ hdisk0、hdisk1:物理磁盘(物理卷)
AIX中有如下类型的字符设备。
■ console、lft、tty0:终端
■ lp0:打印机
■ rmt0、rmt1:磁带驱动器
■ ent0、ent1、ent2:网络接口适配器
■ rfd0:软盘驱动器的字符设备
■ rhdl、rfslv00:逻辑卷的字符设备
■ rhdisk0、rhdisk1:物理卷的字符设备
数据库应用中经常使用的裸设备,就是这里所说的逻辑卷的字符设备。在其他UNIX中,裸设备可能是一块物理盘或者物理盘上的一个分区(Partition),在AIX(或者HP-UX)中,裸设备一般就是“逻辑卷设备对应的字符设备文件”。
AIX中的设备按照分层方式管理,依据的是功能分类,即按照基本功能分组。下一级为功能子类,根据其具体功能进行划分。最后一级即为类型子类,按其类型和厂商来区分设备。使用下面的lsdev命令可以说明这种设备的分类方式,如图2-1 所示。
图2-1 AIX系统设备列表和对应的分类
从上面的“阶梯状”数据可以看出,AIX中存在下层设备依赖于上层设备的关系。在AIX中,这种分层和依存关系保存在一个特定的数据库——ODM(Object DatabaseManagement)中。
如前所述,ODM数据库可以分为预定义库和定制库,分别保存本系统支持的设备和已经定义的设备。对应的信息可以通过lsdev命令获得。lsdev –C选项可以列出定制库的设备定义,如下面的列表所示:
设备显示可以按照设备分类来查询,例如在下例中,我们列出了在定制库的设备定义中,关于磁盘设备的配置情况:
ODM预定义库则存放本机支持设备的信息。同样是通过lsdev命令查询,通过–P选项来制定预定义库。该命令可能返回一个很大的列表,列出本机所支持的设备:
ODM是AIX中用于系统数据存储的数据管理器。AIX的诸多系统管理任务都会使用到ODM数据库,该数据库保存了如下类型的内容:
■ 系统中设备的配置信息
■ 系统通信相关的配置信息
■ 系统软件和修补安装的记录信息
■ 系统资源信息
■ SMIT的显示信息项及SMIT工具菜单、对话框等
ODM采用了面向对象的数据管理方法,它通过对象类,即通过对象在定义上的分层,实现了设备管理上的抽象。ODM设备配置数据库由predefined(预定义类)和customized(用户定义类)两个顶层类组成。预定义对象类(predefined)包含了AIX支持的全部设备定义,而用户定义类(customized)包含的则是系统中当前存在的设备。
在AIX系统中,实际连接设备的配置信息保存在/etc/objrepos/CuDv文件中,通过一个ODM管理命令odmshow可以显示其定义:
CuDv类的内容如上所示。可以看到,CuDv类中的每一项均为一个描述符。如果给这个类创建一个对象,或者说添加一个对象到CuDv类中时,AIX将对每一个描述符赋值。使用lsdev命令可以查看关于设备的定义信息,该命令使用了如下的选项。
■ -P:用于输出ODM中预定义设备对象类的信息。
■ -C:用于输出ODM定制库中定制设备对象类的信息。
使用下面的命令可以查看CuDv对象类中的对象和它们的相应值。
下面的命令显示了系统设备信息,其中-P选项则指明要输出的是预定义设备信息。
设备可以由表示设备功能的分类class、表示设备型号的类型type、表示设备与系统连接方式的子类subclass来进行细节描述,分别对应lsdev命令的-c、-t、-s选项。例如,下面我们列出预定义库中支持物理磁盘种类的列表。
上述功能也可以通过用SMITTY工具来查询,当然在实质上完全等同于命令lsdev-P或者lsdev-C的功能。
在AIX中,系统设备当前的运行状态分为如下三种。
■ 未定义(Undefined):系统中尚未存在该设备的相关记录信息,这种设备完全不能使用。
■ 已定义(Defined):系统中已经保存了关于设备的逻辑设备名、连接端口、相关属性设置,但是当前设备还不能使用,逻辑设备名不可访问。这种设备需要激活才能使用(例如:设备尚未加电)。
■ 可用(Available):设备已定义完成,并且已经处于连接和加电状态。这类设备能够使用,逻辑设备名可以访问。
三种状态存在转换关系,例如我们给系统添加某个设备,系统中当前并未保存该设备的记录信息,则该设备为未定义状态。设备经过加电自检后被系统识别,成为可用状态。然后设备断电不可使用,成为已定义状态,如图2-2 所示。
图2-2 AIX中设备所处的状态及状态转换关系
使用lsdev –C命令可以查看当前系统的状态信息。
可以看到,其中en0 网卡设备状态为可用,en1~en3 网卡设备状态为已定义(未接交换机)。
AIX提供了若干工具进行设备的相关管理,如创建设备、修改设备属性、查看设备信息、删除设备等操作。在进行这些操作时,ODM数据库会做相应的修改。常用的设备配置命令如下。
■ mkdev、rmdev:用于创建设备和删除设备,如可用mkdev -l命令(-l指逻辑设备名)配置已定义设备,也可用rmdev -dl命令完全删除设备及其定义。
■ lsdev、lsattr:用于显示设备信息和某个设备的属性,如可用lsdev -C命令查看设备状态,也可用lsattr -l命令(-l指逻辑设备名)查看设备属性的当前值。
■ chdev:用于更改给定逻辑名设备的特征,如使用chdev -l 命令即可用于设备属性的修改。
例如,利用下面的命令创建一个 4 毫米SCSI磁带机设备。
下面显示设备rmt0 的属性定义情况。
修改设备rmt0 的属性定义,下面的语句将磁带数据块尺寸修改为 512。
SMITTY工具同样可用于设备的状态管理。在SMITTY中对应的菜单项和前面的命令作用大致相同,如图2-3 所示。
图2-3 在SMITTY中改变设备属性
另一个工具是AIX著名的cfgmgr命令。该命令称为配置管理器命令,用来配置系统中可自动识别的设备。当我们向系统中添加新设备时,或者当我们对那些没有在系统启动中自检到的设备进行配置时,cfgmgr命令可以用于配置设备,并且有选择地将设备驱动程序安装到系统中。在设备驱动程序安装中指定了如下几个问题:
■ 可执行程序的完整路径
■ 何时执行该程序
■ 哪个阶段运行该程序
在系统启动的阶段中,AIX就会调用该命名来识别设备。系统启动后,cfgmgr命令会动态配置系统设备——通过硬件检测及动态地创建设备文件、安装驱动程序,使设备变为可用。
cfgmgr命令可以在命令行运行,也可以通过SMITTY工具调用。下例中我们用cfgmgr命令来进行设备的自动检测:
在生产系统上,主要的可检测设备是SCSI设备,如磁盘、磁带等。对于SCSI设备,cfgmgr能够自动检测到SCSI适配器,并检测到SCSI上挂载的设备。
在下例中,假设系统外置了一套存储设备,但该设备并未启动。这时,其磁盘设备状态为“已定义”。在存储加电后,通过运行cfgmgr命令,则存储设备即可识别。
外置存储设备加电。
STEP 2 主机内运行cfgmgr命令。
STEP 3 使用lsdev –Cc disk命令检查磁盘,可以看到,磁盘的状态为“可用”。
系统设备被识别和配置后,lsattr命令可以用来显示设备属性相关信息,该命令通过-l参数指定要查看设备的逻辑名,或者使用一个组合来唯一标示某设备,常用的几个选项为 -c Class、-s Subclass、-t Type。lsattr命令的常用参数如表2-1 所示。
表2-1 lsattr命令的常用参数
下面的命令列出了磁带设备rmt0 的当前属性值。
下面的命令列出了磁带设备rmt0 的默认属性值。
下面的命令列出了tty0 所连接串口的speed属性当前值。
在SMITTY环境中也可以进行设备的配置。SMITTY快速路径“#smitty devices”允许在SMITTY菜单界面中完成下面的工作:
■ 安装或配置系统启动后添加的设备
■ 删除现有设备
■ 显示和更改现有的设备的属性
■ 确定设备使用问题
对于管理员来说,最好做一个当前系统硬件配置的档案,如下的三个命令可能有助于档案的建立。
■ lsattr -El sys0:该命令用于查看已配置设备的详细属性信息。
■ lscfg -v:该命令可以输出所有已配置设备的详细信息。
■ lsdev –CH:该命令可以输出设备名、设备状态、设备位置等相关信息。
最后,AIX还提供了一个综合上述三个命令功能的命令——prtconf,该命令可以打印出系统的配置信息:
从AIX 6.1 TL6 和AIX 7.1 开始,我们可以对设备进行重命名,使用一个rendev的新命令,该命令用于重命名设备。该命令常用语法如下:
在下面的示例中,磁盘hdisk4 重命名为 hdisk300。需要注意的是,如果磁盘已经在卷组中打开,则该卷组需要被先行卸载。首先查看系统磁盘状态如下:
接着调整hdisk4 磁盘状态为Defined:
重命令设备hdisk4 为hdisk400,并重置hdisk4(hdisk400)的状态为可用:
同理,我们可以完成对网卡、SCSI卡等设备的重命名。