一、故障描述
工程师接到客户报修电话,一台Linux系统磁盘使用率异常。df -h 发现磁盘使用率为100%,重启后再次尝试df -h,磁盘使用率仍为100%。通过lsof查看没有应用程序占用已删除的数据;du -sh /查看/目录下占用的空间与实际磁盘使用率不一致,相差很大,磁盘无可用空间存储数据。
二、故障排查
2.1 命令输出现象如下
2.2 排查
经过对比分析发现,此系统使用的是SUSE12版本默认的btrfs文件系统。btrfs文件系统使用快照功能,每隔一段时间或使用yast、zypper安装过组件或安装过内核补丁时,将对系统进行一次快照,以方便后续对系统进行回退。
查看根目录下的.snapshots快照文件,.snapshots文件占用96G:
通过快照管理器的命令查看系统上的快照文件,可以看到多个快照文件占用空间:
三、故障处理
使用快照管理器的命令进行删除快照文件:
snapper delete --sync 155
snapper delete --sync 156
snapper delete --sync 159
snapper delete --sync 160
snapper delete --sync 161
snapper delete --sync 162
snapper delete --sync 163
snapper delete --sync 164
snapper delete --sync 165
snapper delete --sync 166
删除快照后磁盘空间恢复正常。如后续再次出现此类问题可按照以上方式进行删除和恢复。
四、经验总结
Snapper 允许创建和管理文件系统快照。文件系统快照允许在某个时间点保留文件系统状态的副本。Snapper 的标准设置旨在允许回滚系统更改。但也可以使用它来创建用户数据的磁盘备份。作为此功能的基础,Snapper 使用 Btrfs 文件系统或带有 XFS 或 Ext4 文件系统的精简配置的 LVM 卷。
4.1 快照类型
虽然快照本身在技术意义上没有区别,但根据触发它们的事件,可将其分为3种类型:
1)时间线快照
每小时创建一个快照。旧快照将自动删除。默认情况下,保留最近十天、几个月和几年的第一个快照。默认情况下禁用时间线快照。
2)安装快照
每当使用 YaST 或 Zypper 安装一个或多个软件包时,均会创建一对快照:一个在安装开始之前(Pre),另一个在安装完成之后(Post)。如果安装了内核等重要的系统组件,快照对将被标记为“重要”(important=yes)快照。旧快照将自动删除。默认情况下,保留最后十个重要快照和最后十个“常规”(包括管理快照)快照。默认情况下启用安装快照。
3)管理快照
每当使用 YaST 管理系统时,均会创建一对快照:一个在 YaST 模块启动时(Pre),另一个在模块关闭时(Post)。旧快照将自动删除。默认情况下,保留最后十个重要快照和最后十个“常规”快照(包括安装快照)。默认情况下启用管理快照。
4.2 删除快照
使用 YaST Snapper模块删除快照:首先从列表中选择一个快照,然后单击删除。
使用命令行工具删除快照,需使用快照编号:运行snapper list,得到当前系统的快照编号;运行snapper delete编号,删除快照。
使用 Snapper 删除快照时,释放的空间将由后台运行的 Btrfs 进程占用。因此,可用空间的可见性和可用性被延迟。如果需要通过删除立即可用的快照来释放空间,请将该选项--sync与 delete 命令一起使用。
注意:删除pre快照时,应将其对应的post快照一并删除(反之亦然)。
snapper delete --sync 23
删除默认 (root) 配置的快照 23 并使释放的空间立即可用。
提示:旧快照占用更多磁盘空间,快照越旧,占用的磁盘空间越多。所以通过删除快照释放硬盘空间时,应首先删除旧快照。
如欲了解更多,请登录安图特官方网站:www.antute.com.cn