在 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或者其他免密工具批量执行磁盘挂载。