在 AIX 中,如果我想更改设备属性,我可以使用两种不同的方法:
更改属性和重新配置设备。属性会立即改变。但如果使用了 devices (例如, fs mounted ),则无法使用此方式。
# 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.
更改属性,但不重新配置设备。 仅在设备重新配置后(通常在重启后)才会更改属性
# chdev -l hdisk6 -a hcheck_interval=20 -P hdisk6 changed
因此,必须有一种方法来检查合规性——“设备属性的当前值是多少?”
在 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 运行(不符合要求),但 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
}