本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写。

随着基础结构服务(虚拟机和虚拟网络)近期在 Windows Azure 上正式发布,越来越多的企业工作负荷正在向公共云迁移,以利用云经济效益、规模和速度。我最近参与了其中一种企业工作负荷 - 云中的大数据。在此,我将与您分享一些提示和最佳做法。

该项目要求使用预构建 Linux 映像在 Windows Azure 中部署多节点 Hadoop 群集。我使用 Windows Azure 镜像库中的 CentOS 6.3 映像配置了一个中型虚拟机 (VM),并继续部署单节点核心 Hadoop。一切都很正常,只是当我开始测试稍繁重的工作负荷时,我发现 VM 会经常冻结或变得反应迟钝。

不难看出,这与中型 VM 的资源有关 – 毕竟它只有 2 个 CPU 核及 3.5 GB 内存。但是,我没想到整个 VM 会变得反应迟钝甚至开始掉线。在与我的朋友和同事讨论此问题之后,我们确信是因为 VM 根本没有配置交换空间(即,Windows 上所说的页面文件)。因此,当内存压力增加时,其虚拟内存系统无法交换至磁盘。

您可以检查系统如何通过在 Linux shell 提示符下运行“free”命令来查看系统如何使用内存,尤其是,您可以使用“cat /proc/swaps”查看交换空间的状态 – 配置的内存大小,以及正在使用中的内存大小。请参阅下面的屏幕截图。

默认情况下,对于在 Windows Azure 虚拟机中配置的 Linux VM,根本未配置交换空间, 因此“cat /proc/swaps”不会返回任何内容,同样,“free”命令不会显示任何正在交换的活动。

一个有趣的问题是,为什么使用 Linux 库映像(即来自 Windows Azure 镜像库的映像)的 VM 配置不会自动配置交换空间。我们思考了一下发现这是因为用户应该决定交换空间的大小和位置并进行后期配置。但是,很有可能出现这种情况:某位用户持续使用从未配置交换空间的 VM,直到进程开始崩溃或 VM 冻结。

也就是说,一旦我们意识到我们需要做的就是配置交换空间,便立即按照一系列简单步骤在资源磁盘上配置基于文件的交换空间;Windows Azure 中的中型虚拟机配备 135 GB 的资源磁盘,安装为“/mnt/resource”。下面介绍在 VM 上配置基于文件的交换空间的步骤。

·   使用“fallocate”命令分配适当大小的交换文件,如在资源磁盘上分配 5GB。语法为:“fallocate -l 5g /mnt/resource/swap5g”,其中“swap5g”是文件名

·   使用“chmod”命令更改文件的权限,确保只有root用户具有交换文件的读/写权限。语法为:“chmod 600 /mnt/resource/swap5g”

·   使用“mkswap”命令将文件设置为交换区域。语法为:“mkswap /mnt/resource/swap5g”

·   使用“swapon”命令启用交换文件。语法为:“swapon /mnt/resource/swap5g”

·   现在,交换空间可供使用,并且通过“cat /proc/swaps”命令应该可以进行确认。向“/etc/fstab”文件添加条目,这样即使 VM 在 Azure 中进行回收,仍可保留交换设置。语法为:echo “/mnt/resource/swap5g  none  swap  sw  0 0” >> /etc/fstab

下图是在我的 VM 上执行上述命令的记录。

鸣谢:感谢我的同事 Amit Srivastava 帮助我排查和解决交换问题。

本文翻译自:

http://blogs.msdn.com/b/windowsazure/archive/2013/07/29/swap-space-in-windows-azure-virtual-machines-running-pre-built-linux-images-part-1.aspx

运行预构建 Linux 映像的 Windows Azure 虚拟机中的交换空间 – 第 1 部分的更多相关文章

  1. 在 Windows Azure 虚拟机中使用 Microsoft SQL Server 安全功能

    编辑人员注释:本文章由 SQL Server 团队高级项目经理 Sung Hsueh 撰写. SQL Server 的最新用法之一是利用 Microsoft 的 Windows Azure 基础结构服 ...

  2. 在 Windows Azure 虚拟机中如何备份和还原 Windows 系统磁盘

    备份和还原对于操作真实的系统来说至关重要.对于 Windows Azure 虚拟机环境中的 Windows Server,可以根据自身的需求选择多种不同的工具或将这些工具结合使用来实现备份.下面将对这 ...

  3. Windows Azure 上 Linux VM 中的交换空间 – 第 2 部分

    本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 在前一篇文章 Windows Azure 上Linux VM 中的交换空间第 1 部分中,我介绍了在默认情况下, ...

  4. VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录

    VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录 一.描述 系统描述:win7旗舰版64位系统+VMware Workst ...

  5. 创建并使用Windows Azure虚拟机模板

    在现实的IaaS应用中,往往会创建自己的虚拟机映像模板,以满足快速应用部署的目标,如预先配置好某些应用.管理与监控管理等. 1.登录到Windows Azure Dashboard中创建一个做为模板的 ...

  6. 探索 Windows Azure 网站中的自动伸缩功能

     去年10月,我们发布了若干针对 WindowsAzure平台的更新,其中一项更新是添加了基于日期的自动伸缩调度支持(在不同的日期设置不同的规则). 在这篇博客文章中,我们将了解自动伸缩的概念,并 ...

  7. ASP.NET 在 Windows Azure 环境中使用基于 SQLServer 的 Session

    Session 嘛,占一点儿服务器资源,但是总归比 ViewState 和 Cookie 安全点儿,所以还是要用的. Windows Azure 环境中的 Web 服务器经由负载均衡调度,根本无法保证 ...

  8. 在 Windows Azure 网站中进行纵向扩展和横向扩展

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写. 当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手. ...

  9. 进一步探索:Windows Azure 网站中解锁的配置选项

     编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 在 Windows Azure 网站 (WAWS) 中管理网站时,许多选项可使用 Azu ...

随机推荐

  1. jquery实现带左右箭头和数字焦点的图片轮播手写代码

    以前图片轮播经常用网上的插件,然后想说自己也要认真看看,一步一步弄明白,所以就自己研究写了个图片轮播的代码,我自己觉得还算是挺简单的.如有改进的地方,欢迎你能帮我指出,共同进步. (ps:博客园如何上 ...

  2. Android 自定义下拉刷新ListView

    package com.dwtedx.qq.view; import android.content.Context; import android.util.AttributeSet; import ...

  3. SQL语句执行效率及分析

    查询效率分析:子查询为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询.在这种情况下可以考虑用联接查询来取代.如果要用子查询,那就用EXISTS替代IN.用NOT EXISTS替代NOT IN. ...

  4. @Html.ActionLink 添加样式 html标签

    @Html.ActionLink(item.MessageTitle, "Detail", "News",new { MessageId = item.Mess ...

  5. SysLog解析

    SysLog的标准是RFC3164描述的,但是很多厂家的日志都没有完全遵守这个标准,因此在SIEM和SEM中,日志解析就是第一个要面对的问题,因此,就我所看到的大部分SOC厂家(国内和国外)都需要针对 ...

  6. 验证身份证合法性的js

    分别对15和18位的身份证号进行验证,非常严格. function idCardNo(value){ //验证身份证号方法 : : : : : : : : : : : : : : : : : : : ...

  7. 克鲁斯卡尔(Kruskal)算法

    # include <stdio.h> # define MAX_VERTEXES //最大顶点数 # define MAXEDGE //边集数组最大值 # define INFINITY ...

  8. #include <stdbool.h>

    可以使用bool和true.false 输出是1或者0 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdb ...

  9. uva 10306 - e-Coins(完全背包)

    题目链接:10306 - e-Coins 题目大意:给出m和s, 再给出m种电子硬币,每种硬币有两种金额xi,yi.现在要在m种硬币种选若干个硬币,可以重复选同一种硬币, 使得(x1 + x2 + . ...

  10. 系统学习Linux的11点建议

    一.从基础开始 常常有些朋友在 Linux 论坛问一些问题,不过,其中大多数的问题都是很基础的.例如为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不 ...