• 关于 inode 与 iblock 的知识


    转载(http://www.mamicode.com/info-detail-1172424.html

    iNode:索引节点(index node)

    • iNode是用来存储数据属性信息的;
    • iNode包含的属性包括:文件大小、属组、归属的用户组、读写权限、文件类型、修改时间、还包括指向文件实体的指针功能(iNode节点和block的对应关系);
    • iNode不包括文件名。

    Block 是用来存储实际数据的。

     理解:可以把iNode理解为一本书的目录,block理解为书的每一页。

    iNode小结:

    1. 磁盘分区格式化为ext4文件系统后会生成一定数量的iNode和block;
    2. iNode是索引节点,作用是存放文件的属性信息以及文件的索引(指向文件的实体block);
    3. ext3/ext4文件系统的block存放的是文件的实际内容;
    4. Block的大小一般有1k,2k,4k,其中引导分区为1k,其他分区为4k;
    5. inode是一块磁盘存储空间,centos6非启动分区iNode默认大小256字节,centos5是128字节;
    6. iNode是一串数字,不同的文件对应的iNode在文件系统里是唯一的。;
    7. iNode号相同的文件,互为硬链接文件(硬链接就是文件的又一个入口);
    8. 一个文件被创建后至少要占用一个iNode和一个block;
    9. 如果一个文件很大,可能占多个block;
    10. 如果文件很小,也要至少占一个block,并且剩余空间不可以使用,浪费了;
    11. iNode大小和总量查看:
      1. dumpe2fs  /dev/sda3|egrep -i “block size|inode size”
      2. dumpe2fs  /dev/sda3|egrep -i “block count |inode count”
    12. 查看iNode的总量和使用量命令df -i;
    13. 生成和指定iNode大小,mkfs.ext4 -b 2048 -I 256 /dev/sdb。

    Block 小结:

    1. 磁盘读取数据是按block为单位读取的。
    2. 一个文件可能占多个block,每读取一个block就会消耗一次磁盘I/O;
    3. 如果要提升磁盘I/O性能,那么就要尽可能一次读取数据多;
    4. 一个block只能存放一个文件的内容,无论内容有多小,如果block为4K,那么存放1k的文件,剩余的就浪费了;
    5. Block并非越大越好,block太大对于小文件存放就会浪费磁盘空间;
    6. 大文件(大于16K)一般设置block大一点,小文件(小于1k)一般设置小一点;
    7. Block太大例如4K,文件都是0.1k,太浪费磁盘空间;
    8. Block太大例如1k,文件都是1000K,消耗磁盘IO;
    9. 文件较大时,block设置大点会提升磁盘访问效率;
    10. ext3/ext4文件一般设置成4k。

    用一道题目练习对于iNode和block的理解:

    题目1:一个100M(block的总大小,个数和单个block大小有关)的磁盘分区,分别写入0.5K的文件和写入1M的文件,分别可以写多少个?为什么?

        解题思想:先说明要考察的知识

    1. iNode是存放文件属性信息的,默认大小是128字节(c5),256字节(c6);
    2. Block是存放文件实际内容的,默认大小1K(boot)或4K(非系统分区默认为4k);
    3. 一个文件至少要占用一个iNode以及一个block;
    4. 默认分区常规情况下,iNode数量是足够的,而block数量消耗的会更快。

        答题:

    1. 默认分区常规情况下,对文件来说inode是足够的,而block数量消耗的会更快,block为4k的情况,1M的文件不会有磁盘浪费请况,所以文件数量数量大概为100/1=100个;
    2. 对于小文件0.1k,iNode会消耗的更快,默认分区的时候block数量是大于iNode数量的。每个小文件都会占用一个iNode和一个block,所以最终文件的数量为:iNode会先消耗完,文件总量是iNode的数量。

    题目2、如果向磁盘写入数据提示如下错误:NO space left on device,通过df -h查看磁盘空间,发现没满,请分析原因是什么?

        解答:可能是iNode数量被消耗完了。

        原因一般为:

        企业工作中邮件临时队列/var/spool/clientmquene这里很容易被大量小文件沾满导致NO space left on device的错误,clientmquene目录只有安装了sendmail服务,才会有,centos5.8默认会床sendmail,centos6.6默认没有装sendmail。

        Centos6改装了postfix服务,因此邮件的路径为/var/spool/postfix/maildrop/

        以上两个目录很容易被垃圾文件填满导致系统的iNode数量不够,从而导致无法存放文件。

     

  • 相关阅读:
    单实例应用程序程序
    Jquery自定义滚动条插件
    Js的封装和闭包
    Js 鼠标拖拽div改变其大小
    在小组里遇到的一个让我产生迷惑的题
    一个用来快速生成指定大小的随机不重复int数组的实用方法
    动态绑定ASPxGridView选中状态
    “??”操作符
    小笔记系列——Word 添加行号
    日志 查看匹配内容的前后几行
  • 原文地址:https://www.cnblogs.com/qkloveslife/p/9219867.html
Copyright © 2020-2023  润新知