首页 > 其他 > 详细

f_bfree和f_bavail的区别

时间:2014-04-14 17:38:28      阅读:880      评论:0      收藏:0      [点我收藏+]

Linux系统开发中,在使用statfs统计分区空间时,要注意f_bfree和f_bavail两个值的区别。
实验一下:
以/boot分区为例,上面使用C代码查看分区信息,下面使用系统命令df查看分区信息

#include <stdio.h>
               
#include <sys/vfs.h>
int main()
{
    struct statfs sfs;
    int i = statfs("/boot", &sfs);
    int percent = (sfs.f_blocks - sfs.f_bfree ) * 100 / (sfs.f_blocks -
sfs.f_bfree + sfs.f_bavail) + 1;
    printf("/dev/sda1 %ld %ld %ld %d%% /boot\n",
                           4*sfs. f_blocks, 4*(sfs.f_blocks - sfs.f_bfree),
    4*sfs.f_bavail, percent);
    system("df /boot ");
    return 0;
}

bubuko.com,布布扣

#include <stdio.h>
        
#include <sys/vfs.h>
int main()
{
    struct statfs sfs;
    int i = statfs("/boot", &sfs);
    int percent = (sfs.f_bfree - sfs.f_bavail ) * 100 / sfs.f_blocks;
        printf("/dev/sda1 free=%ld avail=%ld block=%ld block-free=%ld percent=%d%% /boot\n", 4*sfs. f_bfree, 4*sfs. f_bavail, 4*sfs. f_blocks, 4*(sfs.f_bfree - sfs.f_bavail), percent);
        return 0;
}

bubuko.com,布布扣

可以看到f_bfree和f_bavail两个值的区别,前者是硬盘所有剩余空间,后者为非root用户剩余空间。一般ext3文件系统会给root留5%的独享空间。所以如果计算出来的剩余空间总比df显示的要大,那一定是你用了f_bfree。 5%的空间大小这个值是仅仅给root用的,普通用户用不了,目的是防止文件系统的碎片。  

本文出自 “老徐的私房菜” 博客,谢绝转载!

f_bfree和f_bavail的区别,布布扣,bubuko.com

f_bfree和f_bavail的区别

原文:http://laoxu.blog.51cto.com/4120547/1395231

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!