大盘鸡挂载数据盘教程:格式化并挂载到 /data
大盘鸡重装系统后,系统盘和数据盘通常是分开的。系统盘一般只有几十 GB,数据盘则可能是 1TB、2TB 或更大。
本文以 Debian、Ubuntu 系统为例,将 /dev/sdb1 格式化为 XFS,挂载到 /data,并通过 UUID 配置开机自动挂载。
mkfs.xfs -f 会清空目标分区中的全部数据。执行前务必根据容量、型号和挂载位置确认设备名,不要操作系统盘。如果数据盘中有重要文件,请先备份。
一、确认目标磁盘
先查看磁盘信息:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL示例输出:
NAME SIZE TYPE FSTYPE MOUNTPOINTS MODELsda 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 已显示 xfs、ext4 等类型,说明其中已经存在文件系统;后面的强制格式化仍会将其清空。
二、格式化并挂载数据盘
执行完整脚本
下面是一份完整脚本。执行后会要求再次输入设备名,不会直接开始格式化。
#!/usr/bin/env bashset -Eeuo pipefail
DEVICE="/dev/sdb1"MOUNT_POINT="/data"
if [ "$(id -u)" -ne 0 ]; then echo "错误:请使用 root 用户执行" exit 1fi
if [ ! -b "$DEVICE" ]; then echo "错误:$DEVICE 不是有效的块设备" exit 1fi
echo "===== 当前磁盘信息 ====="lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODELecho
read -r -p "即将清空 $DEVICE,输入设备名确认:" CONFIRM_DEVICEif [ "$CONFIRM_DEVICE" != "$DEVICE" ]; then echo "已取消操作" exit 1fi
echo "===== 安装 XFS 工具 ====="apt updateapt 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 1fi
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/fstabprintf 'UUID=%s /data xfs defaults,nofail,relatime 0 0\n' "$UUID" >> /etc/fstab
echo "===== 重新读取并测试配置 ====="systemctl daemon-reloadumount "$MOUNT_POINT"mount "$MOUNT_POINT"
echoecho "===== 挂载状态 ====="findmnt "$MOUNT_POINT"
echoecho "===== 磁盘容量 ====="df -hT "$MOUNT_POINT"
echoecho "===== 块设备信息 ====="lsblk -f
echoecho "===== fstab 配置 ====="grep -nE '[[:space:]]/data[[:space:]]' /etc/fstab
echoecho "数据盘已成功格式化并挂载到 $MOUNT_POINT"脚本开头的两个变量可以按实际情况修改:
DEVICE="/dev/sdb1"MOUNT_POINT="/data"不过脚本中的 /etc/fstab 清理和写入命令固定使用 /data。如果修改挂载目录,也要同步修改这两行。
格式化参数说明
脚本使用的命令是:
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 条目,避免重复挂载配置。
三、验证挂载
检查当前挂载状态
查看挂载来源和参数:
findmnt /data正常输出类似:
TARGET SOURCE FSTYPE OPTIONS/data /dev/sdb1 xfs rw,relatime查看磁盘容量:
df -hT /data正常输出类似:
Filesystem Type Size Used Avail Use% Mounted on/dev/sdb1 xfs 2.0T ... ... ... /data验证开机自动挂载
确认脚本执行无报错后重启服务器:
reboot重新连接后再次检查:
findmnt /datadf -hT /data如果 /data 仍然正常挂载,说明配置完成。
四、总结
大盘鸡重装系统后,建议先确认磁盘结构,再将大容量数据盘挂载到 /data。核心流程包括:确认设备、格式化为 XFS、获取 UUID、写入 /etc/fstab,最后测试自动挂载。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

