设置如下所示:
- HP Proliant DL380 G7
- 6 个 3TB SATA 驱动器(监控级别),配置有硬件 RAID 1+0,板载 SATA 控制器。型号为希捷 SV35
- 192GB 内存
VMware ESXi 6.0
- 一台运行 Centos 6.7(内核 2.6.32-573)的 VM 来宾
数据存储由 ESXi 安装后的所有剩余磁盘空间组成(略小于 8tb)
- 1 个 VMDK 文件,用于 100GB 的系统分区
- 1 个用于数据分区的 VMDK 文件,大小约为 7.7TB
在来宾 CentOS 上,系统分区是 LVM ext4
数据分区是具有单个 PV、LV 和 VG ext4 的 LVM
现在我遇到的问题是磁盘上的数据传输速度非常慢。尝试将半大文件(10-30 GB)从 LVM 上的一个地方复制到 LVM 上的另一个地方,传输速率大约为 240MB/s,这是我期望的速度,但只是几秒钟后(通常为 30 左右),它下降到 1-4 MB/s,查看 iotop 告诉我一个名为 flush-253:2 的进程开始运行,这似乎减慢了一切。
我一直在使用 rsync --progress 来更好地实时了解传输速度,但是我在 cp 操作中看到了相同的结果。
当它最终完成时,我尝试再次执行相同的过程,将相同的文件放在相同的位置。第二次 rsync 指示的传输速度在整个传输过程中保持稳定在 240MB/s 左右,但是当 rsync 指示文件传输完成时,它会在该状态下挂起大约与完成第一个复制过程所需的时间一样长。我可以看到 flush-253:2 进程对这两个程序都一样努力。
现在我知道设置不是最佳的,我更愿意为 ESXi 系统设置一个单独的磁盘,但我不认为这应该是导致传输速度极慢的原因。
我搜索了有关刷新过程的信息,据我所知,它基本上将数据从内存写入实际磁盘,但我没有发现有人说他们经历过这种缓慢的传输速率. 该系统尚未投入生产,CPU 几乎根本没有运行,并且当复制程序运行时,它有大约 100GB 的可用内存可供使用。
有谁知道要尝试什么?我在不同的系统上看到了类似的结果,该系统基本上以相同的方式设置,除了完全不同(稍微小一些)的硬件。我还有第三个系统在 LVM 上运行 CentOS 5 和 ext3,它没有任何类似的问题。
编辑1: 我意识到现在记错了,系统分区也是lvm,但仍然是与数据分区分开的卷
[root@server /]# mount
/dev/mapper/vg1-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg1-lv_home on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/vg_8tb-lv_8tb on /datavolume type ext4 (rw,nobarrier)
[root@server /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_1-lv_root<br>
50G 9.7G 37G 21% /
tmpfs 91G 0 91G 0% /dev/shm
/dev/sda1 477M 52M 400M 12% /boot
/dev/mapper/vg_1-lv_home
45G 52M 43G 1% /home
/dev/mapper/vg_8tb-lv_8tb
7.9T 439G 7.1T 6% /datavolume
更新 1:我尝试将dirty_ratio 一直增加到 90,但仍然没有看到任何改进。我还尝试使用 -o nobarriers 安装它,结果仍然相同
更新 2: 对于所有试图帮助我解决困惑的人,我很抱歉,现在我自己看过了,硬件实际上是 HP Proliant 380 G7,我不知道这是否有什么不同。
我也看过raid配置,似乎我们使用的是P410 raid控制器,当我启动raid管理时,它说
HP Smart array (I think) P410 "SOMETHING", with 0MB in parenthesis
我猜这可能意味着我们有 0MB 的写入缓存?
关于硬件,我在这里有点不了解,如果尚不存在此raid控制器,您能否向该raid控制器添加一个写缓存模块(?)?或者您是否需要新的控制器/迁移到 SAN?我怎么知道它是否有写缓存,但电池可能没电了?
更新 3: 感谢您的建议和一些进一步的研究,我现在将尝试在 ESXi 中安装 HP 智能阵列驱动程序 vib 文件,并希望能更清楚地了解我所拥有的。我还在系统 BIOS 中找到了启用驱动器缓存的选项,所以我可能有最后的手段,以防我们在控制器上没有写缓存。
更新 4(已解决): 感谢所有提出解决方案的人,是的,事实证明磁盘控制器上没有缓存模块。
对于遇到类似问题的任何人,我为 ESXi 安装了 hpssacli 实用程序 VIB,并且可以通过以下输出确认回复中的建议。
缓存板存在:错误
Smart Array P410i in Slot 0 (Embedded)
Bus Interface: PCI
Slot: 0
Serial Number:
Controller Status: OK
Hardware Revision: C
Firmware Version: 6.62
Rebuild Priority: Medium
Surface Scan Delay: 15 secs
Surface Scan Mode: Idle
Parallel Surface Scan Supported: No
Wait for Cache Room: Disabled
Surface Analysis Inconsistency Notification: Disabled
Post Prompt Timeout: 0 secs
Cache Board Present: False
Drive Write Cache: Disabled
Total Cache Size: 0 MB
SATA NCQ Supported: True
Number of Ports: 2 Internal only
Driver Name: HP HPSA
Driver Version: 5.5.0
PCI Address (Domain:Bus:Device.Function): 0000:05:00.0
Host Serial Number:
Sanitize Erase Supported: False
Primary Boot Volume: logicaldrive 1
Secondary Boot Volume: None
您的 RAID 控制器似乎没有缓存。主要问题是硬件 RAID 卡在默认情况下倾向于禁用磁盘的私有 DRAM 缓存。
简而言之,这意味着当几秒钟后(准确地说是大约 30 秒)脏页缓存将被刷新到磁盘时,大量的随机 I/O 请求开始敲击您的(慢速)机械磁盘,从而扼杀吞吐量。
重新启用磁盘的私有 DRAM 缓存(通常是 RAID 控制器选项),性能应该会提高。为了更快的写入,您可以关闭写入屏障(使用挂载选项),但不幸的是,如果没有 BBU 缓存,在系统崩溃/断电的情况下
nobarrier
关闭它们会影响您的数据可靠性。编辑:在这里查看更多信息。
它看起来好像没有任何写缓存。
请确认您的服务器的世代和型号。如果您的磁盘所连接的控制器上没有闪存支持的写入缓存模块 (FBWC),那么您的 VMware 性能将会受到影响。
这里的另一个问题是 LVM 和几年前出现在 RHEL6 中的一些默认设置。你会想通过禁用写屏障来尝试这个。LVM 可能是一个问题,因为它会导致人们避免对他们的卷进行分区......这会影响工具
tuned-adm
的工作能力。我要求输出
mount
. 你能发一下吗?尝试使用
no barrier
标志安装卷。写屏障是 ext4 上 EL6 的默认设置,因此这是您遇到的最大问题。似乎与此重复:
Flush-0:n 进程导致巨大的瓶颈
实际上,您应该检查dirty_ratio,它的情况是第一次写入进入RAM,因此一开始您的IO 速率非常快。稍后,当 RAM 填充到dirty_ratio 时,内核开始填充到磁盘。
一些问题:
和两个个人注意事项: - 我认为你永远不会真正达到恒定的 240 MB/s,使用 6 个慢速 SATA 驱动器和 7,2K 和 RAID 10。