文件是存储在硬盘上的,硬盘上的最小存储单位是扇区,每个扇区的大小是512字节。
inode:存储元信息(包括文件的属性,权限,创建者,创建日期等等)
block:块,连续的八个扇区组成一个块,一个块的大小是4k,创建一个文件,最小也要占4k。块是文件的最小存储单位。
操作系统读取硬盘,是一次性读取多个扇区,一个块一个块的读取数据。
创建文件:实际空间大小的要占,第二个就是元信息。元信息和实际数据都保存在硬盘上。元信息:inode号 128字节或者256字节。
一个文件必须占用一个inode(只要创建文件必须有一个inode号)
至少占用一个block(空文件也要占一块)
时间戳:
atime:访问 读取文件就会更新这个时间
mtime:修改文件数据,更改文件的属性,都会更新这个时间
ctime:修改文件的权限也会更新这个时间。
inode号:linux都是识别文件的inode号
元信息发生了变化,inode号也会随之变化。
inode号的总数。
根据磁盘空间的大小来确定inode号的大小。
磁盘越大inode号越多,磁盘越小inode号越小。
inode号和文件名分离,二者只是映射关系,linux系统的特有现象:
1、如果文件包名含有特殊字符,rm可能无法正常删除,可以直接删除inode号
2、移动文件,重命名,inode号时不变的
3、一但开始对文件操作后,后续所有的认证和识别都是通过inode号来的,不在考虑文件名
4、元信息发生变化,inode号也会发生变化
1、ext4 把inode耗尽,看看还能不能写入?
2、xfs 要有结论 20M 然后模拟把inode耗尽,看看还能不能写入?能写入的话,还能写入多少
如果inode号满了,ext4和xfs之间有什么区别?
先在把硬盘分区
在对硬盘分区进行格式化和挂载
然后我们分别往/data/ /data1/创建文件
这时文件已经满了,之后再往里面创建文件也不行了。不管磁盘内还有没有剩余的空间都不能再创建了。
我们往/data1里面创建文件
Inode号的显示可以创建10240,但是我们已经创建了10300个文件
说明inode号满了还能往里面创建文件
当我们创建10400个文件时,显示第10365个文件之后就不能创建了。
当我们创建11000个文件时,这时候又显示第10429个文件之后不能再创建文件了
所以xfs把inode号耗尽之后还能在创建文件,但是创建文件数量不一定相同,inode号满了之后还能创建文件取决于磁盘剩余空间的大小及文件系统的配置和性能等。
如果inode号满了,ext4和xfs之间有什么区别?
在 ext4 文件系统中,inode 号是静态分配的,即在创建文件系统时就确定了 inode 号的数量。一旦 inode 号用完,即使磁盘上还有剩余空间,也无法再创建新的文件。
而在 xfs 文件系统中,inode 号是动态分配的。它会根据需要自动分配 inode 号,因此理论上可以支持几乎无限数量的 inode。
然而,需要注意的是,尽管 xfs 文件系统在 inode 号管理方面具有更大的灵活性,但在实际使用中,也可能会受到其他因素的限制,例如磁盘空间、文件系统的配置和性能等。
xfs文件系统,如何能够实现备份和恢复?
centos7默认使用的文件系统就是xfs,
xfsdump 备份
xfsrestore 恢复
xfsdump命令的选项:
-f 指定需要的备份的硬盘分区(硬件设备的挂载目点)
-L 指定标签
-M指定设备标签
-s 备份单个文件,-s 后面不能直接跟路径
xfsdump使用限制:
1、只能备份xfs的文件系统
2、只能备份已经挂载的文件系统
3、只有root权限才能进行备份
4、备份之后的数据要恢复,只能使用xfsretore解析恢复
5、如果两个设备的uuid相同,不能备份(这种情况几乎不会有)
备份完之后,恢复文件,inode号是否会发生变化?
我们先切换data这个目录里面创建一个nginx的文本编辑器输入一些内容
保存退出后在创建一个自定义的文件,也在里面输入一些内容。
这个时候我们这个里面有两个文件了,我们来看一下他的inode号
分别是69和68. 试一下备份完之后在恢复,inode号是否会发生改变。
模拟删除data里面的文件
然后在进行恢复
所以备份完恢复以后,inode号会重新分配,变成新的inode号,而原来的inode号则会重新进入到inode池里面去,不会被丢弃,进行下一次inode号的分配。
日志分析:
系统的日志类型以及日志如何分析
Linux系统本身的日志和大部分的服务程序的日志都在/var/log/里面。
/var/log/messages 记录了Linux的内核消息,以及各种应用程序的公共日志消息。
应用程序公共日志:开 关 重启 网络错误, 程序故障这些都属于公共日志。
访问日志和一些自由业务日志不包含其中。
cron:记录的是定时任务的日志
dmesg:引导过程中的日志信息
maillog:记录进入或者发出的系统电子邮件信息
secure:用户认证的相关信息
linux的日志级别:数字越小,优先级越高,消息越重要
0 EMERG 紧急 会导致主机系统不可用的情况,系统崩溃。如磁盘满了
1 ALERT 警告 必须要马上采取措施解决问题。密码到期,数据库崩溃。
2 CRIT 严重 比较严重的情况,磁盘读写出了故障,有些程序的功能无法启动。
3 ERR error 错误 运行出现错误,程序启动失败,端口被占用等等,见的最多的情况,出现了也是要尽快解决的。
4 WARNING 提醒 可能会影响功能,需要提醒用户的重要事件,但是不是报错。磁盘使用率到了85%需要注意了。
5 NOTICE 注意 也是需要用户注意的,无需处理。
6 INFO info 信息 一般信息 ,系统或者应用程序在工作中产生的正常消息。
7 DEBUG debug 调试 程序正在开发阶段,调试程序时的信息。
none 没有优先级,不记录任何日志消息。
日志级别怎么定义:
*.info : * 表示所有,表示系统当中的设备,或者程序。info:包含info以及info级别以上的日志。
auth 用户认证产生的日志
daemon 守护后台进程的进程
authpriv :SSH,FTP 登录验证的信息。
news: 网络传输产生的消息
syslog :系统的相关日志
kern :系统进程日志
local0-local7:自定义程序的日志
uucp:unix-to-unix copy 两个linux之间的通信
mail.info /var/log/mail.log :记录邮件的信息,包含info和info以上的信息,记录到/var/log/mail.log
May 31 13:46:02 test1 systemd:Starting The Apache HTTP Server...
May 31 13:46:02:表示当前日志发生的时间
test1 :表示发生的主机名
systemd:哪个系统产生了这个日志
Starting The Apache HTTP Server... :日志的具体内容。
第一个实验:
ssh的日志单独的列出来,作为一个独立的日志文件。
先对两个终端关闭防火墙和安全机制
我们先打开他的系统管理日志,下翻到73行
在73行下面在新建一个自定义,保存到/var/log/ssh.log
先把这个日志的独立文件先给他生成。保存退出。
然后我们再给ssh配置
我们跳到32行
把这个注释掉,前面加一个#,这是默认保存的一个地方。我们在下面重新创建一个保存到我们自定义的那个里面去。
保存退出。
然我们把rsyslog.service 和sshd这个两个重启一下
这时我们已经看到有这个ssh.log
我们打开这个日志
然后再另外一个终端访问
这个是我们远程访问的命令行模式,实际就是把这个命令行变成了图形化工具。
这个时候另外一个终端就已经有消息了
第二个实验:
配置一个日志服务器,来进行日志收集
test1: 192.168.124.10 日志收集服务器
test2: 192.168.124.20 20上面产生的日志,都会发到10上,20自己不在记录日志。
先打开test2,进入/etc/rsyslog.conf
把这一行注释掉
在注释掉的下面一行把路径改一下。
然后把传输的端口个他打开
保存退出。
@@192.168.124.10
@@表示使用tcp协议进行数据传输
@表示使用udp协议进行数据传输
总结:文件系统:对文件的操作,用户是针对文件名,系统针对的inode号。系统都是用inode号来进行识别。
inode号保存的是元讯息 权限 大小 时间戳
block 块:文件的最小存储单位。连续的8个扇区,4k
创建文件:保存元信息,保存实际数据。
备份和恢复 xfs ext3
日志:
error :报错
info:一般信息