我有一个系统创build定期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'
我可以创build和删除新的快照,而不会产生任何问题,只是今天创build的其中一些快照会出现此问题。
权限看起来不错。 系统日志显示没有关系。 我检查了btrfs filesystem df ,还有可用于文件系统的空间 – 用于元数据和数据。
一条删除命令显示:
#... ioctl(3, 0x5000940f, 0xffa1d1f0) = -1 ENOTEMPTY (Directory not empty) close(3) = 0 #...
我可以采取哪些进一步措施来调查原因?
经过一番挖掘,我find了问题的根源
在无法删除的快照中,有一个子卷 – 显然是另一个快照。 创build定期快照的系统必须为相同path运行两次,因此在第一个快照中创build了第二个快照,而不是采用该名称。
为了logging,我通过普通的cron使用btrfs-snapshot-rotation 。 由于我有多个快照频率,两个必须同时运行。 一个可能的解决scheme是切换到anacron 。