Apakah mungkin untuk melepaskan dan memasang kembali disk ZFS tanpa memerlukan resilver penuh?

10

Saya memiliki ZFS mirrored pool dengan total empat drive. Dua drive dimaksudkan untuk digunakan untuk memutar cadangan di luar kantor. Harapan saya adalah bahwa setelah resilver awal saya dapat detachdan kemudian attachdisk dan hanya melakukan resilver tambahan - namun dalam pengujian tampaknya melakukan resilver penuh terlepas dari apakah disk yang terpasang sudah mengandung hampir semua kumpulan isi.

Apakah menggunakan offline/ onlinemendekati memberi saya hasil yang diinginkan hanya memperbarui disk - daripada sepenuhnya membangunnya kembali? Atau agar pekerjaan ini seperti yang diharapkan, apakah saya perlu melakukan sesuatu yang sama sekali berbeda - seperti menggunakan setiap disk cadangan sebagai kumpulan 1-disk dan sendmemasukkan snapshot terbaru ke dalamnya setiap kali perlu diperbarui?

STW
sumber
5
-1 Jangan lepas / pasang drive untuk cadangan, gunakan perintah kirim / terima seperti yang dimaksudkan perancang ZFS.
Chris S
2
@ Chris bukannya -1 bagaimana menulis jawaban dengan beberapa kutipan. Sepertinya Anda mengatakan satu-satunya pilihan untuk cadangan adalah kumpulan online di tempat lain - yang akan bagus untuk mengetahui apakah itu benar, tetapi saya kira bukan itu masalahnya.
STW
1
Maaf, saya tidak bermaksud menjadi brengsek sombong, tetapi Server Fault seharusnya hanya untuk Administrator Sistem Profesional (et al). Metode pencadangan cadangan sangat tidak dapat dikelola, rentan kesalahan, dan tidak profesional sehingga tidak boleh dianggap sebagai metode pencadangan yang layak. Apa yang saya sarankan adalah Anda memformat dua drive cadangan dengan sistem file apa pun yang Anda inginkan, dan menggunakan zfs sendperintah untuk mengambil stream cadangan penuh atau tambahan yang disimpan ke disk cadangan, atau gunakan zfs recvuntuk membuat disk duplikat. Saya sangat merekomendasikan menggunakan beberapa jenis perangkat lunak untuk mengelola proses ini.
Chris S
Saya pikir poin Anda valid, saya akan menjawabnya sebagai jawaban. Saya sedang mempertimbangkan untuk menulis ulang pertanyaan saya untuk kurang fokus pada skenario spesifik saya (yang muncul dari anggaran yang ketat untuk server internal yang tidak penting, namun penting) dan lebih pada intinya "dapatkah saya memasang kembali drive tanpa memerlukan penuh resilver? "
STW

Jawaban:

14

Jangan pergi jalan melanggar array ZFS untuk "memutar" disk di luar kantor. Seperti yang Anda lihat, membangun kembali waktu tinggi dan proses resilvering akan membaca / memverifikasi digunakan ukuran dataset.

Jika Anda memiliki kemampuan, snapshot dan mengirim data ke sistem jarak jauh adalah pendekatan yang bersih dan tidak mengganggu. Saya kira Anda bisa melalui proses memiliki kolam disk tunggal khusus, salin ke sana, dan ekspor / impor zpool ... tapi itu tidak terlalu elegan.

putih
sumber
Sayangnya saya tidak dapat menggunakan pendekatan snapshot-> kirim karena saya tidak memiliki perangkat keras atau bandwidth untuk menjalankan server ZFS kedua di luar kantor. Namun tampaknya menggunakan offline / online akan berfungsi, dengan tradeoff yang dilaporkan statusnya menurun. Saya akan melihat bagaimana hasilnya untuk minggu depan atau lebih.
STW
1
Dimengerti Tetapi menarik menjalankan disk dari suatu sistem sebagai bentuk cadangan bukanlah solusi yang solid. Risiko Anda meningkat secara drastis ketika Anda melakukan ini.
ewwhite
Poin bagusnya, rencanaku adalah untuk offline mereka, menangguhkan mereka, melepas nampan hot-swap mereka dan kemudian memberikannya satu menit untuk memastikan pemberhentian penuh sebelum sepenuhnya menariknya
STW
1
Bisakah Anda mengoperasikan penukaran server kedua (atau bahkan susunan ZFS ke-2 di server yang sama)? Masukkan hotswap bay Anda di dalamnya, sinkronkan di antaranya dan yang utama, lalu putar seluruh array ZFS cadangan masuk / keluar dari server sebagai satu unit.
Dan Is Fiddling By Firelight
11

Setelah percobaan lebih lanjut, saya telah menemukan solusi yang adil, namun itu datang dengan trade-off yang signifikan. Disk yang telah offlinetetapi tidak terlepas kemudian dapat dibawa kembali online dengan hanya operasi resilver tambahan (" Ketika perangkat dibawa online, setiap data yang telah ditulis ke kolam disinkronisasi ulang dengan perangkat yang baru tersedia. "). Dalam pengujian saya ini membawa waktu resilver untuk mirror 3-disk turun dari 28 jam menjadi sedikit lebih dari 30 menit, dengan sekitar 40GB data-delta.

Imbalannya adalah bahwa kumpulan apa pun dengan disk offline akan ditandai sebagai terdegradasi. Asalkan masih ada setidaknya dua disk online (di kolam mirrored) ini secara efektif peringatan - integritas dan redundansi tetap utuh.

Seperti yang disebutkan orang lain, pendekatan keseluruhan ini jauh dari ideal - mengirim foto ke kolam jauh akan jauh lebih cocok, tetapi dalam kasus saya tidak layak.

Untuk meringkas, jika Anda perlu menghapus disk dari kumpulan dan kemudian menambahkannya kembali tanpa memerlukan resilver penuh maka pendekatan yang saya sarankan adalah:

  • offline disk di kolam: zpool offline pool disk
  • menurunkan drive (jika ingin ditarik secara fisik): hdparm -Y /dev/thedisk
  • biarkan kolam dalam kondisi terdegradasi dengan drive dinyalakan
  • untuk menambahkan disk kembali ke kolam: zpool online pool disk

Dan, karena ini belum diuji, ada risiko bahwa operasi resilver delta tidak akurat. Kumpulan "live" dan / atau disk offline mungkin mengalami masalah. Saya akan memperbarui jika itu terjadi pada saya, tetapi untuk sekarang akan bereksperimen dengan pendekatan ini.

STW
sumber
1
Jika resilver akan menyebabkan kesalahan data, ini akan sembuh secara otomatis dari waktu ke waktu atau pada scrub zpool.
the-wabbit
Saya telah menyadari nilai dari scrub; Saya menunggu sampai setelah scrub yang sukses untuk offline dan menghapus disk cadangan
STW
2
Hanya pembaruan cepat: selama setahun terakhir pendekatan ini telah bekerja dengan cukup baik. Tes pengembalian bulanan cadangan luar kantor telah berhasil dan konsisten. Memutar array (daripada disk tunggal) akan lebih baik untuk memberikan tingkat redundansi dalam salinan offsite, dan saya akan merekomendasikan melakukan itu jika memungkinkan. Secara keseluruhan, ini masih merupakan pendekatan peretasan dan memang menimbulkan beberapa risiko, tetapi telah menyediakan cadangan data kami di luar lokasi yang cukup aman dan murah.
STW
Saya akan berargumentasi menentang memutar semua drive dalam array karena transportasi perlahan dapat merusak semuanya. Saya tidak akan melakukan rotasi bahkan jika drive akan tetap di tempat.
Costin Gușă
2

Pembaruan pada 2015 15 Oktober: Hari ini saya menemukan zpool splitperintah, yang memisahkan kumpulan baru (dengan nama baru) dari kumpulan yang ada. splitjauh lebih bersih daripada offlinedan detach, karena kedua kolam kemudian dapat ada (dan digosok secara terpisah) pada sistem yang sama. Pool baru juga bisa bersih (dan benar) export[ed]sebelum dicabut dari sistem.

(Posting asli saya berikut di bawah ini.)

Peringatan! Berbagai komentar pada halaman ini menyiratkan bahwa itu adalah (atau mungkin) mungkin untuk zpool detachdrive, dan kemudian entah bagaimana pasang kembali drive dan mengakses data yang dikandungnya.

Namun, menurut utas ini (dan eksperimen saya sendiri) zpool detachmenghapus "kumpulan informasi" dari drive yang terlepas. Dengan kata lain, a detachseperti pemformatan ulang drive yang cepat . Setelah detachbanyak data mungkin masih ada di drive, tetapi secara praktis tidak mungkin untuk melakukan remount drive dan melihat data sebagai sistem file yang dapat digunakan.

Akibatnya, bagi saya itu detachlebih destruktif daripada destroy, karena saya percaya zpool importdapat memulihkan kolam yang hancur!

Sebuah detachadalah tidak satu umount, atau suatu zpool export, atau sebuah zpool offline.

Dalam eksperimen saya, jika saya pertama zpool offlineperangkat dan kemudian zpool detachperangkat yang sama, sisa kumpulan lupa perangkat yang pernah ada. Namun, karena perangkat itu sendiri offline[d]sebelum itu detach[ed], perangkat itu sendiri tidak pernah diberitahu detach. Oleh karena itu, perangkat itu sendiri masih memiliki informasi kumpulannya, dan dapat dipindahkan ke sistem lain dan kemudian import[ed](dalam kondisi terdegradasi).

Untuk perlindungan tambahan terhadap detachAnda, Anda bahkan dapat mencabut perangkat secara fisik setelah offlineperintah, namun sebelum mengeluarkan detachperintah.

Saya berharap untuk menggunakan ini offline, lalu detach, importproses untuk membuat cadangan kolam saya. Seperti poster aslinya, saya berencana menggunakan empat drive, dua di mirror konstan, dan dua untuk backup bulanan, berputar, off-site (dan off-line). Saya akan memverifikasi setiap cadangan dengan mengimpor dan menggosoknya pada sistem terpisah, sebelum memindahkannya ke luar lokasi. Tidak seperti poster aslinya, saya tidak keberatan menulis ulang seluruh drive cadangan setiap bulan. Bahkan, saya lebih suka penulisan ulang lengkap sehingga memiliki bit segar.

mpb
sumber
0

Di mesin yang sama, sudahkah Anda mencoba membuat kumpulan baru dengan 2 drive di cermin? Selanjutnya, buat snapshot pada kumpulan kerja Anda lalu kirim snapshot itu ke kumpulan baru, ulangi, maka pengiriman snapshot berikutnya akan bersifat inkremental. Ini tidak sama dengan "mengirim data ke sistem jarak jauh" karena ini adalah kumpulan dalam sistem / server / mesin yang sama. Dengan pengaturan ini, Anda masih dapat menerapkan zpool split / offline / detach / attach tetapi Anda hanya melakukannya di kumpulan kedua (salinan) dan bukan pada kumpulan sumber.

soyayix
sumber