新加磁盘如何创建逻辑分区

查看命令 lvs  vgs pvs

1: 新建一个分区(partition)
fdisk /dev/sdb

2:创建PV(物理卷)
pvcreate /dev/sdb1
pvs或 pvscan 查看创建物理卷


3:创建VG(卷组)
vgcreate testvg /dev/sdb1

4:查看VG可用空间
vgdisplay

5:建立逻辑卷(LV)
lvcreate -L 10G -n testlv testvg

6:建立文件系统
mkfs.ext4 /dev/sdb1 或者 mkfs - t ext4 /dev/sdb1

7:建立挂载点
mkdir /mnt/data

8:挂载存储
fdist -l 查看磁盘可挂载分区
mount /dev/mapper/testvg-testlv /mnt/data

9:修改fstab配置文件实现自动挂载

vim /etc/fstab
/dev/mapper/testvg-testlv /mnt/data ext4 defaults 1 1


空间扩展 新加磁盘扩展逻辑卷

1: 新建一个分区(partition)
fdisk /dev/sdc

2:创建PV(物理卷)
pvcreate /dev/sdc1
pvs或 pvscan 查看创建物理卷

3:將PV加入到已存在的VG
vgextend testvg /dev/sdc1

4:增加LV的大小
lvresize -L +20G /dev/mapper/testvg-testlv
lvextent  -l+100%FREE  /dev/mapper/testvg-testlv (扩展百分之百)

刷新磁盘容量
resize2fs /dev/mapper/testvg-testlv

5:減少LV容量
lvresize -L -5G /dev/mapper/testvg-testlv
刷新磁盘容量
resize2fs /dev/mapper/testvg-testlv

#使扩展生效
xfs_growfs /dev/mapper/testvg-testlv
df -hT

注意:扩展磁盘大于2T 需要修改成gpt ##将MBR分区形式转换为GPT分区形式
fdisk /dev/sdc
g n 回车 回车 p w t 31修改模式为linux lvm

PV操作

将扩展块移动到现有物理卷上
使用 pvs 命令检查是否使用了所需的物理卷(我们计划删除 LVM 中的 /dev/sdc 磁盘)。

# pvs -o+pv_used

如果使用了,请检查卷组中的其他物理卷是否有足够的空闲扩展块extent。
如果有的话,你可以在需要删除的设备上运行 pvmove 命令。扩展块将被分配到其他设备上。
# pvmove /dev/sdc

当 pvmove 命令完成后。再次使用 pvs 命令检查物理卷是否有空闲。

# pvs -o+pv_used

如果它是空闲的,使用 vgreduce 命令从卷组中删除物理卷 /dev/sdc。

# vgreduce myvg /dev/sdc
Removed "/dev/sdc" from volume group "vg01"

最后,运行 pvremove 命令从 LVM 配置中删除磁盘。现在,磁盘已经完全从 LVM 中移除,可以用于其他用途。

# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.

移动扩展块到新磁盘
如果你在卷组中的其他物理卷上没有足够的可用扩展。使用以下步骤添加新的物理卷。

# fdisk -l

操作系统中检测到磁盘后,使用 pvcreate 命令创建物理卷。

# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created

使用以下命令将新的物理卷 /dev/sdd 添加到现有卷组 vg01 中。

# vgextend vg01 /dev/sdd
Volume group "vg01" successfully extended

现在,使用 pvs 命令查看你添加的新磁盘 /dev/sdd。

# pvs -o+pv_used

使用 pvmove 命令将数据从 /dev/sdc 移动到 /dev/sdd。

# pvmove /dev/sdc /dev/sdd

数据移动到新磁盘后。再次使用 pvs 命令检查物理卷是否空闲。

# pvs -o+pv_used
如果空闲,使用 vgreduce 命令从卷组中删除物理卷 /dev/sdc。

# vgreduce myvg /dev/sdc
Removed "/dev/sdc" from volume group "vg01"
最后,运行 pvremove 命令从 LVM 配置中删除磁盘。现在,磁盘已经完全从 LVM 中移除,可以用于其他用途。

# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.

脚本编写

#!/bin/bash
#author: zfy
#time: 2022/9/28
#explain: LVM disk extend
device=$1
if [ ! -n "$device" ]
then
    echo "input disk device name"
    echo "sh xxx.sh sdb|sdc"
    exit 1
fi
vg_name=`vgs |awk 'NR==2{print $1}'`

#mount_name=`df -H|awk  '{if($1~/mapper/) print $1}'`
ls -l /dev/mapper
echo "需要扩展的是第几行的逻辑卷"
read num
mount_name=`ls /dev/mapper/ |awk "NR==$num {print}"`
echo $device $vg_name $mount_name
create_MBR(){
echo "top1  create disk MBR model"
fdisk /dev/$device <<EOF
n
p



t
8e
w

lsblk
fdisk -l
EOF
}

create_GPT(){
echo "top1  create disk GPT model"
fdisk /dev/$device <<EOF
g
n



t
31
w

lsblk
fdisk -l
EOF
}

extend_disk(){
echo "top2 create pv $device"
if test -e /dev/$device
then
   pvcreate /dev/"$device"1
else
   echo "device $device nonexistence "
   exit 1
fi
echo "top3 pv add vg"
vgextend $vg_name  /dev/"$device"1

echo "top4 add vg"
if test -e /dev/mapper/"$mount_name"
then
   lvextend  -l+100%FREE  /dev/mapper/"$mount_name"
else
    echo "$mount_name  dir nonexistence "
    exit 1
fi
echo "top5 refresh vg "
resize2fs  /dev/mapper/"$mount_name"

echo "top6 take effect vg"
xfs_growfs /dev/mapper/"$mount_name"
df -H
}

pv_delete(){
#如果PV已经使用并且有数据要提前移动数据后进行缩减
#pvmove /dev/sdc
pvs -o+pv_used
echo "缩减磁盘大小 M|G|T"
read size
lvresize -L -$size /dev/mapper/"$mount_name"

#在vg中删除pv
vgreduce $vg_name /dev/$device"1"
vgs

#在pv中删除sdc
pvremove /dev/$device"1"
pvs
resize2fs  /dev/mapper/"$mount_name"
xfs_growfs /dev/mapper/"$mount_name"
df -H
lsblk
fdisk -l
}

## 模式选择
echo "Your disk is greater than 2T and not create pv.  input gt" 
echo "Your disk is less than 2T and not create pv.  input lt"
echo "delete new create pv.  input delete"
echo "only extend vg.  input lvm"
read a
case $a in 
gt)
    create_GPT
        extend_disk
    ;;
lt)
        create_MBR
    extend_disk
    ;;
delete)
        pv_delete
        ;;
extend)
        extend_disk
    ;;
*)
        echo "都给提示了还输错,zz"
;;
esac

 

warning:别动系统分区!!!!!
先进入centos救援模式;用刻录的U盘或者CD启动
Troublesbooting --> Rescure a CentOS system --> 等待一段时间 --> 按"1 continue继续进行"
先激活逻辑卷
lvm vgchange -ay 
然你就可以查看vgs,psv,lvs或者用lvdisply对应逻辑卷组的路径
然后还原扩展/缩减的逻辑卷
lvextend -l +100%FREE /dev/mapper/cs-root
resize2fs /dev/mapper/cs-root
还原后先在救援模式下进行挂载,如果不报错说明还原成功
mount /dev/mapper/cs-root /mnt
reboot重新启动看是否恢复正常

  

posted on 2022-03-04 18:12  宇小白  阅读(221)  评论(0编辑  收藏  举报