|
|
Riga 1: |
Riga 1: |
| == Introduzione == | | ==Installazione QEMU con qvm86/kqemu per Debian/Ubuntu== |
|
| |
|
| Gli '''Hard Disk''' sono una delle parti pi� delicate degli odierni pc, ed infatti sono tra le periferiche che sono pi� facilmente soggette a rompersi.
| | === Qemu con supporto qvm86 (libero, ma sperimentale) === |
|
| |
|
| Fortunantamente ci sono degli strumenti studiati per diagnosticare i malfunzionamenti prima ancora che possano creare danno (speriamo ;-)). Ma ricordate che un backup periodico dei dati importanti � sempre la scelta migliore.
| | ====1. Fase Preliminare==== |
| | Assicuratevi di aver installato i pacchetti necessari a scaricare e compilare il tutto: |
| | * '''ssh''' e '''cvs''' (per scaricare qvm86 occorre andare via cvs remoto) |
| | * '''patch''' (per usare qvm86 con qemu occorre effettuare una piccola patch ai sorgenti di qemu) |
| | * '''gcc-3.3''' oppure '''gcc-3.4''' (qemu non � ancora compilabile col gcc 4.0) |
| | * '''libsdl1.2-dev''' |
| | * '''zlib1g-dev''' |
| | * '''make''' |
| | * '''kernel-headers-'''''versione_del_kernel_in_uso'' (oppure '''linux-headers-'''''versione_del_kernel_in_uso'' se avete una Ubuntu od usate una Debian unstable con un kernel recente). La versione pu� essere individuata eseguendo il comando <code>uname -r</code>. |
|
| |
|
| In questa guida vedremo come usare alcuni strumenti come '''smartmontools''' e '''badblocks''' per monitorare lo stato di salute di un hard disk, vedremo come effettuare le basilari operazioni di backup di emergenza e come affrontare un eventuale ripristino dei dati.
| | ====2. Recupero file QEMU==== |
| | Scaricate da [http://fabrice.bellard.free.fr/qemu/download.html http://fabrice.bellard.free.fr/qemu/download.html] gli archivi dei codici sorgenti di QEMU, e come '''utente diverso da root''' scompattateli in una directory e poi entrateci. |
| | $ tar zxvf qemu-0.8.0.tar.gz |
| | $ cd qemu-0.8.0 |
|
| |
|
| {{Box|Nota|Questa guida raccoglie le mie (limitate) conoscenze in materia nella speranza che siano utili ad altri. Sentitevi liberi di contribuire con approfondimenti o link ad ulteriori documenti.}}
| | ====3. Recupero file qvm86==== |
| | Scaricate via cvs i sorgenti di qvm86, in modo che siano all'interno della directory dei sorgenti di qemu, sempre con un utente '''diverso da root'''. |
| | $ export CVS_RSH=ssh |
| | $ export CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qvm86 |
| | $ cvs -z3 co qvm86 |
|
| |
|
| == DISCLAIMER == | | ====4. Applicazione patch==== |
| | Applicate dalla directory dei sorgenti di qemu la patch provvista da qvm86. |
| | $ patch -p0 < qvm86/patch.qvm86 |
|
| |
|
| Per quanto abbia fatto del mio meglio per verificare l'attendibilit� delle informazioni, non posso garantire in alcun modo che alcune delle tecniche illustrate di seguito non possano danneggire i vostri dati, bruciare la vostra casa o uccidere il vostro gatto.
| | ====5. Configurazione==== |
| | Configurate l'ambiente di compilazione avviando lo script <code>./configure</code>. |
| | Verificate che sia tutto ok, poi compilate il tutto ed installate. |
| | $ ./configure --cc=gcc-3.3 |
| | $ make |
| | Se avviando <code>./configure</code> avete errori del tipo che non si riesce a trovare la parte di sviluppo di libsdl, avete scompattato gli archivi come root. Leggete meglio sopra e ricominciate da capo. |
|
| |
|
| Faccio notare, inoltre, che il ripristino dei dati da una partizione corrotta � pi� una specie di magia nera che una scienza esatta, e richiede oltre che doti da chiromante anche una buona dose di fortuna. Quindi, e non lo ripeter� pi�, fate backup sistematici dei vostri dati o non lamentatevi se doveste perderli accidentalmente e non riuscire pi� a recuperarli!
| | Se dopo aver avviato <code>make</code> ci sono errori di compilazione, ci si pu� limitare a compilare il solo modulo di emulazione x86, aggiungendo l'opzione <code>--target-list=i386-softmmu</code> al comando <code>./configure</code>. |
| | $ make clean |
| | $ ./configure --cc=gcc-3.3 --target-list=i386-softmmu |
| | $ make |
|
| |
|
| == Controllare lo stato di salute di un HD: smartmontools ==
| | Se non ci sono errori, ora potete diventare root ed installare qemu. |
| | $ su |
| | Password: |
| | # make install |
|
| |
|
| Gli ''smartmontools'' permettono di usare la funzionalit� [http://en.wikipedia.org/wiki/Self-Monitoring%2C_Analysis_and_Reporting_Technology SMART] di tutti i moderni HD grazie alla quale � possibile prevedere con 24 ore di anticipo la rottura di un HD.
| | A questo punto qemu � installato in <code>/usr/local/bin/qemu</code>, ed il modulo qvm86 si trova in <code>/lib/modules/''versione_del_kernel''/misc/qvm86.ko</code>. |
|
| |
|
| In debian basta installare il pacchetto smartmontools:
| | ====6. Caricamento modulo==== |
| | Prima di eseguire qemu va caricato il modulo del kernel <code>qvm86</code>, va eventualmente creato <code>/dev/qvm86</code> (usato per interagire col kernel) e gli vanno dati permessi adeguati. |
|
| |
|
| # aptitude install smartmontools | | Esempio di procedura manuale (per chi '''non ha''' installato il pacchetto udev):''' |
| | # Queste due operazioni sono da fare come root una volta sola: |
| | # mknod /dev/qvm86 c 222 0 |
| | # chmod 666 /dev/qvm86 |
| | # |
| | # Questa operazione va eseguita come root ad ogni avvio del sistema per usare qemu |
| | # modprobe qvm86 |
|
| |
|
| === Analizzare lo stato dell'HD ===
| | Esempio di procedura manuale (per chi '''ha''' installato il pacchetto udev): |
| Possiamo usare l'utility <tt>'''smartctl'''</tt> per analizzare lo stato dell'HD.
| | # Queste due operazioni vanno eseguite come root ad ogni avvio del sistema |
| | # modprobe qvm86 |
| | # chmod 666 /dev/qvm86 |
|
| |
|
| Innanzi tutto vediamo alcune informazioni generiche sul nostro HD:
| | Per far eseguire '''automaticamente''' queste operazioni ad ogni avvio del sistema (consigliato): |
| | * diventate root (<code>su -</code>) |
| | * modificate il file <code>/etc/modules</code> aggiungendo la riga <code>qvm86</code>, in modo che il modulo venga automaticamente caricato al boot. |
| | * create il file <code>/etc/modprobe.d/qvm86</code> contenente le seguenti righe: |
| | ** per chi '''non ha''' installato il pacchetto udev: |
| | install qvm86 /sbin/modprobe --ignore-install qvm86 \ |
| | && (test -c /dev/qvm86 || mknod /dev/qvm86 c 222 0) \ |
| | && chmod 666 /dev/qvm86 |
| | :* per chi '''ha''' installato il pacchetto udev: |
| | install qvm86 /sbin/modprobe --ignore-install qvm86 && chmod 666 /dev/qvm86 |
|
| |
|
| <pre>
| | Una volta caricato il modulo e dati i permessi di lettura a /dev/qvm86 siamo pronti per eseguire il nuovo qemu. |
| # smartctl -i /dev/hda
| |
| smartctl version 5.34 [i686-pc-linux-gnu] Copyright (C) 2002-5 Bruce Allen
| |
| Home page is http://smartmontools.sourceforge.net/
| |
|
| |
|
| === START OF INFORMATION SECTION ===
| | Accertatevi che il qemu che andrete ad eseguire '''sia quello compilato in <code>/usr/local/bin/qemu</code>''': potete farlo eseguendo <code>type qemu</code>. |
| Model Family: Western Digital Caviar family
| |
| Device Model: WDC WD600BB-00CAA1
| |
| Serial Number: WD-WMA8F1747570
| |
| Firmware Version: 17.07W17
| |
| User Capacity: 60,022,480,896 bytes
| |
| Device is: In smartctl database [for details use: -P show]
| |
| ATA Version is: 5
| |
| ATA Standard is: Exact ATA specification draft version not indicated
| |
| Local Time is: Tue Jan 31 17:36:07 2006 CET
| |
| SMART support is: Available - device has SMART capability.
| |
| SMART support is: Enabled
| |
| </pre> | |
|
| |
|
| oltre alle informazioni generiche, dalle ultime due righe si capisce che l'HD supporta la tecnologia SMART e che il supporto � attivato. Se non fosse attivato basterebbe questo comando:
| | === Qemu col supporto kqemu (proprietario) === |
| <pre>
| |
| # smatmontools -s on /dev/hda
| |
| </pre>
| |
| per attivare il supporto SMART.
| |
|
| |
|
| Per controllare lo stato di salute attuale:
| | ====1. Fase Preliminare==== |
| | Assicuratevi di aver installato i pacchetti necessari a compilare il tutto: |
| | * '''gcc-3.3''' oppure '''gcc-3.4''' (qemu non � ancora compilabile col gcc 4.0) |
| | * '''libsdl1.2-dev''' |
| | * '''zlib1g-dev''' |
| | * '''make''' |
| | * '''kernel-headers-'''''versione_del_kernel_in_uso'' (oppure '''linux-headers-'''''versione_del_kernel_in_uso'' se avete una Ubuntu od usate una Debian unstable con un kernel recente). La versione pu� essere individuata eseguendo il comando <code>uname -r</code>. |
|
| |
|
| <pre>
| | ====2. Recupero file QEMU/KQEMU==== |
| # smartctl -H /dev/hda
| | Scaricate archivi dei codici sorgenti di [http://fabrice.bellard.free.fr/qemu/download.html QEMU e KQEMU], e come '''utente diverso da root''' scompattateli in modo che la directory di kqemu venga estratta all'interno della directory di qemu. Quindi entrate nella directory dei sorgenti. |
| smartctl version 5.34 [i686-pc-linux-gnu] Copyright (C) 2002-5 Bruce Allen
| | $ tar zxvf qemu-0.8.0.tar.gz |
| Home page is http://smartmontools.sourceforge.net/
| | $ tar zxvf kqemu-0.7.2.tar.gz -C qemu-0.8.0 |
| | $ cd qemu-0.8.0 |
|
| |
|
| === START OF READ SMART DATA SECTION === | | ====3. Configurazione==== |
| SMART overall-health self-assessment test result: PASSED
| | Configurate l'ambiente di compilazione avviando lo script <code>./configure</code>. |
| </pre> | | Verificate che sia tutto ok e che il supporto kqemu sia attivato, in modo che venga compilato |
| | il modulo corretto per il vostro kernel. Poi compilate il tutto ed installate. |
| | $ ./configure --cc=gcc-3.4 |
| | $ make |
| | Se avviando <code>./configure</code> avete errori del tipo che non si riesce a trovare la parte di sviluppo di libsdl, avete scompattato gli archivi come root invece che come utente comune. Leggete meglio sopra e ricominciate da capo. |
|
| |
|
| L'ultima riga ci dice che la salute sembra buona e nessuno dei parametri interni controllati da SMART ha superato il livello di guardia.
| | Se dopo aver avviato <code>make</code> ci sono errori di compilazione, ci si pu� limitare a compilare il solo modulo di emulazione x86, aggiungendo l'opzione <code>--target-list=i386-softmmu</code> al comando <code>./configure</code>. |
| | $ make clean |
| | $ ./configure --cc=gcc-3.4 --target-list=i386-softmmu |
| | $ make |
|
| |
|
| {{Warningbox| Se il precendente comando non riporta '''PASSED''' smontate immediatamente tutte le partizioni presenti su quell'HD ed effettuate un backup dei dati: la rottura definitiva ed irreversibile del disco � prevista nelle successive 24 ore!}}
| | Se non ci sono errori, ora potete diventare root ed installare qemu. |
| | $ su |
| | Password: |
| | # make install |
|
| |
|
| Per avere tutte le informazioni possibili sul nostro HD diamo:
| | A questo punto qemu � installato in <code>/usr/local/bin/qemu</code>, ed il modulo kqemu si trova in <code>/lib/modules/''versione_del_kernel''/misc/kqemu.ko</code>. |
| <pre> | |
| # smartmontools -a /dev/hda
| |
| </pre> | |
|
| |
|
| L'output, abbastanza lungo (-a sta per "all"), � diviso in quattro sezioni. Il primo blocco rappresenta le informazioni generiche sull'HD (le stesse ottenute prima con <tt>-i</tt>), la seconda sezione riporta le informazioni sul supporto SMART. La terza sezione elenca i parametri interni monitorati da SMART e se hanno mai superato il livello di guardia, nel mio caso:
| | ====4. Caricamento modulo==== |
| | Prima di eseguire qemu va caricato il modulo del kernel <code>kqemu</code>, va eventualmente creato <code>/dev/kqemu</code> (usato per interagire col kernel) e gli vanno dati permessi adeguati. |
|
| |
|
| <pre>
| | Esempio di procedura manuale (per chi '''non ha''' installato il pacchetto udev):''' |
| SMART Attributes Data Structure revision number: 16
| | # Queste due operazioni sono da fare come root una volta sola: |
| Vendor Specific SMART Attributes with Thresholds:
| | # mknod /dev/kqemu c 250 0 |
| ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
| | # chmod 666 /dev/kqemu |
| 1 Raw_Read_Error_Rate 0x000b 200 200 051 Pre-fail Always - 0
| | # |
| 3 Spin_Up_Time 0x0007 099 091 021 Pre-fail Always - 4108
| | # Questa operazione va eseguita come root ad ogni avvio del sistema |
| 4 Start_Stop_Count 0x0032 098 098 040 Old_age Always - 2590
| | # modprobe kqemu |
| 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
| |
| 7 Seek_Error_Rate 0x000b 200 200 051 Pre-fail Always - 0
| |
| 9 Power_On_Hours 0x0032 092 092 000 Old_age Always - 6494
| |
| 10 Spin_Retry_Count 0x0013 100 100 051 Pre-fail Always - 0 | |
| 11 Calibration_Retry_Count 0x0013 100 100 051 Pre-fail Always - 0
| |
| 12 Power_Cycle_Count 0x0032 098 098 000 Old_age Always - 2435
| |
| 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
| |
| 197 Current_Pending_Sector 0x0012 200 200 000 Old_age Always - 0
| |
| 198 Offline_Uncorrectable 0x0012 200 200 000 Old_age Always - 0
| |
| 199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 19
| |
| 200 Multi_Zone_Error_Rate 0x0009 200 200 051 Pre-fail Offline - 0
| |
| </pre>
| |
|
| |
|
| I parametri indicati come ''Pre-fail'' sono quelli che superano la soglia di guardia nelle 24 ore che precedono la rottura dell'HD, mentre quelli ''Old_age'' sono i parametri che superano la soglia di guardia quando ormai l'HD � vecchio e non � considerato pi� affidabile dal costruttore. Nel mio esempio si vede che nessun parametro ha mai superato la soglia di guardia.
| | Esempio di procedura manuale (per chi '''ha''' installato il pacchetto udev): |
| | # Queste due operazioni vanno eseguite come root ad ogni avvio del sistema |
| | # modprobe kqemu major=0 |
| | # chmod 666 /dev/kqemu |
|
| |
|
| L'ultima sezione del comando <tt>smartctl -a /dev/hda</tt> riguarda il log dei test manualmente effettuati sull'HD:
| | Per far eseguire '''automaticamente''' queste operazioni ad ogni avvio del sistema (consigliato): |
| | * diventate root (<code>su -</code>) |
| | * modificate il file <code>/etc/modules</code> aggiungendo la riga <code>kqemu</code>, in modo che il modulo venga automaticamente caricato al boot. |
| | * create il file <code>/etc/modprobe.d/kqemu</code> contenente le seguenti righe: |
| | ** per chi '''non ha''' installato il pacchetto udev: |
| | install kqemu /sbin/modprobe --ignore-install kqemu \ |
| | && (test -c /dev/kqemu || mknod /dev/keqmu c 250 0) \ |
| | && chmod 666 /dev/kqemu |
| | :* per chi '''ha''' installato il pacchetto udev: |
| | options kqemu major=0 |
| | install kqemu /sbin/modprobe --ignore-install kqemu && chmod 666 /dev/kqemu |
|
| |
|
| <pre>
| | Una volta caricato il modulo e dati i permessi di lettura a /dev/kqemu siamo pronti per eseguire il nuovo qemu. |
| SMART Error Log Version: 1
| |
| No Errors Logged
| |
|
| |
|
| SMART Self-test log structure revision number 1
| | Accertatevi che il qemu che andrete ad eseguire '''sia quello compilato in <code>/usr/local/bin/qemu</code>''': potete farlo eseguendo <code>type qemu</code>. |
| Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
| |
| # 1 Short offline Completed without error 00% 952 -
| |
| # 2 Conveyance offline Completed without error 00% 951 -
| |
| # 3 Short offline Completed without error 00% 951 -
| |
| # 4 Short offline Completed without error 00% 875 -
| |
| </pre> | |
|
| |
|
| Nell'esempio si pu� vedere che sono stati effettuati 4 test, di cui tre di tipo ''short'' e uno di tipo ''conveyance''. Nessuno di loro ha dato esito positivo (cio� non sono stati rilevati malfunzionamenti).
| | == Utilizzo QEMU == |
|
| |
|
| === Effettuare manualmente i test === | | ===Creazione immagine=== |
| | (facoltativo) Creazione di un file immagine per il disco (facoltativo) |
| | $ qemu-img create hd.img 5G |
|
| |
|
| E' possibile effettuare dei test pi� o meno approfonditi sul disco. Alcuni test si possono effettuare con l'HD montato e funzionate, ed il test stesso avr� un impatto minimo o nullo sulle prestazioni del sistema.
| | ===Esecuzione QEMU=== |
| | ''(cambiare il boot per fare l'installazione da cd etc..)'' |
|
| |
|
| Per effettuare un test: | | Per semplicita` qui avviamo qemu da root (gli utenti comuni in Debian solitamente non possono leggere direttamente /dev/cdrom), tuttavia qemu puo` tranquillamente essere eseguito come utente comune (consigliato). |
| | # qemu -boot c -cdrom /dev/cdrom -hda /home/rob/hd.img \ |
| | -user-net -pci -m 256 -k it -localtime |
|
| |
|
| # smartctl -t tipo_test /dev/hda
| | Le principali opzioni di qemu sono: |
|
| |
|
| dove ''<tt>tipo_test</tt>'' pu� essere:
| | * '''-m ''megabyte'' ''' --> memoria per l'emulatore = 256MB |
| | * '''-k it''' --> tastiera italiana |
| | * '''-localtime''' --> usa ora locale (default UTC) |
| | * '''-pci''' --> emula scheda di rete rtl8029 PCI |
| | * '''-boot c''' --> avvia dal dico rigido emulato (usare '''-boot d''' per il boot dal cdrom emulato) |
| | * '''-user-net''' --> Il sistema GUEST deve essere configurato in DHCP. Qemu assegna un indirizzo dinamico "10.0.2.15" al SO guest, il quale sar� in grado di pingare solo il suo GW che � "10.0.2.2". Per testare la rete quindi avviare le applicazioni di rete, visto che il ping ''host'' non funziona. |
|
| |
|
| ;<tt>short</tt>: effettua un test sul disco di durata inferiore a 10 minuti, pu� essere eseguito durante il normale funzionamento e non impatta le prestazioni. Questo test controlla le performace meccaniche ed elettriche del disco, oltre che le performance in lettura.
| | === QEMU Networking === |
|
| |
|
| ;<tt>long</tt>: effettua un test di durata da 40 minuti ad un ora (a seconda del disco). Pu� essere effettuato durante il normale funzionamento del disco e non ha impatto sulle prestazioni. Questo test � una versione pi� estesa dello ''short test''.
| | '''Sezione da revisionare per i cambiamenti nella versione 0.8.0''' |
|
| |
|
| ;<tt>conveyance</tt>: effettua un test di alcuni minuti atto a scoprire difetti dovuti ad incurie nel trasporto dell'HD. Pu� essere eseguito durante il normale funzionamento dell'HD.
| | Con la soluzione indicata qui sopra, il sistema Guest riesce a navigare in Internet, ma non riesce ad accedere alle risorse del proprio host. La maniera pi� facile per configurare qemu in modo che possa fare entrambe le cose, � quella di installare vde e usare tun/tap con un bridge. |
|
| |
|
| Esistono anche altri tipi di test per i quali si rimanda alla simpatica pagina di manuale: '''<tt>man smartctl</tt>'''.
| | Prima di iniziare, dovete verificare che il vostro kernel supporti i seguenti moduli: |
| | tun: "Network device support" -> "Universal TUN/TAP device driver support" |
| | IP masquerade: "Networking options" -> "IP: Netfilter Configuration" |
| | bridging: "Networking options" -> "802.1d Ethernet Bridging" |
|
| |
|
| I risultati di questi test vengono riportati nella parte finale dell'output di <code>smartctl -a /dev/hda</code>, come notato in precedenza.
| | e dovete installare il pacchetto bridge-utils: |
| | apt-get install bridge-utils |
|
| |
|
| === Controllo automatizzato ===
| | [http://vde.sourceforge.net Vde] sta per Virtual Distributed Ethernet ed � un programma open source che vi permette di creare un network virtuale. Noi lo utilizzeremo per far fare in modo che il sistema Guest veda se stesso come un'unit� distinta dal sistema host e possa colloquiare con questi. |
|
| |
|
| E' possibile attivare il demone '''<tt>smartd</tt>''' fornito dal pacchetto <tt>smartmontools</tt> per monitorare in continuazione lo stato di salute dell'HD e notificare ogni anomalia immediatamente tramite syslog.
| | Per quel che ne so io, non esiste (ancora) un pacchetto deb gi� pronto per l'uso, ma per installare vde sono sufficenti poche righe: |
| | wget http://puzzle.dl.sourceforge.net/sourceforge/vde/vde-1.5.9.tar.gz |
| | tar -xvzf vde-1.5.9.tar.gz |
| | cd vde-1.5.9 |
| | ./configure |
| | make |
| | make install |
|
| |
|
| Normalmente il demone � disabilitato. Per abilitarlo bisogna editare il file <tt>/etc/default/smartmontools</tt> e decommentare la riga:
| | Una volta fatto questo, siete pronti per configurare tun e il bridge: |
| | vde_switch -tap tun0 -daemon |
| | chmod 777 /tmp/vde.ctl |
| | |
| | ifconfig eth0 down |
| | brctl addbr br0 |
| | ifconfig eth0 0.0.0.0 promisc up |
| | ifconfig tun0 0.0.0.0 promisc up |
| | # l'IP qui sotto � quello del computer host; modificatelo per adeguarlo alle vs esigenze |
| | ifconfig br0 192.168.0.200 netmask 255.255.255.0 broadcast 192.168.0.255 up |
| | |
| | brctl stp br0 off |
| | brctl setfd br0 1 |
| | brctl sethello br0 1 |
| | brctl addif br0 eth0 |
| | brctl addif br0 tun0 |
| | # questo invece � l'indirizzo IP del gateway |
| | route add default gw 192.168.0.1 |
|
| |
|
| start_smartd=yes | | NB: Una volta verificato che tutto funziona, queste istruzioni vanno inserite in uno script in modo da essere eseguite automaticamente all'accensione del computer qui ne trovate uno piuttosto grezzo: [http://www.itaca.coopsoc.it/download/sources/vde_qemu vde_qemu], che va salvato in /etc/init.d. Dopodich�: |
| | chmod u+x /etc/init.d/vde_qemu |
| | update-rc.d -n vde_qemu defaults 90 |
|
| |
|
| Dobbiamo inoltre configurare smartd per deciderne il suo comportamento. A tal scopo editiamo il file <tt>/etc/smartd.conf</tt>. Leggendo i commenti nel file e l'amichevole pagina di manuale (<tt>man smartd.conf</tt>) � possibile scegliere quali parametri <tt>smartd</tt> debba monitorare, programmare dei test automatici, e decidere quali azioni intraprendere in caso di errore.
| | Ora tutto � pronto per lanciare qemu, con l'ultima avvertenza che dovete usare l'apposito wrapper vdeqemu: |
| | vdeqemu -hda disk.img -localtime |
|
| |
|
| Nel mio caso ho inserito solo la seguente linea:
| | Potete utilizzare tutte le opzioni di qemu, fuorch� -user-net, che disattiverebbe tun. |
|
| |
|
| /dev/hda -a -o on -S on
| | Ora il sistema guest dovrebbe accedere a tutte le porte del sistema host, in maniera totalmente trasparente: da risorse di rete dovreste vedere il vostro server samba con le sue partizioni; dal browser dovreste accedere alle pagine del vostro server web, etc. etc. |
|
| |
|
| che attiva il monitoraggio di tutti (<tt>-a</tt>) i parametri, abilitia l' ''automatic online data collection'' (<tt>-o on</tt>), e abilita il salvataggio degli attributi (<tt>-S on</tt>) in modo che le informazioni di log di SMART vengano memorizzare nella FLASH del disco e siano disponibili anche dopo il riavvio.
| | === Patch per Windows === |
|
| |
|
| == Verifica di settori corrotti ==
| | Per quanto riguarda l'utilizzo della CPU, a quanto pare Windows 9x non fa un uso corretto della istruzione CPU HLT e quindi spara la cpu a 100% quando � in idle (non fa nulla) e invece la usa regolarmente quando � sotto "sforzo", paradossalmente infatti, se viene utilizzata la cpu di qemu l'utilizzo di cpu si abbassa su linux in proporzione. |
|
| |
|
| L'utility <tt>'''badblocks'''</tt> permette di fare un controllo di basso livello per vedere se su una partizione sono presenti dei settori danneggiati.
| | La patch puo' essere scaricata [http://klingon.homelinux.net/files/amnhltm.zip qui], va installata sul Win9x GUEST. |
|
| |
|
| I moderni HD IDE fanno un controllo automatico degli errori e sono in grado di segnare dei settori corrotti che di conseguenza non verranno pi� usati. Questo rende in parte inutile <tt>badblocks</tt>, ma se si effettua un controllo e dei settori risultano danneggiati vuol dire che probabilmente la superficie del disco contiene cos� tanti settori danneggiati che la circuiteria di controllo non � pi� in gradio di gestirli.
| | ==Collegamenti esterni== |
| | *[http://ubuntuforums.org/showthread.php?t=39513 http://ubuntuforums.org/showthread.php?t=39513] |
| | *[http://fabrice.bellard.free.fr/qemu/index.html http://fabrice.bellard.free.fr/qemu/index.html] |
| | *[http://fabrice.bellard.free.fr/qemu/qemu-doc.html http://fabrice.bellard.free.fr/qemu/qemu-doc.html] |
| | *[http://www.debian-administration.org/?article=40 http://www.debian-administration.org/?article=40] |
| | *[http://oui.com.br/n/content.php?article.21 http://oui.com.br/n/content.php?article.21] |
| | *[http://www.carlsonhome.net/computer_help_log.php http://www.carlsonhome.net/computer_help_log.php] |
| | *[http://savannah.nongnu.org/projects/qvm86/ http://savannah.nongnu.org/projects/qvm86/] |
|
| |
|
| Per effettuare un controllo con <tt>badblocks</tt> smontiamo la partizione ed eseguiamo:
| | ==Conributi== |
| | [[Utente:Themonkey|Themonkey]] 20:31, Ago 19, 2005 (EDT) The_monk_ey ( skype: the_monk_ey ) |
|
| |
|
| # badblocks -b dimensione_blocco /dev/hdaX
| | [[Utente:ianezz|ianezz]] 17:40, Nov 25, 2005 (CET) ''(per la parte di compilazione ed installazione)'' |
|
| |
|
| dove <tt>/dev/hdaX</tt> � la partizione da controllare. Il parametro <tt>dimensione_blocco</tt> � la dimensione del blocco usata dal filesytem espresso in byte. Di solito � 4096 (ovvero 4KB), per controllare potete usare:
| | [[Utente:Paulox|Paulox]] 11:13, Dic 21, 2005 (EST) ''(aggiornamento alla versione 0.8.0 e riformattazione della pagina)'' |
| | |
| # disktype /dev/hda
| |
| | |
| Per le ulteriori opzioni di <tt>badblocks</tt> si rimanda all'amichevole pagina di manuale, ma '''attenzione: l'opzione <tt>-w</tt> distrugger� tutti i dati sulla vostra partizione'''. Non usatela se non volete che ci� accada.
| |
| | |
| Se trovate dei settori danneggiati conviene cambiare immediatamente HD. Sebbene ci sia una piccola probabilit� che l'errore sia isolato (dovuto ad esempio ad uno sbalzo di tensione) � molto pi� probabile che l'HD si stia progressivamente danneggiando e presto ci saranno dei nuovi settori danneggiati. Comunque se volete giocare alla roulette russa con i vostri dati siete liberi di farlo :-P.
| |
| | |
| == Backup di emergenza ==
| |
| | |
| Per effettuare un backup di emergenza di una partizione corrotta il tool pi� efficace � '''[http://www.gnu.org/software/ddrescue/ddrescue.html GNU ddrescue]''' (da non confondere con il simile ma meno potente <tt>[http://www.garloff.de/kurt/linux/ddrescue/ dd_rescue]</tt>). Per installare GNU ddrescue in debian basta installare il pacchetto <tt>gddrescue</tt>.
| |
| | |
| GNU ddrescue pu� effettuare backup di singoli file o di intere partizioni, riconoscendo ed aggirando i settori danneggiati. Pu� essere interrotto in qualsiasi momento, riprendere la copia da punto in cui � stato interrrotto e pu� fare il ''merge'' dei file se si hanno pi� copie degli stessi file corrotti.
| |
| | |
| Il suo uso � vagamente simile al classico '''<tt>dd</tt>''':
| |
| | |
| # ddrescue ddrescue [OPTIONS] INFILE OUTFILE [LOGFILE]
| |
| | |
| Per una lista completa delle opzioni si rimanda al manuale: <tt>info ddrescue</tt>.
| |
| | |
| Riporto un semplice esempio di utilizzo:
| |
| | |
| # ddrescue -r3 /dev/hda3 /dev/hdb2 logfile
| |
| | |
| il precedente comando copier� la partizione hda3 in hdb2 (distruggengo gli eventuali dati ivi presenti) provando a leggere tre volte i settori danneggiati e usando <tt>logfile</tt> come file di log.
| |
| | |
| Ora possiamo eseguire sulla copia i normali tool di ripristino del nostro filesystem (<tt>fsck.*</tt>).
| |
| | |
| == Strumenti per il ripristino dei dati ==
| |
| ''In questa sezione verr� accennato il problema del ripristino dati. Lo scopo � solo quello di dare una panoramica iniziale del problema che possa servire come orientamento per ulteriori approfondimenti''.
| |
| | |
| Prima di ogni operazione di ripristino dati � fortemente consigliato effettuare una copia della partizione (vedi sezione precedednte) e operare sulla copia.
| |
| | |
| La metodologia per il ripristino dei dati pu� variare a seconda del filesytem utilizzato e del modo in cui si sono perduti i dati. Ad esempio se si vogliono recuperare dei file cancellati accidentalmente da una partizione ext2 ci sono delle buone possibilit� di usare il tool <tt>[http://recover.sourceforge.net/linux/recover/ recover]</tt> (presente nell'omonimo pacchetto debian). Il tool <tt>recover</tt> non pu� essere usato su partizione ext3. Purtroppo, oltre a <tt>recover</tt> per ext2, non conosco nessun altro tool free e automatico per il recupero dei file accidentamente cancellati.
| |
| | |
| In mancaza di strumenti automatici si usa la cos� detta ''Unix Way''. Ovvero si usano i tradizionali strumenti unix per accedere direttamente al device ed estrarre i dati utili. Ad esempio se si devono recuperare file di testo o documenti non binari (per intenderci non foto o musica o programmi compilati) si possono usare <tt>egrep</tt> e <tt>strings</tt>.
| |
| | |
| Se si vogliono recuperare foto jpeg � possibile usare <tt>'''recoverjpeg'''</tt> che cerca di identificare gli header jepeg in una immagine di file system.
| |
| | |
| E' fortemente cosigliata la lettura dei documenti elencati di seguito nella sezione ''Links->Articoli'' per degli esempi pratici sul recupero dati su filesystem ext2 e reiserfs (ma le informazioni possono servire di spunto per operare anche su altri file system).
| |
| | |
| == Links ==
| |
| === Articoli ===
| |
| * [http://www.linuxquestions.org/linux/answers/Hardware/ReiserFS_Data_Recovery_Tips ReiserFS Data Recovery Tips]
| |
| | |
| * [http://ildp.pluto.it/HOWTO/Ext2fs-Undeletion.html Linux Ext2fs Undeletion mini-HOWTO]
| |
| * [http://www.linuxjournal.com/article/8366 How a Corrupted USB Drive Was Saved by GNU/Linux]
| |
| | |
| === Strumenti Utili ===
| |
| * [http://smartmontools.sourceforge.net/ smartmontools Home Page]
| |
| * [http://www.gnu.org/software/ddrescue/ddrescue.html GNU ddrescue]
| |
| * [http://www.partimage.org/index.en.html Partimage]
| |
| * [http://www.cgsecurity.org/index.html?testdisk.html TestDisk]
| |
| | |
| | |
| ----
| |
| | |
| Autore Iniziale: [[Utente:TheNoise|~ The Noise]] 05:31, Feb 4, 2006 (EST)
| |