高效运行Linux虚拟机的六大技巧

Linux在企业数据中心已经盛行多年。LAMP服务、Web服务器、代理服务器、防火墙和负载平衡器,只是Linux为基本操作系统提供的几个用例。在过去十年,随着易用性的提高和文档的完善,许多Linux发行版使用量明显增加。在增长阶段,我们还将虚拟化技术引入数据中心。与此同时,在运行Linux虚拟机时要留意一些注意事项。

逻辑卷管理

最近许多Linux的发行版都包含逻辑卷管理(LVM)这一技术,因为它属于磁盘和分区管理,允许管理员执行大量的任务。一些分段特性——扩展或跨多个磁盘分段数据——在虚拟化的世界里可能不太普遍,用户通常是将数据存储在同一存储区域网络或数据存储区。除了这些,LVM还提供其他有趣的功能。通过启用LVM,管理员可以扩展网络文件系统,在工作中扩展不同的分区和文件系统,同时保持文件系统在线和可访问。根据严格的合规要求,LVM允许我们在没有调用vSphere所带功能的情况下执行基于卷的快照用于备份和恢复。

我的建议是如果在工作负载下,你有严格的可用性策略并利用在线调整功能,就要将LVM与虚拟机分区。如果你不需要大量的正常运行时间或不打算安装Linux在单独的分区运行,LVM的复杂性将远远大于好处,最终禁用LVM。

分区选项

默认安装的Linux通常提示用户仅仅使用一个分区的所有文件。在某些情况下这样做没错,但当你试着调整和改善虚拟机安全性和性能时,每个文件有单独的分区如/tmp、/var、/home、/usr,这样做更有意义——特别是如果你想要每个分区有不同的安装选项。通过利用/etc/fstab文件,可以在相应的行指定适用于不同分区的安装选项,如下所示:


  1. UUID=0aef28b9-3d11-4ab4-a0d4-d53d7b4d3aa4 /tmp ext4 defaults,noexec 1 2 

例如Web服务器,一个最常见的用例为Linux虚拟机,我们很快就会发现一些“默认”安装选项最终破坏安全以及绩效计划。

Noatime/atime/relatime:这些安装选项决定如何处理包含在分区文件上的时间戳。在旧的Linux发行版中,默认是“一次”,这意味着每读写一次,操作系统会为文件元数据写一个时间戳——是的,仅仅读调用次数。一直使用对外提供文件的Web服务器,你可以想象这个过程的开销。通过指定存放Web服务器数据分区上的“noatime”,你可以不更新访问时间,减轻服务器的开销。新发行版默认选项是“relatime”,它的功能很强大,如果修改时间更新,只更新访问时间。

Noexec/exec:在给定的分区禁用或启用二进制文件执行。对于Web服务器的例子而言,用“noexec”安装/tmp分区的意义重大。事实上,许多硬化指南建议使用这个选项来提高安全性。

用户更改访问时间参数时必须谨慎。一些应用程序,比如邮件相关的功能,需要一个完整的“一次”安装选项。在Web服务器的例子中,只要安全指导方针允许它访问,可以用“noatime”安装Web服务器数据。就noexec而言,明智地使用这个选项,很多自动安装程序和安装包就解压到/tmp并从那儿开始执行。它很容易打开和关闭,但我至少可以为/tmp添加noexec。

VMXNET3和PVSCSI

很长一段时间,大家都推荐在虚拟机中利用VMXNET3网络适配器和超虚拟化磁盘适配器。在基于Windows系统的虚拟机,我们可以仅仅指定这些还有利用VMware工具自动安装的驱动。利用这个硬件,Linux带来了一些挑战。首先,新版的Linux发行版通常有自己的VMXNET3适配器和驱动程序,即使安装了VMware工具,也将它们作为默认驱动程序。

旧的Linux发行版可能包含一个过时的VMXNET3驱动版本,可能不会为你提供包含在VMware工具版本的完整特性集。VMware的KB2020567概述如何在VMXNET驱动启用某些特性。如果你想在VMware工具安装VMXNET3驱动,可以在VMware工具安装时指定以下选项:


  1. ./vmware-install.pl –clobber-kernel-modules=vmxnet3 

低成本的CPU想要获得一些额外的吞吐量,超虚拟化SCSI适配器是一个不错的方式。做出这个选择之前一定要检查所支持的操作系统列表,以确保超虚拟化SCSI适配器支持内核或分布。

如果可能的话,我建议管理员使用VMXNET3和PVSCSI。如果使用一个旧的内核,就安装VMware工具VMXNET3版本。如果你使用一个更新的内核,在分布中使用本地Linux驱动程序。

内存管理

Linux操作系统不断将存储页面从物理内存页移动到本地交换分区,这是由设计决定的。事实上,VMware利用内存管理功能在做同样的事。但是Linux内存管理的行为有点不同,即使物理内存——目前虚拟内存可用,也会移动内存页面。为了减少Linux虚拟机内部交换活动,我们可以调整一个“swapiness”值。更高的值表示更多的运动,而较低的值表示内存不会移动。要调整这个值,只需在/etc/sysctl.conf 添加“Vm.swappiness=##”,重启后将“##”替换为你想要的值。

我喜欢将这个值替换成一个低于默认值60的数字。同时使用操作系统和vSphere管理你的内存交换是没有意义的。而且,这取决于应用程序,但我通常设置这个值为15至20。

I/O调度器

ESXi在管理内存方面作用很大,当它属于I/O调度器并写入磁盘时,它又呈现另一种状态。此外,Linux操作系统内部重复一些这方面的功能。2.6的内核,大多数发行版已经利用Completely Fair Queuing作为默认的I/O调度器。其他可用的是NOOP,Anticipatory和Deadline。VMware只解释了如何改变这个值,还有你为什么想要更改,调度两次I/O是没有意义的。简而言之,通过附加机器转换到grub内核条目,使用Linux内核的默认I/O调度器可以进行切换。

不需要先安排操作系统再安排到管理程序。我建议使用NOOP I/O调度器,因为它没有优化磁盘I/O,并允许vSphere全权管理。

删除未使用的硬件并禁用不必要的服务

在过去的一年里,你有多少次在虚拟机中使用虚拟软盘和内部的电脑扬声器呢?如果你不打算使用这些设备,就把将它们拉入黑名单。删除软盘的命令如下:


  1. echo "blacklist floppy" | tee /etc/modprobe.d/blacklist-floppy.conf 
  2. rmmod floppy 
  3. update-initramfs -u 

也没有必要纠结未使用的硬件。如果你还在使用,不妨禁用任何虚拟控制台。这可以在/etc/inittab中通过如下操作实现:


  1. 1:2345:respawn:/sbin/getty 38400 tty1 
  2. 2:23:respawn:/sbin/getty 38400 tty2
  3. #3:23:respawn:/sbin/getty 38400 tty3
  4. #4:23:respawn:/sbin/getty 38400 tty4
  5. #5:23:respawn:/sbin/getty 38400 tty5
  6. #6:23:respawn:/sbin/getty 38400 tty6

我建议你卸掉软盘。请记住,你还必须删除虚拟机的硬件配置,并在虚拟机的BIOS禁用它。关于其他服务,你可以将它们列入黑名单,包括监视磁盘阵列配置(mptctl),pcspker,snd_pcm,snd_page_alloc,snd_timer,snd,snd_soundcore,coretemp,parport and parport_pc。

将这些服务拉入黑名单之前,你要确保没有使用它们。同时,我总会开启几个可能用到的虚拟控制台,但开启六个就有点多了。

这是一些运行Linux虚拟机的注意事项。考虑到性能收益,每个人应视情况而定。做出一些细微的调整,你可能会看到更多性能方面的提升和一些退化的性能。像往常一样,更改之前要在实验室环境中进行测试。技术是不断变化的,所以通过提前测试可以达到最佳效果。如果你有任何其他技巧或建议,可以在评论中提出。

作者:Mike Preston

来源:51CTO

时间: 2024-08-28 21:55:01

高效运行Linux虚拟机的六大技巧的相关文章

独家 | 手把手教你用Python 3创建用于机器学习开发的Linux虚拟机(附安装教程&代码)

Linux是使用Python进行机器学习开发的极佳环境.这些工具能够被简便快捷地安装,并且您可以直接开发和运行大型模型. 在本教程中,您将了解如何使用Python创建和安装用于机器学习的Linux虚拟机.完成本教程后,您将知道: 如何下载和安装VirtualBox来管理虚拟机如何下载和安装Fedora Linux如何在Python 3中为机器学习安装一个SciPy环境 如果您的电脑操作系统是Windows.Mac OS X和Linux.那么本教程是适合您的. Linux虚拟机的好处 您可能有很多

LINUX安全管理的基本技巧_unix linux

LINUX安全管理的基本技巧 中华信息阵地 http://www.cnxxz.net 作者:greeniceLinux作为是一个开放源代码的免费操作系统,以其高效隐定的优秀品质,越来越受到用户们的欢迎,并在全世界不断普及开来.相信在不久的将来Linux还会得到更大更快的发展.虽然,Linux和Unix很相似,但是它们之间还是有不少重要的差别.对于很多习惯了UNIX和Windows的系统管理员来讲,如何保证Linux操作系统的安全可靠将面临许多新的挑战.本文在此将给大家介绍一些Linux管理安全的

值得收藏的20个Linux服务器性能优化技巧_Linux

    Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要目的是高效处理非交互式进程,响应时间并不是那么重要,相反,能够长时间处理高负载才是最关键的.Linux高可用服务器集群解决方案让IT系统管理员可以从容应对许多常见的硬件和软件故障,允许多台计算机一起工作,为关键服务正常运行提供保障,系统管理员可以不中断服务执行维护和升级.     Linux

C语言高效编程的几招小技巧

  这篇文章主要介绍了C语言高效编程的几招小技巧,本文讲解了以空间换时间.用数学方法解决问题以及使用位操作等编辑技巧,并给出若干方法和代码实例,需要的朋友可以参考下 引言: 编写高效简洁的C语言代码,是许多软件工程师追求的目标.本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教. 第1招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间. 例如:字符串的赋值. 方法A,通常的办法: 代

Linux虚拟机文件系统突然变成只读

  出现IO错误.重启虚拟机表示磁盘错误,用命令"fsck / -y"修复磁盘错误.这种情况出现过几次,有时修复磁盘之后可以继续启动,后来干脆就无法启动了. 重新安装虚拟机并checkout代码,也很容易出现这个问题.宿主系统运行任务比较多,系统比较慢.有一次svn checkout出错,在宿主系统(Ubuntu)用iotop看进程IO状况,发现updatedb.mlocate写入速度很大,达到10M/s以上. 这个页面解析了原因:High I/O causing filesystem

linux虚拟机与windows间socket通信问题

问题描述 linux虚拟机与windows间socket通信问题 虚拟机linux服务端 windows客户端 虚拟机桥接模式,能互相ping到,但运行连接不上 linux Server #include #include #include #include #include #include #include #include #define BACKLOG 5 int main(int arge,char *argv[]) { int sockfd,new_fd; struct sockad

工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧

原文:工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇<工欲善其事,必先利其器.VS2013全攻略(安装,技巧,快捷键,插件)!> 看到很多朋友回复和支持,非常感谢,尤其是一些拍砖的喷油,感谢你们的批评,受益良多. 我第一份工作便是WPF的开发,一直到现在都非常喜欢这门技术,从懵懵懂懂到现在有一些WPF开发资历,也算是经历了一段坎坷的过程.我的朋友看到我写了VS2013的全攻略,他就推荐我写一个WPF篇,我想了下,的确很多朋友初接触WPF的时候难免会

如何优化VMware Linux虚拟机的性能?

目前有很多方法可以改善VMware Linux虚拟机的性能,包括对虚拟硬件进行调整,以及更改默认的软件配置设置. 虽然在VMware管理程序上安装Linux虚拟机很容易,但是默认的.开箱即用的配置并不能充分发挥虚拟机的潜在的最大性能.不过,有一些办法可以对其进行优化. 虚拟硬件 首要需要考虑的是虚拟硬件.VMware产品的每一个新版本都带来了新的虚拟硬件版本,你应该尽可能使用最新的硬件版本,因为和大多数OS一样,补丁和性能改进是增量地添加的. 半虚拟化硬件 半虚拟化硬件本质上是一个硬件的软件实现

centos-请问linux虚拟机中Install to Hard Drive这个有什么用?

问题描述 请问linux虚拟机中Install to Hard Drive这个有什么用? 虚拟机中Install to Hard Drive这个有什么用. 可以说详细点么?就是如果安装后,就能才能做哪些操作等等. 解决方案 Install To Hard Drive是安装到硬盘上.否则就直接运行,相当与Windows的PE盘可以直接在内存运行,关机后什么都不留下 不知道你的虚拟机是哪种,下面分别是VirtualBox和VMWare这两种虚拟机的安装VirtualBox 下安装 Fedora 18