We have bare-metal server A and we want to copy the virtual machine from A to bare-metal server B. If the virtual machine is 80GB and the connectivity between the two servers is 1GB the transfer will be ready for 20 minutes.
If our virtual machine is 1GB big, the transfer will still take so much because we will transfer all 80GB – 79GB of which zeros.
In this post I will share a way with tar how to avoid this annoying transfer of redundant data to sparse files.
Create a sparse file
For the test, I created a virtual machine with a size of 80GB hard drive :
Днес ще споделя за проблем който се случи на уеб сървъра на www.root.bg.
Бекъпа е фейлнал
Тази сутрин мейла за ежеседмичният бекъп на виртуалните машини включваше :
vzdump backup status : backup failed.
Оказа се, че бекъпа на web.root.bg е фейлнал:
104 web.root.bg FAILED 00:59:54 VM 104 not running
и сървъра е спрял.
Сутринта пуснах сървъра и тръгнах да търся причината за проблема от логовете.
Проблема се задълбочи
Реших да направя snapshot на работещата машина, но малко след като го пуснах се сетих, че нямам излишно място на proxmox сървъра за този snapshot, и за това го спрях.
Тук обаче нещо се обърка.
web-root:~# dmesg
-bash: dmesg: command not found
web-root:~# reboot
-bash: reboot: command not found
web-root:~# logout
-bash: /root/.bash_logout: Input/output error
-bash: /etc/bash.bash_logout: Input/output error
В терминала на машината излизаше, че reiserfs-a е крашнал и сървъра не реагираше на нищо.
Реших да го ресетна, но резултата не беше този който очаквах :
~# qm start 104
kvm: -drive file=/var/lib/vz/images/104/vm-104-disk-1.qcow2,if=none,id=drive-virtio0,format=qcow2,cache=none,aio=native,detect-zeroes=on: qcow2: Image is corrupt; cannot be opened read/write
Възтановяване на системата
Опитах да поправя счупеният qcow2 диск като следвах стъпките от този сайт. За съжеление и това не помогна :
anna:/var/lib/vz/images/104# mv vm-104-disk-1.qcow2 bad_104.qcow2
anna:/var/lib/vz/images/104# qemu-nbd --connect=/dev/nbd0 bad_104.qcow2
Failed to blk_new_open 'bad_104.qcow2': qcow2: Image is corrupt; cannot be opened read/write
Бях в ситуация в която нямаше как да възтановя boot диск-а на web.root.bg.
Вариянтите бяха два:
Инсталиране на нов линукс + всички пакети необходими за работа за сайта, piwik статистиката и wp админ панела.
Възтановяване на системата от бекъп сървъра ми (FreeNAS)
Реших да пробвам първо със стъпка 2, като си забазих втория qcow2 файл (където реално ми е /var на web.root.bg), за да нямам загуба на данни на базата и файловете на сайта.
Happy end
След 40 минути възтановяване на двата qcow2 файла, всичко мина успешно.
Върнах предварително запазеният ми vm-104-disk-2.qcow2 файл и пуснах машината – УРА – всичко тръгна по старо му!
Извода – винаги, ама винаги трябва да имаме бекъп!!
Бъдещ ъпгрейд към docker?
Това което смятам да направя следващата седмица, е да разделя web и database частта на сървъра в docker инстанции.
За целта ще направя нов виртуален сървър и ще започна тестовете там. В работата успешно внедрихме docker на няколко production инстанции и сме много доволни за сега от него.