1.前言
我在2017-11-06使用virtualbox安裝了centos,然后嵌套kvm(win7),鏈接地址如下:
https://www.cnblogs.com/tcicy/p/7790956.html
今天想在virtualbox中再耍一遍的時候,發現egrep -o '(vmx|svm)' /proc/cpuinfo執行不出結果。。。
然后Google了半天,發現virtualbox只支持嵌套,而且是個10多年的老bug了~~~~!!!無語!難道我2017-11-06用的是假的virtualbox???
不過,想做實驗,只能硬着頭皮裝VMware workstation。。。。。真不想裝啊!!!
安裝VMware workstation14,安裝centos7.xmini,一定要配置以下
然后執行以下命令就可以安裝kvm了
egrep -o '(vmx|svm)' /proc/cpuinfo
因為是mini安裝,要啥啥沒有,所以裝點必須的
1.1安裝調試基礎環境
yum install -y epel-release sysstat net-tools mlocate
安裝kvm程序及其環境
yum install -y qemu-kvm qemu-kvm-tools libvirt virt-install virt-top
可以安裝的程序很多
qemu-kvm # 主要的KVM程序包,KVM在用戶空間運行的程序 qemu-kvm-tools # KVM debugging and diagnostics tools virt-top # 虛擬機統計命令,類似top libvirt # 提供libvirt服務,用於管理虛擬機,它提供了一套虛擬機操作 API virt-install # 基於libvirt服務的虛擬機創建命令 bridge-utils # 創建和管理橋接設備的工具 virt-manager # 基於libvirt的GUI圖像化虛擬機管理軟件 libvirt-client # 虛擬客戶機提供的C語言工具包 virt-viewer # GUI連接程序,連接到已配置好的虛擬機,顯示虛擬機的控制台Console python-virtinst # 創建虛擬機所需要的命令行工具和程序庫 libvirt-client # libvirt的客戶端,最重要的功能之一就是在宿主機關機時可以通知虛擬機也關機 gpxe-roms-qemu # 虛擬機iPXE的啟動固件,支持虛擬機從網絡啟動 libvirt-python # libvirt為python 提供的 API python-virtinst # 一套Python 的虛擬機安裝工具 virt-what # 在虛擬機內部執行,查看虛擬機運行的虛擬化平台 qemu-img # 用於操作虛擬機硬盤鏡像的創建、查看和格式轉化
關閉防火牆及selinux
systemctl stop NetworkManager systemctl disable NetworkManager systemctl stop firewalld systemctl disable firewalld sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config reboot 重啟之后執行以下 systemctl status NetworkManager systemctl status firewalld firewall-cmd --state getenforce iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT
查看信息
systemctl restart libvirtd
systemctl status libvirtd
ifconfig virbr0
ifconfig virbr0-nic
brctl show
ps aux|grep dnsmasq
iptables -nvL -t nat
1.2創建虛機(NAT方式)
創建磁盤
mkdir /data
qemu-img create -f raw -o size=5G /data/tiny-linux.raw
下面開始安裝KVM咯!!!我用的tinylinux,安裝iso只有18MB,還帶桌面環境的~~~反正就是測試嘛~~~里面裝個windows或者ubuntu、centos、freebsd等的都行,隨便你。
virt-install --virt-type kvm --name Tiny-linux --ram 1024 --cdrom /data/TinyCore-current.iso --disk path=/data/Tiny-linux.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
如果覺得這行代碼太長,我們可以把代碼改下,運行哪個都行,只是加了\換行了而已。
virt-install --virt-type kvm \ --name Tiny-linux \ --ram 1024 \ --cdrom /data/TinyCore-current.iso \ --disk path=/data/Tiny-linux.raw \ --network network=default \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole
然后可以查看咯
netstat -ntlp|grep 5900 #第一台kvm是5900端口,依次累加5901,5902,5903........
virsh -c qemu:///system list
virsh list --all
這時候你可以打開vnc連接了
tightvnc的下載地址
http://www.tightvnc.com/download.php
IP地址是centos7.xmini的地址,點擊connect就行了,自己安裝就完事了。
1.3創建虛機(Bridge方式)
1.3.1創建網橋
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-br0
然后修改,修改后的結果如下:
[root@bogon ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=ens33 UUID=1a5720e1-1ba5-4b97-9b7c-fc312327a291 DEVICE=ens33 ONBOOT=yes BRIDGE=br0 ##增加這條 [root@bogon ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge BOOTPROTO=dhcp NAME=br0 DEVICE=br0 ONBOOT=yes
在ifcfg-ens33中增加BRIDGE=br0
ifcfg-br0中就5條信息就好了~~~[注意,centos7默認沒有/etc/sysconfig/network-scripts/ifcfg-br0這個文件]
然后執行systemctl restart network
這時候我的ens33沒有IP地址了,原來的IP地址跑到br0上了。
[root@bogon ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:0c:29:45:90:2d brd ff:ff:ff:ff:ff:ff
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:2d:9e:9d brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:2d:9e:9d brd ff:ff:ff:ff:ff:ff
5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:55:75:55 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe55:7555/64 scope link
valid_lft forever preferred_lft forever
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:45:90:2d brd ff:ff:ff:ff:ff:ff
inet 192.168.0.106/24 brd 192.168.0.255 scope global dynamic br0
valid_lft 7189sec preferred_lft 7189sec
inet6 fe80::20c:29ff:fe45:902d/64 scope link
valid_lft forever preferred_lft forever
1.3.2創建虛機
創建磁盤
mkdir /data
qemu-img create -f raw -o size=5G /data/tiny-linux.raw
下面開始安裝KVM咯!!!我用的tinylinux,安裝iso只有18MB,還帶桌面環境的~~~反正就是測試嘛~~~里面裝個windows或者ubuntu、centos、freebsd等的都行,隨便你。
virt-install --virt-type kvm --name Tiny-linux --ram 1024 --cdrom /data/TinyCore-current.iso --disk path=/data/Tiny-linux.raw --network network=br0,model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole
注意上面的命令network=br0,model=virtio
如果這是你的第二胎,那么端口就是5901了~~~其他都一樣,自己改。
1.4其他命令
virsh start Tiny-linux #啟動Tiny-linux虛擬機
virsh edit Tiny-linux #編輯tiny-linux虛擬機
virt-top #查看虛擬機的top信息
virsh destroy Tiny-linux #把tiny-linux斷電
virsh undefine Tiny-linux #把已斷電的tiny-linux虛擬機從數據庫中刪除,不刪除raw磁盤文件
updatedb #更新locate數據庫
locate Tiny-linux #哪里有tiny-linux文件,
rm --rf tiny-linux #刪除關於tiny-linux的一切.故意多寫了一個減號
tiny-linux虛擬機的配置文件在/etc/libvirt/qemu/tiny-linux.xml下,不要直接vi,要通過virsh edit tiny-linux來進行編輯,virsh edit調用的vi,編輯方式完全同vi。
我剛執行了virt-install.........然后發現光盤掛錯了,然后就可以執行virsh edit tiny-linux 然后增加以下部分
此時再運行virsh start tiny-linux,虛擬機就掛載的cdrom了。
1.5其他的操作命令
virsh define template.xml 定義一個虛機,並不啟動
virsh suspend tinylinux #掛起虛機
virsh resume tinylinux #恢復被掛起的虛機
virsh autostart tinylinux #讓虛機隨宿主機一起啟動
virsh auotstart --disable tinylinux #取消虛機隨宿主機一起啟動
virsh dominfo tinylinux #顯示虛機信息
virsh shutdown tinylinux #關閉虛機
virsh reboot tinylinux #重啟虛機
virsh console tinylinux 通過console進入虛機
Ctrl+] #從虛機的console端口退出
virsh vncdisplay tinylinux #查看vnc端口
[root@bogon ~]# virsh vncdisplay centos6.5 :0 [root@bogon ~]#yum install -y vnc [root@bogon ~]#vncviewer 127.0.0.1:0
file /var/lib/libvirt/qemu/* #查看虛擬機 socket 文件及 save、dump、snapshot 目錄
[root@bogon qemu]# file /var/lib/libvirt/qemu/* /var/lib/libvirt/qemu/channel: directory /var/lib/libvirt/qemu/domain-2-Tiny-linux: directory /var/lib/libvirt/qemu/domain-3-gentoo: directory /var/lib/libvirt/qemu/dump: directory /var/lib/libvirt/qemu/nvram: directory /var/lib/libvirt/qemu/ram: directory /var/lib/libvirt/qemu/save: directory /var/lib/libvirt/qemu/snapshot: directory
虛機配置文件放在/etc/libvirt/qemu/tiny-linux.xml
修改xml文件,開機引導項設置為硬盤,2種方法,推薦第一種
1.virsh edit tinylinux
<os> <type>hvm</type> <boot dev="hd"/> <!-- 虛擬機開機引導項設置為硬盤--> </os>
2.需要3條命令
vi /etc/libvirt/qemu/tiny-linux.xml
virsh undefine tiny-linux
virsh define tiny-linux
如果想用Virt-manager創建虛機請參考https://www.cnblogs.com/tcicy/p/7790956.html
虛機格式轉換請參考https://www.cnblogs.com/tcicy/p/8522808.html
關閉虛擬機
如果virsh shutdown不管用的話就再虛擬機里面執行以下命令
yum -y install acpid service acpid restart chkconfig --level 2345 acpid on chkconfig acpid --list
1.6刪除虛機
1.virsh destroy tinylinux #刪除虛機
2.virsh undefine tinylinux #解除標志
3.rm虛擬機文件(可通過locate tinylinux查找)
重命名虛機 (比較麻煩,一般別折騰)
1.關閉虛機 2.重命名xml文件 cd /etc/libvirt/qemu virsh dumpxml tinylinux > xxx.xml 3、編輯xxx.xml文件,修改<name>標簽對以及磁盤文件,這里我們將磁盤文件Tiny-linux.raw修改成xxx.raw,把tinylinux改成xxx 4.重命名磁盤文件 cd /var/lib/libvirt/images (我的路徑是/data/) mv Tiny-linux.raw xxx.raw 5.數據庫中刪除原虛機,定義新虛機 virsh undefine tinylinux virsh define /etc/libvirt/qemu/xxx.xml 6.查看 virsh list --all
1.7未完成操作
給虛擬機添加硬盤
1.物理硬盤
virsh attach-disk tinylinux /dev/sdb vbd --driver qemu --mode shareable #將/dev/sdb給到tinylinux虛機
#如果虛機是Windows的話會出現 SCSI 設備 (Red Hat VirtIO SCSI Disk Device)驅動在 virtio-win-0.1-15.iso
virsh detach-disk tinylinux vdb #卸載硬盤
2.LVM卷
lvcreate -n tinydisk -L 50G tinyvbd #通過lvcreate創建一塊硬盤,硬盤名字為tinydisk,文件名字為tinyvbd
virsh attach-disk tinylinux /dev/vg_shkvm1/kvm-1-data vdb --driver qemu --mode shareable
更改內存大小
更改CPU
硬盤擴容
更換光盤
virsh attach-disk tinylinux /path/to/filename.iso hdc --type cdrom