虚拟化技术

作者: Miracle001 | 来源:发表于2018-05-26 11:58 被阅读0次
    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

    相关文章

      网友评论

        本文标题:虚拟化技术

        本文链接:https://www.haomeiwen.com/subject/cherjftx.html