一:inode
Linux的存储机制1 inode 2 block
文件会生成一个inode号
文件必然要存储空间占用block块,最小是4K,如果不满4K也要占用一个block
Inodeh号:是元信息(文件的属性)
存储的元信息包含文件的创建者,更改周期,文件的大小,文件的权限,
一般inode号占用的空间的512k左右,128字节-256字节
df -i 查看inode号使用情况,
block存储数据
一个文件必须占用一个inode号,至少占用一个block块
■用户通过文件名打开文件时,系统内部的过程
1.系统找到这个文件名对应的inode号码
2.通过inode号码, 获取inode信息
3.根据inode信息, 找到文件数据所在的block, 读出数
■查看inode号码的方法
●ls -i命令:查看文件名对应的inode号码
Is -i aa.txt
●stat命令:查看文件inode信息中的inode号码
stat aa.txt
ls -i 第一个数字串是inode号
atime:访问这个文件会改变这个时间
mtime: 修改文件的数据内容,会更新
ctime:修改文件的权限或者属性,修改文件内容可能会变
文件名和inode 号剥离之后:
1-----文件包含特俗字符,可能无法正常删除,这时可以通过Iinode 号。直接找到数据的所在快,直接删除,
2-----移动,重命名,不影响,iNode
3----一旦打开文件之后,系统全部以inode号来识别,,文件名不再考虑
4----vim编辑器,修改文件会后,可能会生成新的inode号
5---文件名不在元信息当中
Find /opt/ -inum inode号 -exec rm -rf {} |;删除乱码文件
二:xfs文件系统进行备份和恢复文件
Cetos7默认使用xfs文件系统
xfsdump的备份是有级别的0表示全量备份,1-9表示增量备份
1:xfsdump的命令格式和选项:
-f---指定备份文件的目录
-L ---指定目录标签
-l ---指定备份级别
-M ---指定设备标签
- s ----备份单个文件
2:xfsdump使用时有限制的:
- -只能恢复已经挂载的文件设备
- 只能备份xfs文件系统
- 必须要有root权限 ,
- -数据恢复只能通过xfsrestore解析,进行恢复
- -若两个设备的UUID相同,则无法进行备份
xfsdump:备份磁盘数据 xfsrestore:恢复数据
xfsdump -f /opt/backup /dev/sdb1 [-L backup -M sdb1]
解释:
backup:备份到的空文件(未存在的文件,备份完自动生成)
/dev/sdb1:要备份的文件设备
[-L backup -M sdb1]:设备标签
xfsrestore -f /opt/backup /data/ #恢复数据到data
注释:-f前添加-l 数字 备份级别是增量备份
3:备份恢复的实验:
步骤:
1-----rpm -q xfsdump
2----yum -y install xfsdump #(安装xfsdump工具)
3----data目录下 xfsdump -f /opt/backup /dev/sdb1 [- Lbackup -M sdb1]
4----cd opt backup已经生成
5----cd -到data 目录
6----ls 123 456
7----rm -rf *
8----cd /opt/
9----xfsrestore -f /opt/backup /data/
9----cd - 回到data
10----ls cat123
日志分析:
内核以及系统日志由rsyslog统一管理
配置文件在:/etc/rsyslog.conf
配置文件里面的内容是固定格式
例如:httpd.conf
nginx.conf
日志默认保存在/var/log目录下
/etc/rsyslog.conf --定义规则的,可以添加日志规则的包含了系统需要记录和日志类型和级别
/var/log -- 系统日志
/var/log/messages --内核日志,各种应用程序包括第三方程序的控制日志
/var/log/cron --- 定时任务的日志记录
日志记录的规则
日志级别:0-7
0 EMERG---紧急
1 ALERT--- 警告
2 CRIT ---严重
3 ERR ----错误服务或者程序运行时出现错误。
4 WARNING---提醒:可能会影响系统功能,需要提示用户注意。不是报错。磁盘使用
5 NOTICE---注意不会影响正常功能但是需要注意,一般不做处理。
6 info----一般信息,系统的正常信息
7 DEBUG---调试,调试程序时候用的
none没有优先級,而且不记录任何日志消息。
*.info: 所有info级别的日志,保存到var/log/messages|
*.=info 明确指定只保存info级别的日志
*.!info除了Info级别的都要
*.info;*.notice 包含info和notice的日志,以及以上级别的日志都要
4:日志设备类型:
Auh 用户认证
Authpriv:认证的是远程登录产生的日志信息,shh
News:网络信息记录的时间日志,
Cron:定时任务
Kern:内核的事见消息
Mail:邮件
User:用户进程记录的日志
5;举例:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
所有的设备字段都包含只到info级别。而且还包含info级别以上的日志,要记录到/var/log/messages
左边是设备右边是级别,以点为分割
6:日志格式:记录的内容
Sep 7 12:50:01 test1 systemd: Started Session 25 of user root.
Sep 7 13:00:01 test1 systemd: Started Session 26 of user root.
Sep 7 13:01:01 test1 systemd: Started Session 27 of user root.
时间轴 主机名 字系统名, 消息或者发生时间的具体内容
7分析工具
users:展示登录当前系统的用户
w:显示目前登录系统的详细信息
last: 列出截止目前等过系统的信息
实验1:ssh 远程服务日志单独存放
#第一步test1/2关闭防护墙,安全机制
setenforce 0
systemtl stop firewalld
#test1更改配置文件
vim etc/rsyslog.conf
#自定义一个日志文件到/var/log/ssh.log
在local7.*下面输入: 对应的日志目录下输入:
local6.* * /var/log/ssh.log
#保存退出
#打开ssh下面的配置文件
vim /etc/ssh/sshd_config
#set nu
#到33行后 把32行系统默认自带的日志文件Syslog开口的注释掉
加上#键
#在34行添加一个和32行配置文件名称一样的SyslogFacility
重新定义一个匹配和rsyslog里面自定义名称相同的local6
SyslogFacility LOCAL6
#wq!保存
#重启上面的2个配置这样文件才能生效
systemctl restart rsyslog.service
systemctl restart sshd
#切换到test2,
ssh root@20.0.0.10(这是一个固定格式我要发起远程连接登录的账户是root来登录20.0.0.10的服务器
#输入yes
#password:输入20.0.0.10的密码(输完主机名变成test1)
#切换到test1
cd /var/log/ ls 找到 ssh.log(有消息有日志才会有内容)
#查看ssh的日志(可以看到test2的登录记录
tail -f ssh.log
#切换test2
exit
test1这边会有一个登出的记录
实验2:配置日志服务器,收集日志 (test2主机的系统日志不再记录到自己本地,而是发送到test2的服务器上)
#在test2上.
防火墙安全机制也要关
vim etc/rsyslog.conf
找到tcp协议下面的两行#键 注释掉,打开端口 (注释的代码是不执行的让两个文件不生效)
找到info;mail,none开头的日志 yy p dd上面一段,
把后面的日志目的地改为 @@20.0.0.10 ( 通过tcp协议的514端口发送到10端口/var/log/messages)
#保存退出
systemctl restart rsyslog.service
netstat -antp | grep 514 (查看514端口是否正常运行)
#切换到test1
vim etc/rsyslog.conf
把tcp的端口取消注释掉
wq!
systemctl restart rsyslog.service
netstat -antp | grep 514
tail -f /var/log/messages
#切换到test2 logger 发送消息
logger "ky32"
#切换到test1
有消息了ky32
#把test2打开一个
tail -f /var/log/messages
#回到第一个test2(装阿帕奇)
yum -y install httpd
systemctl restart httpd
#第三个test2没有安装记录了 在 test1 了