# Linux LVM Tool完整版本:   (update 2013.5.13)

# 脚本仅供交流学习使用!

# 脚本当前版本为1.0.实现了物理卷的创建,移除,更改(启用/禁用分配),扫描,查看功能.
# 后续会补齐卷组和逻辑卷的管理,整合成一个Linux LVM TOOL.类似于AIX的SMIT.虽然,它只能管理LVM.
# 脚本已在Red Hat Enterprise Linux 5.4 64bit上测试通过.原则上适用于RHEL 5和RHEL 6.
# 欢迎提出改进意见.
# 直接复制请注意标点符号.也可通过微盘下载文件,避免复制引起的问题:http://vdisk.weibo.com/s/zKW6M
#!/bin/bash
# Version 1.0
# AUTHOR:
Xin23
http://weibo.com/231988
PV()
{
NextLine()
{
       echo ' '
}
Split()
{
       echo '-----------------------------------------------------------------------'
}
EchoTitle()
{
       echo "--------$Title-----------------------------------------"
}
ShowPVFirstMenu()
{
       echo '
       Physical Volumn Main Menu
       Input Number To Choose!
       Create Physical Volumn ...... 1
       Remove Physical Volumn ...... 2
       Change Physical Volumn ...... 3
       Show   Physical Volumn ...... 4
       Scan   Physical Volumn ...... 5
       Exit                   ...... 6'
       NextLine
}
GetChoice()
{
       read -p '       Input Your Choice: ' Var
       NextLine
}
ConfirmOperate()
{
       NextLine
       echo "  Continue               ...... y
       Return                 ...... n"
       NextLine
       GetChoice
       NextLine
       Run
}
Run()
{
       if   [ $Var == y ]
            then $Parameter $Disk
       elif [ $Var == n ]
            then Split
                 PV
       else ConfirmOperate
       fi
}
ChooseDisk()
{
       read -p "       Please Choose Disk:    (Example: /dev/sdc)       "  Disk
       NextLine
}
PVChange()
{
       echo '  Which Operate You Want To do ?  '
       NextLine
       echo '        ENABLE  Allocatable    ...... y
       DISABLE Allocatable    ...... n'
       NextLine
       GetChoice
}
CheckPVChange()
{
       if   [ $Var == y ]
            then Parameter='pvchange -x y'
       elif [ $Var == n ]
            then Parameter='pvchange -x n'
       else
            PVChange
       fi
}
PVShow()
{
       echo '  Which Physical Volumn You Want To Show ?        '
       NextLine
       echo '          All    Physical Volumn ...... 1
       Single Physical Volumn ...... 2'
       NextLine
       GetChoice
}
CheckPVShow()
{
       if   [ $Var -eq 1 ]
            then pvdisplay
       elif [ $Var -eq 2 ]
            then pvdisplay $Disk
       fi
}
TestPVShow()
{
       if   [ $Var -eq 1 ]
            then Disk=All
       elif [ $Var -eq 2 ]
            then EchoTitle
                 NextLine
                 ChooseDisk
       fi
}
ShowPVFirstMenu
GetChoice
case $Var in
       "1")
               Title='Create Physical Volumn'
               Parameter=pvcreate
               EchoTitle
               NextLine
               ChooseDisk
               echo "  Disk $Disk Will Be Convert To Physical Volumn"
               ConfirmOperate
               Status=0
       ;;
       "2")
               Title='Remove Physical Volumn'
               EchoTitle
               Parameter=pvremove
               NextLine
               ChooseDisk
               echo "  Disk $Disk Will Be Remove From Physical Volumn"
               ConfirmOperate
               Status=0
       ;;
       "3")
               Title='Change Physical Volumn'
               EchoTitle
               NextLine
               PVChange
               CheckPVChange
               NextLine
               ChooseDisk
               echo "  Physical Volumn $Disk Will Be Change"
               ConfirmOperate
               Status=0
       ;;
       "4")
               Title='Show   Physical Volumn'
               EchoTitle
               NextLine
               PVShow
               NextLine
               TestPVShow
               echo "  Physical Volumn $Disk Will Be Show"
               NextLine
               CheckPVShow
               Status=0
       ;;
       "5")
               Title='Scan   Physical Volumn'
               EchoTitle
               NextLine
               pvscan
               Status=0
       ;;
       "6")
               exit 0
       ;;
        * )
               echo '  Input Error,Retype!'
               PV
       ;;
esac
NeedContinue()
{
       if [ $Status -eq 0 ]
          then NextLine
               Split
               PV
       fi
}
NeedContinue
}
PV