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 1010
tidak 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"]
Jawaban:
Jika array Anda
md0
kemudianecho "idle" > /sys/block/md0/md/sync_action
http://www.mjmwired.net/kernel/Documentation/md.txt#477
sumber
/sys/block/md0/md/sync_min’. To reset this write
0` ke file ini.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
sumber
speed_limit_min
ke 0 untuk benar-benar menghentikan sinkronisasi.Anda dapat membatalkan sinkronisasi ulang array yang sedang berlangsung menggunakan urutan perintah berikut (sebagai root):
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 .)
sumber
Seperti disebutkan di atas, pada sistem Debian / Ubuntu
/etc/cron.d/mdadm
skrip memanggil/usr/share/mdadm/checkarray
skrip untuk memulai pemeriksaan sinkronisasi ulang.Skrip ini memiliki opsi untuk membatalkan semua pemeriksaan sinkronisasi yang berjalan:
sumber
Tidak yakin tentang cara membatalkan sinkronisasi, tetapi jadwal dikendalikan oleh
/etc/cron.d/mdadm
pada sistem Debian / Ubuntu.Script
/usr/share/mdadm/checkarray
dapat menjelaskan bagian lain dari pertanyaan Anda, karena itulah yang disebut dengan cron.sumber
Jika perangkat md Anda adalah md0 dan Anda ingin menghentikan penulisan ulang sinkronisasi:
sumber
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:
Demikian juga, untuk memulai pemeriksaan konsistensi
sumber
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:
sumber
Saya tahu ini adalah posting 4 tahun tetapi Anda juga dapat melakukan ini (dengan anggapan md0 sebagai array dan sdb4 sebagai "disk" resyncing):
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_min
danraid.speed_limit_max
entah 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.sumber
--assume-clean
pada sistem live, dan Anda memiliki tulisan yang terjadi pada disk yang tersisa, Anda meminta masalah.