ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

一起深入理解Linux文件系统与日志文件

2021-02-18 10:29:46  阅读:166  来源: 互联网

标签:文件 号码 文件名 文件系统 未完待续 Linux 日志 inode


深入理解Linux文件系统与日志文件

block与inode

inode和block概述

  • 文件数据包含元信息与实际数据,元信息存储inode,实际数据存储在block
  • 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
  • inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。
  • 每个inode都有一个号码,操作系统用inode号码来认别不同的文件。Linux系统内部不使用文件名,而使用inode号码来认别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。
  • 所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码。通过inode号码,获取inode信息,根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据
  • block(块)
    • 连续的八个扇区组成一个block(4k)
    • 是文件存取的最小单位
      操作系统在读取硬盘时,是一次性连续读取多个扇区,即一个块一个块的读取
  • inode(索引节点)
    • 中文译名为“索引节点”,也称“i节点”
    • 用于存储文件元信息

inode的内容

  • inode包含文件的元信息
    • 文件的字节数
    • 文件拥有者的User ID
    • 文件的Group ID
    • 文件的读、写、执行权限
    • 文件的时间戳
    • 但不包含文件名
  • 用stat命令可以查看某个文件的inode信息
    例如:stat qz.txt
  • Linux系统文件三个主要的时间属性
    • ctime(change time)
      最后一次改变文件或目录(属性)的时间
    • atime(access time)
      最后一次访问文件或目录的时间
    • mtime(modify time)
      最后一次修改文件或目录(内容)的时间
  • 每个indoe都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不使用文件名,而使用Indoe号码来识别文件
  • 对于用户,文件名只是indoe号码便于识别的别称
  • 目录也是一种文件

inode的号码

  • 用户通过文件名打开文件时,系统内部的过程
    • 系统先找到这个文件名对应的inode号码
    • 通过indoe号码,获取inode信息
    • 根据inode信息,找到文件数据所在的block,读出数据
  • 查看inode号码的方法
    • ls -i(查看文件名对应的inode号码)
      例如:ls -i qz.txt
    • stat(查看文件inode信息中的inode号码)
      例如:stat qz.txt

inode的大小

  • inode也会消耗硬盘空间,每个inode的大小一般为128字节或256字节
  • 格式化文件系统时会确定inode的总数
  • 格式化的时候,操作系统会自动将硬盘分成两个区。一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息
  • df -i(可以查看每个硬盘分区的inode总数和已经使用的数量)

inode的特殊作用

  • 由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
    1.当文件名包含特殊字符,可能无法正常删除文件,这时直接删除inode,能够起到删除文件的作用
    2.移动或重命名文件时,只改变文件名,不影响inode号码
    3.打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
    4.文件数据被修改后,会生成一个新的inode号码
  • 使用find命令可以删除inode号
    find ./ -inum 52201242 -exec rm -i {} ;
    find ./ - inum 55156844 -delete

inode节点耗尽故障处理

fdisk /dev/sdb
使用fdisk创建分区/dev/sdb1,因为实验用,所以分区大小30M即可
mkfs.ext4 /dev/sdb1
格式化(使用ext4文件类型,因为更准确)
mkdir /test
创建目录
mount /dev/sdb1 /mnt
挂载
df -i
查看
for ((i=1; i<=7680; i++));do touch /test/file$i;done
使用for命令通过循环的方式创建目录
touch {1…7680}.txt
或者使用touch命令创建目录
df -i
df -hT
查看还有多少空间
rm -rf /test/*
删除该文件后即可恢复
df -i
df -hT
查看

访问文件的流程示意图

用户访问文件 系统查找文件对应的inode 判断用户是否具备访问权限 指向对应的数据block 返回Permission denied

未完待续

未完待续

未完待续

未完待续

未完待续

硬链接与软链接

恢复误删除的文件

Linux主要包含的日志文件

Linux系统的日志消息级别

Linux系统中用户日志的查询命令

who

w

users

last

lastb

标签:文件,号码,文件名,文件系统,未完待续,Linux,日志,inode
来源: https://blog.csdn.net/TaKe___Easy/article/details/113841186

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有