Come interrompere la risincronizzazione del raid software?


50

Voglio interrompere un'operazione di risincronizzazione in esecuzione su un raid del software di compressione debian. (Questa è la normale risincronizzazione del confronto pianificato. L'array raid è ancora pulito in questo caso. Non confonderlo con una ricostruzione dopo che un disco non è riuscito e è stato sostituito.)

Come interrompere questa operazione di risincronizzazione pianificata mentre è in esecuzione? Un altro array di raid è "resync pending", perché vengono controllati tutti nello stesso giorno (domenica sera) uno dopo l'altro. Voglio fermare completamente questa risincronizzazione di questa domenica sera.

[Modifica: sudo kill -9 1010non lo ferma, 1010 è il PID del processo md2_resync]

Vorrei anche sapere come posso controllare gli intervalli tra le risincronizzazioni e il tempo rimanente fino a quello successivo.

[Edit2: Quello che ho fatto ora è stato di rallentare molto la risincronizzazione, quindi non disturba più:

sudo sysctl -w dev.raid.speed_limit_max=1000

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

Durante la notte lo riporterò su un valore elevato, quindi la risincronizzazione può terminare.

Questa soluzione alternativa va bene per la maggior parte delle situazioni, tuttavia sarebbe interessante sapere se ciò che ho chiesto è possibile. Ad esempio, non sembra possibile far crescere un array, mentre si sta risincronizzando o risincronizzando "in attesa"]


Non credo di avere le palle per annullare una risincronizzazione. Temo che non possa mai ricominciare.
Tom O'Connor,

1
@Tom: questa è solo la normale risincronizzazione che controlla ogni domenica se tutto corrisponde. se viene arrestato (ad es. spegnendo la macchina) continua al successivo avvio.
Adam5,

Oh va bene. Va bene allora
Tom O'Connor il

Risposte:


48

Se il tuo array è md0alloraecho "idle" > /sys/block/md0/md/sync_action

'inattivo' interromperà una risincronizzazione / recupero attivo ecc. Non vi è alcuna garanzia che un altro risincronizzazione / recupero non possa essere riavviato automaticamente, anche se sarà necessario qualche evento per attivarlo.

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


Potrei aggiornare il file di testo dopo aver modificato le sue autorizzazioni, ma il contenuto del file viene modificato in "resync" da dietro nella stessa istanza. E la risincronizzazione continua sull'altro array (che in precedenza era "in sospeso"). Quando scrivo "inattivo" sul file dell'altro array si scambia di nuovo, ma non si ferma mai.
Adam5,

2
Se hai più incursioni: echo inattivo | sudo tee / sys / block / md * / md / sync_action
Ole Tange

In realtà "inattivo" mette in pausa solo il controllo. Il prossimo "controllo" continuerà a /sys/block/md0/md/sync_min’. To reset this write 0` per questo file.
rudimeier,

33

Volevo rallentare o mettere in pausa il processo di risincronizzazione per salvare alcuni I / O per eseguire il backup di alcune cose su un altro computer. Questo thread mi ha aiutato ma ho trovato un'altra soluzione.

Sul mio Debian Lenny:

  • echo "idle" > /sys/block/md0/md/sync_action funziona ma il processo di risincronizzazione viene riavviato immediatamente.

  • checkarray -x --all : funziona, ma stesso risultato: il processo di risincronizzazione viene riavviato immediatamente.

Quindi uso questo metodo: echo 0 > /proc/sys/dev/raid/speed_limit_max


1
Approccio interessante Ho scoperto che devi anche limitare il valore in speed_limit_min.
Diomidis Spinellis,

1
Ho anche dovuto impostare speed_limit_mina 0 per mettere in pausa totalmente la risincronizzazione.
njahnke,

12

È possibile annullare una risincronizzazione dell'array in corso utilizzando la seguente sequenza di comandi (come 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

Si noti che ciò può lasciare l'array in uno stato incoerente . Non farlo a meno che non si sia certi che l'array sia in buone condizioni e rieseguire la sincronizzazione in un secondo momento.

(Credito dove il credito è dovuto: ho trovato questo incantesimo in questa discussione .)


8

Come accennato in precedenza, sui sistemi Debian / Ubuntu lo /etc/cron.d/mdadmscript invoca lo /usr/share/mdadm/checkarrayscript per avviare i controlli di risincronizzazione.

Questo script ha un'opzione per annullare tutti i controlli di sincronizzazione in esecuzione:

/usr/share/mdadm/checkarray -x --all

3

Non sono sicuro di come annullare una risincronizzazione, ma la pianificazione è controllata dai /etc/cron.d/mdadmsistemi Debian / Ubuntu.

La sceneggiatura /usr/share/mdadm/checkarraypotrebbe far luce sull'altra parte della tua domanda, poiché questo è ciò che viene chiamato da cron.


3

Se il tuo dispositivo md è md0 e vuoi interrompere la risincronizzazione scrivi:

echo "idle" > /sys/block/md0/md/sync_action

3

Possibile soluzione per questo, ci è voluto un po 'per entrare nei dettagli.

Il mio sistema: CentOS 6.5 mdadm v3.3.2

Controlli costanti ogni settimana, volevo mettere in pausa uno di essi, RAID è pulito, il controllo è stato chiamato tramite lo script /etc/cron.d/raid-check che viene eseguito settimanalmente.

Per annullare il controllo, si utilizza la funzione --misc --action. Supponendo che il dispositivo RAID sia / dev / md0 e questo è solo il controllo di coerenza settimanale e non un errore del dispositivo, come root:

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

Allo stesso modo, per avviare il controllo di coerenza

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


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

Non funziona quando / sys / block / md * / md / sync_action è "resync" (diversamente dal suo stato "check" o "repair". È possibile echo "idle" nel file sync_action, tuttavia non ha effetto sul Questo file di documentazione del kernel qui indica erroneamente che funzionerà, ma non ha mai funzionato per me:

'inattivo' interromperà una risincronizzazione / recupero attivo ecc. Non vi è alcuna garanzia che un altro risincronizzazione / recupero non possa essere riavviato automaticamente, anche se sarà necessario qualche evento per attivarlo.


1
Tuttavia, è possibile effettuare la frequenza di "risincronizzazione" con / sys / block / md * / md / sync_speed_max in questo stato. Non sono sicuro del perché la documentazione sia errata, forse nessuno lo sa
Brian

Prenditi un minuto di tempo per apprendere la sintassi del markdown di Stack Exchange ( meta.serverfault.com/editing-help )
Sven

0

So che questo è un post di 4 anni ma puoi anche farlo (supponendo md0 come array e sdb4 come "disco" resyncing):

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

Questo comando finge che sdb4 sia un disco guasto e quindi lo stacca dall'array, interrompendo la risincronizzazione. Se non si sono verificati errori durante l'azione resync-stop, questo comando rimuoverà anche sdb4 dall'array md0. Se si è verificato un errore, il disco rimane nello stato non riuscito ma rimane nell'array.

Se si guasta un disco ovunque mdadm, lo si imposta logicamente non riuscito. Se l'array era pulito (non degradato), il disco rimane coerente e può essere aggiunto nuovamente dall'opzione --add << disk >> --assume-clean senza alcun timore. Se c'è stata qualche azione dopo che è stata staccata (ad es. Risincronizzazione, ricostruzione o persino una scrittura), allora -assume-clean fallisce e avvia immediatamente un'azione di risincronizzazione.

Cambiare raid.speed_limit_mined raid.speed_limit_maxè in qualche modo una cattiva idea perché influisce non solo sulle velocità di risincronizzazione / ricostruzione, ma anche sulle normali velocità operative e probabilmente si perderanno molte prestazioni ottenute utilizzando array RAID.


5
Penso che sia una cattiva idea rimuovere un disco sano dal RAID. Il più delle volte potrebbe non causare alcun problema, ma ogni volta che lo fai, c'è il rischio di causare la perdita o il danneggiamento dei dati.
Kasperd,

1
Non farlo mai. Se aggiungi un disco con --assume-cleansu un sistema live e hai avuto delle scritture sul disco rimanente, stai chiedendo problemi.
sanmai
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.