목차
하나, 파일 시스템
우선 파일은 하드 디스크에 저장되지만 리눅스 시스템의 파일과 하드 디스크는 다른 개념으로 세분화되어 있으므로 자세히 이해하기 시작하겠습니다.
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
- 웹 서비스 : Nar / log / httpd /
-
분석 도구
- 텍스트보기, 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. 로그 관리
- 시기 적절한 백업 및 아카이브
- 로그 보존 기간 연장
- 로그 액세스 제어
- 로그에는 계정, 비밀번호 등과 같은 다양한 민감한 정보가 포함될 수 있습니다.
- 중앙 집중식 로그 관리
- 서버의 로그 파일을 통합 로그 파일 서버로 전송
- 로그 정보의 통합 수집, 정렬 및 분석을 용이하게합니다.
- 로그 정보의 우발적 손실, 악의적 인 변조 또는 삭제 방지