目录标题

  • inode和block概述
  • inode的内容
  • 文件存储小结
  • inode的大小
  • inode的特殊作用
  • 模拟inode号节点被耗尽故障
  • 案例:恢复EXT类型的文件
  • xfs类型文件备份和恢复

inode和block概述

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

inode的内容

  • 用stat命令查看某个文件的inode信息
  • Linux系统文件三个主要的时间属性
  • ctime(change time)
    • 最后一次改动文件或目录(属性)的时间
  • atime(access time)
    • 最后一次访问文件的目录时间
  • mtime(modify time)
    • 最后一次**修改(变更)**文件或目录(内容)的时间
  • 目录文件的结构
  • 目录也是一种文件
  • 目录文件的结构
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统文件内部不使用文件名,而使用inode号码来识别文件
  • 对于用户,文件名只是inode号码便于识别的别称

文件存储小结

  • 硬盘分区后的结构
  • 访问文件的简单流程

inode的大小

  • inode也会消耗硬盘空间
  • 每个inode的大小,一般是128字节或256字节
  • 格式化文件系统时确定inode的总数
  • 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量

inode的特殊作用

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

模拟inode号节点被耗尽故障

1.使用fdisk /dev/sdb1,分区大小20M即可
fdisk /dev/sdb

2.格式化ext4类型,创建挂载的目录,挂载进去
mkfs.ext4 /dev/sdb1
mkdir /data
mount /dev/sdb1 /data

3.查看可用inode号的数量

4.模拟故障



或者可以使用
for ((i=1; i<=5136; i++));do touch /data/${i}.txt;done

5.删除文件恢复
rm -rf /data/*

案例:恢复EXT类型的文件

  • extundelete是一个开源的Linux数据恢复工具,支持ext3、ext4文件系统。(ext4只能在centos6版本恢复)本人安装的是centos7所以以下试验为ext3
  • 实验恢复ext类型文件
    1.使用fdisk创建分区,格式化成ext3文件系统并挂载
    fdisk /dev/sdb
    mkfs.ext3 /dev/sdb1
    mkdir /data
    mount /dev/sdb1 /data

    2.安装环境依赖包
    yum -y install e2fsprogs-devel e2fsprogs-libs
    cd /opt
    tar jxvf extundelete-0.2.4.tar.bz2
    cd extundelete-0.2.4/
    ./configure --prefix=/usr/local/extundelete
    make
    make install
    cd /usr/local/extundelete/bin
    ln -s /usr/local/extundelete/bin/extundelete /usr/bin



    3.创建文件
    cd /data
    echo a > a
    echo b > b
    echo c > c
    echo d> d
    extundelete /dev/sdb1 --inode 2

    4.删除创建的文件并解挂载来模拟故障
    rm -rf a b
    cd
    umount /data
    5.恢复
    extundelete /dev/sdb1 --inode 2
    extundelete /dev/sdb1 --restore-all
    cd RECOVERED_FILES/
    ls此时恢复的文件就在里面文件内容也在

xfs类型文件备份和恢复

  • CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复
  • xfsdump的备份级别有两种
  • 0表示完全备份(默认为0)
  • 1-9表示增量备份(增量备份不会备份之前已经备份的内容只备份增加的内容)
  • xfsdump 的命令格式为
  • xfsdump -f 备份存放位置 要备份的路径或设备文件
  • xfsdump 命令常用的选项
  • -f:指定备份文件目录
  • -L:指定标签 session label
  • -M :指定设备标签 media label
  • -s:备份单个文件,-s 后面不能直接跟路径
  • xfsdump使用限制
  • 只能备份已挂载的文件系统
  • 必须使用root的权限才能操作
  • 只能备份 XFS 文件系统
  • 备份后的数据只能让 xfsrestore 解析
  • 不能备份两个具有相同 UUID 的文件系统(可用 blkid命令查看)
  • 操作步骤
    1.使用fdisk创建分区,格式化xfs文件系统创建一些文件目录

2.使用xfsdump 命令备份整个分区
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
cd /opt
ls

3.模拟数据丢失并使用xfsrestore命令恢复
cd /data
rm -rf *
xfsrestore -f /opt/dump_xfs /data

ls -R查看最后被恢复的文件

Linux深入理解文件系统相关推荐

  1. Linux——(渗透理解)文件系统与日志分析

    文件系统与日志分析超简单 一.Linux系统中的 inode 与 block 1.1 inode 和 block 1.2 查找文件对应的inode(内容) 1.3 inode的大小 inode总结 二 ...

  2. 【Linux】理解文件系统——软硬链接

    我们之前讨论的都是进程和被打开文件的关系,而如果一个文件是没有被打开呢?没有被打开的文件操作系统如何管理? 没有被打开的文件在磁盘上,所以磁盘上有大量的文件,这些文件要被静态管理起来,方便我们随时打开 ...

  3. linux 文件理解,linux文件系统理解

    1.  文件即数据的集合,无论你有任何信息需要存储在计算机中,都要以文件的信息存在:而文件常常和具体的设备相关联,如磁盘.软盘等等. 2. 目录,即一个文件组. 3. linux支持的文件系统: Ex ...

  4. linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图

    0. 文件系统和图书馆 在linux上操作文件,和在图书馆借书是非常相似的. 硬盘上的文件系统,好比图书馆的书架:而vfs则是图书馆的管理系统. 内核的工作: 1. 维护一个文件的目录树(dentry ...

  5. 【Linux系统编程:基础IO 下】dup2 实现输出重定向、输入重定向、追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接

    写在前面 这里先接着<基础IO 上>中的缓冲区的内容作些补充,这里主要补充 dup2 接口. ✔ 测试用例一: #include<stdio.h> #include<sy ...

  6. Linux 操作系统原理 — 文件系统 — 虚拟文件系统

    目录 文章目录 目录 为什么需要文件系统? Linux 的虚拟文件系统 创建 Linux 文件系统 为什么需要文件系统? 程序 = 数据结构 + 算法,所有的应用程序都需要存储和检索信息,进程运行时它 ...

  7. Linux系统篇-文件系统虚拟文件系统

    看了之前的关于Linux内存管理和进程调度的文章,相比读者们应该对Linux有了大致的了解,本文的主题是Linux虚拟文件系统.闲话少说,开始! 1.软链接和硬链接的区别 我们知道文件都有文件名与数据 ...

  8. Linux 的虚拟文件系统(强烈推荐)

    1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系 ...

  9. linux实验之文件与文件,linux实验报告文件系统与文件管理.doc

    linux实验报告文件系统与文件管理 学生课程实验报告书 课程: <linux网络操作系统> 级 系 专业 班 学号: 姓名: 指导教师: 一.实验项目: 用户与组群管理 二.实验日期: ...

最新文章

  1. 网络卖家自曝黑幕 “信用刷手”欺骗你
  2. Matlab scatter 如何显示不同颜色点状
  3. application/x-www-form-urlencoded与application/json区别以及遇到的坑
  4. java操作日期的相关工具类,拿去即用
  5. ABAP:从例子学习ABAP
  6. Spring AOP编程问题:下面代码哪里错了?可以考验对Spring AOP的实现机制是否了解的
  7. github上传自己的项目
  8. Java Spring AspectJ
  9. 基于ConvLSTM的伦敦空气质量预测(1) 数据处理
  10. 【网络信息安全】网络信息安全概述
  11. Python 程序员必知必会的开发者工具
  12. AX2009企业门户资料
  13. 人脸识别与膜虹识别_虹膜识别技术优势明显 比指纹、人脸识别更可靠
  14. Matlab实现Lasso-Lars
  15. Microsoft Word 教程:如何在 Word 中更改页面方向、为页面添加边框?
  16. Windows环境黑客入侵应急与排查
  17. 刚子扯谈:源于Chanel的图片描述
  18. HEVC算法和体系结构:编码框架
  19. 台式计算机显示连接不可用,电脑莫名其妙无法上网提示“连接不可用”如何解决...
  20. 夜间(低光照)目标检测数据集整理:人脸检测,行人检测

热门文章

  1. Unity开发–跑酷教育类小游戏
  2. spark的shuffle的write原理逻辑
  3. RuntimeError: Couldn‘t install gfpgan.
  4. 点击图片按钮 出来图片预览不兼容360极速模式 其他兼容
  5. k8s集群网络(14)-flannel underlay overlay 网络通讯对比
  6. 【优化求解】基于matlab蚁群算法配电网故障定位【含Matlab源码 165期】
  7. 【青书学堂】统计学(高起专) 第一学期 作业
  8. Java里的键盘输入Scanner
  9. matplotlib简单应用
  10. ThreadPoolExecutor线程池参数设置