KVM主機遷移


[toc]node


新主機kvm初始環境的部署

I.檢查主機cpu是否支持虛擬化

[root@10-110-157-44 network-scripts]# egrep '(vmx|svm)' --color=auto /proc/cpuinfo

其中vmx是Intel-VT技術支持,svm是AMD-V技術支持python

若是有值,表示cpu支持虛擬化,通常公司的物理主機都支持cpu虛擬化git

II.宿主機軟件安裝

[root@10-110-157-44 network-scripts]# yum -y install kvm kmod-kvm qemu python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v libguestfs-tools
[root@10-110-157-44 network-scripts]# service libvirtd start
[root@10-110-157-44 network-scripts]# chkconfig libvirtd on
[root@10-110-157-44 network-scripts]# chkconfig --list |grep libvirtd
libvirtd       	0:off	1:off	2:off	3:on	4:on	5:on	6:off

III.檢查kvm模塊是否加載

[root@10-110-157-44 network-scripts]# lsmod | grep kvm
kvm_intel              55656  20 
kvm                   345659  1 kvm_intel

IV.網橋的搭建

直接使用橋接方式,新創建橋接網卡br0,而後將物理網卡eth0(有的主機可能不是eth0)變動成bridge類型shell

[root@10-110-157-44 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@10-110-157-44 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0				#指定橋接的網卡名稱
[root@10-110-157-44 network-scripts]# cat ifcfg-br0 
DEVICE=br0
BOOTPROTO=static
IPADDR=10.110.157.44
NETMASK=255.255.0.0
GATEWAY=10.110.0.1
ONBOOT=yes
TYPE=Bridge				#類型變動
NM_CONTROLLED=no
[root@10-110-157-44 network-scripts]#

更改br0與eth0配置文件以後,重啓網卡服務網絡

V.查看宿主機網絡

[root@10-110-157-44 network-scripts]# ifconfig 
br0       Link encap:Ethernet  HWaddr EC:F4:BB:F0:68:30  
          inet addr:10.110.157.44  Bcast:10.110.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:182591419 errors:0 dropped:0 overruns:0 frame:0
          TX packets:411766 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:9868491385 (9.1 GiB)  TX bytes:319978156 (305.1 MiB)

eth0      Link encap:Ethernet  HWaddr EC:F4:BB:F0:68:30  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:184253215 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4941290 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12839319724 (11.9 GiB)  TX bytes:4949051578 (4.6 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:54307 errors:0 dropped:0 overruns:0 frame:0
          TX packets:54307 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:5785417 (5.5 MiB)  TX bytes:5785417 (5.5 MiB)

遷移kvm主機數據

I.查看宿主機上現有虛擬主機

[root@10-110-157-41 qemu]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 6     ci.bigdata.letv.com            running
 7     gitlab.bigdata.letv.com        running

說明有兩臺虛擬主機在運行ssh

II.虛擬主機配置文件

[root@10-110-157-41 qemu]# pwd
/etc/libvirt/qemu
[root@10-110-157-41 qemu]# ll
total 12
-rw------- 1 root root 2433 Dec 26  2017 ci.bigdata.letv.com.xml
-rw------- 1 root root 2425 Dec 14  2017 gitlab.bigdata.letv.com.xml
drwx------ 3 root root 4096 Dec 14  2017 networks

以上兩個xml文件即爲宿主機配置文件,須要copy至新宿主機之上一樣路徑的目錄之下socket

III.關停虛擬主機

關停以前,最好先經過xshell鏈接至虛擬主機,更改其root密碼(若是知道root密碼,不用更改)並保存ide

[root@10-110-157-41 qemu]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 6     ci.bigdata.letv.com            running
 7     gitlab.bigdata.letv.com        running
[root@10-110-157-41 qemu]# virsh shutdown ci.bigdata.letv.com

shutdown後面跟上虛擬主機的name或者id號都可oop

關停以後virsh list --all查看虛擬主機運行狀態,直至顯示off即表示已經徹底關機gitlab

IV.虛擬主機鏡像文件

[root@10-110-157-41 qemu]# grep 'source file' ci.bigdata.letv.com.xml
      <source file='/data/jenkins/CI_SERVER.qcow2'/>
[root@10-110-157-41 qemu]# ll -h /data/jenkins/
total 898G
-rw-r--r-- 1 qemu qemu 898G Jan 10 10:47 CI_SERVER.qcow2

將以上qcow2的文件,copy至新的宿主機之上,按以上xml文件中定義的,將qcow2文件放至對應的目錄,或者更改對應的xml中的指定路徑都可

V.啓動虛擬主機

[root@10-110-157-44 ~]# virsh start ci.bigdata.letv.com
[root@10-110-157-44 qemu]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     ci.bigdata.letv.com            running
 2     gitlab.bigdata.letv.com        off

VI.虛擬主機ip

由於橋接方式,因此虛擬主機應該與其宿主機在同一網段,公司內部的網段比較好區分,好比上者10.110網段,能夠將虛擬主機的ip設定爲10.110.xxx.xxx便可。公司同一個網段中,通常不會選用到254,會預留一部分ip段,因此找到與宿主機同一網段的ip很容易,此處直接找雲計算申請ip便可,務必要爲虛擬主機申請ip,不然後續可能會存在ip衝突問題

VI.虛擬主機ip的設定

經過vnc,鏈接宿主機的ip,同時選擇對應的端口,便可以鏈接至虛擬主機

vnc的端口查看,能夠經過/etc/libvirt/qemu中的配置文件來查看,也能夠經過ps aux| grep kvm來查看

[root@10-110-157-44 qemu]# ps aux | grep kvm
root       1194  0.0  0.0      0     0 ?        S    Jan07   0:00 [kvm-irqfd-clean]
qemu      38690 11.4 34.8 20556192 11406408 ?   Sl   Jan07 435:16 /usr/libexec/qemu-kvm -name ci.bigdata.letv.com -S -M rhel6.5.0 -enable-kvm -m 16384 -realtime mlock=off -smp 8,sockets=8,cores=1,threads=1 -uuid 26cd024b-0c8e-3cc0-6869-bd6f901bbe7a -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/ci.bigdata.letv.com.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/data/jenkins/CI_SERVER.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=21,id=hostnet0,vhost=on,vhostfd=22 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:ee:e3:16,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:1 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -msg timestamp=on

如上,ci.bigdata.letv.com的虛擬主機,其vnc端口爲0.0.0.0:1,即vnc中鏈接地址爲10.110.157.44:5901,進入以後,和普通主機同樣更改至申請的ip便可。

自建的kvm主機,不能加入系統的ump中,因此ssh白名單,只能經過chattr命令來進行控制

VII.kvm虛擬主機忘記root密碼

[root@10-110-157-44 qemu]# yum -y install libguestfs-tools

在宿主機安裝以上軟件,而後找到一臺已知密碼的主機的/etc/shadow文件中root的加密字串,先關閉虛擬主機,而後進行字符串替換

[root@10-110-157-44 qemu]# virt-edit ci.bigdata.letv.com /etc/shadow

經過以上,更改虛擬主機中的root密碼,便可完成虛擬主機的更改

相關文章
相關標籤/搜索