2010-11-23

2010-11-23
2010年11月22日
  [b]三、Xen管理
  [/b]* xm
  Xen Domain Configuration Files
  Xen域配置文件
  Xen域的域配置文件指定管理域行为的多个参数。这些不同的配置Xen的文件放在/etc/xen目录下。以key=value格式保存着多个选项的配置文件是以python写的可执行文件,所以各选项必须是合法的python代码。/etc/xen/xend-config.sxp指定用于创建dom0的配置文件。
  如果你在创建域的时候提供绝对路径的话你可以把创建domUs的配置文件放在任何地方。/etc/xen/auto是一个特殊目录,所有放置在里面的域配置文件对应的域都会在xend监听程序启动的时候被自动启动。
  下面是一些在Xen域配置文件中要配置的常用的选项:
  * kernel:用于域的内核镜像,提供到内核镜像文件的绝对路径
  * ramdisk:指定给域的初始ramdisk。如果你的内核有用于你的根文件系统和硬盘的内置驱动,可能你不需要创建和指定ramdisk。此配置提供到initrd文件位置的完整路径
  * memory:指定分配给域的总体内存容量,以MB为单位。如果分配的内存不足将阻止域的启动。你还必须确定Xen管理的总内存--包含dom0和所有的domUs--必须少于或等于安装在你的机器上面的物理内存总量。
  * name:提供一个识别域的唯一的名称。这名称将会在你列出系统里正在运行的域的时候被显示。
  * root:指定用于域的根设备
  * disk:指定输出到域的块设备列表。它以如下格式提供:
  disk = [ "backend device", "frontend device", "mode" ]
  “backend device”指定输出到客户域的设备的格式和名称。格式可以是一个简单的文件镜像或一个实际的物理磁盘。Xen把输出到客户域的文件镜像认作是基于文件的VBD。因为这是开始Xen最简单而且快捷的方式,所以我们这章将选用此格式。
  file://path_to_the_file_image
  :文件镜像以loopback设备的形式输出。loopback设备的设置将由Xen管理。
  tap:aio:/path_to_the_file_image:文件镜像以能够被Xen的blktap驱动访问的tap设备的形式输出。在Xen文档中推荐以这种方式输出文件镜像到客户域。
  phy:device:/name_of_the_device:输出到客户域的特定物理设备。此设备可以用通常的/dev/sda1的形式或使用该设备的16进制主要/次要号码(hex major/minor number)来指定--0x301
  “frontend device”指定输出的backend device如何出现在客户域中。它可以用通常的/dev/sda1的形式或使用该设备的16进制主要/次要号码(hex major/minor number)来指定--0x301
  “mode”指定设备是以只读还是可读写的形式输出。两个合法的选项是:
  r -- read-only
  rw -- read and write
  * vif:指定域的虚拟网络接口配置。以如下的格式指定:
  vif = [ "key1 = value1", "key2 = value2" ]
  配置该指令的常用的选项是:
  bridge:指定用于此接口的网桥
  mac:指定此虚拟接口的MAC地址。如果有没有提供一个MAC地址,它将在Xen启动的时候随机配置一个MAC地址。此随机的地址是从IEEE分配给XenSource的(00-16-3E)的范围内选取的。你也可以用此指令定义一个静态的MAC地址,使你能够从DHCP服务器上分配到一个静态的IP地址。
  * on_reboot:指定域重启过程中发生的动作。重启时候的合法状态有:
  destroy:完全关闭域
  preserve:域不会被清除,可得到域的调试信息以帮助调试崩溃
  rename-restart:旧的域不被清除。替代的是它被重命名同时启动一个新的域替换旧的域
  * on_crash:指定domU崩溃后所执行的动作。此指令的合法状态与on_boot选项一样
  * vcpus:虚拟CPUs的数量
  Xen Management User Interface―xm
  xm是通过xend(Xen的监听进程)与Xen管理器通信的一个管理工具。由于它需要有使用xend和管理器之间的信道的特权,所以运行xm的命令需要有系统管理员的权限。
  执行一个xm命令将马上会返回给访问者,但是实际的操作可能还没完成,某些域的命令可能会运行相当长的一段时间才能完成。确定命令是否成功执行完毕的唯一方法就是定期打印列表并检查。
  域列表中某个域的状态栏的状态可能是下面五个中的一个:
  * r--running:当前正在使用CPU的域
  * b--blocked:中断的域。这种情况一般出现在当vcpu等待一个外部事件在该域发生。
  * p--paused:挂起的域。暂停的域仍然会消耗分配的资源(例如内存),but is not eligible for scheduling by the Xen hypervisor
  * s--shutdown:正在进行关机操作的域。
  * c-crashed:列出崩溃的域。
  通常的域列表是一个不容易被其他工具分析的表的格式,因此xm也提供了一个“-long”选项以S-Expression格式列出容易被其他工具分析的域信息。
  Time for Action―Xen Manager
  现在我们论证让xm完成一些普通任务
  1、打印当前Xen环境下正在运行的域
  xm list
  2、打印当前Xen环境中dom0的详细信息
  xm list Domain-0 --long
  3、打印当前Xen环境下关于一个域的详细信息
  xm list --long domain-name
  4、暂停当前Xen环境下正在运行的一个domU
  xm pause domain-name
  5、解除之前暂停的domU的暂时状态
  xm unpause domain-name
  6、保存当前Xen环境下面正在运行的domU的状态到指定文件,接下来状态将会被保存为磁盘上的文件并把此域从运行域列表里面移除
  xm save domain-name file-name
  7、从保存的状态恢复一个域。它将从保存着状态信息的文件恢复域并把域恢复为运行状态。
  xm restore file-name
  8、检查Xen内核缓冲信息
  xm demsg
  9、打印当前Xen环境的主机信息
  xm info
  10、打印Xen日志
  xm log
  11、类似Unix的top一样实时监测Xen的域
  xm top
  12、列出某个域所使用的所有块设备
  xm block-list domain-name
  13、列出某个域使用的所有的网络接口
  xm network-list domain-name
  15、列出某个域使用的所有的网络接口的详细信息
  xm network-list domain-name --long
  16、显示你的Xen环境里所有域的正常运行时间
  xm uptime
  17、重启一个域。它不会重新读取该域的Xen配置文件。如果你想重载该域的配置,你需要使用halt命令然后再执行create命令。
  xm reboot domain-name
  18、挂起一个域
  xm suspend domain-name
  19、恢复一个挂起的域
  xm resume domain-name
  20、重命名一个正在运行的域
  xm rename domain-name-old domain-name-new
  21、连接到域的控制台
  xm console domain-name
  22、关闭域
  xm shutdown domain-name
  [b] 四、Xen网络
  [/b]* 桥接网络
  * 路由网络
  * 包含NAT的虚拟局域网
  桥接网络
  Time for Action―Using Bridged Networking
  1、xen里面缺省的网络设置是桥接,这可以通过查看Xen在配置文件(/etc/xen/xend-config.sxp)来进一步确认,它应该有非注释的下面两行。
  (network-script network-bridge)
  (vif-script vif-bridge)
  2、为domU创建一个新的配置文件,你可以使用在之前章节创建的任何一个镜像或你自己拥有的其他镜像。根据你选择的镜像替换文件中的配置:
  kernel = "/boot/vmlinuz-2.6.16.38-xenU"
  memory = 32
  name = "bridged_domU"
  disk = [\"tap:aio:/root/xen-images/ttylinux_domU.img,hda,w\"]
  vif = [ \"bridge=xenbr0\" ]
  root = "/dev/hda1 ro"
  3、用xm启动domU
  xm create /root/xenimages/ttylinux_domU.cfg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要对数据进行处理,将每行数据中的买家id和商品id提取出来,作为MapReduce的输入。 Map函数的输入为一行数据,输出为(key, value)键值对,其中key为买家id,value为商品id。Reduce函数的输入为(key, list(values)),其中key为买家id,list(values)为该买家收藏的所有商品id的列表,输出为(key, str(values)),其中key为买家id,str(values)为该买家收藏的所有商品id的字符串表示,多个商品id之间用逗号分隔。 以下是MapReduce程序的代码: Mapper: ```python import sys for line in sys.stdin: line = line.strip() buyer_id, item_id, date_time = line.split() print(buyer_id + '\t' + item_id) ``` Reducer: ```python import sys prev_buyer_id = None item_ids = [] for line in sys.stdin: line = line.strip() buyer_id, item_id = line.split('\t') if prev_buyer_id and prev_buyer_id != buyer_id: print(prev_buyer_id + '\t' + ','.join(item_ids)) item_ids = [] prev_buyer_id = buyer_id item_ids.append(item_id) if prev_buyer_id: print(prev_buyer_id + '\t' + ','.join(item_ids)) ``` 使用命令行执行MapReduce程序: ```bash cat buyer_favorite1 | python mapper.py | sort | python reducer.py > output.txt ``` 输出结果: ``` 10181 1000481 20001 1001560,1001597 20042 1001368 20054 1002420,1002429,1003100,1003103,1003326,1010675 20055 1001679 20056 1002420,1002422,1003055,1003064,1003066,1003094,1003100,1003101,1003290,1003292,1003289,1010178,1010183 20064 1002422 20067 1002061 20076 1002427,1003066,1003100,1003101,1003103 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值