Saya ingin menggunakan cron untuk menjadwalkan scrub periodik dari kumpulan ZFS saya, dan pada waktu yang cukup singkat setelah scrub selesai , kirim laporan status email kepada saya sendiri. Tujuan dari ini adalah untuk menangkap masalah tanpa harus mencari mereka secara manual (dorong daripada tarik).
Bagian pertama mudah: hanya menyiapkan tugas cron untuk dijalankan zpool scrub $POOL
sebagai root pada interval apa pun yang masuk akal dalam situasi khusus saya.
Bagian kedua, saya tidak begitu yakin bagaimana melakukannya. zpool scrub
kembali segera dan kemudian scrub dijalankan di latar belakang oleh sistem (yang tentunya merupakan perilaku yang diinginkan jika scrub diprakarsai oleh administrator dari terminal). zpool status
memberi saya laporan status dan keluar (dengan kode keluar 0 saat scrub sedang berjalan; belum selesai jadi saya tidak tahu apakah status keluar berubah setelah selesai, tapi saya ragu). Satu-satunya parameter yang didokumentasikan untuk zpool scrub adalah -s
untuk "stop scrubbing".
Masalah utama adalah mendeteksi perubahan status dari scrubbing ke scrubbing jadi . Mengingat itu, sisanya harus jatuh pada tempatnya.
Idealnya, saya ingin mengatakan zpool scrub
untuk tidak kembali sampai scrub selesai, tetapi saya tidak melihat cara untuk membuatnya melakukannya. (Itu akan membuatnya hampir terlalu mudah untuk hanya cron zpool scrub --wait-until-done $POOL; zpool status $POOL
.)
Gagal itu, saya ingin bertanya kepada sistem apakah scrub sedang dalam proses, lebih disukai dengan cara yang tidak terlalu berisiko melanggar dengan perubahan upgrade atau konfigurasi, sehingga saya bisa bertindak apakah sudah berjalan sebelumnya atau tidak scrub telah selesai (dengan menjalankan status zpool ketika status scrub berubah dari menggosok menjadi tidak menggosok).
Penyiapan khusus ini untuk sistem workstation, jadi sementara alat pemantauan seperti Nagios mungkin memiliki peralatan tambahan yang akan menyelesaikan masalah, rasanya agak sulit untuk menginstal alat seperti itu untuk tugas yang satu ini saja. Dapatkah seseorang menyarankan solusi berteknologi rendah untuk masalah tersebut?