ZFS-Snapshot kann nicht zerstört werden: Dataset ist bereits vorhanden

11

Ich habe einen Server (T5220, obwohl ich bezweifle, dass es wichtig ist), auf dem Solaris 10 8/07 ausgeführt wird, und ich habe einen ZFS-Pool "mysql" auf der internen Festplatte. Darin befindet sich ein Dateisystem "mysql / data / 4.1.12", das ich stündlich mit einem Skript von cron fotografiere.

Ich habe einen Schnappschuss, der als einer dieser stündlichen Schnappschüsse erstellt wurde und nicht zerstört wird. Ich habe es außerhalb der Reihenfolge in "mysql/data/4.1.12@wibble" umbenannt, damit mein Skript nicht versucht, es zu zerstören, aber es befand sich ursprünglich innerhalb der Reihenfolge, obwohl ich bezweifle, dass dies wichtig ist. Es wird erfolgreich umbenannt. Der Snapshot kann erfolgreich durch das Verzeichnis .zfs / snapshots navigiert und gelesen werden. Es hat keine darauf basierenden Klone.

Der Versuch, es zu zerstören, bewirkt Folgendes:

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

was anscheinend unsinnig ist: natürlich existiert es schon, das ist der Punkt!

Hat jemand so etwas schon mal gesehen? Websuchen zeigen nichts offensichtlich Ähnliches.

Bei Bedarf kann ich installierte Patches bereitstellen.

Morven
quelle

Antworten:

10

Dieses Problem wurde jetzt mit freundlicher Genehmigung von Cindy Swearingen (cindys) hier beantwortet: http://opensolaris.org/jive/thread.jspa?messageID=484242&tstart=0

Zusammenfassung: Wenn Sie inkrementelle Empfänge ausführen, ist dies möglicherweise CR 6860996:

Ein temporärer Klon wird für einen inkrementellen Empfang erstellt und in einigen Fällen nicht automatisch entfernt.

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

quelle
3

Nach dem Upgrade auf neuere Patch-Sets konnte ich diesen Snapshot erfolgreich löschen. Offensichtlich war irgendwo ein Fehler, den Sun gequetscht hat.

Morven
quelle
2

Ich erwarte nicht, dass dies das Problem ist (ich glaube, Sie erhalten eine andere Fehlermeldung), aber haben Sie Klone, die auf diesem Schnappschuss basieren?

Kennzeichen
quelle
Keine darauf basierenden Klone; das habe ich zuerst vermutet, aber das ist es nicht.
Morven
2

Während diese Lösung wahrscheinlich nichts mit dem Problem des OP zu tun hat, hatte ich auch dieselbe kryptische Fehlermeldung, als ich versuchte, ein zvol zu löschen.

In meinem Fall wurde das zvol durch einen unterbrochenen zfs-Empfang erstellt, der mit der wiederaufnehmbaren Funktion "-s" gesendet wurde. Der Lebenslauf-Token verhinderte, dass er zerstört wurde.

Um das Problem zu beheben, habe ich zfs receive -A <pool/zvol> (unter FreeBSD 10.3) ausgeführt.

ACyclisch
quelle
Nützlich zu wissen; es ist sicherlich möglich, dass dies der Fall war.
Morven
1

Ich habe dieses Problem auch gesehen (November 2009). Wieder kann nur EIN Schnappschuss nicht zerstört werden und ich bekomme die gleiche unsinnige Nachricht

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

Und dieser Snapshot ist nicht der Ursprung und der Dateisystemklon. Tatsächlich habe ich ein geklontes Dateisystem - aber eine rekursive Suche zeigt, dass es nicht auf dem problematischen Snapshot basiert

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

Bis ich es umbenenne, wird dieser Snapshot auch die Skripte vermasseln, die ich ausführe, um die Verbreitung von Snapshots zu kontrollieren.

Versionsinformationen: Dies ist Solaris unter x86 (5.10 Generic_141445-09 i86pc) Auf diesem System wird derzeit ZFS-Pool Version 15 ausgeführt. Alle Pools werden mit dieser Version formatiert.


quelle
1

Gleiches Problem ohne Klon.

Die Probleme treten auf, während die zfs-Version 10 war. Wir versuchen, ohne Änderungen auf 15 zu aktualisieren


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


quelle
1

Versuchen Sie, den Datensatz mit zdb zu betrachten.

zdb -e -d tank

Ich habe es versucht

zfs destroy -r tank/dataset

das zeigt sich auf zfs listund bekam diesen Fehler.

Was ich fand, war, dass zdb sah

tank/dataset/dataset

was nicht auftauchte zfs list. Ich konnte leicht

zfs destroy -r tank/dataset/dataset

und dann

zfs destroy -r tank/dataset

ohne Fehler.

Dies scheint vielleicht ein Fehler zu sein zfs list. FreeBSD 11.2-STABLE.

Bill McGonigle
quelle