CentOS 7文件系统与日志分析
发表于:2024-12-01 作者:千家信息网编辑
千家信息网最后更新 2024年12月01日,Linux 文件系统在处理 Linux 系统出现的各种故障时,故障的症状是最易发现的,而导致这一故障的原因才是最终排除故障的关键。熟悉 Linux 系统中常见的日志文件,了解一般故障的分析与解决办法,
千家信息网最后更新 2024年12月01日CentOS 7文件系统与日志分析
使用
Linux
文件系统
在处理 Linux
系统出现的各种故障时,故障的症状是最易发现的,而导致这一故障的原因才是最终排除故障的关键。熟悉 Linux
系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点、"对症下药"、并及时解决各种系统问题。
inode
与 block
详解
文件存储再硬盘上,硬盘最小存储单位是"扇区",每个扇区存储512字节
文件数据包括元信息与实际数据
元信息包含文件属性信息,文件打开来输入的内容为实际数据
block
(块)- 连续的八个扇区组成一个block (4k)
- 是文件存取的最小单位
inode
(索引节点)- 中文译名为"索引节点",也就i节点
- 用于存储文件元信息
inode
的内容
inode
包含文件的元信息
- 文件的字节数
- 文件拥有着的
User ID
- 文件的
Group ID
- 文件的读、写、执行权限
- 文件的时间戳
- ……
使用stat
命令查看inode
信息
[root@localhost mnt]# stat abc.txt //查看abc文件inode信息 文件:"abc.txt" 大小:12 块:8 IO 块:4096 普通文件设备:802h/2050d Inode:18123362 硬链接:1权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)环境:unconfined_u:object_r:mnt_t:s0最近访问:2019-09-02 04:12:18.210370997 +0800最近更改:2019-09-02 04:12:18.210370997 +0800最近改动:2019-09-02 04:12:18.210370997 +0800创建时间:-
Linux
系统文件三个主要的时间属性
ctime(change time)
:最后一次改变文件或目录(属性)的时间atime
(access time):最后一次访问文件或目录的时间mtime(modify time)
:最后一次修改文件或目录(内容)的时间
目录文件的结构
- 目录也是文件
- 目录文件的结构
- 每个
inode
都有一个号码,操作系统用inode
号码来识别不同的文件 - Linux系统内部不使用文件名,而使用
inode
号命来识别文件 - 对于用户来说,文件名只是
inode
号码便于识别的别称
inode
的号码
用户通过文件名打开文件时,系统内部的过程
- 系统找到这个文件名对应的
inode
号码 - 通过
inode
号码,获取inode
信息 - 根据
inode
信息,找到文件数据所在的block
,读出数据
- 系统找到这个文件名对应的
- 查看
inode
号码的方法ls -i
命令:查看文件名对应的inde
号码
[root@localhost mnt]# ls -i abc.txt //查看文件节点信息 18123362 abc.txt
inode
的大小
inode也会消耗硬盘空间,每个inode的大小,一般时128字节或256字节
格式化文件系统时确定inode的总数
- 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
[root@localhost mnt]# df -i //查看分区节点信息文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点/dev/sda2 10485760 121203 10364557 2% /devtmpfs 229708 376 229332 1% /devtmpfs 233381 1 233380 1% /dev/shmtmpfs 233381 560 232821 1% /runtmpfs 233381 16 233365 1% /sys/fs/cgroup/dev/sda5 5241856 146 5241710 1% /home/dev/sda1 3145728 328 3145400 1% /boottmpfs 233381 6 233375 1% /run/user/42tmpfs 233381 17 233364 1% /run/user/0/dev/sr0 0 0 0 - /run/media/root/CentOS 7 x86_64
inode
的特殊作用
- 由于
inode
号码与文件名分离,导致一些Linux
系统具有以下的现象- 当文件名包换特殊字符,可能无法正常删除文件,直接删除
inode
,也可以删除文件 - 按节点号删除文件命令:
find ./* -inum [节点号] -delete
- 当文件名包换特殊字符,可能无法正常删除文件,直接删除
[root@localhost mnt]# ls -i16777284 ac1.txt 18123362 ac2.txt 18123366 ac3.txt 18123370 ac4.txt 18123371 ac5.txt[root@localhost mnt]# find ./* -inum 16777284 -delete[root@localhost mnt]# ls -i18123362 ac2.txt 18123366 ac3.txt 18123370 ac4.txt 18123371 ac5.txt
- 移动或重命名文件时,只改变文件名,不影响
inode
号码
[root@localhost mnt]# ls -i18123362 ac2.txt 18123366 ac3.txt 18123370 ac4.txt 18123371 ac5.txt[root@localhost mnt]# mv ac2.txt /opt[root@localhost mnt]# ls -i /opt18123362 ac2.txt 1389838 rh
- 打开一个文件后,系统通过
inode
号码来识别该文件,不再考虑文件名
访问文件的简单流程
xfs
类型文件备份和恢复
xfs
文件的恢复需要我们先把文件备份到另一块磁盘,当文件损坏时可以通过备份的文件进行恢复(这里面的备份文件是通过对文件做固定格式的压缩来进行备份)。
xfs
类型的文件可使用xfsdump
与xfsrestore
工具进行备份恢复。若系统中未安装xfsdump
与xfsrestore
工具,可以通过yum来安装工具。
[root@localhost mnt]# yum install xfsdump -y已加载插件:fastestmirror, langpacksLoading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn正在解决依赖关系--> 正在检查事务---> 软件包 xfsdump.x86_64.0.3.1.4-1.el7 将被 升级---> 软件包 xfsdump.x86_64.0.3.1.7-1.el7 将被 更新...//省略部分内容...
命令格式
xfsdump -f 备份存放位置 要备份的路径或设备文件
xfsdump
的备份级别有两种0
:表示完全备份(默认为0)1~9
:表示增量备份
- 常用的备份参数
-f
:指定备份文件目录-L
:指定标签 session label-M
:指定设备标签 media label-s
:备份单个文件,-s 后面不能直接跟路径。
[root@localhost ~]# fdisk /dev/sdb //创建新磁盘欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。Device does not contain a recognized partition table使用磁盘标识符 0x57599cea 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):nPartition type: p primary (0 primary, 0 extended, 4 free) e extendedSelect (default p): p分区号 (1-4,默认 1):起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁盘。[root@localhost ~]# 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=0data = bsize=4096 blocks=5242624, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[root@localhost ~]# mkdir /opt/data //创建挂载点[root@localhost ~]# mount /dev/sdb1 /opt/data //挂载创建的磁盘[root@localhost ~]# cp /etc/passwd /opt/data //将passwdd目录复制到挂载的磁盘中[root@localhost ~]# ls /opt/data //查看文件passwd[root@localhost ~]# xfsdump -f /mnt/xfs_dump /dev/sdb1 //使用命令备份文件xfsdump: using file dump (drive_simple) strategyxfsdump: 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:/opt/dataxfsdump: dump date: Mon Sep 2 05:27:29 2019xfsdump: session id: 96c17954-e969-4041-9d9e-4bd59746ddabxfsdump: session label: "xfs_dump"xfsdump: ino map phase 1: constructing initial dump listxfsdump: ino map phase 2: skipping (no pruning necessary)xfsdump: ino map phase 3: skipping (only one dump stream)xfsdump: ino map construction completexfsdump: estimated dump size: 25216 bytesxfsdump: /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 mapxfsdump: dumping directoriesxfsdump: dumping non-directory filesxfsdump: ending media filexfsdump: media file size 24264 bytesxfsdump: dump size (non-dir files) : 2592 bytesxfsdump: dump complete: 13 seconds elapsedxfsdump: Dump Summary:xfsdump: stream 0 /mnt/xfs_dump OK (success)xfsdump: Dump Status: SUCCESS //备份成功[root@localhost ~]# rm -rf /opt/data/* //删除磁盘中文件[root@localhost ~]# ls /opt/data //查看文件是否删除[root@localhost ~]# xfsrestore -f /mnt/xfs_dump /opt/data //执行命令恢复文件xfsrestore: using file dump (drive_simple) strategyxfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and controlxfsrestore: searching media for dumpxfsrestore: examining media file 0xfsrestore: dump description: xfsrestore: hostname: localhost.localdomainxfsrestore: mount point: /opt/dataxfsrestore: volume: /dev/sdb1xfsrestore: session time: Mon Sep 2 05:27:29 2019xfsrestore: level: 0xfsrestore: session label: "xfs_dump"xfsrestore: media label: "sdb1"xfsrestore: file system id: 2e3df4e8-dd92-46f7-84ca-f254c4e579bdxfsrestore: session id: 96c17954-e969-4041-9d9e-4bd59746ddabxfsrestore: media id: d27aafc8-a405-4a8f-b7f0-1a018a7026eexfsrestore: using online session inventoryxfsrestore: searching media for directory dumpxfsrestore: reading directoriesxfsrestore: 1 directories and 1 entries processedxfsrestore: directory post-processingxfsrestore: restoring non-directory filesxfsrestore: restore complete: 0 seconds elapsedxfsrestore: Restore Summary:xfsrestore: stream 0 /mnt/xfs_dump OK (success)xfsrestore: Restore Status: SUCCESS[root@localhost ~]# ls /opt/data //查看文件是否恢复passwd //成功恢复文件
xfsdump
使用的限制- 只能备份已挂载的文件系统
- 必须使用
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
统一管理- 软件包:
reyelog-7.4.7-16.el7.x86_64
- 主要程序:
/sbin/rsyslogd
- 配置文件:
/etc/rsyslog.conf
- 软件包:
[root@localhost ~]# vim /etc/rsyslog.conf //查看日志文件配置信息# rsyslog configuration file# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html#### MODULES ##### The imjournal module bellow is now used as a message source instead of imuxsock.$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)$ModLoad imjournal # provides access to the systemd journal#$ModLoad imklog # reads kernel messages (the same are read from journald)#$ModLoad immark # provides --MARK-- message capability# Provides UDP syslog reception#$ModLoad imudp#$UDPServerRun 514# Provides TCP syslog reception#$ModLoad imtcp#$InputTCPServerRun 514#### GLOBAL DIRECTIVES ##### Where to place auxiliary files$WorkDirectory /var/lib/rsyslog# Use default timestamp format$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat...//省略部分内容...[root@localhost ~]# cd /var/log //查看日志文件目录[root@localhost log]# lsanaconda dmesg libvirt rhsm tallylog Xorg.0.logaudit dmesg.old maillog sa tuned Xorg.0.log.oldboot.log firewalld messages samba vmware-vgauthsvc.log.0 Xorg.1.logbtmp gdm ntpstats secure vmware-vmsvc.log Xorg.9.logchrony glusterfs pluto speech-dispatcher vmware-vmusr.log yum.logcron grubby_prune_debug ppp spooler wpa_supplicant.logcups lastlog qemu-ga sssd wtmp
查看系统日志文件
[root@localhost log]# vim messages //查看系统日志文件Aug 10 03:53:40 localhost journal: Runtime journal is using 8.0M (max allowed 91.1M, trying to leave 136.7M free of 903.6M available → current limit 91.1M).Aug 10 03:53:40 localhost kernel: Initializing cgroup subsys cpusetAug 10 03:53:40 localhost kernel: Initializing cgroup subsys cpuAug 10 03:53:40 localhost kernel: Initializing cgroup subsys cpuacctAug 10 03:53:40 localhost kernel: Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017Aug 10 03:53:40 localhost kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-693.el7.x86_64 root=UUID=729c9a26-dfdc-40f9-ae91-1ade55be51bb ro crashkernel=auto rhgb quiet LANG=zh_CN.UTF-8Aug 10 03:53:40 localhost kernel: Disabled fast string operationsAug 10 03:53:40 localhost kernel: e820: BIOS-provided physical RAM map:Aug 10 03:53:40 localhost kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usableAug 10 03:53:40 localhost kernel: BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reservedAug 10 03:53:40 localhost kernel: BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved...//省略部分内容...
last
命令查看用户登录日志
[root@localhost log]# lastroot pts/0 192.168.144.1 Mon Sep 2 05:17 still logged in reboot system boot 3.10.0-693.el7.x Mon Sep 2 05:17 - 05:58 (00:40) root pts/0 192.168.144.1 Mon Sep 2 04:11 - crash (01:05) root :0 :0 Mon Sep 2 04:11 - crash (01:05) reboot system boot 3.10.0-693.el7.x Mon Sep 2 04:10 - 05:58 (01:47) root pts/0 :0 Sun Aug 25 01:10 - 01:10 (00:00) root :0 :0 Sun Aug 25 01:10 - crash (8+03:00) ...//省略部分内容...
lastb
查看用户登录次数日志
[root@localhost log]# lastbroot :0 :0 Sun Aug 25 01:10 - 01:10 (00:00) root :1 :1 Sat Aug 10 06:26 - 06:26 (00:00) btmp begins Sat Aug 10 06:26:22 2019
查看程序日志文件
1、安装httpd服务,搭建Apache网站服务;然后关闭防火墙,使宿主机可以访问
[root@localhost ~]# yum install httpd -y //安装httpd服务已加载插件:fastestmirror, langpacksLoading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn正在解决依赖关系--> 正在检查事务---> 软件包 httpd.x86_64.0.2.4.6-89.el7.centos.1 将被 安装...//省略部分内容...[root@localhost ~]# systemctl start httpd //开启服务[root@localhost ~]# systemctl stop firewalld.service //关闭防火墙[root@localhost ~]# setenforce 0 [root@localhost ~]# cd /var/log //查看日志文件目录,看是否生成httpd日志闻文件目录[root@localhost log]# lsanaconda dmesg lastlog qemu-ga sssd wtmpaudit dmesg.old libvirt rhsm tallylog Xorg.0.logboot.log firewalld maillog sa tuned Xorg.0.log.oldbtmp gdm messages samba vmware-vgauthsvc.log.0 Xorg.1.logchrony glusterfs ntpstats secure vmware-vmsvc.log Xorg.9.logcron grubby_prune_debug pluto speech-dispatcher vmware-vmusr.log yum.logcups httpd ppp spooler wpa_supplicant.log
2、通过宿主机访问搭建的网站后,查看系统程序的日志文件
[root@localhost log]# cd httpd //进入httpd程序目录[root@localhost httpd]# ls access_log error_log[root@localhost httpd]# vim access_log //查看程序日志文件192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/bootstrap.min.css HTTP/1.1" 200 19341 "http://192.168.144.133/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/open-sans.css HTTP/1.1" 200 5081 "http://192.168.144.133/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /images/apache_pb.gif HTTP/1.1" 200 2326 "http://192.168.144.133/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /images/poweredby.png HTTP/1.1" 200 3956 "http://192.168.144.133/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/fonts/Light/OpenSans-Light.woff HTTP/1.1" 404 241 "http://192.168.144.133/noindex/css/open-sans.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/fonts/Bold/OpenSans-Bold.woff HTTP/1.1" 404 239 "http://192.168.144.133/noindex/css/open-sans.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1" 404 238 "http://192.168.144.133/noindex/css/open-sans.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)
日志消息的级别
- 0 EMERG(紧急):会导致主机系统不可用的情况
- 1 ALERT(警告):必须马上采取措施解决问题
- 2 CRIT (严重):比较严重的情况
- 3 ERR (错误):运行出现错误
- 4 WARNING(提醒):可能会影响系统功能的事件
- 5 NOTICE (注意):不会影响系统但值得注意
- 6 INFO(信息):一般信息
- 7 DEBUG (调试):程序员调试信息
日志管理策略
- 及时做好备份和归档
- 延长日志保存期限
- 控制日志访问权限
- 日志中可能会包含各类敏感信息,如账户、口令等
集中管理日志
将服务器的日志文件发到统一的日志文件服务器
- 便于日志信息的同一收集、整理和分析
- 杜绝日志信息的意外丢失、恶意篡改或删除
文件
日志
系统
备份
信息
目录
号码
命令
文件名
磁盘
程序
内容
服务
故障
用户
节点
数据
时间
格式
管理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
福建火山软件开发平台教程视频
软件开发能力分类
深圳服务器系统集成服务公司
用云服务器搭建基岩版
互联网经济与金融科技
传感器网络技术在军事上的应用
选择好的协同软件开发
android投票软件开发
论文数据库收录要求
激光生物学报算数据库吗
选择数据库进行检索
北京赛通网络技术公司
姜堰区环保网络技术
处置来源于什么的网络安全
sql 数据库名
软件开发市场调查报告
方舟手游服务器如何管理好
不同服务器之间实现单点登录
绿瘦软件开发
软件开发如何实现okr
MATLAB下载软件开发
软件开发能力分类
grails数据库怎么连接
大数据下网络安全的实用性
修改数据库字段属性sql
郑州安卓软件开发正规平台
江夏区海航网络安全维护收费标准
动森服务器可以调整吗
网络安全的谣言怎么处理
eve几个服务器