Articles of io

在同一台机器上的两个磁盘的戏剧性磁盘I / O性能差异

通过Citrix Xen虚拟化的小型机器(1核,1 GB RAM,CentOs 6.3)具有3个大小完全不同的虚拟磁盘。 > cat /etc/fstab (snippet) … /dev/mapper/vg_stagingnfs-lv_root / ext4 defaults 1 1 # on /dev/xvda /dev/disk/by-uuid/8048fd86-3aa3-4cdd-92fe-c19cc97d3c2e /opt/xxx/data/nexus ext4 defaults 0 0 /dev/disk/by-uuid/58f16c69-786e-47d0-93ae-d57fb0cbd2a9 /opt/xxx/data/nfs ext4 defaults 0 0 > mount (snippet) … /dev/mapper/vg_stagingnfs-lv_root on / type ext4 (rw) /dev/xvdb1 on /opt/xxx/data/nexus type ext4 (rw) /dev/xvdc1 on /opt/xxx/data/nfs type ext4 (rw) > df […]

我怎样才能看到哪个设备被一个进程使用?

iotop和iostat是查看有多lessI / O正在发生的好工具。 但我还没有发现这些(或其他)工具如何显示每个设备和每个进程的I / O速率。 所以我正在寻找一种方法让iostat显示特定的进程,或者让iotop在限定一个进程时显示每个设备的I / O。 或者另一个工具,可以让我洞察一个进程使用哪个设备。 我需要这个来更好地控制在具有Fusion I / O卡的盒子上优化MySQL,但是它仍然很慢。

如何使用SSD对maxCache 3.0进行基准testing?

我们是一家软件开发公司,之前外包了硬件方面的业务,但现在我们正在研究构build自己的私有云。 我们最近购买了几台服务器,其中一台应该是中央存储设备。 规格如下: 机箱:CSE-826BE16-R920LPB主板:Supermicro X10SLL-F CPU E3-1200v3,Intel C222,2GbE,最高32GB DDR3 ECC,2xSATA3,4xSATA2,4xDDR3 IPMI 1x CPU Intel Xeon E3-1220v3 – 3.1GHz,8MBcaching,4核,HT,LGA1150,80W 1个散热器SNK-0046A4 Activ 2U 4x 8GB三星M391B1G73QH0-CK0 1600MHz DDR3 ECC无缓冲2R×8 2x SSD 80GB Intel DC S3500系列2,5“SATA3,读取340 MB / s,写入100 MB / s 10倍速硬盘2TB希捷Constellation ES.3 ST2000NM0023 3,5“SAS2,7200rpm,128MB 希捷硬盘被设置为RAID 6arrays。 SSD位于RAID 1中,充当maxCache容器,使用maxView Storage Manager打开和closures。 我的第一个问题 – 这种configuration对于私有云的中央存储是否有意义,我们计划在其中有两个CPU和其上的大量RAM的其他3个计算节点? 我的第二个问题 – 具有较less硬盘驱动器的类似configuration对于具有多个并发请求的报告系统的MySQL数据库服务器是否合理? 或者更有意义的是在创build临时表的MySQL临时空间中使用SSD。 […]

htcacheclean似乎并没有清理caching

我运行mod_cache与apache 2在相当高traffic'd网站上。 我已经设置htcacheclean每隔10分钟以恶魔模式运行,以保持caching在4GB。 它目前在15GB,似乎并没有缩小。 当我手动调用htcacheclean时,挂起(写入时)40分钟。 一些初步的研究发现了这个问题 Apache的htcacheclean不能扩展:如何驯服一个巨大的Apache disk_cache? 说我应该确保index_dir是打开的,看起来好像是 # tune2fs -l /dev/sda3 | grep dir_index​ Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize 有其他设置,我可以打开/确保打开,以帮助htcacheclean跟上caching生成?

Gridfs上的Mongodump正在杀死主机IO

我试图在生产运行时从我们的生产mongodb中制作一个mongodump。 我们有三个生产实例,一个是正常的mongodb,一个在gridfs上的数据量很less,一个在gridfs上的数据量很大。 所有mongodb实例在ubuntu 10.04虚拟服务器上运行于2.4.9版本。 我使用mongodump命令将基地导出到另一台服务器。 不幸的是,我们的机器实际上是托pipe在一个“低性能”数据中心(基于VMware的),所以当我尝试导出大型网格数据库时,磁盘IO达到100%(并且50%的cpu也开始等待IO)。 这对生产应用程序有非常不利的影响,因为db访问时间过度增加,使应用程序无法使用。 我正在寻找一种方法来调节mongodump,因此出口在硬件资源上变得更慢但更冷,从而为应用程序提供更好的性能。 有没有人有类似的情况?

IO任务很容易在3Ware 9650SE上挨饿

我有一个3Ware 9650 SE RAID控制器的服务器(Debian 6 LTS)。 有两个arrays,一个RAID1,一个RAID6。 它运行Xen 4.0,大约有18个DomU。 问题是我经历过IO任务很容易饿死对方。 当一个DomU产生大量的IO,一次只能阻止其他的IO,但是也发生在dd'ing之后。 要将DomU从繁忙的RAIDarrays中移出,我使用了dd。 在这样做的时候,我的Nagios不仅报告其他虚拟机没有响应,我在Dom0上得到了这个通知: [2015-01-14 00:38:07] INFO: task kdmflush:1683 blocked for more than 120 seconds. [2015-01-14 00:38:07] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [2015-01-14 00:38:07] kdmflush D 0000000000000002 0 1683 2 0x00000000 [2015-01-14 00:38:07] ffff88001fd37810 0000000000000246 ffff88001f742a00 ffff8800126c4680 [2015-01-14 00:38:07] ffff88000217e400 00000000aae72d72 000000000000f9e0 ffff88000e65bfd8 [2015-01-14 […]

如何确保I / O请求恢复到正常速度?

在amazon web services上我使用一个t2.small EC2实例作为VPS服务于LAMP(PHP)堆栈上的一些网站。 我刚刚打了一张账单,几乎是我通常账单的三倍。 我看到我的I / O请求使用率非常高 。 我login到服务器,发现磁盘已满。 我已经删除了一堆非关键的文件和日志,磁盘(EBS)现在的容量小于60%,但我想检查两件事情。 如何判断I / O请求数量是否是由于磁盘空间不足造成的? 我怎么知道我是否还在烧I / O请求? 我没有启用AWS特定的CloudWatch监控服务,所以我可能不会得到#1的答案,但任何build议,将不胜感激。 关于#2,我使用了这篇文章中提到的两种方法来确定我的I / O率,看起来非常高。 以下是服务器的一些统计数据: $ iostat Linux 3.13.0-45-generic (dysphoria) 2015-10-08 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 2.74 0.01 0.69 16.83 0.43 79.30 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn xvda 170.08 10039.29 32.52 843300857 […]

提高EBS快照支持卷的I / O速率

我正在使用一个系统,为了灾难恢复的目的,每个卷需要一组42个每日EBS快照。 EBS卷被聚合到一个RAID卷中。 通过在拍摄快照期间冻结文件系统来拍摄一组一致的快照。 每个单独的数量只有2个TiB。 在灾难恢复testing期间,发现从应用数据(PostgreSQL数据库,许多大型表)中复制超过24小时的应用数据(PostgreSQL数据库,许多大表),从快照创build的EBS快照支持的卷中复制到新的非快照支持卷支持卷。 由于在不同的子树上同时工作了8个rsyncs,所以在副本中具有相当的并行性。 如果数据没有被复制到新的EBS卷上,那么基于PostgreSQL的应用程序就像蜂蜜一样运行了很多天,据推测,直到EBS卷的块已经被弄脏,所以它们现在直接在EBS卷上,而不是来自快照。 通过这种方式,从一组非快照支持的EBS卷到另一个卷的相同数据的副本只需要几个小时,而使用类似规模的“真实”硬件就可以less得多。 为什么我会看到快照支持的卷和普通卷之间的这种极端的性能差异? 我的假设是,它正在写拷贝,所以干净的块,因为快照必须单独提取保持不变。 如果有大量的快照支持这个卷,那么大概有一些困难,快速find它出现在最近的快照中的块并获取它。 有没有什么办法可以强制AWS从快照中有效且线性地预先填充整个新的EBS卷,而不是像实际上似的那样进行懒惰的写入时复制? 任何其他的想法解决这个? 如果恢复需要一天以上的时间,DR的一组快照则不太有用。

读取/写入SNMP值的字节与iostat不同

我试图通过SNMP监视我的服务器和UCD-DISKIO-MIB::diskIONRead.1给我1344574464而iostat报告9701669 kB_read 。 为什么这个差距? 我不必提及我正在监视正确的磁盘,所以这不是原因。

e2fsck需要很长时间才能运行

我在我的一个磁盘分区(ext4)上运行e2fsck,但似乎需要永恒。 它已经运行了近10个小时左右,仍然在42%。 分区的大小约为800Gig,整个磁盘大小(分区所在的)大约为1TB。 运行iostat显示以下输出: iostat -xzhcd /dev/sdc 2 5 Linux 3.13.0-37-generic (divick-desktop) Monday 03 April 2017 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 2.97 0.00 0.41 50.22 0.00 46.40 Device: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 49.12 0.00 6.87 0.00 223.95 0.02 65.20 1.01 147.22 145.40 […]