Xen常见问题整理

  1. 应该给 Xen Dom0 和 DomU 配置多大内存?
    Xen Dom0 需要多大内存来支持各个 DomU 的正常运行要看具体情况,没有一个 magic formula (神奇公式)可以参考;而 Xen DomU 需要多大内存能正常运行则主要取决于运行在 DomU 上的 Guest OS 及应用的需求。DomU给 DomU 安排内存较简单,主要看什么样的 Guest 操作系统以及上面跑什么样的应用,复杂的图形桌面系统、还是简单的 Web 服务器,这里有一些操作系统厂商提供的推荐配置:运行 CentOS 5.3 需要的内存要多一些,不用 GUI,最小安装,完全当作服务器使用,RedHat 推荐最小内存是 256MB;VPSee 推荐最小建议 128MB,我试过 64MB 虽然可以运行,但是明显感到慢,使用 yum 升级就能感觉到,就不用提 mysql/php/nginx 了,就算能运行起来也没多大实际意义。Dom0为 Dom0 配置内存要稍微复杂一些,配置多了 DomU 可使用的内存就少了,配置少了就会担心 Dom0 不够用。有效限制 Dom0 的内存大小还有助于安全。假设 Dom0 本身不做任何其他的应用(当然也不包括 GUI)。如何分配内存让 Dom0 的内存最小而且又能最有效的管理那些 DomU 呢? Running Xen: A Hands-on Guide to the Art of Virtualization 这本书介绍了一些有用的经验,给 Dom0 分配多大内存没有一般公式可循,只能提供一些经验参考:1、首先看 Dom0 上运行的 OS 对内存的需求怎么样,比如:Dom0 上如果跑的是 CentOS,这样 Dom0 通常最低需要 128MB,如果是 Debian 可能最低需要 64MB;
    2、再看看需要一些什么样的服务,比如可能会在 Dom0 上运行 DNS/DHCP/SSH 之类的服务来支持 DomU;
    3、可能需要在 Dom0 上做一些日常维护,比如:备份、管理 DomU、升级、运行一些 shell script、检查日志等,这会需要一些内存运行;
    4、DomU 与外界网络通信需要与 Xen 虚拟出来的网卡打交道,比如:bridge,routing,firewall 什么的,Dom0 要管理这些需要消耗一些内存;
    5、为了保障安全,最好最小化 Dom0 的功能,最小化安装,只启动必须的服务,让 Dom0 只负责管理 DomU,最小化的策略还可以增加整个服务器的安全性。
    举个实例,对于一个 2G 的双核机器来说,如果 Dom0 只是用来管理 DomU,给 Dom0 配置 128-256MB的内存就可以了,剩下的内存可以分出10-15个 128MB 的 DomU.更多内容请参考:
    应该给 Xen Dom0 和 DomU 配置多大内存?:http://www.vpsee.com/2009/09/how-to-decide-xen-dom0-and-domu-memory-size/
  2. 如何限制 Xen Dom0 的内存?
    在 Xen 内核启动的时候加上 dom0_mem=512M 参数限制,这样 dom0 最多只能使用 512MB 的内存。当然可以根据自己情况来决定给 dom0 分配多少内存,如果不确定的话,请看上文第一点可能会有帮助。

    # vi /etc/grub.conf
    default=0
    timeout=2
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18-164.11.1.el5xen)
            root (hd0,0)
            kernel /xen.gz-2.6.18-164.11.1.el5 dom0_mem=512M
            module /vmlinuz-2.6.18-164.11.1.el5xen ro root=LABEL=/
            module /initrd-2.6.18-164.11.1.el5xen.img

    更详细内容请参考:
    限制 Xen Dom0 的内存:http://www.vpsee.com/2010/01/limit-xen-dom0-memory/

  3. 如何在 Xen dom0 下判断 domU 的硬盘使用率?
    在 Xen 环境下我们可以很容易在 dom0 上通过 xm top 命令得到 domU 的当前运行状态信息,比如 domU 的 CPU 使用率,占用内存,IO 读写,网络等,但是无法知晓 domU 硬盘的使用情况,用了多少 inode、多少空间,还剩多少,是否快爆满、是否应该通知客户升级 Xen 硬盘等。这时候需要一种办法能得到 domU 上的硬盘信息,不一定要特别准确,只要不太离谱就行。我们使用 dumpe2fs 这个工具来打印客户的硬盘使用率,需要注意的是这个工具只针对 ext2/ext3/ext4 文件系统格式有效,也就是说只能用在那些使用 ext2/3/4 文件系统的 domU 中。如果 Xen domU 使用的是文件格式的镜像:

    # dumpe2fs -h /var/vps/images/vpsee.img
    dumpe2fs 1.39 (29-May-2006)
    Filesystem volume name:   
    Last mounted on:          
    Filesystem UUID:          e1f1f647-2098-4cfa-a1a3-9a44d4f93348
    Filesystem magic number:  0xEF53
    Filesystem revision #:    1 (dynamic)
    Filesystem features:      has_journal resize_inode dir_index filetype needs_recovery sparse_super large_file
    Default mount options:    (none)
    Filesystem state:         clean
    Errors behavior:          Continue
    Filesystem OS type:       Linux
    Inode count:              2567264
    Block count:              5120256
    Reserved block count:     256012
    Free blocks:              2674639
    Free inodes:              1018476
    First block:              0
    Block size:               4096
    Fragment size:            4096
    Reserved GDT blocks:      621
    Blocks per group:         32768
    Fragments per group:      32768
    Inodes per group:         16352
    Inode blocks per group:   511
    Filesystem created:       Sat Nov  7 06:25:55 2009
    Last mount time:          Sat Sep  8 13:37:54 2012
    Last write time:          Sat Sep  8 13:37:54 2012
    Mount count:              3
    Maximum mount count:      21
    Last checked:             Fri Mar 23 12:34:20 2012
    Check interval:           15552000 (6 months)
    Next check after:         Wed Sep 19 12:34:20 2012
    Reserved blocks uid:      0 (user root)
    Reserved blocks gid:      0 (group root)
    First inode:              11
    Inode size:		  128
    Journal inode:            8
    First orphan inode:       1242758
    Default directory hash:   tea
    Directory Hash Seed:      a62d3cd5-9789-49bf-86c7-efee3d0286d4
    Journal backup:           inode blocks
    Journal size:             128M

    如果 Xen domU 使用的是 LVM 格式的镜像:

    # dumpe2fs -h /dev/vol-vps/vpsee_img

    从上面的 Inode count, Block count, Free blocks, Free inodes, Block size 等就可以判断出硬盘的使用率情况。

    更详细内容请参考:
    如何在 Xen dom0 下判断 domU 的硬盘使用率?:http://www.vpsee.com/2013/03/finding-domu-disk-usage-from-dom0-in-xen/

  4. 如何在Xen 和 KVM 下如何关闭 virbr0 ?
    安装 Xen 或安装 KVM 后都会发现网络接口里多了一个叫做 virbr0 的虚拟网络接口:
    <pre>
    # ifconfig
    ...
    virbr0 Link encap:Ethernet HWaddr d2:91:97:b8:3d:fc
    inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
    UP BROADCAST MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    ...</pre>
    这是由于安装和启用了 libvirt 服务后生成的,libvirt 在服务器(host)上生成一个 virtual network switch (virbr0),host 上所有的虚拟机(guests)通过这个 virbr0 连起来。默认情况下 virbr0 使用的是 NAT 模式(采用 IP Masquerade),所以这种情况下 guest 通过 host 才能访问外部。virtual network switch (virbr0)大多数时候我们虚拟机使用的是 bridge(网桥)直接连到局域网里,所以这个 virbr0 不是必须的(注:不要搞混淆了,bridge 和这里的 virbr0 bridge 是互不相干的)。如何关掉这个 virbr0 呢?先 net-destroy 然后 net-undefine,最后别忘了重启 libvirtd 让设置生效:
    <pre>
    # virsh net-list
    Name State Autostart
    -----------------------------------------
    default active yes

    # virsh net-destroy default
    Network default destroyed

    # virsh net-undefine default
    Network default has been undefined

    # service libvirtd restart
    Stopping libvirtd daemon: [ OK ]
    Starting libvirtd daemon: [ OK ]
    </pre>

    更详细内容请参考:
    Xen 和 KVM 下如何关闭 virbr0:http://www.vpsee.com/2012/09/howto-disable-virbr0/

  5. Xen Domain 0 回收内存方法
    xm mem-set <Domain> <Mem>
    这个命令可以收回内存。 Domain-0 后面跟一个比你实际内存大的值 如我现在6000M 我用
    xm mem-set Domain-0 6000M 或者
    xm mem-set Domain-0 10000000000M
    他都会把内存全部收回来.

    更详细内容请参考:
    Xen Domain 0 回收内存方法:http://hily.me/blog/2010/01/xen-domain-0-memory-collect/

发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据