Ecco la mia situazione:
- Due server dedicati nello stesso datacenter con Gigabit Ethernet tra di loro.
- Entrambi i server dedicati sono stati avviati in un ambiente di salvataggio basato su Debian Squeeze con l'aggiunta di strumenti e utilità aggiuntivi. Inoltre un sacco di spazio tmp (32 GB di RAM su entrambe le scatole) per scaricare software, installare pacchetti e / o compilare secondo necessità.
- Entrambi i server dedicati hanno circa 3 TB di spazio utilizzabile.
- Il server "sorgente" ha 4 dischi da 1,5 TB in Hardware RAID-10 con un controller Adaptec a 4 porte.
- Il server "destinazione" ha 2 dischi da 3 TB in RAID-1 hardware con un controller di porta Adaptec 2 - stessa generazione dell'altro, ma un numero diverso di porte.
- Il numero di blocchi utilizzabili
/dev/sda
differisce di meno di 10 MB, ma l'array del server di destinazione è per qualche motivo più piccolo di alcuni mega. - Entrambi gli array RAID sono configurati per utilizzare l'intera superficie del disco di tutti i dischi costituenti per creare un unico volume RAID.
- Il sistema operativo si avvia in modalità MBR; non viene utilizzato l'avvio UEFI.
Cosa voglio fare:
- Copia, a livello di blocco, l'intera immagine del sistema operativo (questa è costituita solo dal bootloader GRUB2 nella tabella delle partizioni GPT, / partizione di avvio e / partizione) dal server "sorgente" al server "destinazione".
- Se possibile , la copia dovrebbe avvenire "live": ciò significa che non ho spazio sufficiente per memorizzare un file corretto dell'immagine del disco sul lato di destinazione, a meno che non stia scompattando l'immagine del disco sul disco rigido come copia sta avvenendo . La connessione Ethernet Gigabit tra i server è abbastanza affidabile che mi sento a mio agio con questo, e ovviamente funzionerò
fsck
su entrambe le estremità (sorgente e destinazione) per verificare che il filesystem sia OK prima e dopo il trasferimento. - Se possibile , non trasferire blocchi sulla rete, che non sono utilizzati dai filesystem costituenti in ciascuna partizione (tutte le partizioni sono formattate come ext4). Questo perché oltre il 50% del disco "sorgente" è spazio libero nella
/
partizione. - Regola le dimensioni della
/
partizione in modo che, quando viene copiata, venga ridimensionata per adattarsi alle dimensioni appena più piccole del disco di destinazione. - Una volta che la copia ha esito positivo, montare ciascun volume e correggere i riferimenti agli IP statici per riflettere gli IP del nuovo server. (Può farlo bene anche senza ulteriore aiuto)
Le mie domande:
- Dovrei prima calcolare la differenza (in byte) tra le dimensioni di
/dev/sda
su ciascun server e quindi utilizzaree2resize
per ridurre in modo non distruttivo la dimensione della/
partizione sul lato di origine in modo che si adatti allo spazio del lato di destinazione? - Dovrei eseguire
dd
sul dispositivo a blocchi non elaborati,/dev/sda
dall'origine alla destinazione (soprassh
), o devo creare un layout di partizione equivalente sulla destinazione ed eseguiredd
su ogni partizione ? Si noti che la gestione di una partizione alla volta mi lascia il problema del bootloader, ma se non lo faccio una partizione alla volta, èdd
necessario sapere di interrompere il trasferimento dei dati una volta che ha scritto quanti byte quanti la destinazione può contenere (che si spera che "chiuda" la fine della/
partizione sull'ultimo blocco, che è logicamente "alla destra di" tutte le altre partizioni nel layout della partizione del sorgente).
Qualche misc. specifiche:
- Il sistema operativo host sulla casella dei sorgenti è Ubuntu Server 12.04 con diversi guest OpenVZ
- Poiché entrambe le caselle vengono avviate in soccorso, l'accesso diretto al disco è possibile senza aspettarsi alcuna modifica ai dati sottostanti dal sistema operativo in esecuzione.