※ リポジトリはhttps://github.com/linux-ha-japan/vm-ctl-1.0 へ移行しました。
仮想マシンリソース制御機能
Revision | 3ed7d1d70d6d8d70ee6edd912be42996f8568cba (tree) |
---|---|
Zeit | 2012-02-09 18:23:58 |
Autor | Yuusuke Iida <iidayuus@inte...> |
Commiter | Yuusuke Iida |
By grep, plural letters revised a searched problem.
@@ -1,6 +1,6 @@ | ||
1 | 1 | AC_PREREQ(2.59) |
2 | -AC_INIT(vm-ctl, 1.0) | |
3 | -AM_INIT_AUTOMAKE(vm-ctl, 1.0) | |
2 | +AC_INIT(vm-ctl, 1.1) | |
3 | +AM_INIT_AUTOMAKE(vm-ctl, 1.1) | |
4 | 4 | AC_PREFIX_DEFAULT(/usr) |
5 | 5 | PM_PKG="pacemaker" |
6 | 6 | AM_MAINTAINER_MODE |
@@ -36,8 +36,6 @@ | ||
36 | 36 | BACKUP_CRMFILE="/var/run/.vm-ctl.crm.bk" |
37 | 37 | TMP_CRMFILE="/tmp/.vm-ctl.crm" |
38 | 38 | VMCTL_LOGFILE="/tmp/.vm-ctl.log" |
39 | -PLUS_INFINITY="1000000" | |
40 | -MINUS_INFINITY="-1000000" | |
41 | 39 | DEF_VALUE="" |
42 | 40 | DC_NODE="" |
43 | 41 | DEL_ID_LIST="" |
@@ -132,7 +130,7 @@ | ||
132 | 130 | local _cnt |
133 | 131 | for _domain_name in ${DOMAIN_LIST} |
134 | 132 | do |
135 | - _cnt=$(virsh list --all 2>/dev/null | grep -w ${_domain_name} 2>/dev/null | wc -l 2>/dev/null) | |
133 | + _cnt=$(virsh list --all 2>/dev/null | grep "[[:blank:]]${_domain_name}[[:blank:]]" 2>/dev/null | wc -l 2>/dev/null) | |
136 | 134 | if [ ${_cnt} -eq 0 ] ; then |
137 | 135 | echo ${VMCTL_MSG03} |
138 | 136 | exit 1 |
@@ -154,7 +152,7 @@ | ||
154 | 152 | local _cnt |
155 | 153 | for _domain_name in ${DOMAIN_LIST} |
156 | 154 | do |
157 | - _cnt=$(grep "primitive ${PRM_NM}_${_domain_name}" ${BACKUP_CRMFILE} 2>/dev/null | wc -l 2>/dev/null) | |
155 | + _cnt=$(grep "primitive ${PRM_NM}_${_domain_name}[[:blank:]]" ${BACKUP_CRMFILE} 2>/dev/null | wc -l 2>/dev/null) | |
158 | 156 | if [ ${_cnt} -ne ${1} ] ; then |
159 | 157 | echo ${2} |
160 | 158 | exit 1 |
@@ -238,7 +236,7 @@ | ||
238 | 236 | chk_crm_error() |
239 | 237 | { |
240 | 238 | local _cnt |
241 | - _cnt=$(egrep 'ERROR|error' ${VMCTL_LOGFILE} 2>/dev/null | wc -l 2>/dev/null) | |
239 | + _cnt=$(egrep "(ERROR|error): " ${VMCTL_LOGFILE} 2>/dev/null | wc -l 2>/dev/null) | |
242 | 240 | if [ ${_cnt} -ne 0 -o ${1} -ne 0 ] ; then |
243 | 241 | echo ${VMCTL_MSG05} |
244 | 242 | cat ${VMCTL_LOGFILE} |
@@ -415,7 +413,7 @@ | ||
415 | 413 | fi |
416 | 414 | |
417 | 415 | if [ ! "${vm_start_op}" -o ${#vm_start_op[@]} -ne 3 ] ; then |
418 | - DEF_VALUE="vm_start_op=(0 120s restart)" | |
416 | + DEF_VALUE="vm_start_op=(0 90s restart)" | |
419 | 417 | eval echo "${VMCTL_MSG22}" |
420 | 418 | eval ${DEF_VALUE} |
421 | 419 | fi |
@@ -529,7 +527,7 @@ | ||
529 | 527 | while read _line |
530 | 528 | do |
531 | 529 | _migrate=$(echo ${_line} 2>/dev/null \ |
532 | - | grep "primitive ${1}" 2>/dev/null \ | |
530 | + | grep "primitive ${1}[[:blank:]]" 2>/dev/null \ | |
533 | 531 | | sed -e 's/.*allow-migrate=\"\(true\|false\)\" .*/\1/' 2>/dev/null) |
534 | 532 | if [ "${_migrate}" ] ; then |
535 | 533 | if [ "${_migrate}" = "true" ] ; then |
@@ -556,7 +554,7 @@ | ||
556 | 554 | while read _line |
557 | 555 | do |
558 | 556 | _act=$(echo ${_line} 2>/dev/null \ |
559 | - | grep "location ${LOC_NM}_${1}.*ACT" 2>/dev/null \ | |
557 | + | grep "location ${LOC_NM}_.*_ACT ${PRM_NM}_${1}[[:blank:]]" 2>/dev/null \ | |
560 | 558 | | awk '{print $5}') |
561 | 559 | if [ "${_act}" ] ; then |
562 | 560 | RET_VALUE=${_act} |
@@ -578,9 +576,10 @@ | ||
578 | 576 | while read _line |
579 | 577 | do |
580 | 578 | _migrate=$(echo ${_line} 2>/dev/null \ |
581 | - | egrep "location cli-standby-${1}|location cli-prefer-${1}" 2>/dev/null) | |
579 | + | egrep "^location cli-(standby|prefer)-${1}[[:blank:]]" 2>/dev/null) | |
582 | 580 | if [ ${?} -eq 0 ] ; then |
583 | 581 | RET_VALUE="yes" |
582 | + break | |
584 | 583 | fi |
585 | 584 | done < ${BACKUP_CRMFILE} |
586 | 585 | } |
@@ -930,7 +929,7 @@ | ||
930 | 929 | RET_VALUE="" |
931 | 930 | chk_cluster |
932 | 931 | RET_VALUE=$(crm status inactive 2>/dev/null \ |
933 | - | grep ${1}.*VirtualDomain 2>/dev/null \ | |
932 | + | grep "${1}[[:blank:]].*VirtualDomain" 2>/dev/null \ | |
934 | 933 | | awk '{print $4}' 2>/dev/null) |
935 | 934 | } |
936 | 935 |
@@ -950,7 +949,7 @@ | ||
950 | 949 | RET_VALUE="" |
951 | 950 | chk_cluster |
952 | 951 | RET_VALUE=$(crm status inactive 2>/dev/null \ |
953 | - | grep VirtualDomain.*${1} 2>/dev/null \ | |
952 | + | egrep "VirtualDomain.*[[:blank:]]${1}($|[[:blank:]])" 2>/dev/null \ | |
954 | 953 | | awk '{print $1}' 2>/dev/null \ |
955 | 954 | | awk '{print substr($1,length("'${PRM_NM}'_")+1)}' 2>/dev/null) |
956 | 955 | } |
@@ -1006,41 +1005,48 @@ | ||
1006 | 1005 | local _scores |
1007 | 1006 | local _flg=0 |
1008 | 1007 | |
1008 | + chk_cluster | |
1009 | 1009 | if [ ${3} ] ; then |
1010 | - chk_cluster | |
1011 | - _cnt=$(crm status 2>/dev/null \ | |
1012 | - | grep -v VirtualDomain 2>/dev/null \ | |
1013 | - | grep "Online" 2>/dev/null \ | |
1014 | - | grep ${3} 2>/dev/null \ | |
1015 | - | wc -l 2>/dev/null) | |
1016 | - if [ ${_cnt} -eq 0 ] ; then | |
1017 | - echo ${VMCTL_MSG14} | |
1018 | - return 1 | |
1019 | - fi | |
1010 | + _cnt=$(crm status bynode 2>/dev/null \ | |
1011 | + | egrep "^Node ${3}([[:blank:]].*|): online$" 2>/dev/null \ | |
1012 | + | wc -l 2>/dev/null) | |
1013 | + else | |
1014 | + _cnt=$(crm status bynode 2>/dev/null \ | |
1015 | + | grep "^Node .*: online$" 2>/dev/null \ | |
1016 | + | egrep -v "^Node ${2}(|:)[[:blank:]]" 2>/dev/null \ | |
1017 | + | wc -l 2>/dev/null) | |
1020 | 1018 | fi |
1019 | + if [ ${_cnt} -eq 0 ] ; then | |
1020 | + echo ${VMCTL_MSG14} | |
1021 | + return 1 | |
1022 | + fi | |
1023 | + | |
1021 | 1024 | chk_cluster |
1022 | 1025 | crm status inactive 2>/dev/null \ |
1023 | - | grep ${PRM_NM}_${1}.*VirtualDomain 2>/dev/null \ | |
1024 | - | egrep 'unmanaged' >/dev/null 2>&1 | |
1026 | + | grep "${PRM_NM}_${1}[[:blank:]].*VirtualDomain" 2>/dev/null \ | |
1027 | + | egrep '[[:blank:]]\(unmanaged\)' >/dev/null 2>&1 | |
1025 | 1028 | if [ ${?} -eq 0 ] ; then |
1026 | 1029 | echo ${VMCTL_MSG25} |
1027 | 1030 | return 1 |
1028 | 1031 | fi |
1032 | + | |
1029 | 1033 | chk_cluster |
1030 | - _scores=$(crm configure ptest scores 2>/dev/null \ | |
1031 | - | grep "native_color: ${PRM_NM}_${1} allocation score on ${3}" 2>/dev/null \ | |
1032 | - | grep -v ${2} 2>/dev/null \ | |
1033 | - | awk '{print $7}' 2>/dev/null) | |
1034 | - | |
1035 | 1034 | if [ ${3} ] ; then |
1036 | - if [ "${_scores}" = "${MINUS_INFINITY}" ] ; then | |
1035 | + _scores=$(crm configure ptest scores 2>/dev/null \ | |
1036 | + | grep "native_color: ${PRM_NM}_${1} allocation score on ${3}:" 2>/dev/null \ | |
1037 | + | awk '{print $7}' 2>/dev/null) | |
1038 | + if [ "${_scores}" = "-1000000" -o "${_scores}" = "-INFINITY" ] ; then | |
1037 | 1039 | eval echo "${VMCTL_MSG19}" |
1038 | 1040 | return 1 |
1039 | 1041 | fi |
1040 | 1042 | else |
1043 | + _scores=$(crm configure ptest scores 2>/dev/null \ | |
1044 | + | grep "native_color: ${PRM_NM}_${1} allocation score on " 2>/dev/null \ | |
1045 | + | grep -v "[[:blank:]]${2}:" 2>/dev/null \ | |
1046 | + | awk '{print $7}' 2>/dev/null) | |
1041 | 1047 | for _score in ${_scores} |
1042 | 1048 | do |
1043 | - if [ "${_score}" != "${MINUS_INFINITY}" ] ; then | |
1049 | + if [ "${_score}" != "-1000000" -a "${_score}" != "-INFINITY" ] ; then | |
1044 | 1050 | _flg=1 |
1045 | 1051 | fi |
1046 | 1052 | done |
@@ -1144,7 +1150,7 @@ | ||
1144 | 1150 | fi |
1145 | 1151 | crm_get_actrsc_node ${PRM_NM}_${1} |
1146 | 1152 | if [ ! ${3} ] ; then |
1147 | - if [ ${RET_VALUE} -a "${RET_VALUE}" != "${2}" ] ; then | |
1153 | + if [ "${RET_VALUE}" -a "${RET_VALUE}" != "${2}" ] ; then | |
1148 | 1154 | break |
1149 | 1155 | fi |
1150 | 1156 | else |
@@ -35,7 +35,9 @@ | ||
35 | 35 | vm_migration_transport="ssh" |
36 | 36 | |
37 | 37 | # VMリソースオペレーション(interval timeout on-fail) |
38 | -vm_start_op=(0 120s restart) | |
38 | +# 2011/10/04: 以下のバグにより、現在startとstopのタイムアウトは揃える必要あり | |
39 | +# http://developerbugs.linux-foundation.org/show_bug.cgi?id=2560 | |
40 | +vm_start_op=(0 90s restart) | |
39 | 41 | vm_stop_op=(0 90s) |
40 | 42 | vm_monitor_op=(10s 30s restart) |
41 | 43 | vm_migrate_to_op=(0 300s) |
@@ -2,7 +2,7 @@ | ||
2 | 2 | # Derived definitions |
3 | 3 | ######################################## |
4 | 4 | %define name vm-ctl |
5 | -%define version 1.0 | |
5 | +%define version 1.1 | |
6 | 6 | %define release 1 |
7 | 7 | %define prefix /usr |
8 | 8 | %define vmctldir vm-ctl |