虚拟化技术
本文最后更新于0 天前,其中的信息可能已经过时,如有错误请发送邮件到2639131093@qq.com

这一章内容,是我看书之后的总结,也就是为了博主自己看的,也算是自己的心得吧,真不知道怎么学这个,网上教程也没有,就算有,太杂乱了= =

虚拟化

定义

虚拟化是一种将物理资源(如计算机硬件、存储设备、网络资源等)抽象为逻辑资源的技术手段;也可以理解为将计算单元在虚拟而不是真实的环境中运行,是一个为了简化管理,优化资源的解决方案。可以提高资源利用率、增强系统的灵活性和可扩展性、提供隔离和安全保障,为现代信息技术的发展提供了重要的支持

分类

桌面虚拟化,应用虚拟化,服务器虚拟化,网络虚拟化

三种网络模式

桥接模式

桥接模式就是将主机网卡和虚拟机的虚拟网卡,利用虚拟桥接进行通信。

两者能够相互ping通,理论上能够ping外网

能够ping外网需要配置虚拟机和主机在同一网段,dns,网关一致

学校内网好像不行,和老师讨论了下,应该是用户权限,或者是学校网络做了相关权限的控制

nat模式

nat模式,是主机网卡直接与虚拟nat设备相连,nat直接使用主机网卡分配的ip,能够ping通外网,两者能够相互ping通。

理论上nat模式下,nat网络能够ping通桥接,仅主机模式网络,但是反过来不行。因为在nat模式下,可以将主机网卡看作一台路由器,这台路由器为nat虚拟机提供网络转换服务,使得nat网络能和主机ping通,能够连接外网,当需要连接桥接,仅主机ip的时候,会转换至相应模式ip,所以nat模式能够ping仅主机,桥接模式ip。反过来,由于仅主机,桥接模式的原理,无法转换网络ip,所以无法ping至nat网络,仅主机,桥接之间也无法互相ping通。

手机热点的原理与之类似,当你手机开启热点的时候,你的手机就类似一个路由器,具有网络转换功能,其实每个人的手机都有属于自己的ip地址,当你连接热点的时候,手机路由器将你的私有ip转换至能够连接外部网络的ip。

仅主机模式

仅主机模式下,虚拟机只能与主机进行通信,不能直接访问外部网络。虚拟机和主机之间形成一个封闭的网络环境

所以仅主机最好理解,只能和处于主机网段下的ip互ping

kvm虚拟化技术

kvm

基本概念

KVM的全称是kernel-Based Virtual Machine ,KVM是基于linux内核实现的

KVM的核心模块——KVM.Ko,只用于管理虚拟CPU和内存

I/O的虚拟化(如存储和网络设备),由llinux内核和Qemu来实现

KVM框架

KVM核心模块:包括KVM虚拟化核心模块KVM.Ko,硬件相关的有KVM.intel与KVM_AMD模块

简而言之kvm负责提供对CPU,内存的虚拟化

Qemu设备模拟:Qemu是用户态工具,可以为客户机提供设备模拟的功能,包括BIOS,数据总线,磁盘,网卡,显卡,声卡,键盘,鼠标等

简而言之Qemu负责除CPU和内存外的其他设备的虚拟化以及各种虚拟化设备的创建与调用

kvm安装

关闭firewalld,关闭selinux,然后重启

建立挂载目录kvm,挂载本地yum源,配置本地yum源,清缓存,建立缓存

安装libvirt,qemu-kvm openssl

开启libvirtd服务

systemctl start libvirtd
systemctl enable libvirtd

列出当前虚拟机列表状态

virsh -c qemu:///system list

查看virsh版本

virsh -version

配置kvm虚拟机nat网络

配置kvm,cirros源iso,nat模式

上传iso镜像源到虚拟机中

上传cirros源到虚拟机/root下,作为启动源

添加kvm环境变量

创建nat脚本

#!/bin/bash
# qemu-ifup-nat script for QEMU/KVM with NAT netowrk mode

# set your bridge name
BRIDGE=virbr0
# Network information
NETWORK=192.168.122.0
NETMASK=255.255.255.0
# GATEWAY for internal guests is the bridge in host
GATEWAY=192.168.122.1
DHCPRANGE=192.168.122.2,192.168.122.254

# Optionally parameters to enable PXE support
TFTPROOT=
BOOTP=

function check_bridge() 
{
    if brctl show | grep "^$BRIDGE" &> /dev/null; then
        return 1
    else
        return 0
    fi
}

function create_bridge() 
{
        brctl addbr "$BRIDGE"
        brctl stp "$BRIDGE" on
        brctl setfd "$BRIDGE" 0
        ifconfig "$BRIDGE" "$GATEWAY" netmask "$NETMASK" up
}

function enable_ip_forward() 
{
    echo 1 > /proc/sys/net/ipv4/ip_forward
}

function add_filter_rules() 
{
    iptables -t nat -A POSTROUTING -s "$NETWORK"/"$NETMASK" \
        ! -d "$NETWORK"/"$NETMASK" -j MASQUERADE
}

function start_dnsmasq() 
{
    # don't run dnsmasq repeatedly
    ps -ef | grep "dnsmasq" | grep -v "grep" &> /dev/null
    if [ $? -eq 0 ]; then
        echo "Warning:dnsmasq is already running. No need to run it again."
        return 1
    fi

    dnsmasq \
        --strict-order \
        --except-interface=lo \
        --interface=$BRIDGE \
        --listen-address=$GATEWAY \
        --bind-interfaces \
        --dhcp-range=$DHCPRANGE \
        --conf-file="" \
        --pid-file=/var/run/qemu-dnsmasq-$BRIDGE.pid \
        --dhcp-leasefile=/var/run/qemu-dnsmasq-$BRIDGE.leases \
        --dhcp-no-override \
        ${TFTPROOT:+"--enable-tftp"} \
        ${TFTPROOT:+"--tftp-root=$TFTPROOT"} \
        ${BOOTP:+"--dhcp-boot=$BOOTP"}
}

function setup_bridge_nat()
{
    check_bridge "$BRIDGE"
    if [ $? -eq 0 ]; then
        create_bridge
    fi
    enable_ip_forward
    add_filter_rules "$BRIDGE"
    start_dnsmasq "$BRIDGE"
}

# need to check $1 arg before setup
if [ -n "$1" ]; then
    setup_bridge_nat
    ifconfig "$1" 0.0.0.0 up
    brctl addif "$BRIDGE" "$1"
    exit 0
else
    echo "Error: no interface specified."
    exit 1
fi

添加权限

运行脚本

qemu-kvm -m 1024 -drive file=cirros-0.6.1-x86_64-disk.img,if=virtio -net nic,model=virtio -net tap,script=/etc/qemu-ifup-NAT -nographic -vnc :1

查看ip

查看kvm虚拟机网络

配置kvm虚拟机桥接网络

上传 iso 镜像源到虚拟机中

添加 kvm 环境变量

创建 桥接 脚本

#!/bin/bash
switch=br0
if [ -n "$1" ]; then
    ifconfig $1 up
    sleep 1
    brctl addif $switch $1
    exit 0
else
    echo 'error'
    exit 1
fi

添加权限

创建bridge

创建桥接,使网卡br0绑定网卡ens33

编辑ens33

编辑br0

运行脚本

查看ip ping外网

查看网卡桥接

kvm中的openstack

使用centos 7 dvd 2009

chinaskills _cloud_iaas_v2.0.3.iso

就是脚本搭建openstack基础平台

网络配置

节点网络
controller192.32.62.100
compute192.32.62.101
使用nat

controller节点网络

compute节点网络

uuid不能一致,没有配dns,ping不了外网正常

创建分区

在compute节点下

首先添加一块硬盘,书上给的5G

依次输入:

parted /dev/sdb

mklabel gpt

mkpart cinder 0G 1.5G

mkpart swift 1.5G 3G

p

yum源配置

controller节点

[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas-repo
gpgcheck=0
enabled=1
~              

compute节点

镜像挂载,只需在controller,将chinaskill_cloud_iaas_2.0.3iso文件上传

如果没有使用CentOS-7-X86_64-DVD-1804.iso镜像也需要上传,若是该镜像直接挂载media

首先挂载CentOS-7-X86_64-DVD-1804.iso,这里显示以磁盘为引导盘方式

mount /dev/sr0 /mnt/ 将sr0 内 的内容挂载到mnt下

cp -rvf /mnt/* /opt/ 递归复制mnt下的所有内容到opt下

复制完了后取消挂载

mount -o loop chinaskills_cloud_iaas_v2.0.3.iso /mnt/ 以loop方式挂载到mnt下

递归复制

查看iso源,取消挂载

ftp服务器搭建

使用共享服务器共享源文件,减少内存消耗

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇