无法删除 btrfs 快照

无法删除 btrfs 快照

我有一个系统,它会定期创建 btrfs 快照并删除旧快照。今天,我开始收到警告,说系统无法删除一些旧快照。

这是我得到的输出:

root@machine:/path# btrfs sub del 2014-10-26--01-50-01-@ten_minutely
Delete subvolume '/path/2014-10-26--01-50-01-@ten_minutely'
ERROR: cannot delete '/path/2014-10-26--01-50-01-@ten_minutely'

我可以毫无问题地创建和删除新的快照 - 只有今天创建的几个快照表现出这种行为。

权限看起来没问题。Syslog 没有显示任何相关内容。我检查了一下btrfs filesystem df,文件系统有可用空间 - 既可用于元数据,也可用于数据。

删除命令的 strace 显示:

#...
ioctl(3, 0x5000940f, 0xffa1d1f0)        = -1 ENOTEMPTY (Directory not empty)
close(3)                                = 0
#...

我可以采取哪些进一步措施来调查原因?

答案1

经过一番挖掘,我找到了问题的根源

在无法删除的快照中,有一个子卷- 显然是另一个快照。创建定期快照的系统必须针对同一路径运行两次 - 从而创建第二个快照里面第一个,而不是采用这个名字。

为了记录,我正在使用btrfs-快照旋转通过普通的 cron。由于我有多个快照频率,因此两个必须在同一秒运行。一个潜在的解决方案是切换到anacron

相关内容