虛擬機(jī)并不是沒有說是安全的,沒有任何問題的。當(dāng)虛擬機(jī)出現(xiàn)問題的時(shí)候,里面的數(shù)據(jù)應(yīng)該怎么樣備份呢?小編就介紹幾種備份的的方式吧!
虛擬機(jī)并不是沒有說是安全的,沒有任何問題的。當(dāng)虛擬機(jī)出現(xiàn)問題的時(shí)候,里面的數(shù)據(jù)應(yīng)該怎么樣備份呢?小編就介紹幾種備份的的方式吧!
方法一 停機(jī)備份
在業(yè)務(wù)的維護(hù)時(shí)間,將虛擬機(jī)的鏡像復(fù)制一份,并拷貝到其他宿
主機(jī)上,這種方式操作最簡單,也最有效,缺點(diǎn)是只能業(yè)務(wù)停機(jī)時(shí)間操作,備份的周期比較長。
方法二 通過快照備份虛擬機(jī)
在線虛擬機(jī)的快照實(shí)際有兩個(gè)層面,磁盤快照和內(nèi)存快照,如果是關(guān)機(jī)情況下,就只有磁盤快照了。如果是關(guān)機(jī)情況,虛擬機(jī)的備份就很簡單。下面主要討論在線虛擬機(jī)的備份方法
虛擬機(jī)快照操作命令很簡單
virsh # snapshot-create-as test
Domain snapshot 1419296749 created
但是centos6 centos7中,創(chuàng)建虛擬機(jī)的快照,虛擬機(jī)會(huì)被暫停幾秒中!
virsh # list --all
Id Name State
48 test paused
快照查看
virsh # snapshot-list test
Name Creation Time State
1419296749 2014-12-22 20:05:49 -0500 running
1419296772 2014-12-22 20:06:12 -0500 running
通過qemu-img命令查看
image: test
file format: qcow2
virtual size: 100G (107374182400 bytes)
disk size: 4.0G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 1419296749 1.8G 2014-12-22 20:05:49 01:07:36.123
2 1419296772 1.8G 2014-12-22 20:06:12 01:07:48.249
Format specific information:
compat: 1.1
lazy refcounts: false
將快照遷移出來,并拷貝到其他宿主機(jī)上,就可以完成虛擬機(jī)的備份
qemu-img convert -f qcow2 -O qcow2 -s s1 test.qcow2 test-s1.qcow2
因?yàn)榭煺諏?duì)虛擬機(jī)的性能有影響,備份完成后,刪除快照
virsh # snapshot-delete test 1419296749
Domain snapshot 1419296749 deleted
virsh # snapshot-delete test 1419296772
Domain snapshot 1419296772 deleted
virsh # snapshot-list test
Name Creation Time State
先回答兩個(gè)朋友在后臺(tái)提的問題
問題一
你最新文章的最后一段,我的理解是做快照過程中對(duì)虛擬機(jī)性能有影響,做完之后只是個(gè)文件吧,沒有性能影響吧?
解答
快照對(duì)虛擬機(jī)的性能影響很大的,一般基于系統(tǒng)的快照,都是采用寫時(shí)復(fù)制的技術(shù),一份快照的時(shí)候,要寫一份數(shù)據(jù),需要先把改變的地方復(fù)制出來,然后在寫如,如果是兩份快照,就要寫三次,所以對(duì)性能影響很大的。
問題二
如何選擇
虛擬化的存儲(chǔ)方式?本地?nfs?iscsi?gluster?其他?有沒有相關(guān)的測試數(shù)據(jù)?
解答
這個(gè)和硬件有很大的關(guān)系,比如用ssd,無論用那種方式,肯定要比普通的sas快很多。其次,基于網(wǎng)絡(luò)的文件系統(tǒng),和網(wǎng)絡(luò)帶寬關(guān)系也很大。如果虛擬機(jī)數(shù)量比較少,建議使用本地的存儲(chǔ)方式,如果虛擬機(jī)數(shù)量多,并且要做高可用,就需要使用共享存儲(chǔ)。共享存儲(chǔ)使用商業(yè)存儲(chǔ)還是分布式文件系統(tǒng),這個(gè)第一要看自己對(duì)性能的要求,第二還要看自己的預(yù)算??傊畱?yīng)該先確定自己的需求,然后在決定選擇那種方式。
虛擬機(jī)的災(zāi)備方式(二)
方法三 使用lvm快照備份虛擬機(jī)
如果虛擬機(jī)全部使用的是lvm,可以利用lvm的特性,通過lvm快照備份虛擬機(jī)
通過lvcreate 創(chuàng)建lvm快照
lvcreate -s -n centos7s1 -L 10G /dev/testvg/centos7onlvm
Logical volume "centos7s1" created
通過lvs命令查看快照
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
centos7onlvm testvg owi-aos--- 200.00g
centos7s1 testvg swi-a-s--- 10.00g centos7onlvm 0.06
通過dd命令將lv快照備份到文件中
dd if=/dev/testvg/centos7s1 of=/home/centos7.bak
在將文件復(fù)制到其他宿主機(jī),恢復(fù)的時(shí)候,直接使用raw格式的文件,或者在通過dd命令將備份文件復(fù)制到備用宿主機(jī)上的lvm都可以
方法四 使用qcow2塊復(fù)制備份
很遺憾目前centos6 centos7默認(rèn)攜帶的qemu還不支持qcow2塊復(fù)制的功能,如果要使用這個(gè)功能,只能手工編譯qemu或者使用fedaro,下面的測試需要在fedaro21上測試。
blockcopy必須是臨時(shí)生成的虛擬機(jī),不能是define狀態(tài)的虛擬機(jī),先將在線的虛擬機(jī)xml文件備份
virsh dumpxml --inactive win7 >/tmp/win.xml
然后undefine之后才能使用blockcopy
virsh # undefine win7
將虛擬機(jī)的一塊硬盤blockcopy到/home/win72.bak文件中,命令如下
virsh blockcopy --domain win7 hda /home/win72.bak --wait --finish --verbose
塊復(fù)制: [100 %]
通過qemu-img 查看
[root@f21b home]# qemu-img info win72.bak
image: win72.bak
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 8.3G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
在將文件復(fù)制到備用宿主機(jī)上就可以。
方法五 在線的帶存儲(chǔ)遷移
從centos6.4開始,支持在線的帶存儲(chǔ)遷移,這個(gè)是一個(gè)非常強(qiáng)大的功能,操作方法如下
第一步 在備用宿主機(jī)上通過qemu-img create 創(chuàng)建好空文件,大小和要備份的虛擬機(jī)一模一樣
qemu-img create -f qcow2 -o preallocation=metadata centos6.qcow2 150G
空文件需加預(yù)分配參數(shù),要不復(fù)制過去的文件會(huì)是按照qcow2預(yù)分配文件的大小
第二步 設(shè)置遷移速度,一般不希望遷移的時(shí)候?qū)φI(yè)務(wù)造成影響,設(shè)置遷移速度限制到600M/秒
virsh migrate-setspeed centos6 600
第三步 遷移
virsh migrate --live --copy-storage-all --unsafe --persistent centos6 qemu+ssh://192.168.0.101/system
遷移時(shí)間隨磁盤
空間大小而不通,磁盤空間越大,遷移時(shí)間越長,遷移的過程是先遷移磁盤,然后遷移內(nèi)存,遷移內(nèi)存的時(shí)候,一般業(yè)務(wù)會(huì)瞬斷下。虛擬機(jī)一瞬間在會(huì)在一邊關(guān)閉,領(lǐng)一邊的宿主機(jī)開啟。
以上就是小編介紹備份的全部內(nèi)容。