Linux
典型的 Linux 系統上存在哪些掛載點?
我有 2 個問題。
- 在 Linux 安裝期間,我們為 2 個掛載點指定記憶體空間 - 根和交換。是否在沒有使用者通知的情況下創建了任何其他掛載點?
- 這種說法是否正確:“只有在處理不同的分區時才會出現掛載。也就是說,你不能掛載,比如說,/proc,除非它是一個不同的分區”?
你的問題背後有誤解。
- 未安裝交換。
- 安裝不限於分區。
分區
分區是專用於特定目的的磁碟空間片¹ 。以下是分區的一些常見用途。
- 文件系統,即組織為目錄樹並以 ext2、ext3、FFS、FAT、NTFS 等格式儲存的文件
- 交換空間,即用於分頁(和儲存休眠圖像)的磁碟空間。
- 直接應用程序訪問。一些數據庫將數據直接儲存在分區而不是文件系統上以獲得一點性能。(無論如何,文件系統是一種數據庫。)
- 其他分區的容器。例如,一個PC 擴展分區,或者一個包含 BSD 分區的磁碟片,或者一個LVM物理卷(最終包含邏輯卷,它們本身可以被認為是分區),……
文件系統
文件系統以分層結構呈現資訊。以下是一些常見的文件系統:
磁碟支持的文件系統,例如 ext2、ext3、FFS、FAT、NTFS……
記憶體支持的文件系統,例如 Solaris 和 Linux 的tmpfs。
應用程序支持的文件系統,其中FUSE擁有大量集合。應用程序支持的文件系統幾乎可以做任何事情:使 FTP 伺服器顯示為文件系統,提供文件系統的替代視圖,其中文件名不區分大小寫或轉換為不同的編碼,顯示存檔內容就像它們是目錄一樣,……
安裝
Unix 以單一層次結構呈現文件,通常稱為“文件系統”(但在這個答案中,為了避免混淆,我不會在這個意義上使用“文件系統”這個詞)。必須將單個文件系統移植到該層次結構上才能訪問它們。³
您可以通過掛載文件系統來訪問它。掛載將您正在掛載的文件系統的根目錄與文件層次結構中的現有目錄相關聯。具有這種關聯的目錄稱為掛載點。
- 例如,根文件系統在啟動時(在核心啟動任何程序²之前)掛載到該
/
目錄。- 某些 unix 變體(例如 Solaris 和 Linux)公開有關程序的資訊的 proc 文件系統安裝在 proc 文件系統上
/proc
,以便/proc/42/environ
指定/42/environ
proc 文件系統上的文件,該文件(至少在 Linux 上)包含程序環境的只讀視圖42號。- 如果您有一個單獨的文件系統,例如 for
/home
,則/home/john/myfile.txt
指定其路徑/john/myfile.txt
來自主文件系統根目錄的文件。在 Linux 下,同一個文件系統可以通過多個路徑訪問,這要歸功於bind mounts。
一個典型的 Linux 文件系統有許多掛載的文件系統。(這是一個範例;不同的發行版、版本和設置將導致掛載不同的文件系統。)
/
: 根文件系統,在核心載入第一個程序之前掛載。引導載入程序告訴核心使用什麼作為根文件系統(它通常是磁碟分區,但也可能是其他東西,例如 NFS 導出)。/proc
: proc文件系統,包含程序和核心資訊。/sys
: sysfs文件系統,包含有關硬體設備的資訊。/dev
:一個記憶體文件系統,其中設備文件由udev基於可用硬體自動創建。/dev/pts
:一個特殊用途的文件系統,包含用於執行終端仿真器的設備文件。/dev/shm
:系統標準庫用於內部目的的記憶體文件系統。- 根據您執行的系統組件,您可能會看到其他特殊用途的文件系統,例如
binfmt_misc
(由外部執行檔格式核心子系統使用),fusectl
(由FUSE使用),nfsd
(由核心 NFS 伺服器使用),……/etc/fstab
任何在(未標記)中明確提及的文件系統noauto
都將作為引導過程的一部分進行掛載。- 在插入可移動設備(例如 USB 密鑰)後由HAL (或等效功能)自動掛載的任何文件系統。
mount
使用該命令顯式掛載的任何文件系統。¹在這裡非正式地說。
² initrd 等超出了這個答案的範圍。
³這與 Windows 不同,Windows 對每個文件系統都有單獨的層次結構,例如
c:
或\\hostname\sharename
.