Setelah banyak mengutak-atik dan bereksperimen, saya menemukan solusi, meskipun dengan tradeoff yang cukup besar.
Pertama, opsi yang harus saya hilangkan:
Memiliki server ZFS luar kantor kedua dengan kolam cermin bukan pilihan karena biaya. Seandainya itu menjadi pilihan, ini sejauh ini akan menjadi pendekatan terbaik, memanfaatkan ZFS kirim / terima untuk mengirim foto ke pool jarak jauh.
Memiliki kolam mirror ZFS di tempat kedua, yang dapat saya ambil dari disk untuk dibawa pulang. Ini lebih layak daripada opsi pertama, tetapi saya akan membutuhkan kumpulan kedua untuk selalu memiliki dua disk di tempat (atau menggunakan dua salinan data pada satu disk di tempat). Saat ini saya memiliki empat disk, dan tidak ada lagi ruang untuk seperlima di server. Ini akan menjadi pendekatan yang adil tetapi masih belum ideal.
Menggunakan ZFS melampirkan dan melepaskan untuk memutar disk cadangan masuk dan keluar dari kolam mirrored. Ini bekerja dengan baik, tetapi harus melakukan resilver penuh setiap kali disk ditambahkan. Ini butuh waktu lama, jadi saya tidak bisa mengandalkan ini.
Solusi saya mirip dengan menggunakan attach
dan detach
, namun menggunakan online
dan offline
. Ini memiliki keuntungan melakukan resilver delta versus resilver penuh, tetapi kelemahan bahwa pool selalu melaporkan DEGRADED
keadaan (pool selalu memiliki dua disk; disk luar kantor yang berputar ditandai offline
ketika mereka berada di penyimpanan jauh dan resilver dan kemudian online) ketika mereka ada di tempat).
Jadi, rekap cepat dan ikhtisar pengaturan saya:
Saya memiliki satu server ZFS dan empat disk identik. ZFS diatur untuk menggunakan kolam cermin. Dua dari empat disk adalah anggota tetap dari kumpulan ini. Dua disk lainnya berputar; satu selalu dalam penyimpanan di luar kantor, yang lain adalah bagian dari kumpulan untuk bertindak sebagai cadangan siap-pakai.
Ketika tiba saatnya untuk memutar cadangan:
Saya menunggu untuk zfs scrub
menyelesaikan untuk memastikan disk cadangan cukup bebas dari kesalahan
Saya zfs offline
disk yang akan diambil jarak jauh. Setelah offline saya hdparm -Y /dev/id
akan memutarnya. Setelah satu menit, saya melepas sebagian kereta luncur disk (hanya cukup untuk memastikan daya yang hilang) dan kemudian memberikannya satu menit lagi sebelum sepenuhnya menarik drive untuk memastikan telah berhenti berputar. Disk dimasukkan ke dalam kantong statis dan kemudian pelindung dan pergi ke luar kantor.
Saya membawa disk offsite lainnya. Itu akan diinstal di baki hotswap dan berputar. Saya gunakan zfs online
untuk mengembalikan disk ke kolam dan memulai resilver parsial untuk membuatnya bersamaan.
Sistem ini menjamin bahwa pada waktu tertentu saya memiliki dua ONLINE
disk cermin dan satu OFFLINE
disk jarak jauh (yang telah digosok). Disk keempat adalah resilvered atau online, yang memiliki manfaat bahwa jika drive berjalan gagal itu mungkin kumpulan masih akan konsisten dari dua disk online.
Ini bekerja dengan baik selama beberapa minggu terakhir, tetapi saya masih menganggap ini sebagai pendekatan hackish. Saya akan menindaklanjuti jika saya mengalami masalah besar.
Pembaruan: Setelah menjalankan ini selama beberapa bulan, saya menemukan bahwa di dunia nyata saya menggunakan resilver menggunakan waktu yang sama untuk melepas / memasang dan offline / online. Dalam pengujian saya, saya tidak berpikir saya sedang menjalankan scrub - firasat saya adalah bahwa jika drive offline untuk scrub maka itu memerlukan resilver penuh.