<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Warmswap IDE]]></title><description><![CDATA[<p><strong>WarmSwap: I cassettini, gli hard disk e linux</strong></p>
<p><strong>Premessa</strong></p>
<p>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.</p>
<p>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.</p>
<p><strong>IDE / SerialATA</strong></p>
<p>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.</p>
<p>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.</p>
<p><strong>HotSwap / WarmSwap</strong></p>
<p>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.</p>
<p>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:</p>
<p>    1. il disco si distrugge (perch? le testine ancora girano quando lo strattonate via)</p>
<p>    2. il sistema operativo si pianta (perch? nessuno l'avverte che il disco ? stato rimosso)</p>
<p>    3. si brucia la scheda madre (per un ritorno di corrente sul circuito)</p>
<p>    4. si brucia l'altro disco sullo stesso canale IDE</p>
<p><strong>Chi ? responsabile di cosa</strong></p>
<p>Il warmswap ? comunque una specie di hack, sebbene funzioni bene con moltissimi controller (l'abbiamo testato su controller <em>HighPoint</em>, <em>Intel</em> e <em>VIA</em>) 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.</p>
<p>Nessuno ha piacere a vedere controller bruciati, dischi che smettono di funzionare e via dicendo ma questo ? in teoria possibile se qualcosa andasse male.</p>
<p>A noi non ? mai successo ma ci? non vuol dire non sia possibile...</p>
<p><strong>Prerequisiti</strong></p>
<p>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.</p>
<p>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?.</p>
<p>Per motivi che spiegher? in fondo ? consigliabile che il canale IDE collegato al cassettino non abbia altri device.</p>
<p><strong>La rimozione spiegata comando per comando</strong></p>
<p>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.</p>
<p>A questo punto ? consigliabile disabilitare il DMA per evitare possibili trasferimenti asincroni a seguire, cosa che viene fatta tramite:</p>
<p>    hdparm -d 0 /dev/hd<strong>x</strong></p>
<p>x ? ovviamente il numero relativo al disco.</p>
<p>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):</p>
<p>    hdparm -f /dev/hd<strong>x</strong></p>
<p>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:</p>
<p>    hdparm -Y /dev/hd<strong>x</strong></p>
<p>a questo punto il disco dovrebbe fare un rumore tipico che ? quello delle testine che si parcheggiano e dei dischi che smettono di girare.</p>
<p>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:</p>
<p>    hdparm -x 1 /dev/hd<strong>x</strong></p>
<p>serve per mettere in protezione l'interfaccia elettronica del disco, un comando equivalente esiste per il controller ma in genere non ? supportato.</p>
<p>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:</p>
<p>    hdparm -U <strong>n</strong> /dev/hd<strong>x</strong></p>
<p>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.</p>
<p>Ora potete rimuovere il vostro meraviglioso disco.</p>
<p><strong>L'inserimento spiegato comando per comando</strong></p>
<p>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.</p>
<p>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.</p>
<p>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 ?:</p>
<p>    hdparm -R <strong>c</strong> <strong>p</strong> <strong>i</strong> /dev/hd<strong>x</strong></p>
<p>ed ? il comando pi? rognoso di tutta la procedura, per il numero ed il significato dei parametri; vediamoli insieme:</p>
<p><strong>c</strong> rappresenta l'indirizzo di porta del controller</p>
<p><strong>p</strong> rappresenta l'indirizzo di porta dati del controller</p>
<p><strong>i</strong> rappresenta l'irq del controller stesso</p>
<p><strong>x</strong> 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.</p>
<p>per gli altri parametri possiamo vederli controllando le righe che ci d? il dmesg,per comodit? io lancio direttamente</p>
<p>    dmesg | grep "on irq"</p>
<p>che non ? il massimo della pulizia ma ritorna correttamente:</p>
<p>    ide0 at <strong>0x1f0</strong>-0x1f7,<strong>0x3f6</strong> on irq <strong>14</strong></p>
<p>    ide1 at <strong>0x170</strong>-0x177,<strong>0x376</strong> on irq <strong>15</strong></p>
<p>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.</p>
<p>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.</p>
<p>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:</p>
<p>    hdparm -z /dev/hd<strong>x</strong></p>
<p>dove x questa volta rappresenta proprio il disco la cui partition table vogliamo che venga riletta.</p>
<p>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.</p>
<p><strong>Nota dolente</strong></p>
<p>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).</p>
<p>Arrivederci!</p>
]]></description><link>https://www.xtremehardware.com/forum//topic/145/warmswap-ide</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 19:44:56 GMT</lastBuildDate><atom:link href="https://www.xtremehardware.com/forum//topic/145.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 Aug 2005 17:23:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warmswap IDE on Mon, 22 Aug 2005 17:23:36 GMT]]></title><description><![CDATA[<p><strong>WarmSwap: I cassettini, gli hard disk e linux</strong></p>
<p><strong>Premessa</strong></p>
<p>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.</p>
<p>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.</p>
<p><strong>IDE / SerialATA</strong></p>
<p>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.</p>
<p>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.</p>
<p><strong>HotSwap / WarmSwap</strong></p>
<p>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.</p>
<p>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:</p>
<p>    1. il disco si distrugge (perch? le testine ancora girano quando lo strattonate via)</p>
<p>    2. il sistema operativo si pianta (perch? nessuno l'avverte che il disco ? stato rimosso)</p>
<p>    3. si brucia la scheda madre (per un ritorno di corrente sul circuito)</p>
<p>    4. si brucia l'altro disco sullo stesso canale IDE</p>
<p><strong>Chi ? responsabile di cosa</strong></p>
<p>Il warmswap ? comunque una specie di hack, sebbene funzioni bene con moltissimi controller (l'abbiamo testato su controller <em>HighPoint</em>, <em>Intel</em> e <em>VIA</em>) 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.</p>
<p>Nessuno ha piacere a vedere controller bruciati, dischi che smettono di funzionare e via dicendo ma questo ? in teoria possibile se qualcosa andasse male.</p>
<p>A noi non ? mai successo ma ci? non vuol dire non sia possibile...</p>
<p><strong>Prerequisiti</strong></p>
<p>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.</p>
<p>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?.</p>
<p>Per motivi che spiegher? in fondo ? consigliabile che il canale IDE collegato al cassettino non abbia altri device.</p>
<p><strong>La rimozione spiegata comando per comando</strong></p>
<p>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.</p>
<p>A questo punto ? consigliabile disabilitare il DMA per evitare possibili trasferimenti asincroni a seguire, cosa che viene fatta tramite:</p>
<p>    hdparm -d 0 /dev/hd<strong>x</strong></p>
<p>x ? ovviamente il numero relativo al disco.</p>
<p>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):</p>
<p>    hdparm -f /dev/hd<strong>x</strong></p>
<p>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:</p>
<p>    hdparm -Y /dev/hd<strong>x</strong></p>
<p>a questo punto il disco dovrebbe fare un rumore tipico che ? quello delle testine che si parcheggiano e dei dischi che smettono di girare.</p>
<p>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:</p>
<p>    hdparm -x 1 /dev/hd<strong>x</strong></p>
<p>serve per mettere in protezione l'interfaccia elettronica del disco, un comando equivalente esiste per il controller ma in genere non ? supportato.</p>
<p>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:</p>
<p>    hdparm -U <strong>n</strong> /dev/hd<strong>x</strong></p>
<p>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.</p>
<p>Ora potete rimuovere il vostro meraviglioso disco.</p>
<p><strong>L'inserimento spiegato comando per comando</strong></p>
<p>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.</p>
<p>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.</p>
<p>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 ?:</p>
<p>    hdparm -R <strong>c</strong> <strong>p</strong> <strong>i</strong> /dev/hd<strong>x</strong></p>
<p>ed ? il comando pi? rognoso di tutta la procedura, per il numero ed il significato dei parametri; vediamoli insieme:</p>
<p><strong>c</strong> rappresenta l'indirizzo di porta del controller</p>
<p><strong>p</strong> rappresenta l'indirizzo di porta dati del controller</p>
<p><strong>i</strong> rappresenta l'irq del controller stesso</p>
<p><strong>x</strong> 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.</p>
<p>per gli altri parametri possiamo vederli controllando le righe che ci d? il dmesg,per comodit? io lancio direttamente</p>
<p>    dmesg | grep "on irq"</p>
<p>che non ? il massimo della pulizia ma ritorna correttamente:</p>
<p>    ide0 at <strong>0x1f0</strong>-0x1f7,<strong>0x3f6</strong> on irq <strong>14</strong></p>
<p>    ide1 at <strong>0x170</strong>-0x177,<strong>0x376</strong> on irq <strong>15</strong></p>
<p>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.</p>
<p>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.</p>
<p>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:</p>
<p>    hdparm -z /dev/hd<strong>x</strong></p>
<p>dove x questa volta rappresenta proprio il disco la cui partition table vogliamo che venga riletta.</p>
<p>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.</p>
<p><strong>Nota dolente</strong></p>
<p>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).</p>
<p>Arrivederci!</p>
]]></description><link>https://www.xtremehardware.com/forum//post/1948</link><guid isPermaLink="true">https://www.xtremehardware.com/forum//post/1948</guid><dc:creator><![CDATA[ConteZero]]></dc:creator><pubDate>Mon, 22 Aug 2005 17:23:36 GMT</pubDate></item></channel></rss>