zoukankan      html  css  js  c++  java
  • linux kvm虚拟机快速构建及磁盘类型

    KVM命令管理

    virsh命令:用来管理各虚拟机的接口命令
    查看/创建/停止/关闭。。。
    支持交互模式
    格式:
    virsh 控制指令 [虚拟机名称] [参数]

    [root@room1pc01 桌面]# virsh nodeinfo(查看虚拟机服务器的cpu信息)
    CPU 型号: x86_64
    CPU: 2
    CPU 频率: 1900 MHz
    CPU socket: 2
    每个 socket 的内核数: 1
    每个内核的线程数: 1
    NUMA 单元: 1
    内存大小: 1906912 KiB
    [root@room1pc01 桌面]# virsh list --all(列出虚拟机数量,包括关机的)
    Id 名称 状态
    ----------------------------------------------------
    1 rh6_node07 running
    2 rh6_node06 running
    - rh6_node05 关闭
    - win2008 关闭

    [root@room1pc01 桌面]# virsh dominfo rh6_node07(查看虚拟服务器里的虚拟机配置)
    Id: 1
    名称: rh6_node07
    UUID: fbf829d8-5bda-49f0-adeb-ddacac73c5ea
    OS 类型: hvm
    状态: running
    CPU: 1
    CPU 时间: 1894.7s
    最大内存: 1048576 KiB
    使用的内存: 1048576 KiB
    Persistent: yes
    自动启动: 禁用
    Managed save: no
    安全性模式: none

    ——————————————————————————————————————

    KVM软关机/重启/开机
    virsh shutdown 虚拟机名
    virsh reboot 虚拟机名
    virsh start 虚拟机名
    KVM硬关机(强制断电)
    virsh destroy 虚拟机名

    设置虚拟机开机自启
    virsh autostart 虚拟机名
    取消虚拟机开机自启
    virsh autostart --disable 虚拟机名

    ——————————————————————————————————————————————

    一台KVM虚拟机的组成
    虚拟机的配置文件:
    默认位于/etc/libvirt/qemu/虚拟机名.xml
    虚拟机的磁盘文件:
    默认位于/var/lib/libvirt/images/虚拟机名.img(或者由管理员提前准备,手动指定)

    XML描述文件介绍
    记录每个虚拟机的详细参数
    名称 UUID 内存 CPU 磁盘 。。。
    文件位置:cat /etc/libvirt/qemu/rh6_node07.xml
    <domain type='kvm'>
    <name>rh6_node07</name> (名称)
    <uuid>fbf829d8-5bda-49f0-adeb-ddacac73c5ea</uuid>(uuid值)
    <memory unit='KiB'>1048576</memory>
    <currentMemory unit='KiB'>1048576</currentMemory>(内存大小)
    <vcpu placement='static'>1</vcpu> (cpu数量)
    。。。。。。。。


    导出/提取虚拟机的配置
    virsh dumpxml 虚拟机名 > /root/new.xml
    修改导出后的配置
    vim /root/new.xml
    导入/重新定义后的配置
    virsh define /root/nwe.xml
    取消定义
    virsh undefine 虚拟机名

    练习:将虚拟机rh6_node06改为rh6_node01
    [root@room1pc01 ~]# virsh dumpxml rh6_node06 > /root/nwe.xml(导出虚拟机配置定向到/root/new.xml)
    [root@room1pc01 ~]# vim /root/nwe.xml (修改名字)
    <domain type='kvm' id='2'>
    <name>rh6_node01</name>(修改名字)
    <uuid>d2e18138-6ec6-45e2-baab-5da0dec1ee97</uuid>(修改uuid,不要相同)
    [root@room1pc01 ~]# virsh define /root/nwe.xml (导入虚拟机)

    练习:将虚拟机rh6_node06改为rh6_node02
    [root@room1pc01 ~]# virsh dumpxml rh6_node06 > /root/nwe.xml(导出虚拟机配置定向到/root/new.xml)
    [root@room1pc01 ~]# vim /root/nwe.xml (修改名字)
    <domain type='kvm' id='2'>
    <name>rh6_node02</name>(修改名字)
    <uuid>d2e18138-6ec6-45e2-baab-5da0dec1ee97</uuid>(修改uuid)
    </interface>
    <interface type='network'>
    <mac address='54:52:01:01:06:02'/>(修改mac地址)
    <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
    <driver name='qemu' type='qcow2' cache='none'/>
    <source file='/var/lib/libvirt/images/rh6_node02.img'/>(修改硬盘)
    [root@room1pc01 ~]# virsh define /root/nwe.xml (导入虚拟机)
    [root@room1pc01 images]# cd /var/lib/libvirt/images/
    [root@room1pc01 images]# ls
    rh6_node05.img rh6_node06.img rh6_node07.img
    [root@room1pc01 images]# cp rh6_node06.img rh6_node01.img &(复制被复制的虚拟机的磁盘)
    [1] 35752

    导出,修改,导入三合一操作
    [root@room1pc01 ~]# virsh edit rh6_node06
    <domain type='kvm' id='2'>
    <name>rh6_node03</name>(修改名字)
    <uuid>d2e18138-6ec8-45e2-baab-5da0dec1ee97</uuid>(修改uuid)
    </interface>
    <interface type='network'>
    <mac address='54:52:01:01:06:03'/>(修改mac地址)
    <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
    <driver name='qemu' type='qcow2' cache='none'/>
    <source file='/var/lib/libvirt/images/rh6_node03.img'/>(修改硬盘)
    [root@room1pc01 images]# cp rh6_node06.img rh6_node03.img &(复制被复制的虚拟机的磁盘)
    [1] 35752
    [root@room1pc01 ~]# ls /var/lib/libvirt/network/(虚拟系统管理器网卡配置文件)
    default.xml private1.xml private2.xml public1.xml public2.xml

    克隆虚拟机
    virt-clone -o 被克隆的虚拟机 -n 新的虚拟机名 -f 新磁盘保存路径
    [root@room1pc01 opt]# virt-clone -o rh6_node05 -n hydra -f /var/lib/libvirt/images/rh6_node03.img
    正在分配 'rh6_node03.img' | 50 GB 01:39

    ————————————————————————————————————————————————————

    虚拟机快建技术
    KVM虚拟机的镜像管理
    主要是针对虚拟机的磁盘管理
    ——————————————————+
    特点/类型 RAW QCOW2 |
    KVM默认 是 否 |
    I/O效率 高 较高 |
    占用空间 大 小 |
    压缩 不支持 支持 |
    增量备份 不支持 支持 |
    快照 不支持 支持 |
    ——————————————————+
    COW工作原理:
    copy on write,写时复制
    直接映射原始盘的数据内容,当原始盘卷有修改时,将被改动的旧数据写入增量盘
    对增量盘的修改不会写到原始盘

    使用qemu-img管理虚拟磁盘
    查看磁盘信息:qemu-img info 磁盘路径
    image: rh6_node01.img
    file format: qcow2
    virtual size: 50G (53687091200 bytes)
    disk size: 323M
    cluster_size: 65536
    backing file: /var/lib/libvirt/images/.rh6_template.img

    创建新的独立的磁盘:qemu-img create -f 磁盘类型(rw/qcw2) 磁盘路劲 磁盘大小
    [root@room1pc01 ~]# qemu-img create -f raw /var/lib/libvirt/test1.img 20G(raw类型)
    Formatting '/var/lib/libvirt/test1.img', fmt=raw size=21474836480
    [root@room1pc01 images]# qemu-img create -f qcow2 /var/lib/libvirt/images/test2.qcow2 20G(qcow2类型)
    Formatting '/var/lib/libvirt/images/test2.qcow2', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536
    创建新的独立的磁盘(增量/前段):qemu-img create -f qcow2 -b 后端盘路径 磁盘路径 大小(大小可省略)

    练习:从虚拟机rh6_node05快建新虚拟机rh6_nonde04
    准备新磁盘:
    [root@room1pc01 images]# qemu-img create -f qcow2 -b /var/lib/libvirt/images/rh6_node05.img /var/lib/libvirt/images/rh6_node03.qcow2
    Formatting '/var/lib/libvirt/images/rh6_node03.qcow2', fmt=qcow2 size=53687091200 backing_file='/var/lib/libvirt/images/rh6_node05.img' encryption=off cluster_size=65536
    准备新配置:
    [root@room1pc01 images]# virsh edit rh6_node05(导出,修改,导入三合一操作)
    <domain type='kvm'>
    <name>rh6_node03</name>(改名字)
    <uuid>e1aa2571-22c6-4804-924d-953e8fc7ad2c</uuid>(改uuid)

    <driver name='qemu' type='qcow2' cache='none'/>(改磁盘类型type=qcow2)
    <source file='/var/lib/libvirt/images/rh6_node03.qcow2'/>(磁盘路劲)

    <mac address='54:52:01:01:05:56'/>(改mac地址)

    转换磁盘格式:
    qemu-img convert -O 新的类型 被转换磁盘路径 新磁盘路径

    练习:使用旧格式磁盘的虚拟机磁盘转成新格式
    [root@room1pc01 images]# qemu-img convert -O qcow2 /var/lib/libvirt/images/rh6_node06.img /var/lib/libvirt/images/rh6_node06.qcow2
    调整新磁盘的配置(类型,路径)
    [root@room1pc01 images]# virsh edit rh6_node06
    <driver name='qemu' type='qcow2' cache='none'/>(改磁盘类型type=qcow2)
    <source file='/var/lib/libvirt/images/rh6_node06.qcow2'/>(磁盘路劲)
    根据需要,调整配置后可以把就磁盘删除
    [root@room1pc01 images]# ls
    rh6_node03.qcow2 rh6_node05.img rh6_node06.img rh6_node06.qcow2 rh6_node07.img
    [root@room1pc01 images]# rm -rf rh6_node06.img

    管理磁盘快照:(磁盘类型必须为qcow2)
    qcow2快照管理:
    为磁盘记录不同时间点的抓过太备份
    (非独立的文件)
    必要时可将虚拟机恢复到指定的快照
    基本用法:
    -c:创建快照
    -l:查看快照
    -a:恢复到指定快照
    -d:删除快照
    qemu-img snapshot -c 快照名 磁盘路径
    qemu-img snapshot -l 磁盘路径
    qemu-img snapshot -a 快照名 磁盘路径
    qemu-img snapshot -d 快照名 磁盘路径

    ————————————————————————————————————

    准备模板虚拟机
    命令行模式/安装虚拟机
    virt-install --name muban1 --vcpus 1 --raw 1024
    --disk path=/var/lib/libvirt/imagesmuban1.qcow2,
    format=qzow2 --network=private1 --pxe

    初始化设置
    预装软件处理
    软件包
    ip地址
    主机名
    网卡参数(mac地址)
    /etc/udve/rules.d/70-persistent-net.rules(清空)
    /etc/sysconfig/network-scripts-eth0
    删除HWADDR UUID

    出厂设置
    touch /.unconfigured(在/目录下创建一个文件)

    ——————————————————————————————————————
    guestmount工具
    支持离线挂载raw,qcow2格式的虚拟机磁盘
    可以在虚拟机关机的情况下。直接修改磁盘中的文档
    方便对虚拟机进行定制,修复,脚本维护

    挂载虚拟盘
    基本格式:
    guestmount -a 磁盘路径 -i /挂载点
    guestmount -a 磁盘路径 -m 虚拟机分区 /挂载点
    [root@room1pc01 ~]# yum -y install libguestfs-tools

    —————————————————————————————————————

  • 相关阅读:
    创建pdf
    IOS绘图
    IOS断点续传
    IOS程序之间的跳转
    MBProgressHUD的使用
    清除缓存的方法(计算)
    使用post请求下载数据
    NSTimer的使用
    定位功能(使用系统地图)
    fork仓库保持同步更新
  • 原文地址:https://www.cnblogs.com/Hydraxx/p/7157167.html
Copyright © 2011-2022 走看看