Understanding XFS inode limits

filesystemsinodexfs

I reached the inode limit on my XFS partition. There are plenty of questions about this. Some suggest the answer is to increase the maximum percentage of space allocated for inodes. Or, as the xfs_growfs manpage puts it:

-m Specify a new value for the maximum percentage of space in the filesystem that can be allocated as inodes.

I tried this, but I'm not sure what I'm seeing. The default was 25% when I hit the limit. That gave me 409,600,129 inodes on a 781GB disk image.

I increased it to 100%, and it now will allow me 1,566,536,296 inodes.

$ df -i
Filesystem                        Inodes     IUsed      IFree IUse% Mounted on
...
/dev/loop3                    1566536040 409600129 1156935911   27% /mnt/tiles

I expect to write over 2 billion entries (mostly symlinks), so even at 100% it is not sufficient. It was my understanding that XFS can support much greater quantities of files, so I think I'm missing something.

I tried remounting with -o inode64, but there was no difference. (This option should be default anyway).

$ 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

Is the size of my drive insufficient? Or is there some other configuration or limitation I'm unaware of? Why is 100% allocation for inodes only equal to 1.5GB?

Best Answer

While you increased the maximum space inodes can use, you probably have too little free space to support over >1.5B inodes. As each inodes uses about 512 bytes, I estimate you have ~750 GB of free/available space.

Try freeing some space and/or expanding you filesystem.