1.分区4K对齐以获得最佳储存性能
如果分区没有4K对齐,这对单个c盘来说不是哪些大问题,但对于共享存储来说,共享存储中的一个LUN实际上是跨越多个不同的c盘条带化的;
所以虚拟机操作系统的一次读或写操作会导致储存阵列上的I/O翻倍(未对齐的分区会跨越条带上的数据块,所以阵列会从2个条带中读取或写入; 正常应当只会读取单个条带)这对于一两台虚拟机来说算不上大问题,但当数百个虚拟机的I/O未对齐时,其影响都会显得很糟糕。
比如: parted 命令一不注意就容易创建出未对齐的分区,建议使用 fdisk 和 gdisk 工具来创建分区就没有此问题:
(parted)mkpartprimary05gb
Warning:Theresultingpartitionisnotproperlyalignedforbestperformance.
使用 parted 命令创建分区的正确方式是,创建后使用 align-check 命令验证对齐:
(parted)mkpartprimary00%
(parted)align-check
alignmenttype(min/opt)[optimal]/minimal?
Partitionnumber?1
1aligned
2.安装和使用 VMWare Tools这是必然的,但还有好多Linux虚拟机并没有安装, 许多运维人员仍然觉得 VMware-tools 是 "VMware Workstation 上的那个",所以就排斥安装;但实际上 ESXi 的 VMware Tools 还用于添加 "半虚拟化网路 paravirtualized network" 和 "SCSI适配器 SCSI adapters" 的驱动程序,并且添加了图形驱动程序,还支持从vCenter 正常死机和重启虚拟机
无需多言,务必要装![root@localhost~]#yum-yinstallopen-vm-tools
3.尽可能不要安装桌面版首先服务器不安装桌面版几乎早已成为"行业共识"(不安装桌面版能够省下不少c盘空间)如果你安装了桌面版(如: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 程序的准确性,加密操作也依赖于系统时间
参考链接:
6.将磁盘调度算法设置为"noop"noop 即 "no optimal" 不优化,因为 ESXi 本身都会对I/O做排序和优化;操作系统应当将所有 I/O 请求都交给 hypervisor(虚拟机管理程序) 进行调度,而不是尝试自行优化,自行优化反倒可能破坏更多的"ESXi全局优化"
在 /etc/default/grub 中添加:GRUB_CMDLINE_LINUX="crashkernel=autospectre_v2=retpolinerd.lvm.lv=centos/rootrd.lvm.lv=centos/swapelevator=nooprhgbquiet"
并重新生成 grub.cfg,重启生效
[root@localhost~]#grub2-mkconfig>/boot/grub2/grub.cfg
[root@localhost~]#reboot
[root@localhost~]#cat/sys/block/sda/queue/scheduler
[noop]deadlinecfq
7.如需搜集虚拟机性能数据,请从 vSphere 上搜集,而不要从操作系统中由于从虚拟机内检测性能数据可能不确切,尤其是在CPU正在被"过度使用"时,也就是多台虚拟机同时占据CPU使用操作系统的性能测量工具时,操作系统未能获知 ESXi 使用CPU的开支; 所以要使用 vSphere 的性能检测工具
8.为虚拟机开机热添加功能,不要分配过多的资源给虚拟机许多客户喜欢为它们的虚拟机配置"强悍的性能 16核32GB",哪怕这台虚拟机仅仅是运行一个静态的HTML网页;
正确的做法是:1.在 vCenter 中监控 CPU 和 RAM 的利用率2.当虚拟机确实须要更多资源时,才进行配置的降低
这种做法反倒会提升性能,因为 ESXi 可以愈发轻松的调度具有更少 CPU 的虚拟机,并且假如虚拟机c盘较小能够节约交换文件c盘空间和 vMotion 的时间,所以最好不要过度分配"性能"9.禁用文件系统的访问时间更新文件系统会跟踪文件的创建、修改和访问时间; 更新上一次访问的时间的操作还会弄成"额外的c盘写入" 根据 IBM 的说法: "昂贵的I/O操作"如果你不需要这个功能,可以选择关掉; 当然在单台 VM 上可能看不出性能的提高,但若果在数百个 VM 上都会看见性能的急剧提高
要禁用访问时间更新,在 /etc/fstab 中的文件系统条目中添加:
/dev/mapper/storage-data/dataxfsdefaults,noatime00