Linux 파일 시스템 및 로그 분석에 대한 추가 이해 (inode 번호, xfs 파일 백업)

하나, 파일 시스템

우선 파일은 하드 디스크에 저장되지만 리눅스 시스템의 파일과 하드 디스크는 다른 개념으로 세분화되어 있으므로 자세히 이해하기 시작하겠습니다.

1. 섹터 (섹터)

  • " 섹터 "는 하드 디스크의 가장 작은 저장 단위이며 각 섹터는 512 바이트를 저장할 수 있습니다.

2. 블록

  • 운영 체제가 하드 디스크를 읽을 때 한 번에 여러 섹터를 연속적으로 읽습니다. 즉, 한 번에 하나 이상의 블록을 읽습니다.
  • " 블록 "은 일반적으로 8 개의 연속 "섹터"로 구성되므로 블록 크기는 4K로 파일 액세스의 가장 작은 단위입니다.

3. 파일 데이터

  • 파일 데이터에는 실제 데이터와 메타 정보 (예 : 파일 생성자, 생성 날짜, 파일 크기, 파일 권한 등)가 포함됩니다.
  • 파일 데이터는 "블록"에 저장되며 파일 메타 데이터가 저장되는 영역을 inode라고합니다.

4. Inode (인덱스 노드 또는 i 노드)

  • 파일은 하나의 inode와 하나 이상의 블록을 차지해야합니다.
  • inode에 파일 이름이 없습니다. 파일 이름은 디렉토리에 저장됩니다. Linux 시스템의 모든 것은 파일이므로 디렉토리도 일종의 파일입니다.
  • 각 inode에는 번호가 있으며 운영 체제는 inode 번호를 사용하여 다른 파일을 식별합니다. 파일 이름은 Linux 시스템에서 내부적으로 사용되지 않지만 inode 번호는 파일을 식별하는 데 사용됩니다. 시스템의 경우 파일 이름은 inode 번호를 쉽게 식별 할 수있는 또 다른 이름 일뿐입니다. 파일 이름과 inode 번호는 일대일로 대응하며 각 inode 번호는 파일 이름에 해당합니다.

5. 관련 개념 요약

여기에 사진 설명 삽입

사용자가 파일에 액세스하는 단계 ( 시스템에서) 1 단계 : 사용자가 Linux 시스템의 파일에 액세스합니다
. 2 단계 : 시스템이 파일 이름에 따라 해당 inode 번호를 찾습니다.
3 단계 : inode 번호를 통해 inode 정보 얻기
4 단계 : Inode 정보에 따라 사용자가 파일에 액세스 할 수있는 권한이 있는지 확인하고, 있다면 해당 데이터 블록을 가리키고 데이터를 읽습니다.

2. Inode 번호

1. 세 가지 주요 시간 속성

  • Linux 시스템 파일의 세 가지 주요 시간 속성
    ctime (변경 시간) # 파일 또는 디렉토리 (속성)가 마지막으로 변경된
    시간 atime (접근 시간) # 파일 또는 디렉토리가 마지막으로 액세스 된
    시간 mtime (시간 수정) # 파일이 마지막으로 수정 된 시간 또는 카탈로그 (콘텐츠) 시간

2. inode의 크기

Inode는 또한 하드 디스크 공간을 소비하므로 포맷 할 때 운영 체제는 하드 디스크를 자동으로 두 영역으로 나눕니다. 하나는 파일 데이터를 저장하는 데이터 영역이고 다른 하나는 inode에 포함 된 정보를 저장하는 inode 영역입니다. 각 inode의 크기는 일반적으로 128 바이트 또는 256 바이트입니다.

  • 총 inode 수는 파일 시스템이 포맷 될 때 결정됩니다.
  • " df -i "명령은 각 하드 디스크 파티션에 해당하는 총 inode 수와 사용 된 inode 수를 볼 수 있습니다.
    여기에 사진 설명 삽입

3. inode 번호 쿼리

查看文件名对应的 inode 号码有两种方式:
ls -i 文件名        #查普通文件
stat 文件名       #查普通文件和目录(这个好用)

여기에 사진 설명 삽입
여기에 사진 설명 삽입

4. inode의 특별한 역할

inode 번호와 파일 이름의 분리로 인해 Linux 시스템에는 다음과 같은 고유 한 현상이 있습니다.

  • 파일 이름에 특수 문자가 포함되어 있으며 정상적으로 삭제되지 않을 수 있습니다. 이때 inode를 직접 삭제하면 파일을 삭제하는 역할을 할 수 있습니다.
  • 파일을 이동하거나 파일 이름을 바꾸고, inode 번호에 영향을주지 않고 파일 이름 만 변경하십시오.
  • 파일을 연 후 시스템은 파일 이름에 관계없이 inode 번호를 사용하여 파일을 식별합니다.
  • 파일 데이터를 수정하고 저장하면 새 inode 번호가 생성됩니다.

5. inode 번호로 파일 삭제

find ./ -inum 52305140 -exec rm -i {} \;
find ./ -inum 50464299 -delete

여기에 사진 설명 삽입
여기에 사진 설명 삽입

세, 시뮬레이션 inode 노드 고갈 오류 처리

步骤总汇
1、使用fdisk创建分区/dev/sdb1,分区大小30M即可
fdisk /dev/sdb   n→p→回车→+30M→w  #创建分区
mkfs.ext4 /dev/sdb1   #对于centos 7系统,节点耗尽故障处理的文件类型可以是ext3或ext4
mkdir /test
mount /dev/sdb1 /mnt
df -i
2、模拟inode节点耗尽故障
for ((i=1; i<=7680; i++));do touch /test/file$i;done  
或者   touch {1..7680}.txt
df -i
df -hT
3、删除文件恢复
rm -rf /test/*
df -i
df -hT

그림 :
1. fdisk를 사용하여 파티션 / dev / sdb1을 만들고 마운트합니다.
여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입

2. inode 노드 고갈 실패 시뮬레이션
여기에 사진 설명 삽입
여기에 사진 설명 삽입
요약 : 각 파일은 inode 번호에 해당합니다. inode 번호를 다 사용한 후에는 디스크에 많은 공간이 있어도 파일을 생성 할 수 없습니다.

4. 실수로 삭제 된 파일 복구 (확장 형식)

  • extundelete는 ext3 및 ext4 파일 시스템을 지원하는 오픈 소스 Linux 데이터 복구 도구입니다. (Ext4는 centos6 버전에서만 복원 할 수 있습니다)
操作步骤
1、使用fdisk创建分区/dev/sdb1,格式化ext3文件系统
fdisk /dev/sdb  
mkfs.ext3 /dev/sdb1
mkdir /test
mount /dev/sdb1 /test
df -hT

2、安装依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs

3、编译安装 extundelete
cd /test  切换到test目录中
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2  #联网下载安装包
tar jxvf extundelete-0.2.4.tar.bz2   #解压tar包
cd extundelete-0.2.4/     #切换到解压出来的目录中
./configure --prefix=/usr/local/extundelete && make && make install  #指定安装目录,开始安装   
ln -s /usr/local/extundelete/bin/* /usr/bin/    #创建软连接,让系统识别命令

4、模拟删除并执行恢复操作
cd /test
echo a>a
echo a>b
echo a>c
echo a>d
ls
extundelete /dev/sdb1 --inode 2			#查看文件系统/dev/sdb1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录。

rm -rf a b
extundelete /dev/sdb1 --inode 2	
cd ~
umount /test
extundelete /dev/sdb1 --restore-all		#恢复/dev/sdb1 文件系统下的所有内容
#在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED_FILES/

그림 :
1. 이전 sdb1을 직접 사용하고 먼저 마운트 해제 한 다음 다시 포맷합니다.
여기에 사진 설명 삽입
여기에 사진 설명 삽입
2. yum을 사용하여 종속 패키지를 설치합니다.
여기에 사진 설명 삽입
3. 설치 패키지를 다운로드하고 설치합니다
여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입
. 4. 삭제 시뮬레이션 및 복원
여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입
보기 a와 b가 삭제되었습니다.
여기에 사진 설명 삽입
여기에 사진 설명 삽입

다섯 xfs 유형 파일 백업 및 복구

  • CentOS 7 시스템은 기본적으로 xfs 유형 파일을 사용하며 xfs 유형 파일은 xfsdump 및 xfsrestore 도구를 사용하여 백업 및 복원 할 수 있습니다.
  • xfsdump에는 두 가지 백업 수준이 있습니다. 0은 전체 백업을 의미하고 1-9는 증분 백업을 의미합니다. xfsdump의 기본 백업 레벨은 0입니다.
xfsdump 的命令格式为:
xfsdump -f 备份存放位置 要备份的路径或设备文件

xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)
일반적으로 사용되는 옵션 효과
-에프 백업 파일 디렉토리 지정
-엘 레이블 세션 레이블 지정
-미디엄 장치 레이블 미디어 레이블 지정
-에스 단일 파일을 백업합니다. 경로 바로 뒤에 -s가 올 수 없습니다.

단계:

1、使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
fdisk /dev/sdb
partprobe /dev/sdb   #重读分区表,磁盘查询不到时使用
mkfs.xfs [-f] /dev/sdb1
mkdir /data
mount /dev/sdb1 /data/
cd /data
cp /etc/passwd ./
mkdir test
touch test/a

2、使用 xfsdump 命令备份整个分区
rpm -qa | grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]

3、模拟数据丢失并使用 xfsrestore 命令恢复文件
cd /data/
rm -rf ./*
ls

xfsrestore -f /opt/dump_sdb1 /data/

단계 다이어그램 :
1. 준비
여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입
2. 파일 백업, 삭제 및 복원
여기에 사진 설명 삽입
여기에 사진 설명 삽입

여섯, 시스템 로그

1. 로그 파일

1) 로그 기능

  • 시스템 및 프로그램 운영 중 발생하는 각종 이벤트 기록에 사용
  • 로그를 읽으면 시스템 장애를 진단하고 해결하는 데 도움이됩니다.

2) 로그 파일 분류

  • 커널 및 시스템 로그
    • 시스템 서비스 rsyslog에 의한 통합 관리, 로그 형식은 기본적으로 유사합니다.
    • 기본 구성 파일 /etc/rsyslog.conf
  • 사용자 로그
    • 시스템 사용자 로그인 및 로그 아웃 정보 기록
    • 기본 구성 파일 / var / log / secure
  • 프로그램 로그
    • 다양한 응용 프로그램에서 독립적으로 관리되는 로그 파일, 레코드 형식이 균일하지 않음

3) 기본 저장 위치

로그 파일은 기본적으로 / var / log / 디렉토리에 있습니다.

여기에 사진 설명 삽입

2. 로그 파일 분석

1) 커널 및 시스템 로그

시스템 서비스 rsyslog에 의한 통합 관리

  • 소프트웨어 패키지 : rsyslog-7.4.7-16.el7.x86_64,
  • 기본 프로그램 : / sbin / rsyslogd
  • 구성 파일 : /etc/rsyslog.cont

2) 로그 메시지 우선 순위

Linux 시스템 커널 로그 메시지의 우선 순위 수준 (숫자가 작을수록 우선 순위가 높을수록 메시지가 더 중요 함) :

학년 번호 우선 순위 수준 기술
0 EMERG (긴급) 호스트 시스템을 사용할 수 없게됩니다.
1 ALERT (경고) 즉시 해결해야하는 문제.
2 CRIT (심각) 더 심각한 상황.
ERR (오류) 작동 중에 오류가 발생했습니다.
4 경고 시스템 기능에 영향을 미칠 수 있고 사용자에게 상기시켜야하는 중요한 이벤트.
5 주의 정상적인 기능에는 영향을 미치지 않지만주의가 필요한 이벤트입니다.
6 INFO (정보) 일반 정보.
7 DEBUG (디버깅) 프로그램 또는 시스템 디버깅 정보 등

3) rsyslog.conf 구성 파일보기

vim /etc/rsyslog.conf		#查看rsyslog.conf配置文件
*.info;mail.none;authpriv.none;cron.none         /var/log/messages

*.info		#表示info等级及以上的所有等级的信息都写到对应的日志文件里
mail.none	#表示某事件的信息不写到日志文件里(这里比如是邮件)

여기에 사진 설명 삽입
여기에 사진 설명 삽입

4) 로그 형식

#公共日志/var/log/messages 文件的记录格式
时间标签:消息发出的日期和时间。
主机名:生成消息的计算机的名称。
子系统名称:发出消息的应用程序的名称。
消息:消息的具体内容。

여기에 사진 설명 삽입

5) 사용자 로그

  • 시스템 사용자 로그인 및 로그 아웃 관련 정보 기록
    / var / log / secure : 사용자 인증과 관련된 보안 이벤트 정보를 기록합니다.
    / var / log / lastlog : 각 사용자의 최신 로그인 이벤트를 기록합니다. 바이너리 형식
    / var / log / wtmp : 각 사용자 로그인, 로그 아웃 및 시스템 시작 및 종료 이벤트를 기록합니다. 바이너리 형식
    / var / run / btmp : 실패, 잘못된 로그인 시도 및 확인 이벤트를 기록합니다. 바이너리 형식
  • 분석 도구
    사용자, w, last, lastb
    last 명령은 시스템에 성공적으로 로그인
    한 사용자 레코드를 쿼리하는 데 사용됩니다. lastb 명령은 로그인 실패의 사용자 레코드를 쿼리하는 데 사용됩니다.

6) 프로그램 로그

  • 다양한 응용 프로그램에서 독립적으로 관리되는 로그 파일, 레코드 형식이 균일하지 않음

    • 웹 서비스 : Nar / log / httpd /
      • access_log // 고객 액세스 이벤트 기록
      • error_log // 오류 이벤트 기록
    • 프록시 서비스 : / var / log / squid /
      • access.log 、 cache.log
  • 분석 도구

    • 텍스트보기, grep 필터 검색, Webmin 관리 제품군의보기
    • awk 및 sed와 같은 텍스트 필터링, 서식 지정 및 편집 도구
    • Webalizer, Awstats 및 기타 전용 로그 분석 도구

7) 공통 로그 요약

常见的一些日志文件:
#内核及公共消息日志:
/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。

#计划任务日志:
/var/log/cron:记录crond计划任务产生的事件信息。

#系统引导日志:
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。

#邮件系统日志:
/var/log/maillog:记录进入或发出系统的电子邮件活动。

#用户登录日志:
/var/log/secure:记录用户认证相关的安全事件信息。
/var/log/lastlog:记录每个用户最近的登录事件。二进制格式
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp:记录失败的、错误的登录尝试及验证事件。二进制格式

3. 로그 관리

  • 시기 적절한 백업 및 아카이브
  • 로그 보존 기간 연장
  • 로그 액세스 제어
    • 로그에는 계정, 비밀번호 등과 같은 다양한 민감한 정보가 포함될 수 있습니다.
  • 중앙 집중식 로그 관리
    • 서버의 로그 파일을 통합 로그 파일 서버로 전송
    • 로그 정보의 통합 수집, 정렬 및 분석을 용이하게합니다.
    • 로그 정보의 우발적 손실, 악의적 인 변조 또는 삭제 방지

추천

출처blog.csdn.net/weixin_51326240/article/details/110721613