Linux文件系统与日志分析

本文详细介绍了Linux文件系统的block和inode的概念及其作用。block是文件存取的最小单位,通常为4KB,而inode存储文件的元信息,如权限、大小、时间戳等。inode号码用于系统内部识别文件,不包含文件名。文件删除可通过inode号码实现。此外,文章还讨论了xfs文件系统的特性以及如何使用xfsdump和xfsrestore进行备份恢复。
摘要由CSDN通过智能技术生成

文件系统与日志分析

一、block的作用:用来存真正的数据内容的

  我们每个扇区(sector)的大小规定是512B,系统在读取硬盘数据时,并不会一个个扇区去读,而是一次性连续读取多个扇区,即一次性读取一个块(block),这种由多个扇区组成的块,是文件存取的最小单位,块的大小,最常见的是4kb,即连续8个sector组成一个block

二、inode的作用

  inode:用来存数据的元信息的,所谓元信息指的就是该数据的一些属性特征
那我们的inode可以记录的信息有哪些呢?可以是文件权限(rwx)的记录,文件的属主、属组、文件大小、时间戳等。这种存储文件无信息的区域就叫做inode,中文译名为“牵引节点”,也叫i节点,因此,一个文件必须占用一个inode,但至少占用一个block

:inode中并不包括文件名,其实文件名是存放在目录当中的,Linux系统中一切皆文件,因此目录也是一种文件,即查看目录中的文件,cd转目录后通过ls列目录可以查看文件名,而我们每个inode都有一个号码,系统用inode号码识别不同的文件,系统内部不使用文件名,而使用inode号码来识别文件

三、Linux系统文件三个主要的时间属性
  1. ctime(change time):改变最后一次改变文件或目录(属性)的时间
  2. atime(access time):访问最后一次改变文件或目录(属性)的时间
  3. mtime(modify time):修改最后一次改变文件或目录(属性)的时间、

修改时三个时间属性都会改变

四、inode号码

用户通过文件名打开文件时,系统内部的过程
  1、系统找到这个文件名对应的inode号码
  2、通过inode号码,获取inode信息
  3、根据inode信息,找到文件数据所在的block,读出数据
查看文件的inode大小:ls -i a.txt
查看详细信息:stat a.txt

五、inode的大小

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

六、inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
  1、 当文件名包括特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
  2、 移动或重命名文件时,只改变文件名,不影响inode号码
  3、 打开一个文件后,系统通过inode号码来识别该文件不在考虑该文件名

七、删除乱码文件
方法一: 
    touch  a.txt
    Ls  -i  a.txt
    1543511  a.txt
    find  .  –inum  1543511  –exec  rm  –i  {}  \;
  这条命令的意思是find找到的内容作为后面rm删除的对象,语法结构分析:-exec参数后面跟的是命令,它的终止是以;为结束标志的,{}代表前面find找出来的文件名,\代表换行的是立即执行的意思
方法二:
    find . –inum  1543511  |  xargs  rm  -f
  Xargs这个参数就是强力的意思,如果前面的输出结果包含空格或制表符也会被强力执行
八、恢复XFS类型的文件

  1、extundelete工具仅可以恢复EXT类型文件,无法恢复CentOS7系统默认采用xfs类型的文件,针对xfs文件系统目前也没有比肩成熟的文件恢复工具,提前做好数据备份,以防数据丢失
  2、xfs类型的文件可使用xfsdump与xfsrestore工具进行备份恢复,若系统总未安装xfsdump与xfsrestore工具,可以通过yum -y install xfsdump命令安装,xfsdump按照inode顺序备份一个xfs文件系统,xfsdump的备份级别有两种:0表示完全备份,1-9表示增量备份。Xfsdump的备份默认为0,xfsdump的命令常用的参数包括以下几种
   -f 指定备份文件或目录
   -L 指定标签session label
  -M 指定设备标签media label
  -s 备份单个文件,-s后不能直接跟路径

实验步骤:
1、 初始化磁盘(分区、格式化及挂载)

[root@server3 ~]# fdisk -l
磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a5c35
   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200     6295551     2098176   82  Linux swap / Solaris
/dev/sda3         6295552    86611967    40158208   83  Linux
/dev/sda4        86611968   125829119    19608576    5  Extended
/dev/sda5        86614016   125829119    19607552   83  Linux
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@server3 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x9d67f7c9 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):
将使用默认值 10485759
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@server3 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=327616 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1310464, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@server3 ~]# mkdir /data
[root@server3 ~]# mount /dev/sdb1 /data
[root@server3 ~]# df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda3      xfs        39G  4.4G   34G   12% /
devtmpfs       devtmpfs  898M     0  898M    0% /dev
tmpfs          tmpfs     912M     0  912M    0% /dev/shm
tmpfs          tmpfs     912M  9.1M  903M    1% /run
tmpfs          tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda1      xfs      1014M  174M  841M   18% /boot
/dev/sda5      xfs        19G   39M   19G    1% /home
tmpfs          tmpfs     183M   12K  183M    1% /run/user/42
tmpfs          tmpfs     183M     0  183M    0% /run/user/0
/dev/sdb1      xfs       5.0G   33M  5.0G    1% /data
[root@server3 ~]#

2、 准备测试文件
3、 使用xfsdump命令备份整个分区

xfsdump  -f  /opt/dump.sdb1  /dev/sdb1
→dump.sdb1  指定备份会话标签,自己设的
→sdb1        指定设备标签,自己设的
xfsdump  -I  查看备份信息与内容

4、 删除之前创建的内容
5、 恢复文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值