当前位置: 首页 > 工具软件 > ODM > 使用案例 >

ODM

魏澄邈
2023-12-01

复杂度2/5
机密度2/5

最后更新2021/05/16

ODM就是AIX的注册表,或者说是一个超小型数据库,支持基本的查询,插入,更新,删除功能,用于保存操作系统的所有配置、参数等等设置。为什么要弄个数据库?弄文本格式不可以么?例如现在的Linux,就是全文本啊!ODM有ODM的好处,当然也有坏处,对于收费的商业系统来说,好处多于坏处。
好处:类似数据库结构化储存,性能好,可靠性高,不容易由于乱修改而出错,具有最基本的加密保护。
坏处:具有一定的复杂度,信息不直截了当,每个涉及的程序都需要自己做基本的文本编辑功能。

ODM自身没什么可说,但几乎AIX所有的管理,都会与ODM中的某些项目对应,这些就比较复杂而机密了,具体信息会在各个专题介绍项目中说明。

ODM是一组保存在特定目路中的文件。这个目录由环境变量ODMDIR决定,省缺设置是/etc/objrepos,你可以任意修改环境变量为需要的目录。由于执行很多AIX命令都需要从ODM中获取参数、配置信息,ODMDIR修改之后,再执行命令就会从你新指定的目录里寻找对应ODM文件操作。ODM确实非常重要,因此再进行任何操作、实验、测试之前,最好做个备份,以防万一。几乎所有ODM文件都在/etc/objrepos及其子目录下,因此简单地tar这个目录并妥善保存,就是很好的备份了。需要注意的是有时候真实的ODM文件可能保存在其它所在,在/etc/objrepos下只是个链接,这时使用tar备份就要小心,要确保把链接对应的源文件(在其它目录下,例如/usr/lib/objrepos)也备份。

ODM本质上是个数据库,其中每个ODM文件就是一个表。表头和数据分别是一个文件,一般表头文件是xxxx.vc。
几个重要的ODM文件(表):
所有Cu开头的文件都是保存customized,也就是与缺省、预定义(Pd,predefined)的参数不同的信息。写AIX驱动程序的逻辑是先读Cuxx ODM,如果有相关项目参数,则采用这个参数的配置,如果找不到,则去读Pdxx的ODM。当然,如果程序是你自己写的,其实随便你读哪个,只是约定熟成,别自己给自己找麻烦,折磨使用者不是?
CuAt Customized Attribute
CuDep Customized Dependents(当前系统设备之间的依存关系,父设备,子设备相互关系都在这)
CuDv Customized Device(所有当前系统的设备都在这里)
CuVPD Customized Vital Product Data (所有当前系统的设备的重要固化信息,固化信息可以说是那些不能修改的东西,例如板卡系列号,型号等等)
CuDvDr Customized Device Driver(所有当前系统设备对应的驱动,某个设备用哪个驱动去管理,就靠这个了)
CuPath Customized Path(专用于多路径设备,但看起来只有ibm的mpio用这个,第三方自己的驱动不会用,毕竟ODM还不是完全公开的)
CuPathAt Customized Path Attribute,保存path的failover,loadbalance等参数
PdDv Pre-defined Device (系统能支持的、既已安装驱动的设备都在这)PdDv详解
PdAt Pre-defined Attribute (系统能支持的、既已安装驱动程序的设备的缺省参数)PdAt详解
PdAtXtd Pre-defined Attribute Extended,感觉跟PdAt一样啊!为啥再弄一个?是表太大要拆分还是表头格式问题?后者的可能性更大,感觉是个特别的blob
PdCn Pre-defined Connection,预定义的设备间依存关系

Config_Rules 这个是对系统进行config时要经过几次检查,如何配置进行定义的表,有点类似管理设备初始化顺序,特别针对那些需要二次初始化的物理设备或者没有物理设备只有逻辑关系的逻辑设备有用。由于逻辑设备大部分都是凭空产生,不会通过父设备初始化的时候自动刷新出来,这个表就有用了。另外很多启动设备在bootimage里初始化和kernel起来之后初始化是不一样的,boot的时候只进行简单过程,需要二次刷新,这些会在bringup章节里具体介绍。

odmcreate可以通过文本格式的定义,生成一个新的odm文件(表),odmdrop则是删除。
odmadd和odmdelete是insert和delete
odmget是查询
odmchange是update
odmshow是显示表格式

更进一步odm操作参数和数据格式支持,读者自行参考:AIX odm管理

 类似资料: