yum install -y lvm2 # 安装 lvm 分区工具
parted -s /dev/sda mklabel msdos
# 转换为 msdos 格式,否则无法加入lvm ; gpt动态分区不支持lvm
pvcreate /dev/sda # 将硬盘加入lvm 分区模式
pvs # 查看所有pv硬盘
pvs /dev/$disk pvscan # 查看指定pv硬盘
vgs # 查看卷组
vgextend eisc /dev/sda # 将硬盘加入 eisc 卷组,然后总容量是各个硬盘容量之和; 如果没有卷组请创建
vgcreate -s 16M eisc /dev/sda
# 创建一个卷组,大小为16M;名字为:eisc
# 并选择的硬盘为:sda 加入eisc卷组
# 新建一个vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pv
#------- 说明 ---------#
# lvs/lvscan # 查看系统里有lv的磁盘
# lvdisplay # 显示系统上面的lv状态,查看分区详情,包括分区目录
# display [dɪˈsple] 显示
# lvremove # 删除lv
# lvreduce # 在lv里减少容量
# lvextend # 增加容量
#---------------------#
lvcreate -L 60G -n a eisc # 创建分区,大小为60GB 名字为:a 所属卷组为 eisc
# 新建一个lv,-l指定pe的个数,-L指定容量,M,G
lvdisplay # 查看分区详情,包括分区目录 ; display [dɪˈsple] 显示
mkfs -t ext4 /dev/eisc/a # 格式化分区
# lvremove /dev/eisc/a # 删除分区
mkdir /www ; mount /dev/eisc/a /www
# 创建 www 目录,并挂载分区
echo "/dev/eisc/a /www ext4 default 0 0 " >> /etc/fstab
# 写入开机启动挂载配置文件
# 自定义开机启动执行命令:/etc/rc.d/rc.local 写入: bash /www/server/StartLnmp.sh
mount -a # 校验 文件配置是否有误的报错信息
#---- 调整分区大小 扩容 ----#
umount /dev/eisc/a* # 取消挂载分区,进行调整分区大小
resize2fs /dev/vda1 # Ext* 如ext2 ext3 扩容文件系统
xfs_growfs /dev/vda1 # xfs 格式扩容文件系统
xfs_growfs / # 如果是lvm分区的系统,对root分区扩容,直接扩容根目录
# xfs_growfs /dev/mapper/rhel-root 错误扩容,提升错误:xfs_growfs: /dev/rhel/root is not a mounted XFS filesystem 不是已装入的文件系统,提示灭有找到这个分区,请直接扩容根目录 /
lvextend -L 70G /dev/eisc/a # 分区扩容增加容量至70GB
resize2fs -f /dev/eisc/a # 扩容文件系统生效
# 注意 【lvm 支持扩容,[ 不支持缩减 ],缩减需要格式化分区后才能挂载】
# lvreduce -L 50G /dev/eisc/a # 缩减分区空间大小 将上面创建的60GB 最终为50GB
# mkfs -t ext4 /dev/eisc/a
lvcreate -L 60GB -s -n eisc /dev/centos00/root
# 创建一个分区快照, -L 60G 表示此次创建快照大小
# -s 表示创建快照 -n lv_image_snap 表示新的快照名为lv_image_snap
# /dev/vg_image/lv_image 为要创建快照的逻辑卷
dd if=/dev/centos00/eisc of=/eisc-images.img
# 将分区创建成镜像
dd if=/eisc-images.img of=/dev/centos00/test
# 将镜像还原到磁盘分区
#!/bin/bash
check(){ # [ʧɛk] 检查
azlvm=$(yum list installed | grep lvm2)
# 定义一个名称为azlvm的变量,值为:
# 查看已安装的包,grep 匹配lvm 名称
cdazlvm=$(echo ${#azlvm}) # 定义一个变量为:打印字符串长度
if [ $cdazlvm -lt 1 ]
# 判断变量字符串长度小于1
then # 然后
yum install -y lvm2
echo "您还没有安装lvm,正在为您安装,请稍后:"
else # 其他情况
echo "lvm 已经安装,无需操作,已经安装的信息为:
$azlvm"
fi # if的结束标记 fi
}
check ; # 调用方法函数;函数名放出来才会执行
input(){
echo "lv 分区,vg 卷,pv 硬盘"
lsdisk=$(fdisk -l | awk -F " " '$1=="Disk" {print i++ " | " $1 " | " $2 " | " $3 $4}' | sed s/\://g )
# 查看所有硬盘
# -F " " 指定分隔符是空格;$1 是第一列;==等于字符串 Disk; 的所有行
# 坐标:行已得到,开始print 打印列; i++ 表示打印序号数数
# " | " 是字符串连接符号 | ; 打印结果的123列内容
# sed s/\://g 修改冒号为空格, 符号 \ 将特殊字符 冒号 转译
lvs=$(lvs |grep "-" | awk -F " " '{print i++ " |分区: " $1 " |卷: " $2 " | " $3 } ')
echo "
查看硬盘:
$lsdisk
查看所有历史分区:
$lsDiskCatalog
查看当前存在的VG 卷 和LV分区如下:
$lvs
"
################## 用户输入 ################
echo "
read 接收窗口命令界面输入的字符串;-p 加文字说明;需要分区的磁盘变量 a
如果输入错误字符或者闪跳,请Ctrl +c 退出重新输入
请输入你要进行分区的磁盘; 磁盘格式为:sdb "
read -p "请输入要分区的磁盘:" disk ;
echo "磁盘挂载目录格式为: /www 将会清空该目录下的文件
下面功能方法涉及不到的参数请回车跳过"
read -p "请输入挂载 [ˈkætəlɔg]目录:" catalog ;
read -p "请输入逻辑 [ˈvɑljum] 卷的组名称如 eisc 请您输入名字:" volume ;
read -p "请输入 [pɑrˈtɪʃən]分区唯一名称如 a 请您输入名字:" partition ;
read -p "请输入分区大小,如: 3G 请您输入:" size ;
DiskCatalog=$(fdisk -l | grep "\-$partition" | awk -F" " '{print $2}' | sed "s/\://g")
# 查看lvm 分区目录; 作为公有变量来使用
# grep 匹配字符包含 -a字 符 字段的行; 特殊转译符号 \; awk -F " " 指定空格为分隔符
# 直接打印结果中的第二列
# sed "s/\://g" 其中 sed s 修改 g 开启特殊字符转译, 特殊字符转译符号 \ 使冒号 : 不被解析;
echo "根据您输入的信息先查找的硬盘目录:
$DiskCatalog
"
}
partition(){
echo "当前是新建LVM卷和挂载新分区"
input ; # 调用输入函数
parted -s /dev/$disk mklabel msdos
# 转换为 msdos 格式,否则无法加入lvm ; gpt动态分区不支持lvm
pvcreate /dev/$disk # 创建物理卷,选择的硬盘为 sdc
# create [kriˈet] 创建
pvs # 查看所有pv硬盘
pvs /dev/$disk pvscan # 查看指定pv硬盘
pvdisplay /dev/$disk # 显示系统上面的pv硬盘状态
# display [dɪˈsple] 显示
# pvremove /dev/xxx # 废除pv硬盘格式,(仅需要了解)
# # remove [riˈmuv] 废除
# pvs/pvscan # 查看系统里有pv的磁盘
# pvdisplay # 显示系统上面的pv状态
vgcreate -s 16M $volume /dev/$disk
# 创建一个卷组,大小为16M;名字为:eisc
# 选择的硬盘为:sdc
# 新建一个vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pv
lvcreate -L $size -n $partition $volume
# 创建逻辑卷,名字为:a
# 新建一个lv,-l指定pe的个数,-L指定容量,M,G
# lvs/lvscan # 查看系统里有lv的磁盘
# lvdisplay # 显示系统上面的lv状态
# lvremove # 删除lv
# lvreduce # 在lv里减少容量
# lvextend # 增加容量
mkfs -t ext4 /dev/mapper/$volume-$partition ;
mkfs -t ext4 /dev/mapper/$volume-$partition
# 格式化分区
rm -rf $catalog
mkdir $catalog # 创建挂载的目录
mount /dev/mapper/$volume-$partition $catalog
# 挂载到目录 /www
df -h # 查看挂载的lvm分区
sed -i "/#eisc$partition/d" /etc/fstab ; sed -i "/^$/d" /etc/fstab
# 挂载删除写记录; 删除空行
echo "
/dev/mapper/$volume-$partition $catalog ext4 defaults 0 0 #eisc$partition
" >> /etc/fstab
}
PartitionSize(){
echo "当前是分区扩容,需要提供大小,分区所属硬盘,挂载目录
需要输入大小,和分区名字
"
input ; # 调用用户输入方法函数;函数名放出来才会执行
# 扩容的是文件系统:Filesystem 列,而不是挂着目录
resize2fs $DiskCatalog # 更新文件系统的大小,即激活 EXT234格式
xfs_growfs $DiskCatalog # xfs 格式的磁盘
df -hT
lvs # 查看分区
}
MandatorySize(){ # [ˈmændəˌtɔri] 强制
echo "当前是分区扩容,需要提供大小,分区所属硬盘,挂载目录
需要输入大小,和分区名字,挂载目录
请注意:需要格式化才能装载(挂载);需要备份数据
"
input ;
catalog=$(df -h | grep "\-$partition" | awk -F" " '{print $6}')
umount /dev/mapper/$volume-$partition $catalog
# 取消现有挂载,然后强制设置大小,再然后:
lvreduce -L $size /dev/mapper/$volume-$partition
# 强制设置大小;首先需要:
# resize2fs /dev/mapper/$volume-$partition # 生效
mkfs -t ext4 /dev/mapper/$volume-$partition
# 格式化
mount /dev/mapper/$volume-$partition $catalog
# 重新挂载
df -h # 再次查看磁盘容量;发现分区已经调整
}
Expansion(){ # [ɪkˈspænʃən] 扩容
echo "将硬盘加入现有的LVM卷,需要硬盘和卷名称两个参数,其他提示回车跳过。列出当前加入LVM分区的硬盘,和现有的PV卷"
pvs # 查看现有pv硬盘:加入lvm的硬盘
vgs # LVM卷
input ; # 调用输入函数
#-------- 转换为 msdos 格式,否则无法加入lvm --------#
parted -s /dev/$disk mklabel msdos
# 转换为 msdos 格式,否则无法加入lvm
pvcreate /dev/$disk # 将硬盘加入lvm, 然后 pvs 再次查看
vgextend $volume /dev/$disk
# 将硬盘加入 eisc 卷组,然后总容量是各个硬盘容量之和
pvs # 再次查看LVM硬盘
}
Delete(){ # [dəˈlit] 删除
echo "
删除操作需要满足先后顺序
1.先删除LV分区:只输入分区名字,其他回车跳过
2.再删除VG卷:只输入卷名字
3.最后删除VG硬盘先后顺序
需要提供卷,分区名字,挂载目录"
input ;
echo "请输入:1删除lv分区,2 删除vg卷,3删除lvm硬盘(取消挂载)
"
read -p "请输入操作:" r
case "$r" in
"1")
dcatalog=$(df -h | grep "\-$partition" | awk -F " " '{print $6}')
# 查看LVM分区的挂载目录 : "\-" 将特殊字符 - 转译
umount $DiskCatalog $dcatalog # 取消挂载的所有分区(lv)才能执行删除
lvremove $DiskCatalog # 删除lvm分区 a ; 简称 lv
lvs
;;
"2")
vgremove /dev/mapper/$volume # 删除eisc卷组(逻辑卷); 简称:vg
vgs
echo "删除了VG卷,请也删除硬盘重新加入LVM,即重新分区;"
;;
"3")
pvremove /dev/$disk # 删除lvm 的硬盘; 简称:pv
pvs
;;
*) echo "
###########################################################
输入错误请重新输入
###########################################################
"
Delete
;;
esac
}
home(){
clear # 清屏
echo "
欢迎来到小绿叶技术博客
www.eisc.cn
LVM自动化分区脚本
请输入对应数字惊醒操作:
1.新建LVM分区 2.分区扩容
3.减少分区至指定大小 4.扩容LVM硬盘
5.lv vg pv 的删除操作
"
read -p " 请输入您的操作:" h
case "$h" in
"1") partition
;;
"2") PartitionSize
;;
"3") MandatorySize
;;
"4") Expansion
;;
"5") Delete
;;
*) echo "输入错误,请重新输入。正在返回主界面"
home
;;
esac
}
home
# 执行脚本:
yum install -y wget
rm -rf lvmpartition.sh ; wget eisc.cn/file/shell/lvmpartition.sh ; sed -i "/^$/d" lvmpartition.sh ; chmod 755 lvmpartition.sh ; ./lvmpartition.sh
Powered by ddoss.cn 12.0
©2015 - 2024 ddoss
渝公网安备50011302222260号 渝ICP备2024035333号 【实验平台安全承诺书】 小绿叶技术社区,优化网络中,点击查看配置信息
您的IP:192.168.122.82,2024-10-10 18:02:40,Processed in 0.02653 second(s).