温故:
AIX的设备管理是一个大的板块,设备管理主要包括添加新设备,改变设备的配置,删除设备等。这些设备是按层次关系实行分类管理的。由一个或多个设备组成的一组设备,称为设备节点(Device Node),节点只是一个逻辑上的概念。在一个节点中,低层的设备依赖于高层设备,也就是说只有高层设备存在,才可能有低层设备,高层设备和低层设备之间是父子关系。例如系统节点(System Node)是由系统中的所有物理设备组成,在所有节点中它的层次最高,类似树的根节点,在系统节点中,系统设备是最高的,它的下面有依赖于系统设备的总线和适配器。处于整个层次结构最底部的设备,依赖于处在它上面的设备,除了与上层设备相连外,没有任何设备与它相连。
关于以上内容的文章链接如下:AIX之设备管理(一)
知新:
在讲解新的内容之前,先对《AIX之设备管理(一)》中提到的设备的四种状态进行补充,前文说到系统中的设备有4种状态∶ Undefined(未定义)、Defined(已定义)、Available(可用)和 Stopped(停用)。那么这四种状态的关系又是什么样的呢?
未定义(Undefined)的设备通过定义就变成了已定义(Defined)的设备,这时已定义的设备还不能使用,再经过配置后,它的状态为可用(Available)时才能使用。如果暂时不再使用某个设备,可以删除该设备的配置,使这个设备的状态变成已定义(Defined)状态;还可以删除该设备的定义,使这个设备的状态变成未定义(Undefined),也就是这个设备不存在。如果设备支持停用(Stopped)状态,可以将它设置为停用(Stopped)状态。
这里做一个强调:未定义状态实质上是一个假设的状态,对于系统来说是不存在这个状态的,因为它在系统中根本就不存在,就像是系统中明明没有磁盘,你偏要告诉系统它有一个看不见的磁盘,这不是胡扯吗,就是这个意思。因而一般情况下,所说的设备状态中不包括未定义状态。
这一部分就讲到这里。
一、查看设备列表
在AIX系统中,查看设备列表的最常用的命令就是“lsdev”了,通过这个命令可以显示出设备的名称、状态和位置编号等信息,那么大家有没有考虑过lsdev这个命令在执行的时候到底是去哪里搜索你所要的信息呢?答案是ODM数据库。
在 ODM 数据库中有两种设备配置数据库,一种是预定义设备数据库,另一种是用户定义设备数据库。lsdev命令就是从这两种数据库中获得设备的信息,并显示出来。既然这个ODM数据库分为了两种,那么想要分别查询到自己想要的信息,在命令上自然就会表现出区别。
1、如果想要在用户定义的数据库中查找结果,就要使用下面这个命令:
lsdev -C +参数
比如:lsdev -C -c adapter
下图中标识出了使用大C参数可以查看到设备的名称、状态、位置编号和描述
2、如果想要在预定义的数据库中查找结果,就要使用下面这个命令:
lsdev -P +参数
比如:lsdev -P -B tape
下图中标识出了使用大P参数可以查看到设备功能分类、设备类型、功能子类和描述
下面是这个命令常用到的参数
-cClass | 指定设备类名。使用该标志可以限制输出指定类中的设备。 |
-fFile | 从 File 参数读取所需的标志。 |
-FFormat | 以用户指定格式显示输出。其中 Format 参数为预定义或定制设备对象类中的列名引用列表,这些列名由非字母数字字符或空格分隔,也可能由它们结尾。 |
-H | 显示列输出上方的头部分。 |
-h | 显示命令的用法消息。 |
-lName | 从为其列出信息的设备的定制设备对象类指定设备逻辑名。 |
-pParent | 为要显示的父设备从定制设备对象类指定设备逻辑名。 |
-rColumnName | 在列中显示值集。例如,ColumnName 参数使用 Class 参数值以列出所有类。 |
-SState | 列出处于指定状态的所有设备,状态名由 State 参数指定。State 参数的值可以是以下之一: d、D、0 或 defined(对于“已定义”状态) a、A、1 或 available(对于“可用”状态) s、S、2 或 stopped(对于“停止”状态) 该标志可用于限制输出到指定状态的设备。该标志不能和 -P 标志一起使用。 |
-sSubclass | 指定设备的子类名称。使用该标志可以限制输出到指定子类的设备中。 |
-tType | 指定设备类型名称。使用该标志可以限制输出到指定类型的设备中。 |
二、查看设备属性
还要补充的一点就是查看设备的属性,查看设备属性的命令是"lsattr",使用 lsattr 命令,必须指定一个设备,可以使用-l参数指定一个设备,也可以使用-c,-s 和-t 参数来确定设备。
但是如果由-c,-s 和-t参数来确定一个设备,一般所获得的值都是从预定义设备数据库中取得,而且基本上是默认值,也就是和-D,-R参数结合使用。如果不想从预定义设备库中获取信息要怎么办呢?方法是使用-E 参数显示设备属性的当前值,当前值是从用户定义设备数据库中获得的,而不是从设备上直接获得的。但是这里有一点是要注意的,虽然-E参数满足了去用户定义数据库取数据的要求,然而如果在使用的过程中使用chdev命令修改了设备的属性,这个时候查询到结果就会和实际不符。为什么?因为使用chdev命令修改之后,这个变了的数据还没有同步到用户定义数据库,但是查询的时候却是从数据库进行查询,因此才会发生这种情况。
要想避免这种情况的发生,就需要在使用chdev命令之后,再使用cfgmgr命令来将设备的属性变化更新进入数据库。
lsattr的常用参数
-D ,显示设备的默认值,从预定义设备数据库中读取一个具体类型设备的默认值
-E,显示一个具体设备的当前有效值,从用户定义设备数据库中读取具体设备的有效值,只能和-l name 参数同时使用。
-F ,使用用户自定义格式显示
-R,显示某一具体属性的有效值范围
其他常用参数:
-l Name 指定定制设备对象类中要显示其属性名称或值的设备逻辑名
-H 显示列输出上方的头部分。将 -H 标志与-O标志一起使用是无意义的,通常使用-O标志就可以。将 -H 标志与-R标志一起使用是无意义的,通常使用-R标志就可以。
-a 属性显示特定设备或某类型设备的指定属性的信息。
-c Class 指定设备类名
-s Subclass 指定设备的子类名称。
-t Type 指定设备类型名称。
第一列是属性名,第二列是属性值,第三列是属性描述,第四列是属性的值是否可以改变。
除了这个命令之外。还有一个lscfg命令也可以查看系统的配置,关于这个命令我这里不再详细讲解,简单说一下。
lscfg的 参数:
- v 显示用户定义设备的重要产品数据
- p 显示平台的具体设备信息
- r 显示 RSPC 系统上的平台具体设备信息
- l name 指定设备的逻辑名称 name 是逻辑名称
lscfg 不带任何参数则显示所有安装在机器中的设备,还指出机器的类型,总线类型
下面是查看hdisk1的配置
注意:现在为了省事,我平时更多的是使用smit工具操作,大家也可以试试。
三、删除设备
如果要删除某个设备,也可分两步走,先使设备状态从可用状态变为已定义状态(设备不能使用),这时设备的配置信息还保留在用户定义设备数据库中,再删除设备的配置信息和定义信息,彻底地将设备从系统中删掉。也可以将这两步合为一步完成,直接删除设各的配置信息和定义信息。用rmdev命今就可以实现。
rmdev -l hdisk0 +其他参数
这里的 -l参数用来指定设备的逻辑名
比如:rmdev -l hdisk0 或者rmdev -l tty -d
拓展:
运行 prtconf 命令就会显示系统型号(System Model)、机器的序列号(Machine Serial)、处理器类型(Processor Type)、处理器的个数、处理器时钟速度、CPU 类型、内存总量网络信息、系统信息、页面空间信息和卷组信息和设备信息等。
prtconf命令的输出示例如下所示:
#系统模型
System Model: IBM,7044-270
#机器编号
Machine Serial Number: 10F0A9D
#处理器的类型
Processor Type: PowerPC_POWER3
#处理器的实现模式
Processor Implementation Mode: POWER 630
#处理器的版本
Processor Version: PV_630
# 处理器数量
Number Of Processors: 1
#处理器时钟速度
Processor Clock Speed: 375 MHz
# CPU类型
CPU Type: 64-bit
#内核类型
Kernel Type: 64-bit
#LPAR信息
LPAR Info: -1 NULL
#内存大小
Memory Size: 3072 MB
#物理内存大小
Good Memory Size: 3072 MB
#平台固件级别
Platform Firmware level: Not Available
#固件版本
Firmware Version: IBM,SPH05195
#是否允许控制台登录
Console Login: enable
# 是否允许控制台登录
Auto Restart: true
是否是全芯
Full Core: false
再见
欲知后事如何,请看《AIX之设备管理总结篇(三)》