Come eseguire il backup e il ripristino del server utilizzando immagini disco dd
dd crea un'immagine settore per settore dell'intero disco. È possibile utilizzare questa immagine per ripristinare il disco allo stato in cui si trovava al momento del backup. Questa guida mostra come creare un'immagine del disco con dd e come ripristinarla. Poiché dd opera a livello di disco, eseguilo da un ambiente live (Finnix), non dal sistema in esecuzione che stai copiando.
Usa dd quando hai bisogno di una copia a livello di blocco dell'intero disco. Per i backup a livello di file (singoli file e cartelle), rsync o tar sono generalmente più adatti.
Prima di iniziare
- ISO di Finnix
- accesso all'IP-KVM del server (KVM basato su IP)
- spazio di archiviazione con spazio libero sufficiente per l'immagine (vedi la nota negli scenari di backup)
- credenziali SSH, se esegui il backup su spazio di archiviazione remoto
- accesso root
1. Breve nota su dd
dd copia i dati blocco per blocco. Le parti del comando che contano:
- if= origine (da dove si legge)
- of= destinazione (dove si scrive)
- bs=8M imposta la dimensione del blocco e può migliorare le prestazioni di copia
- status=progress mostra quanto è stato copiato, utile su dischi di grandi dimensioni
Per impostazione predefinita, i comandi seguenti copiano un disco integro. Se il disco di origine presenta errori di lettura, aggiungi conv=noerror,sync: dd continuerà oltre gli errori di lettura anziché fermarsi, riempiendo i blocchi illeggibili con zeri. Questo mantiene allineati i blocchi successivi, ma le aree riempite perdono i loro dati, quindi il file system nell'immagine potrebbe risultare danneggiato. Per un disco difettoso, valuta l'uso di ddrescue, progettato per recuperare dati da dischi difettosi e che mantiene una mappa degli errori di lettura.
dd sovrascrive completamente la destinazione senza chiedere conferma. Un of= errato distrugge i dati. Controlla sempre i nomi dei dispositivi prima di eseguire qualsiasi comando.
2. Preparazione
Avvia da Finnix. Monta l'ISO di Finnix tramite IP-KVM e avvia il server da essa. Questo ti consente di lavorare con i dischi del server senza eseguire il sistema operativo installato dal disco di cui stai eseguendo il backup. Evita di creare l'immagine di un sistema in esecuzione: se il disco di origine ha file system montati che vengono modificati, l'immagine potrebbe risultare incoerente. Assicurati che il disco di origine non sia in uso da parte dell'ambiente in esecuzione.
Identifica i dischi. Elenca i dischi con le relative dimensioni e i punti di montaggio:
lsblk -o NAME,SIZE,TYPE,MOUNTPOINTS
In alternativa:
fdisk -l
Trova il disco di sistema (ad esempio /dev/sda) e annota il nome del dispositivo. Questo è il passaggio più importante: dd non chiede conferma, quindi un errore qui cancella il disco sbagliato. Nei comandi seguenti, /dev/sda è solo un esempio. Sostituiscilo con il disco effettivo identificato con lsblk. Assicurati che il disco di origine non mostri punti di montaggio nell'output di lsblk prima di crearne l'immagine.

3. Scenario A: backup su storage cloud tramite SSHFS (CloudBox)
Usa questo scenario per salvare l'immagine su INTROSERV CloudBox o su qualsiasi storage SSH. Prendi le credenziali SSH (utente, host, percorso) dai dettagli del tuo ordine.
Crea un punto di montaggio:
mkdir -p /mnt/backup
Monta lo storage cloud:
sshfs user@host:/path /mnt/backup
Crea l'immagine del disco:
dd if=/dev/sda of=/mnt/backup/sda.img bs=8M status=progress
Al termine, dd indica quanti dati sono stati copiati. L'immagine sda.img è ora sul tuo storage cloud.
Una copia di grandi dimensioni tramite SSHFS può essere lenta. Se la connessione SSH si interrompe, la copia potrebbe non riuscire e l'immagine potrebbe risultare incompleta.
La dimensione dell'immagine corrisponde approssimativamente alla dimensione dell'intero disco di origine, non alla quantità di dati utilizzati. Un disco da 2 TB con 100 GB di dati produce comunque un'immagine di circa 2 TB. Assicurati che lo storage disponga di spazio libero sufficiente.
Facoltativo: per risparmiare spazio e ridurre il trasferimento sulla rete, comprimi l'immagine durante la creazione:
dd if=/dev/sda bs=8M status=progress | gzip -c > /mnt/backup/sda.img.gz
Ripristina un'immagine compressa con:
gunzip -c /mnt/backup/sda.img.gz | dd of=/dev/sda bs=8M status=progress
La dimensione compressa dipende da quanto sono comprimibili i contenuti del disco. Il controllo del checksum riportato di seguito si applica a un file .img non compresso.
4. Scenario B: backup su un altro disco fisico nello stesso server
Usa questo scenario se il server dispone di un secondo disco (ad esempio /dev/sdb) abbastanza grande da contenere l'immagine. Il disco di destinazione deve avere spazio libero sufficiente per un'immagine dell'intero disco di origine e non deve essere il disco di origine.
Crea un punto di montaggio e monta il secondo disco:
mkdir -p /mnt/backup mount /dev/sdb1 /mnt/backup
Crea l'immagine del disco:
dd if=/dev/sda of=/mnt/backup/sda.img bs=8M status=progress
5. Verifica dell'immagine (facoltativo)
Per verificare l'immagine, calcola il checksum SHA-256 del disco di origine e dell'immagine e confrontali. Il disco di origine non deve cambiare tra la creazione dell'immagine e il calcolo del checksum. Questa operazione rilegge l'intero disco, quindi richiede tempo su dischi di grandi dimensioni:
sha256sum /dev/sda sha256sum /mnt/backup/sda.img
I due valori dovrebbero corrispondere.
6. Ripristino
Il ripristino è il backup in senso inverso: l'immagine diventa l'origine (if=) e il disco diventa la destinazione (of=). Avvia nuovamente da Finnix e monta lo storage che contiene l'immagine, allo stesso modo del backup.
Prima di ripristinare, assicurati che il disco di destinazione non sia più piccolo di quello originale. Un'immagine dell'intero disco non può essere ripristinata su un disco più piccolo, anche se sul disco di origine erano stati utilizzati pochi dati.
Dallo storage cloud:
dd if=/mnt/backup/sda.img of=/dev/sda bs=8M status=progress
Da un secondo disco: montalo prima, quindi esegui lo stesso comando. Anche qui /dev/sda è solo un esempio. Sostituiscilo con il disco di destinazione effettivo.
Il ripristino sovrascrive l'intero disco di destinazione. Assicurati che of= punti al disco su cui desideri eseguire il ripristino. Al termine di dd, riavvia il server ed esegui l'avvio dal disco ripristinato.
Se il disco di destinazione è più grande di quello originale, lo spazio aggiuntivo rimane inutilizzato. Se necessario, puoi successivamente estendere la partizione e il file system; i comandi esatti dipendono dal layout delle partizioni e dal file system. Se ripristini su hardware diverso, potrebbe essere necessaria una configurazione di avvio aggiuntiva. Se il disco di origine utilizza LVM, LUKS, RAID o un altro livello di storage, dopo il ripristino potrebbe essere necessaria una configurazione aggiuntiva, in particolare su hardware diverso.