Filesystems
為什麼 usr 被稱為“文件系統”並且根文件系統應該很小?
我正試圖圍繞 Linux 中的文件系統展開研究,但仍有一些我不明白的地方。到目前為止,我認為文件系統是一組用於從卷的分區中檢索文件的方法和資料結構。文件系統可以通過 Linux 命令列出
df
到目前為止,一切都很好。此外,Linux 將合成文件系統創建為 proc,對於非文件對象來說似乎是正常文件系統。一個例子是 proc 文件系統。如果我們添加標誌,則可以使用 df 命令列出合成的 filsystem
-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
似乎根文件系統實際上包含了我電腦上的所有內容,那麼它為什麼要小呢?
基本原理在背景部分給出。直到 2000 年代中後期才有意義,但如今已不再適用。
製作
/usr
一個單獨的文件系統的原因是為了保持根文件系統的小。/usr
目錄樹用於安裝的軟體。
- 安裝的軟體不會經常更改,因此您可以
/usr
只讀方式安裝。根文件系統通常不能以只讀方式掛載,因為/etc
通常需要經常修改¹。/usr
保持只讀的主要優點是避免長時間的文件系統檢查,如果系統在以讀寫方式掛載時崩潰。這不再與具有日誌或其他機制的現代文件系統相關,這些機制可以讓它們直接從崩潰中恢復。- 安裝的軟體可以在相同機器的公園上完全相同,因此
/usr
可以是只讀的,如果您有本地網路,則可以將其儲存在單個伺服器上並讓其他機器安裝它。從網路上的根文件系統引導更加複雜(依賴於更多的引導載入程序和核心支持,如果網路中斷,機器會完全無法使用)。這在過去可能要花費 200 美元的磁碟空間時很常見/usr
,而如今它只花費幾美分就無關緊要了。所以現在
/usr
很少有一個單獨的文件系統,甚至只是/usr
建立一個符號連結到/
.¹在 Linux 上,至少現在這不像過去那樣真實:主要罪魁禍首是
/etc/mtab
,它曾經是一個正常文件,但現在/proc/mounts
已經足夠用作它了/etc/mtab
,因此/etc/mtab
通常是指向它的符號連結)。然而,新的罪魁禍首出現了,例如 Cups 和 NetworkManager 喜歡更新包含他們最後一次看到列印機/網路的時間戳的文件。