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

inode和block概述

  • 文件数据包括元信息与实际数据
  • 文件存储在硬盘上,硬盘最小储存单位是 “扇区”,每一个扇区储存512字节。
  • block(块)
    中文译名为“索引节点”,也叫i节点
    用于存储文件元信息
    深刻理解Linux文件系统(一)

一、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总数和已经使用的数量node

实际操做
一、咱们在opt里输入mkdir abc建立一个空目录,输入 touch aaa.txt再abc目录里里建立一个空文件,能够经过ls -i 查看文件的inode节点号
深刻理解Linux文件系统(一)
二、也可stat aaa.txt查看详细状况
深刻理解Linux文件系统(一)
三、把aaa.txt建立成连接文件,输入ln aaa.txt a01.txt,再输入ls -i 查看inode号能够看到相同,可是名字都相同。
深刻理解Linux文件系统(一)
三、咱们输入stat aaa.txt能够看到aaa.txt硬连接有2个。
深刻理解Linux文件系统(一)
四、用file aaa.txt能够查看文本类型。
深刻理解Linux文件系统(一)
五、也能够用ls -i查看文本类型(开头是d的为目录)。
深刻理解Linux文件系统(一)
六、inode节点能够用df -i 查看。
深刻理解Linux文件系统(一)c++

硬连接与软连接

在Linux下面的连接文件有两种,一种相似于Windows的快捷方式文件,能够快速链接到目标文件或目录;另外一种则是经过文件系统的inode连接来产生的新文件名,而不是产生新文件,这种称之为硬连接。
一、硬连接
通常状况下,文件名和inode号码是一一对应关系,每一个indoe号码对应一个文件名。网络

因为硬连接的元数据与源文件的彻底一致(就是同一条元数据),因此有了它的一系列特性。ide

1,不能跨文件系统;工具

2,有相同的iNode和data block;操作系统

3,硬连接只能对已经存在的文件进行建立;设计

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

5,删除文件时,必须删除全部的硬连接才能真正释放data block.
软连接
软连接就是再建立一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名。
一、 软链接有本身的元数据,因此能够对其进行权限控制(做用于原文件)rest

二、 可跨越文件系统(包括网络)建立软链接blog

三、可对不存在的文件和目录建立(打破不能连接目录的限制)

四、 建立软链接,源文件连接数不增长

五、 删除软链接时不影响源文件

恢复误删除的文件

咱们删除一个文件,实际上并不清楚inode节点和block的数据,只是在这个文件的父目录里面的block文件,删除这个文件的名字。Linux是经过Link的数量来控制文件删除,只有当一个文件不存在任何Link的时候,这个文件才会被删除。
·
一、须要使用在开始操做以前咱们须要安装实验所须要的软件包,咱们的光驱挂载在/mnt/里,开始安装所须要的软件,
深刻理解Linux文件系统(一)

在安装第二个包以前要安装libcom。
深刻理解Linux文件系统(一)
二、如今要把工具包进行编译安装,在编译以前输入smbclient -L //192.168.10.10/
看看共享出来的文件名是什么。
深刻理解Linux文件系统(一)
三、知道文件名以后就开始进行编译安装
建立mkdir /aaa,输入mount.cifs //192.168.10.10./CAA/aaa ,就能够看到/aaa里就有里extundelete这个包
深刻理解Linux文件系统(一)

四、对这个压缩包进行解压输入tar jxvf extundelete-0.2.4.tar.bz2 -C /opt/
深刻理解Linux文件系统(一)
五、进入深刻理解Linux文件系统(一)extundelete-0.2.4./中,能够看到configure。
深刻理解Linux文件系统(一)
六、配置以前要安装环境,输入yum install gcc gcc-c++ -y。
深刻理解Linux文件系统(一)
七、./configure 直接进行执行。
深刻理解Linux文件系统(一)
八、输入make install 进行安装。
深刻理解Linux文件系统(一)
九、接下来将添加的磁盘进行分区和格式化。
深刻理解Linux文件系统(一)
深刻理解Linux文件系统(一)
十、进行挂载,mkdir /data 输入mount /dev/sdb1 /data,而后进入data里查看。
深刻理解Linux文件系统(一)
十一、在data里写入三个文件。
深刻理解Linux文件系统(一)
十二、模拟删除文件,rm -rf b,b的文件就被删除了
深刻理解Linux文件系统(一)
1三、这时候咱们就能够恢复了,在这以前要先解挂载。
深刻理解Linux文件系统(一)
1四、接下来输入extundelete /dev/sdb1 --restore all,来恢复删除的全部文件,若是误删了文件以后,要立马将设备解挂载,要否则新的文件将你的inode号占用就没法恢复了。
深刻理解Linux文件系统(一)
1五、输入cd RECOVERD_FILES/就能够看到恢复的文件。
深刻理解Linux文件系统(一)

恢复LINUX中XFS类型的文件

xfsdump命令
格式:xfsdump -f 备份存放位置 要备份的路径或设备文件
经常使用选项:
-f:指定备份文件位置
-L:指定会话标签(免交互)
-M:指定设备标签(免交互)
-s:备份指定的文件
xfsrestore命令
格式:xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
-f:指定备份文件位置
-s:恢复指定文件恢复
-t:查看文件的内容及详细信息
一、首先添加一块磁盘,而后对其进行配置,格式化为xfs格式,而后挂载到新建的目录/data里。
深刻理解Linux文件系统(一)
二、复制passwd文件到“/data/”目录下,而后在“/data/”目录里新建一个“test”目录,并在目录里建立一个空文件。
深刻理解Linux文件系统(一)
三、返回到data目录下,而后将sdb1里的分区备份到/opt/里,命名为"xfs_dump"。
深刻理解Linux文件系统(一)
四、删除/data/里的内容,模拟删除。
深刻理解Linux文件系统(一)
五、删除完以后如今咱们开始恢复。
深刻理解Linux文件系统(一)
六、输入ls查看你/data/里文件是否恢复回来。
深刻理解Linux文件系统(一)
xfsdump使用限制:

一、只能备份已挂载的文件系二、必须使用root的权限才能操做三、 只能备份XFS文件系统四、备份后的数据只能让xfsrestore解析五、 不能备份两个具备相同UUID的文件系统

相关文章
相关标签/搜索