目录
一、inode与block
文件数据包:存储的文件(图片、视频、文本)
Linux的两种存储机制:inode、block
生成一个文件:
- 文件会生成一个inode号
- 文件必然要存储空间。block(最小是4k,如果文件不满4k,也要占4k)
1、inode号:元信息(文件属性)
存储的元信息:文件的创建者、更改日期、文件大小、文件的权限
跟随inode号标识,存储在硬盘上的。
一般inode号占用的空间在512k左右。
inode号用完了,虽然磁盘还有空间也无法创建了
一个文件必须占用一个inode号,至少占一个块。
文件必须有inode号
创建的文件不满4k也要占一个块
Linux一切皆文件,目录也是一种文件
Linux内部是通过inode号来识别文件
对系统来说,文件名只是索引节点inode号的别称,方便用户使用。文件名和inode号一一对应
系统通过inode号来识别文件,不是根据文件名离开识别的
文件的元信息中不包含文件名
stat 文件名:查看inode详细信息
ls -i:查看inode号
- TXT写内容:
1、根据11.txt的inode号,到硬盘上打开这个文件。
2、系统检索文件的元信息,看用户是否有权限访问,看用户有没有写的权限。
3、保存的过程还是要检索元信息,看用户能不能再当前目录写入,最后更改元信息, 文件inode号发生变化(文件占用数据块大小变化,元信息变化,inode发生变化)
2、查看inode信息的时间机制:
atime最近访问:访问这个文件就会改变这个时间
mtime最近更改:修改文件的数据内容,就会更新
ctime最近改动:文件元信息数据发生变化就会变化。修改文件的权限或者是属性,更改文件内容也可能会变。change time
3、文件名和inode号剥离之后:
- 文件名包含特殊字符,可能无法正常删除。这时可以通过inode号,直接找到数据所在块,直接删除
- 移动、重命名,不影响inode号
- 一旦打开文件之后,系统全部以inode号来识别文件,文件名不在考虑范围之内
- vim编辑器修改文件内容之后,可能会生成新的inode号(数据块发生变化才到时元信息变化)
- 文件名不再元信息当中的
删除乱码文件:根据inode号删除
find /opt/ -inum 12233 -exec rm -rf {} \;
模拟inode节点消耗完毕
mkfs.ext4
作业1:xfs文件系统如果inode号用尽的情况。17M
二、文件恢复:
.ext4只能在centos6恢复
用ext3来模拟
extundelete数据恢复工具,支持ext3和ext4,不一定能恢复成功,有几率
extundelete /dev/sdb2 --inode 2:
查看文件系统ext3 4 存在哪些文件
目录下的索引号,inode号。2是第一个
ext3、4类型恢复文件要先解挂载
换一个第三方目录进行恢复
extundelete /dev/sdb2 --restore-all
1、xfs文件系统进行备份和恢复:
centos7默认使用xfs文件系统
xfsdump的备份是有级别的
0表示全量备份
1-9表示增量备份
xfsdump的命令格式和选项:
-f 指定备份文件的目录
-L 指定目录标签
-l 指定备份级别
-M 指定设备标签
-s 备份单个文件 -s后面不能直接跟路径
格式:
xfsdump -f 备份文件的存放文职 要备份的路径和设备 [指定标签]
xfsdump使用是有限制的:
- 只能恢复已挂载的文件系统设备。
- 只能备份xfs文件系统
- 必须要有root权限
- 数据恢复只能通过xfsrestore 解析,进行恢复
- 两个设备的uuid相同,不能进行备份
数据要先备份才能恢复
xfsdump 备份磁盘数据
xfsrestore 恢复数据
xfsdump -f /opt/backup /dev/sdb1 [-L backup -M sdb1]
-f /opt/backup:backup只能是文件不能是目录,而且是没创建的
-L:
-M:
xfsdump 默认全量备份
xfsdump -l 1 -f /opt/backup1 备份文件的文件名不能重复
xfsdump -l 1:增量备份。下次在增量就是-l 2
工作中基本都是全量备份
xfsrestore -f backup /data/ 文件恢复
三、日志分析:
内核以及系统日志 rsyslog 统一管理
配置文件:etc/rsyslog.conf (一般软件配置文件都是.conf)
配置文件里面的内容是固定格式。(空格回车大小写注意)
Linux系统本身产生的日志,大部分服务器自带程序的日志文件,以及第三方应用服务程序的控制日志 都在/var/log目录下
业务日志:只会记录自身产生的业务记录,不会记录到系统日志当中
打不开看messages日志,业务服务出问题看自己目录的业务日志.
etc/rsyslog.conf
包含了系统需要记录的日志类型和级别
他是系统服务日志的核心配置文件
修改这个配置文件,可以更改系统记录日志的方式
/var/log/messages:内核文件,各种应用程序包括第三方程序的控制日志
/var/log/cron:定时任务的日志记录
/var/log/dmesg:系统引导日志
/var/log/maillog:邮件日志
*.info;mail.none;authpriv.none;cron.none /var/log/messgaes
所有info信息日志以及info以上的级别消息,存放到messages,但除了邮件、远程登录、定时任务的日志
格式:设备字段.日志级别 *.info (*表示所有)
多个设备可以用逗号隔开
日志记录的规则:
日志级别:0-7
0 EMERG 紧急
1 ALERT 警告
2 CRIT 严重
3 ERR 错误 服务或者程序运行时出现错误
4 WARNING 提醒:可能会影响系统功能,需要提示用户注意。不是报错。磁盘使用85%
5 NOTICE 注意 不会影响正常功能,但是需要注意,一般不做处理。
6 INFO 信息 一般信息,系统正常的信息
7 DEBUG 调试,调试程序时候用
none:没有优先级,而且不记录任何日志消息
*.info:所有info级别的日志,包括info级别以上的事件信息,保存到/var/log/messages
*.=info:明确指定只保存info日志,其他的都不要
*.!info:除了info级别的都要,!取反
*.info;*.notice:包含info和notice的日志以及以上级别的日志都要
设备字段:
auth:用户认证
authpriv:认证远程登录产生的日志信息
news:网络新闻记录的事件日志
cron:定时任务
kern:内核的时间消息
mail:邮件的日志
user:用户进程记录的日志
uucp:进程间的通信
news.crit /var/log/test:新闻严重日志以及以上
cron.info;mail.none;user.none /var/log/test1
只保存cron.info
同步模式:程序在完成一个任务之后,必须等待处理结果返回之后才能处理下一个任务
异步模式:处理完之后,不必等待返回结果就可以继续处理其他任务
local7 自定义服务。自己定义一些服务,把他的日志记录到/var/log/test
范围0-7
1、日志格式:记录的内容
Sep 7 22:01:01 localhost systemd: Stopping User Slice of root.
Sep 7 22:04:42 localhost systemd: Created slice User Slice of root.
Sep 7 22:04:42 localhost systemd: Starting User Slice of root.
Sep 7 22:04:42 localhost systemd-logind: New session 36 of user root.
Sep 7 22:04:42 :时间戳
localhost : 主机名
systemd-logind :子系统名称,理解位进程
: New session 36 of user root. :消息或者发生事件的具体内容
什么时间发生在谁身上 :发生了什么内容.
Sep 7 22:11:41 localhost systemd: Starting The Apache HTTP Server...
九月七号 22:11 localhost主机 的systemd进程开启http服务中
分析工具:
users:展示登录当前系统的用户
w:显示目前登录系统的详细信息
last:列出截止目前登陆过系统的用户信息
lastb:查询登录失败的用户
四、实验:
1、第一个实验:ssh远程连接
ssh
相当于向日葵远程连接
先关防火墙,安全机制
第一台主机test2:
进入vim /etc/rsyslog.conf:
改如下配置 手动输入:
再进入vim /etc/ssh/sshd_config ssh的配置文件
重启rsyslog 和 sshd
配置完之后另一台主机就能连接本test1主机了:
ssh root@20.0.0.51
(配置好主机test2 的IP地址)
之后test1接变成了test2主机,就可以增删改查了以root身份对机器进行任何操作了
之后进入 tail -f /var/log/ssh.log 就能看连接记录了
2、第二个实验:
配置日志服务器,收集日志
20.0.0.10
20.0.0.20
20主机上所有系统日志,不再记录记录在自己本地,而是发送给10,记录10的服务器上
服务端:提供功能
客服端:使用功能
关防火墙 安全机制
第一台操作:
先进入vim /etc/rsyslog.conf 改配置文件:
- 将tcp下面两行取消注释
- 改log发送目的地
1:将tcp下面两行取消注释
2、改log发送目的地:
把原来50服务器上往/var/log/messages,通过tcp协议的514端口,发到51的
/var/log/messages上去
一个@是udp,两个@是tcp
之后重载rsyslog
接着查看514端口号是否正常运行:netstat -antp | grep 514
LISTEN:等待建立连接
第二台操作:
先进入 vim /etc/rsyslog.conf 改配置文件
之后重载 rsyslog服务
systemctl restart rsyslog.service
然后第一台发送 logger “fuck u”
进去第二台去tail /var/log/messages 就能查看