硬盘问题调试成果问答:
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。