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

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

  • 相关阅读:
    泛微云桥e-Bridge 目录遍历,任意文件读取
    (CVE-2020-8209)XenMobile-控制台存在任意文件读取漏洞
    selenium 使用初
    将HTML文件转换为MD文件
    Python对word文档进行操作
    使用java安装jar包出错,提示不是有效的JDK java主目录
    Windows server 2012安装VM tools异常解决办法
    ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则
    iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令
    使用w uptime vmstat top sar nload 等命令查看系统负载
  • 原文地址:https://www.cnblogs.com/Hydraxx/p/7157167.html
Copyright © 2011-2022 走看看