Linuxファイルシステムとログ分析
iノードとブロックの概要
ファイルとセクター
ファイルはハードディスクに保存されます。ハードディスクの最小のストレージユニットは「セクター」と呼ばれ、各セクターは512バイトを保存します。
ブロック
一般に、8つの連続するセクターが「ブロック」を形成します。ブロックのサイズは4Kで、ファイルアクセスの最小単位です。
オペレーティングシステムがハードディスクを読み取るとき、一度に複数のセクターを読み取ります。つまり、ブロックごとに読み取ります。
ファイルデータ
ファイルデータには、実際のデータとメタデータが含まれます(ファイル属性と同様)。
ファイルデータは「ブロック」に保存され、ファイルのメタ情報(ファイルの作成者、作成日、ファイルサイズ、ファイルのアクセス許可など)を保存する領域はiノードと呼ばれます。
iノード(インデックスノード)
ファイルは1つのiノードと少なくとも1つのブロックを占有する必要があります
iノードにファイル名が含まれていません。ファイル名はディレクトリに保存されます。Linuxシステムのすべてがファイルであるため、ディレクトリも一種のファイルです
各iノードには番号があり、オペレーティングシステムはiノード番号を使用してさまざまなファイルを識別します。ファイル名はLinuxシステムの内部では使用されませんが、iノード番号はファイルを識別するために使用されます。システムの場合、ファイル名は、iノード番号を簡単に識別できるようにするための単なる別名です。ファイル名とiノード番号は1対1で対応しており、各iノード番号はファイル名に対応しています。
iノードコンテンツ
iノードにはファイルのメタ情報が含まれています
ファイルのバイト数
ファイル所有者のユーザーID
ファイルのグループID
ファイルの読み取り、書き込み、および実行のアクセス許可
ファイルのタイムスタンプ
statコマンドを使用して、ファイルのiノード情報を表示します
stat aa.txt
Linuxシステムファイルの3つの主な時間属性
ctime(change time)#ファイルまたはディレクトリ(属性)が最後に変更された時刻
atime(access time)#ファイルまたはディレクトリが最後にアクセスされた時刻
mtime(modify time)#ファイルまたはディレクトリ(コンテンツ)が最後に変更された時刻
カタログファイルの構造
ディレクトリも一種のファイルです
カタログファイルの構造
各iノードには番号があり、オペレーティングシステムはiノード番号を使用してさまざまなファイルを識別します
ファイル名はLinuxシステムの内部では使用されませんが、iノード番号はファイルを識別するために使用されます
ユーザーにとって、ファイル名は簡単に識別できるようにiノード番号の単なる別名です。
iノード番号
これは、ユーザーがファイル名でファイルを開いたときのシステムの内部プロセスです。
システムは、このファイル名に対応するiノード番号を見つけます
iノード番号でiノード情報を取得する
iノード情報に従って、ファイルデータが配置されているブロックを見つけて、データを読み取ります。
iノード番号の確認方法
ls-iコマンド
ファイル名に対応するiノード番号を表示する
ls -i aa.txt
statコマンド
ファイルのiノード情報でiノード番号を表示する
stat aa.txt
iノードサイズ
iノードもハードディスク容量を消費します
各iノードのサイズは通常128バイトまたは256バイトです
ファイルシステムをフォーマットすると、iノードの総数が決まります
df -iコマンドを使用して、各ハードディスクパーティションに使用されているiノードの総数とiノードの数を表示します。
iノードの特別な役割
iノード番号とファイル名が分離されているため、Linuxシステムには次のような固有の現象があります。
※ファイル名には特殊文字が含まれており、正常に削除されない場合があります。このとき、iノードを直接削除します。これはファイルを削除する役割を果たすことができます。
ファイルを移動したりファイルの名前を変更したりできます。iノード番号に影響を与えることなくファイル名を変更するだけです。
ファイルを開いた後、システムはファイル名に関係なく、iノード番号を使用してファイルを識別します。
ファイルデータを変更して保存すると、新しいiノード番号が生成されます*
iノード番号を削除してファイルを削除する
find ./ -inum 52305140 -exec rm -i {
} \;
find ./ -inum 50464299 -delete
iノードノードの枯渇障害処理をシミュレートする
主な手順
fdiskを使用してパーティション/ dev / sdb1を作成し、パーティションサイズは30Mです。
fdisk /dev/sdb
mkfs.ext4 /dev/sdb1 #这边我们用ext4类型的文件系统进行模拟
mkdir /test
mount /dev/sdb1 /mnt
df -i
iノードノードの枯渇障害をシミュレートする
for ((i=1; i<=7680; i++));do touch /test/file$i;done
或者 touch {
1..7680}.txt
df -i
df -hT
ファイルの回復を削除
rm -rf /test/*
df -i
df -hT
EXTファイルの回復
extundeleteは、ext3およびext4ファイルシステムをサポートするオープンソースのLinuxデータ復旧ツールです。(Ext4はcentos6バージョンでのみ復元できます)
fdiskを使用してパーティション/ dev / sdb1を作成し、ext3ファイルシステムをフォーマットします
fdisk /dev/sdb
mkfs.ext3 /dev/sdb1
mkdir /test
mount /dev/sdb1 /test
df -hT
依存関係をインストールする
yum -y install e2fsprogs-devel e2fsprogs-libs
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/ #创建软连接,让系统识别命令
削除をシミュレートし、回復操作を実行します
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/
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を持つ2つのファイルシステムをバックアップすることはできません(blkidコマンドを使用して表示できます)
xfsdumpコマンドの一般的に使用されるオプション
-fはバックアップファイルディレクトリを指定します
-Lはラベルセッションラベルを
指定します-M
は単一ファイルをバックアップするためのデバイスラベルメディアラベル-sを指定します。パスの直後に-sを続けることはできません
xfs操作の特定の手順
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
xfsdumpコマンドを使用して、パーティション全体をバックアップします
rpm -qa | grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]
データ損失をシミュレートし、xfsrestoreコマンドを使用してファイルを復元します
cd /data/
rm -rf ./*
ls
xfsrestore -f /opt/dump_sdb1 /data/
システムログ
ログファイル
ログ機能
システムおよびプログラムの操作中に発生するさまざまなイベントを記録するために使用されます
ログを読み取ることにより、システム障害の診断と解決に役立ちます
ログの分類
カーネルとシステムのログ
システムサービスrsyslogによる統合管理、ログ形式は基本的に同様です
メイン設定ファイル/etc/rsyslog.conf
ユーザーログ
システムユーザーのログインおよびログアウト関連情報を記録する
メイン設定ファイル/ var / log / secure
プログラムログ
さまざまなアプリケーションによって独立して管理されるログファイル、レコード形式が統一されていない
システムログのデフォルトの保存場所
システムログファイルは、デフォルトでディレクトリ/ var / log /に配置されます
いくつかの一般的なログファイル
カーネルとパブリックメッセージログ
/ var / log / messages:起動、エラー、ネットワークエラー、プログラム障害など、さまざまなアプリケーションのLinuxカーネルメッセージとパブリックログ情報を記録します。
別のログファイルを使用しないアプリケーションまたはサービスの場合、通常、関連するイベントレコード情報をログファイルから取得できます。
スケジュールされたタスクログ
/ var / log / cron:crondのスケジュールされたタスクによって生成されたイベント情報を記録します。
システムブートログ
/ var / log / dmesg:ブートプロセス中のLinuxシステムのさまざまなイベント情報を記録します。
メールシステムログ
/ var / log / maillog:システムに出入りする電子メールアクティビティを記録します。
ユーザーログインログ
/ var / log / security:ユーザー認証に関連するセキュリティイベント情報を記録します
/ var / log / lastlog:各ユーザーの最近のログインイベントを記録します;バイナリ形式
/ var / log / wtmp:各ユーザーのログイン、ログアウト、システムの起動およびシャットダウンイベントを記録します。バイナリ形式
/ var / run / btmp:失敗した、間違ったログイン試行と検証イベントを記録します。バイナリ形式
カーネルとシステムのログ
システムサービスrsyslogによる統合管理
パッケージ:rsyslog-7.4.7-16.el7.x86_64
メインプログラム:/ sbin / rsyslogd。
構成ファイル:/etc/rsyslog.cont
rsyslog.conf構成ファイルを表示する
vim /etc/rsyslog.conf #查看rsyslog.conf配置文件
*.info;mail.none;authpriv.none;cron.none /var/log/messages
* .info#情報レベル以上のすべての情報が対応するログファイルに書き込まれることを示します
mail.none#イベントの情報がログファイルに書き込まれないことを示します
ログメッセージのレベル
グレード番号 | 優先度 | 説明 |
---|---|---|
0 | EMERG(緊急) | ホストシステムが使用できなくなります |
1 | アラート(アラート) | すぐに解決しなければならない問題 |
2 | CRIT(深刻) | より深刻な状況 |
3 | ERR(エラー) | 動作中にエラーが発生しました |
4 | 警告 | システム機能に影響を与える可能性があり、ユーザーに通知する必要がある重要なイベント |
– | – | |
5 | 通知 | 通常の機能には影響しませんが、注意が必要なイベント |
6 | INFO(情報) | 一般情報 |
7 | DEBUG(デバッグ) | プログラムまたはシステムのデバッグ情報など。 |
ログレコードの一般的な形式
緑のボックスは、それぞれ時間ラベル、ホスト名、サブシステム名、およびメッセージフィールドに対応しています。
ユーザーログ分析
ユーザーのログインとログアウトに関する関連情報が保存されます
/ var / log / lastlog:最近のユーザーログインイベント
/ var / log / wtmp:ユーザーのログイン、ログアウト、システムの起動とシャットダウンのイベント
/ var / run / utmp:現在ログインしている各ユーザーの詳細情報
/ var / log / secure:ユーザー認証に関連するセキュリティイベント
分析ツール
ユーザー、who、w、last、lastb
最後のコマンドは、システムに正常にログインしたユーザーレコードを照会するために使用されます
lastbコマンドは、ログインに失敗したユーザーレコードを照会するために使用されます
プログラムログ分析
対応するアプリケーションによって独立して管理されます
Webサービス:Nar / log / httpd /
access_log //顧客アクセスイベントを記録する
error_log //エラーイベントを記録します
プロキシサービス:/ var / log / squid /
access.log、cache.log
分析ツール
テキストビュー、grepフィルター検索、Webmin管理スイートでのビュー
awkやsedなどのテキストフィルタリング、フォーマット、編集ツール
Webalizer、Awstats、その他の専用ログ分析ツール
ログ管理戦略
タイムリーなバックアップとアーカイブを作成する
ログ保存期間を延長する
ログアクセスの制御
ログには、アカウント、パスワードなど、さまざまな機密情報が含まれる場合があります。
ログの一元管理
サーバーのログファイルを統合ログファイルサーバーに送信します
ログ情報の統合された収集、並べ替え、分析を容易にします
偶発的な損失、悪意のある改ざん、またはログ情報の削除を防止します