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只是使用了一部分存储

linux系统lvm脚本自动挂载以及后期lvm扩容和缩减大小_磁盘分区   挂载

2.将vgdisplay查看到的剩余PE加入到lv 

vgdisplay
lvresize -l +6144 /dev/mapper/VG01-lv_data

linux系统lvm脚本自动挂载以及后期lvm扩容和缩减大小_磁盘分区   挂载_02

3.查看挂载配置文件/etc/fstab里面的类型选择不同的命令进行扩容

(1)如果是ext4类型,使用  resize2fs /dev/mapper/VG01-lv_data  命令扩容

linux系统lvm脚本自动挂载以及后期lvm扩容和缩减大小_磁盘分区   挂载_03

(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/

linux系统lvm脚本自动挂载以及后期lvm扩容和缩减大小_磁盘分区   挂载_04