shell指令碼編程:Linux的自動化邏輯卷建立指令碼

來源:互聯網
上載者:User

寫一個指令碼,實現建立並管理LV:
說明:指令碼執行時,可以顯示一個菜單給使用者,形如下面:
A Create an LV.
B Create an LV in an existing VG.
C Extend an LV.
D Reduce an LV.

如果使用者選擇了A項,則完成如下功能:
1)顯示當前系統上的所有磁碟及磁碟柱面的相關資訊:共有柱面數及空閑柱面範圍;而後提示使用者選擇一個特定的磁碟,
  做為建立LV的磁碟;
2)當使用者選定磁碟後將選定磁碟的分區資訊顯示給使用者;
3)詢問使用者建立的VG名字、PV個數及每個PV的大小;而後建立分分區,分區大小對應於各PV大小;
4)而後建立相應的PV,並以之建立出VG;
5)建立LV:
a)提示使用者輸入LV的大小及名稱後建立LV;
b)格式化此LV;
6)提示使用者指定掛載點
  a)如果掛載點已經存在,且掛載有其它存放裝置,則提示使用者換一個,直到換到一個可用掛載點;
  b)否則,則使用此掛載點掛載此LV; 

如果使用者選擇了B項,則完成以下功能:
1)提示使用者輸入要建立的LV的名字,大小,和VG的名字;
2)建立此LV;(說明:在建立LV之前要測試VG中所餘的空間是否夠指定的LV使用;)

如果使用者選擇了C項,則完成以下功能:
1)提示使用者選定LV;而後顯示當前LV的大小,並提示使用者指定擴充後的大小;
2)擴充此LV至使用者指定的大小;(提示:擴充之前要測試當前VG中是否仍有足夠的磁碟空間可用;)

如果使用者選擇了D項,則完成以下功能:
1)提示使用者選定LV;而後顯示當前LV的大小,並提示使用者指定縮減後的大小;
2)縮減此LV至使用者指定的大小;(提示:縮減之前要測試當前縮減後的空間是否能容納當前LV中的所有資料;)

 

#!/bin/bash#: Title:lvm3.sh #: Synopsis: #: Date:2011-08-01 20:48:38#: Version: 1.0#: Author: Dean #: Options:function A {#DISK INFORMATION          要求使用者只能選擇一個空硬碟進行操作  D=`fdisk -l | grep -v Extended | grep Di | awk '{print $2}' | cut -d: -f1`                //截取出所有的DISK名字for I in $D;do                                                                              //用for迴圈列印出每一個DISK的柱面資訊  C=`fdisk -l $I | grep -v Extended |  head -3 | tail -1 | awk '{print $5}'`                //截取出總柱面資訊   CN=`fdisk -l $I | grep -v Extended | tail -1 | awk '{print $3}' `                         //截取出最後柱面,並排除extend分區    if [ $CN == 'Start' ];then                                                              //排除新硬碟沒有分區的情況       let CN=0       echo "DISK:$I Total:$C Free:$[$C-$CN]"    else       echo "DISK:$I Total:$C Free:$[$C-$CN]"    fidone#USER INPUT        read -p "Please chose a free disk for creating LV:" DISK  fdisk -l $DISK  read -p "Input the VG's name;" VG  read -p "The number of PV;" NPV#FDISK PV  用for迴圈實現建立使用者所要求的PV,精確到每一個for (( i=1;i<=$NPV;i++ ));do  read -p "The size of $i PV:" SPVfdisk /dev/sda << Endnp+$SPV                      t$i8ew Enddone  partprobe $DISK#PV $ VG CREATE                 在剛建立的PV基礎上建立VG  DPV=`fdisk -l /dev/sda | tail -$NPV | awk '{print $1}'`for I in $DPV ;do  pvcreate $Idone  DPV=`echo $DPV`  vgcreate $VG $DPV#LV CREATE                      詢問使用者建立的LV的名字,和vg,建立出LV  read -p "Input the name of LV:" LV  read -p "Input the size of LV;" SLV  lvcreate -L $SLV -n $LV $VG  mke2fs -r /dev/$LV#MOUNT              詢問使用者掛載點,並且直到這個掛載點沒有被佔用,才掛載上LV  read -p "Input the mount dir:" DIR  mount | grep "DIR"  TEST=$?until [ $TEST -eq 0 ] ;do    echo "The dir is exist,try another!"    read -p "Input the mount dir:" DIR    mount | grep "DIR"    TEST=$?done  mount /dev/$VG/$LV}function B {######################建立LVuntil [ $TEST -eq 0 ];do  read -p "Input the the name of LV:" LV  read -p "Input the size of LV:" SLV  vgdisplay  read -p "Input the VG's name:" VG  lvcreate /dev/$VG/$LV  TEST=$?done}#####################擴充LV,如果容量不夠擴充,重新選擇大小進行擴充,直到可以擴充function C {until [ $TEST -eq 0 ];do                                         read -p "Which LV you want extend:" LV            lvdisplay $LV  read -p "Input the VG;s name:" VG  read -p "The size of extend:" SEN  lvextend -L $SEN /dev/$VG/$LV  TEST=$?  resize -p /dev/$VG/$LVdone}#######################縮小LV,如果容量限制不能縮小,重新選擇大小,直到可以縮小,並且縮小前自檢function D {until [ $TEST -eq 0 ];do  read -p "Which LV you want reduce:" LV  lvdisplay $LV  read -p "Input the VG's name:" VG  read -p "The size of reduce to:" SRE  umount /dev/$VG/$LV  e2fsck -f /dev/$VG/$LV  resize2fs /dev/$VG/$LV $SRE  TEST=$?  lvreduce -L $SRE /dev/$VG/$LVdone}### 程式選擇介面echo "------------------------------------------"echo '-----------Program for LVM----------------'echo "A Create an LV.B Create an LV in an existing VG.C Extend an LV.D Reduce an LV."read -p "Your choise,others for quite:" CHcase $CH in'A')     A    ;;'B')     B    ;;'C')     C    ;;'D')     D    ;;  *)    exit    ;;esac

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.