Solaris 10 8/07を実行しているサーバー(問題ではないかと思いますがT5220)があり、内部ディスクにZFSプール "mysql"があります。その中には、ファイルシステム「mysql/data/4.1.12」があり、cronのスクリプトを使用して1時間ごとにスナップショットを作成します。
破壊されない1時間ごとのスナップの1つとして作成されたスナップショットが1つあります。私のスクリプトがそれを破壊しようとせず失敗しないように、シーケンスの外で「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:/#
これは明らかに無意味です:もちろんそれはすでに存在しています、それがポイントです!
これまでに誰かがこのようなものを見たことがありますか?ウェブ検索では明らかに類似するものは何も表示されません。
必要に応じてインストールされたパッチを提供できます。
最新のパッチセットにアップグレードした後、このスナップショットを正常に削除できました。明らかに、Sunがつぶしたバグのどこかでした。
Cindy Swearingen(cindys)のご厚意により、この問題は現在解決済みです http://opensolaris.org/jive/thread.jspa?messageID=484242&tstart=
概要:増分受信を行う場合、これは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は「-s」再開可能機能を使用して送信された、中断されたzfs受信によって作成されていました。再開トークンが破壊されないようにしていました。
それを修正するために、私はzfs receive -A <pool/zvol>
(FreeBSD 10.3)
これが問題になるとは思いません(別のエラーメッセージが表示されると思います)が、そのスナップショットに基づくクローンはありますか?
私もこの問題を見ました(2009年11月)。繰り返しになりますが、1つのスナップショットだけを破棄することはできず、同じ無意味なメッセージが表示されます
# zfs destroy blue/viss02_backup/46home1f@200910211357
cannot destroy 'blue/viss02_backup/46home1f@200910211357': dataset already exists
そして、このスナップショットは、ファイルシステムのクローンのオリジンではありません。実際、私は1つの複製されたファイルシステムを持っています-しかし、再帰的な検索は、それが面倒なスナップショットに基づいていないことを示しています
# zfs get -H -o value -r Origin blue | uniq
-
blue/viss02_backup/zones/puppis@200902031605
-
名前を変更するまで、このスナップショットは、スナップショットの急増を制御するために実行するスクリプトも台無しにします。
バージョン情報:これはSolaris on 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-STABLE。