DevOps让系统管理更轻松。
分类:
2009-01-30 17:13:37
odm是由一组对象类和对象所组成的数据库。对象类相当于oracle数据库中的table,由odmcreate创建,删除可以使用odmdrop,对象就相当于table中的row或叫记录,可以使用odmadd命令加入对象,使用odm delete命令删除,使用odmchange命令修改指定记录。查询的命令可以使用odmget。
使用 ODM 命令
当使用 odmcreate 或者 odmdrop 命令来创建或者删除对象类时,请使用以下方法之一指定将从中访问类定义文件的目录:
将文件存储在 $ODMDIR 指示的缺省目录下,即:/usr/lib/objrepos 目录。
使用 export 命令设置 ODMDIR 环境变量以指定存储目录。
使用 unset 命令取消 ODMDIR 环境变量的设置,用 cd 命令将当前目录更改为您要存储对象类的目录。然后,在该目录中运行 ODM 命令。定义对象类的文件将被存储在当前目录下。
使用 odmdelete、odmadd、odmchange、odmshow 或者 odmget 命令与类和对象一起工作时,请使用以下方法之一指定包含对象类的目录:
与 $ODMDIR 指示的缺省目录(即 /usr/lib/objrepos 目录)中的对象类一起工作。
使用 export 命令设置 ODMDIR 环境变量来指定目录。
从命令行使用 export 命令将 ODMPATH 环境变量设置为一个字符串,该字符串包含将在其中搜索对象类的、用冒号隔开的目录的列表。例如:
$ export ODMPATH = /usr/lib/objrepos:/tmp/myrepos
仅当 $ODMDIR 所指定的目录中不包含对象类时,才搜索 $ODMPATH 中的目录。
比较常用的命令是odmget与odmadd命令:
odmget:
odmget [ -q Criteria ] ObjectClass ...
描述
odmget 命令以搜索规则和对象类列表为输入,从指定的对象类中检索选定的对象,并写 ASCII odmadd 输入文件到标准输出。
标志
-q Criteria 指定用于从对象类中选择对象的搜索条件。如果没有指定标准(没有 -q 标志),检索对象类中的所有对象。
F50:[/]#odmget -q name=hdisk1 CuAt |more
CuAt:
name = "hdisk1"
attribute = "unique_id"
value = "2308AJ27R0820CDNES-309170W03IBMscsi"
type = "R"
generic = ""
rep = "sl"
nls_index = 0
odmadd :
添加对象到创建的对象类。
语法
odmadd [ InputFile ... ]
描述
odmadd 命令以一个或多个InputFile 文件为输入,并且添加对象到带有节文件数据的对象类中。每个 InputFile 文件是 ASCII 文件,包含有描述要添加到对象类中的对象的数据。如果没有指定文件,从标准输入中获取输入。
在使用odmadd命令之前,最好使用odmget 查询并生成样本文件,然后修改一下,再使用odmadd命令加入指定的对象类。
注意:odmadd 将把对象添加到$ODMDIR变量指定的目录所对应的对象类中去。
比如:
取一份odm样板;
# odmget -q name=hdisk2 CuAt > hdisk3odm.add
编辑样本文件,最重要的是修改pvid属性回原有硬盘的pvid,另外一项属性unique_id名字也一起修改了。当然还有name要更正为hdisk3。插入修改过的文件到CuAt
# odmadd hdisk3odm.add
odmshow命令:
odmshow 命令以对象类名称(ObjectClass)为输入并在屏幕上显示类描述。 类描述的格式采用 odmcreate 命令的输入格式。
F50:[/]#odmshow CuDv |more
class CuDv {
char name[16]; /* offset: 0xc ( 12) */
short status; /* offset: 0x
short chgstatus; /* offset: 0x1e ( 30) */
char ddins[16]; /* offset: 0x20 ( 32) */
char location[16]; /* offset: 0x30 ( 48) */
char parent[16]; /* offset: 0x40 ( 64) */
char connwhere[16]; /* offset: 0x50 ( 80) */
link PdDv PdDv uniquetype PdDvLn[48]; /* offset: 0x60 ( 96) */
};
/*
descriptors: 8
structure size: 0x98 (152) bytes
data offset: 0x200030e8
population: 55 objects (55 active, 0 deleted)
*/
需要了解的几个对象类:
PdDv 预定义设备库
PdDv:
type = "scsd"
class = "pdisk"
subclass = "ssar"
prefix = "pdisk"
devid = ""
以上三个参数 再使用mkdev的时候需要用到,需要特别关注,如果查找起来不方便的话,可以使用lsdev –P –H 产看预配置数据库中的这三个选项。此项对于使用mkdev生成虚设备也非常方便。
PdAt 预定义属性库
PdAt:
uniquetype = "tape/scsi/
attribute = "block_size"
deflt = "1024"
values = "0-245760,1"
CuDv 用户自定义设备库
CuDv:
name = "rmt0"
status = 1
chgstatus = 2
ddins = "tape"
location = "04-C0-00-1,0"
parent = "scsi0"
connwhere = "1,0"
PdDvLn = "tape/scsi/
CuDv:
name = "hdisk1"
status = 1
chgstatus = 2
ddins = "scdisk"
location = "10-60-00-1,0"
parent = "scsi0"
connwhere = "1,0"
PdDvLn = "disk/scsi/scsd"
CuAt:用户自定义属性库
CuAt:
name = "hdisk1"
attribute = "unique_id"
value = "2308AJ27R0820CDNES-309170W03IBMscsi"
type = "R"
generic = ""
rep = "sl"
nls_index = 0
由以上输出可以看出,在使用odmget命令查找odm用户数据库信息时,可以使用 name=×作为查询key。
Additional Device Object Classes
CuDep:
name = "rootvg"
dependency = "hd6"
CuDep:
name = "datavg"
dependency = "lv01"
CuDvDr: 设备驱动
resource = "devno"
value1 = "22"
value2 = "0"
value3 = "rmt0"
CuVPD: 设备vpd信息 vital product data
name = "rmt0"
vpd = "*MFEXABYTE
PN
PdCn: 预定义配置信息
uniquetype = "adapter/pci/sym875"
connkey = "scsi"
connwhere = "1,0"
ODM 管理的系统数据包括:
设备配置信息
SMIT(菜单、选择器和对话框)的显示信息
安装和更新过程的重要产品数据
通信配置信息
系统资源信息
注意:ODM中不包含设备驱动程序,只能从设备驱动文件往CuDvDr中写驱动记录
设备状态:
Define:没有加载驱动,但odm中有定义
Available:已加载驱动,并将驱动记录进CuDvDr.
Stopped:停止状态,有些设备支持此状态