PowerFlex:K8s CSI Driver for PowerFlex v1.2.1 在 xfs 格式上具有低索引节点

摘要: PowerFlex:由于缺少可用索引节点,用户不能拥有包含超过 4 亿个文件的卷。

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

客户使用 CSI Driver for PowerFlex 版本 1.2.1 将 PowerFlex 卷格式化为 XFS 文件系统类型。

症状

索引节点大小变为 256 字节 (isize=256) 通过 CSI 驱动程序版本 1.2.1 从 2 TB PowerFlex 卷创建 XFS 文件系统时。此外,CRC 处于禁用状态 (crc=0),虽然它是 isize=512 以前。

适用于 PowerFlex 的 CSI 驱动程序版本 1.2.0 中不存在此问题。

索引节点大小变为 512 字节 (isize=512) 并且 CRC 处于启用状态 (crc=1) 从 2 TB PowerFlex 卷创建 XFS 文件系统时 mkfs.xfs 具有默认选项的 Linux 命令: 

XFS 文件系统

参见 mkfs.xfs 的手册页: mkfs.xfs(8) — Linux 手册页  (外部链接)

Size=value (isize)

信息节点大小可以指定为 size= 的字节值,也可以指定为文件系统数据块中的数字拟合 perblock=

最小(和默认值)为 256 字节(不带 crc);512 字节(启用 crc)。

crc=value 用于创建一个文件系统,用于维护和检查磁盘上所有元数据对象中的 CRC 信息。

值为 0 以禁用该功能,或为 1 以启用 CRC 的使用。默认情况下, mkfs.xfs 启用元数据 CRC。

影响:由于缺少可用索引节点,用户不能拥有包含超过 4 亿个文件的卷。

原因

根本原因不在于 PowerFlex 软件端,而在于 CSI 驱动程序端。

借助 CSI 驱动程序,一个名为 gofsutil 在内部用于与文件系统格式化作交互,并且有强制格式化的副作用 crc=0 在该库中: https://github.com/dell/gofsutil/blob/v1.4.0/gofsutil_mount_linux.go#L133 (外部链接)

此问题引入了通用基础映像 (UBI) 版本更改,其中包含 gofsutil 对于 CSI Driver for PowerFlex 版本 1.2.1: https://github.com/dell/csi-powerflex/compare/v1.2.0...v1.2.1#diff-d947c64a65fbadc3496bff6bf4f3dd823c7300954d9072ddbd3f54513c2766b5R7  (外部链接)

 

mkfs.xfs 命令示例:

mkfs.xfs -i size=256 不允许;禁用“crc”需要它:

$ mkfs.xfs -i size=256 /dev/scinib
Minimum inode size for CRCs is 512 bytes

而 mkfs.xfs -m crc=0 option 获取具有以下功能的 XFS 文件系统: isize=256 和 crc=0,相当于 CSI 驱动程序 v1.2.1:

$ xfs_info /dev/scinib
meta-data=/dev/scinib            isize=256    agcount=4, agsize=134217728 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=536870912, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=262144, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

而 mkfs.xfs default option 获取带有 isize=512crc=1,这些值通常是预期的元数据值:

$ xfs_info /dev/scinib
meta-data=/dev/scinib            isize=512    agcount=4, agsize=134217728 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=536870912, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=262144, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

     

    解决方案

    这不是 PowerFlex 软件问题。

    CSI 驱动程序案例处理注意事项:

    • 通常,ViPR/SRM L2 团队是 CSI 相关问题的第一联系人。
    • 从 PowerFlex 软件的角度来看,PowerFlex L2(和 L3)团队可能会根据个案情况进行协作。
    • 请参阅 PowerFlex:Kubernetes CSI 上报的要求

    CSI Driver for PowerFlex 参考:

    受影响的产品

    PowerFlex rack, ScaleIO
    文章属性
    文章编号: 000373194
    文章类型: Solution
    上次修改时间: 09 12月 2025
    版本:  2
    从其他戴尔用户那里查找问题的答案
    支持服务
    检查您的设备是否在支持服务涵盖的范围内。