Linux文件系统与日志分析

1 lnode 与 block详解

inode(I节点,索引点) xfs:512字节 ext4:256字节

  1. 记录文件属性(文件的元数据)元数据指:文件属性,大小,权限,属主,属组,块数量
  2. 一个文件占用inode,记录文件数据block number
  3. inode大小为 128或者256bytes

block(块)

  1. 储存文件实际数据
  2. 实际文件内容,若文件较大,会占用多个block
  3. block大小默认为4K

1.1 查看inode大小或者指定inode大小试验记录

[root@localhost ~]# fdisk /dev/sdb (建立磁盘)

[root@localhost ~]# lsblk (查看磁盘分区具体情况)

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 20G 0 disk

├─sdb2 8:18 0 10G 0 part

└─sdb1 8:17 0 10G 0 part

[root@localhost ~]# mkfs -t ext4 /dev/sdb1 (格式化)

[root@localhost ~]# mkdir /date (创建挂载点)

[root@localhost ~]# mount /dev/sdb1 /date (挂载)

[root@localhost ~]# dumpe2fs -h /dev/sdb1 (查看文件大小)

Inode count: 655360

Block count: 2621440

655360*256+2621440*4096为该分区的总大小
 

指定inode大小(以xfs为例)
[root@localhost ~]# mkfs -t xfs /dev/sdb2

[root@localhost ~]# mkfs -t xfs -f /dev/sdb2 -b size=2048 (-f强制格式化,设置block大小)

[root@localhost ~]# mkfs -t xfs -f /dev/sdb2 -i size=1024 (-f强制格式化,设置inode大小)

指定inode百分比大小 (以xfs为例)
[root@localhost ~]# mkdir /aaa

[root@localhost ~]# mount /dev/sdb2 /aaa

[root@localhost ~]# df -i /dev/sdb2 (查看inode大小)

[root@localhost ~]# xfs_growfs -m 30 /dev/sdb2 (将inode所占空间比例更改30%)

inode max percent changed from 25 to 30

inode和block大小设置(以ext4为例)
[root@localhost ~]# mkfs -t ext4 -b 2048 /dev/sdb1 (block设置为2048)

[root@localhost ~]# dumpe2fs -h /dev/sdb1 (查看具体数据大小)

[root@localhost ~]# mkfs -t ext4 -I 512 /dev/sdb1 (inode设置为512)

[root@localhost ~]# dumpe2fs -h /dev/sdb1 (查看具体数据大小)

[root@localhost ~]# mkfs -t ext4 -N 120960 /dev/sdb1 (设置inode数量大小 -N 表示数量)

2 软连接和硬连接

软连接:类似于Window快捷方式快速连接到目标文件或目录 命令格式:ln -s 源文件或目录 目标文件或目录

硬链接:通过文件系统inode链接产生新的文件名,而不是产生新文件 命令格式: ln 源文件 目标 (硬链接只针对文件)

3 文件恢复

(针对ext3系统)

[root@localhost ~]# yum -y install e2fsprogs-devel e2fsprogs-libs gcc* (安装软件包)

[root@localhost ~]# tar xvf extundelete-0.2.4.tar.bz2 (解压该软件包)

[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete

备注:
./configure 加载脚本
--prefix安装路径
/usr/local/extundelete安装位置,安装名称

[root@localhost extundelete-0.2.4]# make (源文件格式生成一份2进制格式)

[root@localhost extundelete-0.2.4]# make install (安装)

[root@localhost extundelete-0.2.4]# ln -s /usr/local/extundelete/bin/* /usr/bin/(创建软连接,链接到/usr/bin/,命令可以直接运行)

[root@localhost ~]# mkfs -t ext3 /dev/sdb1 (将文件格式化成ext3的模式)

[root@localhost ~]# mkdir /data

[root@localhost ~]# mount /dev/sdb1 /data

[root@localhost ~]# cd /data

[root@localhost data]# ls

lost+found (当系统崩溃时用来转储数据,起到备份功能)

[root@localhost data]# echo a>a (创建实验文档)

[root@localhost data]# echo b>b

[root@localhost data]# echo c>c

[root@localhost data]# echo d>d

[root@localhost data]# echo e>e

[root@localhost data]# ls

a b c d e lost+found

[root@localhost data]# extundelete /dev/sdb1 (查看分区具体信息)

[root@localhost data]# rm -rf a b

[root@localhost data]# ls

c d e lost+found

[root@localhost data]# umount /data

umount: /data:目标忙。

(有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)

[root@localhost data]# fuser -mv /dev/sdb1 (查看进程号)

[root@localhost data]# kill -9 1493 (杀死该进程号 )

[root@localhost ~]# extundelete /dev/sdb1 --restore-all (restore恢复数据)

[root@localhost ~]# ls

aaa anaconda-ks.cfg data extundelete-0.2.4 extundelete-0.2.4.tar.bz2 RECOVERED_FILES (重新生成文件)

[root@localhost ~]# cd RECOVERED_FILES

[root@localhost RECOVERED_FILES]# ls

file.12 file.13 (删除文件)

[root@localhost RECOVERED_FILES]# cat file.12

a

[root@localhost RECOVERED_FILES]# cat file.13

b

(针对xfs系统)

[root@localhost ~]# yum install -y xfsdump

[root@localhost ~]# mkfs.xfs -f /dev/sdb1

[root@localhost ~]# mount /dev/sdb1 /bbb

[root@localhost ~]# cd /bbb

[root@localhost bbb]# echo a>a

[root@localhost bbb]# echo b>b

[root@localhost bbb]# echo c>c

[root@localhost bbb]# echo d>d

[root@localhost bbb]# ls

a  b  c  d (与ext3相比较,没有lost-find)

[root@localhost ~]# xfsdump -f /opt/mydata_sdb1 /bbb (数据备份)
备注:
/opt/mydata_sdb1备份什么数据
/bbb备份到哪里)

[root@localhost bbb]# rm -rf a b (文件删除)

[root@localhost ]# xfsrestore -f /opt/mydata_sdb1 /bbb (文件恢复)

[root@localhost opt]# cd /bbb

[root@localhost bbb]# ls

a b c d e

4 日志服务器

moster设置

[root@localhost ~]# rsyslogd -version (查看日志系统)

[root@localhost ~]# ls /var/log (日志存放位置)

确定主机的名字:192.168.10.101

[root@localhost ~]# hostname master

[root@localhost ~]# bash

确定主机的名字:192.168.10.102

[root@localhost ~]# hostname node1

[root@localhost ~]# bash

确定主机的名字:192.168.10.103

[root@localhost ~]# hostname node2

[root@localhost ~]# bash

[root@master ~]# cat /etc/hosts

[root@master ~]# vim /etc/hosts (利用vim编辑器进行数据编辑,在此之前可以右键发送所有会话进行编辑)

192.168.10.101 moster

192.168.10.102 node1

192.168.10.103 node2

[root@master ~]# cat /etc/hosts (可以查看编辑结果)

[root@master ~]# systemctl stop firewalld (防止数据拦截,关闭防火墙)

[root@master ~]# setenforce 0 (关闭内核安全机制)

关闭发送所有会话

[root@master ~]# vim mylog.conf

$ModLoad immark ##支持日志标记

$ModLoad imudp      ## imupd是模块名,支持udp协议

$UDPServerRun 514 ##允许514端口接收使用UDP协议转发过来的日志

$ModLoad imtcp     ##支持udp协议

$InputTCPServerRun 514  ##允许514端口接收使用TCP协议转发过来的日志

$AllowedSender tcp, 192.168.10.0/24    #允许指定主机以tcp协议来传输

$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"

:fromhost-ip, !isequal, "127.0.0.1" ?Remote #过滤server 本机的日志,排除本机,记录远程

*.info;mail.none;authpriv.none;cron.none                /data/log/messages

备注:

(1)$AllowedSender tcp, 192.168.10.0/24

允许 30.0网段内的主机以tcp协议来传输

(2)$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"  

定义模板,接受日志文件路径,区分了不同主机的日志

(3):fromhost-ip, !isequal, "127.0.0.1" ?Remote过滤server 本机的日志。

(4)$InputTCPServerRun 514

开启tcp,tcp和udp 可以共存的

[root@master ~]# mkdir -p /opt/data/log (创建目录)

[root@master ~]# systemctl restart rsyslog (重启该系统)

node设置

[root@node1 ~]# cd /etc/rsyslog.d

[root@node1 rsyslog.d]# vim mylog.conf

$template myFormat,"%timestamp% %fromhost-ip% %msg%"

*.info;mail.none;authpriv.none;cron.none                @@192.168.10.101

[root@localhost ~]# vim /etc/rsyslog.conf

# Save boot messages also to boot.log

local7.*                   /var/log/boot.log

local0.*                   /opt/sshd.log

[root@localhost ~]# vim /etc/ssh/sshd_config修改如下内容:

SyslogFacility local0

[root@localhost ~]systemctl  restart sshd

日志切割

[root@master opt]# cd /etc/cron.daily/

[root@master cron.daily]# ls

logrotate man-db.cron

[root@master cron.daily]# vim /etc/logrotate.conf

/opt/sshd.log {   

    missingok

    monthly

    create 0664 root utmp

    minsize 10M

    rotate 2

}

[root@master cron.daily]# systemctl restart rsyslog

[root@master cron.daily]# ls

logrotate man-db.cron

[root@master cron.daily]# cd

[root@master opt]# systemctl restart sshd

[root@master opt]# logrotate -vf /etc/logrotate.conf (强制分割)

[root@master opt]# ls

data sshd.log sshd.log-20240510

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值