在AIX中,如果我想更改设备属性,我可以使用2种不同的方式:
更改属性并重新configuration设备。 属性会立即改变。 但是如果使用设备(例如,安装了fs),则不能使用这种方式。
# chdev -l hdisk6 -a hcheck_interval=20 Method error (/etc/methods/chgdisk): 0514-062 Cannot perform the requested function because the specified device is busy.
更改属性,但不能重新configuration设备。 属性只有在设备重新configuration后才会改变(通常在重新启动后)
# chdev -l hdisk6 -a hcheck_interval=20 -P hdisk6 changed
因此,必须有一种方法来检查合规性 – “设备属性的当前值是多less?”
在AIX 6.1或更新版本中,我可以通过带有选项“-P”的命令lsattr来检查它(与“-E”不同,它显示存储在ODM中的值,可能与当前值不同)
# for dev in $(lsdev | awk '/^hdisk/ { print $1; }'); do echo $dev $(lsattr -Pl $dev -a hcheck_interval ) $(lsattr -El $dev -a hcheck_interval);done hdisk0 hcheck_interval 20 Health Check Interval True hcheck_interval 20 Health Check Interval True [...] hdisk3 hcheck_interval 20 Health Check Interval True hcheck_interval 20 Health Check Interval True hdisk4 hcheck_interval 0 Health Check Interval True hcheck_interval 0 Health Check Interval True hdisk6 hcheck_interval 0 Health Check Interval True hcheck_interval 20 Health Check Interval True
在上面的例子中,我可以看到hdisk4和hdisk6运行hcheck_interval = 0(不符合),但重新configuration后hdisk6(重新启动后)将运行hcheck_interval = 20(兼容)
但在AIX 5.3或更高版本中,lsattr实用程序中没有“-P”选项。 是否可以在AIX 5.3中检查设备属性的实际值?
更新
在aix 6.1或更新版本中,我也可以用kdb检查当前值。 但是我仍然无法检查aix 5.3中的当前值
# kdb [...] (0)> adevq NAME ADDR STATE ACTIVE_IO ST.MCHNE. hdisk2 0xF1000100379CA800 0x1 0x0 0x0 hdisk1 0xF1000100379CA000 0x1 0x0 0x0 hdisk0 0xF100010037A0C800 0x1 0x0 0x0 hdisk7 0xF100010FECE89800 0x1 0x0 0x0 hdisk8 0xF100010FECF5A800 0x1 0x0 0x0 hdisk6 0xF100010FED079800 0x1 0x0 0x0 (0)> adevq 0xF100010FED079800 [...] hcheck_t &hcheck = 0xF100010FED079890 [...] (0)> ahcheck 0xF100010FED079890 struct health_check { struct watchdog &watch = 0xED079890 uint mode = 0x2 uint interval = 0x0 uint cmd = 0x0 struct device_queue *dev_ptr = 0xF100010FED079800 }