Tidak dapat menghancurkan snapshot ZFS: dataset sudah ada

11

Saya memiliki server (T5220, meskipun saya ragu itu penting) menjalankan Solaris 10 8/07 dan saya memiliki kumpulan ZFS, "mysql", pada disk internal. Di dalamnya saya memiliki sistem file "mysql / data / 4.1.12", yang saya potret setiap jam dengan skrip dari cron.

Saya punya satu snapshot, dibuat sebagai salah satu dari snapshot per jam, yang tidak akan hancur. Saya telah mengganti namanya dari urutan menjadi "mysql/data/4.1.12@wibble" sehingga skrip saya tidak akan mencoba dan gagal memusnahkannya, tetapi pada awalnya berada dalam urutan, meskipun saya ragu itu penting. Berhasil mengganti nama. Snapshot dapat berhasil dinavigasi dan dibaca dari direktori .zfs / snapshots. Itu tidak memiliki klon berdasarkan itu.

Mencoba untuk menghancurkannya, lakukan ini:

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

yang tampaknya tidak masuk akal: tentu saja sudah ada, itu intinya!

Adakah yang pernah melihat yang seperti ini sebelumnya? Pencarian di web menunjukkan tidak ada yang serupa.

Saya dapat menyediakan tambalan yang diinstal jika perlu.

Morven
sumber

Jawaban:

10

Masalah ini sekarang telah dijawab, milik Cindy Swearingen (cindys) di sini: http://opensolaris.org/jive/thread.jspa?messageID=484242&tstart=0

Ringkasan: Jika Anda menerima tambahan, ini mungkin CR 6860996:

Klon sementara dibuat untuk penerimaan tambahan dan dalam beberapa kasus, tidak dihapus secara otomatis.

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

sumber
3

Setelah ditingkatkan ke set patch yang lebih baru, saya dapat menghapus snapshot ini dengan sukses. Jelas ada serangga di suatu tempat yang diremukkan Sun.

Morven
sumber
2

Saya tidak berharap ini masalahnya (saya pikir Anda mendapatkan pesan kesalahan yang berbeda), tetapi apakah Anda memiliki klon berdasarkan snapshot itu?

Menandai
sumber
Tidak ada klon berdasarkan itu; itu yang saya duga awalnya, tapi bukan itu.
Morven
2

Sementara solusi ini mungkin tidak terkait dengan masalah OP, saya juga memiliki pesan kesalahan samar yang sama ketika mencoba untuk menghapus zvol.

Dalam kasus saya, zvol telah dibuat oleh penerima zfs yang terputus, yang dikirim menggunakan fitur resume "-s". Tanda resume mencegahnya agar tidak dihancurkan.

Untuk memperbaikinya, saya berlari zfs receive -A <pool/zvol> (pada FreeBSD 10.3)

Asiklik
sumber
Berguna untuk diketahui; tentu saja ini masalahnya.
Morven
1

Saya juga melihat masalah ini (November 2009). Sekali lagi hanya SATU snapshot tidak dapat dihancurkan dan saya mendapatkan pesan yang sama tidak masuk akal

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

Dan snapshot ini bukan asal dan sistem file mengkloning. Sebenarnya saya memiliki satu sistem file yang dikloning - tetapi pencarian rekursif menunjukkan bahwa itu tidak didasarkan pada snapshot yang merepotkan

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

Sampai saya ganti namanya snapshot ini juga akan mengacaukan skrip yang saya jalankan untuk mengontrol proliferasi snapshot.

Informasi versi: Ini adalah Solaris pada x86 (5.10 Generic_141445-09 i86pc) Sistem ini saat ini menjalankan ZFS pool versi 15. Semua pool diformat menggunakan versi ini.


sumber
1

Masalah yang sama tanpa klon.

Masalah terjadi ketika versi zfs adalah 10. Kami mencoba meningkatkan ke 15 tanpa perubahan


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


sumber
1

Coba lihat dataset dengan zdb.

zdb -e -d tank

Saya coba lakukan

zfs destroy -r tank/dataset

yang muncul zfs listdan mendapatkan kesalahan ini.

Apa yang saya temukan adalah zdb itu melihatnya

tank/dataset/dataset

yang tidak muncul di zfs list. Saya bisa dengan mudah

zfs destroy -r tank/dataset/dataset

lalu

zfs destroy -r tank/dataset

tanpa kesalahan.

Sepertinya ada bug di zfs list. FreeBSD 11.2-STABLE.

Bill McGonigle
sumber