Linux-EXTおよびXFSファイルの回復とログ分析
I.概要
1.iノードとブロックの概要
- ファイルデータには、メタ情報と実際のデータが含まれます
- ファイルはハードディスクに保存されます。ハードディスクの最小ストレージ単位は「セクター」で、各セクターは512バイトを保存します。
- ブロック(ブロック)ブロックを
形成する8つの連続したセクター(4K)
はファイルアクセスの最小単位です - iノード(インデックスノード)
中国語の翻訳は「インデックスノード」であり、
ファイルのメタ情報を格納するために使用されるiノードとも呼ばれます。
ファイルはハードディスクに保存されます。ハードディスクの最小のストレージユニットは「セクター」と呼ばれ、各セクターは512バイトを保存します。
一般に、8つの連続するセクターが「ブロック」(Zblock)を形成し、ブロックのサイズは4Kであり、これはファイルアクセスの最小単位です。オペレーティングシステムがハードディスクを読み取るとき、一度に複数のセクターを連続して読み取ります。つまり、ブロックごとに読み取ります。
ファイルデータには、実際のデータとメタ情報(ファイル属性と同様)が含まれます。ファイルデータは「ブロック」に格納され、ファイルのメタ情報(ファイルの作成者、作成日、ファイルサイズ、ファイルのアクセス許可など)を格納する領域はiノードと呼ばれます。したがって、ファイルは1つのiノードと少なくとも1つのブロックを占有する必要があります。
iノードにファイル名が含まれていません。ファイル名はディレクトリに保存されます。Linuxシステムのすべてがファイルであるため、ディレクトリも一種のファイルです。
各iノードには番号があり、オペレーティングシステムはiノード番号を使用してさまざまなファイルを識別します。ファイル名はLinuxシステムの内部では使用されませんが、iノード番号はファイルを識別するために使用されます。システムの場合、ファイル名は、iノード番号を簡単に識別できるようにするための単なる別名です。ファイル名とiノード番号は1対1で対応しており、各iノード番号はファイル名に対応しています。
したがって、ユーザーがTinux。システム内のファイルにアクセスしようとすると、システムは最初にファイル名に従って対応するiノード番号を見つけます。iノード番号を介してiノード情報を取得します。iノード情報
に従って、ユーザーがファイルにアクセスできます権限:ある場合は、対応するデータブロックをポイントしてデータを読み取ります。
2.iノードコンテンツ
- iノードはメタデータが含まれている
バイトの数。ファイル
。ファイルのユーザIDの(ファイル名を含まない)ファイルの所有者
のグループID。
。ファイル読み出し、書き込み、およびアクセス権、実行
ファイル。ファイルのタイムスタンプ - ディレクトリファイルの構造ディレクトリもファイルです
ディレクトリ
ファイルの構造 - 各iノードには番号があり、オペレーティングシステムはiノード番号を使用してさまざまなファイルを識別します
- ファイル名はLinuxシステムの内部では使用されませんが、iノード番号はファイルを識別するために使用されます
- ユーザーにとって、ファイル名は簡単に識別できるようにiノード番号の単なる別名です。
3.iノード番号を確認します
-
ユーザーがファイル名でファイルを開くと、
システムの内部プロセス1.システムはファイル名に対応する
iノード番号を
検索します2.iノード番号からiノード情報を取得します3.ファイルデータがあるブロックを検索しますiノード情報に従って配置され、データを読み取ります -
ファイル名に対応するiノード番号を表示するには、次の2つの方法があります
。ls-iファイル名
statファイル名
-
Linuxシステムファイルの3つの主な時間属性:
1.atime(アクセス時間)
ファイルまたはディレクトリが最後にアクセスされた
時間2.mtime(変更時間)
ファイルまたはディレクトリ(コンテンツ)が最後に変更された
時間3.ctime (変更時刻)
前回ファイルまたはディレクトリ(属性)を一度に変更した時刻
-
iノード番号とファイル名が分離されているため、Linuxシステムには次のような固有の現象があります
。1。ファイル名に特殊文字が含まれているため、正常に削除されない場合があります。このとき、iノードを直接削除することでファイルを削除することができます。
2.ファイルを移動するかファイルの名前を変更します。iノード番号に影響を与えることなくファイル名を変更するだけです。
3.ファイルを開いた後、システムはiノード番号を使用してファイル名を考慮せずにファイルを識別します。
4.ファイルデータを変更して保存すると、新しいiノード番号が生成されます。
4.iノードサイズ
- Linodeもハードディスクスペースを消費します
。各iノードのサイズは
通常128バイトまたは256バイトです。 - ファイルシステムをフォーマットするときにiノードの総数を決定します
- df -iコマンドを使用して、各ハードディスクパーティションに使用されているiノードの総数とiノードの数を表示します。
iノードもハードディスク領域を消費するため、フォーマット時に、オペレーティングシステムはハードディスクを自動的に2つの領域に分割します。1つはファイルデータを格納するデータ領域で、もう1つはiノードに含まれる情報を格納するiノード領域です。各iノードのサイズは通常128バイトまたは256バイトです。
通常、単一のiノードのサイズに注意を払う必要はありませんが、iノードの総数に注目する必要があります。iノードの総数はフォーマット時に指定されます。「dt-i」コマンドを実行して、各ハードディスクパーティションに対応するiノードの総数と使用されているiノードの数を表示します。
5.まとめ
6、iノードの特別な役割
- iノード番号とファイル名が分離されているため、一部のUnix / Linuxシステムには次の現象があります。
- ファイル名に特殊文字が含まれている場合、ファイルが正常に削除されないか、iノードを直接削除するか、ファイルを削除することができます。
- ファイルを移動または名前変更する場合、iノード番号に影響を与えることなくファイル名のみが変更されます
- ファイルを開いた後、システムはファイル名に関係なく、iノード番号を使用してファイルを識別します。
- ファイルデータを変更して保存すると、新しいiノード番号が生成されます。
見つける。!.-inum 52305140 -exec rm -i {] l;
検索./I-inum 50464299 -delete
2つの例:iノードノードの枯渇障害処理
1.仮想マシンに10Gハードディスクを作成し、再起動します
2.パーティションを作成します
fdisk -l
fdisk / dev / sdb
3.フォーマットとマウント
mkfs.ext4 / dev / sdb1
mkdir / mnt1
マウント/ dev / sdb1 / mnt1
df -hT
4.iノードノードの枯渇障害をシミュレートします
DF -i
(; I <= 5136 iが++)(iはL =)をするための
ない
タッチが/mnt1/${i}.txt
行わ
タッチ{1 ... 5136} .txtの或
DF -i
5.削除されたファイルの回復
rm -rf / mnt1 / *
touch {1,2,3} .txt
3.例:EXTファイルの回復
extundeleteは、ext3およびext4ファイルシステムをサポートするオープンソースのLinuxデータ復旧ツールです。(Ext4はcentos6バージョンでのみ復元できます)#fdiskを使用してパーティション/ dev / sdb1を作成し、ext3ファイルシステムをフォーマットします。
1.仮想マシンに20Gハードディスクを作成し、再起動します
2.パーティションを作成し、フォーマットし、マウントします
fdisk / dev / sdb
mkfs.ext3 / dev / sdb1
mkdir / data
mount / dev / sdb1 / data
3.依存関係パッケージをインストールします
cd / data
ダウンロードしたextundelete-0.2.4.tar.bz圧縮パッケージを(またはhttp://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tarにドラッグします。 .bz2ダウンロード)
yum -y install e2fsprogs-devel e2fsprogs-libs
4. extundeleteを解凍、コンパイル、インストールします
tar jxvf extundelete-0.2.4.tar.bz2——compress
cd extundelete-0.2.4 /-ディレクトリを変更し
ます。/configure--prefix=/usr/local/extundelete&& make && make install——インストールアドレスを指定します。
ln -s / usr / local / extundelete / bin / * / usr / bin /のインストールに進みます-ソフトリンクを設定します
5.ファイルとコンテンツを作成し、iノード番号を確認します
echo a> a-ファイルを作成しますechob
> b
echo c> c
cat abc-
extundelete / dev / sdb1を表示します--inode2-iノード番号を表示します
6.削除をシミュレートし、回復操作を実行します
rm -rf ab-delete
umount / data-unmount
df -hT-view mount
extundelete / dev / sdb1 --inode 2-viewinode番号
7.回復
extundelete / dev / sdb1 --restore-all——
CDの復元RECOVERED_FILES / -Enterキーを押して表示
4つの例:xfsタイプのファイルのバックアップとリカバリ
- Centos 7システムはデフォルトでxfsタイプのファイルを使用し、xfsタイプのファイルはxfsdumpおよびxfsrestoreツールを使用してバックアップできます。
- xfsdumpを復元するための2つのバックアップレベルがあります。
- 0は完全バックアップを意味します(デフォルトは0)
- 1〜9は増分バックアップを意味します
xfsdumpのコマンド形式は次のとおりです。xfsdump-fbackupstoragelocationバックアップするパスまたはデバイスファイル。- xfsdumpコマンドの一般的に使用されるオプション:
-f:バックアップファイルディレクトリを
指定します-L:ラベルセッションラベルを
指定します-M:デバイスラベルメディアラベルを指定します
-s:単一ファイルをバックアップします。パスを直接たどることはできません - xfsdumpの使用制限:
- 教えられたファイルシステムのみをバックアップできます
- 操作するにはroot権限を使用する必要があります
- XFSファイルシステムのみをバックアップできます
- バックアップ後のデータは、xfsrestoreでのみ解析できます
- 同じUUIDを持つ2つのファイルシステムをバックアップできません(blkidコマンドを使用して表示できます)
1.仮想マシンに20Gハードディスクを作成します
2.パーティションを作成し、フォーマットしてマウントします
fdisk / dev / sdb-パーティションの作成
mkfs.xfs / dev / sdb1-format
mkdir / data-ディレクトリ
マウントの作成/ dev / sdb1 / data-mount
cp / etc / passwd./-コピー
cp / etc / shadow ./-コピー
3. xfsdumpパッケージをインストールし、ファイルをバックアップします
yum install -y xfsdump-install xfsdump package
xfsdump -f / opt / dump_xfs1 / dev / sdb1 -L dump_sdb1 -Msdb1-バックアップを作成します
4.障害をシミュレートして回復します
cd / data
rm -rf *-すべてのファイルを削除(失敗をシミュレート)
xfsrestore -f / opt / dump_xfs1 / data-バックアップファイルを復元
5、ログファイル
1.ログの機能
1.システムおよびプログラムの操作で発生するさまざまなイベントを記録するために使用されます
。2 。ログを読み取ることにより、システム障害の診断と解決に役立ちます。
2.ログファイルの分類
1.カーネルログとシステムログは
システムサービスrsyslogによって一律に管理され、ログ形式は基本的にメイン構成ファイルletc /rsyslog.confと同様です。2
。ユーザーログは
システムユーザーのログインおよびログアウト情報を記録します。3
。プログラムログ
は独立しています。さまざまなアプリケーション管理ログファイル、レコード形式が統一されていない
3.一般的なログファイル
カーネルとシステムのログは、システムサービスrsyslogによって一律に管理されます。メインの設定ファイルは/etc/rsyslog.confです。Linuxオペレーティングシステム自体とほとんどのサーバープログラムのログファイルは、ディレクトリ/ var / log /に配置されます。デフォルト。
共通ログファイル:
#Kernelおよびパブリックメッセージログ:
/ var / log / messages:起動、Ioエラー、ネットワークエラー、プログラム障害など、さまざまなアプリケーションのLinuxカーネルメッセージおよびパブリックログ情報を記録します。使用されていない独立したHアプリケーションまたはサービスの場合、関連するイベントレコード情報は通常ログファイルから取得できます。#Planタスクログ
:
/ var / log / cron:crondiE計画タスクによって生成されたイベント情報を記録します。
#System Boot Log:
/ var / log / dmesg:Linuxシステムの起動プロセス中にさまざまなイベント情報を記録します。
#Mailシステムログ:
/ var / log / maillog:システムに出入りする電子メールアクティビティを記録します。
#ユーザーログインログ:
/ var / log / secure:ユーザー認証に関連するセキュリティイベント情報を記録します。
/ var / log / lastlog:各ユーザーの最新のログインイベントを記録します。バイナリ形式
/ var / log / wtmp:各ユーザーのログイン、ログアウト、システムの起動およびシャットダウンイベントを記録します。バイナリ形式
/ var / run / btmp:失敗した、間違ったログイン試行と検証イベントを記録します。バイナリ形式
#rsyslog.conf構成ファイルを表示
vim / etc / rsyslog.conf
* .info; mail.none; authpriv.none; cron.none
/ var / log / messages
* .info#は、情報レベル以上のすべての情報が対応するログファイルに書き込まれる
ことを示しますmail.none #はイベントを示します情報はログファイル(ここでは、たとえばメール)に書き込まれません
4.ログの優先度
Linuxシステムカーネルログメッセージの優先度レベル(数値レベルが小さいほど、優先度が高くなり、メッセージの重要性が高くなります)
。0EMERG(緊急):ホストシステムが使用できなくなる状況。
1アラート:すぐに解決する必要がある問題。
2 CRIT(深刻):より深刻な状況。
3 ERR(エラー):操作中にエラーが発生しました。
4警告:システム機能に影響を与える可能性があり、ユーザーに通知する必要がある重要なイベント。
5注意:通常の機能には影響しませんが、注意が必要なイベント。
6情報:一般情報。
7 DEBUG(デバッグ):プログラムまたはシステムのデバッグ情報など。