Bagaimana cara menginterupsi razia ulang perangkat lunak?

50

Saya ingin menghentikan operasi resync yang sedang berjalan pada serangan software debian squeeze. (Ini adalah sinkronisasi ulang terjadwal reguler. Array raid masih bersih dalam kasus seperti itu. Jangan bingung dengan pembangunan kembali setelah disk gagal dan diganti.)

Bagaimana cara menghentikan operasi sinkronisasi ulang yang dijadwalkan ini saat sedang berjalan? Array serangan lain adalah "resync pending", karena mereka semua diperiksa pada hari yang sama (Minggu malam) satu demi satu. Saya ingin menghentikan sepenuhnya penyuntingan ulang malam Minggu ini.

[Sunting: sudo kill -9 1010tidak menghentikannya, 1010 adalah PID dari proses md2_resync]

Saya juga ingin tahu bagaimana saya bisa mengontrol interval antara sinkronisasi ulang dan waktu sisa hingga yang berikutnya.

[Sunting2: Apa yang saya lakukan sekarang adalah membuat resync menjadi sangat lambat, sehingga tidak mengganggu lagi:

sudo sysctl -w dev.raid.speed_limit_max=1000

diambil dari http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html

Pada malam hari saya akan mengaturnya kembali ke nilai yang tinggi, sehingga sinkronisasi ulang dapat berakhir.

Solusi ini baik untuk sebagian besar situasi, namun akan menarik untuk mengetahui apakah apa yang saya tanyakan itu mungkin. Sebagai contoh, sepertinya tidak mungkin untuk menumbuhkan array, ketika sedang melakukan penyinkronan ulang atau penyinkronan ulang "pending"]

Adam5
sumber
Saya rasa saya tidak punya nyali untuk membatalkan sinkronisasi ulang. Saya khawatir itu mungkin tidak akan pernah mulai lagi.
Tom O'Connor
1
@ Tom: ini hanya sinkronisasi ulang normal yang memeriksa setiap minggu jika semuanya cocok. jika dihentikan (mis. dengan mematikan mesin) itu berlanjut pada boot berikutnya.
Adam5
Oh oke. Tidak apa-apa
Tom O'Connor

Jawaban:

48

Jika array Anda md0kemudianecho "idle" > /sys/block/md0/md/sync_action

'idle' akan menghentikan sinkronisasi ulang / pemulihan aktif, dll. Tidak ada jaminan bahwa sinkronisasi / pemulihan lain mungkin tidak dimulai lagi secara otomatis, meskipun beberapa peristiwa diperlukan untuk memicu hal ini.

http://www.mjmwired.net/kernel/Documentation/md.txt#477

Mark Wagner
sumber
Saya dapat memperbarui file teks setelah mengubah izinnya, tetapi konten file diubah kembali ke "sinkronisasi ulang" dari belakang dalam contoh yang sama. Dan sinkronisasi ulang berlanjut di array lain (yang sebelumnya "tertunda"). Ketika saya menulis "idle" ke file array lain itu swap lagi, tetapi tidak pernah berhenti.
Adam5
2
Jika Anda memiliki beberapa serangan: echo idle | sudo tee / sys / block / md * / md / sync_action
Ole Tange
Sebenarnya "idle" hanya menjeda cek. "Pemeriksaan" berikutnya akan dilanjutkan pada /sys/block/md0/md/sync_min’. To reset this write 0` ke file ini.
rudimeier
33

Saya ingin memperlambat atau menghentikan proses sinkronisasi untuk menyimpan beberapa I / O untuk membuat cadangan beberapa hal di komputer lain. Utas ini membantu saya tetapi saya menemukan solusi lain.

Tentang Debian Lenny saya:

  • echo "idle" > /sys/block/md0/md/sync_action berfungsi tetapi proses sinkronisasi ulang segera dimulai kembali.

  • checkarray -x --all : berfungsi, tetapi hasil yang sama: proses sinkronisasi segera dimulai ulang.

Jadi saya menggunakan metode ini: echo 0 > /proc/sys/dev/raid/speed_limit_max

kecil
sumber
1
Pendekatan yang menarik. Saya menemukan bahwa Anda juga perlu mengurangi nilai di speed_limit_min.
Diomidis Spinellis
1
Saya juga perlu mengatur speed_limit_minke 0 untuk benar-benar menghentikan sinkronisasi.
njahnke
12

Anda dapat membatalkan sinkronisasi ulang array yang sedang berlangsung menggunakan urutan perintah berikut (sebagai root):

echo frozen > /sys/block/md0/md/sync_action
echo none > /sys/block/md0/md/resync_start
echo idle > /sys/block/md0/md/sync_action

Perhatikan bahwa ini dapat membuat array Anda dalam keadaan tidak konsisten . Jangan lakukan ini kecuali Anda yakin array dalam kondisi baik, dan jalankan kembali sinkronisasi nanti.

(Kredit di mana kredit jatuh tempo: temukan mantera ini di utas ini .)

duskwuff
sumber
8

Seperti disebutkan di atas, pada sistem Debian / Ubuntu /etc/cron.d/mdadmskrip memanggil /usr/share/mdadm/checkarrayskrip untuk memulai pemeriksaan sinkronisasi ulang.

Skrip ini memiliki opsi untuk membatalkan semua pemeriksaan sinkronisasi yang berjalan:

/usr/share/mdadm/checkarray -x --all
Jason Hildebrand
sumber
3

Tidak yakin tentang cara membatalkan sinkronisasi, tetapi jadwal dikendalikan oleh /etc/cron.d/mdadmpada sistem Debian / Ubuntu.

Script /usr/share/mdadm/checkarraydapat menjelaskan bagian lain dari pertanyaan Anda, karena itulah yang disebut dengan cron.

Sakit kepala
sumber
3

Jika perangkat md Anda adalah md0 dan Anda ingin menghentikan penulisan ulang sinkronisasi:

echo "idle" > /sys/block/md0/md/sync_action
Pemenang
sumber
3

Solusi yang mungkin untuk ini, butuh sedikit untuk masuk ke detail.

Sistem saya: CentOS 6.5 mdadm v3.3.2

Cek konstan setiap minggu, ingin menjeda salah satunya, RAID bersih, periksa dipanggil melalui /etc/cron.d/raid-check script yang dijalankan setiap minggu.

Untuk membatalkan pemeriksaan, Anda menggunakan fungsi --misc --action. Dengan asumsi perangkat RAID adalah / dev / md0 dan ini hanya pemeriksaan konsistensi mingguan dan bukan kegagalan perangkat, Anda akan melakukannya, sebagai root:

mdadm --misc --action = idle / dev / md0

Demikian juga, untuk memulai pemeriksaan konsistensi

mdadm --misc --action = check / dev / md0

tagihan
sumber
2
echo "idle" > /sys/block/md0/md/sync_action

Tidak berfungsi ketika / sys / block / md * / md / sync_action adalah "resync" (tidak seperti jika statusnya adalah "check" atau "repair". Anda dapat menggemakan "idle" ke dalam file sync_action, namun itu tidak mempengaruhi progres File dokumentasi kernel ini di sini secara tidak benar menyatakan bahwa ia akan berfungsi, tetapi tidak pernah bekerja untuk saya:

'idle' akan menghentikan sinkronisasi ulang / pemulihan aktif, dll. Tidak ada jaminan bahwa sinkronisasi / pemulihan lain mungkin tidak dimulai lagi secara otomatis, meskipun beberapa peristiwa diperlukan untuk memicu hal ini.

brian
sumber
1
Namun Anda dapat mempengaruhi laju "sinkronisasi ulang" dengan / sys / block / md * / md / sync_speed_max dalam keadaan ini. Saya tidak yakin mengapa dokumentasinya salah, mungkin tidak ada yang tahu
brian
Silakan luangkan waktu sebentar untuk mempelajari sintaks penurunan harga Stack Exchange ( meta.serverfault.com/editing-help )
Sven
0

Saya tahu ini adalah posting 4 tahun tetapi Anda juga dapat melakukan ini (dengan anggapan md0 sebagai array dan sdb4 sebagai "disk" resyncing):

    mdadm /dev/md0 --fail /dev/sdb4 && mdadm /dev/md0 --remove /dev/sdb4

Perintah ini berpura-pura sdb4 menjadi disk yang gagal dan karenanya menendang dari array, menghentikan resync. Jika tidak ada kesalahan selama tindakan resync-stop maka perintah ini juga akan menghapus sdb4 dari array md0. Jika ada kesalahan maka disk tetap dalam kondisi gagal tetapi tetap dalam array.

Jika Anda gagal disk di mana saja di mdadm, Anda mengaturnya gagal secara logis . Jika array bersih (tidak terdegradasi) maka disk tetap konsisten dan dapat ditambahkan kembali oleh --add << disk >> - opsi pembersih bersih tanpa rasa takut. Jika ada setiap tindakan setelah itu terpisah (misalnya. Resync, membangun kembali, atau bahkan menulis) maka --assume-bersih akan probalby gagal dan memulai tindakan resync segera.

Mengubah raid.speed_limit_mindan raid.speed_limit_maxentah bagaimana merupakan ide yang buruk karena tidak hanya mempengaruhi kecepatan sinkronisasi ulang / rekondisi tetapi juga kecepatan operasi normal, dan mungkin Anda akan kehilangan banyak kinerja yang diperoleh dengan menggunakan array RAID.

et
sumber
5
Saya pikir itu ide yang buruk untuk menghapus disk yang sehat dari RAID. Sebagian besar waktu mungkin tidak menyebabkan masalah, tetapi setiap kali Anda melakukannya, ada risiko menyebabkan kehilangan data atau korupsi data.
kasperd
1
Jangan pernah melakukan ini. Jika Anda menambahkan disk dengan --assume-cleanpada sistem live, dan Anda memiliki tulisan yang terjadi pada disk yang tersisa, Anda meminta masalah.
sanmai