Linux ファイルストレージの i ノード、ハードリンク、ソフトリンクの詳細な説明

1.iノードとは何ですか?

        まず、Linux ではすべてがファイルであり、すべてがテキスト ストリームです。

        i ノード、中国語訳は「インデックス ノード」、「i ノード」とも呼ばれます

         ファイルはハードディスクに保存されますが、ハードディスクの最小の記憶単位を「セクタ」といいます。各セクターには 512 バイト (0.5KB に相当) が格納されます。

        オペレーティング システムがハードディスクを読み取るとき、効率があまりにも悪いセクターごとに読み取るのではなく、複数のセクターを一度に連続して読み取る、つまり一度に 1 つの「ブロック」を読み取ります。複数のセクターから構成されるこの「ブロック」がファイルアクセスの最小単位です。 「ブロック」の最も一般的なサイズは 4KB です。つまり、8 つの連続したセクターがブロックを形成します。        

        Linux システムでは、ファイルのファイル名とファイル データは別々に保存されます。、ファイル データは実際のデータとファイル データに分割されます。メタ情報。
メタ情報は、ファイルの作成者、作成日、ファイル サイズ、ファイルのアクセス許可などの情報を含むファイル属性に似ています。実際の情報はブロックに保存されますが、 ファイルのメタ情報が保存される領域は i ノードと呼ばれるため、ファイルは i ノードと少なくとも 1 つのブロックを占有する必要があります。
        Linux は内部的に、ファイル名ではなく i ノード番号を使用してファイルを識別します。システムにとって、ファイル名は i ノード番号のエイリアスであり、ユーザーがファイルを識別するのに便利です。ファイル名i ノード番号と i ノード番号が 1 つずつ対応しており、それぞれの i ノード番号がファイル名に対応します。
 

2. ファイルの i ノード情報を表示する

        命令:stat 文件名 

[test@test ~]$ stat 1.sh 
  File: ‘1.sh’  
  Size: 48        	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 67308180    Links: 2
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/    test)   Gid: ( 1000/    test)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2023-10-20 10:24:37.122033787 +0800
Modify: 2023-10-16 11:21:29.118521587 +0800
Change: 2023-10-20 10:58:12.815119852 +0800
 Birth: -

--显示信息包括
--文件,大小,块,io块,文件类型,设备,inode号,链接,权限,用户,组
--最近访问信息,最近修改,最近改变信息,创建信息

        つまり、ファイル名を除くすべてのファイル情報は i ノードに保存されますUnix/Linux システムは内部的にファイル名を使用しませんが、ファイルを識別するために i ノード番号を使用します。システムにとって、ファイル名は識別を容易にするための inode 番号のエイリアスまたはニックネームにすぎません。

        i ノードもハードディスクの空き容量を消費するため、ハードディスクがフォーマットされると、オペレーティング システムは自動的にハードディスクを 2 つの領域に分割します。 1 つはファイルデータを格納するデータ領域であり、もう 1 つは inode に含まれる情報を格納する inode 領域 (inode テーブル) です。
       各ハードディスク パーティション内の i ノードの合計数と使用されている数を表示する コマンド: df -i 

        各ファイルには i ノードが必要なため、i ノードが使用されていても、ハード ディスクがいっぱいではない場合があります。現時点では、ハード ドライブ上に新しいファイルを作成することはできません。

3. ファイルを開くとどうなるか

-- 新しいファイルの場合、ファイルには一意の i ノード番号が割り当てられ、その i ノード番号がファイル名に関連付けられます。

1. システムはファイル名に対応する i ノード番号を見つけます。

2. i ノード番号を通じて i ノード情報を取得します。

3. i ノード情報に基づいて、ファイル データが配置されているブロックを見つけて、データを読み取ります。

4. ハードリンクとソフトリンク

        ln (英語の綴り: link files) コマンドは非常に重要なコマンドで、その機能は別の場所にあるファイルへの同期リンクを確立することです。

ln [参数][源文件或目录][目标文件或目录]

        よく使うパラメータ: ソフトリンクパラメータ -s 追加しない場合はハードリンクですが、他のパラメータはあまり使用しません。

  • --backup[=CONTROL] 既存のターゲット ファイルをバックアップします
  • -b は --backup に似ていますが、パラメータを受け入れません
  • -d を使用すると、スーパーユーザーがディレクトリへのハードリンクを作成できるようになります
  • -f 強制実行
  • -i 対話モードでは、ファイルが存在する場合、ユーザーはそれを上書きするかどうかを尋ねられます。
  • -n シンボリックリンクを通常のディレクトリとして扱います
  • -s ソフトリンク (シンボリックリンク)
  • -v は詳細な処理を表示します

5. ハードリンクとソフトリンクの違い 

        ファイル 1.sh があるので、それに対するソフト リンクとハード リンクを作成します。

[test@test ~]$ ll
-rwxrwxrwx. 1 test test 48 Oct 16 11:21 1.sh
[test@test ~]$ cat 1.sh 
#! /bin/bash
echo 111
echo $SHLVL
echo $BASHPID
----创建软连接 -s
[test@test ~]$ ln -s 1.sh 1
----硬链接
[test@test ~]$ ln -v 1.sh 2
‘2’ => ‘1.sh’

        それぞれの i ノード番号を確認します ll -i

        ハード リンク 2 の i ノード番号はソース ファイル 1.sh の i ノード番号と同じであることがわかります。ソフト接続 1 は新しい i ノード番号を生成します

       違い1:

       ハードリンク: ファイルシステム内にファイル名 2 が作成されます。このファイルは、元のファイル 1.sh と同じ i ノード ブロックとデータ ブロックを共有するため、ファイル サイズと変更時間も同じです。

        ソフト リンク: 新しいファイル 1 が生成されます。これは、元のファイル 1.sh またはディレクトリのパスを指すショートカットとして理解できます。 i ノード ブロックとデータ ブロックを共有するため、サイズと変更時間が異なります

        

        違い2:

         ソフト リンクはファイル システムをまたがることができます。ハード リンクは同じファイル システム内でのみ作成できます。ソフト リンクは存在しないファイル名 wwwwww にリンクできます。ソフト リンクはディレクトリにリンクできますが、ハード リンクはディレクトリへのリンクを許可しません。

        ハード リンクはファイルのコピーの形式で存在します。ただし、 実際のスペースは占有しません。 ハード リンクであるかソフト リンクであるかに関係なく、元のファイルはコピーされず、ごく少量のディスク領域しか占有しません。

       違い 3: 元のファイル 1.sh を削除すると、ソフト リンクは無効になります (指定されたファイルはなくなります) が、ハード リンクは無効になりません。

        うん!いいねを求めています

おすすめ

転載: blog.csdn.net/qq_63693805/article/details/133942188