OpenCAS为缓存绑定后端存储失败

0x00 起因

最近为 Ceph 集群更换了一块故障的 NVME SSD 硬盘,原本是用作 OpenCAS 缓存的。新硬盘上线后,初始化缓存正常,但是在绑定后端存储硬盘的时候报错了,错误信息如下:

[xxx ~]# casadm -A -i 1 -d /dev/sdb
Error while adding core device to cache instance 1
Cache device logical sector size is greater than core device logical sector size.
Consider changing logical sector size on current cache device
or try other device with the same logical sector size as core device.
Error occurred, please see syslog (/var/log/messages) for details.

0x01 排查

首先根据提示分别查了一下缓存盘和存储盘的逻辑扇区大小,果然不一样,HDD 是 512B,而 NVME SSD 是 4K。

[xxx ~]# blockdev --getss /dev/sdb
512
[xxx ~]# blockdev --getss /dev/nvme0n1
4096

接着找了一台现网正常节点查看,逻辑扇区是一样的。

[xxx ~]# blockdev --getss /dev/sdb
512
[xxx ~]# blockdev --getss /dev/nvme0n1
512

那么我们只需要将 NVME SSD 的逻辑扇区大小改成 512B 即可。

0x02 意外

NVME SSD 的操作一般都通过 nvme-cli 命令行工具来处理,先通过 yum install nvme-cli -y 安装一下相关的工具。

可以再通过 nvme 命令看一下 NVME SSD 的相关信息:

NVME Identify Namespace 1:
nsze    : 0x1749a956
.
.
.
LBA Format  0 : Metadata Size: 0   bytes - Data Size: 512 bytes - Relative Performance: 0 Best
LBA Format  1 : Metadata Size: 0   bytes - Data Size: 4096 bytes - Relative Performance: 0 Best (in use)
LBA Format  2 : Metadata Size: 8   bytes - Data Size: 512 bytes - Relative Performance: 0 Best
LBA Format  3 : Metadata Size: 8   bytes - Data Size: 4096 bytes - Relative Performance: 0 Best
LBA Format  4 : Metadata Size: 64  bytes - Data Size: 4096 bytes - Relative Performance: 0 Best

我们只关注最后一段内容 LBA Format,这里可以看到有 5 种模式可选,而我们用的是 Format 1,根据上述内容,我们应该将 Format 改为 0 或 2 即可正常使用缓存绑定后端存储。

LBA Format 由 1 改为 0:

[xxx ~]# nvme format /dev/nvme0n1 -l 0
Success formatting namespace:1

然后我尝试格式化硬盘的时候报错了:

[xxx ~]# mkfs.xfs -f /dev/nvme0n1
.
.
.
existing superblock read failed: 输入/输出错误
mkfs.xfs: pwrite64 failed: 输入/输出错误

google 搜了一下也没有遇到过相关问题,接着查看一下硬盘的 SMART 信息,没想到这坑爹的 Intel 原厂售后给换的是 Memblaze 的 NVME SSD 硬盘,好在之前跟 MB 有过交流留了大佬们的微信,沟通之后发现是硬件太老,这个 BUG 在之前的固件已经修复了。

[xxx ~]# smartctl /dev/nvme0n1 -a
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-693.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       P5526DT0160T00
Serial Number:                      SH213300331
Firmware Version:                   294001H0
PCI Vendor/Subsystem ID:            0x1c5f
IEEE OUI Identifier:                0x38b19e
Total NVM Capacity:                 1,600,321,314,816 [1.60 TB]

0x03 恢复

拿到了针对 P5526DT0160T00 这个型号的固件 release_u2allbinary.tar,通过下面的操作更新固件,最终冷重启使之生效。

nvme fw-download /dev/nvme0n1 -f release_u2allbinary.tar
nvme fw-commit /dev/nvme0 -a1 -s 0
# poweroff & poweron

0x04 思考

  1. 为什么 OpenCAS 的缓存盘的逻辑扇区大小要小于等于后端存储硬盘的逻辑扇区大小?

    翻阅了一下 OpenCAS 的官方文档,Open CAS Linux - Admin Guide | Open CAS 这一段里面确实有说明:

    - Cache device logical block size must be smaller than or equal to the logical block size of the core storage device.
    

    我同时看了下 bcache 对这块的要求:

    block_size
      Minimum granularity of writes - should match hardware sector size.
    

    bcache 限制更严格,要求缓存的块大小就等于后端硬件的扇区大小。

    我个人理解应该是为了缓存下刷的时候减少对数据的处理,避免额外性能损失。

  2. NVME SSD 的 LBA Format 除了 0 以外,2 的逻辑扇区大小也是 512B,那么多出来的 8B Metadata 是做什么用的?
    通过网上检索的 MemBlaze 的官方博客,发现一篇文章有相关的说明。PBlaze5 920 系列 NVMe SSD——可变 Sector Size 管理,简单总结下这里的 8B Metadata 是为了端到端数据保护功能保留的,用于该功能需求的 PI(Protection Information)数据传输与校验。

    然后顺手去看了下 Intel SSD 的 LBA Format 支持情况:

    LBA Format  0 : Metadata Size: 0   bytes - Data Size: 512 bytes - Relative Performance: 0x2 Good (in use)
    LBA Format  1 : Metadata Size: 0   bytes - Data Size: 4096 bytes - Relative Performance: 0 Best
    

    果然只有两种 Metadata Size 为 0 的格式,说明这款 Intel 的 SSD 不支持端到端数据保护。

鸣谢

MB范总和高总协助排查硬盘问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LPrintf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值