You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在fstab中将轮换使用的多块可移动硬盘挂载到指定位置?

解决方案:自动确保/backup始终挂载轮换的移动硬盘

针对你遇到的手动挂载易出错、意外关机后备份脚本失败的问题,我给你一套可靠的自动化方案,完美适配4块硬盘轮换使用的场景,还能保证除更换硬盘时段外,/backup随时有可用硬盘挂载。

步骤1:给所有备份硬盘配置fstab条目

首先,用blkid /dev/sdX命令(把sdX换成你的硬盘设备名,比如sdb、sdc)获取每块硬盘的UUID。然后在/etc/fstab中为每块硬盘添加条目,注意设置noauto避免系统自动挂载所有硬盘:

# 备份硬盘1
UUID=你的硬盘1UUID /backup ext4 defaults,noauto 0 0
# 备份硬盘2
UUID=你的硬盘2UUID /backup ext4 defaults,noauto 0 0
# 备份硬盘3
UUID=你的硬盘3UUID /backup ext4 defaults,noauto 0 0
# 备份硬盘4
UUID=你的硬盘4UUID /backup ext4 defaults,noauto 0 0

提示:如果你的硬盘用的是NTFS等其他文件系统,把ext4换成对应的类型(比如ntfs-3g)即可。

这样配置后,每块硬盘都可以单独挂载到/backup,系统不会自动挂载它们,挂载逻辑由我们的脚本控制。

步骤2:编写自动挂载检测脚本

创建脚本/usr/local/bin/ensure-backup-mount.sh,用来检查/backup是否挂载,未挂载时自动尝试挂载可用的备份硬盘:

#!/bin/bash

# 先检查/backup是否已经挂载,挂载了就直接退出
if mountpoint -q /backup; then
    exit 0
fi

# 把你4块硬盘的UUID填到这个数组里
BACKUP_DISKS=(
    "硬盘1UUID"
    "硬盘2UUID"
    "硬盘3UUID"
    "硬盘4UUID"
)

# 遍历所有硬盘UUID,尝试挂载当前存在的那块
for disk_uuid in "${BACKUP_DISKS[@]}"; do
    # 检查系统中是否存在这个UUID的硬盘
    if blkid -s UUID -o value | grep -q "^$disk_uuid$"; then
        # 尝试挂载到/backup
        mount UUID="$disk_uuid" /backup
        # 验证挂载是否成功
        if mountpoint -q /backup; then
            echo "Successfully mounted backup disk (UUID: $disk_uuid) to /backup" | logger -t backup-mount
            exit 0
        fi
    fi
done

# 如果所有硬盘都无法挂载,记录错误日志
echo "ERROR: No valid backup disk found or failed to mount any to /backup" | logger -t backup-mount
exit 1

给脚本添加执行权限:

chmod +x /usr/local/bin/ensure-backup-mount.sh

步骤3:设置自动触发机制(开机+定时检查)

我们需要让脚本在开机时自动执行,并且定期检查(防止中途硬盘插拔后未重新挂载),这里推荐用systemd服务+定时器的方案,比cron更可靠:

3.1 创建systemd开机服务

创建/etc/systemd/system/ensure-backup-mount.service文件:

[Unit]
Description=Ensure /backup is mounted with a valid backup disk
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/ensure-backup-mount.sh

[Install]
WantedBy=multi-user.target

启用并启动服务:

systemctl daemon-reload
systemctl enable ensure-backup-mount.service

3.2 创建定时检查定时器

创建/etc/systemd/system/ensure-backup-mount.timer文件,每隔5分钟检查一次挂载状态:

[Unit]
Description=Periodically check if /backup is properly mounted

[Timer]
OnCalendar=*:0/5  # 每5分钟执行一次
Persistent=true

[Install]
WantedBy=timers.target

启用并启动定时器:

systemctl enable ensure-backup-mount.timer
systemctl start ensure-backup-mount.timer

如果你更习惯用cron,也可以运行crontab -e添加以下内容,效果一致:

*/5 * * * * /usr/local/bin/ensure-backup-mount.sh

步骤4:备份脚本额外保险

为彻底避免备份脚本在未挂载时执行失败,建议在你的每日备份脚本开头添加挂载检查:

# 备份脚本开头添加这段
if ! mountpoint -q /backup; then
    echo "ERROR: /backup directory is not mounted! Aborting backup task." | logger -t backup-script
    exit 1
fi

硬盘轮换操作说明

当你需要更换硬盘时,直接拔掉当前挂载的硬盘,插上另一块备份硬盘即可:

  • 开机状态下,定时器会在5分钟内检测到新硬盘并自动挂载到/backup;
  • 关机状态下更换硬盘,下次开机时systemd服务会自动挂载新硬盘。

整个过程无需修改任何配置,完全自动化。

内容的提问来源于stack exchange,提问作者Philip Couling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:25:46