分區和掛載(點)
Windows
在windows下,分區是有明顯的界限的,就比如這樣:
在“此電腦”中的C盤、D盤、E盤等,都是分區。一般情況下,系統安裝在C盤,其他分區一般用來存放資料,但是linux下的分區和windows不同。
Linux——分區就是文件夾
其實這么說並不准確,因為Linux下“分區”的概念是比較模糊的。
Linux是以樹的結構存儲文件的。不管你的電腦中有幾塊硬盤(即便沒有),也不管硬盤分了幾個區,Linux都會給你整出來個根目錄,也就是上圖中最頂層的“/”。一旦你安裝了Linux,它就會在根目錄下創建幾個文件夾,這些文件夾的名字是“root”、“home”、“dev”等等。路徑分別是“/root”、“/home”、“/dev”等。
眾所周知,存儲文件需要硬盤。Linux這波操作光搞了個目錄,但是與硬盤和分區沒有任何關系,那么這些文件夾和之后要寫入的文件存在哪里啊?這就引入了Linux下“掛載”的概念。
分區就是個文件夾!
在linux下,你可以像windows一樣創建分區,但是並不像windows一樣,創建完就給你顯示在“此電腦”中(默認是這樣的,也可以設置不顯示)。但是在Linux下,要想使用一個分區,必須先要掛載。
前面說過,Linux下的根目錄里是要存東西的,要想存東西,就要有硬盤。所以Linux的做法是:將根目錄下的某一部分(也有可能是全部)與分區建立對應關系。
打個比方,打開你的文件管理器,在里面的地址欄中輸入“/”,然后在空白區域右擊,選擇“屬性”。
然后你應該可以看到掛載點和掛載的分區。其中,分區並不像Windows那樣以盤符表示,而是一個文件。關於這個文件的意義,我們以后再說。
而這個掛載點就是根目錄“/”,也就是說,根目錄下的所有文件,都存在了這個分區里?
其實並不是這樣的,這個分區只是和根目錄建立了一個對應關系,並不代表根目錄中所有文件都存在了這個分區中。
再舉個例子,插上你的U盤,如果你用的是KDE、GNOME這樣的桌面環境,應該可以通過簡單的動動鼠標,進入這個U盤。
而這時,點擊文件管理器中的地址欄,你會得到一個路徑,就像這樣:
然后,在根目錄下,按照這個目錄,打開這個文件夾。
比如,我的是“/run/media/archer/7BD2-F1FA/”,於是我現在根目錄下找到“run”文件夾,打開,再找到“media”文件夾,打開,在找到並打開“archer”文件夾(我的用戶名),然后打開“7BD2-F1FA”文件夾。
然后,你就會發現:
這不就是我U盤里的東西嗎
在頁面的空白處,右擊,點擊“屬性”。“掛載點”那一欄寫的就是你剛才打開的文件夾的路徑,而“掛載自”一欄也是 /dev 目錄下的一個文件,sd**代表這是一個分區。
這時,你可能就會發現:
這個U盤(准確地說是這個分區)就是一個文件夾!!
沒錯,分區本身,在Linux下是一個在 /dev 目錄下的文件,你可以把它掛載到目錄樹的一個文件夾下,你才可以訪問這個分區中的文件。
這個實驗也表明了,Linux下的掛載點是可以嵌套的。你可以將任何一個分區掛載到任何一個目錄(除了根目錄必須作為一個掛載點掛載磁盤),這就為Linux的文件管理提供了無限的可能。比如說,我的Linux目錄樹是這樣的:
至於我為什么要把 /home 文件夾里的內容存到一個單獨的分區里,這個以后再說。
在Linux下如何查看我的分區情況
Linux下,有一個分區工具叫做 fdisk ,你可以以root用戶運行以下命令查看分區情況:
# fdisk -l
就像這樣:
其中"nvme"開頭的是NVMe協議的硬盤(一般是固態),而sd開頭的是通過SATA、SCSI、USB這些接口傳輸數據的存儲設備,loop開頭一般是光盤。