目录
[2、 查看inode号码的命令](#2、 查看inode号码的命令)
[6.1 cp 命令:](#6.1 cp 命令:)
[6.2 rm 命令:](#6.2 rm 命令:)
[6.3 mv命令](#6.3 mv命令)
[2.1 内核及系统日志](#2.1 内核及系统日志)
[2.2 用户日志](#2.2 用户日志)
[2.3 程序日志](#2.3 程序日志)
[4.1 将ssh服务的日志单独设置](#4.1 将ssh服务的日志单独设置)
[4.2 实例:通过网络将本地的日志远程备份到另一台机器,网络日志(远程日志功能)](#4.2 实例:通过网络将本地的日志远程备份到另一台机器,网络日志(远程日志功能))
一、inode和block
- 文件数据包括元信息与实际数据
- 文件存储在硬盘上,硬盘最小存储单位为"扇区",每个扇区存储512字节
- block(块)
- 连续的八个扇区组成一个block
- 是文件存取的最小单位
- inode(索引节点)
- 用于存储文件信息
- 同一个硬件设备上是唯一的,不可以跨设备,inode实际是资源,是可以被用完的,用完后无法创建任何文件。(xargs:读取前面的参数; -n1:一个一个给)
- inode和block的关系
- 文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在"块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。 因此,一 个文件必须占用一个inode, 并且至少占用一个block.
- inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。
- 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一 一对应关系,每个inode号码对应一个文件名。
1、inode表结构
每个文件的属性信息,比如:文件的大小,时间,类型,权限等,称为文件的元数据(meta data 元信息 )
元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。
每一个inode表记录对应的保存了以下信息:
inode number 节点号
文件类型
权限
UID
GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
2、 查看inode号码的命令
1. 查看文件名对应的inode号码
ls -i 文件名
2. 查看文件inode信息中的inode号码
stat 文件名
3、Linux系统文件三个主要时间属性
- ctime(change time):最后一次改变文件或目录(属性)的时间
- atime(access time):最后一次访问文件或目录的时间
- mtime(modify time):最后一次修改文件或目录(内容)的时间
4、用户通过文件名打开文件时系统内部的过程
- 系统找到这个文件名对应的inode号码
- 通过inode号码,获取inode信息
- 根据inode信息,找到文件数据所在的block,读出数据
问题:我磁盘空间还剩余很多但无法继续建立文件?
答案:因为inode号用完了
解决方法:
- 如果是lvm逻辑卷,可以扩容 。
- 普通分区,删除没有用的文件。
5、inode的大小
- inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
- inode的总数,在格式化时就确定
- 如果磁盘还有空间,但inode号被全部占用,无法创建新文件。
- inode号在同一个文件系统内唯一,在不同的文件系统中可以重复。
- 查看每个硬盘分区的inode总数和已经使用的数量,可以使用命令: df -I
6、命令与inode
6.1 cp 命令:
-
分配一个空闲的inode号,在inode表中生成新条目
-
在目录中创建一个目录项,将名称与inode编号关联
-
拷贝数据生成新的文件
6.2 rm 命令:
-
硬链接数递减,从而释放的inode号可以被重用
-
把数据块放在空闲列表中
-
删除目录项
-
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
6.3 mv命令
- 如果mv命令的目标和源在同一设备,
- 不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
- 删除旧的目录对应关系新建目录对应关系
二、日志
1、功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
2、日志文件的分类及一些常见日志文件
2.1 内核及系统日志
- 由系统服务rsyslog统一进行管理,日志格式基本相似
- 主配置文件
/etc/rsyslog.conf
|--------------------------|--------------------|
| 日志文件位置 | 日志文件说明 |
| /var/log/messages内核和公共日志 | 系统中大部分的信息 |
| /var/log/secure | 系统安全日志,文本格式,应周期性分析 |
2.2 用户日志
记录系统用户登录及退出系统的相关信息
|------------------|------------------------------------------|
| 日志文件位置 | 日志文件说明 |
| /var/log/btmp | 当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看 |
| /var/log/wtmp | 当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看 |
| /var/log/lastlog | 每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看 |
2.3 程序日志
- 由各种应用程序独立管理的日志文件,记录格式不统一
- 是和程序本身有关,有的有独有日志,有的没有独立日志
三、系统日志介绍
1、sysklogd系统日志服务
CentOS 5 之前版本采用的日志管理系统服务
- syslogd: system application 记录应用日志
- klogd: linux kernel 记录内核日志
事件记录格式:
- 日期时间 主机 进程[pid]: 事件内容
- C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理
2、rsyslog系统日志管理
- rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。
- 官网地址:http://www.rsyslog.com/
2.1rsyslog特性
-
多线程
-
UDP, TCP, SSL, TLS, RELP
-
MySQL, PGSQL, Oracle实现日志存储
-
强大的过滤器,可实现过滤记录日志信息中任意部分
-
自定义输出格式 可以日志
-
适用于企业级
3、ELK
由Elasticsearch, Logstash, Kibana三个软件组成
- 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene
- Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能
- Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
- Kibana 可以提供的日志分析友好的 Web 界面
四、rsyslog管理
1、日志消息级别
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要):
级别 | 消息 | 级别 | 具体描述 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能影响系统功能,需要提醒用户的重要事件 |
5 | NOTICE | 注意 | 不会影响正常功能,但是需要注意的事件 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
- 软件由它的配置文件所决定
- 决定它的服务方式、网络地址、个性化功能等
- 是yum 或rpm安装配置文件一般放在etc下
- 查看软件的配置文件位置,用rpm -qc 软件名 去查看,一般以 .conf结尾的是配置文件
- 在改配置文件前一定要先备份
2、服务名称
服务名称 | 说明 |
---|---|
auth(LOG_AUTH) | 安全和认证相关消息 (不推荐使用authpriv替代) |
authpriv(LOG_AUTHPRIV) | 安全和认证相关消息(私有的) |
cron (LOG_CRON) | 系统定时任务cront和at产生的日志 |
daemon (LOG_DAEMON) | 与各个守护进程相关的曰志 |
ftp (LOG_FTP) | ftp守护进程产生的曰志 |
kern(LOG_KERN) | 内核产生的曰志(不是用户进程产生的) |
Iocal0-local7 (LOG_LOCAL 0-7) | 为本地使用预留的服务 |
lpr (LOG_LPR) | 打印产生的日志 |
mail (LOG_MAIL) | 邮件收发信息 |
news (LOG_NEWS) | 与新闻服务器相关的日志 |
syslog (LOG_SYSLOG) | 存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了syslogd服务的,所以这里并没有修改服务名称) |
user (LOG_USER) | 用户等级类别的日志信息 |
uucp (LOG_UUCP) | uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来也常用在新闻组服务中 |
3、rsyslog配置文件
/etc/rsyslog.conf 配置文件格式:由三部分组成
-
MODULES:相关模块配置
-
GLOBAL DIRECTIVES:全局配置
-
RULES:日志记录相关的规则配置
4、实际应用:
4.1 将ssh服务的日志单独设置
bash
原来ssh日志在/var/log/secure
将 ssh服务的日志文件独立出来
[root@localhost ~]#tail -f /var/log/secure
#查看ssh服务的日志位置
[root@localhost ~]#vim /etc/ssh/sshd_config
#修改ssh配置文件,32下一行添加自己的自定义
32 #SyslogFacility AUTHPRIV
33 SyslogFacility LOCAL6
[root@localhost ~]#vim /etc/rsyslog.conf
#76 行添加自己的文件位置
local6.* /opt/ssh.log
[root@localhost log]#systemctl restart rsyslog.service sshd
#重启服务
①进入ssh配置文件,将ssh配置成使用local6
②进入rsyslog配置文件,添加自己的文件位置
③重启
④验证,并查看本机日志记录(实时查看tail -f /var/log/secure)
4.2 实例:通过网络将本地的日志远程备份到另一台机器,网络日志(远程日志功能)
就算本机系统崩溃,我们可以查看另一台机器备份的日志,来排查故障。
bash
#开启日志的远程传输功能在192.168.80.112 10 台左右的服务器
[root@localhost ~]#vim /etc/rsyslog.conf
#打开19 20 行 两端都要开
19 #$ModLoad imtcp
20 #$InputTCPServerRun 514
[root@localhost ~]#ss -ntap |grep 514
#查看514端口是否打开
#在192.168.91.101 上设置发送到哪台主机去
[root@centos7-2 ~]#vim /etc/rsyslog.conf
#修改配置文件
54 *.info;mail.none;authpriv.none;cron.none /var/log/messages
#复制54行 改成ip地址
55 *.info;mail.none;authpriv.none;cron.none @@192.168.80.112
#两个@ 代表使用 tcp 一个代表udp
如果修改 的是udp @192.168.80.112
如果要想指定端口 @192.168.80.112:端口号
[root@centos7-2 ~]#logger "this is test log from 192.168.80.114 22"
#测试,写日志进去
①两台机器都关闭防火墙工具和selinux
②分别打开两个主机的配置文件,进行修改,及打开远程传输功能
③打开想要传输备份文件给其他主机的主机的配置文件, 设置他想发送到哪台主机去
④重启,并查看端口号是否开启
⑤写一条日志进去,并查看