共享快照是什么
共享快照是存储或文件系统在某个时间点保留的只读数据视图,底层多为写时复制(COW)或指针式快照,创建快、初始占用小。共享层再把这份视图以隐藏目录的形式挂进共享路径,客户端就能像浏览普通文件夹一样打开历史版本,自行取回误删或误改的文件,管理员不必每次都走备份恢复流程。
基本信息
| 快照粒度 | 卷 / 文件系统 / 共享级,取决于存储实现 |
|---|---|
| 暴露方式 | 隐藏目录(.snapshot、~snapshot)、Windows「以前的版本」 |
| 客户端要求 | 能访问该共享路径;SMB 侧需服务端支持卷影副本 |
| 权限校验 | 多数实现按访问时或快照创建时的 ACL 判定读权限 |
| 空间占用 | 只保留被改写前的数据块,随改写量与保留份数增长 |
| 还原手段 | 从快照目录复制回普通目录,或由客户端发起还原 |
典型使用场景
- 用户误删或误改文件后自助取回,不占用管理员的备份恢复窗口
- 批量脚本、权限调整、数据导入前先打一份快照留退路
- 排查「昨天还好今天坏了」:对比快照与当前目录快速定位被改动的文件
- 系统升级或迁移前建立快速回滚点,耗时通常远小于全量备份
- 按保留策略留存每日视图,满足审计取证与合规要求
快照目录与暴露配置
快照目录与暴露配置
# Samba 侧把快照目录暴露成客户端的历史版本入口
vfs objects = shadow_copy2
shadow:snapdir = .snapshots # 服务端快照目录名
shadow:format = @GMT-%Y.%m.%d-%H.%M.%S # 快照目录命名格式
shadow:sort = desc # 客户端按时间倒序展示
# 挂载后查看并取回文件(NAS 常见的 .snapshot 形式)
ls /mnt/share/.snapshot/ # 列出可用时间点
cp /mnt/share/.snapshot/hourly.0/report.xlsx ./ # 从快照复制回文件快照访问方式对照
| 平台实现 | 客户端可见路径 | 还原方式 |
|---|---|---|
| NetApp ONTAP | 共享根下 .snapshot 目录 | 直接复制所需文件 |
| Dell EMC / Isilon | 共享下 .snapshot 目录 | 按时间点目录选取复制 |
| Windows Server 卷影副本 | 文件属性「以前的版本」 | 还原或另存副本 |
| Samba + shadow_copy2 | 按 shadow:snapdir 配置的名称 | 客户端出现历史版本入口 |
| ZFS / Btrfs 快照 | 服务端挂载为可读子目录 | 服务端挂载后复制,或经共享模块暴露 |
快照目录看不到时,先确认存储侧到底有没有生成快照,再看共享层是否暴露:多数情况是服务端未发布隐藏目录或策略屏蔽,而不是快照失败。反过来,快照列表里有而客户端目录为空,问题一定在暴露配置。
快照占用取决于「被改写的数据块」而不是文件大小:反复覆盖写的大文件与数据库卷会让占用迅速上涨。回收空间的唯一办法是删除或过期快照,删除前先确认没有正在使用的回滚点。
快照与备份的分工
快照解决的是逻辑误删与误改,和源数据在同一阵列、同一故障域;阵列故障、勒索软件横扫、误删整个卷时快照同样会丢。可靠做法是快照负责高频回滚点,备份负责异地副本,备份介质与生产存储不在同一故障域。