Il modo più veloce per convertire un disco formattato ext4 in LVM con ext4 su di esso?


12

Attualmente sto cp -aRcopiando i dati dal mio disco formattato ext4 da 1 TB (pieno al 99%) su un nuovo disco LVM-with-ext4-on-it. Ci vuole un'eternità.

Esiste un modo per tentare di "convertire" il disco in atto? Sono su EC2, quindi il backup richiede pochi minuti.

O in alternativa, c'è un modo che potrebbe essere più veloce della cpcopia diretta del filesystem ext4 sul disco LVM?

Risposte:


22

Ho scritto blocchi (née lvmify) che esegue questa conversione sul posto. Funziona restringendo un po 'il filesystem, spostando l'inizio del filesystem alla fine della partizione e copiando un superblocco LVM (preconfigurato con il giusto PV / LV / VG) al suo posto.


sembra davvero interessante! Sto pensando di fare il backup dei miei 500 GB sull'altra partizione (che è già lvm) solo per provarlo!
Aquarius Power

1
@Gabriel, funzionerà su live fs? Voglio dire, devo smontare il FS, e poi lo fa sul posto, o funzionerà anche su un root FS montato su ar / w?
Gavriel,

1
@AmrMostafa: "Pretty" solido? Ho questa cosa sui miei sistemi di file, ho bisogno che siano roccia solida ... :-)
TJ Crowder

3
Gli utenti di Ubuntu Trusty + troveranno difficile installare il python 3.3 richiesto. Solo 3.4 è disponibile e i blocchi non sono stati aggiornati da dicembre 2014: /
bksunday

1
Nonostante sia stato aggiornato 5 orecchie fa, funziona in acciaio. Confermato su SSD NVMe, schema di partizione GPT. Nota: utilizzare meglio Python 3.6.
Tosh

2

Non sono sicuro su come convertire il disco dal vivo, ma penso che rsync sarà un modo migliore e più sicuro per copiare i tuoi dati. Ti consentirà di riprendere e mantenere intatti i dati in caso di interruzione del trasferimento.

Ho trovato un processo simile completato da qualcuno che aggiunge un'unità esterna al loro sistema locale come LVM. Non ci sono molte informazioni, ma penso che sarà sufficiente per iniziare:

"Così oggi ho scoperto il fantastico LVM. Installando Debian, ho selezionato" LVM - Usa tutto il disco ". Ma l'unità principale era un'unità portatile piccola e lenta da 5200 giri / min. Oggi ho inserito la mia unità di riserva da 1,5 TB e avviata. invece il sistema su questa unità più grande e più veloce.

Approccio LVM: aggiungere / dev / sdc al gruppo di volumi, quindi eseguire "pvmove / dev / sda". Questo sposta tutti i dati da SDA ad altre unità (solo SDC disponibile). Non è necessario riavviare, non è necessario smontare. Mentre scrivo, i dati vengono spostati.

Successivamente, eseguire "vgreduce megatron / dev / sda" per rimuovere l'unità lenta dal gruppo di volumi e da voilà. Dati spostati. (megatron è il nome del gruppo di volumi e del mio computer). Questa potrebbe essere una vecchia notizia per molti, ma ho pensato che fosse davvero bello :) "

Concesso questo è stato fatto localmente, ma penso che con ulteriori ricerche, potresti essere in grado di soddisfarlo.

fonte


2

Non esiste alcun metodo per eseguire tale conversione LVM "al volo".

LVM in realtà risiede nel tuo filesystem per espanderlo su più dispositivi fisici, o per eseguirne lo striping o il mirroring, ecc. Il passaggio finale nella creazione di un volume logico consiste nel sovrapporre un file system. Ecco alcuni esempi di RHEL6.

Quello che dovrete fare è eseguire il backup o l'archiviazione dei dati su quel dispositivo, quindi distruggere il filesystem esistente, creare un volume logico e riposizionare un filesystem in cima. Se si tratta di un filesystem di root su un sistema operativo Linux, prendere in considerazione una reinstallazione. Potrebbe essere più veloce.

Per le copie più veloci, sono affezionato dd, ma non lo uso spesso. Fare un errore ddè pericoloso. Una cosa che puoi provare è tar czv <source fs> | (cd <destination fs>; tar x)che trasferirà un file tar compresso al volo.

In bocca al lupo!


1
L'uso della compressione nell'operazione tar non ha alcun senso. L'unico posto in cui i dati verranno compressi è in memoria mentre viene convogliato; viene quindi nuovamente decompresso immediatamente prima di essere scritto sul disco. Solo ora, l'operazione genera più volte il carico della CPU perché è al tempo stesso comprimente e non comprimente, inutilmente. Inoltre, per qualsiasi operazione come questa che coinvolge interi filesystem, vorrete almeno tar cSf - | tar xvpf - gestire file e permessi sparsi. Forse --selinuxanche (se il volume di destinazione sostituirà successivamente l'origine).
FeRD

Questo è un buon punto se i dispositivi di origine e destinazione si trovano sullo stesso host o se non si dispone di cicli CPU di riserva. Questi sono i punti da considerare caso per caso. Mi piacciono gli switch "S" e "p" e l'argomento "--sinux".
dafydd,

Mmm, beh, se qualcuno sta clonando un filesystem eseguendo il pip di un'operazione tar al volo su un collegamento di rete, allora (a) sono un'anima più coraggiosa di me, ma (b) potresti NON volere a -pmeno che gli host non condividano i nomi utente / UID (anche se la manpage mi ricorda che -pè il default per GNU tar quando eseguito come root), ed --selinuxè irto di ancora più pericoli - probabilmente è meglio fare un restorecon -Rv(o -Rp) su tutto il tutto una volta che è montato nel modo corretto (final ) Posizione.
FeRD

dd è lo strumento corretto per questa operazione poiché stai copiando una partizione. dd farà una copia esatta sulla nuova partizione, quindi cambierai fstab per caricarla dalla nuova partizione invece che dalla vecchia. Una volta terminato lo spostamento di tutte le partizioni dalla vecchia unità, è possibile distruggere il file system e aggiungere l'unità al gruppo di dischi fisici LVM, quindi utilizzare lo spazio per espandere le partizioni come desiderato.
Xalorous,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.