Назад | Перейти на главную страницу

Невозможно уничтожить снимок ZFS: набор данных уже существует

У меня есть сервер (T5220, хотя я сомневаюсь, что это имеет значение), работающий под Solaris 10 8/07, и у меня есть пул ZFS, mysql, на внутреннем диске. В нем есть файловая система mysql / data / 4.1.12, которую я ежечасно снимаю с помощью скрипта из cron.

У меня есть один снимок, созданный как один из тех ежечасных снимков, который не разрушится. Я переименовал его вне последовательности в «mysql/data/4.1.12@wibble», чтобы мой сценарий не пытался и не смог его уничтожить, но изначально он находился внутри последовательности, хотя я сомневаюсь, что это имеет значение. Он успешно переименовывает. Моментальный снимок можно успешно перемещать и читать из каталога .zfs / snapshots. Клонов на его основе нет.

При попытке его уничтожить происходит следующее:

(265) root@web-mysql4:/# zfs destroy mysql/data/4.1.12@wibble
cannot destroy 'mysql/data/4.1.12@wibble': dataset already exists
(266) root@web-mysql4:/# 

что, по-видимому, бессмысленно: конечно, оно уже существует, в том-то и дело!

Кто-нибудь видел что-нибудь подобное раньше? Поиск в Интернете ничего явно похожего не показывает.

При необходимости могу предоставить установленные патчи.

На этот вопрос был дан ответ, любезно предоставленный Синди Свиринген (cindys) здесь: http://opensolaris.org/jive/thread.jspa?messageID=484242&tstart=0

Сводка: если вы выполняете инкрементальные приемы, это может быть CR 6860996:

Временный клон создается для инкрементального приема и в некоторых случаях не удаляется автоматически.

1. Determine clone names:

# zdb -d <poolname> | grep %

2. Destroy identified clones:

# zfs destroy <clone-with-%-in-the-name>

It will complain that 'dataset does not exist', but you can check
again(see 1)

3. Destroy snapshot(s) that could not be destroyed previously

После обновления до более свежих наборов патчей я смог успешно удалить этот снимок. Очевидно, где-то была ошибка, которую раздавила Сан.

Хотя это решение, вероятно, не связано с проблемой OP, у меня также было такое же загадочное сообщение об ошибке при попытке удалить zvol.

В моем случае zvol был создан прерванным приемом zfs, который был отправлен с помощью функции возобновления "-s". Токен резюме предотвращал его уничтожение.

Чтобы исправить это, я побежал zfs receive -A <pool/zvol> (в FreeBSD 10.3)

Я не думаю, что это проблема (я думаю, вы получите другое сообщение об ошибке), но есть ли у вас клоны на основе этого снимка?

Я тоже видел эту проблему (ноябрь 2009 г.). Опять же, только ОДИН снимок не может быть уничтожен, и я получаю то же бессмысленное сообщение

# zfs destroy blue/viss02_backup/46home1f@200910211357
cannot destroy 'blue/viss02_backup/46home1f@200910211357': dataset already exists

И этот снимок не является источником и клоном файловой системы. На самом деле у меня есть одна клонированная файловая система, но рекурсивный поиск показывает, что она не основана на проблемном снимке

# zfs get -H -o value -r origin blue | uniq
-
blue/viss02_backup/zones/puppis@200902031605
-

Пока я не переименую его, этот снимок также испортит скрипты, которые я запускаю, чтобы контролировать распространение снимков.

Информация о версии: Это Solaris на x86 (5.10 Generic_141445-09 i86pc) В настоящее время в этой системе используется пул ZFS версии 15. Все пулы отформатированы с использованием этой версии.

Та же проблема без клона.

Проблема возникает, когда версия zfs была 10. Пробуем обновиться до 15 без каких-либо изменений.


 zfs destroy -rR zpool/mailboxes
 cannot destroy 'zpool/mailboxes@bug': dataset already exists

Я давно столкнулся с этим и написал здесь: http://www.bitshop.com/Blogs/tabid/95/EntryId/101/ZFS-Destroy-dataset-does-not-exist-zdb-error-16.aspx

Однако на этот раз проблема не связана с%. Я использую Illumus / Illumian 1.0, то есть zpool версии 26.

Это очень старый сервер / снимок, который я пытаюсь удалить.

Попробуйте посмотреть набор данных с помощью zdb.

zdb -e -d tank

Я пытался сделать

zfs destroy -r tank/dataset

который появляется на zfs list и получал эту ошибку.

Я обнаружил, что zdb видел

tank/dataset/dataset

который не появлялся на zfs list. Я легко мог

zfs destroy -r tank/dataset/dataset

а потом

zfs destroy -r tank/dataset

без ошибок.

Это похоже на ошибку в zfs list. FreeBSD 11.2-СТАБИЛЬНАЯ.