Linux深入理解文件系统
目录标题
- 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深入理解文件系统相关推荐
- Linux——(渗透理解)文件系统与日志分析
文件系统与日志分析超简单 一.Linux系统中的 inode 与 block 1.1 inode 和 block 1.2 查找文件对应的inode(内容) 1.3 inode的大小 inode总结 二 ...
- 【Linux】理解文件系统——软硬链接
我们之前讨论的都是进程和被打开文件的关系,而如果一个文件是没有被打开呢?没有被打开的文件操作系统如何管理? 没有被打开的文件在磁盘上,所以磁盘上有大量的文件,这些文件要被静态管理起来,方便我们随时打开 ...
- linux 文件理解,linux文件系统理解
1. 文件即数据的集合,无论你有任何信息需要存储在计算机中,都要以文件的信息存在:而文件常常和具体的设备相关联,如磁盘.软盘等等. 2. 目录,即一个文件组. 3. linux支持的文件系统: Ex ...
- linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图
0. 文件系统和图书馆 在linux上操作文件,和在图书馆借书是非常相似的. 硬盘上的文件系统,好比图书馆的书架:而vfs则是图书馆的管理系统. 内核的工作: 1. 维护一个文件的目录树(dentry ...
- 【Linux系统编程:基础IO 下】dup2 实现输出重定向、输入重定向、追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接
写在前面 这里先接着<基础IO 上>中的缓冲区的内容作些补充,这里主要补充 dup2 接口. ✔ 测试用例一: #include<stdio.h> #include<sy ...
- Linux 操作系统原理 — 文件系统 — 虚拟文件系统
目录 文章目录 目录 为什么需要文件系统? Linux 的虚拟文件系统 创建 Linux 文件系统 为什么需要文件系统? 程序 = 数据结构 + 算法,所有的应用程序都需要存储和检索信息,进程运行时它 ...
- Linux系统篇-文件系统虚拟文件系统
看了之前的关于Linux内存管理和进程调度的文章,相比读者们应该对Linux有了大致的了解,本文的主题是Linux虚拟文件系统.闲话少说,开始! 1.软链接和硬链接的区别 我们知道文件都有文件名与数据 ...
- Linux 的虚拟文件系统(强烈推荐)
1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系 ...
- linux实验之文件与文件,linux实验报告文件系统与文件管理.doc
linux实验报告文件系统与文件管理 学生课程实验报告书 课程: <linux网络操作系统> 级 系 专业 班 学号: 姓名: 指导教师: 一.实验项目: 用户与组群管理 二.实验日期: ...
最新文章
- 网络卖家自曝黑幕 “信用刷手”欺骗你
- Matlab scatter 如何显示不同颜色点状
- application/x-www-form-urlencoded与application/json区别以及遇到的坑
- java操作日期的相关工具类,拿去即用
- ABAP:从例子学习ABAP
- Spring AOP编程问题:下面代码哪里错了?可以考验对Spring AOP的实现机制是否了解的
- github上传自己的项目
- Java Spring AspectJ
- 基于ConvLSTM的伦敦空气质量预测(1) 数据处理
- 【网络信息安全】网络信息安全概述
- Python 程序员必知必会的开发者工具
- AX2009企业门户资料
- 人脸识别与膜虹识别_虹膜识别技术优势明显 比指纹、人脸识别更可靠
- Matlab实现Lasso-Lars
- Microsoft Word 教程:如何在 Word 中更改页面方向、为页面添加边框?
- Windows环境黑客入侵应急与排查
- 刚子扯谈:源于Chanel的图片描述
- HEVC算法和体系结构:编码框架
- 台式计算机显示连接不可用,电脑莫名其妙无法上网提示“连接不可用”如何解决...
- 夜间(低光照)目标检测数据集整理:人脸检测,行人检测
热门文章
- Unity开发–跑酷教育类小游戏
- spark的shuffle的write原理逻辑
- RuntimeError: Couldn‘t install gfpgan.
- 点击图片按钮 出来图片预览不兼容360极速模式 其他兼容
- k8s集群网络(14)-flannel underlay overlay 网络通讯对比
- 【优化求解】基于matlab蚁群算法配电网故障定位【含Matlab源码 165期】
- 【青书学堂】统计学(高起专) 第一学期 作业
- Java里的键盘输入Scanner
- matplotlib简单应用
- ThreadPoolExecutor线程池参数设置