大盘鸡挂载数据盘教程:格式化并挂载到 /data

1137 字
6 分钟
大盘鸡挂载数据盘教程:格式化并挂载到 /data

大盘鸡重装系统后,系统盘和数据盘通常是分开的。系统盘一般只有几十 GB,数据盘则可能是 1TB、2TB 或更大。

本文以 Debian、Ubuntu 系统为例,将 /dev/sdb1 格式化为 XFS,挂载到 /data,并通过 UUID 配置开机自动挂载。

数据清空警告

mkfs.xfs -f 会清空目标分区中的全部数据。执行前务必根据容量、型号和挂载位置确认设备名,不要操作系统盘。如果数据盘中有重要文件,请先备份。

一、确认目标磁盘#

先查看磁盘信息:

Terminal window
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL

示例输出:

NAME SIZE TYPE FSTYPE MOUNTPOINTS MODEL
sda 20G disk QEMU HARDDISK
├─sda1 1M part
├─sda2 122M part vfat /boot/efi
└─sda3 19.9G part ext4 /
sdb 2T disk QEMU HARDDISK
└─sdb1 2T part

这里可以看到:

  • /dev/sda 是系统盘,不能格式化。
  • /dev/sdb1 是准备使用的 2TB 数据分区。
  • 目标挂载目录是 /data

本文假设 /dev/sdb1 已经存在。如果输出中只有 /dev/sdb、没有 /dev/sdb1,需要先创建分区,不能直接执行后面的脚本。

如果 /dev/sdb1 已显示 xfsext4 等类型,说明其中已经存在文件系统;后面的强制格式化仍会将其清空。

二、格式化并挂载数据盘#

执行完整脚本#

下面是一份完整脚本。执行后会要求再次输入设备名,不会直接开始格式化。

#!/usr/bin/env bash
set -Eeuo pipefail
DEVICE="/dev/sdb1"
MOUNT_POINT="/data"
if [ "$(id -u)" -ne 0 ]; then
echo "错误:请使用 root 用户执行"
exit 1
fi
if [ ! -b "$DEVICE" ]; then
echo "错误:$DEVICE 不是有效的块设备"
exit 1
fi
echo "===== 当前磁盘信息 ====="
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
echo
read -r -p "即将清空 $DEVICE,输入设备名确认:" CONFIRM_DEVICE
if [ "$CONFIRM_DEVICE" != "$DEVICE" ]; then
echo "已取消操作"
exit 1
fi
echo "===== 安装 XFS 工具 ====="
apt update
apt install -y xfsprogs
echo "===== 卸载旧挂载 ====="
if mountpoint -q "$MOUNT_POINT"; then
umount "$MOUNT_POINT"
fi
if findmnt -rn -S "$DEVICE" >/dev/null; then
umount "$DEVICE"
fi
echo "===== 格式化数据盘 ====="
mkfs.xfs -f -K -L data "$DEVICE"
echo "===== 创建挂载目录 ====="
mkdir -p "$MOUNT_POINT"
echo "===== 临时挂载数据盘 ====="
mount "$DEVICE" "$MOUNT_POINT"
chown root:root "$MOUNT_POINT"
chmod 755 "$MOUNT_POINT"
echo "===== 获取 UUID ====="
UUID=$(blkid -s UUID -o value "$DEVICE")
if [ -z "$UUID" ]; then
echo "错误:未能获取 $DEVICE 的 UUID"
exit 1
fi
echo "新 UUID:$UUID"
echo "===== 备份 fstab ====="
cp -a /etc/fstab "/etc/fstab.bak.$(date +%F-%H%M%S)"
echo "===== 写入开机自动挂载配置 ====="
sed -i '\|[[:space:]]/data[[:space:]]|d' /etc/fstab
printf 'UUID=%s /data xfs defaults,nofail,relatime 0 0\n' "$UUID" >> /etc/fstab
echo "===== 重新读取并测试配置 ====="
systemctl daemon-reload
umount "$MOUNT_POINT"
mount "$MOUNT_POINT"
echo
echo "===== 挂载状态 ====="
findmnt "$MOUNT_POINT"
echo
echo "===== 磁盘容量 ====="
df -hT "$MOUNT_POINT"
echo
echo "===== 块设备信息 ====="
lsblk -f
echo
echo "===== fstab 配置 ====="
grep -nE '[[:space:]]/data[[:space:]]' /etc/fstab
echo
echo "数据盘已成功格式化并挂载到 $MOUNT_POINT"

脚本开头的两个变量可以按实际情况修改:

Terminal window
DEVICE="/dev/sdb1"
MOUNT_POINT="/data"

不过脚本中的 /etc/fstab 清理和写入命令固定使用 /data。如果修改挂载目录,也要同步修改这两行。

格式化参数说明#

脚本使用的命令是:

Terminal window
mkfs.xfs -f -K -L data /dev/sdb1

各参数含义:

  • -f:强制覆盖已有文件系统。
  • -K:跳过 discard/TRIM,可避免部分虚拟磁盘或云存储长时间停留在 discarding blocks
  • -L data:将文件系统标签设置为 data
  • /dev/sdb1:目标数据分区。

自动挂载配置#

脚本会自动获取新文件系统的 UUID,并在 /etc/fstab 中写入:

UUID=实际UUID /data xfs defaults,nofail,relatime 0 0

使用 UUID 比直接填写 /dev/sdb1 更稳定,可以避免设备名称在重启后发生变化。

参数说明:

  • defaults:使用默认挂载选项。
  • nofail:数据盘异常时不阻塞系统启动。
  • relatime:减少不必要的文件访问时间写入。
  • 0 0:不使用 dump,启动时不执行传统 fsck 检查。

脚本会先备份 /etc/fstab,再删除旧的 /data 条目,避免重复挂载配置。

三、验证挂载#

检查当前挂载状态#

查看挂载来源和参数:

Terminal window
findmnt /data

正常输出类似:

TARGET SOURCE FSTYPE OPTIONS
/data /dev/sdb1 xfs rw,relatime

查看磁盘容量:

Terminal window
df -hT /data

正常输出类似:

Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb1 xfs 2.0T ... ... ... /data

验证开机自动挂载#

确认脚本执行无报错后重启服务器:

Terminal window
reboot

重新连接后再次检查:

Terminal window
findmnt /data
df -hT /data

如果 /data 仍然正常挂载,说明配置完成。

四、总结#

大盘鸡重装系统后,建议先确认磁盘结构,再将大容量数据盘挂载到 /data。核心流程包括:确认设备、格式化为 XFS、获取 UUID、写入 /etc/fstab,最后测试自动挂载。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
大盘鸡挂载数据盘教程:格式化并挂载到 /data
https://blog.is-w.com/posts/mount-large-storage-disk/
作者
Nova
发布于
2026-04-12
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Nova
慢慢折腾,认真记录,每一天都有新的收获。
公告
欢迎来到我的博客,随便看看不用客气!
分类
标签
站点统计
文章
19
分类
6
标签
29
总字数
21,750
运行时长
0
最后活动
0 天前