当前位置: 首页 > 科技观察

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

时间:2023-03-20 10:09:42 科技观察

Linux在企业数据中心流行多年。LAMP服务、Web服务器、代理服务器、防火墙和负载平衡器只是Linux为基本操作系统提供的几个用例。在过去的十年中,随着易用性和文档的改进,许多Linux发行版的使用率显着增加。在成长期,我们也在数据中心引入了虚拟化技术。同时,在运行Linux虚拟机时需要牢记一些注意事项。  逻辑卷管理  许多最新的Linux发行版都包含逻辑卷管理(LVM)作为磁盘和分区管理技术,允许管理员执行大量任务。一些分段功能——跨多个磁盘扩展或分段数据——在虚拟化世界中可能不太常见,在虚拟化世界中,用户通常将数据存储在相同的存储区域网络或数据存储中。除了这些,LVM还提供了其他有趣的特性。通过启用LVM,管理员可以扩展网络文件系统,即时扩展不同的分区和文件系统,同时保持文件系统在线和可访问。根据严格的合规要求,LVM允许我们在不调用vSphere的原生功能的情况下执行基于卷的快照以进行备份和恢复。  我的建议是,如果您在工作负载下有严格的可用性策略并利用在线调优,则将LVM与虚拟机分区。如果您不需要大量的正常运行时间或者不打算安装Linux在单独的分区上运行,那么LVM的复杂性将远远超过它的好处,最终会禁用LVM。  分区选项  Linux的默认安装通常会提示用户只为所有文件使用一个分区。这在某些情况下很好,但是当您尝试调整和提高虚拟机的安全性和性能时,为每个文件(例如/tmp、/var、/home、/usr)设置单独的分区会更有用——尤其是如果你想每个分区有不同的挂载选项。通过使用/etc/fstab文件,您可以在相应的行上指定不同分区的挂载选项,如下所示:一个常见的用例是Linux虚拟机,我们很快就会发现一些“默认”安装选项最终会被破坏安全以及性能程序。  Noatime/atime/relatime:这些挂载选项决定了如何处理包含在分区文件中的时间戳。在较旧的Linux发行版中,默认值为“一次”,这意味着操作系统将为每次读取或写入的文件元数据写入时间戳-是的,只是读取调用的次数。一直使用在外部提供文件服务的Web服务器,您可以想象这个过程的开销。通过在Web服务器的数据分区上指定“noatime”,您可以不更新访问时间并减少服务器的开销。新发行版的默认选项是“relatime”,它非常强大,只有在修改时间更新时才会更新访问时间。  Noexec/exec:在给定分区上禁用或启用二进制文件执行。对于Web服务器示例,使用“noexec”挂载/tmp分区是有意义的。事实上,许多强化指南都建议使用此选项来提高安全性。  用户在更改访问时间参数时必须谨慎。一些应用程序,例如与邮件相关的功能,需要完整的“一次性”安装选项。在网络服务器示例中,网络服务器数据可以使用“noatime”安装,只要安全准则允许它访问它。就noexec而言,明智地使用这个选项,许多自动安装程序和安装包被解压到/tmp并从那里执行。打开和关闭很容易,但我至少可以为/tmp添加noexec。  VMXNET3和PVSCSI  长期以来,建议在虚拟机中使用VMXNET3网络适配器和半虚拟化磁盘适配器。在基于Windows的虚拟机中,我们可以仅指定这些以及使用VMware工具自动安装的驱动程序。对于这种硬件,Linux提出了一些挑战。首先,较新的Linux发行版通常有自己的VMXNET3适配器和驱动程序,即使安装了VMware工具也将它们用作默认驱动程序。  旧的Linux发行版可能包含过时版本的VMXNET3驱动程序,并且可能无法为您提供VMware工具版本中包含的完整功能集。VMware的KB2020567概述了如何在VMXNET驱动程序中启用某些功能。如果想在VMwareTools中安装VMXNET3驱动,可以在安装VMwareTools时指定如下选项:./vmware-install.pl–clobber-kernel-modules=vmxnet3  Low-costCPUwanttogetsomeextra吞吐量,半虚拟化SCSI适配器是一个不错的选择。请务必在做出此选择之前检查支持的操作系统列表,以确保半虚拟化SCSI适配器支持内核或发行版。  我建议管理员尽可能使用VMXNET3和PVSCSI。如果使用较旧的内核,请安装VMwareToolsVMXNET3版本。如果您使用较新的内核,请使用发行版中的本机Linux驱动程序。  内存管理  Linux操作系统不断地将存储页面从物理内存页面移动到本地交换分区,这是设计使然。事实上,VMware在内存管理方面也在做同样的事情。但是Linux内存管理的行为有点不同,即使物理内存(当前是虚拟内存)可用,内存页也会移动。为了减少Linux虚拟机中的交换活动,我们可以调整“swapiness”值。较高的值表示更多的移动,而较低的值表示没有记忆移动。要调整此值,只需将“Vm.swappiness=##”添加到/etc/sysctl.conf,重新启动后将“##”替换为您想要的值。  我喜欢用低于默认值60的数字替换此值。让操作系统和vSphere同时管理内存交换没有意义。另外,它取决于应用程序,但我通常将此值设置为15到20。到磁盘,它呈现出另一种状态。此外,这方面的一些功能在Linux操作系统内部重复出现。对于2.6内核,大多数发行版已经将完全公平队列用作默认的I/O调度程序。其他可用的是NOOP、Anticipatory和Deadline。VMware只解释了如何更改此值,以及为什么要更改它,安排两次I/O没有意义。简而言之,通过将机器开关附加到grub内核条目,可以切换使用Linux内核的默认I/O调度程序。  无需先调度操作系统再调度管理程序。我建议使用NOOPI/O调度程序,因为它不会优化磁盘I/O并允许vSphere完全自行决定。  删除不使用的硬件并禁用不必要的服务  在过去的一年中,您在虚拟机中使用了多少次虚拟软盘和内部计算机扬声器?如果您不打算使用这些设备,只需将它们列入黑名单即可。删除软盘的命令如下:echo"blacklistfloppy"|tee/etc/modprobe.d/blacklist-floppy.confrmmodfloppyupdate-initramfs-u  也无需为未使用的硬件操心。如果您仍在使用它们,不妨禁用任何虚拟控制台。这可以在/etc/inittab中完成,如下所示:1:2345:respawn:/sbin/getty38400tty12:23:respawn:/sbin/getty38400tty2#3:23:respawn:/sbin/getty38400tty3#4:23:respawn:/sbin/getty38400tty4#5:23:respawn:/sbin/getty38400tty5#6:23:respawn:/sbin/getty38400tty6  我建议你取出软盘。请记住,您还必须删除虚拟机的硬件配置并在虚拟机的BIOS中将其禁用。对于其他服务,可以将它们列入黑名单,包括monitordiskarrayconfiguration(mptctl)、pcspker、snd_pcm、snd_page_alloc、snd_timer、snd、snd_soundcore、coretemp、parport和parport_pc。  在将这些服务列入黑名单之前,请确保您没有使用它们。另外,我总是打开几个我可能会用到的虚拟控制台,但是六个有点多了。  以下是运行Linux虚拟机的一些注意事项。考虑到性能增益,应根据具体情况逐一考虑。进行一些小的调整,您可能会看到更多的性能提升和一些倒退。与往常一样,在进行更改之前在实验室环境中进行测试。技术在不断变化,因此通过提前测试可以获得最佳结果。如果您有任何其他提示或建议,请随时在评论中询问。