硬盘问题调试成果问答:

1. 现在服务器的硬盘是怎么分区的?
   
   1s = 512B

sda:GPT
Number  Start        End          Size        File system  用途
 1      2048s        195311615s   195309568s   ext4        dom0
 2      195311616s   5000001535s  4804689920s  xfs         iso 等大文件仓库
 6      5000001536s  5242882047s  242880512s   ext4        domU
 5      5242882048s  5860532223s  617650176s   btrfs       lxc pool

sdc:GPT
Number  Start        End          Size         File system  用途
 1      2048s        5242882047s  5242880000s  ext4         仓库
 2      5242882048s  5860532223s  617650176s   btrfs        lxc pool

sd{b,d}: 全盘GPT单分区仓库

注:为了直接使用 sda6 ,不加 MBR 引导,改用了 pygrub,并把 domU 的虚拟模
式从 PV-on-HVM 改成了 PV.

2. sda 真的坏了吗?

   第1答中,sdc2 与 sda5 使用完全相同的硬盘的完全相同的地址,连续写入的速
   度分别为80MB/s 和 110MB/s (把 cache 写饱和之后观察到的恒定速度)

   因为 sda 上还有其它分区在使用时会有多余的寻道,会对测试结果产生影响。

   sda2 分区在 sda 比较靠前的位置,使用 xfs ,连续写入速度为 25MB/s.

   SMART short 和 long selftest 都没有发现问题。

   最终回答:95% 可能坏了。如果要 100% 确定说它坏了,需要拆下来线下测连续
   和随机读写速度。

3. 怎么坏的呢?这是新硬盘啊!
   
   无法排除以下的因素:

   a. 这块硬盘质量不好,出厂时就坏了

   b. 被我们非常规地用坏了:
      b1. sda 中创建分区后,把分区当作硬盘映射到 domU ,再在 domU 里创建
      分区表使用。很可能导致分区中分区的 sector size 与实际硬盘的错位。但是粗略地计
      算分区中分区的 offset 表明没有错位,可能是有其它因素影响 offset。

      这个原因简称为“分区套分区”

      b2. sda 中的分区被 xen (blkfront) 映射进 domU 后,

          /sys/block/xvda2/queue/rotational

      的值为 0, 因此被 btrfs 当作 ssd 处理。错位的随机写入会非常多,导致
      硬盘频繁寻道。

      这个原因简称为"btrfs ssd 误判"

      b3. 第2答中,sda2 与 sda5 的写入速度相差非常大 (25MB/s vs 80MB/s),
      而 sda2 所在的硬盘区域恰好是从前 分区套分区 + btrfs ssd 误判的区域。
      令人怀疑两者的关联。


4. sda 速度慢跟 SMART 报的 seek error 有关吗?

   不知道。

   现在很可能已经无关。

   清除 sda 上的分区套分区之后,平均 seek error 从 0.08% 下降到 0.06%. 我
   们需要再观察几天。

5. 换不换硬盘了?

   我的主张:换,因为 sda 的写入速度已经这么低了是事实。seagate 给返厂最
   好,即使不能给返厂我们也买一个新的。

   征求大家的意见。

征求大家的意见。   

-- 

--- 
您收到此邮件是因为您订阅了 Google 网上论坛的“TUNA 主邮件列表”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 [email protected]。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。

回复