Newsgroup: it.comp.os.linux.sys
Titolo: mdadm non ferma un device raid

Problema:
defiant:/etc# mdadm --manage --fail /dev/md1 /dev/hda4
mdadm: set /dev/hda4 faulty in /dev/md1
defiant:/etc# mdadm --manage --remove /dev/md1 /dev/hda4
mdadm: hot remove failed for /dev/hda4: Device or resource busy
Possibile che io non riesca a fermare questo maledetto device raid?
Contiene solo una partizione attiva:
Personalities : [raid1]
md1 : active raid1 hda4[1]
      738880 blocks [2/1] [_U]
vorrei fermarlo, e poi ricostruirlo in altro modo. Voglio insomma
liberare /dev/hda4, ma non me lo fa fare. Ho letto di tutto, ma non
riesco a capire. Continua a dire che /dev/hda4 e' occupato, ma non e'
vero, nessuno lo usa.
Qualcuno ne sa qualcosa? Bug nel kernel? Il kernel e' 2.6.11.8
Grazie

 Qualcuno ne sa qualcosa? Bug nel kernel? Il kernel e' 2.6.11.8
mdadm -S /dev/md1
-- 
Flavio Visentin
Membro del CICAP
Comitato Italiano per il Controllo delle Affermazioni di P4

 mdadm -S /dev/md1
Gia' provato, non va:
defiant:/usr/local/space# mdadm -S /dev/md1
mdadm: fail to stop array /dev/md1: Device or resource busy

 liberare /dev/hda4, ma non me lo fa fare. Ho letto di tutto, ma non
hda4 sta funzionando.
NON puoi fermarlo.
Puoi eliminare dal raid l'altro disco ma NON hda4.
-- 
A: Because we read from top to bottom, left to right.
Q: Why should i start my reply below the quoted text?

Robbi ha scritto:

di 2 componenti in mirroring ne puoi stoppare 1 solo,
tu ne hai 1, puoi impostarlo faulty ma non stopparlo


Quindi ferma tutti i processi che accedono a /dev/md1 (
p.es
. smonta la
partizione) e fermalo.


 partizione) e fermalo.
Niente, l'avevo gia' fatto: la partizione e' gia' smontata, ma non si
ferma. Pare che nessun processo acceda a /dev/md1 (o a /dev/hda4).


lsof | grep md1
Altrimenti reboot


 Puoi eliminare dal raid l'altro disco ma NON hda4.
L'altro disco infatti l'ho eliminato. Io voglio fermare completamente
md1, distruggerlo, riavere accesso a /dev/hda4. In un qualche modo si
potra' pur fare...

 Altrimenti reboot
Dai, che reboot.
se lsof non dice nulla, lo smonta e basta.
Piuttosto,Robbi, dopo aver smontato RICREA ex novo l'array.
ti dirà che non può.
Usi --force (mi pare)
e lui ti dirà una ozione non documentata...
la usi e hai l'array ricreato.


 Altrimenti reboot
Questo l'avevo gia' provato, senza risultati.

  /proc/828/exe
Idem, ma txt=Text file, cioe' l'eseguibile.
Tutte e 3 le righe sono relative al processo md1_raid1, comunque.
Anzi, al kernel thread md1_raid1 (ecco perche' ha il text file nella /proc).


 Anzi, al kernel thread md1_raid1 (ecco perche' ha il text file nella /proc).
Potrebbe essere un bug del kernel, allora? (Il fatto che io non riesca
a stoppare il device raid, intendo).



Intanto ti ho aiutato a interpretare l'output di lsof in generale,
temo pero' di non poter fare di piu'.
Purtroppo non ho mai usato md, non conosco in profondita' il
funzionamento, tantomeno a livello di kernel.
Probabilmente dico un'ovvieta'/banalita', ma nel caso tu abbia 
il supporto raid compilato come modulo, potresti provare a scaricarlo
(modprobe -r) e ricaricarlo, ma ovviamente solo se non hai altri raid
attivi o se puoi disattivare anche quelli.
Non so quanto sia consigliabile o fattibile tentare di killare quel 
kernel thread...

 se lsof non dice nulla, lo smonta e basta.
Evidentemente non ti è mai successo, ma può accadere che una risorsa
risulti bloccata anche se non più utilizzata (prb è un bug).
L'unica soluzione, in quei casi, è il reboot.


 L'unica soluzione, in quei casi, č il reboot.
Temo di dover confermare che e' capitato anche a me,
con Debian(Sarge), con Slackware(10.x), con RedHat (<=9), con
Mandrake(<=9). E' raro, ma capita.

 L'unica soluzione, in quei casi, è il reboot.
Io ho reboot-ato piu' volte, ma invano... Non so piu' che fare,
probabilmente dovrei provare con un nuovo kernel.

 kernel thread...
Mmm, secondo me non e' bene, ho anche un altro raid attivo, non vorrei
perdere tutto...

 probabilmente dovrei provare con un nuovo kernel.
mi sorge un dubbio atroce...
posta il contenuto di /etc/fstab e di /proc/mounts e del file di conf
del tuo bootloader (/etc/lilo.conf, /boot/grub/menu.lst, ecc.)


 del tuo bootloader (/etc/lilo.conf, /boot/grub/menu.lst, ecc.)
Aaaaahhhg!
Avevo modificato tutto, ero stato attento a copiare tutta la root su
una partizione non usata, ho modificato /etc/fstab di conseguenza, ho
rifatto il boot, e mi sono dimenticato di lilo! Dentro a lilo.conf c'e'
ancora scritto che la root e' /dev/md1. Temo proprio che il problema
sia quello...
Grazie.

Ecco i presentimenti... :-)


 Ecco i presentimenti... :-)
Sigh, pero' ho ancora problemi. Stavo tentando di modificare lilo.conf
per rimediare al problema, ma lilo mi dice:
Fatal: Trying to map files from unnamed device 0x0000 (NFS/RAID mirror
down ?)
Allora, abusando della pazienza posto anche tutti i dati che possono
servire per identificare il problema:
defiant:/# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hda4[1]
      738880 blocks [2/1] [_U]
md0 : active raid1 hdb6[0] hda6[1]
      1637376 blocks [2/2] [UU]
unused devices: <none>
Questo invece e' lilo.conf
lba32
delay=20
vga=1
boot=/dev/hda
root=/dev/hda1
install=bmp
map=/boot/map
append="apm=on hisax=3,2,10,0xD80 ide0=ata66"
bitmap=/boot/coffee.bmp
default=Linux
image=/vmlinuz
        label=Linux
        read-only
image=/vmlinuz.old
        label=LinuxOLD
        read-only
        optional
image=/boot/vmlinuz-2.4.25
        label=linux-2.4.25
        read-only
E infine, questo l'output di mount
defiant:/# mount
/dev/hda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/hdb8 on /tmp type ext3 (rw)
/dev/hdb9 on /usr type ext3 (rw)
/dev/md0 on /home type ext3 (rw)
/dev/hda7 on /mnt/d type hpfs (rw,noexec,nosuid,nodev)
/dev/hda8 on /mnt/e type hpfs (rw,noexec,nosuid,nodev)
tmpfs on /dev type tmpfs (rw,size=10M,mode=0755)

 tu ne hai 1, puoi impostarlo faulty ma non stopparlo
E se metti in faulty l'unico componente? Cosa succede?
Non ho il coraggio di provare. Se il disco viene impostato in faulty 
dove va a scrivere i dati?

Ho risolto il problema: ho rifatto il boot perche' cosi' lilo non
montava piu' la partizione sbagliata, e adesso non riesco piu' a
rientrare, il boot non boota niente. Disperato, ho installato un
sistema base su una partizione libera, e quello va, ma quando modifico
lilo in modo da fargli montare le mie vecchie partizioni, ottengo un
errore strano, cannot stat raid partition o qualcosa del genere (ora
non scrivo da casa, visto che non mi parte piu' niente). Non capisco
cosa c'entri raid, visto che tento di montare una partizione root non
raid.
Possibile che ci siano delle schifezze registrate negli header delle
partizioni? Come si fa a ripulire senza perdere dati?
Oppure, qualche idea?

Come si fa a ripulire senza perdere dati?
E' un controsenso di domanda, se vuoi ripulire (dd if=/dev/zero
of=partizione count=qualche centinaio dovrebbe bastare) allora perdi i dati.
Puoi farti una copia fisica del disco (dd if=partizione of=file.immagine
bs=1048576) e poi montarla con -o loop, sperando che non rompa le scatole.
-- 
Per rispondermi, togli il nome del poeta