inode
inode的大小和block的大小在格式化时被确定下来
inode : i节点(索引号,标识该文件在磁盘中的位置) ; inode包括实际数据与文件的元数据 (mate data)
- xfs:每个xis文件的inode占512字节(可调节的)
- ext4下inode:占256字节
每个文件或目录文件都有一个inode号,Linux用inode号来识别不同的文件.
Linux系统内部不使用文件名,而使用inode号来识别文件.
对于用户,文件名只是inode号便于识别的别称.
命令 | 说明 |
stat 文件名 | 显示文件的状态 这些信息对于xs文件系统来讲占512字节 ext4文件系统占用254字节 |
dumpe2fs -h /dev/sdb1 | 显示 ext2、ext3、ext4 文件系统的超级块和块组信息 -h : 指定只显示超级块信息 |
mkfs -t xfs -f/dev/sdb2 -b size=2048 | 在格式化xfs文件系统时定义block size的大小 |
mkfs -t xfs -f/dev/sdb2 -l size=1024 | 在格式化xfs文件系统时定义inode size的大小 |
mkis -t ext4 -N 120960 /dev/sdb1 | 在格式化ext4时设置inode数量 |
mkfs -t ext4 -b 2048 /dev/sdb1 | 格式化时设置block大小 |
mkfs -t ext4 -1 512 /dew/sdb1 | 格式化时设置inode大小 |
xfs growis -m 30 /dev/sdb2 | 设置inode在该分区占%几的比例 需要该分区处于挂载状态 |
只要创建出一个文件,该文件在系统里会生成一个硬链接
1. [root@localhost ~]# stat anaconda-ks.cfg
2. 文件: "anaconda-ks.cfg"
3. 大小: 1685 块: 8 I0 块: 4096 普通文件
4. 设备: fd00h/64768d Inode: 268635215 硬链接: 1
5. 权限: (0600/-rw-------)Uid: ( 0/ root) Gid:( 0/ root)
6. 环境: system_u:object_r:admin_home_t:s0
7. 最近访问: 2024-05-28 00:37:17.856009764 +0800
8. 最近更改: 2024-05-28 00:37:17.857009764 +0800
9. 最近改动: 2024-05-28 00:37:17.857009764 +0800
10. 创建时间: - # 被废弃,但是依然保留该属性
block
- xfs、ext4文件系统 : 4096
- 磁盘IO : 1024
- 扇区IO : 512
连续的八个扇区组成一个 block,是文件存取的最小单位
链接
- 软链接 : 等于Windows系统的快捷方式,消耗空间,有独立的inode号
- 如果是跨目录创建,要加绝对路径
- 硬链接 : 不会消耗空间,因为inode号和属性都和原始文件一样
- 目录不能创建硬链接
- 不能跨分区创建
文件修复
如果在linux根据文件名删除了一个文件,实际只是删除了linux系统中该文件对于用户便于识别的“目录”,实际上该文件还存在磁盘
如果把这个分区格式化了,相当于把一整本书的目录撕掉了。这个文件还是存在磁盘上,但是文件系统必须依靠”目录”来查找文件
命令 | 说明 |
extundelete /dev/sdb1 --restore-all | 恢复该分区所有文件 |
xfsdump -f /opt/mydata_sdb1 /aaa | 备份/aaa挂载点目录到/opt/mydata_sdb1 挂载点后不要加/ |
xisrestore -f /opt/mydata_sdb1 /aaa | 将/opt/mydata_sdb1的文件恢复到/aaa |
实验步骤
针对ext文件系统恢复删除文件
./configure -prefix=/usr/localextundelete
- 安装依赖 yum -yinstall e2fsprogs-devel e2fsprogs-ibs gcc*
- 使用解压命令 tar xvf extundelete-0.2.4.tar.bz2
- make 编译源代码 生成二进制代码文件
- make install 安装
- 创建软链接让该软件包的命令能够像系统命令一样调用In-s/usr/local/extundelete/bin/* /usr/bin/
- 由于该软件包较为古老只支持ext3的文件系统,所以格式化做实验的分区的文件系统为ext3,然后挂载 a.此时cd到挂载的目录,可以看到该软件包对于ext3文件系统分区所生成的lost+found 目录,当系统崩溃时,转储文件进行备份
- 创建几个文件,再删除,cd回上一级
- 取消挂载/dev/sdb1这个分区
- 使用 extundelete /dev/sdb1 -restore-all 命令可以恢复该分区所有删除的文件,在当前目录下生成一个恢复文件的目录
- 进入该目录就能查看恢复的数据
生成的恢复文件目录
针对xfs文件系统恢复删除文件
- 安装针对xfs恢复文件的软件包 yum -yinstall xfsdump
- cd进已挂载的xfs系统的目录,创建几个文件
- 备份该xis系统目录到/opt/mydata sdb1;xisdump-f/opt/mydata sdb1 /aaa
- 删除几个文件,然后用 xfsrestore -f/opt/mydata sdb1 /aaa 恢复数据
删除数据,恢复数据
恢复后的数据
日志
当主机在运行特定的程序时,会产生一些消息来记录系统的变化或动作。通过日志将这些信息保存并记录系统管经运行过的状态日志就可以查看过去某一时刻,某个设备、服务器、主机的状态
- 系统日志
- /var/log/messages
- 用户日志
- /var/log/lastlog
- 不能直接查看,要用相关命令查看- last命令
- /var/log/lastlog
- 程序日志
- 软件或服务的日志
日志级别
级别 | 说明 |
debug | 调试信息的日志,日志信息最多 |
info | 一般信息的日志,最常用 |
notice | 最具有重要性的普通条件的信息 |
warning | 警告级别 |
error | 错误级别,阻止某个功能或者模块不能正常工作的信息 |
critical | 严重级别,阻止整个系统或者整个软件不能正常工作的信息 |
alert | 需要立刻修改的信息 |
emerg | 内核崩溃等严重信息 |
rsyslogd服务
该服务本身是分布式日志管理,可以不借助第三方工具将日志传输到别的主机
说明 | 说明 |
rsyslogd -version | 查看日志管理服务的版本信息 |
last | 查看用户日志 |
路径 | 说明 |
/var/log | rsyslogd存放日志的位置 |
日志目录
在 /var/log 目录下,有些文件可以直接查看,有些文件不能直接查看,因为是加密文件,所以是二进制的形式保存的
- 比如想要查看 /var/log 目录下的wtmp文件,要输入 w 命令才能查看
messages日志文件(系统日志)
集中管理日志-实验
系统 | 主机名 | IP地址 |
centos7.9 | master | 192.168.10.101 |
centos7.9 | node1 | 192.168.10.102 |
centos7.9 | node2 | 192.168.10.103 |
1.环境配置
1.1
右键Xshell终端,将3台主机操作同步
配置规则 | 说明 |
$ModLoad immark | 加载immarx模块。此模块为日志消息添加一个标记,有助于在日志文件中识别消息的起 |
$ModLoad imudp | 加载imudp模块,这允许rsyslog通过UDP协议接收日志消息。: |
$UDPServerRun 514 | 在UDP端口514上启动日志接收服务。这是syslog的默认端口 |
$ModLoad imtcp | 加载imtcp模块,使rsyslog能够通过TCP协议接收日志消息。 |
$InputTCPServerRun 514 | 在TCP端口514上启动日志接收服务。这是syslog的默认端口 |
$template Remote,"/data/log/%fromhost.ip%/%fromhost-ip% %$YEAR%- %$MONTH%-%$DAY%.10g" | 把远程主机发过来的日志信息保存到指走文件定义一个名为"Remote"的模板,然后指定日志格式和存储位置其中第一个%fromhost-ip%代表用发送日志源主机的IP地址做目录名,第二个代表文件%SYEAR%,%$MONTH%,和%$DAY%代表日志生成的年、月、日。 |
fromhost-ip,!isequal,"127.0.0.1" ? Remote | 要接受的日志不是本机的,是Remote的(远程主机的)一个条件过滤规则,用于决走如何处理特走的日志消息。 如果日志消息的源IP地址(fromhost-ip)不是127.0.0.1(不是本机),则应用前面定义为"Remote"模板来保存这些日志。 |
/data/log/messages | 这是一个日志处理规则,它表示: 接收所有级别为info及以上的日志消息(*.info)。 |
配置规则 | 说明 |
$template myFommat"%timestamp% %fromhost-ip% %msg%" | 定义该主机生成的日志格式 定义一个名为myFormat的模板,日志格式为:时间日期-源主 |
*info:mail.none.authpriv.none.cron.none @@192.168.10.101 | 接收所有级别为info及以上的日志消息(*.info)。 但是,忽略mai1邮件、authpriv任务 和cron计划任务的0 将符合条件的日志保存到192.168.10.101 @@:代表本机生成的日志,要发送给指定的主机(101需要 |
日志切割
- 也叫日志滚动
- 日志切割解决两个问题
- 可以按时间保存日志,方便查找
- 不让某个文件过大
配置规则 | 说明 |
/opt/sshd.10g | 日志分割的目标,要对谁做切割 |
missingok | 如果要切割的文件(/opt/sshd.l0g)丢失了,不报错继续下一个文件的轮转。 |
monthly | 轮换周期,每月轮换一次,也就是每月切割一次 |
create 0664 root utmp | 如果要执行切割操作,就要生成一个单独文件,权限指定为664,属主是r00t,属组是utmp 0664:新创建的日志文件的权限设置。这里,文件所有者(root)有读/写权限,而组(utmp)和其他用户只有读权限。 |
minsize 10M | 最小大小,如果文件超过10M就被分割 如果日志文件小于 10MB,即使达到了 monthly 的时间限制,它也不会被轮转。 |
rotate | 定义在日志文件轮转时要保留多少个日志文件备份 |