Имаме bare-metal сървър A и искаме да копираме виртуална машина от него на bare-metal сървър B. Ако виртуалната ни машина е голяма примерно 80GB и връзката между двете машини е на 1GB то трансфера ще отнеме около 20 минути.
Ако виртуалната ни машина реално е голяма 1GB, трансфера пак ще отнеме толкова, защото ние ще прехвърлим всичките 80GB – 79GB от които нули.
В този пост ще споделя начин с tar как да избегнем това досадно прехвърляне на излишни данни на sparse файлове.
Създаване на sparse файл
За теста създадох виртуална машина с големина на хард диска 80GB :
Днес ще споделя за проблем който се случи на уеб сървъра на 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 инстанции и сме много доволни за сега от него.