Linux inode与block概述

303 阅读3分钟

一、inode和block概述

1.文件、扇区

         文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节。

2.块(block)

        一般连续八个扇区组成一个"块"(block),一个块是4K大小,是文件存取的最小单位,文件数据存储在“块”中。

3.文件数据

        文件数据包括实际数据与元信息(类似文件属性)。
        文件数据存储在“块”中,文件元信息存储在inode中。

4.inode(索引节点)

     inode不包含文件名。文件名是存放在目录当中的。Linux 系统中一切皆文件,因此目录也是一种文件。
     inode是存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域。

二、查看文件的inode号

ls -i 查看文件的iode号

image.png

ls -li

image.png

stat anaconda-ks.cfg 查看指定文件

image.png

三、模拟inode节点耗尽实验

fdisk /dev /sdb #管理磁盘

mkfs.xfs /dev/sdb1 #格式化磁盘

mkdir /sdb1 #创建/目录下sdb1目录,用于挂载

mount /dev/sdb1 / sdb1 #挂载

df -i #查询可用inode号

for( (i=l;i<=7700;i++) ) ;do touch /sdb1$i ; done;

步骤:

  1. 关闭虚拟机,编辑虚拟机设置,添加新硬盘,这里我们随便给20G,点击下一步并确认,开启虚拟机
  2. 管理磁盘,创建磁盘
  3. 进行挂载之前需先确定文件系统类型,进行格式化,格式为ext3
  4. 在根目录下创建一个子目录/sdb1用于挂载
  5. 查看挂载表,确认文件系统类型更改成功
  6. 查看inode号
  7. 使用for循环创建文件,超出inode号范围是否会无法创建
  8. 经过查看挂载表,发现有容量却无法再创建文件 若想再创建文件,仅需将内部文件删除,解除inode占用即可

结论:磁盘内可用inode号使用完后,即使磁盘还剩余空间也无法再创建文件。

三、文件存储

image-20220810100715358.png

用户访问文件的流程:

用户访问文件时,先通过文件名根据文件名查找到inode号,系统根据inode号找到对应的inode信息,根据inode信息去判断用户是否具备访问权限,有权限就去读取相应的数据,没有权限就拒绝访问

四、xfs类型文件修复

1.CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。

2.xfsdump 命令常用的选项:

 -f:指定备份文件目录

 -L:指定标签 session label

 -M:指定设备标签 media label

 -s:备份单个文件,-s 后面不能直接跟路径

3.xfsdump使用限制:

- 只能备份已挂载的文件系统
- 必须使用root的权限才能操作
- 只能备份XFS文件系统
- 备份后的数据只能让xfsrestore解析
- 不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)

实验步骤:

使用fdisk创建分区/dev/sdb1,格式化xfs文件系统

    1. fdisk /dev/sdb
    2. partprobe /dev/sdb
    3. mkfs.xfs  /dev/sdb1
    4. mkdir /sdb1
    5. mount /dev/sdb1 /sdb1
    6. cd /sdb1
    7. cp /etc/passwd ./
    8. mkdir test
    9. touch test/a

使用 xfsdump 命令备份整个分区

 1. yum install -y xfsdump
 2. xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1

模拟数据丢失并使用 xfsrestore 命令恢复文件

1. cd /sdb1
2. rm -rf ./*
3. xfsrestore -f /opt/dump_sdb1 /sdb1