셸 스 크 립 트 프로 그래 밍: Linux 의 자동화 논리 볼 륨 생 성 스 크 립 트
설명: 스 크 립 트 가 실 행 될 때 아래 와 같은 메뉴 를 표시 할 수 있 습 니 다.
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]"
fi
done
#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:" SPV
fdisk /dev/sda << End
n
p
+$SPV
t
$i
8e
w
End
done
partprobe $DISK
#PV $ VG CREATE 在刚创建的PV基础上创建VG
DPV=`fdisk -l /dev/sda | tail -$NPV | awk '{print $1}'`
for I in $DPV ;do
pvcreate $I
done
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 {
######################创建LV
until [ $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/$LV
done
}
#######################缩小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/$LV
done
}
### 程序选择界面
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:" CH
case $CH in
'A')
A
;;
'B')
B
;;
'C')
C
;;
'D')
D
;;
*)
exit
;;
esac
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.