Linux KVM构建及管理

简介:

KVM构建及管理

    虚拟化概述
        Virtualization(虚拟化)
        x个物理资源 ---->  y个逻辑资源
        实现程度:完全虚拟化
                 部分虚拟化
                 硬件辅助(CPU)虚拟化 

KVM

    打开virt-manager客户端工具
    [root@room1pc32 桌面]# virt-manager  
手动新建一台虚拟机:  
                                虚拟机名字:example

1.查看KVM节点(服务器)信息
    virsh nodeinfo
    [root@room1pc32 桌面]# virsh nodeinfo
     CPU 型号:        x86_64
     CPU:               4
     CPU 频率:        3299 MHz
     CPU socket1
     每个 socket 的内核数: 2
     每个内核的线程数: 2
     NUMA 单元:       1
     内存大小:      8048744 KiB
2.列出虚拟机
    virsh list [--all]
    [root@room1pc32 桌面]# virsh list
        Id    名称                         状态
     ----------------------------------------------------
        7     example                        running

     [root@room1pc32 桌面]# virsh list --all
        Id    名称                         状态
     ----------------------------------------------------
        7     example                        running
        -     classroom                      关闭
        -     desktop                        关闭
        -     server                         关闭
        -     win2008                        关闭
3.列出虚拟网络
    virsh net-list [--all]
4.查看指定虚拟机的信息
    virsh dominfo 虚拟机名称
    [root@room1pc32 桌面]# virsh dominfo win2008
     Id:             -
     名称:       win2008
     UUID:           3f55c551-dddc-ec8d-b082-34d17367a403
     OS 类型:    hvm
     状态:       关闭
     CPU:          2
     最大内存: 2097152 KiB
     使用的内存: 0 KiB
     持久:       是
     自动启动: 禁用
     管理的保存: 否
     安全性模式: selinux
     安全性 DOI: 0
5.运行|重启|关闭指定的虚拟机器
    virsh start|reboot|shutdown 虚拟机名
    [root@room1pc32 桌面]# virsh start win2008
     域 win2008 已开始
    [root@room1pc32 桌面]# virsh shutdown win2008
     域 win2008 被关闭
6.强行关闭指定的虚拟机
    virsh destroy 虚拟机名称
    [root@room1pc32 桌面]# virsh destroy win2008
     域 win2008 被删除
7.将指定的虚拟机设置为开机自动运行
    virsh autostart [--disable] 虚拟机名称
    [root@room1pc32 桌面]# virsh autostart win2008
     域 win2008标记为自动开始
    [root@room1pc32 桌面]# virsh autostart --disable win2008
     域 win2008取消标记为自动开始

在Linux 中KVM 虚拟机组成

xml配置文件(虚拟机描述文件):定义虚拟机的名称,UUID,CPU,内存,虚拟磁盘,网卡等各种参数设置
    /etc/libvirt/qemu/*.xml
磁盘镜像文件:保存虚拟机的操作系统及文档数据,镜像路径取决于xml配置文件中的定义
    /var/lib/libvirt/images/
        用一个大的文件充当
    [root@room1pc32 桌面]# du -sh /var/lib/libvirt/images/    #统计文件目录大小
     51G    /var/lib/libvirt/images/
细节: 模版虚拟机example,删除Channel的设备

通过example虚拟机,生成新的虚拟机
    1.关闭example虚拟机
        [root@room1pc32 桌面]# virsh destroy example
         域 example 被删除
    2.通过example虚拟机,磁盘文件复制一份
        [root@room1pc32 桌面]# cd /var/lib/libvirt/images/
        [root@room1pc32 images]# qemu-img info example.qcow2 
         image: example.qcow2
         file format: qcow2
         virtual size: 9.0G (9663676416 bytes)
         disk size: 3.1G
         cluster_size: 65536
         Format specific information:
                 compat: 1.1
                lazy refcounts: true
        [root@room1pc32 images]# cp example.qcow2 test01.qcow2
    3.通过example虚拟机,复制虚拟机描述文件
        [root@room1pc32 images]# cd /etc/libvirt/qemu/
        [root@room1pc32 qemu]# cp example.xml test01.xml
            修改 虚拟机名称 UUID 虚拟机
         ...
            <name>test01</name>                         #9行
            <uuid>910dd9c6-567d-475b-812a-18f6bacfa104</uuid>       #10行
            <source file='/var/lib/libvirt/images/test01.qcow2'/>       #41行
            <mac address='12:54:00:11:2e:8b'/>                  #75行
         ....
        [root@room1pc32 qemu]# uuidgen  #随即生成UUID
         910dd9c6-567d-475b-812a-18f6bacfa104
    4.导入新虚拟机信息
        [root@room1pc32 qemu]# virsh define /etc/libvirt/qemu/test01.xml 
         定义域 test01(从 /etc/libvirt/qemu/test01.xml)
    5.验证
        [root@room1pc32 qemu]# virsh list --all

导出xml配置文件
    查看:virsh dumpxml 虚拟机名
    备份:virsh dumpxml 虚拟机名 > 虚拟机名.xml
对虚拟机的配置进行调整
    编辑:virsh edit 虚拟机名
导入虚拟机
    virsh define XML描述文件
删除虚拟机
    virsh undefine 虚拟机名

快速重建虚拟机

    COW写时复制 copy on wirte
        – 直接映射原始盘的数据内容
        – 当原始盘的旧数据有修改时,在修改之前自动将旧数据存入前端盘
        – 对前端盘的修改不回写到原始盘
    快速创建qcow前端盘
        虚拟机的磁盘镜像文件格式 QCOW2
    qemu-img 通过 -b 选项复用指定原始盘
        -qemu-img create -f qcow2 -b 原始盘 前端盘
    1.关闭虚拟机
        [root@room1pc32 /]# virsh destroy example
    2.生成前端盘
        [root@room1pc32 /]# qemu-img create -f qcow2 -b /var/lib/libvirt/images/example.qcow2 /var/lib/libvirt/images/test02.qcow2 
         Formatting '/var/lib/libvirt/images/test02.qcow2', fmt=qcow2 size=9663676416 backing_file='/var/lib/libvirt/images/example.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off 
    3.生成新的虚拟机
        [root@room1pc32 /]# virsh edit example
            编辑了域 test02 XML 配置。
    4.导入新虚拟机信息
        [root@room1pc32 /]# cd /etc/libvirt/qemu
        [root@room1pc32 qemu]# virsh define test02.xml
         定义域 test02(从 test02.xml)
    5.验证
        [root@room1pc32 qemu]# virsh list --all

通过COW写时复制原理 我写了一个实现快速生成虚拟机脚本
http://blog.51cto.com/13558754/2057094

离线访问虚拟机

    使用guestmount 工具(必须关闭SELinux)
    – 支持离线挂载 raw、qcow2 格式虚拟机磁盘
    – 可以在虚拟机关机的情况下,直接修改磁盘中的文档
    – 方便对虚拟机定制、修复、脚本维护  
    用法: 
        guestmount -a 虚拟机磁盘路径 -i /挂载点
    [root@svr7 ~]# yum provides "*guestmount*"  #查看安装guestmount包
    已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    1:libguestfs-tools-c-1.28.1-1.55.el7.x86_64 : System administration tools for
                                                                                : virtual machines
    源    :dvd
    匹配来源:
    文件名    :/usr/bin/guestmount
    文件名    :/usr/share/man/man1/guestmount.1.gz
    [root@room1pc32 ~]# yum -y install libguestfs-tools
    [root@room1pc32 桌面]# mkdir /opt/mnt
    [root@room1pc32 桌面]# guestmount -a /var/lib/libvirt/images/rh7_node1.img -i /opt/mnt/
    [root@room1pc32 桌面]# ls /opt/mnt
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var









本文转自 Xuenqlve 51CTO博客,原文链接:http://blog.51cto.com/13558754/2057088,如需转载请自行联系原作者
目录
相关文章
|
2天前
|
Linux Shell C语言
Linux:自动化构建 - make
Linux:自动化构建 - make
10 1
|
2天前
|
存储 Ubuntu Linux
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
Xenomai是一个实时性解决方案,通过在Linux上添加实时内核Cobalt来增强实时性能。它有三个主要部分:libcobalt(用户空间实时库)、Cobalt(内核空间实时内核)和硬件架构特定层(ipipe-core或dovetail)。ipipe-core适用于Linux 5.4以下版本,而dovetail用于5.4及以上版本。本文介绍了在X86 Ubuntu环境下,如何编译Xenomai内核,搭建应用环境,包括配置、编译、安装和实时性测试。对于其他硬件架构,如ARM和ARM64,步骤类似。文章还提到了Xenomai与Linux内核版本的兼容性和实时性测试结果。
11 0
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
|
3天前
|
安全 Shell Linux
Linux 用户和用户组管理
Linux 用户和用户组管理
|
4天前
|
安全 Python Linux
Kali Linux下Volatility2.6常见问题疑难杂症-内存取证信息安全管理与评估
Kali Linux下Volatility2.6常见问题疑难杂症-内存取证信息安全管理与评估
Kali Linux下Volatility2.6常见问题疑难杂症-内存取证信息安全管理与评估
|
5天前
|
缓存 运维 算法
深入理解Linux内核的虚拟内存管理
【5月更文挑战第6天】 在现代操作系统中,尤其是类Unix系统如Linux中,虚拟内存管理是一项核心功能,它不仅支持了多任务环境,还提供了内存保护和抽象。本文将深入探讨Linux操作系统的虚拟内存子系统,包括分页机制、虚拟地址空间布局、页面置换算法以及内存分配策略。通过对这些概念的剖析,我们旨在为读者揭示Linux如何有效地管理和优化物理内存资源,并确保系统的稳定运行与高效性能。
|
5天前
|
分布式计算 大数据 Hadoop
【经验分享】用Linux脚本管理虚拟机下的大数据服务
【经验分享】用Linux脚本管理虚拟机下的大数据服务
15 1
|
11天前
|
存储 Linux 文件存储
Linux使用Docker部署Traefik容器并实现远程访问管理界面-1
Linux使用Docker部署Traefik容器并实现远程访问管理界面
|
11天前
|
Prometheus 监控 Cloud Native
构建高效可靠的Linux服务器监控体系
【4月更文挑战第30天】 在维护企业级Linux服务器的稳定性和性能方面,一个周全的监控体系是至关重要的。本文将探讨如何利用开源工具和实践构建一个高效、灵活且用户友好的监控系统。我们将重点讨论核心组件的选择、配置、报警机制以及数据分析方法,旨在帮助读者打造一个能够实时响应并预防潜在问题的监控环境。
|
11天前
|
存储 固态存储 Linux
|
11天前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。