云计算【第一阶段(24)】Linux文件系统与日志分析

一、文件与存储系统的inode与block

1.1、硬盘存储

  • 最小存储单位:扇区(sector)
    • 每个扇区大小:512字节

1.2、文件存取

  • 最小存取单位:块(block)
  • 连续八个扇区组成:块(block)
    • 每个块大小:4K
  • 文件数据:实际数据与元信息
  • 操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。
  • 文件数据包括实际数据元信息(类似文件属性),文件数据存储在"块"中

1.3、inode

  • 定义:存储文件元信息的区域
  • 包含:创建者、创建日期、文件大小、文件权限等的区域
  • 特点:
    • 一个文件必须占用一个inode
    • 格式化文件系统时确定inode的总数
    • 至少占用一个block
    • 不包含文件名,文件名是存放在目录当中的。

元信息包括

  • 文件的字节数
  • 文件拥有者的userid
  • 文件的groupid
  • 文件的读,写,执行权限
  • 文件的时间戳

1.4、文件名与inode

  • 文件名存放位置:目录
  • 译名为"索引节点",也叫i节点
  • inode号码:操作系统识别文件的唯一标识,一个文件必须占用一个inode,并且至少占用一个block。
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。
  • 访问文件流程:
  1. 根据文件名查找inode号码
  2. 通过inode号码获取inode信息
  3. 检查用户权限
  4. 指向数据block并读取数据

1.4.1、硬盘分区后的结构

文件夹的indoe号中包括当前文件夹中文件名字和文件的indoe号

先确定文件夹后再通过indoe找到block,如果一个block放不下数据,则可以占用多个block.

例如,有一个10kb的文件需要存储,

则会占用3个block(默认一个是4k),虽然最后一个block不能占满,

但也不能再放入其他文件的数据。

这3个block 有可能是连续的,也有可能是分散的,所以会有磁盘碎片。

1.4.2、访问文件的简单流程

1.5、Linux系统特点

  • 一切皆文件
  • 目录也是一种文件

1.6、查看文件名对应的inode 号码有两种方式

  • ls -i 文件名
  • stat 文件名

很显然stat看的更详细一些

1.7、linux系统文件三个主要的时间属性

  • ctime(change time)

最后一次改变文件或目录 (属性)的时间

  • atime(access time)

最后一次访问文件或目录的时间

  • mtime(modify time)

最后一次修改文件或目录(内容)的时间

1.8、inode 占用

inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。

一个是数据区,存放文件数据,

另一个是inode区,存放inode所包含的信息。

每个inode的大小,一般是128字节或256字节。通常情况下不需要关注单个inode的大小,而是需要重点关注inode总数。inode的总数在格式化时就给定了,执行"df -i"命令即可查看每个硬盘分区对应的的inode总数和已经使用的inode数量。

inode节点的总数,在格式化时就给定了,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘12.8%。

由于inode号码与文件名分离,导致Linux系统具备以下几种特有的现象:

1.文件名包含特殊字符,可能无法正常删除。可直接删除inode,能够起到删除文件的作用;

2.移动文件或重命名 文件,只是改变文件名,不影响 inode 号码;

3.打开一个文件以后,系统就以inode 号码来识别这个文件,不再考虑文件名。

4.文件数据被修改保存后,会生成一个新的inode 号码。

1.8.1、实验1

先创建大量空文件

复制代码
for ((i=1; i<=8680; i++)); do  
    touch /test/file$i  
done

或者

touch {1..8680}.txt

i占用满

但是磁盘空间还有

当再创建其他的的时候

二、硬链接与软链接

三、恢复误删除的文件

四、分析日志文件

相关推荐
CCPC不拿奖不改名6 小时前
虚拟机基础:在VMware WorkStation上安装Linux为容器化部署打基础
linux·运维·服务器·人工智能·milvus·知识库搭建·容器化部署
山峰哥7 小时前
数据库调优实战:索引策略与查询优化案例解析
服务器·数据库·sql·性能优化·编辑器
fjh19977 小时前
记一次奇怪的ssh公钥登录失败的情况
运维·ssh
一只自律的鸡9 小时前
【Linux系统编程】文件IO 函数篇
linux·linux系统编程
dinga1985102610 小时前
linux上redis升级
linux·运维·redis
hzc098765432110 小时前
Linux系统下安装配置 Nginx 超详细图文教程_linux安装nginx
linux·服务器·nginx
jjjxxxhhh12310 小时前
【加密】-AES与对称加密
java·服务器·网络
匀泪10 小时前
云原生(nginx实验(2))
运维·nginx·云原生
RisunJan11 小时前
Linux命令-ltrace(用来跟踪进程调用库函数的情况)
linux·运维·服务器
阿乐艾官11 小时前
【 LVM 创建逻辑卷】
linux