Linuxのファイルシステムを理解しようとしていますが、まだ理解していない部分があります。これまで私が正しく理解しているのは、ファイルシステムがボリュームのパーティションからファイルを取得するために使用される一連の方法とデータ構造であることです。ファイルシステムはLinuxコマンドでリストできます。df
これまではとても良いです。
また、Linuxは合成ファイルシステムをprocsとして生成します。これは、ファイルではなくオブジェクトに対して通常のファイルシステムとして表示されます。 proc ファイルシステムがその例です。フラグを追加すると、dfコマンドを使用して合成ファイルシステムを一覧表示できます-a
。
今の質問は、/usr/フォルダがファイルシステムと呼ばれる理由です。https://tldp.org/LDP/sag/html/usr-fs.html)?私にとっては、ルートファイルシステムに属するフォルダのようです。それでは、なぜ人々はそれをファイルシステムと呼ぶのでしょうか?
また、人々がルートファイルシステムが小さくなければならないと言うのはなぜですか(https://tldp.org/LDP/sag/html/root-fs.html)?
実際にdf
次のコマンドを呼び出すと、次のようになります。
Filesystem 1K-blocks Used Available Use% Mounted on
udev 32866696 0 32866696 0% /dev
tmpfs 6578976 2484 6576492 1% /run
/dev/nvme0n1p5 959862832 101610168 809424504 12% /
tmpfs 32894876 109020 32785856 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 32894876 0 32894876 0% /sys/fs/cgroup
/dev/loop1 56704 56704 0 100% /snap/core18/1885
/dev/loop2 261760 261760 0 100% /snap/gnome-3-34-1804/36
/dev/nvme0n1p1 523248 4 523244 1% /boot/efi
/dev/loop3 63616 63616 0 100% /snap/gtk-common-themes/1506
/dev/loop4 51968 51968 0 100% /snap/snap-store/481
/dev/loop5 31744 31744 0 100% /snap/snapd/9721
/dev/loop6 30720 30720 0 100% /snap/snapd/8542
/dev/loop7 223232 223232 0 100% /snap/gnome-3-34-1804/60
/dev/loop8 51072 51072 0 100% /snap/snap-store/467
tmpfs 6578972 20 6578952 1% /run/user/125
tmpfs 6578972 40 6578932 1% /run/user/1000
/dev/sda1 30702592 2498400 28204192 9% /media/tommaso/USB
/dev/loop9 56704 56704 0 100% /snap/core18/1932
ルートファイルシステムは実際には次のように構成されているようです。すべて私のコンピュータではなぜ小さいのですか?
答え1
基本原則は背景部分。 2000年代半ばから後半まで関連がありましたが、今日はもはや関連がありません。
別々のファイルシステムを作成する理由は、/usr
ルートファイルシステムを小さく保つためです。ディレクトリ/usr
ツリーはソフトウェアのインストールに使用されます。
インストールされているソフトウェアは頻繁に変更されないため、
/usr
読み取り専用でインストールできます。ルートファイルシステムは/etc
通常頻繁に変更する必要があるため、読み取り専用でマウントすることはできません。読み取り専用に保つ主な利点は、/usr
読み取り/書き込みがマウントされている間にシステムがクラッシュした場合に長いファイルシステムチェックを避けることができることです。これは、もはや最新のファイルシステムとは関係ありません。雑誌または、競合から直接回復できる他のメカニズムもあります。同じシステムにインストールされているソフトウェアは同じであるため、
/usr
読み取り専用にすることができます。あるいは、ローカルネットワークがある場合は、それを単一のサーバーに保存して別のシステムにインストールすることもできます。ネットワークのルートファイルシステムからの起動はより複雑です(より多くのブートローダとカーネルのサポートに依存し、ネットワークがダウンするとマシンを完全に使用できなくなります)。これはディスクスペースのコストが200ドルだった当時は一般的でしたが、/usr
コストは1セントにすぎないため、もはや重要ではありません。
したがって、最近では/usr
別々のファイルシステムを持っている/usr
か/
。
少なくともLinuxではこれ以上そうではありません。原因は、この/etc/mtab
ファイルが以前は一般的なファイルでしたが、今では一般的にシンボリックリンクがある/proc/mounts
のに十分であることです。しかし、プリンタ/ネットワークが最後に確認された時間のタイムスタンプを含むファイルを更新したいCupsやNetworkManagerなどの新しい犯人が登場しました。/etc/mtab
/etc/mtab
答え2
あなたはいくつかの点で廃止された非常に古いマニュアルを読んでいます。
過去には一部の Unix の場合に慣れるは別の/usr
マウントポイントであり、残りのファイル(/bin /etc /root /usr /sbin
)は正常な起動にのみ必要です。
今日、Linuxディストリビューションはその中にあるすべてを削除し/bin /sbin
て移動しています。これは(と一緒に)ルートファイルシステムに属することが非常に適していることを意味します。/lib
/usr/{bin,sbin,lib}
/usr
/etc /root
/var
2020年の最新のLinuxの階層は次のとおりです。
/bin -> /usr/bin
/boot : a separate FS for storing kernel images and initial ram disks
/boot/efi : an EFI system partition - not specific to Linux
/dev : tmpfs
/etc
/home
/lib -> /usr/lib
/lib64 -> /usr/lib64
/media
/mnt
/opt
/proc : virtual fs
/run : tmpfs
/sbin -> /usr/sbin
/sys : virtual fs
/tmp : tmpfs
/usr
/var
/
したがって、最小限のファイルシステムとファイルシステムが必要です/boot
。しかし、誰も別のプレフィックスを別のファイルシステムに置くのを防ぎません。
しかし、次は良い習慣です。
/home
ディストリビューションを簡単に切り替えることができるため、別のファイルシステムとして使用/var/lib/{mysql|postgres|something else}
スピードを上げ、断片化を減らすために別のFSがあるかもしれません- 一部の人々は排他的な大規模なアプリケーションをインストールし
/opt
たり、/usr/local
別のファイルシステムを保証したりするかもしれません。
それはすべてです。