有实力高端网站设计地址,公司的网站,网站推广的目的和意义,wordpress 悬浮 登录一#xff0c;文件系统
#xff08;一#xff09;inode 和block概述
1#xff0c;文件数据包括元信息与实际数据 2#xff0c;文件存储在硬盘上#xff0c;硬盘最小存储单位是“扇区”#xff0c;每个扇区存储512字节
3#xff0c;block (块) 连续的八个扇区组成一…一文件系统
一inode 和block概述
1文件数据包括元信息与实际数据 2文件存储在硬盘上硬盘最小存储单位是“扇区”每个扇区存储512字节
3block (块) 连续的八个扇区组成一个 block
是文件存取的最小单位
4inode (索引节点) 中文译名为“索引节点”也叫i节点
用于存储文件元信息
5注意一个文件必须占用一个inode但至少占用一个block
二inode包含文件的元信息
文件的字节数 文件拥有者的UserID 文件的Group ID 文件的读、写、执行权限 文件的时间戳 用stat命令可以查看某个文件的inode信息 示例: stat aa.txt 三Linux系统文件三个主要的时间属性
1 ctime(change time)
最后一次改变文件或目录 (属性)的时间
2 atime(access time)
最后一次访问文件或目录的时间
3 mtime(modify time)
最后一次修改文件或目录 (内容) 的时间
最好用mtime 假如你看了一眼日志日志的atime 就会变化 所以根据atime去找具体时间段的日志容易混淆但是日志不会人为更改内容mtime时间准确 四inode的内容
1目录文件的结构
目录也是一种文件
目录文件的结构
2,每个inode都有一个号码操作系统用inode号码来识别不同的文件 3,Linux系统内部不使用文件名而使用inode号码来识 别文件 4,对于用户文件名只是inode号码便于识别的别称 五inode的号码
1用户通过文件名打开文件时系统内部的过程 1系统找到这个文件名对应的inode号码 2通过inode号码获取inode信息
3根据inode信息找到文件数据所在的block读出数据
2查看inode号码的方法
ls-i命令:查看文件名对应的inode号码
ls -i aa.txt
stat命令查看文件inode 信息中的inode号码
stat aa.txt 3,inode号有限他的多少和磁盘大小有关
inode 号在同一块设备磁盘逻辑卷等上是唯一的不同设备有可能有一样
inode号有限他的多少和磁盘大小有关 4例题
问我磁盘空间还剩余很多但是无法继续建立文件?
答因为inode 号用完了 解决方法 如果是lvm 扩容 如果是普通分区删除没有用的空文件 六inode 的特殊作用
由于inode号码与文件名分离导致一些Unix/Linux系统具有以下的现象
1当文件名包含特殊字符可能无法正常删除文件直接删除inode也可以删除文件 2移动或重命名文件时只改变文件名不影响inode号码
3打开一个文件后系统通过inode号码来识别该文件不再考虑文件名 删除文件后空间没变化
[rootlocalhost opt]#lsof |grep delete
..............................................
80 /boot/bigfile (deleted)[rootlocalhost opt]#echo /boot/bigfilelsof 打开系统中已经被打开的文件 七在linux 使用文件过程
根据文件夹的文件名和inode 号的关系找到对应的inode 表属主 属组再根据inode表中的指针找到磁盘上的真实数据 二文件恢复extundelete只能恢复ext3
一实验环境
在编译安装 extundelete 之前需要先安装两个依赖包 e2fsprogs-libs 和 e2fsprogs-devel
这两个包在系统安装光盘的/Package 目录下就有使用 rpm 或 yum 命令将其安装。
e2fsprogs-devel 安装依赖于 libcom_err-devel 包
[rootlocalhost ~]#yum -y install e2fsprogs-devel e2fsprogs-libs
#安装依赖软件
[rootlocalhost ~]# tar -jxvf extundelete-0.2.4.tar.bz2 -C /opt
#解压软件
[rootlocalhost ~]# cd /opt/extundelete-0.2.4
#切换到目录下
[rootlocalhost extundelete-0.2.4]# ./configure
#编译安装
[rootlocalhost extundelete-0.2.4]#make
[rootlocalhost extundelete-0.2.4]#make install
[rootlocalhost extundelete-0.2.4]#cd /usr/local/bin/
[rootlocalhost bin]#ls
extundelete you-get#验证恢复目前使用版本只对ext3 有效分区略
[rootlocalhost ~]# mkfs.ext3 /dev/sdb1
[rootlocalhost ~]# mkdir /test/
[rootlocalhost ~]# mount /dev/sdb1 /test/
[rootlocalhost ~]# cd /test/
[rootlocalhost test]# echo aa
[rootlocalhost test]# echo ab
[rootlocalhost test]# echo ac
[rootlocalhost test]# echo ad
二模拟删除并恢复
可以使用extundelete /dev/sdb1 --inode 2
查看文件系统/dev/sdb1 下存在哪些文件
具体的使用情况。其中--inode 2 代表从 i 节点为 2 的文件开始查看一般文件系统格式化挂
载之后i 节点是从 2 开始的2 代表该文件系统最开始的目录。
在恢复前需要先解挂载
[rootlocalhost test]# rm -rf a b
#模拟删除
[rootlocalhost test]# ls c d lostfoun
[rootlocalhost test]# cd
[rootlocalhost ~]# umount /test/
#解挂载
[rootlocalhost ~]#extundelete /dev/sdb1 --inode 2
# 命令 查看的分区 从2节点开始
#查看该分区下的存在哪些文件[rootlocalhost ~]# extundelete /dev/sdb1 --restore-all
# 命令 需要恢复的分区设备 恢复选项全都要
#使用恢复
执行完恢复的命令后在当前目录下会出现一个/RECOVERED_FILES/目录里面保
存了已经恢复的文件
[rootlocalhost ~]# ls
anaconda-ks.cfg extundelete-0.2.4 extundelete-0.2.4.tar.bz2 RECOVERED_FILES
[rootlocalhost ~]# cd RECOVERED_FILES/
[rootlocalhost RECOVERED_FILES]# ls
a b ext3三xfs类型备份和恢复
CentOS 7 系统默认采用 xfs 类型的文件。针对 xfs 文件系统目前也没有比较成熟的文件恢复工具所以建议提前做好数 据备份以避免数据丢失。
一实验环境
xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。
若系统中未安装 xfsdump与xfsrestore工具可
以通过yum install -y xfsdump命令安装。
xfsdump 按照inode 顺序备份一个 xfs 文件系统。xfsdump 的备份级别有两种 0 表示完全备份 1-9 表示增量 备份 xfsdump 的备份级别默认为 0
xfsdump 的命令格式为
xfsdump -f 备份存放位置 要备份路径或设备文件。
常用的备份参数包括以下几种 -f指定备份文件目录 -L指定标签 session label -M指定设备标签 media label -s备份单个文件-s 后面不能直接跟路径
使用 xfsdump 时需要注意以下的几个限制 不支持没有挂载的文件系统备份所以只能备份已挂载的 必须使用 root 的权限才能操作 只能备份 XFS 文件系统 备份下来的数据只能让 xfsrestore 解析 不能备份两个具有相同 UUID 的文件系统可使用blkid查看。 二具体过程
##########前期准备
[rootlocalhost opt]#mkfs.xfs -f /dev/sdb1
#-f强制格式化
[rootlocalhost ~]# fdisk /dev/sdb
#分区略
[rootlocalhost data]#partprobe /dev/sdb
#刷新分区
[rootlocalhost ~]# mkfs.xfs /dev/sdb1
#格式化
[rootlocalhost ~]# mkdir /date
[rootlocalhost ~]# mount /dev/sdb1 /date/
#挂载
[rootlocalhost ~]# cd /date
[rootlocalhost date]# cp /etc/passwd ./
#将passwd文件拷入
[rootlocalhost date]# mkdir test
[rootlocalhost date]# touch test/a############备份
[rootlocalhost data]#rpm -qa |grep xfsdump
#查看是否已安装
xfsdump-3.1.4-1.el7.x86_64
[rootlocalhost data]#yum install xfsdump -y
#未安装可以使用yum安装[rootlocalhost ~]# xfsdump -f /opt/dump_sdb2 /dev/sdb2 [-L dump_sdb1 -M sdb1]
# 命令 指定备份目录路径和文件名 分区 打上标记 现在不打后面也要输入
#使用 xfsdump 命令备份整个分区 并打上标记[rootlocalhost ~]#xfsdump -f /opt/dump_sdb2 /dev/sdb2
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)- dump_sdb2 (文件标签)please enter label for media in drive 0 (timeout in 300 sec)- sdb2(设备标签)
media label entered: sdb2
模拟数据丢失后恢复
[rootlocalhost data]#cd /data/
[rootlocalhost data]#rm -rf /*
[rootlocalhost data]#ls#恢复
[rootlocalhost opt]#xfsrestore -f /opt/dump_sdb1 /data/
# 使用 bak文件 将数据恢复到 /data 下
[rootlocalhost opt]#ls /data/
passwd test[rootlocalhost opt]#xfsdump -l 1 -f /backup/dump_sdb1_level_1 /sdb1 -L dump_sdb1_level_1 -M sdb1
#设定级别 四日志
/var/log
一日志功能
用于记录系统、程序运行中发生的各种事件
通过阅读日志有助于诊断和解决系统故障
二常见的一些日志文件
1系统日志
/var/log/messages 系统中大部分的信息
/var/log/secure系统安全日志文本格式应周期性分析
2用户日志
/var/log/btmp当前系统上用户的失败尝试登录相关的日志信息二进制格式lastb命令进行查看
/var/log/wtmp当前系统上用户正常登录系统的相关日志信息二进制格式last命令可以查看 /var/log/lastlog:每一个用户最近一次的登录信息二进制格式lastlog命令可以查看
/var/log/lastlog 最近的用户登录事件
3其余的一些日志
/var/log/dmesgCentOS7 之前版本系统引导过程中的日志信息文本格式开机后的硬件变化将不再记录专用命令dmesg查看可持续记录硬件变化的情况
/var/log/boot.log 系统服务启动的相关信息文本格式
/var/log/anaconda : anaconda的日志操作系统安装时安装的软件信息
/var/log/cron 计划任务日志
/var/log/maillog 邮件系统日志 三日志消息的级别
在 Linux 内核中根据日志消息的重要程度不同将其分为不同 的优先级别数字等级越小优先级越高消息越重要
0 EMERG紧急会导致主机系统不可用的情况。
1 ALERT警告必须马上采取措施解决的问题。
2 CRIT严重比较严重的情况。
3 ERR错误运行出现错误。
4 WARNING提醒可能影响系统功能需要提醒用户的重要事件。
5 NOTICE注意不会影响正常功能但是需要注意的事件。
6 INFO信息一般信息。
7 DEBUG调试程序或系统调试信息等 四日志记录的一般格式 日志文件的格式包含以下 4 列 事件产生的时间。 产生事件的服务器的主机名。 产生事件的服务名或程序名。 事件的具体信息。 五内核和公共日志
1日志的配置文件 位置在 /etc/rsyslog.conf
[rootlocalhost ~]#vim /etc/rsyslog.conf
#查看rsyslog.conf 配置文件
*.info;mail.none;authpriv.none;cron.none /var/log/messages
#表示所有info等级以上的所有等级的信息都写到对应的日志文件里
mail.none
#表示某事件的信息不写到日志文件里这里比如是邮件
2内核和公共消息日志存储位置
内核及大多数系统消息被记录到公共日志文件/var/log/messages 中
而其他一些程序消息被记录到各自独立的日志文件中此外日志消息还能够记录到特定的存储设备中或者直接发送给指定用户。
对于 rsyslog 服务统一管理的大部分日志文件使用的日志记录格式基本上是相同的。
以公共日志/var/log/messages 文件的记录格式为例其中每一行表示一条日志消息每一条消息均包括以下四个字段。 时间标签消息发出的日期和时间。 主机名生成消息的计算机的名称。 子系统名称发出消息的应用程序的名称。 消息消息的具体内容。 六查询当前登录的用户情况
1users
users 命令只是简单地输出当前登录的用户名称每个显示的用户名对应一个登录会话。 如果一个用户有不止一个登录会话那他的用户名将显示与其相同的次数
[rootlocalhost log]#users
root
2who
who命令用于报告当前登录到系统中的每个用户的信息。使用该命令系统管理员可
以查看当前系统存在哪些不合法用户从而对其进行审计和处理。who 的默认输出包括用
户名、终端类型、登录日期及远程主机
[rootlocalhost log]#who
root pts/0 2021-09-20 20:12 (192.168.91.1)
root pts/3 2021-09-20 13:09 (192.168.91.1)
zhangsan :0 2021-09-20 20:12 (:0
3w
w 命令用于显示当前系统中的每个用户及其所运行的进程信息比 users、who 命令的 输出内容要丰富一些。 [rootlocalhost log]#w20:16:08 up 7:16, 3 users, load average: 0.07, 0.06, 0.05
USER TTY FROM LOGIN IDLE JCPU PCPU WHAT
root pts/0 192.168.91.1 20:12 4:00 0.06s 0.02s bash
root pts/3 192.168.91.1 13:09 0.00s 0.96s 0.02s w
zhangsan :0 :0 20:12 ?xdm? 1:39 0.17s /usr/libexec/gnome-session-binary - 七查询用户登录的历史记录
1last
last 命令用于查询成功登录到系统的用户记录
最近的登录情况将显示在最前面。通过 last 命令可以及时掌握 Linux 主机的登录情况若发现未经授权的用户登录过则表示当前 主机可能已被入侵。
[rootlocalhost log]#last
zhangsan :0 :0 Mon Sep 20 20:12 still logged in
root pts/0 192.168.91.1 Mon Sep 20 20:12 still logged in
root pts/0 192.168.91.1 Mon Sep 20 19:48 - 20:10 (00:22)
root pts/3 192.168.91.1 Mon Sep 20 13:09 still logged in
root pts/2 192.168.91.1 Tue Sep 14 17:42 - 15:09 (521:27)
2 lastb
lastb 命令用于查询登录失败的用户记录
如登录的用户名错误、密码不正确等情况都 将记录在案。登录失败的情况属于安全事件因为这表示可能有人在尝试猜解你的密码。除 了使用 lastb 命令查看以外也可以直接从安全日志文件/var/log/secure 中获得相关信息。
[rootlocalhost log]#lastb
btmp begins Mon Sep 20 14:33:01 2021 八日志管理策略
及时作好备份和归档延长日志保存期限控制日志访问权限日志中可能会包含各类敏感信息如账号、口令等集中管理日志
将服务器的日志文件发到统一的日志文件服务器便于日志信息的统一收集、整理和分析杜绝日志信息的意外丢失、恶意篡改或删除 五日志服务管理
一rsyslog 系统日志服务
rsyslog 系统日志服务软件 帮助管理日志
rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能出色的安全性和模块化设计。尽管rsyslog最初是常规的syslogd但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。
当应用有限的处理时RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中性能通常也被认为是惊人的”。
二rsyslog 特性 多线程 UDP, TCP, SSL, TLS, RELP MySQL, PGSQL, Oracle实现日志存储 强大的过滤器可实现过滤记录日志信息中任意部分 自定义输出格式 可以日志 适用于企业级
三ELK 日志收集
ELK由Elasticsearch, Logstash, Kibana三个软件组成 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene Elasticsearch是个开源分布式搜索引擎可以处理大规模日志数据比如Nginx、Tomcat、系统日志等功能 Logstash对日志进行收集、分析过滤并将其存储供以后使用 Kibana 可以提供的日志分析友好的 Web 界面 kafka消息队列 四rsyslog
1查看rsyslog 的配置文件 2实验模拟通过 rsyslog 软件将sshd程序的日志 独立出来
sshd 软件的 日志 是放在 /var/log/secure 日志中很多其他软件 放在一起和这个软件比较重要所以我们要把 sshd 软件的日志单独存放。
2.1 自定义一个日志配置文件 2.2 看sshd的配置文件
软件名为openssh-server
rpm -qc openssh-server 2.3 希望他的日志单独存放 改ssh 自己的配置文件 2.4 重启配置文件 2.5 开另一台机器先关防火墙
ssh 连接过来 2.6 看 我们ssh 的日志文件 /data/sshd.log 3,作用 能看到谁在暴力破解你的密码 五网络日志远程日志功能
1实验目的把日志汇总到一台总的日志服务器上
2实验步骤
开虚拟机2 虚拟机3 将2,3的防火墙都关闭
3打开虚拟机2 日志的配置文件 4这边用tcp 或者udp 都可以
我们将这两行解除注释
5重新启动rsyslog 6, 查看开启的端口 7将虚拟机3重复以上操作
8dd 复制日志路径p粘贴 将日志路径改为要发送的 日志服务器 此处加192.168.217.105 指tcp 192.168.217.105 指udp 9重新启动rsyslog 10,测试 我们这边手写一个日志 logger this test from 192.168.217.77 11,查看最新日志消息 12我们再去 日志汇总机 查看日志消息可以看到也有该日志 六 日志管理工具 journactl
CentOS 7 以后版利用Systemd 统一管理所有 Unit 的启动日志。带来的好处就是可以只用journalctl一个命令查看所有日志内核日志和应用日志。 1,服务程序报错处理方式
第一种
1我们这边模拟服务故障会提醒我们去到 systemctl status httpd.service 查看 2 systemctl status httpd.service屏幕不够大显示不全
标准输出重定向 3 systemctl status httpd.service
告诉我们 第42行错误 应该是 isten 错了 4 vim 42 直接进到第42行改 第二种
journactl -xe 可以查看实时日志 以及日志的报错信息 2, journactl 使用方法
journactl -u 程序名 只想看一个程序的内容
journalctl -xe --no-pager 可以查看日志详细信息
journactl -S”开始时间” -U”结束时间” 想查看一个时间段的日志输入 3如果想查看几点几分到几点几分的日志
在内存中查找
#查看指定时间的日志
journalctl --since2017-10-30 18:10:30 journalctl --since 20 min ago journalctl --since yesterday journalctl --since 2017-01-10 --until 2017-01-11 03:00 journalctl --since 09:00 --until 1 hour ago
在日志文件中查找 七logrotate——日志转储
使用logrotate命令。logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除并创建新的日志文件称为日志转储或滚动。可以根据日志文件的大小也可以根据其天数来转储这个过程一般通过 cron 程序来执行
首先我们在/var/log/httpd的目录下看到两个文件这是httpd服务的日志信息 如果我们现在把access_log文件移动成一个新的文件加载后又会生成新的文件 这是因为在httpd的配置文件中规定了 我们查看一下logrotate的配置文件 下面是有关的详细信息
配置参数说明compress通过gzip压缩转储以后的日志nocompress不压缩copytruncate用于还在打开中的日志文件把当前日志备份并截断nocopytruncate备份日志文件但是不截断create mode ownergroup转储文件使用指定的权限所有者所属组创建新的日志文件nocreate不建立新的日志文件delaycompress和 compress 一起使用时转储的日志文件到下一次转储时才压缩nodelaycompress覆盖 delaycompress 选项转储同时压缩errors address专储时的错误信息发送到指定的Email地址ifempty即使是空文件也转储此为默认选项notifempty如果是空文件的话不转储mail address把转储的日志文件发送到指定的E-mail 地址nomail转储时不发送日志文件olddir directory转储后的日志文件放入指定目录必须和当前日志文件在同一个文件系统noolddir转储后的日志文件和当前日志文件放在同一个目录下prerotate/endscript在转储以前需要执行的命令这两个关键字必须单独成行postrotate/endscript在转储以后需要执行的命令这两个关键字必须单独成行daily指定转储周期为每天weekly指定转储周期为每周monthly指定转储周期为每月rotate count指定日志文件删除之前转储的次数0指没有备份5指保留5个备份tabooext [] list让logrotate*不转储指定扩展名的文件缺省的扩展名是.rpm-orig,.rpmsave, v, 和~size size当日志文件到达指定的大小时才转储bytes(缺省)及KB或MBsharedscripts默认对每个转储日志运行prerotate和postrotate脚本日志文件的绝对路径作为第一个参数传递给脚本。 这意味着单个脚本可以针对与多个文件匹配的日志文件条目多次运行例如/ var / log / news /.example。 如果指定此项sharedscripts则无论有多少个日志*与通配符模式匹配脚本都只会运行一次nosharedscripts针对每一个转储的日志文件都执行一次prerotate和 postrotate脚本此为默认值missingok如果日志不存在不提示错误继续处理下一个nomissingok如果日志不存在提示错误此为默认值