XFSパーティションのiノード制限に達しました。これについてはたくさんの質問があります。一部の人は、答えはiノードに割り当てられるスペースの最大パーセンテージを増やすことであると示唆しています。または、xfs_growfs
のマンページに次のように記述されています。
-m iノードとして割り当てることができるファイルシステムのスペースの最大パーセンテージの新しい値を指定します。
私はこれを試しましたが、何が見えるかわかりません。制限に達したときのデフォルトは25%でした。これにより、781GBのディスクイメージに409,600,129のiノードができました。
100%に増やしたところ、1,566,536,296のiノードを使用できるようになりました。
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
...
/dev/loop3 1566536040 409600129 1156935911 27% /mnt/tiles
20億を超えるエントリ(主にシンボリックリンク)を書き込むことを期待しているため、100%でも十分ではありません。 XFSがはるかに多くのファイルをサポートできることを理解していたので、何かが足りないように思います。
-o inode64
で再マウントしてみましたが、違いはありませんでした。 (このオプションはとにかくデフォルトでなければなりません)。
$ Sudo xfs_growfs -m 100 .
meta-data=/dev/loop3 isize=512 agcount=4, agsize=51200000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1 spinodes=0 rmapbt=0
= reflink=1
data = bsize=4096 blocks=204800000, imaxpct=100
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=100000, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
inode max pct unchanged, skipping
ドライブのサイズは不十分ですか?または、私が知らない他の構成または制限はありますか? iノードの100%割り当てが1.5GBに等しいのはなぜですか?
Iノードが使用できる最大スペースを増やしましたが、おそらくfreeスペースが少なすぎて、1.5Bを超えるiノードをサポートできません。各iノードは約512バイトを使用するため、約750 GBの空き容量または空き容量があると思います。
スペースを解放するか、ファイルシステムを拡張してください。
信じられないかもしれませんが、構成されたボリュームは、達成しようとしているものに対して小さすぎます。巡回冗長検査(現在のデフォルト)を使用する場合のXFSの最小iノードサイズは512バイトです。 20億のシンボリックリンク、リンクあたり512bは、これらのiノードをすべて格納するために、少なくとも953 GBまたは1 TB(10億の定義に応じて)が必要であることを意味します。
そのボリュームを再フォーマットできる場合は、目的に合わせてボリュームを変更できます。
-i maxpct=90
mkfsプロセス中に、90%のスペースをiノードとして使用できる新しいボリュームが作成されます。ハードウェアに適合しませんが、これでどれだけスローできるかを変更できれば、xfsがほぼすべてのスペースを使用してシンボリックリンクを追跡できるようになります。-m crc=0 -i size=256
mkfsプロセス中にCRCサポートを無効にし、inodeサイズを半分にします。このオプションは、ハードウェアの問題から防御しないという犠牲を払って、現在のハードウェアに適合します。