zoukankan      html  css  js  c++  java
  • Linux系统——inode和block

    Linux文件属性

    磁盘被分区并格式化为ext4文件系统后,会生成一定数量的inodeblock

    Inode 索引节点

    作用:存放文件的属性信息以及作为文件的索引(指向文件的实体block

    Block存放的是文件的实际数据

    iNode存放文件的属性信息以及指向文件实体的指针(block的位置),文件名不在iNode里一般在上级目录的block

    系统内部打开文件的步骤

    访问文件的过程,通过文件名(上一级目录的block)——>inode ——>blocks

    (1)系统找到这个文件名对应的inode号码

    (2)通过inode号码,获取inode信息

    (3)根据inode信息,找到文件数据所在的block,读出数据

    查看inode时,存在三个时间显示,分别是Atime、Mtime、Ctime

    Atime:访问时间 查看命令# ls -lu

    Mtime:修改内容时间 查看命令# ls -l

    Ctime:改变时间(修改文件名、权限等等) 查看命令# ls -lc

    inode是磁盘的一块存储空间,CentOS6版本中默认大小256字节

    inode的表现形式是一串数字,不同的文件对用的inode在文件系统里是唯一的

    inode节点号相同的文件,互为硬链接文件,可认为是一个文件的不同入口

    ext4文件系统下,一个文件至少要占用一个inode和一个block(在文件size比较大的情况),多个文件可以占用同一个inode(硬链接),相同文件;正常情况下,一个文件只能占用一个inode

    可以再格式化的时候改变inodeblock的大小

    查看文件inode号码

    # ls -i 文件名

    # stat 文件名

    删除指定的inode号对应的文件

    # find ./ -inum inode-exec rm -i {} ;

    查看文件系统的inodeblock的信息

    # df -i 设备名(在已挂载状态下查询,查询inode总数与已用数量)

    # dumpe2fs -h 设备名 (无需挂载)

    # tune2fs -l 设备名 (无需挂载)

    查看inode版本

    # cat /etc/redhat-release

    # dumpe2fs 目标磁盘 | grep -i “inode size”

    格式化时指定文件系统的inode个数与block大小

    # mkfs.ext4 -N inode -b 块大小(单位字节)设备名

    解决inode耗尽导致的磁盘故障

    (1)删除不使用文件

    (2)将文件备份,重新格式化此文件系统,指定较多的inode个数

    查看inodeblock的使用量

    # df -l

    Block

    磁盘读取数据是按block为单位读取的

    一个文件可能占用多个block,每读取一个block就会消耗一次磁盘I/O;如果要提升磁盘I/O性能,就要尽可能一次性读取多的数据

    block是用来存储实际数据的,每个block的大小一般只有1k,2k,4k,其中引导分区等为1k,其他普通法分区多为4k

    如果一个文件很大,需要占用多个block,如果文件很小,知道占一个block,并且这个block的剩余空间浪费,即无法再存储其他数据

    企业里文件都会比较大(一般会大于4k),block设置大一些会提高磁盘访问效率(一般选4k

    一个100M100000K)的磁盘分区,分别写入1K的文件或写入1M的文件,分别可以写多少个?

    1K虽然小,但block一般默认4K,即使1K的数据也会占用4K大小,存储数据小号blockinodeinode默认256K,每个文件指导占用一个block的同时还会占用一个inode1M的数据刚好被4整除,不会浪费空间,大约100个左右,inode充足。

    如果向磁盘写入数据提示如下错误:No space left on device, 通过df -h查看磁盘空间,发现没满,请问可能原因是什么?企业场景什么情况下会导致这个问题发生?

    最可能原因是inode被耗尽;企业工作中右键临时队列/var/spool/postfix/maildrop这里很容易被大量的恶小文件占满导致No space left on device的错误。

  • 相关阅读:
    泛海精灵Alpha阶段回顾
    [Scrum]1.6
    【Scrum】1.5
    泛海精灵 Beta计划 (草案)
    【scrum】1.7
    学术搜索的Bug
    Linux下查看文件和文件夹大小
    求7的34次方
    去除给定的字符串中左边、右边、中间的所有空格的实现
    身份证18位验证
  • 原文地址:https://www.cnblogs.com/daisy118/p/9853777.html
Copyright © 2011-2022 走看看