web-dev-qa-db-ja.com

ZFSスナップショットを破棄できません:データセットはすでに存在します

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:/# 

これは明らかに無意味です:もちろんそれはすでに存在しています、それがポイントです!

これまでに誰かがこのようなものを見たことがありますか?ウェブ検索では明らかに類似するものは何も表示されません。

必要に応じてインストールされたパッチを提供できます。

11
Morven

最新のパッチセットにアップグレードした後、このスナップショットを正常に削除できました。明らかに、Sunがつぶしたバグのどこかでした。

3
Morven

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
10
Edward Harvey

この解決策はおそらくOPの問題とは関係ありませんが、zvolを削除しようとすると、この同じ不可解なエラーメッセージが表示されました。

私の場合、zvolは「-s」再開可能機能を使用して送信された、中断されたzfs受信によって作成されていました。再開トークンが破壊されないようにしていました。

それを修正するために、私はzfs receive -A <pool/zvol>(FreeBSD 10.3)

2
ACyclic

これが問題になるとは思いません(別のエラーメッセージが表示されると思います)が、そのスナップショットに基づくクローンはありますか?

2
Mark

私もこの問題を見ました(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を実行しています。すべてのプールはこのバージョンを使用してフォーマットされています。

1
Gary Mitchell

クローンなしで同じ問題。

この問題は、zfsのバージョンが10のときに発生します。変更を加えずに15にアップグレードしようとします。


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

私はこれにかなり前に遭遇し、ここに書きました: 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。

1
Bill McGonigle