linux系统lvm脚本自动挂载以及后期lvm扩容和缩减大小
原创
©著作权归作者所有:来自51CTO博客作者宋鹏超的原创作品,请联系作者获取转载授权,否则将追究法律责任
1 分区类型为lvm实现磁盘挂载
1.对于磁盘分区格式化后挂载,脚本实现
#!/bin/bash
echo "n
p
1
t
8e
w
" | fdisk /dev/vdb
sleep 1
pvcreate /dev/vdb1
vgcreate VG01 /dev/vdb1
lvcreate -l 100%FREE -n lv_data VG01
mkfs.ext4 /dev/VG01/lv_data
mkdir /data
mount /dev/VG01/lv_data /data
echo "/dev/mapper/VG01-lv_data /data ext4 defaults 1 1" >>/etc/fstab
2.多个盘分区挂载脚本
#!/bin/bash
partition=/data # 定义最终挂载的名称
vgname=VG01 # 定义逻辑卷组的名称
lvmname=lv_data # 定义逻辑卷的名称
code='b c d e' # 根据分区的实际情况修改
disk=
for i in $code
do
fdisk /dev/vd$i << EOF # 这里自动化完成了所有分区fdisk苦逼的交互步骤
n
p
1
t
8e
w
EOF
disk="$disk /dev/vd${i}1" # 将所有分区拼起来
done
pvcreate $disk
vgcreate $vgname $disk
lvcreate -l 100%FREE -n $lvmname $vgname
mkfs.ext4 /dev/$vgname/$lvmname #格式化为ext4格式
sleep 10
mkdir -p $partition
echo "/dev/$vgname/$lvmname $partition ext4 defaults 1 1" >> /etc/fstab
#echo "/dev/mapper/VG01-lv_data $partition ext4 defaults 1 1" >> /etc/fstab
mount -a
df -h
2 脚本不能使用的排查
(1)环境
设备查看 lsblk 或者 fdisk -l 看到的是 /dev/vdb
(2)文件编码和文件隐藏的字符
Notepad++ 软件查看文件隐藏的字符 : view-----> show symbol -----> show all characters 可以看到每行的最后 显示 LF ,这表示是linux的换行。如果是windows的CRLF,那么脚本执行就不会成功了。
注释:
LF和CRLF是什么
CRLF 是 carriage return line feed 的缩写,中文意思是回车换行。
LF 是 line feed 的缩写,中文意思也是换行。
LF和CRLF区别
CRLF: "\r\n", windows系统环境下的换行方式
LF: "\n", Linux系统环境下的换行方式
3 lvm扩容
1.对添加的新盘进行分区
(1)新盘小于2T,参考第一步脚本对/dev/vdb分区操作fdisk /dev/vdc
(2)新盘大于2T,使用parted命令
# parted
GNU Parted 2.1
Using /dev/mapper/VG00-lv_root
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/vdb # 选择磁盘
Using /dev/vdb
(parted) mklabel gpt # 将MBR磁盘格式化为GPT
Warning: The existing disk label on /dev/vdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
(parted) mkpart # 新建分区
Partition name? []? primary # 分区名
File system type? [ext2]? # 格式(默认,后面可重新格式化)
Start? 0 # 0 表示从头开始建分区
End? -1 # -1 表示对全盘建分区
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i #忽略
(parted) print #显示分区结果
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5498GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 5498GB 5498GB primary
(parted) quit #退出
Information: You may need to update /etc/fstab.
2.用新分区/dev/vdc1进行逻辑卷扩容
pvcreate /dev/vdc1
vgextend VG01 /dev/vdc1 #把vdc的分区空间添加到卷组中
lvextend /dev/VG01/lv_data /dev/vdc1 #把新分区vdc1的空间扩展到逻辑卷lv_data中
resize2fs /dev/VG01/lv_data #扩展文件系统
如果第四步报错(resize2fs: Bad magic number in super-block while trying to open /dev/VG01/lv_data Couldn't find valid filesystem superblock.)
xfs_growfs /dev/VG01/lv_data
df -lh #查看/data目录空间是否增大
4 如何将剩余存储都挂载到目录下
1.查看vg整个大小和lv的大小,看到lv只是使用了一部分存储
2.将vgdisplay查看到的剩余PE加入到lv
vgdisplay
lvresize -l +6144 /dev/mapper/VG01-lv_data
3.查看挂载配置文件/etc/fstab里面的类型选择不同的命令进行扩容
(1)如果是ext4类型,使用 resize2fs /dev/mapper/VG01-lv_data 命令扩容
(2)如果是xfs类型,使用 xfs_growfs /dev/mapper/VG01-lv_data 命令扩容
5 lvm缩减大小
1.卸载逻辑卷并检查文件系统的完整性
umount /data/
e2fsck -f /dev/VG01/lv_data
2.重新刷新逻辑卷的大小为30G
resize2fs /dev/VG01/lv_data 30G
3.把逻辑卷减小到30G
lvreduce -L 30G /dev/VG01/lv_data
4.重新识别逻辑卷的大小并挂载
resize2fs -f /dev/VG01/lv_data
mount /dev/VG01/lv_data /data/