运行预构建 Linux 映像的 Windows Azure 虚拟机中的交换空间 – 第 1 部分
本文章由 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 帮助我排查和解决交换问题。
本文翻译自:
运行预构建 Linux 映像的 Windows Azure 虚拟机中的交换空间 – 第 1 部分的更多相关文章
- 在 Windows Azure 虚拟机中使用 Microsoft SQL Server 安全功能
编辑人员注释:本文章由 SQL Server 团队高级项目经理 Sung Hsueh 撰写. SQL Server 的最新用法之一是利用 Microsoft 的 Windows Azure 基础结构服 ...
- 在 Windows Azure 虚拟机中如何备份和还原 Windows 系统磁盘
备份和还原对于操作真实的系统来说至关重要.对于 Windows Azure 虚拟机环境中的 Windows Server,可以根据自身的需求选择多种不同的工具或将这些工具结合使用来实现备份.下面将对这 ...
- Windows Azure 上 Linux VM 中的交换空间 – 第 2 部分
本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 在前一篇文章 Windows Azure 上Linux VM 中的交换空间第 1 部分中,我介绍了在默认情况下, ...
- VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录
VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录 一.描述 系统描述:win7旗舰版64位系统+VMware Workst ...
- 创建并使用Windows Azure虚拟机模板
在现实的IaaS应用中,往往会创建自己的虚拟机映像模板,以满足快速应用部署的目标,如预先配置好某些应用.管理与监控管理等. 1.登录到Windows Azure Dashboard中创建一个做为模板的 ...
- 探索 Windows Azure 网站中的自动伸缩功能
去年10月,我们发布了若干针对 WindowsAzure平台的更新,其中一项更新是添加了基于日期的自动伸缩调度支持(在不同的日期设置不同的规则). 在这篇博客文章中,我们将了解自动伸缩的概念,并 ...
- ASP.NET 在 Windows Azure 环境中使用基于 SQLServer 的 Session
Session 嘛,占一点儿服务器资源,但是总归比 ViewState 和 Cookie 安全点儿,所以还是要用的. Windows Azure 环境中的 Web 服务器经由负载均衡调度,根本无法保证 ...
- 在 Windows Azure 网站中进行纵向扩展和横向扩展
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写. 当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手. ...
- 进一步探索:Windows Azure 网站中解锁的配置选项
编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 在 Windows Azure 网站 (WAWS) 中管理网站时,许多选项可使用 Azu ...
随机推荐
- vs2012 发布网站丢失文件
问题描述 在发布网站时,发现上线的网站总是功能缺失,而本地代码确实没问题. 到发布网站的磁盘去查看,发现丢失了很多静态页面文件. 这是一个很奇怪的问题:mvc的网站,丢失了很多View(大部分的csh ...
- c语言函数实现交换两个数的值
代码: #include <stdio.h> void swap(int x,int y) { int temp; temp = x; x = y; y = temp; printf(&q ...
- JQuery window、document、 body
我电脑屏幕分辨率:1440 * 900 最大化浏览器,刷新浏览器 alert($(window).width() + "---" + $(window).height()); ...
- 2016.09.01 html5兼容
<!--[if lt IE 9]> <script src="http://apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min ...
- 开发该选择Blocks还是Delegates(转)
原文链接:http://blog.stablekernel.com/blocks-or-delegates/ By Joe Conway,CEO | Jul 11,2013 11:29:00 AM 有 ...
- Hibernate 报错:this project is not a myeclipse hibernate project . assuming hibernate 3 cap
问题描述: web 项目中 打开 hibernate.cfg.xml 文件时 提示:The project is not a myEclipse hibernate project. 并且:在 db ...
- Haffman算法(C++)
Huffman编码,C++实现,只是为了说明大致的思路,还有很多不完美之处,比如在输入数据超出限制等条件下会出现错误. #include<iostream> #include<str ...
- oc 根据文件路径获取文件大小
第一种封装: -(NSInteger)getSizeOfFilePath:(NSString *)filePath{ /** 定义记录大小 */ NSInteger totalSize = ; /** ...
- html系列教程--ol ul li
<li> 标签:配合ol,ul实现有序,无序列表以及导航实现. demo: <ol> <li>Coffee</li> <li>T ...
- bootstrap注意事项(八)一些辅助信息
1.三角符号 通过使用三角符号可以指示某个元素具有下拉菜单的功能.注意,向上弹出式菜单中的三角符号是反方向的. <!DOCTYPE HTML><html><head> ...