Linux科技

虚拟化技术

2018-05-26  本文已影响0人  Miracle001
3种虚拟方式
桥接模式
仅主机模式
nat模式
云服务
各种组件虚拟
主机虚拟化类型
Xen
KVM
libvirt的C/S
kvm管理机制
libvirt服务
qemu
qemu+xen
qemu+kvm:  qemu-kvm
内核空间:操作系统内存加速--kvm实现
用户空间:加速虚拟网络、创建虚拟io设备--qemu--命令行管理
libvirt--图形管理

CPU设置
grep -i -E '(vmx|svm|lm)' /proc/cpuinfo  显示vmx(intel)/svm(amd)、lm即可
modprobe kvm  安装kvm模块
lsmod | grep -i kvm
yum -y install libvirt-daemon-kvm qemu-kvm virt-manager
systemctl status libvirtd
ifconfig  
创建br0设备
  cd /etc/sysconfig/network-scripts
  cp ifcfg-ens33 ifcfg-br0
  vim ifcfg-ens33  当交换机使用
    删除IPADDR、PREFIX、GATEWAY、DNS、IPV6_PEERDNS、IPV6_PEERROUTES、IPV6_DEFROUTE
    添加BRIDGE=br0(dhcp模式,就直接加br0备即可)
  vim ifcfg-br0
    删除UUID
    修改DEVICE=br0、TYPE=Bridge、NAME=br0
  systemctl restart network;  ifconfig  显示br0,ens33--类似物理交换机了
brctl show  显示br0上有ens34即可
virt-manager &    在图形界面打开

mkdir -pv /data/os/
mv CentOS-7-x86_64-Everything-1708.iso /data/os/  
  提前把镜像放到某个目录下去,使用本地镜像安装。
开始创建
本地镜像:提前把镜像传到主机上
指明镜像路径
2个CPU
96G可用范围内输入大小
网络使用默认是virbr0
CPU
boot options
开始安装
安装centos即可
ls -lh /dev/kvm
qemu-img -h
  kvm首选qcow2
qemu-img create -f qcow2 -o ? /data/os/test.qcow2
qemu-img create -f qcow2 -o size=120G,preallocation=metadata /data/os/test.qcow2
ll -h /data/os/  
du -sh /data/os/test.qcow2  真实大小
virt-manager &    在图形界面打开  知道方法即可  空镜像
选择刚才创建的镜像文件
使用别人的镜像
https://launchpad.net/cirros/+download  下载二进制格式包
云环境--第一次启动需要连接互联网进行测试
cd /data/os/
rz  上传cirros-0.4.0-x86_64-disk.img
cp cirros-0.4.0-x86_64-disk.img c1.img
cp cirros-0.4.0-x86_64-disk.img c2.img
cp cirros-0.4.0-x86_64-disk.img c3.img
qemu-img info c1.img
图形界面操作
virt-manager &    

已有镜像
选择
c1
OS type可以任意
100M、2个CPU
选择联网网卡
等一会,第一次连接,联网测试
输入默认账号和密码
图形界面  QEMU/KVM
su do -  切换root身份
ifconfig 192.168.1.6

命令行界面
yum -y install tigervnc
ss -ntl  5900端口--图形界面运行的c1虚拟机在"vnc :0"窗口
rpm -ql qemu-kvm
ln -sv /usr/libexec/qemu-kvm /usr/bin/  加到path变量里面
qemu-kvm -h
qemu-kvm -name c1 -m 100m -smp 2,sockets=2,cores=1 -drive file=/data/os/c1.img,if=virtio,media=disk -vnc :1 &(或--daemonize)
  后台运行的c1在vnc1号窗口
ps aux  显示进程已经运行
ss -ntl  5901端口
图形界面
vncviewer :1  登录vnc1号窗口
等一会  20次网络连接测试  输入账号和密码
su do -
ifconfig 显示IP地址:10.0.2.15

图形界面创建c2虚拟机--创建成功后
su do -  切换root身份
ifconfig  192.168.1.7
命令行界面
ss -ntl  5902端口--图形界面运行的c2虚拟机在"vnc :2"窗口
qemu-kvm -name c2 -m 100m -smp 2 -drive file=/data/os/c2.img,if=virtio,media=disk -vnc :3 &
  后台运行的c2在"vnc :3"窗口
ps aux  显示进程已经运行
ss -ntl  5903端口
图形界面
vncviewer :3  登录vnc3号窗口
输入账号和密码即可
sudo su -
ifconfig  10.0.2.15

图形界面停止c1和c2虚拟机--shutdown--删除这两个虚拟机--不要删除镜像文件

命令行界面
man qemu-kvm  搜索/-net
lsmod |grep bridge
brctl show
yum info bridge-utils  已经安装--和内核一起加载
brctl help
brctl addbr vnet0  添加网桥
brctl show;  ifconfig -a
  写入脚本,不操作:ip link set vnet0 up  或者  ifconfig vnet0 up  激活此网桥
vim /etc/qemu-ifup
#!/bin/bash
#
bridge=vnet0

if [ -n "$1" ];then
        ip link set $1 up
        sleep 1
        brctl addif $bridge $1
        [ $? -eq 0 ] && exit 0 || exit 1
else
        echo "Error: no interface specified."
        exit 2
fi
chmod +x /etc/qemu-ifup
bash -n /etc/qemu-ifup
vim /etc/qemu-ifdown
#!/bin/bash
#
bridge=vnet0

if [ -n "$1" ];then
        brctl delif $bridge $1
        sleep 1
        [ $? -eq 0 ] && exit 0 || exit 1
else
        echo "Error: no interface specified."
        exit 2
fi
chmod +x /etc/qemu-ifdown
bash -n /etc/qemu-ifdown
qemu-kvm -name c1 -m 100m -smp 2 -drive file=/data/os/c1.img,if=virtio,media=disk -vnc :0 --daemonize -net nic,model=virtio,macaddr=52:54:00:00:00:01 -net tap,ifname=fgq0,script=/etc/qemu-ifup
  ifname=name  自定义名字,默认值为tap0/1/2/...
  model=virtio  半虚拟化
ss -ntl  5900端口
ps aux  显示进程运行
图形界面
vncviewer :0 &
可能会报错idnode时,直接回车即可
输入账号和密码
sudo su -
ifconfig  mac地址--自己定义
ip add add 10.1.0.1/24 dev eth0
原始没有ip分配和网关功能,很底层,自己手动添加
ifconfig  显示ip添加成功

命令行界面
qemu-kvm -name c2 -m 100m -smp 2 -drive file=/data/os/c2.img,if=virtio,media=disk -vnc :1 --daemonize -net nic,model=virtio,macaddr=52:54:00:00:00:02 -net tap,ifname=fgq1,script=/etc/qemu-ifup
ss -ntl  5902端口
ps aux  显示进程运行
brctl show;  ifconfig -a
图形界面
vncviewer :1 &
输入账号和密码
sudo su -
ifconfig  mac地址--自己定义
ip add add 10.1.0.3/24 dev eth0
ifconfig
c2:ping 10.1.0.1
c1:ping 10.1.0.3  先不断开,ping不通

命令行界面
ifconfig vnet0 10.1.0.254/24
tcpdump -i fgq0 -nn icmp  可以ping通
tcpdump -i fgq1 -nn icmp
tcpdump -i vnet0 -nn icmp
ifconfig
c1和c2
ping 10.1.0.254
ping 192.168.1.5  没有网关,不能ping通
route add default gw 10.1.0.254
ping 192.168.1.5  ping通
c1/c2:ping 192.168.1.1  不通

命令行界面
tcpdump -i br0 -nn icmp  
sysctl -w net.ipv4.ip_forward=1
tcpdump -i br0 -nn icmp  请求包有,但是回不来
iptables -vnL
iptables -F
iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 192.168.1.5
c1/c2: ping 192.168.1.1
tcpdump -i br0 -nn icmp  
tcpdump -i vnet0 -nn icmp

--------------------------------------------------------------
ifconfig
yum -y install virt-install
virsh net-list
virsh net-destroy default  删除默认的虚拟地址
虚拟地址需要手动指明--此处我们使用dhcp服务,自动分配ip地址
yum info dnsmasq  没有安装,则需要安装-->yum -y install dnsmasq
man dnsmasq

网络名称空间
ip netns help
ip netns add router0
ip netns list
ifconfig -a  没有显示router0,设备router0和当前宿主机的设备没有关系
ip link help
ip link add csn1 type veth peer name csn2
ifconfig -a  显示当前主机中csn1/2
ip link set dev csn2 netns router0
ifconfig -a  没有csn2--被加到router0中,不在当前主机中了
ip netns exec router0 ifconfig -a  显示csn2
现在可以把router0当做一个虚拟机使用
ip netns exec router0 ip link set dev csn2 name eth0
ip netns exec router0 ifconfig eth0 10.1.0.253/24 up
ip netns exec router0 ifconfig -a
ifconfig csn1 10.1.0.254/24 up
ifconfig -a
ping 10.1.0.253  ping通
容器级虚拟化技术

c1和c2重启--ip可以自动获取
ps aux  dnsmasq进程启动
ss -unl  67端口
c1/c2
  reboot
  输入账号和密码
  ifconfig
  route -n
  ping 192.168.1.1
  poweroff

vim /etc/qemu-ifup
  bridge=br0  把vnet0换为br0--物理桥即获取物理地址,每个虚拟机自动是桥接的
c1/c2
qemu-kvm -name c2 -m 100m -smp 2 -drive file=/data/os/c2.img,if=virtio,media=disk -vnc :1 --daemonize -net nic,model=virtio,macaddr=52:54:00:00:00:02 -net tap,ifname=fgq1,script=/etc/qemu-ifup
图形界面:vncviewer :1 &
ipconfig  物理桥地址
sudo poweroff

qemu-img -h  参考文档
snapshot

ls /etc/libvirt/
ls /etc/libvirt/qemu
less /etc/libvirt/qemu/c1.xml
virt-manager  创建虚拟机
virsh-install  创建虚拟机
virsh  命令行管理

virsh命令行
virsh
help
  域管理--管理虚拟机实例
  域监控
  监控hypervisor
  网卡接口
  管理ip地址、iptables
  管理虚拟化网络
  管理节点设置--物理节点
  快照
  存储池、卷
list  创建过的虚拟机实例  
界面不退出

yum list virt*  
yum -y install virt-install  没有安装需要安装
图形界面:virt-manager &  创建虚拟机即可  桥接模式

virsh命令行
list  新创建的虚拟机
help domain
help shutdown
help list
shutdown c1  保存文件并退出
destroy c1  不保存文件快速推出
list --all
start c1
list 

help domain
virsh console c1
输入账号和密码
ctrl+]  退出,虚拟机没有终止
virsh console c1
ctrl+]  从终端剥离出来

create=define+start  xml文件

cp /etc/libvirt/qemu/c1.xml /etc/libvirt/qemu/c3.xml
vim /etc/libvirt/qemu/c3.xml
  name--c3
  uuid--删除或更改个符号即可
  source file--c3.img  磁盘镜像文件
  macaddress--0a-->0d  更改个符号即可
virsh help create
cd /etc/libvirt/qemu/
virsh create c3.xml --console
ctrl+]  从终端剥离出来
virsh destroy c3
virsh define /etc/libvirt/qemu/c3.xml
virsh list --all
virsh start c3
virnish list
同一虚拟机启动两次,其id就不相同;
创建100个虚拟机,写一个脚本:
  读取template.xml文件
  名称、mac地址、镜像文件、生成到/etc/libvirt/qemu/路径下
  使用define创建成虚拟机
dumpxml c3  列出c3的xml文件内容
  如果模板中删除了mac、UUID,可以自动生成

创建快照  
virsh命令行
suspend c3  暂停于内存中,关机后,内容丢失
list  c3显示paused
resume c3  继续
list
help save  内存文件保存到文件中

virsh console c3
ping 192.168.1.5
ctrl+]
virsh console c3  仍然在ping
save c3 /tmp/c3.dump --running
list  没有c3,被挂起了
list --all  c3虚拟机还在,显示shut off
help restore
restore /tmp/c3.dump --running
list  c3处于running
virsh console c3  仍然在ping

help snapshot
snapshot-create c3  创建
snapshot-list c3
snapshot-info c3 --current
snapshot-info c3 --snapshotname 1527304564  显示
rm -rf /etc/libvirt/qemu/c3.xml 命令行操作
snapshot-revert c3 --snapshotname 1527304564  恢复--运行时
snapshot-delete c3 --snapshotname 1527304564  删除
snapshot-list c3

help monitor
dominfo c1
help setvcpus
setvcpus c1 2
help setmem
help setmaxmem

virsh console c1
fdisk -l
qemu-img create -f qcow2 -o size=20G,preallocation=metadata /data/os/test.qcow2  创建分区,Linux命令行操作
domblklist c1  virsh命令行
domblkinfo c1 vda
attach-disk c1 /data/os/test.qcow2 vdb  分区格式化、添加新的磁盘
domblklist c1
  或者cirros命令行:fdisk -l
没有被挂载,才可以拆除磁盘
detach-disk c1 vdb
domiflist c1

help attach-interface
attach-interface c1 bridge br0 --model virtio
ifconfig -a  cirros命令行
detach-interface c1 bridge --mac 52:54:00:15:75:06  如果网卡激活后,不能删除
ifconfig -a  

多个虚拟机--命令行操作不易管理
  使用oVirt--虚拟机管理方案
  使用openstack

3A
azure
aws
Alibaba

image.png
上一篇下一篇

猜你喜欢

热点阅读