初学者的Linux文件系统与日志分析

Linux文件系统与日志分析

inode和block概述

所谓的inode就是索引节点(index node)的意思,在每一个存储设备被格式化创建文件系统后,所有的文件大致被分为了两部分,分别是inode和block。

其中inode用来存储文件属性信息,其中包括了文件大小,文件的归属者,文件的归属组,权限,类型,修改时间,以及指向文件实体数据(block)的指针。

block中存储的就是文件的实际数据,比如说,照片,视频,音频等等,但是有一点需要注意!就是inode当中不包含文件名!一个文件的文件名,存储在上级目录的block中!

其实inode和block之间的关系就像是一本书一样,inode是一本书的目录,一本书会有很多内容,一个知识点或者一个故事会占很多页,一个block就相当于书中的一页内容。

inode的内容

  • inode包含文件的元信息
  • 文件的字节数
  • 文件拥有者(属主)的UID
  • 文件的GID
  • 文件的读写执行权限
  • 文件的时间戳
  • 备注:不包含文件名
  • 用stat命令可以查看某个文件的inode信息;ls -i也可以查看inode号码
inode总结
  • 磁盘分区后格式化为etx4文件系统后,产生一定数量的inode和block

  • inode存放文件属性信息以及指向文件实体的指针

  • ext3/ext4文件系统block存放文件的实际数据

  • inode表现形式为一串数字,不同文件对应的inode在os中是唯一的

  • ext3/ext4文件系统下,正常情况一个文件创建有且只能占用一个inode和至少占用一个block,大文件占用多个block,如果一个block未占完,剩余空间也无法使用

block总结
  • 磁盘读取数据是按block为单位读取

  • 一个文件可能占有多个block,每读取一个block就会消耗一次磁盘IO,想提升IO性能,尽可以一次读取尽量多。

  • 一个block只能存放一个文件,也就是无论文件多小,这个block剩余空间浪费掉了,假如一个文件大小为4k,但是一个小文件1k,3k剩余空间被浪费了,磁盘IO是衡量磁盘性能重要指标。


linux系统文件时间戳的三个主要的时间属性
  • ctime(change time):最后一次改变文件或目录(属性即inode)的时间
  • atime(access time):最后一次访问文件或目录的时间
  • mtime(modify time):最后一次修改文件或目录(内容即block)的时间

目录文件的结构
  • 目录也是一种文件
  • 目录文件的结构
  • 一个文件名对应一个inode号码,两个字段成为一行,一行称为一个目录项

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

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

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


查看inode号码的方法

ls -i命令,查看文件名对应的inode号码

[root@localhost ~]# ls -i
268638004 anaconda-ks.cfg  268876608 模板    2562798 文档    2562797 桌面
268638003 original-ks.cfg  403106047 视频  135191453 下载
403106045 公共             268876616 图片  135191480 音乐

查看文件系统的inode数量信息(总数,已用,可用)

[root@localhost ~]# df -i
文件系统           Inode 已用(I)   可用(I) 已用(I)% 挂载点
/dev/sda3      103654400  148467 103505933       1% /
devtmpfs          478738     383    478355       1% /dev
tmpfs             482689       1    482688       1% /dev/shm
tmpfs             482689    1454    481235       1% /run
tmpfs             482689      16    482673       1% /sys/fs/cgroup
/dev/sda1         153600     341    153259       1% /boot
tmpfs             482689       6    482683       1% /run/user/42
tmpfs             482689      16    482673       1% /run/user/0


Linux df命令

Linux df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计

  • 文件-a, --all 包含所有的具有 0 Blocks 的文件系统
  • 文件–block-size={SIZE} 使用 {SIZE} 大小的 Blocks
  • 文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的…)
  • 文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
  • 文件-i, --inodes 列出 inode 资讯,不列出已使用 block
  • 文件-k, --kilobytes 就像是 --block-size=1024
  • 文件-l, --local 限制列出的文件结构
  • 文件-m, --megabytes 就像 --block-size=1048576

硬链接与软链接

软链接:

1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接

硬链接:

1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建

软连接与硬链接的区别
软连接(符号链接)硬链接
删除原始文件(即文件名)后失效仍旧可用
适用范围适用于文件或目录只可用于文件
保存位置与原始文件可以位于不同的文件系统中必须与原始文件在同一个文件系统(xfs系统,或者ext4等)中,如一个Linux分区内

日志文件

日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。

日志文件主要包括:

  • 内核及系统日志(服务日志,放在/var/log)
    • 由系统服务syslog统一进行管理,日志格式基本相似
  • 用户日志
    • 记录系统用户登陆及退出系统的相关信息
  • 程序日志
    • 由各种应用程序独立管理的日志文件,记录格式不统一
    • 程序日志只在程序第一次运行的时候才会产生

恢复误删除的文件XFS

[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=6553600 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=26214400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=12800, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/sdb1 /data
[root@localhost ~]# cd /data/
[root@localhost data]# ls
[root@localhost data]# cp /etc/passwd ./
[root@localhost data]# ls
passwd
[root@localhost data]# mkdir test
[root@localhost data]# ls
passwd  test
[root@localhost data]# touch test/a01.txt
[root@localhost data]# ls
passwd  test

[root@localhost data]# tree 
.
├── passwd
└── test
    └── a01.txt

1 directory, 2 files

备份
[root@localhost data]# xfsdump -f /opt/xfs_dump /dev/sdb1    ///备份///
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control

 ============================= dump label dialog ==============================

please enter label for this dump session (timeout in 300 sec)
 -> xfs_dump    、///备份的文件///
session label entered: "xfs_dump"

 --------------------------------- end dialog ---------------------------------

xfsdump: level 0 dump of localhost.localdomain:/data
xfsdump: dump date: Fri Jul  3 06:26:51 2020
xfsdump: session id: 2e16c81a-18a3-4388-b1c6-0a237622522a
xfsdump: session label: "xfs_dump"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25856 bytes
xfsdump: /var/lib/xfsdump/inventory created

 ============================= media label dialog =============================

please enter label for media in drive 0 (timeout in 300 sec)
 -> sdb1   ///备份的位置///
media label entered: "sdb1"

 --------------------------------- end dialog ---------------------------------

xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 25560 bytes
xfsdump: dump size (non-dir files) : 2592 bytes
xfsdump: dump complete: 23 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/xfs_dump OK (success)
xfsdump: Dump Status: SUCCESS

恢复
[root@localhost data]# xfsrestore -f /opt/xfs_dump /data/
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description: 
xfsrestore: hostname: localhost.localdomain
xfsrestore: mount point: /data
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Fri Jul  3 06:26:51 2020
xfsrestore: level: 0
xfsrestore: session label: "xfs_dump"
xfsrestore: media label: "sdb1"
xfsrestore: file system id: 14c8601d-3477-4f61-b775-39d9e837f98b
xfsrestore: session id: 2e16c81a-18a3-4388-b1c6-0a237622522a
xfsrestore: media id: 7657c754-3585-4d6f-bfed-59037a046006
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 2 directories and 3 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /opt/xfs_dump OK (success)
xfsrestore: Restore Status: SUCCESS

查看
[root@localhost data]# ls /data/
passwd  test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值