linux 解析文件系统原理

inode and Block

查询lnode df -i 定义能够创建多少的文件

由于扇区(sector)太小只有512字节,所以读取时将多个扇区组合为“块(block)”,“块”是文件存取的最小单位,一般为4kb。数据全部存储于Block,而“元信息”就是目录,比如文件的所属用户,所属组,类型,权限,时间等,这种存储元信息的叫做“inode”,中文叫索引节点,也叫i节点。
inode不包含文件名,文件名是存储在目录的目录项中,一个文件必须占用一个inode,最少一个

  • 查看文件的inode信息:stat 文件名

    • 文件的字节数
    • 文件拥有者的User ID
    • 文件的Group ID
    • 文件的读、写、执行权限
    • 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
    • 链接数,即有多少文件名指向这个inode
        * 文件数据block的位置

  • inode 号码
    目录文件的结构

    文件系统访问文件的步骤:

    1. 用户在目录中看到要访问的文件名
    2. 通过目录的数据找到对应的inode号
    3. 通过inode号,获取inode信息
    4. 根据inode信息,找到文件数据所在的block

    inode一般为128字节或者256字节,记录inode号占用字节一般为4字节
    12个直接连接,共占用48字节磁盘空间,包含12个直接指向block号信息
    间接是inode记录的4字节的block号中,存储的的真实文件的block号,若每个block大小为4字节,也就是4096字节,可以存放1024个block号信息,一个间接可以存放4096KB。
    双间接就是在间接的基础上再次间接,也就是102410244=4096MB
    三间接是继续扩充双间接102410241024*4=4096G

    也就是说一个block默认4字节,最大可以存储48kb+4096kb+4096mb+4096g

  • 查看inode号

    ls -i stat

    文件的存储对照:
    文件名-->目录项
    元信息-->inode
    数据-->block
    SuperBlock里面存储的文件系统所有的inode,block信息

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

    格式:find ./ inum inode号 -exec rm -i {};

    查找3天内修改的文件,、并复制到/tmp下
    find /root/ -mtime -3 -a -type f -exec cp {} /tmp \;

  • 查看文件系统的inode与block信息

    df -i 设备名
    dumpe2fs -h 设备名
    tune2fs - 设备名

  • 格式化指定系统的inode个数与block大小

    格式:mkfs.ext4 -N inode 数 -b 块大小 设备名

  • 解决inode耗尽导致的磁盘损坏

    1. 删除不使用的文件
    2. 修改位置

linux文件系统软硬连接原理

  • 硬链接

    方法:ln 源文件 目标文件
    特点:硬链接指向的文件inode号,新生成的硬链接文件inode号与源文件的inode号相同
    文件内容是一样的,且只要根据inode号修改的,都会改变,文件是同一个文件,只是多一个目录项,必须是同一个文件系统

  • 软连接

    方法:ln -s 源文件 目标文件
    新生成的软连接文件inode号与源文件不同,软连接文件里的是可以自动导向源文件的路径,可以跨设备建连接,并且目录也是可以建立软连接的,互相影响。

posted @ 2021-08-29 19:31  whml  阅读(182)  评论(0编辑  收藏  举报