我的/home
分區已開啟/dev/sda1
。我的/
分區已開啟/dev/sda2
。
每當我在分區中建立檔案時,/home
它都會顯示在目錄/
下的分區中/home
。
Windows相當於在D盤建立一個文件,該文件在C盤也可見。
這怎麼可能 ?
答案1
如果您今天的檔案系統體驗是基於 Windows 或單磁碟/分割區系統,那麼您可能不習慣掛載點的概念。 (儘管 Windows 現在也支援在掛載路徑上掛載磁碟,但這並不像 Linux/Unix 中那麼常見)
Linux/Unix 中的檔案系統是一個嵌套的檔案層次結構。 (資料夾也是文件..)
你從 開始/
。一切的根源。就您而言,這是在分區上/dev/sda2
。隨著/home
on /dev/sda1
,你最終會得到
/
dev/
pts/
- (東西)
sys/
home/
rebecca/
txtfile.txt
bob/
等等(還有很多目錄,這只是一個例子)
/
因此,從->開始的路徑/home/rebecca/textfile.txt
應盡可能透明。因此,雖然看起來textfile.txt
位於/
分區中,但實際上並非如此。它在/home/
分區中。只是這樣那分區位於目錄mounted
中。/
/home
試試這三個指令:
df /
df /home/
df /home/rebecca/textfile.txt
<-- 使用檔案的真實路徑
該df
命令將顯示運行該命令時安裝在系統上的所有檔案系統(真實的和虛擬的)。正如我在上面的範例中所使用df
的那樣,可以過濾輸出,以便您一次檢查更少的內容。
長話短說- 這就是 Unix 和 Linux 掛載點的工作原理,使所有不同的磁碟一起顯示為一個內聚的檔案和目錄樹。
答案2
在 POSIX 檔案系統中,一切存在於檔案系統根目錄內的某個位置,位於/
.在您安裝在 的根分割區上/
,您有一個目錄/home
。該目錄(大概)被用作掛載點(即已安裝的檔案系統(例如分割區)所在的位置)用於home
分割區。在那裡創建的文件是在分割區中創建home
,其內容在該分割區的安裝點上可見。
儘管使內容/home
消失會引起問題,但如果您要:
# umount /home; mount /dev/sda1 /mnt; ls /mnt
你會看到什麼內容有曾經在/home
,現在可見於/mnt
。
實際上不要這樣做;這是一個示範性的思想實驗。
mount
在不給定任何參數的情況下,透過觀察命令的輸出,您可以看到在哪些安裝點安裝了哪些檔案系統的清單。
答案3
包含您自己的檔案的檔案系統(分割區)可以放置在檔案系統樹中的任何位置,檔案系統樹以/
.通常它放置在/home
並且其中有一個以您的用戶名命名的目錄。例如,您可能有/home/rebecca
.
基於 UNIX 的系統(包括基於 Linux 的系統)使用單一檔案系統 ( /
)。 Windows 系統使用多根檔案系統(C:
、D:
等)。
當您將檔案寫入某個位置時,通常不需要擔心它被寫入哪個分割區,只要有足夠的磁碟空間來儲存檔案的內容即可。