目录
一.inode与block概述
- Linux系统文件中有三个部分:文件名,元信息,数据。
- 通常元信息存放在inode(索引节点)中,数据则存放在block(块)中。
- 磁盘的最小存储单位叫做扇区,每个扇区存储512个字节,而块有多个扇区组成,最常见的是4KB,即8个连续的扇区组成
- 一个文件必须占用一个inode,且至少占用一个block
- inode包含文件的元信息,其中有:文件的字节数,文件拥有者的UserID,文件的GroupID,文件的权限,文件的时间戳
- 使用stat命令,查看某个文件的inode信息,实例如下:
[root@localhost ~]# ls /opt
a.txt rh
[root@localhost ~]# cd /opt
[root@localhost opt]# stat a.txt
文件:"a.txt"
大小:12 块:8 IO 块:4096 普通文件
设备:802h/2050d Inode:18238781 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2019-11-17 13:13:15.972866623 +0800
最近更改:2019-11-17 13:13:15.973866605 +0800
最近改动:2019-11-17 13:13:15.973866605 +0800
创建时间:-
- 也可以用ls -i查看文件或者目录的节点号,示例如下
[root@localhost opt]# ls -i
18238781 a.txt 1476590 rh
[root@localhost opt]#
- Linux系统文件的三个主要时间属性:ctime(最后一次改变文件或目录属性的时间);atime(最后一次访问文件或目录的时间);mtime(最后一次修改文件或目录内容的时间)
二.indoe的内容
- 目录文件的结构:文件名+inode号码,称为目录项
- 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
- Linux系统内部使用inode号码来识别文件
- 对于用户来说,文件名只是inode号码便于识别的别称
三.inode的号码
- 用户通过文件名打开文件时,系统内部的过程:1,系统找到这个文件名对应的inode号码;2,通过inode号码获取inode信息;3,根据inode信息,找到文件数据所在的block,读取数据。
- 可以使用ls -i + 文件名或者stat + 文件名,查看inode号码和inode详细信息
四.inode的大小
- 每个inode的大小一般是128字节或者256字节
- 格式化系统时确定inode的总数
- 使用df -i 命令可以查看每个硬盘分区的inode总数和已经使用的数量,如下:
[root@192 ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda2 5242880 125329 5117551 3% /
devtmpfs 121277 392 120885 1% /dev
tmpfs 124962 1 124961 1% /dev/shm
tmpfs 124962 570 124392 1% /run
tmpfs 124962 16 124946 1% /sys/fs/cgroup
/dev/sda3 2097152 154 2096998 1% /home
/dev/sda1 2096640 327 2096313 1% /boot
tmpfs 124962 8 124954 1% /run/user/42
tmpfs 124962 1 124961 1% /run/user/0
[root@192 ~]#
五.inode的特殊作用
- 由于inode号码与文件分离,导致一些Linux系统具有以下现象
- 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
- 移动或者重命名文件时,只改变文件名,不影响inode号码
- 打开一个文件后,系统通过inode号码来识别该文件,不在考虑文件名
六.恢复误删除的xfs文件
- 当我们删除文件时,并没有清楚inode节点和block数据,只是在这个文件的父目录里面的block中,删除这个文件的名字
- Linux是通过Link的数量来控制文件的删除的,只有当一个文件不存在任何Link的时候,这个文件才会被删除
- 恢复xfs类型的文件步骤
1.确保系统有xfsdump和xfsrestore这两个工具
2.创建一个新的分区,格式化且挂载(/dev/sdb1,挂载点为/mnt)
3.在挂载点上,写入数据
4.使用xfsdump工具进行备份
xfsdump -f /opt/xfs_dump /dev/sdb1 > xfs_dump > sdb1
5.删除挂载点下面的数据
rm -rf /mnt/*
6.恢复数据
xfsrestore -f /opt/xfs_dump /mnt
- 实例如下
创建分区,且格式化,挂载到/mnt下
[root@192 ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c3212
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 8388607 4193280 83 Linux
/dev/sda2 8388608 29360127 10485760 83 Linux
/dev/sda3 29360128 37748735 4194304 83 Linux
/dev/sda4 37748736 41943039 2097152 5 Extended
/dev/sda5 37750784 41943039 2096128 82 Linux swap / Solaris
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfa50da11
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
[root@192 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242624, 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@192 ~]# mount /dev/sdb1 /mnt
在挂载点处创建数据文件
[root@192 ~]# cd /mnt
[root@192 mnt]# echo "hello world" > a.txt
[root@192 mnt]# ls
a.txt
备份数据文件
[root@192 ~]# xfsdump -f /opt/xfs_dump /dev/sdb1
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (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 192.168.43.133:/mnt
xfsdump: dump date: Sun Nov 17 16:28:24 2019
xfsdump: session id: c64544a5-e1cb-4277-a336-dde88a9b7b32
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: 25216 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 22208 bytes
xfsdump: dump size (non-dir files) : 544 bytes
xfsdump: dump complete: 14 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /opt/xfs_dump OK (success)
xfsdump: Dump Status: SUCCESS
删除挂载点下的数据文件
[root@192 ~]# rm -rf /mnt/*
[root@192 ~]# ls /mnt
恢复挂载点下的数据
[root@192 ~]# xfsrestore -f /opt/xfs_dump /mnt
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.4 (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: 192.168.43.133
xfsrestore: mount point: /mnt
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Sun Nov 17 16:28:24 2019
xfsrestore: level: 0
xfsrestore: session label: "xfs_dump"
xfsrestore: media label: "sdb1"
xfsrestore: file system id: dece33b5-626c-4497-a90d-1fe920b96d58
xfsrestore: session id: c64544a5-e1cb-4277-a336-dde88a9b7b32
xfsrestore: media id: 1da1e793-1cde-4e67-8331-d0a60ba384a1
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 1 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@192 ~]# ls /mnt
a.txt
注:只能备份已挂载的文件系统,必须使用root权限才能操作,只能备份XFS文件系统,备份后的数据只能让xfsrestore恢复,不能备份两个具有相同的UUID的文件系统
七.日志文件的分类与位置
- 日志用于记录系统、程序运行中发生的各种事件,通过阅读日志,有助于诊断和解决系统故障
- 日志文件分为:内核及系统日志(由系统syslog统一进行管理,日志格式基本相似);用户日志(记录系统用户登录及退出系统的相关信息);程序日志(由各种应用程序独立管理的日志文件,记录格式不统一)
- 日志文件保存的位置:/var/log目录下
- 内核及公共消息日志:/var/log/messages
- 计划任务日志:/var/log/cron
- 系统引导日志:/var/log/dmesg
- 邮件系统日志:/var/log/maillog
- 用户登陆的日志:/var/log/lastlog;/var/log/secure;/var/log/wtmp;/var/run/btmp
八.内核及系统日志
- 由系统服务rsyslogd统一管理
- 主要程序:/sbin/rsyslogd
- 配置文件:/etc/rsyslog.conf
- 日志消息的级别
0 EMERG(紧急):会导致主机系统不可用的情况
1 ALERT (警告):必须马上采取措施解决的问题
2 CRIT (严重): 比较严重的情况
3 ERR(错误):运行出行错误
4 WARNING (提醒):可能会影响系统功能的事件
5 NOTICE (注意):不会影响系统但值得注意
6 INFO (信息):一般信息
7 DEBUG(调式):程序或系统调试信息
- 日志消息一般包括四个字段:时间标签,主机名,子系统名,消息
[root@192 ~]# tail -1 /var/log/messages
Nov 17 16:53:14 localhost chronyd[642]: Source 193.182.111.14 replaced with 162.159.200.1
[root@192 ~]#
九.用户日志
- /var/log/lastlog:最近的用户登录事件
- /var/log/wtmp:用户登录、注销及系统开、关机事件
- /var/run/utmp:当前登录的每个用户的详细信息
- /var/log/secure:与用户验证相关的安全性事件
- 分析相关工具:last查看登录成功的用户;lastb查看登录失败的用户
[root@192 ~]# last
root pts/0 192.168.43.1 Sun Nov 17 16:23 still logged in
reboot system boot 3.10.0-693.el7.x Sun Nov 17 16:21 - 17:02 (00:41)
root pts/0 192.168.43.1 Sun Nov 17 15:50 - down (00:30)
reboot system boot 3.10.0-693.el7.x Sun Nov 17 15:49 - 16:21 (00:32)
root pts/0 192.168.43.1 Sun Nov 17 12:59 - crash (02:49)
reboot system boot 3.10.0-693.el7.x Sun Nov 17 12:21 - 16:21 (03:59)
reboot system boot 3.10.0-693.el7.x Fri Nov 15 17:19 - 16:21 (1+23:01)
root pts/0 192.168.43.1 Fri Nov 15 11:20 - crash (05:59)
root :0 :0 Mon Nov 11 21:53 - crash (3+19:26)
reboot system boot 3.10.0-693.el7.x Mon Nov 11 21:53 - 16:21 (5+18:28)
root :0 :0 Mon Nov 11 20:41 - crash (01:11)
root pts/0 192.168.43.1 Mon Nov 11 19:39 - crash (02:13)
reboot system boot 3.10.0-693.el7.x Mon Nov 11 19:39 - 16:21 (5+20:41)
root pts/0 192.168.43.1 Sun Nov 10 18:30 - down (05:16)
reboot system boot 3.10.0-693.el7.x Sun Nov 10 18:18 - 23:47 (05:28)
root pts/0 192.168.43.1 Sat Nov 9 16:55 - 17:34 (00:38)
root pts/0 192.168.43.1 Sat Nov 9 16:41 - 16:55 (00:13)
root pts/0 192.168.43.1 Sat Nov 9 16:41 - 16:41 (00:00)
zhangsan pts/0 :0 Sat Nov 9 16:41 - 16:41 (00:00)
zhangsan :0 :0 Sat Nov 9 16:41 - down (00:53)
reboot system boot 3.10.0-693.el7.x Sat Nov 9 16:39 - 17:34 (00:55)
wtmp begins Sat Nov 9 16:39:24 2019
[root@192 ~]# lastb
zhangsan :0 :0 Sun Nov 17 17:01 - 17:01 (00:00)
zhangsan :0 :0 Sun Nov 17 17:01 - 17:01 (00:00)
btmp begins Sun Nov 17 17:01:33 2019
[root@192 ~]#
十.程序日志
- web服务:/var/log/httpd/(access_log、error_log)
- 代理服务:/var/log/squid/(access.log、cache.log)
- FTP服务:/var/log/xferlog
- 分析工具:文本查看、grep过滤检索、Webmin管理套件中查看
十一.日志管理策略
- 及时作好备份和归档
- 延长日志保存期限
- 控制日志访问权限
- 集中管理日志