私はLinuxが初めてなので、この質問で遭遇する可能性のある混乱を許してください。
私が理解していることから、ファイルシステムは、ext2、ext3、reiserfs、xfsなどの標準を使用して、パーティションがファイルを格納/管理する方法を指定します。時々、「directory
」を各
/boot filesystem
/usr/bin filesystem
/root filesystem
/bin filesystem
これらをfilesystems
と呼ぶのはなぜですか?
それらのそれぞれがパーティションである場合、私が知る限り、/usr
および/usr/bin
は同じパーティションにある傾向がありますが、人々が両方を参照しているのを見ました/usr filesystem
および/usr/bin filesystem
。
ここでのfilesystem
がWindowのdirectory
と同等である場合、ファイルシステムは単なるディレクトリではないため、私にはわかりません。また、私の知る限り、Linuxにはdirectory
の概念がありません。すべてファイルです。
私が書いたように https://superuser.com/a/293160/38062 :
ここでの問題は、Wordの「ファイルシステム」です。 POSIX/Unix/Linuxの世界では、いくつかの異なる意味で使用されます。
/
をルートとし、オペレーティングシステムカーネルによってアプリケーションソフトウェアに提示されるファイルのシステム全体の場合もあります。この意味で、人々は、たとえば「単一のファイルシステムツリー」を持つPOSIXオペレーティングシステムについて話します。/usr
filesystemをフォーマットする」と言います。 「/usr
」は、ボリュームの(予想される)マウントポイント、または(一部のパーティション分割スキームでは)ボリュームの識別ラベルです。/proc
にprocファイルシステムをマウントする」または「/tmp
にtmpfsファイルシステムを使用する」と言います。「/usr/bin
ファイルシステム」が表示されたときに、意味1が表示されています。これは、/usr/bin
ディレクトリをルートとするファイルシステムツリーです。はい、Linuxは非常にdoesディレクトリの概念を持っています。
意味#2と意味#3は、誤って解釈しているものです。人々はnot/usr/bin
をディスクのスライス/パーティションで区切られたオンディスクデータセットとして話します。また、特定の種類のファイルシステムドライバーや特定のディスクボリュームフォーマットとしての/usr/bin
についても触れていません。
もちろん、Linuxはディレクトリの概念を使用しています。ディレクトリの概念はWindowsと同じです。
ファイルシステムの概念も、Windowsで使用されているものとよく似ています。 Windowsは通常NTFSまたはFATを使用します-Linuxは通常ext2、ext3、ext4などを使用します。それがすべての違いです。
異なる点は、Linuxでは、使用可能なすべてのパーティショニングのファイル/ディレクトリが1つのツリーに編成されていることです。 Windowsでは、文字を使用して異なるパーティションを参照します。 「a:」、「c:」、Linuxでは、使用可能なファイルへのフルパスは「/」で始まります-ルートディレクトリ。たとえば、システムを起動するためにファイルが必要なhddに別のパーティションがあります。適切な引数を指定して 'mount'コマンドを実行すると、このパーティションの内容が「/ boot /」パスで利用可能になります。したがって、f.e。 「/ boot」と「/ home」のパスは異なるパーティション上のデータを参照する場合があり、これらのパーティションは異なるファイルシステムを持つ場合があります。おそらくあなたの誤解を引き起こした。
物理的に同じパーティションにあるディレクトリは、常に「同じファイルシステムを持っています」。誰かがディレクトリのファイルシステムについて話すとき、それは実際にはこのディレクトリが置かれているパーティションのファイルシステムについてです。
(マイナーでおそらく重要ではない修正:ファイルシステムが仮想であり、対応するパーティションがない場合があります。たとえば、「/ proc」には、ファイルに非常によく似たものが含まれていますが、これらの「ファイル」は仮想であり、任意のハードドライブと実行中のプロセスに関する情報が含まれています。また、このデータへの通常のファイルのようなインターフェイスを提供する特別な「procfs」ファイルシステムがあります)
ディスクは1つ以上のパーティションに分割されます。 Windowsの場合、通常は1つだけですが、リカバリパーティションがどこかに隠れている可能性があります。パーティションは、ディスクの論理的に連続した領域です。 「セクター1から10,000,000」。
パーティション上にファイルシステムを構築できます。 Windowsの場合、これはNTFSまたはFATです。 Linuxの場合、これはext
バージョンまたはその他のさまざまなオプションの1つです。
ファイルシステム内には、ファイルとディレクトリがあります。 Linuxにはディレクトリがありますが、どうしてそうではないという考えが得られたのか、私にはわかりません。
オペレーティングシステムは、複数のディスク上の複数のパーティションをユーザーにどのように提示しますか? Windowsでは、これはドライブ文字で行われます:_C:
_、_D:
_など。Linuxでは、ドライブ文字はなく、すべてがmount points:特定のディレクトリで、別のファイルシステムへのアクセスを再ルーティングします。(+)多くの場合、CDまたはUSBスティックを挿入すると、_/media
_または_/mnt
_。
_/usr
_と_/usr/bin
_は通常同じファイルシステムにありますが、必ずしもそうである必要はありません。 「_/usr/bin
_ディレクトリが含まれているファイルシステム」という表現を使用する場合、人々はそのことを意味します。
(+)NTFSジャンクションポイントでもこれを行うことができますが、ほとんどの人がそうすることはありません。ドライブ文字がなくなるまで。
Linuxシステム全体を1つのパーティションに保持し、すべてのサブディレクトリを1つのファイルシステムに置くことができます。
また、特定のディレクトリサブツリーが異なるファイルシステム上にある複数のパーティションに分散させることもできます。たとえば、/home
、/tmp
、/usr
、/var
を別々のファイルシステムに配置するのが一般的です。質問の1つに対処するために、/usr/bin
が独自のファイルシステム上にあることもあります。
このスキームには利点があります。たとえば、/var
が大量のメールでいっぱいになっても、システムの残りの部分は影響を受けません。同様に、クラッシュなどの原因で1つのファイルシステムが破損した場合でも、他のファイルシステムは良好であり、システムを簡単に回復できます。
システムが起動すると、最初はルートファイルシステムのみが使用可能です。そこに保持されているプログラムは、起動プロセス中に実行されます。これらのプログラムの1つであるmount
は、ファイルシステムテーブル/etc/fstab
のデータを使用して、数回実行されます。一例を挙げると、元々、/home
はルートファイルシステムの通常のディレクトリにすぎません。次に、このコマンドをrootとして実行します。
mount /dev/sda7 /home
これは、パーティション/dev/sda7
のファイルシステムがディレクトリ/home
にマウントであることをシステムに通知します。したがって、現在、そのファイルシステムのすべてが/home
の下にあると見なされます。
df
を実行すると、現在マウントされているものを確認できます。
これらのディレクトリはマウントポイントになることがあるので、filesystems
と呼ぶこともあります。あなたが尋ねた唯一の質問についてはこれくらい...
filesystem
は2つの異なるものを参照できます...または実際には同じものの2つの非常に異なる側面を参照できます。
ファイルとディレクトリの概念は隠喩です。コンピュータにとってはデータだけがあり、すべてのメディアはデータを保持できるデバイスにすぎません。一部のデバイスではデータの読み取りと書き込みが可能です(HDDなど)。他のデバイスではデータの読み取りのみが可能です(CD-ROMなど)。データの書き込みのみが可能なデバイス(プリンタなど)もあります。ファイルとディレクトリのメタファーを使用してデータを構造化し、同時にすべてではなく小さなデータのチャンクにアクセスできるようにします。
ストレージメディアに配置するファイルシステム。 ext4、xfs、fatは構造化の部分を行います。それらを使用して、データのチャンク(ファイル)にラベルを付け、すべてのラベル(ディレクトリ)の一貫した構造化リストを作成します。構造化リストは実際にはツリーです。最も重要な側面は、ツリーの開始点が1つ、つまりルートであることです。この構造を維持し、データにアクセスできるようにすることは非常に重要な作業です。そのため、ファイルシステムの種類は1つだけではありません。
ファイルシステムのもう1つの側面は、ストレージデバイスに保存されたデータをすべてのプログラムからアクセスできるようにすることはOSの仕事です。これは、次の2つのことによって実現されます。
OSは、ファイルやディレクトリにアクセスして操作するための1つの(プログラミング)インターフェイスを提供します。プログラム/プロセスの場合、ストレージデバイスのファイルシステムがext2、xfs、fatなどであるかどうかは重要ではありません。プログラム/プロセスは、統一された方法でファイルとディレクトリにアクセスします。
OSは、すべてのストレージメディア、つまりファイルシステムをone上位構造で編成します。プログラムはこの上位構造を通じてファイルとディレクトリにアクセスし、ストレージデバイスと直接対話する必要はありません。そうすれば、プログラムはデータが実際に存在するデバイスを気にする必要がありません。この上位構造は、カーネルの「仮想ファイルシステム」と呼ばれることがよくあります。
ストレージデバイスのファイルシステムを仮想ファイルシステムに追加することを、ファイルシステムの「マウント」と呼びます。 Linuxが起動すると、カーネルは仮想ファイルシステム(VFS)を作成します。作成直後は空であり、エントリポイント(ルート)のみで構成されています/
。次に、カーネルはVFSのルートにファイルシステムをマウントします。これはRAMディスクか、ハードドライブ上のパーティション上のファイルシステムです。 VFSのルートに追加されるため、このパーティションはしばしばルートファイルシステムと呼ばれます。
ここで線がぼやけている部分が来て、ストレージデバイスのファイルシステムとカーネルのVFSが実際には同じOSタスクの2つの側面であることがわかります:ルートファイルシステムのマウントにより、VFSには多くのファイルとディレクトリが含まれ、それらすべてがルートパーティションに存在します。ただし、すべてのディレクトリが「マウントポイント」になる可能性があります。マウントポイントは、VFSがストレージデバイス上のファイルシステムにエントリポイントを配置する場所です。つまり、ディレクトリにファイルシステムをマウントするときは常に、そのディレクトリに格納されているデータにアクセスする代わりに、別のストレージデバイス上のデータにアクセスすることをVFSに指示します。マウントポイントは通常空のディレクトリであるため、他のファイルシステムを上にマウントしてデータにアクセスできなくなります。
OSをインストールするとき、すべてのデータを1つのファイルシステムに置き、それをルートファイルシステムにするか、複数のファイルシステム間でデータを分割するかは、あなた次第です。後者では、すべてのデータにアクセスできるようにするために、OSが個々のファイルシステムをすべてマウントする必要があります。どのように分割するかは、システムの設計方法の問題です。これが、インストールから知っているディレクトリがファイルシステムと呼ばれる場合がある理由です。
通常自宅にあるコンピューターでは、インストールを複数のファイルシステムに分割する必要はありません。それでもそうすることには十分な理由がある可能性がありますが、これはこの投稿の範囲外です。
この投稿の残りの部分を短く保つために:パーティションは、ストレージデバイス上のデータを構造化するもう1つの手段です。パーティションを使用すると、物理ストレージデバイスから連続したストレージスペースを切り分け、それらを個別のストレージデバイスとしてOSに提供します(OSでVFSにマウントするファイルシステムを配置できます)。これを行う理由の1つは、ハードドライブが1つしかなく、多くの異なるファイルシステムを使用したい場合です。ルートファイルシステムが存在するパーティションは、しばしばルートパーティションと呼ばれます。
少し混乱しています。 Filesystem
は、ファイルがストレージデバイスまたはハードドライブやCD-ROMなどの大容量メモリ、場合によってはRAMにも配置され、整理されるメカニズムを示します。
WindowsでもNTFS
または以前はFAT
などのファイルシステムを使用しています。
あなたの例は、マウントポイントという名前のディレクトリにマウントされたさまざまなファイルシステムで構成される独自のシステムを持つLinuxおよびUNIXシステムの一般的な方法を示しています。これにより、問題が発生した場合に、損傷を1つ以上のファイルシステムに限定できますが、すべてのファイルシステムに限定することはできません。
したがって、FSはディレクトリと同等ではありません。また、Linuxには特別な種類のファイルであるディレクトリがあります。