1. BENVENUTO SU CONSOLE TRIBE

    Benvenuto, stai navigando nella nostra community come ospite

    Avere un account su Console Tribe ti permetterà di creare e partecipare alle discussioni e al mercatino, organizzare tornei e partite online, iniziare conversazioni personali con gli altri giocatori del forum e di utilizzare tutte le funzioni di questo sito.

    Registra il tuo account in meno di 5 secondi, se vuoi puoi sfruttare i login social via Facebook, Google Plus o Twitter.

WarmSwap: I cassettini, gli hard disk e linux

Discussione in 'Computer & Technology' iniziata da ConteZero, 18 Agosto 2005.

  1. ConteZero

    ConteZero Tribe Member

    Registrato:
    16 Marzo 2005
    Messaggi:
    7.682
    "Mi Piace" ricevuti:
    1
    Punteggio:
    36
    Premessa
    Le periferiche IDE sono oramai nei nostri PC da quasi vent'anni ed in questo periodo hanno subito diverse evoluzioni per adattarsi a problemi sempre più complessi.
    Questo piccolo articolo vuole spiegare com'è possibile, grazie al fido linux ed un utility oramai standard in tutte le distribuzioni (hdparm), smontare e sostituire un disco senza dover spegnere il computer.

    IDE / SerialATA
    Quello che seguiremo è un breve tutorial su come effettuare la sostituzione del disco 'a caldo' su dischi IDE (quelli collegati con cavi a 40 o 80 poli, per intenderci), buona parte di quanto vedremo è probabilmente adattabile senza problemi anche ai dischi Serial ATA che sono stati progettati per supportare anche questo genere d'operazioni.
    Non avendo, ad oggi, ancora fatto esperimenti per testare fino a che punto sia stabile e funzionante la procedura di sostituzione a caldo dei dischi SerialATA si preferisce comunque non includerli in questa trattazione.

    HotSwap / WarmSwap
    Originariamente i device IDE non sono stati pensati per questo genere di cose, che ha senso principalmente nei server, però è vero che, con qualche accorgimento e con un minimo di perizia, questo genere di operazione può essere svolto in modo sicuro anche sui computer di casa.
    Per la precisione quella che eseguiremo sarà la procedura di "warmswap"; spesso si tende a chiamare la rimozione a computer acceso "hotswap", la differenza è che in hotswap basta tirare la maniglia ed il disco viene via senza nessun problema e senza destabilizzare il sistema operativo mentre con il warmswap è necessario lanciare una serie di comandi e seguire una serie di accorgimenti per evitare uno o più dei seguenti effetti indesiderati:
    1. il disco si distrugge (perchè le testine ancora girano quando lo strattonate via)
    2. il sistema operativo si pianta (perchè nessuno l'avverte che il disco è stato rimosso)
    3. si brucia la scheda madre (per un ritorno di corrente sul circuito)
    4. si brucia l'altro disco sullo stesso canale IDE
    Chi è responsabile di cosa
    Il warmswap è comunque una specie di hack, sebbene funzioni bene con moltissimi controller (l'abbiamo testato su controller HighPoint, Intel e VIA) ha un margine di rischio nel cui potrebbe accadere qualcosa di molto brutto; per questa ragione noi non ci prendiamo la responsabilità di quello che può accadere e, per evitarVI problemi, vi invitiamo a provare dapprima su un sistema senza altri dischi montati e con un disco "sacrificabile" privo di dati importanti.
    Nessuno ha piacere a vedere controller bruciati, dischi che smettono di funzionare e via dicendo ma questo è in teoria possibile se qualcosa andasse male.
    A noi non è mai successo ma ciò non vuol dire non sia possibile...

    Prerequisiti
    Come minimo è necessario avere una macchina con linux installato, un kernel abbastanza recente ed un cassettino IDE in cui mettere i dischi da staccare e riattaccare.
    E fortemente consigliabile un cassettino che "stacchi la corrente" al disco quando questo è pronto per essere rimosso... alcuni cassettini hanno un piccolo interruttore elettrico che toglie l'alimentazione al disco quando si toglie la "sicura" che blocca il cassettino nella slitta; un tale prodigio della tecnica costa circa 12 euro al negozio sotto casa ed offre un certo margine di sicurezza in più.
    Per motivi che spiegherò in fondo è consigliabile che il canale IDE collegato al cassettino non abbia altri device.

    La rimozione spiegata comando per comando
    La prima cosa che bisogna fare (e questo non ha a che fare con l'interfaccia IDE) è "smontare" logicamente, mediante il comando umount, le partizioni appartenenti al disco che dobbiamo togliere (se ce ne sono di montate) o disabilitare il disco dall'array (nel caso il disco faccia parte di un RAID software), ricordatevi di fare un sync prima, così svuoterete i buffer di linux.
    A questo punto è consigliabile disabilitare il DMA per evitare possibili trasferimenti asincroni a seguire, cosa che viene fatta tramite:
    hdparm -d 0 /dev/hdx
    x è ovviamente il numero relativo al disco.
    E' consigliabile anche lanciare un comando che svuoti la cache del disco (visto che alcuni dischi IDE arrivano ad 8 o 16 Mb di cache è probabile che la cosa sia utile):
    hdparm -f /dev/hdx
    a questo punto bisogna 'spegnere' il disco, in pratica lo mettiamo 'a dormire' in sleep, cosicchè le testine si parcheggino ed i dischi smettano di girare, cosa che renderà l'estrazione meno pericolosa per l'integrità fisica del disco stesso:
    hdparm -Y /dev/hdx
    a questo punto il disco dovrebbe fare un rumore tipico che è quello delle testine che si parcheggiano e dei dischi che smettono di girare.
    Qui è possibile mandare qualche altro comando addizionale, alcuni di questi non sono riconosciuti dai controller ed in genere non sono necessari, ma li includo per completezza:
    hdparm -x 1 /dev/hdx
    serve per mettere in protezione l'interfaccia elettronica del disco, un comando equivalente esiste per il controller ma in genere non è supportato.
    A questo punto dobbiamo dire a linux di disabilitare il controller, questo passo può essere fatto anche dopo la rimozione del disco ma la cosa è sconsigliabile perchè un qualsiasi componente o utente potrebbe altrimenti provare ad accedere al device producendo effetti rovinosi, se non addirittura il blocco in toto del computer:
    hdparm -U n /dev/hdx
    e qui bisogna fare un paio di precisazioni, n è il numero che rappresenta il controller IDE da disabilitare; zero per il primo controller (che gestisce hda e hdb), uno per il secondo (hdc e hdd) e così via, inoltre x non deve necessariamente rappresentare il disco rimosso, semplicemente (per motivi asburgici) bisogna passare al comando il percorso ad un device qualsiasi (purchè esistente) affichè il comando venga eseguito.
    Ora potete rimuovere il vostro meraviglioso disco.

    L'inserimento spiegato comando per comando
    Se la rimozione è stata difficile l'inserimento del nuovo disco è invece molto più semplice, basta mettere il nuovo disco (andrà immediatamente in spin-up) e dare i pochi comandi necessari per farlo riconoscere al sistema.
    Se avete messo in protezione il controller (non ho neppure indicato il comando, tanto nel 99% dei casi non è supportato), dovete riabilitarlo subito dopo aver installato il nuovo disco.
    A questo punto linux non ha idea del fatto che c'è un altro disco, l'interfaccia IDE non è progettata per mandare dei segnali che indicano l'inserimento dei dischi, per cui dovete forzare il sistema a esaminare il controller e riconoscere eventuali dischi su di esso; il comando è:
    hdparm -R c p i /dev/hdx
    ed è il comando più rognoso di tutta la procedura, per il numero ed il significato dei parametri; vediamoli insieme:
    c rappresenta l'indirizzo di porta del controller
    p rappresenta l'indirizzo di porta dati del controller
    i rappresenta l'irq del controller stesso
    x rappresenta come al solito un device esistente, per questo di solito si passa /dev/hda che, essendo di norma il disco di sistema, è sempre disponibile.
    per gli altri parametri possiamo vederli controllando le righe che ci dà il dmesg,per comodità io lancio direttamente
    dmesg | grep "on irq"
    che non è il massimo della pulizia ma ritorna correttamente:
    ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
    ide1 at 0x170-0x177,0x376 on irq 15
    ide0 è ovviamente il controller 0, 0x1f0 è l'indirizzo di porta del controller (ad hdparm bisogna fornirlo con lo 0x iniziale), 0x3f6 è l'indirizzo di porta dati (anch'esso và fornito con 0x) e 14 è ovviamente l'IRQ.
    Non spaventatevi, questi valori sono fissi, una volta trovati non cambiano, per di più quelli relativi ai primi due controller (indicati appena sopra) sono standard.
    Di norma il -R dovrebbe anche controllare le partizioni del disco montato ma, per una questione di sicurezza e pulizia, è consigliabile forzare la rilettura, mediante il comando:
    hdparm -z /dev/hdx
    dove x questa volta rappresenta proprio il disco la cui partition table vogliamo che venga riletta.
    A seguire vanno ulteriori comandi (che non scrivo) che servono a reimpostare la modalità di scrittura adeguata, riabilitare il DMA, il modo a 32 bit, i trasferimenti multipli e via dicendo.

    Nota dolente
    Il limite del warmswap IDE è che si può usare solo un disco per canale... la cosa non è esattamente vera, teoricamente potremmo mettere sia un master che uno slave sullo stesso canale ma il comando di deregistrazione del device, che lavora direttamente sul controller, disabilita comunque entrambi i dischi, per cui anche il secondo sarebbe irraggiungibile fino a quando non viene riregistrato il canale (purtroppo non c'è alternativa).

    Arrivederci!
  2. Ivan

    Ivan Administrator

    Registrato:
    9 Dicembre 2002
    Messaggi:
    17.494
    "Mi Piace" ricevuti:
    33
    Punteggio:
    1.007
    Località:
    H3||
    Spettacolo Conte :eek:
  3. Woldemort

    Woldemort Tribe Newbie

    Registrato:
    5 Aprile 2007
    Messaggi:
    446
    "Mi Piace" ricevuti:
    1
    Punteggio:
    0
    ma la cosa nn è possibile anke con windows? in teoria basta disinstallare la periferica da gestione risorte e smontarla nellinserimento di unalltra windows riconosce quella nuova e la installa
  4. ConteZero

    ConteZero Tribe Member

    Registrato:
    16 Marzo 2005
    Messaggi:
    7.682
    "Mi Piace" ricevuti:
    1
    Punteggio:
    36
    Teoricamente si, ma è un lavoraccio infame da fare "point & click".
    E poi oramai i cassettini SATA non costano un cispolo.