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 目录。 

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

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

1
2
3
4
5
6
7
8
9
#odmget -q name=hdisk1 CuAt |more
CuAt:
        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 

1
# odmadd hdisk3odm.add

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#odmshow CuDv |more
class  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    预定义设备库

1
2
3
4
5
6
PdDv:
        type =  "scsd"
        class  "pdisk"
        subclass =  "ssar"
        prefix =  "pdisk"
        devid =  ""

     以上三个参数 再使用mkdev的时候需要用到,需要特别关注,如果查找起来不方便的话,可以使用lsdev –P –H 产看预配置数据库中的这三个选项。此项对于使用mkdev生成虚设备也非常方便。
PdAt    预定义属性库

1
2
3
4
5
PdAt:
uniquetype =  "tape/scsi/8mm"
attribute  "block_size"
deflt =  "1024"
values =  "0-245760,1"

CuDv   用户自定义设备库

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

CuDv:

1
2
3
4
5
6
7
8
  name =  "hdisk1"
        status =  1
        chgstatus =  2
        ddins =  "scdisk"
        location =  "10-60-00-1,0"
        parent =  "scsi0"
        connwhere =  "1,0"
        PdDvLn =  "disk/scsi/scsd"

CuAt:用户自定义属性库

1
2
3
4
5
6
7
8
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:

1
2
name =  "rootvg"
dependency =  "hd6"

CuDep:

1
2
name =  "datavg"
dependency =  "lv01"

CuDvDr:          设备驱动

1
2
3
4
resource =  "devno"
value1 =  "22"
value2 =  "0"
value3 =  "rmt0"

CuVPD:            设备vpd信息 vital product data

1
2
3
name =  "rmt0"
vpd =  "*MFEXABYTE
PN21F8842"

PdCn:             预定义配置信息

1
2
3
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
CuAt:
         name =  "hdisk0"
         attribute  "unique_id"
         value =  "21080005E93A0AST373307LC03IBMscsi"
         type =  "R"
         generic =  ""
         rep =  "nl"
         nls_index =  79
CuAt:
         name =  "hdisk0"
         attribute  "pvid"
         value =  "00040f8aaa29d28e0000000000000000"
         type =  "R"
         generic =  "D"
         rep =  "s"
         nls_index =  2
CuAt:
         name =  "hdisk0"
         attribute  "size_in_mb"
         value =  "73400"
         type =  "R"
         generic =  "D"
         rep =  "nr"
         nls_index =  60
CuAt:
         name =  "hdisk0"
         attribute  "led"
         value =  "0x57D"
         type =  "Z"
         generic =  ""
         rep =  "nr"
         nls_index =  0
CuAt:
         name =  "hdisk0"
         attribute  "message_no"
         value =  "87"
         type =  "T"
         generic =  ""
         rep =  "nl"
         nls_index =  0
CuAt:
         name =  "hdisk0"
         attribute  "diag_scsd"
         value =  "a500000107000507000c0d"
         type =  "R"
         generic =  ""
         rep =  "s"
         nls_index =  0
CuDv:
         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 =  0
CuVPD:
         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

1
2
3
4
5
6
7
8
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"










本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1563830,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
人工智能 Windows
浪潮YuanChat发布:个人电脑秒变AI助手
【2月更文挑战第3天】浪潮YuanChat发布:个人电脑秒变AI助手
71 1
浪潮YuanChat发布:个人电脑秒变AI助手
|
9月前
|
机器学习/深度学习 数据采集 人工智能
AI开发硬件基础经验
AI开发硬件基础经验
204 0
AI开发硬件基础经验
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
AI日报:苹果为使用Mac的人工智能开发者推出开源工具
AI日报:苹果为使用Mac的人工智能开发者推出开源工具
49 0
|
4月前
|
人工智能 JavaScript 物联网
极智AI | 全志XR806 OpenHarmony鸿蒙系统固件编译
大家好,我是极智视界,本教程详细记录了全志 XR806 OpenHarmony 鸿蒙系统固件编译的方法。
36 0
|
4月前
|
人工智能
极智AI | 全志XR806 OpenHarmony鸿蒙系统固件烧录
大家好,我是极智视界,本教程详细记录了全志 XR806 OpenHarmony 鸿蒙系统固件烧录的方法。
43 0
|
6月前
|
人工智能
AI大模型,让认知操作系统
AI大模型,让认知操作系统
71 0
|
9月前
|
Ubuntu Shell Linux
AI开发软件环境
AI开发软件环境
140 0
AI开发软件环境
|
人工智能 供应链 Cloud Native
看这里!嵌入式、桌面、服务器、AI等多领域分享RISC-V最新技术| 2022云栖大会
欢迎大家在11.3日下午一起深入探讨 RISC-V 当前面临的挑战和机遇。
看这里!嵌入式、桌面、服务器、AI等多领域分享RISC-V最新技术| 2022云栖大会
狗尾草邱楠:2018 AI硬件没有新鲜事
AI虚拟生命将引起更多年轻消费者的关注。
343 0
|
机器学习/深度学习 人工智能 大数据