- 应该给 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/ - 如何限制 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/ - 如何在 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/ - 如何在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/ - 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 条评论。