У меня есть система, которая периодически создает снимки состояния 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'
Я могу без проблем создавать и удалять новые снимки - всего несколько из них, созданных сегодня, демонстрируют такое поведение.
Разрешения выглядят нормально. Системный журнал не показывает ничего связанного. Я проверил btrfs filesystem df
, и есть место для файловой системы - как для метаданных, так и для данных.
Пример команды удаления показывает:
#...
ioctl(3, 0x5000940f, 0xffa1d1f0) = -1 ENOTEMPTY (Directory not empty)
close(3) = 0
#...
Какие дальнейшие шаги я могу предпринять для расследования причины?
Покопавшись, я нашел корень проблемы
Внутри снимков, которые нельзя удалить, был вложенный том - видимо еще один снимок. Система, которая создает периодические снимки, должна запускаться дважды для одного и того же пути - таким образом создается второй снимок. внутри первый, вместо того, чтобы взять это имя.
Для записи я использую btrfs-снимок вращения через простой cron. Поскольку у меня было несколько частот моментальных снимков, две должны были выполняться за одну секунду. Возможное решение - перейти на anacron
.