PowerFlex:PowerFlex v1.2.1用K8s CSIドライバーは、xfsフォーマットでinodeの値が低い
概要: PowerFlex:空きinodeがないため、ユーザーは4億個を超えるファイルを含むボリュームを持つことができません。
現象
お客様は、CSI Driver for PowerFlexバージョン1.2.1を使用して、PowerFlexボリュームをXFSファイル システム タイプとしてフォーマットします。
現象
i ノードのサイズは 256 バイト (isize=256CSIドライバー バージョン1.2.1を使用して2TB PowerFlexボリュームからXFSファイル システムを作成する場合。また、CRCは無効になります(crc=0)は、 isize=512 以前は。
この問題は、CSI Driver for PowerFlexバージョン1.2.0には存在しませんでした。
i ノードのサイズは 512 バイト (isize=512)で、CRCが有効(crc=1)を使用して2TB PowerFlexボリュームからXFSファイル システムを作成する場合 mkfs.xfs デフォルト オプションを指定したLinuxコマンド:

cf. mkfs.xfs のマニュアルページ: mkfs.xfs(8) — Linux マニュアルページ (外部リンク)
Size=value (isize)
inodeのサイズは、size=でバイト単位の値で指定するか、ファイルシステムブロックに収まる数字で指定します。 perblock=の詳細を確認してください。
最小値(およびデフォルト値)は、crcなしでは256バイト、crcを有効にした場合は512バイトです。
crc=value は、ディスク上のすべてのメタデータ オブジェクトでCRC情報を維持およびチェックするファイル システムを作成するために使用されます。
値は、機能を無効にする場合は0、CRCの使用を有効にする場合は1です。デフォルトでは、 mkfs.xfs メタデータCRCを有効にします。
影響:空きinodeがないため、ユーザーは4億個を超えるファイルを含むボリュームを持つことができません。
原因
根本原因はPowerFlexソフトウェア側ではなく、CSIドライバー側にあります。
CSIドライバでは、Goライブラリと呼ばれる gofsutil は、ファイルシステムのフォーマット操作と対話するために内部的に使用され、フォーマットを強制することの副作用があります。 crc=0 in that library: 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 オプションは、 isize=512 と crc=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 L2(およびL3)チームは、PowerFlexソフトウェアの観点から、ケースバイケースでコラボレーションに対応できる可能性があります。
- 詳細については、「 PowerFlex: Kubernetes CSIエスカレーションの要件
CSI Driver for PowerFlexのリファレンス:
csi-powerflex(CSI Driver for PowerFlex):https://github.com/dell/csi-powerflex(外部リンク)gofsutil(マウント、フォーマットなどのファイルシステム関連の操作用のGoライブラリ):https://github.com/dell/gofsutil( 外部リンク)