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

    技术2024-07-27  70

    Linux文件系统与日志分析

    文章目录

    Linux文件系统与日志分析inode和block概述inode的内容inode总结block总结linux系统文件时间戳的三个主要的时间属性目录文件的结构 查看inode号码的方法Linux df命令硬链接与软链接软链接:硬链接:软连接与硬链接的区别 日志文件恢复误删除的文件XFS备份恢复查看

    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
    Processed: 0.013, SQL: 9