运维开发网

深入理解Linux文件系统(一)

运维开发网 https://www.qedev.com 2020-02-25 18:40 出处:51CTO 作者:macbok
inode和block概述文件数据包括元信息与实际数据文件存储在硬盘上,硬盘最小储存单位是“扇区”,每个扇区储存512字节。block(块)中文译名为“索引节点”,也叫i节点用于存储文件元信息1、inode的内容inode包含很多的文件元信息,但不包含文件名,例如文件的字节数文件拥有着的UserID文件的GropuID文件的读、写、执行权限文件的时间戳目录文件的结构目录也是一种文件目录文件的结构每

inode和block概述

  • 文件数据包括元信息与实际数据
  • 文件存储在硬盘上,硬盘最小储存单位是 “扇区”,每个扇区储存512字节。
  • block(块)

    中文译名为“索引节点”,也叫i节点

    用于存储文件元信息

    深入理解Linux文件系统(一)

1、inode的内容

inode 包含很多的文件元信息,但不包含文件名,例如

文件的字节数

文件拥有着的UserID

文件的GropuID

文件的读、写、执行权限

文件的时间戳

目录文件的结构

目录也是一种文件

目录文件的结构

每一个inode都有一个号码,操作系统用inode号码来识别不同的文件

linux系统内部不使用文件名,而是用inode号码来识别文件

对于用户来说,文件只是inode号码便于识别的别称

inode号码

(1)、系统找到这个文件名对应的inode号码

(2)、通过inode号码获取inode信息

(3)、根据inode信息,找到文件数据所在的block,读出数据

inode的大小

inode也会消耗硬盘空间,每个inode的大小,一般是128字节或256字节

格式化文件系统时确定inode总数

使用df-i可以查看每个硬盘分区的inode总数和已经使用的数量

实际操作

1、我们在opt里输入mkdir abc创建一个空目录,输入 touch aaa.txt再abc目录里里创建一个空文件,可以通过ls -i 查看文件的inode节点号

深入理解Linux文件系统(一)

2、也可stat aaa.txt查看详细情况

深入理解Linux文件系统(一)

3、把aaa.txt创建成链接文件,输入ln aaa.txt a01.txt,再输入ls -i 查看inode号可以看到相同,但是名字都相同。

深入理解Linux文件系统(一)

3、我们输入stat aaa.txt可以看到aaa.txt硬链接有2个。

深入理解Linux文件系统(一)

4、用file aaa.txt可以查看文本类型。

深入理解Linux文件系统(一)

5、也可以用ls -i查看文本类型(开头是d的为目录)。

深入理解Linux文件系统(一)

6、inode节点可以用df -i 查看。

深入理解Linux文件系统(一)

硬链接与软链接

Linux下面的链接文件有两种,一种类似于Windows的快捷方式文件,可以快速连接到目标文件或目录;另一种则是通过文件系统的inode链接来产生的新文件名,而不是产生新文件,这种称之为硬链接。

1、硬链接

一般情况下,文件名和inode号码是一一对应关系,每个indoe号码对应一个文件名。

由于硬链接的元数据与源文件的完全一致(就是同一条元数据),所以有了它的一系列特性。

1,不能跨文件系统;

2,有相同的iNode和data block;

3,硬链接只能对已经存在的文件进行创建;

4,不能针对目录文件进行创建,Linux文件系统在设计时对目录默认创建了两个硬链接, . .. 如果再支持目录创建硬链接的话会生成目录环可能会造成死锁(笔者一家之言);

5,删除文件时,必须删除所有的硬链接才能真正释放data block.

软链接

软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。

1、 软连接有自己的元数据,所以可以对其进行权限控制(作用于原文件)

2、 可跨越文件系统(包括网络)创建软连接

3、可对不存在的文件和目录创建(打破不能链接目录的限制)

4、 创建软连接,源文件链接数不增加

5、 删除软连接时不影响源文件

恢复误删除的文件

我们删除一个文件,实际上并不清楚inode节点和block的数据,只是在这个文件的父目录里面的block文件,删除这个文件的名字。Linux是通过Link的数量来控制文件删除,只有当一个文件不存在任何Link的时候,这个文件才会被删除。

·

1、需要使用在开始操作之前我们需要安装实验所需要的软件包,我们的光驱挂载在/mnt/里,开始安装所需要的软件,

深入理解Linux文件系统(一)

在安装第二个包之前要安装libcom。

深入理解Linux文件系统(一)

2、现在要把工具包进行编译安装,在编译之前输入smbclient -L //192.168.10.10/

看看共享出来的文件名是什么。

深入理解Linux文件系统(一)

3、知道文件名之后就开始进行编译安装

创建mkdir /aaa,输入mount.cifs //192.168.10.10./CAA/aaa ,就可以看到/aaa里就有里extundelete这个包

深入理解Linux文件系统(一)

4、对这个压缩包进行解压输入tar jxvf extundelete-0.2.4.tar.bz2 -C /opt/

深入理解Linux文件系统(一)

5、进入

深入理解Linux文件系统(一)

extundelete-0.2.4./中,可以看到configure。

深入理解Linux文件系统(一)

6、配置之前要安装环境,输入yum install gcc gcc-c++ -y。

深入理解Linux文件系统(一)

7、./configure 直接进行执行。

深入理解Linux文件系统(一)

8、输入make install 进行安装。

深入理解Linux文件系统(一)

9、接下来将添加的磁盘进行分区和格式化。

深入理解Linux文件系统(一)

深入理解Linux文件系统(一)

10、进行挂载,mkdir /data 输入mount /dev/sdb1 /data,然后进入data里查看。

深入理解Linux文件系统(一)

11、在data里写入三个文件。

深入理解Linux文件系统(一)

12、模拟删除文件,rm -rf b,b的文件就被删除了

深入理解Linux文件系统(一)

13、这时候我们就可以恢复了,在这之前要先解挂载。

深入理解Linux文件系统(一)

14、接下来输入extundelete /dev/sdb1 --restore all,来恢复删除的所有文件,如果误删了文件之后,要立马将设备解挂载,要不然新的文件将你的inode号占用就无法恢复了。

深入理解Linux文件系统(一)

15、输入cd RECOVERD_FILES/就可以看到恢复的文件。

深入理解Linux文件系统(一)

恢复Linux中XFS类型的文件

xfsdump命令

格式:xfsdump -f 备份存放位置 要备份的路径或设备文件

常用选项:

-f:指定备份文件位置

-L:指定会话标签(免交互)

-M:指定设备标签(免交互)

-s:备份指定的文件

xfsrestore命令

格式:xfsrestore -f 恢复文件的位置 存放恢复后文件的位置

-f:指定备份文件位置

-s:恢复指定文件恢复

-t:查看文件的内容及详细信息

1、首先添加一块磁盘,然后对其进行配置,格式化为xfs格式,然后挂载到新建的目录/data里。

深入理解Linux文件系统(一)

2、复制passwd文件到“/data/”目录下,然后在“/data/”目录里新建一个“test”目录,并在目录里创建一个空文件。

深入理解Linux文件系统(一)

3、返回到data目录下,然后将sdb1里的分区备份到/opt/里,命名为"xfs_dump"。

深入理解Linux文件系统(一)

4、删除/data/里的内容,模拟删除。

深入理解Linux文件系统(一)

5、删除完之后现在我们开始恢复。

深入理解Linux文件系统(一)

6、输入ls查看你/data/里文件是否恢复回来。

深入理解Linux文件系统(一)

xfsdump使用限制:

1、只能备份已挂载的文件系

2、必须使用root的权限才能操作

3、 只能备份XFS文件系统

4、备份后的数据只能让xfsrestore解析

5、 不能备份两个具有相同UUID的文件系统

0

精彩评论

暂无评论...
验证码 换一张
取 消