XenServer TO vSphere 移機紀錄(含排程備份設定)

學校的XenServer 6.1 虛擬主機系統在沒心理準備的情況下,剩下十四天授權就到期了,而Ctrix公司竟然不再發放一年期授權!

升級到7.4版以後卻發現學校首頁及學務系統通通開不了機!做了上百次用了不同硬體的系統安裝皆失敗,萬念俱灰下,只好動起vSphere的主意!

可是學期中,主機不太能夠停止服務,當初曾做過的p2v實驗又都以失敗告終!但既然本來用得很順手的XenServer突然變得不好用,那原來一直失敗的p2v或許反而是一線希望!

時間剩下五天,隔天開始放春假!我想,這個假期肯定要泡湯了!別想那麼多了,動手!

使用VMware vCenter Converter Standalone Client先轉換學務系統看看!

執行程式→執行convert machine→填入相關參數(因為是走ssh,故來源機ssh的root權限要打開)

沒想到竟然成功了!

那之前的無數次失敗是什麼鬼?好,那把之前曾經一再失敗的主機再拿來轉轉看!果然,還是失敗!那問題在哪?

Centos7成功,Centos7之前的都失敗‧‧‧

回想當初學務系統升級到Centos7.2時,XenServer6.1並不認識Centos7,所以我是採用全虛擬的方式!會不會是因為如此?所以converter把它當成了是一台真正的主機!而之前在做Centos7之前的系統時XenServer有修改

了Linux的核心!就這麼想吧!

接下來問題來了!之前選擇XenServer的原因是因為備份快速,複製虛擬機只要十秒鐘,exprot出來也只要幾個小時!那現在怎麼辦?vSphere要停機近十個小時才能匯出OVF呀!

不管了!先利用半夜、放假沒人用學務系統,先備份匯出再說吧!

WTF,失敗!無數次的失敗!又陷入失敗的迴圈了!

再google看看有沒有解決之道!要錢,就是要錢!才能用vCenter!阿就是沒錢呀!不然幹嘛那麼辛苦!

轉機:救星出現

http://jamyy.us.to/blog/2016/08/8277.html

http://jamyy.us.to/blog/2016/07/8229.html

為了怕該網站掛點,先把內容複製並修改參數如下

by Jamyy on 八月.17, 2016, under VMware

兩台獨立 ESXi 主機, 一台 24x7 運行(要備份的來源端), 另一台需要時網路喚醒

排程 clone 重要 VM 並傳輸到備援 ESXi 主機

優點:

  • 無需 vCenter Server

  • 兩部 ESXi 主機規格可以不同 (Intel vs. AMD)

  • 完全使用系統內建指令操作, 無需加裝額外套件

  • 傳輸前喚醒備援 ESXi 主機, 傳輸後關機, 節能減碳

  • 備援主機可在短時間內啟用 cloned VM, 達到備援效果

環境: CentOS 6, ESXi 6.0.0

前置作業: 建立金鑰, 憑金鑰免密碼 SSH 登入遠端主機

linux_host(要備份的系統,如學務系統):140.128.223.3

esxi01(學務系統所在的虛擬主機,VM-hpDL380-G7):140.128.223.107

esxi02(備份目的虛擬主機,VM-hp_ML10Gen9):140.128.223.109

以下@...表示:在哪一台主機操作的意思

@linux_host

$ ssh-keygen -t rsa

$ scp ~/.ssh/id_rsa.pub root@esxi01:/tmp

$ ssh root@esxi01

@esxi01

] cat /tmp/id_rsa.pub >> /etc/ssh/keys-root/authorized_keys

] esxcli network firewall ruleset set --enabled true --ruleset-id=sshClient

] /usr/lib/vmware/openssh/bin/ssh-keygen -t rsa

] scp /.ssh/id_rsa.pub root@esxi02:/tmp

] ssh root@esxi02

@esxi02

] cat /tmp/id_rsa.pub >> /etc/ssh/keys-root/authorized_keys

] rm /tmp/id_rsa.pub

] exit

@esxi01

] exit

@linux_host

$ exit

在 esxi01 主機建立 shell script(在來源端建立備份檔vmdk,並傳送至備份端)

$ ssh root@esxi01

] vi /.go

01

02

03

04

05

06

07

08

09

10

11

12

13

14

#!/bin/sh

export PATH=/bin:/sbin

MYVM=myVMname(#虛擬系統名稱)

VMID=$(vim-cmd vmsvc/getallvms | grep $MYVM | awk '{print $1}')

vim-cmd vmsvc/snapshot.create $VMID noname nodesc 0 0

cd /vmfs/volumes/datastore1

mkdir $MYVM-clone

vmkfstools -i $MYVM/$MYVM.vmdk -d thin $MYVM-clone/$MYVM.vmdk

vim-cmd vmsvc/snapshot.removeall $VMID

scp -r $MYVM-clone root@esxi02:/vmfs/volumes/datastore1/

rm -rf $MYVM-clone

ssh root@esxi02 "sync; poweroff"

] exit

在 Linux Host 排程進行 VM 備份

Centos7無法以下列方式處理,藍色為原作者,紅色為改寫過的

$ sudo yum install wol

$ sudo vi /etc/hosts

# 填入 esxi02 主機 IP Address

192.168.1.123 esxi02

$ sudo vi /etc/ethers

# 填入 esxi02 主機網卡 Mac Address

00:22:15:12:34:56 esxi02

$ vi ~/go && chmod +x $_

1

2

3

4

5

6

7

#!/bin/bash

# 網路喚醒 esxi02 主機

wol esxi02

安裝 yum -y install net-tools

ether-wake -i eth1 74:27:ea:f7:ec:46

# 登入 esxi01, 把重要 VM 備份到 esxi02 主機

ssh root@esxi01 "sh /.go"

$ crontab -e

# 排程凌晨三點執行

0 3 * * * /home/myaccount/go

直接在 ESXi 排程進行 VM 備份的方案

Step 1. 讓 ESXi 使用當地時區時間

@linux_host

$ scp /etc/localtime root@esxi01:/tmp

$ ssh root@esxi01

@esxi01

] chmod 666 /etc/localtime

] cp /tmp/localtime /etc/localtime

Step 2. 撰寫 Shell Script

] vi /.go

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

#!/bin/sh

export PATH=/bin:/sbin

MYVM=myVMname

VMID=$(vim-cmd vmsvc/getallvms | grep $MYVM | awk '{print $1}')

ssh account@linux.host "wol esxi02"

vim-cmd vmsvc/snapshot.create $VMID noname nodesc 0 0

cd /vmfs/volumes/datastore1

mkdir $MYVM-clone

vmkfstools -i $MYVM/$MYVM.vmdk -d thin $MYVM-clone/$MYVM.vmdk

vim-cmd vmsvc/snapshot.removeall $VMID

scp -r $MYVM-clone root@esxi02:/vmfs/volumes/datastore1/

rm -rf $MYVM-clone

ssh root@esxi02 "sync; poweroff"

Step 3. 排程自動執行

] vi /var/spool/cron/crontabs/root

] kill $(cat /var/run/crond.pid)

] /usr/lib/vmware/busybox/bin/busybox crond

Ref:

(Visited 930 times, 6 visits today)

Related Posts

備份完畢約四個鐘頭,如果要還原,則要用vmdk登錄程虛擬機的方式

http://www.cc.ntut.edu.tw/~jykuo/train/VMwareVmdk.pdf

1 VMware 匯入 vmdk 檔案 VMware 版本: VMware Workstation 12 Player

1. 點選 Create New Virtual Machine

2. 點選 I will install the operating system later.,並按下 Next 2

3. 點選 Linux Ubuntu,並按下 Next

4. 可依個人喜好修改 VM 名稱及存放位置,並按下 Next

5. 點選 Store virtual disk as a single file,並可以調整硬碟大小 3

6. 點選 Customize Hardware…

7. 調整 Memory 及 Processors 大小,調整完成後按 close

8. 點選 Finish 4

9. 點選剛剛建立的 ec2_demo,並點選 Edit virtual machine settings

10. 點選 Hard Disk(SCSI),並按下 Remove

11. 點選 Add 5

12. 點選 Hard Disk 並按下 Next

13. 點選 SCSI,並按下 Next

14. 點選 Use an existing virtual disk,並按下 next 6

15. 點選 Browse 選擇 EC2.vmdk 的檔案位置,並按下 Finish

16. 按下 ok

17. 點選 ec2_demo,並按下 Play virtual machine 7

18. 完成畫面

0 3 * * * /bin/sh /.go