Kopiowanie wolumenów LVM z dd i netcat

Niedawno chciałem skopiować maszynę wirtualną z jednego hypervisora na innego. Były to 3 wolumeny LVM o rozmiarach od 50 do 100GB. Dawno temu zrobiłem sobie skrypty do backupu – jeden kompresuje wolumeny LVM – a drugi pozwala odtworzyć z dekompresja na drugim serwerze. Tyle że przy tak dużej maszynce będzie to trwało masakrycznie długo – fajnie byłoby móc równocześnie kopiować i odtwarzać (live)…

I wtedy przypomniało mi się narzędzie netcat – zrobiłem snapshoty wolumenów i mogłem zaczynać. W najbardziej podstawowej wersji potrzebowałem tylko tyle:

  • na źródle:
    dd if=/dev/vgsas/vm1-sys | pv --size 50G | nc -l -p 8888
  • na docelowym:
    nc 192.168.1.10 8888 | dd of=/dev/vgsas/vm1-sys

Lub wariacje z kompresją:

  • na źródle:
    dd if=/dev/vgsas/vm1-sys | pv --size 50G | pigz -2 | nc -l -p 8888
  • na docelowym:
    nc 192.168.1.10 8888 | pigz -d | dd of=/dev/vgsas/vm1-sys

No dobra – pv nie jest najbardziej podstawowe… Ale umożliwia podgląd postępu wysyłania/obierania (zależy, z której strony go wrzucić) co przy tak długim procesie jest niezmiernie przydatne.
Do kompresji zalecałbym pigz (czyli Parallel GZIP) z ratio dostosowanym do przepustowości sieci – po gigabicie się nie opłacało nawet na ośmiordzeniowcu.

Leave a Reply

Your email address will not be published. Required fields are marked *