lc_lvm.in

来自「lustre 1.6.5 source code」· IN 代码 · 共 594 行 · 第 1/2 页

IN
594
字号
    declare -i i=$1    local lvm_cmd    case "${LINE_MARKER[i]}" in    "${PV_MARKER}")        lvm_cmd="pvcreate -ff -y ${OP_OPTS[i]} ${LVM_NAME[i]}"        ;;    "${VG_MARKER}")        lvm_cmd="vgcreate ${OP_OPTS[i]} ${LVM_NAME[i]} ${SIXTH_ITEM[i]}"        ;;    "${LV_MARKER}")        if [ -z "${LVM_NAME[i]}" ]; then            lvm_cmd="lvcreate -L ${SIXTH_ITEM[i]} ${OP_OPTS[i]} ${SEVENTH_ITEM[i]}"        else            lvm_cmd="lvcreate -L ${SIXTH_ITEM[i]} -n ${LVM_NAME[i]} ${OP_OPTS[i]} ${SEVENTH_ITEM[i]}"        fi        ;;    esac    echo ${lvm_cmd}    return 0}# cmdline_rm_LVs vg_name## Construct command line to remove all the LVs on $vg_name.# If $vg_name is null, then remove all the LVs in the host.cmdline_rm_LVs() {    local vg_name=$1    local lvm_rm_cmd    lvm_rm_cmd="vgchange -a n ${vg_name} &&"    lvm_rm_cmd=${lvm_rm_cmd}" vgdisplay -v ${vg_name} | grep \"LV Name\" | awk '{print \$3}' |"    lvm_rm_cmd=${lvm_rm_cmd}" while read lv; do lvremove -f \$lv; done"    echo ${lvm_rm_cmd}    return 0}# cmdline_rm_LV lv_path## Construct command line to remove LV $lv_pathcmdline_rm_LV() {    local lv_path=$1    local lvm_rm_cmd    lvm_rm_cmd="lvchange -a n ${lv_path} && lvremove -f ${lv_path}"    echo ${lvm_rm_cmd}    return 0}# cmdline_rm_VG vg_name## Construct command line to remove VG $vg_namecmdline_rm_VG() {    local vg_name=$1    local lvm_rm_cmd    # Remove all the LVs on this VG    lvm_rm_cmd=$(cmdline_rm_LVs ${vg_name})    # Remove this VG    lvm_rm_cmd=${lvm_rm_cmd}" && vgremove ${vg_name}"    echo ${lvm_rm_cmd}    return 0}# cmdline_rm_VGs## Construct command line to remove all the VGs in the hostcmdline_rm_VGs() {    local lvm_rm_cmd    # Remove all the LVs in the host    lvm_rm_cmd=$(cmdline_rm_LVs)    # Remove all the VGs in the host    lvm_rm_cmd=${lvm_rm_cmd}" && vgdisplay | grep \"VG Name\" | awk '{print \$3}' |"    lvm_rm_cmd=${lvm_rm_cmd}" while read vg; do vgremove \$vg; done"    echo ${lvm_rm_cmd}    return 0}# cmdline_rm_PVs## Construct command line to remove all the PVs in the hostcmdline_rm_PVs() {    local lvm_rm_cmd    # Remove all the LVs and VGs in the host    lvm_rm_cmd=$(cmdline_rm_VGs)    # Remove all the PVs in the host    lvm_rm_cmd=${lvm_rm_cmd}" && pvdisplay | grep \"PV Name\" | awk '{print \$3}' |"    lvm_rm_cmd=${lvm_rm_cmd}" while read pv; do pvremove -ff -y \$pv; done"    echo ${lvm_rm_cmd}    return 0}# construct_lvm_teardown_cmdline index## Construct the teardown command line for LVM devices in ${HOST_NAME[index]}construct_lvm_teardown_cmdline() {    declare -i i=$1    local lvm_rm_cmd    case "${LINE_MARKER[i]}" in    "${LV_MARKER}")        lvm_rm_cmd=$(cmdline_rm_LVs ${SEVENTH_ITEM[i]})        ;;    "${VG_MARKER}")        # Remove all the VGs in the host        lvm_rm_cmd=$(cmdline_rm_VGs)        ;;    "${PV_MARKER}")        # Remove all the PVs in the host        lvm_rm_cmd=$(cmdline_rm_PVs)        ;;    esac    echo ${lvm_rm_cmd}    return 0}# construct_lvm_rm_cmdline index## Construct the remove command line for LVM device ${LVM_NAME[index]}construct_lvm_rm_cmdline() {    declare -i i=$1    local lvm_rm_cmd                            case "${LINE_MARKER[i]}" in    "${LV_MARKER}")        lvm_rm_cmd=$(cmdline_rm_LV ${LVM_NAME[i]})        ;;    "${VG_MARKER}")        lvm_rm_cmd=$(cmdline_rm_VG ${LVM_NAME[i]})        ;;    "${PV_MARKER}")        lvm_rm_cmd="pvremove -ff -y ${LVM_NAME[i]}"        ;;    esac    echo ${lvm_rm_cmd}    return 0}# construct_lvm_cmdline host_name## Construct the command line of LVM utilities to be run in the $host_nameconstruct_lvm_cmdline() {    LVM_CMDLINE=    local host_name=$1    local lvm_cmd    declare -i i    # Construct command line    for ((i = 0; i < ${#HOST_NAME[@]}; i++)); do        lvm_cmd=        if [ "${host_name}" = "${HOST_NAME[i]}" ]; then            case "${OP_MODE[i]}" in            "" | create)                    # Construct the create command line                    lvm_cmd=$(construct_lvm_create_cmdline ${i})                    ;;            remove)                    if [ -z "${LVM_NAME[i]}" ]; then                        # Construct the teardown command line                        lvm_cmd=$(construct_lvm_teardown_cmdline ${i})                    else    # Remove instead of teardown                        # Construct the remove command line                        lvm_cmd=$(construct_lvm_rm_cmdline ${i})                    fi                    ;;            *)                echo >&2 "`basename $0`: construct_lvm_cmdline() error:"\                         "Invalid operation mode - \"${OP_MODE[i]}\"!"                return 1                ;;            esac            if [ -z "${LVM_CMDLINE}" ]; then                LVM_CMDLINE=${lvm_cmd}            else                LVM_CMDLINE=${LVM_CMDLINE}" && "${lvm_cmd}            fi        fi    done    return 0}# config_lvm_devs host_name## Run remote command to configure LVM devices in $host_nameconfig_lvm_devs() {    local host_name=$1    # Construct the LVM utilities command line    if ! construct_lvm_cmdline ${host_name}; then        return 1    fi        if [ -z "${LVM_CMDLINE}" ]; then        verbose_output "There are no LVM devices on host ${host_name}"\        "needed to be configured."        return 0    fi    # Run remote command to configure LVM devices in $host_name    verbose_output "Configuring LVM devices in host ${host_name}..."    verbose_output "Configure command line is: \"${LVM_CMDLINE}\""    REMOTE_CMD[pid_num]="${REMOTE} ${host_name} \"${LVM_CMDLINE}\""    ${REMOTE} ${host_name} "(${EXPORT_PATH} ${LVM_CMDLINE})" >&2 &    REMOTE_PID[pid_num]=$!    let "pid_num += 1"    return 0}# Run remote command to configure all the LVM devices specified# in the csv fileconfig_lvm() {    declare -i i=0    declare -i idx=0        # Index of NODE_NAME array    local host_name    local failed_status    # Initialize the NODE_NAME array    unset NODE_NAME    for ((i = 0; i < ${#HOST_NAME[@]}; i++)); do        host_name=${HOST_NAME[i]}        configured_host ${host_name} && continue        NODE_NAME[idx]=${host_name}        let "idx += 1"        # Run remote command to configure LVM devices in $host_name        if ! config_lvm_devs ${host_name}; then            return 1        fi    done    if [ ${#HOST_NAME[@]} -eq 0 -o ${#REMOTE_PID[@]} -eq 0 ]; then        verbose_output "There are no LVM devices to be configured."        return 0    fi    # Wait for the exit status of the background remote command    verbose_output "Waiting for the return of the remote command..."    failed_status=false    for ((pid_num = 0; pid_num < ${#REMOTE_PID[@]}; pid_num++)); do        wait ${REMOTE_PID[${pid_num}]}        if [ ${PIPESTATUS[0]} -ne 0 ]; then            echo >&2 "`basename $0`: config_lvm() error: Failed"\                 "to execute \"${REMOTE_CMD[${pid_num}]}\"!"            failed_status=true        fi    done    if ${failed_status}; then        return 1    fi    verbose_output "All the LVM devices are configured successfully!"    return 0}# Main flow# Check the csv fileif ! check_file $1; then    exit 1    fi# Get the list of nodes to be operated onNODES_TO_USE=$(get_nodelist)[ ${PIPESTATUS[0]} -ne 0 ] && echo >&2 "${NODES_TO_USE}" && exit 1# Check the node listcheck_nodelist ${NODES_TO_USE} || exit 1# Get all the LVM device items from the csv file if ! get_lvm_items ${CSV_FILE}; then    exit 1fi# Configure the LVM devices if ! config_lvm; then    exit 1fiexit 0

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?