1 lnode 与 block详解
inode(I节点,索引点) xfs:512字节 ext4:256字节
- 记录文件属性(文件的元数据)元数据指:文件属性,大小,权限,属主,属组,块数量
- 一个文件占用inode,记录文件数据block number
- inode大小为 128或者256bytes
block(块)
- 储存文件实际数据
- 实际文件内容,若文件较大,会占用多个block
- 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