ZFS - menghancurkan deduplicated zvol atau kumpulan data yang menghentikan server. Bagaimana cara memulihkan?

11

Saya menggunakan Nexentastor pada server penyimpanan sekunder yang berjalan pada drive HP ProLiant DL180 G6 dengan drive SAS 12 Midline (7200 RPM). Sistem ini memiliki CPU E5620 dan 8GB RAM. Tidak ada perangkat ZIL atau L2ARC.

Pekan lalu, saya membuat zvol jarang 750GB dengan dedup dan kompresi yang diaktifkan untuk dibagikan melalui iSCSI ke host VMWare ESX. Saya kemudian membuat gambar server file Windows 2008 dan menyalin ~ 300GB data pengguna ke VM. Setelah puas dengan sistem, saya memindahkan mesin virtual ke toko NFS di kolam yang sama.

Setelah berdiri dan berjalan dengan VM saya di datastore NFS, saya memutuskan untuk menghapus zvol 750GB asli. Melakukan hal itu menghentikan sistem. Akses ke antarmuka web Nexenta dan NMC terhenti. Saya akhirnya bisa sampai ke shell mentah. Sebagian besar operasi OS baik-baik saja, tetapi sistem tergantung pada zfs destroy -r vol1/filesystemperintah. Jelek. Saya menemukan dua entri bugzilla OpenSolaris berikut dan sekarang mengerti bahwa mesin akan di-brick untuk periode waktu yang tidak diketahui. Sudah 14 jam, jadi saya perlu rencana untuk bisa mendapatkan kembali akses ke server.

http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6924390

dan

http://bugs.opensolaris.org/bugdatabase/view_bug.do;jsessionid=593704962bcbe0743d82aa339988?bug_id=6924824

Di masa depan, saya mungkin akan menerima saran yang diberikan di salah satu solusi buzilla:

Workaround
    Do not use dedupe, and do not attempt to destroy zvols that had dedupe enabled.

Pembaruan: Saya harus memaksa sistem untuk mematikan. Setelah reboot, sistem berhenti Importing zfs filesystems. Sudah seperti itu selama 2 jam sekarang.

putih
sumber

Jawaban:

15

Ini sudah dipecahkan. Mereka kuncinya adalah bahwa volume deduplicated perlu dimatikan bendera dedup sebelum dihapus. Ini harus dilakukan pada level pool serta level zvol atau filesystem. Jika tidak, penghapusan pada dasarnya sedang dideduplikasi. Proses ini membutuhkan waktu karena tabel deduplikasi ZFS sedang direferensikan. Dalam hal ini, RAM membantu. Saya sementara menambahkan 16 Gigabytes RAM tambahan ke sistem dan membawa server kembali online. Zpool diimpor sepenuhnya dalam waktu 4 jam.

Moral mungkin adalah bahwa dedupe tidak super dipoles dan bahwa RAM sangat penting untuk kinerjanya. Saya menyarankan 24GB atau lebih, tergantung pada lingkungan. Jika tidak, biarkan ZFS dikurangkan. Ini jelas tidak masuk akal untuk pengguna rumahan atau sistem yang lebih kecil.

putih
sumber
5

Sebagai pengguna lama peralatan Sun / Oracle ZFS 7000-series, saya dapat memberi tahu Anda tanpa pertanyaan bahwa dedupe tidak dipoles. Jangan pernah mengacaukan penjualan dengan pengiriman! Tenaga penjualan akan memberi tahu Anda "Oh, sudah diperbaiki". Dalam kehidupan nyata - kehidupan nyata saya - saya dapat memberitahu Anda 24GB tidak cukup untuk menangani "tabel DDT". Yaitu, indeks ujung belakang yang menyimpan tabel dedupe. Tabel itu harus berada dalam memori sistem sehingga setiap I / O dicegat dalam penerbangan untuk mengetahui apakah perlu ditulis ke disk atau tidak. Semakin besar kumpulan penyimpanan Anda, semakin banyak perubahan data, semakin besar tabel ini - dan semakin besar permintaan pada memori sistem. Memori itu datang dengan mengorbankan ARC (cache) dan kadang-kadang, OS itu sendiri - yang mengapa Anda mengalami hang, karena perintah tertentu terjadi di latar depan, beberapa di latar belakang. Tampaknya penghapusan pool terjadi di latar depan, kecuali jika Anda memberi tahu sebaliknya di CLI. Penyihir GUI tidak akan melakukan ini.

Bahkan penghapusan massal data NFS dalam pembagian yang ditentukan pada volume yang dikurangi akan membuat sistem Anda menjadi setengah jika Anda tidak memiliki cukup memori untuk memproses "menulis" ke ZFS yang memerintahkannya untuk menghapus data.

Secara keseluruhan, kecuali jika Anda memaksimalkan memori Anda dan bahkan kemudian, menemukan cara untuk memesan memori untuk OS dengan membatasi ARC dan DDT (dan saya tidak berpikir Anda dapat membatasi DDT berdasarkan sifatnya, itu hanya sebuah indeks yang terikat persis ke I / O Anda) - maka Anda disemprot selama penghapusan besar atau zvol / kolam destory.

John Berisford
sumber