記事ディレクトリ
序文
- Linuxシステムのさまざまな障害に対処する場合、障害の症状を見つけるのが最も簡単であり、この障害の原因が最終的なトラブルシューティングの鍵となります。
- Linuxシステムの一般的なログファイルに精通し、一般的な障害の分析と解決策を理解することで、管理者は障害ポイントをすばやく特定し、「適切な薬を処方」し、さまざまなシステムの問題を時間内に解決するのに役立ちます。
- 障害現象は不確実であるため、シミュレートされた障害操作を実行する前に、事前にバックアップを作成することをお勧めします。
1つ、inodeとblock
- 新しいオペレーティングシステムでは、実際のコンテンツに加えて、ファイルには通常、Linuxオペレーティングシステムのファイル権限など、多くの属性が含まれています(rwx、rは読み取り可能およびアクセス可能、wは書き込み可能および変更可能、xは実行可能を表します) )およびファイル属性(所有者、グループ、時間パラメーターなど)
- ファイルシステムは通常、これら2つの部分をそれぞれinodeとblockに格納します
1。概要
- ファイルはハードディスクに保存され、ハードディスクの最小のストレージ単位は「セクター」であり、各セクターは512バイトを保存します
1.1ブロック
- 通常、8つの連続するセクターが「ブロック」を形成します。ブロックのサイズは4Kで、ファイルアクセスの最小単位です。
- オペレーティングシステムがハードディスクを読み取るとき、一度に1つのセクターを読み取るのではなく、一度に複数のセクター、つまり一度に1つのブロックを読み取ります。
1.2メタ情報
- ファイルデータには、実際のデータとメタ情報が含まれます(ファイル属性と同様)。
- メタ情報は、情報に関する情報であり、ファイルの作成者、作成日、ファイルサイズ、ファイルのアクセス許可など、情報の構造、セマンティクス、目的、および使用法を説明するために使用されます。
1.3iノード
- ファイルデータは「ブロック」に保存されます。ファイルメタ情報を保存する場所も見つける必要があります
- この領域はinodeと呼ばれ、中国語の翻訳は「インデックスノード」です。Iノード
- 要約すると、ファイルは1つのinodeと少なくとも1つのブロックを占める必要があります
コンテンツを保存する | ストレージの場所 |
---|---|
メタ情報 | iノード |
データ | ブロック |
2.Inodeコンテンツ
- Inodeには多くのファイルメタ情報が含まれていますが、ファイル名は含まれていません
- ファイル名に対応するinode情報を表示する方法は2つあります。
- ls -iファイル名(ファイル名とサイズのみが表示されます)
- 統計ファイル名(より詳細)
[root@localhost ~]# touch zcy.txt
[root@localhost ~]# stat zcy.txt
文件:"zcy.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:802h/2050d Inode:50331733 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-12-02 18:57:44.877383213 +0800
最近更改:2020-12-02 18:57:44.877383213 +0800
最近改动:2020-12-02 18:57:44.877383213 +0800
创建时间:-
[root@localhost ~]# ls -i zcy.txt
50331733 zcy.txt
- Linuxシステムファイルには、3つの主要な時間属性があります(上の図を参照)
- 最近アクセスした(アクセス):ファイルまたはディレクトリに最後にアクセスした時刻
- 最近変更された(変更):ファイルまたはディレクトリ(コンテンツ)が最後に変更された時刻
- 最近の変更(変更):ファイルまたはディレクトリ(属性)が最後に変更された時刻
3.ディレクトリファイルの構造
- 前述のように、インドにはファイル名が含まれていません。ファイル名はディレクトリに保存され、すべてがLinxシステムのファイルであるため、ディレクトリも一種のファイルです。
- ディレクトリファイルの構造は次のとおりです。
ファイル名1 | イノデ番号1 |
---|---|
ファイル名2 | イノデ番号2 |
… | … |
- 各inodeには番号があり、オペレーティングシステムはinode番号を使用してさまざまなファイルを識別します
- Linuxシステムはファイル名を使用しませんが、inode番号を使用してファイルを識別します
- ユーザーにとって、ファイル名はinode番号を簡単に識別できるようにするための単なる「エイリアス」です。
- ファイル名とinode番号は対応する関係にあり、各inode番号はファイル名に対応します
4.inode番号
- (例)ユーザーはファイル名を使用してファイルを開きますが、システムには次の3つのステップがあります。
- システムは最初にファイル名に対応するinode番号を見つけます
- 次に、inode番号からinode情報を取得して、ユーザーがファイルにアクセスする権限を持っているかどうかを確認します。
- その場合、inode情報に従って対応するファイルデータが配置されているブロックをポイントし、データを読み取ってユーザーに表示します(そうでない場合は、許可が拒否されました。つまり、許可がありません)。
- ハードディスクパーティション後の構造
ファイル名 | → | ディレクトリアイテム | / | ディレクトリブロック |
---|---|---|---|---|
メタ情報 | → | iノード | / | inodeテーブルブロック |
データ | → | ブロック | / | ブロックデータ領域 |
4.inodeのサイズ
- Inodeはハードディスクスペースも消費します。各inodeサイズは通常128バイトまたは256バイトです。
- フォーマット時に、システムは自動的にハードディスクを2つの領域に分割します
- 1つは、ファイルデータを格納するデータ領域です。
- もう1つは、inodeに含まれる情報を格納するinode領域です。
- 通常、単一のinodeのサイズに注意を払う必要はありませんが、inodeの総数です。inodeの総数はフォーマット時に指定されます。
- 「df-i」を実行して、各ハードディスクパーティションに対応するinodeの総数と使用されているinodeの数を表示します。
[root@localhost ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda2 10485760 123414 10362346 2% /
devtmpfs 479491 379 479112 1% /dev
tmpfs 483163 1 483162 1% /dev/shm
tmpfs 483163 551 482612 1% /run
tmpfs 483163 16 483147 1% /sys/fs/cgroup
/dev/sda3 5242880 143 5242737 1% /home
/dev/sda1 3145728 328 3145400 1% /boot
tmpfs 483163 9 483154 1% /run/user/42
tmpfs 483163 1 483162 1% /run/user/0
- inode番号はファイル名から分離されているため、このメカニズムにより、Linuxシステムで次のような固有の現象が発生します。
- ファイル名に特殊文字が含まれていると、正常に削除されない場合があります。この場合、ファイルを削除するには、inodeを直接削除する必要があります。
- ファイルの移動またはファイルの名前変更は、ファイル名のみを変更し、inode番号には影響しません。
- ファイルを開いた後、システムはファイル名を考慮する代わりに、そのinode番号によってファイルを識別します。
- ファイルデータを変更して保存すると、新しいinode番号が生成されます
- このメカニズムでは、システムはファイル名の代わりにinode番号を使用して実行中のファイルを識別するため、ソフトウェアはシャットダウンせずに更新でき、再起動する必要はありません
。このように、更新時に(入力しているのと同じように) vim editorで編集するプロセス)、ファイルの新しいバージョンは、実行中のファイルに影響を与えることなく、同じファイル名で新しいinodeを生成します。
ソフトウェアを再度実行すると(wq)、ファイル名はファイルの新しいバージョンと古いバージョンのファイルのinode番号が同時に回復されます(inode番号を更新します)
2つ、ハードリンクとソフトリンク
- Linuxには2種類のリンクファイルがあります
- Windowsのショートカット機能に似たファイルで、ターゲットファイルまたはディレクトリにすばやく接続できます。これはソフトリンクと呼ばれます。
- もう1つは、新しいファイルを生成する代わりに、ファイルシステムのinodeリンクを介してファイル名を生成することです。これはハードリンクと呼ばれます。
1.ハードリンク
- 通常、ファイル名とinode番号は対応する関係にあり、各inode番号はファイル名に対応します。
- ただし、Linuxシステムでは、複数のファイル名が同じinode番号を指すことができます。つまり、異なるファイル名を使用して同じコンテンツにアクセスできます。
- 「ln」コマンドはハードリンクを作成できます。コマンド形式は次のとおりです。
ln 源文件 目标
- このコマンドを実行すると、ソースファイルとターゲットファイルのinode番号が同じになり、どちらも1つのinodeを指します。このとき、inode情報の「リンク数」は1ずつ増えます。
- ファイルに複数のハードリンクがあり、ファイルの内容を変更すると、すべてのファイル名に影響しますが、ファイル名を削除しても他のファイル名には影響しません。ファイル名を削除すると、inode番号のみが作成されます。 「リンク数」から1を引いたもの
- 実際の環境ではハードリンクが適用されることはほとんどなく、ディレクトリへのハードリンクを作成することはできません。
- 例:
- 新しいファイルを作成して確認すると、inode番号とリンク数が表示されます
- ここでハードリンクを作成すると、inode番号が同じで、リンク数が1つ増えて2になることがわかります。
- ソースファイル「xcf」を削除し、ハードリンクは影響を受けなかったが、リンクの数が1つ減り、1つに戻ったことがわかりました。
- 新しいファイルを作成して確認すると、inode番号とリンク数が表示されます
2.ソフトリンク
- ソフトリンクは別のファイルを作成することです。このファイルは、データ読み取りが接続先のファイルのファイル名を指すようにします。
- 例:
ファイルAとファイルBのinode番号は異なりますが、ファイルAの内容は
ファイルBのパスです。ファイルAを読み取ると、システムは自動的に訪問者をファイルBに誘導します。
このとき、ファイルAはファイルBと呼ばれます。 「ソフトリンク」または「シンボリックリンク」 - これは、ファイルAがファイルBに依存し、存在することを意味します。ファイルBが削除されると、ファイルAはエラーの報告を開始します。
これがソフトリンクとハードリンクの最大の違いです。ファイルAは、inodeではなくファイルBのファイル名を指します。数、ファイルBのinode「リンク数」はそれに応じて変更されません - ソフトリンクを作成するためのフォーマット:
ln -s 源文件或目录 目标文件或目录
- 例
- 新しいファイルを作成し、そのソフトリンクを作成します。
この時点で、inode番号が変更されていることがわかり、ソフトリンクファイルがソースファイルを指す「xcf2-> xcf1」であることがわかります。
- ソースファイルxcf1を削除し、xcf2がエラーの報告を開始することを確認します。
- 新しいファイルを作成し、そのソフトリンクを作成します。
3.まとめ
/ | ソフトリンク | ハードリンク |
---|---|---|
iノード | ソフトリンクソースファイルとリンクファイルのinode番号は異なり、2つの異なるファイルです。 | ハードリンクソースファイルとリンクファイルは、複数のファイル名を持つファイルのようにinode番号を共有し、それらが同じファイルであることを示します |
ファイル属性 | ソフトリンクは、それがリンクされたファイルであることを明確に示しています | ハードリンクは書き出されておらず、基本的にソースファイルと同じです |
クロスファイルシステムの確立 | 待機する | サポートしません |
リンク数 | ソフトリンクの数は増えず、ファイルサイズは異なります(ショートカットと対応するソースファイルの関係として理解できます) | ハードリンクは、ファイルサイズがソースファイルと同じであることを示しています |