linux巧用fstab里的bind参数说明

bind 挂载原理

bind 挂载通过内核的虚拟文件系统(VFS)实现,将源目录的 inode直接映射到目标挂载点。两个路径指向同一存储数据,因此任何修改(包括删除文件)会实时同步到所有绑定路径。

  • 删除文件的影响

    原目录删除文件 → 绑定目录中文件也消失,因为两者共享同一 inode,删除操作实际是减少链接计数。当 inode 的链接数为 0 时,数据被释放。


配置示例

# 源目录      备份挂载点       类型    选项               dump   fsck
/data        /mnt/backup_data   none   bind,ro,nofail    0     0

参数解析

参数 说明
/data 待备份的源目录(需确保已正确挂载)
/mnt/backup_data 备份挂载点(需预先创建目录:mkdir -p /mnt/backup_data
none 绑定挂载无需指定文件系统类型
bind,ro bind启用绑定,ro设置只读(防止备份时数据被意外修改)
nofail 忽略挂载错误(防止系统启动时因源目录未就绪卡死)
0 0 禁用dump备份和fsck检查(备份目录本身无需重复备份)

操作步骤

  1. 创建挂载点

    sudo   mkdir   -p   /mnt/backup_data
  2. 编辑fstab

    sudo   nano   /etc/fstab  # 添加上述示例行
  3. 立即挂载

    sudo  mount   /mnt/backup_data    # 无需指定设备,按fstab配置挂载
  4. 验证挂载

    mount  |  grep  backup_data
    # 输出应包含:/data on /mnt/backup_data  type  none (ro,bind)

备份数据

使用工具(如 rsynctar)备份只读副本:

rsync   -a   /mnt/backup_data/   /backup_storage/  # 同步到备份存储
tar  -czf   backup.tar.gz   /mnt/backup_data       # 打包压缩

高级技巧

  1. 按需挂载(节省资源)
    添加 x-systemd.automount 选项:

    /data  /mnt/backup_data  none  bind,ro,nofail,x-systemd.automount  0  0
    • 效果:仅在访问 /mnt/backup_data 时自动挂载,超时自动卸载。
  2. 递归绑定子目录
    使用 rbind 替代 bind,将子目录和挂载点一并绑定:

    /data  /mnt/backup_data  none  rbind,ro,nofail  0  0

注意事项

  • 权限一致:备份挂载点权限与源目录独立,必要时用 chmod 调整。
  • 挂载顺序:确保源目录(如 /data)在系统启动时先于绑定挂载点加载。
  • 卸载问题:若绑定挂载点繁忙,用 umount -lfuser -kvm /mnt/backup_data 终止占用进程。
发表回复 0

Your email address will not be published.