设为首页 收藏本站
查看: 1845|回复: 1

[经验分享] kvm.huge页、常用命令和桥接设置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-29 08:43:31 | 显示全部楼层 |阅读模式
1.设置huge页
    (1)查看默认页大小:getconf PAGESIZE
    (2)挂载hugetlbfs文件系统:mount -t hugetlbfs hugetlbfs /dev/hugepages
    (3)设置huge页大小:sysctl vm.nr_hugepages=512
    (4)查看是否成功:cat /proc/meminfo|grep HugePages

2.qemu-kvm命令
    -hda file:将file镜像作为客户机第一个IDE设备,客户机表现为/dev/hda设备或/dev/sda
    -hdb file:同上,第二个IDE设备
    -fda file:第一个软盘设备,表现为/dev/fd0
    -cdrom file:cdrom设备,客户机表现为/dev/cdrom设备,不能与-hdc同时使用,因为-cdrom就是客户机中第三个IDE设备
    -mtdblock file:使用file文件作为客户机自带的一个flash存储器
    -sd file:file作为客户机sD卡
    -pflash file:file作为客户机并行flash存储器
    -boot [order=drivers][,once=drivers][,menu=on|off][,splash=splashfile][,splash-time=sp-time]
    order表示设置启动顺序,drivers的值可以是a、b、c、n
        a:第一个软驱
        b:第二个软驱
        c:第一个硬盘
        d:第一个cdrom驱动器
        n:网络设备
    once表示设置第一次启动的启动顺序,在系统重启后该设置无效
    menu=on|off:设置交互启动菜单选项,前提是使用的客户机支持bios
    splash和splash-time都是在menu=on才有效,将splash的图片作为logo传递给bios来显示,sp-time是显示splash图片的时间单位是ms

   
     -driver option[,option[,option[,...]]]:为客户机定义一个新的驱动器,选项如下:
        file=FILE:使用file文件作为镜像文件加载到客户机的驱动器中
        if=INTERFACE:指定驱动器接口类型,可用的有:ide,scsi,sd,mtd,floopy,pflash,virtio等
        bus=BUS NUM,unit=UNIT NUM:设置驱动器在客户机中的总线编号和单元编号
        index=INDEX NUM:设置在同一种接口的驱动器中的索引编号
        media=disk|cdrom:设置驱动器中媒介的类型,其值为“disk”或“cdrom”
        snapshot=on|off:是否启用镜像功能,启用时,qemu不会将磁盘数据的更改写回镜像文件中,而是写到临时文件,也可以在qemu         monitor中使用commit命令强制将磁盘数据的更改保存回镜像文件中
        cache=writethrough|writeback|(none|off)
            writethrough:默认值,即直写模式,它是在调用write写入数据的同时将数据写入磁盘缓存和后端块设备中,优点:操作简单,缺点:写入数据速度较慢
            writeback:回写模式,将数据写入到磁盘缓存中即返回,只有数据被换出缓存的时候才写入到后端块设备中,优点:写入速度快,缺点:可能造成数据丢失
            (none|off):设置none或者off表示不写入缓存,直接写入到块设备中,优点是数据安全,缺点:速度太慢
        aio=threads|native:默认threads,即让一个线程池去处理异步io;而native只适用于cache=none的情况,就是使用linux原生的aio
        format=FORMAT:使用的磁盘格式,默认qemu是自动检测磁盘格式的
        serial=SERIAL NUM:分配给设备的序列号
        add=ADDR:分配给驱动器控制器的pci地址,该选项只有在使用virtio接口才适用
        id=NAME:设置该驱动器的id,这个id可以在qemu monitor中用info block命令查看



3.qemu-img命令
qemu-img command [command option]
    -h:查看qemu支持的文件格式
   
     check [-f fmt]filename: 对磁盘镜像进行一致性检查,目前仅支持qcow2、qed、vdi格式文件的检查
        -f fmt:指定格式,不指定qemu-img会自己检测

    
    create [-f fmt][-o options]filename [size]: 创建一个格式为fmt,大小为size,文件名为filename的镜像文件
        -o
            backing_file=FILENAME:如果这个选项被指定,那么这个选项创建的镜像文件仅记录与后端镜像文件(即backing_file指定的文件)的差异部分,而后端镜像文件不会被修改,除非在qemu monitor中使用commit 或者使用qemu-img commit 命令手动提交
            ?:查询某种格式文件支持哪些选项
            size:指定镜像文件的大小,默认单位bytes,也可以支持K、M、G、T即KB、MB、GB、TB大小

   
     commit [-f fmt] filename:提交filename文件中的更改到后端支持镜像文件(即backing_file指定的文件)中


    convert [-c] [-p] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-s snapshot_id_or_name] [-l         snapshot_param] [-S sparse_size] filename [filename2 [...]] output_filename: 将fmt格式的filename镜像文件根据option选项转化为格式为output_fmt的名为output_filename的镜像文件,默认转为raw文件格式
        -c:对输出的镜像文件进行压缩

    info [-f fmt] [--output=ofmt] [--backing-chain] filename: 显示磁盘镜像文件filename的信息



    snapshot [--object objectdef] [--image-opts] [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename :为镜像文件创建、应用或者删除一个快照
        -a:applies 让某个镜像文件使用某个快照
        -c:create 创建快照
        -d:delete 删除快照
        -l:list 显示所有快照



    rebase [--object objectdef] [--image-opts] [-q] [-f fmt] [-t cache] [-T src_cache] [-p] [-u] -b backing_file [-F backing_fmt] filename: 改变镜像文件的后端镜像文件(即backing_file),只有qcow2和qed格式支持rebase命令,后端镜像文件的格式也被转化为“-F backing_fmt”指定的格式,有两种模式:
        安全模式:默认模式,qemu-img会根据比较后来的后端镜像与现在的后端镜像文件的不同进行合理的处理
         非安全模式:通过-u来指定,这种模式主要应用于将后端镜像重命令或移动位置后对前端镜像文件的修复处理,由用户去保证后端镜像的一致性

    resize filename [+ | -]size:改变镜像文件大小,+-表示增量,使用这个命令时注意压缩不能小于现有的,否则数据丢失



4.qemu支持的镜像文件格式(qemu-img -h)可以查看
    Supported formats: blkdebug blkreplay blkverify bochs cloop dmg file ftp ftps host_cdrom host_device http https luks nbd null-aio null-co parallels qcow qcow2 qed quorum raw replication sheepdog vdi vhdx vmdk vpc vvfat


常见的如下:
    raw:原始的磁盘镜像格式,易移植,功能简单
    稀疏文件(sparse file):只分配大小,并不实际占用空间,所以磁盘满的时候会出错
    dd命令创建的镜像文件:预分配空间,给每个空间都填0,写入较快
    host_device:在需要将镜像转化到不支持空洞的磁盘设备时需要使用这种格式来代替raw
    qcow2:qemu目前推荐的镜像格式,也是功能最多的格式,在qemu-img支持的选项如下:
    backing_file:指定后端镜像文件
    backing_fmt:指定后端镜像文件格式
    cluster_size:设置簇的大小,取值在[512B,2MB]之间,默认为64kB,小簇节约空间,大簇性能好,按需取舍
    preallocation off|metadata:预分配空间,off表示不分配,metadata表示只分配元数据部分,有的版本还支持full,全分配
    encrytion:当它等于on时,镜像被加密。加密后再使用镜像启动客户机时需要在qemu monitor中输入cont或c来唤醒客户机输入密码后继续执行
例子:
    qemu-img convert  -o encryption -O qcow2 rhel6u5.img rhel6u5.qcow2
wKioL1g7_GnxSAQOAAAc6UEtXtE771.png-wh_500x0-wm_3-wmp_4-s_3255146348.jpg
QQ截图20161129084318.png
    qcow:比较旧的镜像格式,,目前很少用,支持backing_file和encryption两个选项
    cow:用户模式的Copy-On-Write的镜像文件格式
    vdi:兼容virtualBox的镜像文件格式
    vmdk:兼容vmware
    vpc:兼容Virtual PC



5.客户机存储方式
    本地镜像文件
    物理磁盘或磁盘分区
    lvm逻辑分区
    nfs
    iscsi
    本地或光纤链接的lun
    gfs2
    各种存储方式各有千秋,其中nfs是使用非常广泛的分布式文件系统,如果nfs服务器向客户机开放了读写权限,那么可以直接挂载nfs,对镜像文件进行读写,如果nfs服务器没有开放权限,那么,我们可以把nfs的镜像文件作为后端镜像文件,本地再为这个后端镜像文件创建镜像文件,这样涉及到写操作直接写入到本地镜像文件,而nfs里面的文件不会被修改,这样有个好处是,nfs上面的镜像可以同时供许多客户端进行使用,每个客户端保存自己修改的那份本地镜像,这样效率大大提高而且更安全。命令如下:
    mount 192.168.2.11:/kvm   /kvm_host
    qemu-img create -f qcow2 -o backing_file=/kvm_host/rhel6u5.img,size=4G    local.img #size一般要大于等于镜像本身,否则会报错

6.qemu支持的网络模式
    基于桥接的虚拟网卡
    基于nat
    qemu内置的用户模式网络
    直接分配网络设备的网络

qemu-system-x86_64  -net nic,model=?这条命令可以查看qemu支持模拟的网卡类型,默认为rtl8139,结果如下:
qemu: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio
配置命令:
    qemu-system-x86_64 -net nic[,vlan=n][,macaddr=mac][,model=type] [,name=name][,addr=addr][,vectors=v]
    -net nic:这是必须的参数,表明这是一个网卡的配置
    vlan=n:将网卡放到编号为n的vlan,默认0
    macaddr=MAC:设置网卡的MAC地址,默认根据宿主机中网卡的地址来分配
    model=type :模拟网卡类型
    name=nic name:设置网卡别名
    addr=addr:设置网卡在客户机中的pci设备地址为addr
    vectors=v:设置该网卡设备的MSI-X向量的数量为n,该选项仅对使用virtio驱动的网卡有效
如果需要向客户机提供多网卡,可以多次使用-net nic参数

桥接模式命令:
    qemu-system-x86_64 -net tap[,vlan=n][,name=name][,fd=h][,ifname=name][,script=file][,downscript=dfile][,br=bridge][,helper=helper]
该配置表示链接宿主机的tap网络接口道n好vlan中,并且使用file和dfile两个脚本在启动客户机时配置网络和在关闭客户机时取消网络配置
    tap:表明使用tap设备,类似tun,不过tap是对数据链路层的模拟,而tun是网络层的模拟
    vlan=n:设置该设备的vlan号,默认0
    name=name:设置别名
    fd=h:链接到已经打开的tap接口的文件描述符,一般不设置,因为设置后ifname,script,downscript helper 等都不可以用了
    ifname=name:设置在宿主机中添加tap虚拟设备的名称
    script=file:宿主机在启动客户机时自动执行的脚本,默认为/etc/qemu-ifup
    downscript=dfile:宿主机在客户机关闭时自动执行的脚本,默认为/etc/qemu-downscript
    helper=helper:辅助程序,包括建立一个tap虚拟设备,默认为/usr/local/libexec/qemu-bridge-helper
例子:
    (1)安装提供brctl和tunctl命令的rpm包
        yum install brige-utils tunctl -y
    (2)查看tun模块是否加载,没有则modprobe tun
        lsmod|grep tun
        modprobe tun
    (3)查看/dev/net/tun的权限,需要让当前用户拥有可读写的权限
        ls -l /dev/net/tun
    (4)建立一个bridge,并将其绑定到一个可以正常工作的网络接口上,同时让bridge成为连接本机与外部网络的接口
        /etc/init.d/NetworkManager stop;chkconfig NetworkManager off#关闭NetworkManager,避免它的干扰
        brctl addbr br0  #添加bridge 名为br0
        brctl addif br0 em1 #将br0与em1绑定起来
        brctl stp br0 on #将br0设置为启用stp协议
        ifconfig em1 0#将em1的ip设置为0
        dhclient br0#将br0的网络配置好,也可以使用ifconfig br0 192.168.2.188 netmask 255.255.255.0 up ;route add default gw         192.168.2.1 br0
    (5)准备qemu-ifup和qemu-ifdown脚本,默认都放在/etc下
    qemu-ifup脚本内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
#
switch=br0

if [ -n "$1" ];then
ip link set $1 up
sleep 1
brctl addif ${switch} $1
exit 0
else
echo "Error,need nic"
exit 1
fi



    qemu-ifdown脚本这个脚本不是必须的,因为qemu-kvm自带的工具会解除tap设备的bridge绑定,也会自动删除tap设备,这里提供脚本供查看过程
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#
switch=br0
if [ -n "$1" ];then
tunctl -d $1
brctl delif ${switch} $1
ip link set $1 down
exit 0
else
echo "error,need nic"
exit 1
fi



    (6)启动客户机
        qemu-system-x86_64 -m 4096 -smp 6 -net nic -net tap,ifname=tap1,script=/etc/qemu-ifup redhat6.qcow2 -daemonize
    (7)查看是否桥接成功
    在客户机:
        可以利用ip a ;ifconfig;ping;route等命令查看是否能自动获取ip并正常上网
    在宿主机:
        利用brctl show 命令可以查看tap1接口的生成和删除
        或ls /sys/devices/virtual/net 查看相关信息




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306927-1-1.html 上篇帖子: kvm cpu的亲和性绑定配置 下篇帖子: KVM之网桥创建(ubuntu 环境)
累计签到:26 天
连续签到:1 天
发表于 2017-1-4 16:54:16 | 显示全部楼层
写的不错,学习了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表