Linux磁盘自动分区并挂载LVM磁盘shell脚本

270 阅读3分钟

在 Linux 系统中,实现磁盘自动分区可以通过fdisk脚本的方法实现,生产环境已有挂载,以下是用虚拟机演示:

一.使用vmware添加磁盘

由于生产环境硬盘已经挂载且有数据,故使用虚拟机添加磁盘做测试。

如图:

1.点击编辑虚拟机设置

​编辑

2.点击添加,选择硬盘

​编辑

3.选择硬盘类型

​编辑

4.选择创建新虚拟磁盘

​编辑

5.指定磁盘容量

​编辑

6.点击下一步,指定磁盘文件名称,这里选默认名称,可以自己手动设置。

​编辑

7.添加成功

​编辑

8.登录xshell连接主机,查看磁盘状态。

​编辑

二.磁盘分区shell脚本

方法一:使用fdisk实现自动分区

fdisk是一个经典的磁盘分区工具,支持 MBR 分区表。

#非交互式磁盘分区脚本,脚本如下:

vim disk_partition_auto.sh

#!/bin/bash

定义要分区的磁盘设备

DISK="/dev/sdb"

使用fdisk命令进行自动分区

{
echo n # 创建一个新的分区
echo p # 选择主分区
echo 1 # 分区号为2
echo   # 使用默认的起始扇区
echo   # 使用默认的结束扇区,即使用剩余的所有空间
echo w # 保存并退出
} | sudo fdisk $DISK

刷新分区表

partprobe $DISK

打印分区信息

fdisk -l $DISK

​编辑

​编辑

#交互式磁盘分区脚本,脚本如下:

#!/bin/bash

提示用户输入要分区的磁盘设备

echo "请输入要分区的磁盘设备(例如 /dev/sda):"

read disk_device

检查磁盘设备是否存在

if [ ! -b "$disk_device" ]; then

    echo "指定的磁盘设备 $disk_device 不存在,请检查输入。"

    exit 1

fi

提示用户输入分区数量

echo "请输入要创建的分区数量:"

read partition_count

循环创建分区

for ((i = 1; i <= partition_count; i++)); do

    echo "正在创建第 $i 个分区..."

    # 提示用户输入分区起始扇区

    echo "请输入第 $i 个分区的起始扇区(直接回车使用默认值):"

    read start_sector

    if [ -z "$start_sector" ]; then

        start_sector=""

    fi

    # 提示用户输入分区大小

    echo "请输入第 $i 个分区的大小(例如 +10G 表示 10GB,直接回车使用剩余空间):"

    read partition_size

    if [ -z "$partition_size" ]; then

        partition_size=""

    fi

    # 使用 fdisk 进行分区操作

    (

        echo n  # 新建分区

        echo p  # 主分区

        echo    # 使用默认分区号

        echo $start_sector

        echo $partition_size

        echo w  # 保存并退出

    ) | fdisk $disk_device

    if [ $? -eq 0 ]; then

        echo "第 $i 个分区创建成功。"

    else

        echo "第 $i 个分区创建失败,请检查磁盘设备和输入信息。"

        exit 1

    fi

done

刷新分区表

partprobe $disk_device

if [ $? -eq 0 ]; then

    echo "分区表刷新成功。"

else

    echo "分区表刷新失败,请手动执行 partprobe $disk_device 命令。"

fi

echo "分区操作完成。"

​编辑

三.磁盘自动挂载lvm卷

1.先安装lvm2程序包

​编辑

2.编写shell脚本,脚本如下

vim lvm_mount_auto.sh

#!/bin/bash

pvcreate /dev/sdb1   #创建物理卷(pv)
pvdisplay
vgcreate dhz-vg /dev/sdb1   #创建卷组(VG)
vgdisplay
lvcreate -l 100%VG -n dhz-lv dhz-vg #创建逻辑卷(LV)
lvdisplay
mkfs.xfs /dev/dhz-vg/dhz-lv  #格式化逻辑卷
mkdir -p /opt   #创建挂载点
mount /dev/dhz-vg/dhz-lv /opt   #挂载LVM卷

​编辑

执行脚本sh lvm_mount_auto.sh

​编辑

3.配置自动挂载分区

echo "/dev/dhz-vg/dhz-lv                        /opt            xfs     defaults        0 0" >> /etc/fstab  #配置自动挂载

4.注意事项

  • 在编辑 /etc/fstab 文件时,务必小心,错误的配置可能导致系统无法正常启动。建议在修改前备份该文件。
  • 如果 LVM 卷的 UUID 发生变化,/etc/fstab 中的设备路径可能会失效,此时可以使用 blkid 命令获取 LVM 卷的 UUID,并在 /etc/fstab 中使用 UUID 进行挂载配置,提高挂载的稳定性。
  • 以上脚本可以合成一个脚本,通过ansbile或者其他免密工具批量执行磁盘挂载。