Linux文件系統
和windows的C盤D盤E盤的概念一樣,這個“文件系統”或者叫“組織體系”是軟件級別的,是linux系統“內在”的體系,就像你腦子裡的一個“想法”,並無需依賴於任何的實際一樣。
:idea: linux的系統組織方式是——整個系統從根開始,按樹形目錄依次向下逐漸擴大,分類存放不同用途的文件,/讀作“斜線”,英文slash;當其寫作一個路徑時,第一個/表示根,即root,其他的/表示路徑分割符,但都讀作“斜線”或“slash”。
OK,現在讓我們把“理想”變成“現實”吧!
:idea: 系統啟動時,首先有一個分區被掛載到了/,可以理解為該分區被分配了/這個奇怪“盤符”(注意,在windows裡,這個符號被用做命令參數引導符號,而反斜線\,英文backslash作為路徑分割符,習慣不同而已,就像英國行車靠左一樣,沒啥可奇怪的)。
這個被掛載為/的分區,就叫做根分區(不管它是主分區還是邏輯分區),它從此開始在整兒linux系統裡具有了特殊的地位,因為整兒電腦裡的所有硬盤,包括其上的所有其他分區,不管是主分區、邏輯分區,都將以這個“根分區”為主干,開始構造linux大樹,並最終成為這顆樹上的一個分支或樹葉。整個linux的系統結構裡,有且只有一個root(根分區),不可能有第二個(其實,任何一個分區,都可以掛載為/,windows分區也可以。只不過掛載根分區的目的是啟動系統,如果/下面沒有linux內核及其所需的系統文件的話,將無法引導系統而已。所以這個根分區並不神秘)。
:idea: 你的其他分區只能被繼續掛載到/(根分區)下的某個目錄裡,比如“/mnt”或者“/media”或者“/什麼什麼”目錄,看你喜歡喽。掛載好之後,當你向這個目錄讀寫數據的時候,其實是在向被掛載到該目錄的另一個分區讀寫數據。多個分區在同一個時候只能被掛載到多個不同的目錄,比如“/mnt/a”、“/media/123”或者“/home/anywhere”,任何一個處於/之下的目錄,都可以用來作為掛載其他分區的“平台”,當然系統需要的目錄可不要用哈,你自己新建你自己的用吧。
掛載好之後,你硬盤裡的數據,就可以通過類似/path/to/anywhere這樣的方式找到;如果沒有掛載就找不到喽。
用一個庸俗的比喻來說,“/”相當於c:\,而“/etc、/bin、/sbin、/lib”這些目錄大概相當於c:\windows和c:\program files,“/home”相當於c:\Documents and Settings,而當你把第二分區掛載到“/mnt/partition2”的時候,這個目錄就相當於d:\了
mount
mount 用於掛載一個文件系統,需要 root 用戶執行。一個磁盤可分為若干個分區,在分區上面可以創建文件系統,而掛載點則是提供一個訪問的入口,將一個分區的文件系統掛載到某個目錄中,稱這個目錄為掛載點,並且可以通過這個掛載點訪問該文件系統中的內容。
例如一塊硬盤在 Linux 中表示為 /dev/sda 那麼它上面的分區應該表示為 /dev/sda1 、/dev/sda2 。
# mount ### 輸出系統目前的掛載信息
# mount /dev/sda1 /mnt ### 將 sda1 掛載到 /mnt 中
# cd /mnt ### 直接通過 /mnt 訪問內容
# mount -o remount,rw /mnt ### 重新掛載 sda1 到 /mnt 並設置為 可讀寫
# mount -a ### 掛載 fstab 文件配置好的文件系統
umount
umount 與 mount 相反,是卸載一個掛載點,即取消該入口。
# umount /mnt ### 卸載 /mnt 這個掛載點的文件系統
# umount -a ### 卸載所有已掛載的文件系統