小编Jus*_*ᚄᚒᚔ的帖子

为什么繁重的 I/O 会拖慢我的服务器的速度?

我一直在尝试解决磁盘上的 I/O 问题。设置如下:

  • 操作系统:CentOS 5.6
  • 磁盘布局:
    • 磁盘 ( /dev/sda, /dev/sdb)
    • 分区 ( /dev/sda1, /dev/sdb1)
    • MD 阵列 (RAID-1) ( /dev/md0)
    • LVM 堆栈 ( /dev/VolGrp00/RootLV)

最初,我注意到在执行繁重的 I/O(即mkfs)时,系统会慢得像爬行一样,以至于我无法在 X 会话中移动鼠标指针。我开始记录一些指标,发现平均负载会慢慢攀升,在我的双核服务器上达到 5.0 以上。同时,我的内存图片从近 2GB 可用空间变为约 10MB 可用空间和近 2GB 缓冲区。基于此,我怀疑某种缓存是罪魁祸首,但我对 LVM、MD 和 Linux I/O 子系统的具体细节不够熟悉,不知道从哪里开始寻找。

我发现一个奇怪的现象:如果我剥离 LVM 层并直接写入阵列似乎并不重要,甚至删除阵列也没有多大帮助(尽管直接写入分区似乎会导致更短的延迟突发而不是写入数组)。

我的大部分测试都是使用命令完成的mkfs.ext4 -i 4096 -m 0 <device>,尽管我已经测试了这种行为dd if=/dev/urandom bs=4K of=<device>并收到了类似的结果,所以我很确定这不是 mkfs 的错。另外,我已经在另一个系统(来自另一个硬件供应商,但仍然是 CentOS 5.6)上尝试过这个,并再次看到类似的结果。

我可以接受任何导致我的 I/O 操作需要更长时间才能完成的解决方案,尽管诸如“使用直接 I/O 标志”之类的答案是不可接受的,因为它们导致 mkfs 从 10 分钟到 16 小时(去过那里) ,试过了)。我正在寻找调整参数,也在考虑更改 …

linux centos software-raid

4
推荐指数
1
解决办法
1410
查看次数

标签 统计

centos ×1

linux ×1

software-raid ×1