• Uncategorized

About linux : Getting-the-percentage-of-used-space-and-used-inodes-in-a-mount

Question Detail

I need to calculate the percentage of used space and used inodes for a mount path (e.g. /mnt/mycustommount) in Go.

This is my attempt:

var statFsOutput unix.Statfs_t

err := unix.Statfs(mount_path, &statFsOutput)
if err != nil {
    return err

totalBlockCount := statFsOutput.Blocks // Total data blocks in filesystem
freeSystemBlockCount = statFsOutput.Bfree // Free blocks in filesystem
freeUserBlockCount = statFsOutput.Bavail // Free blocks available to unprivileged user

Now the proportion I need would be something like this:

x : 100 = (totalBlockCount - free[which?]BlockCount) : totalBlockCount

i.e. x : 100 = usedBlockCount : totalBlockCount . But I don’t understand the difference between Bfree and Bavail (what’s ‘unprivileged’ user go to do with filesystem blocks?).

For inodes my attempt:

totalInodeCount = statFsOutput.Files
freeInodeCount = statFsOutput.Ffree
// so now the proportion is
// x : 100 = (totalInodeCount - freeInodeCount) : totalInodeCount

How to get the percentage for used storage?
And is the inodes calculation I did correct?

Question Answer

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.