Linux磁盘挂载脚本分享

Linux磁盘挂载脚本分享

Lan Yu Lv2

分享两个磁盘挂载脚本,分别是 2T以下的磁盘挂载和 2T以上的磁盘挂载

小磁盘挂载脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
device=$1 # /dev/vdb
folder=$2 # /data

mkdir -p $folder

echo "n

p

1





w

"|fdisk -u $device

kk="${device}1"

mkfs.xfs $kk

mount $kk $folder
echo `blkid $kk | awk '{print $2}' | sed 's/\"//g'` $folder xfs defaults 0 0 >> /etc/fstab

使用方式:

1
./install.sh /dev/vdb /data

大容量磁盘挂载脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

device=$1 # /dev/vdb
folder=$2 # /data

mkdir -p $folder

echo "mklabel gpt
mkpart p1
xfs
0G
-1
quit
"|parted $device

kk="${device}1"

mkfs.xfs -f $kk

mount $kk $folder
echo `blkid $kk | awk '{print $2}' | sed 's/\"//g'` $folder xfs defaults 0 0 >> /etc/fstab

使用方式同:

1
./install.sh /dev/vdb /data

另外分享两个由deepseek优化的

小容量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/bin/bash

# 硬盘挂载脚本
# 功能: 对2T以下的硬盘进行分区、格式化并挂载
# 使用方法: ./mount_disk.sh [设备路径] [挂载目录]
# 示例: ./mount_disk.sh /dev/vdb /data

# 检查参数数量
if [ $# -ne 2 ]; then
echo "错误: 参数不正确!"
echo "用法: $0 <设备路径> <挂载目录>"
echo "示例: $0 /dev/vdb /data"
exit 1
fi

device=$1 # 设备路径,如 /dev/vdb
folder=$2 # 挂载目录,如 /data

# 检查设备是否存在
if [ ! -b "$device" ]; then
echo "错误: 设备 $device 不存在!"
exit 1
fi

# 创建挂载目录
echo "创建挂载目录: $folder"
mkdir -p "$folder" || {
echo "错误: 无法创建目录 $folder"
exit 1
}

# 使用fdisk进行分区
# 通过heredoc传递分区指令:
# n - 新建分区
# p - 主分区
# 1 - 分区号1
# 回车 - 使用默认起始扇区
# 回车 - 使用默认结束扇区
# w - 写入分区表
echo "正在对 $device 进行分区..."
fdisk -u "$device" <<EOF
n
p
1


w
EOF

# 检查分区是否成功创建
partition="${device}1"
if [ ! -b "$partition" ]; then
echo "错误: 分区 $partition 创建失败!"
exit 1
fi

# 格式化分区为XFS文件系统
echo "正在格式化 $partition 为XFS文件系统..."
mkfs.xfs -f "$partition" || {
echo "错误: 格式化 $partition 失败!"
exit 1
}

# 挂载分区
echo "正在挂载 $partition 到 $folder..."
mount "$partition" "$folder" || {
echo "错误: 挂载 $partition 到 $folder 失败!"
exit 1
}

# 获取分区的UUID
uuid=$(blkid "$partition" -s UUID -o value)
if [ -z "$uuid" ]; then
echo "错误: 无法获取 $partition 的UUID!"
exit 1
fi

# 将挂载信息添加到/etc/fstab实现开机自动挂载
echo "将挂载信息添加到 /etc/fstab..."
echo "UUID=$uuid $folder xfs defaults 0 0" >> /etc/fstab

echo "操作成功完成!"
echo "设备: $device"
echo "分区: $partition"
echo "挂载点: $folder"
echo "文件系统类型: xfs"

大容量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/bin/bash

# GPT分区硬盘挂载脚本
# 功能: 使用parted创建GPT分区表并分区,格式化为XFS文件系统后挂载
# 使用方法: ./mount_disk.sh [设备路径] [挂载目录]
# 示例: ./mount_disk.sh /dev/vdb /data

# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
echo "错误: 此脚本需要root权限运行" >&2
exit 1
fi

# 检查参数数量
if [ $# -ne 2 ]; then
echo "错误: 参数不正确!" >&2
echo "用法: $0 <设备路径> <挂载目录>" >&2
echo "示例: $0 /dev/vdb /data" >&2
exit 1
fi

device="$1" # 设备路径,如 /dev/vdb
folder="$2" # 挂载目录,如 /data

# 检查设备是否存在
if [ ! -b "$device" ]; then
echo "错误: 设备 $device 不存在或不是块设备" >&2
exit 1
fi

# 检查设备是否已被挂载
if grep -q "$device" /proc/mounts; then
echo "错误: 设备 $device 已被挂载" >&2
exit 1
fi

# 创建挂载目录
echo "创建挂载目录: $folder"
if ! mkdir -p "$folder"; then
echo "错误: 无法创建目录 $folder" >&2
exit 1
fi

# 使用parted创建GPT分区表和分区
echo "正在创建GPT分区表和分区..."
if ! parted -s "$device" \
mklabel gpt \
mkpart primary xfs 0% 100%; then
echo "错误: 分区创建失败" >&2
exit 1
fi

# 等待内核重新读取分区表
partprobe "$device"
sleep 2

# 设置分区变量
partition="${device}1"

# 检查分区是否成功创建
if [ ! -b "$partition" ]; then
echo "错误: 分区 $partition 创建失败" >&2
exit 1
fi

# 格式化分区为XFS文件系统
echo "正在格式化 $partition 为XFS文件系统..."
if ! mkfs.xfs -f "$partition"; then
echo "错误: 格式化 $partition 失败" >&2
exit 1
fi

# 挂载分区
echo "正在挂载 $partition 到 $folder..."
if ! mount "$partition" "$folder"; then
echo "错误: 挂载 $partition 到 $folder 失败" >&2
exit 1
fi

# 获取分区的UUID
uuid=$(blkid -s UUID -o value "$partition")
if [ -z "$uuid" ]; then
echo "错误: 无法获取 $partition 的UUID" >&2
exit 1
fi

# 检查fstab中是否已有该挂载点
if grep -q "$folder" /etc/fstab; then
echo "警告: $folder 已在fstab中存在,将更新条目"
sed -i "\|$folder|d" /etc/fstab
fi

# 将挂载信息添加到/etc/fstab
echo "将挂载信息添加到 /etc/fstab..."
echo "UUID=$uuid $folder xfs defaults 0 0" >> /etc/fstab

# 验证fstab条目
if ! grep -q "$uuid" /etc/fstab; then
echo "错误: 无法验证fstab中的条目" >&2
exit 1
fi

echo "操作成功完成!"
echo "设备: $device"
echo "分区: $partition"
echo "挂载点: $folder"
echo "文件系统类型: xfs"
echo "UUID: $uuid"
  • 标题: Linux磁盘挂载脚本分享
  • 作者: Lan Yu
  • 创建于 : 2025-03-27 17:24:52
  • 更新于 : 2026-10-28 12:12:48
  • 链接: https://blog.lanyu.dev/2025/03/27/磁盘挂载脚本/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论