千家信息网

AIX系统学习之-ODM管理

发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,AIX系统学习之-ODM管理AIX ODM(Object Database Manager)是由一组对象类和对象所组成的数据库。对象类相当于Oracle数据库中的object,由ODM create创
千家信息网最后更新 2024年11月12日AIX系统学习之-ODM管理

AIX系统学习之-ODM管理


AIX ODM(Object Database Manager)是由一组对象类和对象所组成的数据库。对象类相当于Oracle数据库中的object,由ODM create创建,删除可以使用ODM drop,对象就相当于object下的数据(比如磁盘、Adapter等),可以使用ODM add命令加入对象,使用ODM delete命令删除,使用ODM change命令修改指定记录。查询的命令可以使用odmget。
一、使用 ODM 命令
当使用 odmcreate 或者 odmdrop 命令来创建或者删除对象类时,请使用以下方法之一指定将从中访问类定义文件的目录:
将文件存储在 $ODMDIR 指示的缺省目录下,即:/usr/lib/objrepos 目录。

[root@aix211 /]#echo $ODMDIR/etc/objrepos

比较常用的命令是odmget与odmadd命令
1、odmget:
odmget [ -q Criteria ] ObjectClass ...
描述
odmget 命令以搜索规则和对象类列表为输入,从指定的对象类中检索选定的对象,并写 ASCII odmadd 输入文件到标准输出。
标志
-q Criteria 指定用于从对象类中选择对象的搜索条件。如果没有指定标准(没有 -q 标志),检索对象类中的所有对象。

#odmget -q name=hdisk1 CuAt |moreCuAt:       name = "hdisk1"       attribute = "unique_id"       value = "2308AJ27R0820CDNES-309170W03IBMscsi"       type = "R"       generic = ""       rep = "sl"       nls_index = 0

2、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

3、odmshow命令:
odmshow 命令以对象类名称(ObjectClass)为输入并在屏幕上显示类描述。 类描述的格式采用 odmcreate 命令的输入格式。

#odmshow CuDv |moreclass CuDv {       char name[16];                               /* offset: 0xc ( 12) */       short status;                                /* offset: 0x1c ( 28) */       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/8mm"attribute = "block_size"deflt = "1024"values = "0-245760,1"

CuDv 用户自定义设备库

CuDv:name = "rmt0"status = 1chgstatus = 2ddins = "tape"location = "04-C0-00-1,0"parent = "scsi0"connwhere = "1,0"PdDvLn = "tape/scsi/8mm"

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 = "*MFEXABYTEPN21F8842"

PdCn: 预定义配置信息

uniquetype = "adapter/pci/sym875"connkey = "scsi"connwhere = "1,0"

三、ODM 管理的系统数据包括:
设备配置信息
SMIT(菜单、选择器和对话框)的显示信息
安装和更新过程的重要产品数据
通信配置信息
系统资源信息
注意:ODM中不包含设备驱动程序,只能从设备驱动文件往CuDvDr中写驱动记录
设备状态:
Define:没有加载驱动,但odm中有定义
Available:已加载驱动,并将驱动记录进CuDvDr.
Stopped:停止状态,有些设备支持此状态

四、案例:

搜索对象所属的对象类别:

Usage:

for i in `ls $ODMDIR`; do (odmget $i 2>/dev/null |grep -p 特定字符串); done


1、搜索hdisk0所属的对象类别

[root@aix211 /]#for i in `ls $ODMDIR`; do (odmget $i 2>/dev/null |grep -p hdisk0);done

CuAt:        name = "hdisk0"        attribute = "unique_id"        value = "21080005E93A0AST373307LC03IBMscsi"        type = "R"        generic = ""        rep = "nl"        nls_index = 79CuAt:        name = "hdisk0"        attribute = "pvid"        value = "00040f8aaa29d28e0000000000000000"        type = "R"        generic = "D"        rep = "s"        nls_index = 2CuAt:        name = "hdisk0"        attribute = "size_in_mb"        value = "73400"        type = "R"        generic = "D"        rep = "nr"        nls_index = 60CuAt:        name = "hdisk0"        attribute = "led"        value = "0x57D"        type = "Z"        generic = ""        rep = "nr"        nls_index = 0CuAt:        name = "hdisk0"        attribute = "message_no"        value = "87"        type = "T"        generic = ""        rep = "nl"        nls_index = 0CuAt:        name = "hdisk0"        attribute = "diag_scsd"        value = "a500000107000507000c0d"        type = "R"        generic = ""        rep = "s"        nls_index = 0CuDv:        name = "hdisk0"        status = 1        chgstatus = 2        ddins = "scdisk"        location = "1S-08-00-8,0"        parent = "scsi0"        connwhere = "8,0"        PdDvLn = "disk/scsi/scsd"CuDvDr:        resource = "devno"        value1 = "24"        value2 = "0"        value3 = "hdisk0"CuPath:        name = "hdisk0"        parent = "scsi0"        connection = "8,0"        alias = ""        path_status = 1        path_id = 0CuVPD:        name = "hdisk0"        vpd_type = 0        vpd = "*MFIBM     *TM\n\ST373307LC      *F00P3072     *RL4335304A*SN0005E93A*ECH12094    *P00P2672     *Z0\n\000003129F00013E*Z0812C512"

2、搜索网关地址所属的对象类别:

[root@aix211 /]#for i in `ls $ODMDIR`; do (odmget $i 2>/dev/null |grep -p 192.168.8.1);done

CuAt:        name = "inet0"        attribute = "route"        value = "net,-hopcount,0,,0,192.168.8.1"        type = "R"        generic = "DU"        rep = "s"        nls_index = 0

通过以上可以了解,每个对象所属的对象类别,然后可以用odmdelete删除对应的对象即可

例如删除hdisk0:

[root@aix211 /]#odmdelet -o CuDv -q "name=hdisk0"

0