Linuxファイルシステムとログ分析(iノード番号、xfsファイルバックアップ)の詳細な理解

1つはファイルシステム

まず、ファイルはハードディスクに保存されますが、Linuxシステムのファイルとハードディスクは他の概念に細分化されています。これらについて詳しく理解していきましょう。

1.セクター(セクター)

  • セクター」はハードディスクの最小ストレージユニットであり、各セクターは512バイトを格納できます。

2.ブロック

  • オペレーティングシステムがハードディスクを読み取るとき、一度に複数のセクターを連続して読み取ります。つまり、一度に1つ以上のブロックを読み取ります。
  • ブロック」は通常、8つの連続する「セクター」で構成されているため、ブロックのサイズは4Kであり、ファイルアクセスの最小単位です。

3.ファイルデータ

  • ファイルデータには、実際のデータとメタ情報(ファイルの作成者、作成日、ファイルサイズ、ファイルのアクセス許可など)が含まれます。
  • ファイルデータは「ブロック」に格納され、ファイルメタデータが格納される領域はiノードと呼ばれます。

4. iノード(インデックスノードまたはiノード)

  • ファイルは、1つのiノードと少なくとも1つのブロックを占有する必要があります。
  • iノードにファイル名が含まれていません。ファイル名はディレクトリに保存されます。Linuxシステムのすべてがファイルであるため、ディレクトリも一種のファイルです。
  • 各iノードには番号があり、オペレーティングシステムはiノード番号を使用してさまざまなファイルを識別します。ファイル名はLinuxシステムの内部では使用されませんが、iノード番号はファイルを識別するために使用されます。システムの場合、ファイル名は、iノード番号を簡単に識別できるようにするための単なる別名です。ファイル名とiノード番号は1対1で対応しており、各iノード番号はファイル名に対応しています。

5.関連する概念の要約

ここに画像の説明を挿入
ユーザーが(システム内の)ファイルにアクセスするための
ステップステップ1:ユーザーがLinuxシステム内のファイルにアクセスする
ステップ2:システムはファイル名に従って対応するiノード番号を見つける
ステップ3:iノード番号からiノード情報を取得する
ステップ4:iノードの情報に従って、ユーザーがファイルにアクセスする権限を持っているかどうかを確認します。権限がある場合は、対応するデータブロックをポイントしてデータを読み取ります。

2.iノード番号

1.3つの主な時間属性

  • Linuxシステムファイルの3つの主要な時間属性
    ctime(change time)#ファイルまたはディレクトリ(属性)が最後に変更された
    時刻atime(access time)#ファイルまたはディレクトリが最後にアクセスされた
    時刻mtime(modify time)#ファイルが最後に変更された時刻またはカタログ(コンテンツ)時刻

2.iノードのサイズ

iノードもハードディスク領域を消費するため、フォーマット時に、オペレーティングシステムはハードディスクを自動的に2つの領域に分割します。1つはファイルデータを格納するデータ領域で、もう1つはiノードに含まれる情報を格納するiノード領域です。各iノードのサイズは通常128バイトまたは256バイトです。

  • iノードの総数は、ファイルシステムのフォーマット時に決定されます
  • df-i」コマンドは、各ハードディスクパーティションに対応するiノードの総数と使用されているiノードの数を表示できます。
    ここに画像の説明を挿入

3.iノード番号のクエリ

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

ここに画像の説明を挿入
ここに画像の説明を挿入

4.iノードの特別な役割

iノード番号とファイル名が分離されているため、Linuxシステムには次のような固有の現象があります。

  • ファイル名には特殊文字が含まれているため、正常に削除されない場合があります。このとき、iノードを直接削除すると、ファイルを削除する役割を果たします。
  • ファイルを移動したりファイルの名前を変更したりできます。iノード番号に影響を与えることなくファイル名を変更するだけです。
  • ファイルを開いた後、システムはファイル名に関係なく、iノード番号を使用してファイルを識別します。
  • ファイルデータを変更して保存すると、新しいiノード番号が生成されます。

5.iノード番号でファイルを削除します

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

ここに画像の説明を挿入
ここに画像の説明を挿入

3、シミュレーションiノードノード枯渇障害処理

步骤总汇
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. iノードノードの枯渇の失敗をシミュレートします。
ここに画像の説明を挿入
ここに画像の説明を挿入
要約:各ファイルはiノード番号に対応します。iノード番号が使い果たされると、ディスクに多くのスペースがあってもファイルを作成できません。

4.誤って削除されたファイルを回復する(ext形式)

  • 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が削除されました
ここに画像の説明を挿入
ここに画像の説明を挿入

5、xfsタイプのファイルのバックアップとリカバリ

  • CentOS 7システムはデフォルトでxfsタイプのファイルを使用し、xfsタイプのファイルはxfsdumpおよびxfsrestoreツールを使用してバックアップおよび復元できます。
  • xfsdumpには2つのバックアップレベルがあります。0は完全バックアップを意味し、1〜9は増分バックアップを意味します。xfsdumpのデフォルトのバックアップレベルは0です。
xfsdump 的命令格式为:
xfsdump -f 备份存放位置 要备份的路径或设备文件

xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)
コマンドの一般的に使用されるオプション 効果
-f バックアップファイルディレクトリを指定します
-L ラベルセッションラベルを指定します
-M デバイスラベルメディアラベルを指定します
-s 単一のファイルをバックアップします。パスの直後に-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.ファイルのバックアップ、削除、復元
ここに画像の説明を挿入
ここに画像の説明を挿入

6、システムログ

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 アラート(アラート) すぐに解決しなければならない問題。
2 CRIT(深刻) より深刻な状況。
3 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:失敗した、間違ったログイン試行と検証イベントを記録します。バイナリ形式
  • 分析ツール
    users、who、w、last、lastb
    lastコマンドを使用して、システムに正常にログインし
    たユーザーレコードを照会しますlastbコマンドを使用して、失敗したログインのユーザーレコードを照会します

6)プログラムログ

  • さまざまなアプリケーションによって独立して管理されるログファイル、レコード形式が統一されていない

    • Webサービス: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