技术分享

您当前所在的位置:首页>>技术分享

你真的知道如何在 ESXi 上安装 Linux 吗?

1、分区4K对齐以获得最佳存储性能

如果分区没有4K对齐,这对单个磁盘来说不是什么大问题,但对于共享存储来说,共享存储中的一个LUN实际上是跨越多个不同的磁盘条带化的;
所以虚拟机操作系统的一次读或写操作会导致存储阵列上的I/O翻倍(未对齐的分区会跨越条带上的数据块,所以阵列会从2个条带中读取或写入; 正常应该只会读取单个条带)
这对于一两台虚拟机来说算不上大问题,但当数百个虚拟机的I/O未对齐时,其影响就会变得很糟糕。

比如: parted 命令一不注意就容易创建出未对齐的分区,建议使用 fdisk 和 gdisk 工具来创建分区就没有此问题:
(parted) mkpart primary 0 5gb
Warning: The resulting partition is not properly aligned for best performance.

使用 parted 命令创建分区的正确方法是,创建后使用 align-check 命令验证对齐:

(parted) mkpart primary 0% 100%
(parted) align-check
alignment type(min/opt) [optimal]/minimal?
Partition number? 1
1 aligned



2、安装和使用 VMWare Tools

这是必然的,但还有很多Linux虚拟机并没有安装, 许多运维人员依旧认为 VMware-tools 是 "VMware Workstation 上的那种",所以就抵触安装;
但实际上 ESXi 的 VMware Tools 还用于添加 "半虚拟化网络 paravirtualized network" 和 "SCSI适配器 SCSI adapters" 的驱动程序,并且添加了图形驱动程序,还支持从
vCenter 正常关机和重启虚拟机

无需多言,务必要装!
[root@localhost ~]# yum -y install open-vm-tools

3、尽可能不要安装桌面版

首先服务器不安装桌面版几乎已经成为"行业共识"(不安装桌面版还能省下不少磁盘空间)
如果你安装了桌面版(如:Xorg、KDE、GNOME 等),则桌面的屏幕保护程序会导致性能问题,此外运行"命令行模式"能够节省大量内存和CPU周期

4、计划任务 crontab 的随机延迟

系统中默认就有一些"计划任务",如: 日志旋转,mlocate数据库索引更新,系统监控任务sar...等等,再加上用户自定义的任务;
这些任务通常都是I/O密集型的,我们可以在这些任务中引入"随机延迟时间"有助于分散系统负载

在 bash 中有一个环境变量 $RANDOM , 该变量会随机生成一个 0 - 32767 之间的随机数;

比如,我最多可以接受某个任务随机等待不超过5分钟, 你可以计算 32767 ÷ 300(秒)=109
然后在 crontab 的作业文件(/etc/cron.d 或 /etc/cron.daily)中这样做:
/bin/sleep $((RANDOM/109)) # 在文件第2行中添加,即可随机延迟 0 - 300 秒

5、虚拟机应使用 NTP 而非 VMware Tools 同步时间

NTP是标准的网络时间同步协议,而使用 VMware Tools 可能会因为虚拟化开销和生命周期事件引入一些额外的系统因素,这些因素会影响计时机制,从而导致虚拟机内的时间漂移;
时间的准确性非常重要,不仅仅是为了系统日志和 crontab 程序的准确性,加密操作也依赖于系统时间

参考链接: https://kb.vmware.com/s/article/1006427

6、将磁盘调度算法设置为"noop"

noop 即 "no optimal" 不优化,因为 ESXi 本身就会对I/O做排序和优化;
操作系统应该将所有 I/O 请求都交给 hypervisor(虚拟机管理程序) 进行调度,而不是尝试自行优化,自行优化反而可能破坏更多的"ESXi全局优化"

在 /etc/default/grub 中添加:
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap elevator=noop rhgb quiet"
并重新生成 grub.cfg,重启生效
[root@localhost ~]# grub2-mkconfig >/boot/grub2/grub.cfg
[root@localhost ~]# reboot
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
[noop] deadline cfq


7、如需收集虚拟机性能数据,请从 vSphere 上收集,而不要从操作系统中

因为从虚拟机内测量性能数据可能不准确,尤其是在CPU正在被"过度使用"时,也就是多台虚拟机同时抢占CPU
使用操作系统的性能测量工具时,操作系统无法得知 ESXi 使用CPU的开销; 所以要使用 vSphere 的性能测量工具


8、为虚拟机开机热添加功能,不要分配过多的资源给虚拟机

许多客户喜欢为它们的虚拟机配置"强悍的性能 16核32GB",哪怕这台虚拟机仅仅是运行一个静态的HTML网页;

正确的做法是:
1.在 vCenter 中监控 CPU 和 RAM 的利用率
2.当虚拟机确实需要更多资源时,才进行配置的增加

这种做法反而会提高性能,因为 ESXi 可以更加轻松的调度具有更少 CPU 的虚拟机,并且如果虚拟机磁盘较小还能节省交换文件磁盘空间和 vMotion 的时间,所以最好不要过度分配"性能"

9、禁用文件系统的访问时间更新

文件系统会跟踪文件的创建、修改和访问时间; 更新上一次访问的时间的操作就会变成"额外的磁盘写入" 根据 IBM 的说法: "昂贵的I/O操作"
如果你不需要这个功能,可以选择关闭; 当然在单台 VM 上可能看不出性能的提升,但如果在数百个 VM 上就会看到性能的大幅提升

要禁用访问时间更新,在 /etc/fstab 中的文件系统条目中添加:
/dev/mapper/storage-data /data xfs defaults,noatime 0 0




上一篇:思科交换机基本配置命令

下一篇:AAA认证是什么?一文带你科普AAA认证及协议