GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menjalankan perintah setelah scrub ZFS *selesai*?

Solusi 1:

Di ZFS Di Linux, dimulai dengan versi 0.6.3 ini dapat ditangani dengan cukup elegan dengan menggunakan ZFS Event Daemon (zed). Daemon peristiwa, berdasarkan pemantauan peristiwa kernel secara langsung, dapat segera bereaksi terhadap peristiwa apa pun yang terjadi dan tidak bergantung pada polling dan parsing berkelanjutan dari keluaran beberapa perintah lain.

Buat skrip shell dengan nama file apa pun yang dimulai dengan /etc/zfs/zed.d/scrub.finish (misalnya, scrub.finish-custom.sh ). Skrip itu dapat mengambil tindakan yang sesuai, seperti mengirim email, menulis entri log di suatu tempat, atau membuat sistem bernyanyi dan menari (Oke, mungkin bukan itu). Contoh disediakan yang dapat memberikan titik awal.

Jika yang Anda inginkan hanyalah menerima email saat scrub selesai, tersedia scrub.finish-email.sh skrip akan melakukannya dengan baik. Cukup edit /etc/zfs/zed.d/zed.rc untuk menunjukkan ke mana email harus dikirim dan apakah email harus dikirim juga jika kumpulan tidak mengalami masalah, pastikan sesuatu bernama scrub.finish diikuti oleh apa pun di /etc/zfs/zed.d mengarah ke sana, dan pastikan zed dimulai saat boot.

Solusi 2:

Saya menggunakan skrip sederhana ini untuk menggosok pelaporan status melalui email.

  • zadmin

Jika Anda perlu mendeteksi transisi dari scrub running ke scrub finished Saya akan memeriksa state bidang zpool status keluaran. Sesuatu seperti ini:

# start scrubbing 
zpool scrub ZPOOL

# wait till scrub is finished
while zpool status ZPOOL | grep 'scan:  *scrub in progress' > /dev/null; do
   echo -n '.'
   sleep 10
done

# send a report
zpool status | mail -s "zpool status: ZPOOL" RECIPIENT

Solusi 3:

Meskipun pertanyaan ini khusus untuk linux, ini adalah hasil google pertama saat mencari "tunggu sampai scrub selesai" , oleh karena itu saya ingin menambahkan beberapa informasi berguna untuk orang yang menjalankan OpenSolaris (mengujinya di OmniOS, tetapi SmartOS, illumos, dll. harus serupa) daripada Linux (Solaris normal juga berfungsi, tetapi saya tidak mengujinya di sana).

Anda dapat menggunakan syseventadm untuk mendaftarkan peristiwa kernel. Daftar lengkapnya dapat ditemukan di /usr/include/sys/sysevent/eventdefs.h (cukup cari "ZFS" di file ini). Setelah menambahkan acara, layanan harus dimulai ulang, misalnya:

syseventadm add -c EC_zfs -s ESC_ZFS_scrub_finish /path/to/script.sh \$pool_name
syseventadm restart

Dengan cara ini, skrip akan dimulai saat pembersihan kumpulan apa pun selesai - Anda harus memeriksa di dalam skrip jika $1 sama dengan nama kolam yang Anda inginkan. Tetap saja, biayanya jauh lebih sedikit daripada polling.

Solusi 4:

Saya sangat sukses dengan zfswatcher


Linux
  1. Cara Menjalankan Perintah Tunggal Pada Beberapa Sistem Jarak Jauh Sekaligus

  2. Bagaimana Menjalankan Perintah Sebagai Administrator Sistem (root)?

  3. Bagaimana Cara Menjalankan Perintah Tanpa Properti Root?

  1. Cara Setup ZFS Filesystem di Linux dengan Contoh Perintah zpool

  2. linux:cara menjalankan perintah di direktori tertentu

  3. Bagaimana cara menjalankan perintah Vim dari shell?

  1. Bagaimana Kami Menjalankan Perintah yang Disimpan Dalam Variabel?

  2. Bagaimana Cara Menjalankan Perintah Di Dalam Wadah Systemd yang Berjalan?

  3. Bagaimana cara menjalankan perintah teratas dengan benar melalui SSH?