當配置完成以後,咱們使用ifconfig命令查看起來的話。會發現eth0是沒有IP地址,而br0彷彿是虛擬出來的一個原來eth0的訪問接口,它具備IP地址,可以取代原來的eth0被訪問。而vnetXX的地址可以在創建虛擬機以後在虛擬機裏面配置。橋接後可以被外部訪問。python
注意:將已有的物理網卡加入到網橋,此時物理網卡eth0工做於混雜模式,因此不需要IP地址。因爲網橋是工做在鏈路層的。br0就提供了IP地址。用來模擬原來的物理網卡的訪問接口.
關於混雜模式:
依據以太網的原理。包是在整個子網裏面廣播發送的,當網卡發現這個數據幀不是發給本身的也不是廣播包的時候。就直接把它丟掉,而不傳送到上層內核去處理。而當網卡處於混雜模式的時候,網卡就不會丟掉幀,而是全部向上提交到內核,讓內核處理這些幀結構。一般的。混雜模式使用來進行網絡調試的,不是正常的工做狀態
(2)建立配置br0網橋
[root@kvm ~]# cd /etc/sysconfig/network-scripts/
[root@kvm network-scripts]# cp ifcfg-eth1 ifcfg-br0
[root@kvm network-scripts]# more ifcfg-eth1
DEVICE=eth1
HWADDR=00:0C:29:59:7f:21
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
[root@kvm network-scripts]# more ifcfg-br0
DEVICE=br0
HWADDR=00:0C:29:59:7f:21
TYPE=Bridge
UUID=739689d7-857c-4a62-9ede-bd6f18cde92a
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.180
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
(3)又一次啓動network
[root@kvm ~]# service network restart
正在關閉接口 br0: [肯定]
正在關閉接口 eth1: [肯定]
關閉環回接口: [肯定]
彈出環回接口: [肯定]
彈出界面 eth1: [肯定]
彈出界面 br0: [肯定]
(4)查看網絡配置信息
[root@kvm ~]# ifconfig
br0 Link encap:Ethernet HWaddr 00:0C:29:59:7F:21
inet addr:192.168.1.180 Bcast:192.168.1.255 Mask:255.255.255.0 #獲取到地址
inet6 addr: fe80::20c:29ff:fe59:7f21/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3170100 errors:0 dropped:0 overruns:0 frame:0
TX packets:1731782 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4503127474 (4.1 GiB) TX bytes:132209121 (126.0 MiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:59:7F:21
inet6 addr: fe80::20c:29ff:fe59:7f21/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3233002 errors:0 dropped:0 overruns:0 frame:0
TX packets:1781748 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4626338976 (4.3 GiB) TX bytes:136271300 (129.9 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
virbr0 Link encap:Ethernet HWaddr 52:54:00:19:DC:45
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
vnet0 Link encap:Ethernet HWaddr FE:54:00:20:9C:91
inet6 addr: fe80::fc54:ff:fe20:9c91/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:644 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:3365 (3.2 KiB) TX bytes:61657 (60.2 KiB)
(5)查看網橋
[root@kvm ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29597f21 no eth1
4、kvm安裝CentOS 6.x系統
一、上傳CentOS6.4鏡像到本地server中
[root@kvm ~]# mkdir /iso
[root@kvm ~]# ls /iso/
CentOS-6.4-x86_64-bin-DVD1.iso
二、建立虛擬機硬盤
[root@kvm ~]# mkdir /kvm
[root@kvm ~]# qemu-img create -f qcow2 /kvm/kvmtest.img 4G
Formatting '/kvm/kvmtest.img', fmt=qcow2 size=4294967296 encryption=off cluster_size=65536
[root@kvm ~]# ls /kvm/
kvmtest.img
[root@kvm ~]# qemu-img --help
qemu-img version 0.12.1, Copyright (c) 2004-2008 Fabrice Bellard
usage: qemu-img command [command options]
QEMU disk image utility
Command syntax:
check [-f fmt] [--output=ofmt] [-r [leaks | all]] [-T src_cache] filename
create [-f fmt] [-o options] filename [size]
commit [-f fmt] [-t cache] filename
compare [-f fmt] [-F fmt] [-T src_cache] [-p] [-s] filename1 filename2
convert [-c] [-p] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-S sparse_size] filename [filename2 [...]] output_filename
info [-f fmt] [--output=ofmt] filename
map [-f fmt] [--output=ofmt] filename
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
rebase [-f fmt] [-t cache] [-T src_cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
resize filename [+ | -]size
Command parameters:
'filename' is a disk image filename
'fmt' is the disk image format. It is guessed automatically in most cases
'cache' is the cache mode used to write the output disk image, the valid
options are: 'none', 'writeback' (default), 'writethrough' and 'unsafe'
'src_cache' in contrast is the cache mode used to read input disk images
'size' is the disk image size in bytes. Optional suffixes
'k' or 'K' (kilobyte, 1024), 'M' (megabyte, 1024k), 'G' (gigabyte, 1024M)
and T (terabyte, 1024G) are supported. 'b' is ignored.
三、建立虛擬機
[root@kvm ~]# virt-install --name kvmtest01 --boot network,cdrom,menu=on --ram 1024 --vcpus=1 --os-type=linux --accelerate -c /iso/CentOS-6.4-x86_64-bin-DVD1.iso --disk path=/kvm/kvmtest.img,size=4,format=qcow2,bus=virtio --bridge=br0,model=virtio --vnc --vncport=5991 --vnclisten=0.0.0.0
開始安裝......
建立域...... | 0 B 00:01
沒法打開顯示:
執行 'virt-viewer --help' 來查看可用命令行選項的完整列表
域安裝仍在進行。linux
您可以又一次鏈接
到控制檯以便完畢安裝進程。
四、開始經過VNC進行鏈接,進行安裝過程
(1)查看kvm監聽的port
[root@kvm ~]# netstat -tnlp |grep kvm
tcp 0 0 0.0.0.0:5991 0.0.0.0:* LISTEN 16291/qemu-kvm
(2)VNC創建鏈接方式(可以安裝虛擬機的系統)
IP:5991
五、登錄操做系統查看
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
2 kvmtest01 running
5、kvm虛擬機的平常管理和配置
一、查看kvm虛擬機配置文件以及執行狀態
(1)kvm虛擬機默認配置文件
[root@kvm ~]# cd /etc/libvirt/qemu/
[root@kvm qemu]# ll
總用量 8
-rw------- 1 root root 2456 12月 19 12:16 kvmtest01.xml
drwx------ 3 root root 4096 12月 19 11:56 networks
(2)virsh命令幫助
[root@kvm qemu]# virsh --help
或者
[root@kvm qemu]# virsh
歡迎使用 virsh,虛擬化的交互式終端。
輸入:'help' 來得到命令的幫助信息
'quit' 退出
virsh # help
(3)查看kvm虛擬機的狀態
[root@kvm qemu]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
2 kvmtest01 running
二、kvm虛擬機關機或斷電
咱們在開啓與關閉KVM虛擬機時。一般是經過start、shutdown、reboot等命令來進行。
但是有時候咱們會發現在使用shutdown、reboot命令進行關閉和從新啓動虛擬機時,虛擬機沒有不論什麼反應,該怎麼執行仍是怎麼執行,這個時候咱們可能就會使用destroy暴力關機。
爲何會出現這樣的現象?
通過查詢相關資料發現,原來這幾個命令是向KVM虛擬機發送一個ACPI指令。來實現相關對虛擬機的操做。而默認安裝KVM虛擬機時,特別是linux虛擬機。沒有安裝ACPI服務,所以致使虛擬機沒有對這些命令作出對應的動做。vim
解決的方法:
假設要實現這些指令的功能,那麼就需要在KVM的虛擬機中,安裝ACPI服務,而後啓動該服務就能夠。windows
KVM虛擬機中眼下windows系統默認ACPI服務已經安裝並啓動,因此咱們僅僅需要對Linux進行安裝ACPI服務就能夠。
(1)安裝acpid服務
[root@kvm ~]# yum install acpid
(2)將acpid服務設置開機自啓動
[root@kvm ~]# /etc/init.d/acpid status
acpid 已停
[root@kvm ~]# /etc/init.d/acpid start
啓動 acpi 守護進程: [肯定]
[root@kvm ~]# chkconfig acpid on
[root@kvm ~]# chkconfig --list acpid
acpid 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
(3)關機
默認狀況下virsh工具不能對linux虛擬機進行關機操做,linux操做系統需要開啓與啓動acpid服務。在安裝KVM linux虛擬機必須配置此服務。
[root@kvm ~]# virsh shutdown kvmtest01
域 kvmtest01 被關閉
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
2 kvmtest01 running
(4)強制關閉電源
[root@kvm ~]# virsh destroy kvmtest01
域 kvmtest01 被刪除
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
- kvmtest01 關閉
三、經過配置文件啓動虛擬機
[root@kvm ~]# virsh create /etc/libvirt/qemu/kvmtest01.xml
域 kvmtest01 被建立(從 /etc/libvirt/qemu/kvmtest01.xml)
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
3 kvmtest01 running
四、kvm虛擬機開機的兩種方式
第一種:
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
- kvmtest01 關閉
[root@kvm ~]# virsh start kvmtest01
域 kvmtest01 已開始
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
4 kvmtest01 running
另一種:經過配置文件啓動虛擬機
[root@kvm ~]# virsh create /etc/libvirt/qemu/kvmtest01.xml
域 kvmtest01 被建立(從 /etc/libvirt/qemu/kvmtest01.xml)
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
3 kvmtest01 running
五、配置開機自啓動虛擬機
[root@kvm ~]# ll /etc/libvirt/qemu
總用量 8
-rw------- 1 root root 2456 12月 19 12:16 kvmtest01.xml
drwx------ 3 root root 4096 12月 19 11:56 networks
[root@kvm ~]# virsh autostart kvmtest01
域 kvmtest01標記爲本身主動開始
[root@kvm ~]# ll /etc/libvirt/qemu
總用量 12
drwxr-xr-x 2 root root 4096 12月 19 13:07 autostart #開機自啓動文件
-rw------- 1 root root 2456 12月 19 12:16 kvmtest01.xml
drwx------ 3 root root 4096 12月 19 11:56 networks
六、導出kvm虛擬機配置文件
凝視:kvm虛擬機配置文件可以經過這樣的方式進行備份
[root@kvm ~]# virsh dumpxml kvmtest01 > /etc/libvirt/qemu/kvmtest02.xml
[root@kvm ~]# ll /etc/libvirt/qemu/
總用量 16
drwxr-xr-x 2 root root 4096 12月 19 13:07 autostart
-rw------- 1 root root 2456 12月 19 12:16 kvmtest01.xml
-rw-r--r-- 1 root root 2642 12月 19 13:22 kvmtest02.xml
drwx------ 3 root root 4096 12月 19 11:56 networks
七、加入刪除kvm虛擬機
(1)刪除kvm虛擬機
說明:該命令僅僅是刪除了可vmtest01的配置文件,並不是刪除虛擬磁盤文件
說明:該命令僅僅是刪除了可vmtest01的配置文件。並不是刪除虛擬磁盤文件
[root@kvm ~]# ll /etc/libvirt/qemu
總用量 16
drwxr-xr-x 2 root root 4096 12月 19 13:07 autostart
-rw------- 1 root root 2456 12月 19 12:16 kvmtest01.xml #kvmtest01虛擬機的配置文件
-rw-r--r-- 1 root root 2642 12月 19 13:22 kvmtest02.xml #kvmtest01虛擬機的備份配置文件
drwx------ 3 root root 4096 12月 19 11:56 networks
[root@kvm ~]# virsh destroy kvmtest01
域 kvmtest01 被刪除
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
- kvmtest01 關閉
[root@kvm ~]# virsh undefine kvmtest01
域 kvmtest01 已經被取消定義
[root@kvm ~]# ll /etc/libvirt/qemu
總用量 12
drwxr-xr-x 2 root root 4096 12月 19 13:29 autostart
-rw-r--r-- 1 root root 2642 12月 19 13:22 kvmtest02.xml #發現虛擬機的配置文件被刪除了
drwx------ 3 root root 4096 12月 19 11:56 networks
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
(2)又一次定義虛擬機配置文件
經過導出備份的配置文件恢復原KVM虛擬機的定義,並又一次定義虛擬機
[root@kvm ~]# virsh define /etc/libvirt/qemu/kvmtest01.xml
定義域 kvmtest01(從 /etc/libvirt/qemu/kvmtest01.xml)
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
- kvmtest01 關閉
(3)啓動kvmtest01虛擬機
[root@kvm ~]# virsh start kvmtest01
域 kvmtest01 已開始
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
5 kvmtest01 running
八、kvm的掛起和恢復命令
(1)掛起
[root@kvm ~]# suspend kvmtest01
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
6 kvmtest01 暫停
(2)恢復
[root@kvm ~]#resume kvmtest01
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
6 kvmtest01 running
6、kvm虛擬機控制檯登錄配置
說明:下面所有的操做都是在kvm虛擬主機上操做的也就是kvmtest01上操做的
一、加入ttyS0的許可,贊成root登錄
[root@localhost ~]# echo "ttyS0" >> /etc/securetty
[root@localhost ~]# more /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
ttyS0 #加入ttyS0
二、改動grub.conf配置文件
[root@localhost ~]# vim /etc/grub.conf
凝視加入console=ttyS0
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/vda3
# initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=7b02e71c-06b4-4f5f-af83-dfe20e93fddf rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=u
s rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet console=ttyS0 #加入console=ttyS0
initrd /initramfs-2.6.32-358.el6.x86_64.img
三、改動/etc/inittab文件
[root@localhost ~]# echo "S0:12345:respawn:/sbin/agetty ttyS0 115200" >> /etc/inittab
[root@localhost ~]# more /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
S0:12345:respawn:/sbin/agetty ttyS0 115200
五、從新啓動kvm虛擬主機
[root@localhost ~]# reboot
六、在控制端kvmserver上操做
virsh console kvmtest01
網絡
[root@kvm ~]# virsh destroy kvmtest01
域 kvmtest01 被刪除
[root@kvm ~]# virt-clone -o kvmtest01 -n kvmtest02 -f /kvm/kvmtest02.img
正在克隆 kvmtest.img | 1.0 GB 01:18
Clone 'kvmtest02' created successfully.
參數解釋
-o ORIGINAL_GUEST, --original=ORIGINAL_GUEST
原始客體的名稱;必須爲關閉或者暫停狀態
-n NEW_NAME, --name=NEW_NAME
新client的名稱
-f NEW_DISKFILE, --file=NEW_DISKFILE
做爲新client磁盤映像的新文件
(5)啓動kvm虛擬機
Clone 'kvmtest02' created successfully.
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
- kvmtest01 關閉
- kvmtest02 關閉
[root@kvm ~]# virsh start kvmtest02
域 kvmtest02 已開始
[root@kvm ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
2 kvmtest02 running
- kvmtest01 關閉
(6)kvm控制檯登錄kvmtest02虛擬機
[root@kvm ~]# virsh console kvmtest02
鏈接到域 kvmtest02
Escape character is ^]
Welcome to CentOS
正在啓動 udev:[肯定]
設立主機名 localhost.localdomain: [肯定]
檢查文件系統
Checking all file systems.
[/sbin/fsck.ext4 (1) -- /] fsck.ext4 -a /dev/vda3
/dev/vda3: clean, 33318/118320 files, 231356/472832 blocks
[/sbin/fsck.ext4 (1) -- /boot] fsck.ext4 -a /dev/vda1
/dev/vda1: 正在修復日誌
/dev/vda1: clean, 38/51200 files, 32302/204800 blocks
[肯定]
將根文件系統又一次掛載成讀寫模式: [肯定]
掛載本地文件系統: [肯定]
啓用/etc/fstab中的交換空間: [肯定]
進入非互動式啓動
ip6tables:應用防火牆規則:[肯定]
iptables:應用防火牆規則:[肯定]
彈出環回接口: [肯定]
彈出界面 eth0: 設備 eth0 彷佛不存在, 初始化操做將被延遲。dom
[失敗]
正在啓動 auditd:[肯定]
啓動系統日誌記錄器:[肯定]
啓動系統消息總線:[肯定]
掛載其餘文件系統: [肯定]
又一次激發失敗的 udev 事件[肯定]
加入 udev 持久規則[肯定]
正在啓動 sshd:[肯定]
啓動 postfix: [肯定]
正在啓動 crond:[肯定]
CentOS release 6.4 (Final)
Kernel 2.6.32-358.el6.x86_64 on an x86_64
localhost.localdomain login: root
Password:
Last login: Fri Dec 19 16:23:37 on ttyS0
[root@localhost ~]# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
二、經過拷貝配置文件與磁盤文件的虛擬機複製克隆(適用於異機的靜態遷移)
sheng
注意:KVM克隆的時候需要注意幾點
一、編輯配置文件的時候。儘可能不要使用vim/vi,因爲vim/vi改動的配置當時不會生效。因此要使用KVM特定的編輯命令 virsh edit kvmtest01
二、由於使用的虛擬機。克隆後的虛擬機是僅僅有lo迴環地址,沒有物理網卡。需要咱們手動改動
[root@kvm ~]# ll /etc/udev/rules.d/70-persistent-net.rules
-rw-r--r-- 1 root root 420 12月 18 21:22 /etc/udev/rules.d/70-persistent-net.rules
ssh