一幅Libvirt拓扑图

小白最近在看KVM相关的资料,发现一个拓扑图,觉得很帅,于是就用PIC工具使用代码的方式把它给绘制出来了。不过这种方式的绘图,比较耗时,这幅拓扑图小白花费了一个小时才绘制出来,如果使用图形化的工具,估计十分钟左右就搞定了,小白还是喜欢这种方式的绘图。

使用此方法绘制图形的缺点:

  1. 绘制比较复杂的图形,此种方式就更耗时了;
  2. 需要规划好各个图形元素之间的相对位置。需要使用相对位置而不是绝对位置;
  3. 不支持中文(这是比较蛋疼的。可以使用asymptote、metapost、tikz等方式代替);

废话少说,直接上代码:

.PS
h = .1
dh = .02
dw = .1
[
    Userspacetools: [
        boxht = 2.5*h; boxwid = 8*dw; boxrad = dh
        movewid = 2*dh
        A: box "virsh"; move
        B: box "virt-manager"; move
        C: box "virt-viewer"; move
        D: box "virt-install"; move
        E: box "other tools"
    ]
    Userspace: [
        boxht = 7*h; boxwid = 50*dw; boxrad = 2*dh
        AA: box
    ] with .c at Userspacetools.c + (0,h/1.8)
    F: "Userspace Management Tools" at last [].n - (0,h+2*dh)

Libvirt: box ht 4*h wid 25*dw "Libvirt" "(Libvirt API)" with .n at last [].s - (0,3*h)

Hypervisoroutline: [
    Virtualtype: [
        boxht = 2*h; boxwid = 12*dw; boxrad = dh
        movewid = 2*dh
        A: box "VMware"; move
        B: box "Xen"; move
        C: box "KVM"; move
        D: box "Hyper-V"
    ]
    Hypervisor: [
        boxht = 5*h; boxwid = 50*dw; boxrad = 2*dh
        AA: box
    ] with .c at Virtualtype.c + (0,h/1.8)
    F: "Hypervisor Layer" at last [].n - (0,h+2*dh)
] with .n at Libvirt.s - (0,3*h)

XXX: [
    VMwareoutline: [
        VMware: [
            boxht = 3.5*h; boxwid = 5*dw; boxrad = dh
            movewid = 2*dh
            VM1: box "Guest 1"; move
            VM2: box "Guest 2"
        ] with .n at Hypervisoroutline.Virtualtype.A.s - (0,3*h)
        box dashed ht last [].ht+dw wid last [].wid+dw at last []
    ] 
    
    move 5*dh
    
    Xenoutline: [
        Xen: [
             boxht = 3.5*h; boxwid = 5*dw; boxrad = dh
             movewid = 2*dh
             VM1: box "Dom0" "Guest"; move
             VM2: box "DomU" "Guest"
        ]
        box dashed ht last [].ht+dw wid last [].wid+dw at last []
    ]

    move 5*dh

    Kvmoutline: [
        Kvm: [
             boxht = 1.75*h; boxwid = 5*dw; boxrad = dh
             movewid = 2*dh
             VM1: [
                   Qemu1: box "Qemu"
                   Guest01: box "Guest 1" with .n at Qemu1.s
             ]
             
             move
             
             VM2: [
                   Qemu1: box "Qemu"
                  Guest01: box "Guest 2" with .n at Qemu1.s
             ]
        ]
        box dashed ht last [].ht+dw wid last [].wid+dw at last []
    ]
    
    move 5*dh

    Hypervoutline: [
        Hyperv: [
            boxht = 3.5*h; boxwid = 5*dw; boxrad = dh
            movewid = 2*dh
            VM1: box "Guest 1"; move
            VM2: box "Guest 2"
        ]
        box dashed ht last [].ht+dw wid last [].wid+dw at last []
    ]
] with .n at last [].s - (0,3*h)

arrow from Userspacetools.A.s to Libvirt.nw
arrow from Userspacetools.B.s to 1/2 <Libvirt.nw,Libvirt.n>
arrow from Userspacetools.C.s to Libvirt.n
arrow from Userspacetools.D.s to 1/2 <Libvirt.n,Libvirt.ne>
arrow from Userspacetools.E.s to Libvirt.ne

arrow from Libvirt.s to 3rd [].Hypervisor.n

arrow from Hypervisoroutline.Virtualtype.A.s to XXX.VMwareoutline.VMware.n
arrow from Hypervisoroutline.Virtualtype.B.s to XXX.Xenoutline.Xen.n
arrow from Hypervisoroutline.Virtualtype.C.s to XXX.Kvmoutline.Kvm.n
arrow from Hypervisoroutline.Virtualtype.D.s to XXX.Hypervoutline.Hyperv.n

]
.PE

编译后的效果图为:

时间: 2024-10-29 19:11:13

一幅Libvirt拓扑图的相关文章

八幅漫画理解使用 JSON Web Token 设计单点登录系统

原文出处: John Wu 上次在<JSON Web Token – 在Web应用间安全地传递信息>中我提到了JSON Web Token可以用来设计单点登录系统.我尝试用八幅漫画先让大家理解如何设计正常的用户认证系统,然后再延伸到单点登录系统. 如果还没有阅读<JSON Web Token – 在Web应用间安全地传递信息>,我强烈建议你花十分钟阅读它,理解JWT的生成过程和原理. 用户认证八步走 所谓用户认证(Authentication),就是让用户登录,并且在接下来的一段时

相机位姿估计3:根据两幅图像的位姿估计结果求某点的世界坐标

关键词:相机位姿估计,单目尺寸测量,环境探知 用途:基于相机的环境测量,SLAM,单目尺寸测量 文章类型:原理说明.Demo展示 @Author:VShawn @Date:2016-11-28 @Lab: [email protected] 目录 <相机位姿估计0:基本原理之如何解PNP问题> <相机位姿估计1:根据四个特征点估计相机姿态> <相机位姿估计1_1:OpenCV:solvePnP二次封装与性能测试> <相机位姿估计2:[应用]实时位姿估计与三维重建相

libvirt笔记(未完待续)

参考源地址:http://libvirt.org/formatdomain.html http://blog.csdn.net/qq250941970/article/details/6022094 libvirt是管理KVM的工具,通过libvirt可以管理配置虚拟机.而虚拟机的配置主要都是通过libvirt的xml文件来实现的,因此xml是十分重要的. Domain XML format 从官网文档中,我们可以发现xml文件具有一定的格式. 1.Element and attribute o

libvirt

http://libvirt.org/index.html libvirt supports: The KVM/QEMU Linux hypervisor The Xen hypervisor on Linux and Solaris hosts. The LXC Linux container system The OpenVZ Linux container system The User Mode Linux paravirtualized kernel The VirtualBox hy

HT For Web 拓扑图背景设置

HT For Web 的HTML5拓扑图组件graphView背景设置有多种途径可选择: divBackground:通过css设置graphView对应的div背景 Painter:通过graphView.addBottomPainter(function(g, rect){…})来绘制背景 Layer:通过设置graphView.setLayer(['…', '…', '…', …])来将graphView拆分为多个图层,并为各个图层命名,再让不同种类的node通过node.setLayer

Hadoop阅读笔记(四)——一幅图看透MapReduce机制

时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的.如果有幸能有大牛路过,请指教如何能以效率较高的方式学习Hadoop. 我已经记不清圣经<hadoop 实战2>在我手中停留了多久,但是每一页每一章的翻过去,还是在脑壳里留下了点什么. 一段时间以来,我还是通过这本书加深以及纠正了我对于MapReduce.HDFS乃至Hadoop的新的认识.本篇主要介绍MapReduce

DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”

背景: 续上篇,继续介绍如何将多幅JPG图像数据存入DCM文件.即将有损压缩数据直接写入DCM文件,存储为Multi-frame形式. 多幅JPG图像数据存入DCM文件: 为了避免引起歧义,这里着重说明一下.本博文的描述的场景是:假设我们手中有多张JPG文件,想把JPG文件写入DCM文件,即单个DCM文件包含多幅图像信息的Multi-Frame形式.该问题之前与CSDN博友y317215133y也讨论过,当时我在OFFIS论坛中找到了一个帖子直接给了y317215133y答复.今天重新梳理了一下

libvirt C-API

1,warming-up Specifying URIs to libVirt;name parameter to virConnectOpen or          virConnectOpenReadOnlyvirConnectPtr conn = virConnectOpenReadOnly ("test:///default"); /etc/libvirt/libvirt.conf uri_aliases = [    "ruiyHail=qemu+ssh://[e

C语言中将0到1000的浮点数用强制类型转换的方式生成一幅图像

搞过计算机图像的人都知道,图像中的每一个像素通常为一个整型数,它可以分成4个无符号的char类型,以表示其RGBA四个分量.一幅图像可以看做是一个二维整型数组.这里我会生成一个float数组,其数组大小为1000000,刚好1000*1000,数组内的浮点数的数值范围在0到1000.0之间,呈等差数组排列,相邻两数的差为0.001.然后将其每一个浮点数强制转化成一个整型数或三个unsigned char型,以决定像素的RGB三个通道分量,看看其生成的图像是什么样子. 前几天写了一篇文章是在C语言