Linux文件系統介紹

一、簡介

文件系統就是分區或磁盤上的所有文件的邏輯集合。 
文件系統不僅包含著文件中的數據而且還有文件系統的結構,所有Linux 用戶和程序看到的文件、目錄、軟連接及文件保護信息等都存儲在其中。 
不同Linux發行版本之間的文件系統差別很少,主要表現在系統管理的特色工具以及軟件包管理方式的不同,文件目錄結構基本上都是一樣的。

文件系統有多種類型

  • ext2 : 早期linux中常用的文件系統;
  • ext3 : ext2的升級版,帶日志功能;
  • RAMFS : 內存文件系統,速度很快;
  • iso9660:光盤或光盤鏡像;
  • NFS : 網絡文件系統,由SUN發明,主要用於遠程文件共享;
  • MS-DOS : MS-DOS文件系統;
  • FAT : Windows XP 操作系統采用的文件系統;
  • NTFS : Windows NT/XP 操作系統采用的文件系統。

二、分區與目錄

文件系統位於磁盤分區中;一個硬盤可以有多個分區,也可以隻有一個分區;一個分區隻能包含一個文件系統。 
Linux文件系統與Windows有較大的差別。Windows的文件結構是多個並列的樹狀結構,最頂部的是不同的磁盤(分區),如 C、D、E、F等。Linux的文件結構是單個的樹狀結構,根目錄是“/”其他目錄都要位於根目錄下。 
每次安裝系統的時候我們都會進行分區,

Linux下磁盤分區和目錄的關系

  • 任何一個分區都必須對應到某個目錄上,才能進行讀寫操作,稱為“掛載”。
  • 被掛載的目錄可以是根目錄,也可以是其他二級、三級目錄,任何目錄都可以是掛載點。
  • 目錄是邏輯上的區分。分區是物理上的區分。
  • 根目錄是所有Linux的文件和目錄所在的地方,需要掛載上一個磁盤分區。

下圖是常見的目錄和分區的對應關系:

為什麼要分區,如何分區?

  • 可以把不同資料,分別放入不同分區中管理,降低風險。
  • 大硬盤搜索范圍大,效率低。
  • /home、/var、/usr、/local 經常是單獨分區,因為經常會操作,容易產生碎片。

為瞭便於定位和查找,Linux中的每個目錄一般都存放特定類型的文件,

各種Linux發行版本的常見目錄

  • / : 根目錄,隻能包含目錄,不能包含具體文件。
  • /bin: bin是Binary的縮寫,存放可執行文件。很多命令就對應/bin目錄下的某個程序,例如 ls、cp、mkdir。/bin目錄對所有用戶有效。
  • /dev: dev是Device(設備)的縮寫,硬件驅動程序。例如聲卡、磁盤驅動等,還有如 /dev/null、/dev/console、/dev/zero、/dev/full 等文件。
  • /etc: 主要包含系統管理所需要的配置文件和用戶、用戶組配置文件。
  • /lib: 主要包含共享庫文件,類似於Windows下的DLL;有時也會包含內核相關文件。
  • /boot: 系統啟動文件,例如Linux內核、引導程序等。
  • /home: 用戶工作目錄(主目錄),每個用戶都會分配一個目錄。
  • /mnt: 臨時掛載文件系統。這個目錄一般是用於存放掛載儲存設備的掛載目錄的,例如掛載CD-ROM的/mnt/cdrom目錄,然後進入該目錄就可以查看光驅裡的內容瞭。
  • /proc:這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。這個目錄的內容不在硬盤上而是在內存裡,我們也可以直接修改裡面的某些文件。
  • /tmp: 臨時文件目錄,系統重啟後不會被保存。
  • /lost+found:這個目錄一般情況下是空的,當系統非法關機後,這裡就存放瞭一些文件。
  • /run:是一個臨時文件系統,存儲系統啟動以來的信息。當系統重啟時,這個目錄下的文件應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。
  • /usr: 這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似於windows下的program files目錄。user目下的文件比較混雜,包含瞭管理命令、共享文件、庫文件等,可以被很多用戶使用。
    • /usr/bin:系統用戶使用的應用程序。

    • /usr/sbin:超級用戶使用的比較高級的管理程序和系統守護程序。

    • /usr/src:內核源代碼默認的放置目錄。

  • /var: 這個目錄中存放著在不斷擴充著的東西,主要包含一些可變長度的文件,會經常對數據進行讀寫,例如日志文件和打印隊列裡的文件。
  • /sbin: s就是Super User的意思,和 /bin 類似,主要包含可執行文件,不過一般是系統管理所需要的,不是所有用戶都需要。
  • /media:linux系統會自動識別一些設備,例如U盤、光驅等等,當識別後,linux會把識別的設備掛載到這個目錄下。
  • /opt: 這是給主機額外安裝軟件所擺放的目錄。比如你安裝一個ORACLE數據庫則就可以放到這個目錄下。默認是空的。
  • /root:該目錄為系統管理員,也稱作超級權限者的用戶主目錄。
  • /srv: 該目錄存放一些服務啟動之後需要提取的數據。

在 Linux 系統中,有幾個目錄是比較重要的,平時需要註意不要誤刪除或者隨意更改內部文件。

  • /etc: 上邊也提到瞭,這個是系統中的配置文件,如果你更改瞭該目錄下的某個文件可能會導致系統不能啟動。
  • /bin, /sbin, /usr/bin, /usr/sbin: 這是系統預設的執行文件的放置目錄,比如 ls 就是在/bin/ls 目錄下的。 
    值得提出的是,/bin, /usr/bin 是給系統用戶使用的指令(除root外的通用戶),而/sbin, /usr/sbin 則是給root使用的指令。
  • /var: 這是一個非常重要的目錄,系統上跑瞭很多程序,那麼每個程序都會有相應的日志產生,而這些日志就被記錄到這個目錄下,具體在/var/log 目錄下,另外mail的預設放置也是在這裡。

三、常用文件管理命令

你可以通過下面的命令來管理文件:

  • cat filename 查看文件內容。
  • cd dirname 改變所在目錄。
  • cp file1 file2 復制文件或目錄。
  • file filename 查看文件類型(binary, text, etc)。
  • find filename dir 搜索文件或目錄。
  • head filename 顯示文件的開頭,與tail命令相對。
  • less filename 查看文件的全部內容,可以分頁顯示,比more命令要強大。
  • ls dirname 遍歷目錄下的文件或目錄。
  • mkdir dirname 創建目錄。
  • more filename 查看文件的全部內容,可以分頁顯示。
  • mv file1 file2 移動文件或重命名。
  • pwd: 顯示用戶當前所在目錄。
  • rm filename 刪除文件。
  • rmdir dirname 刪除目錄。
  • tail filename 顯示文件的結尾,與head命令相對。
  • touch filename 文件不存在時創建一個空文件,存在時修改文件時間戳。
  • whereis filename 查看文件所在位置。
  • which filename 如果文件在環境變量PATH中有定義,那麼顯示文件位置。

四、用戶和群組配額

用戶和群組配額可以讓管理員為每個用戶或群組分配固定的磁盤空間。 
管理員有兩種方式來分配磁盤空間:

  • 軟限制:如果用戶超過指定的空間,會有一個寬限期,等待用戶釋放空間。
  • 硬限制:沒有寬限期,超出指定空間立即禁止操作。

下面的命令可以用來管理配額:

  • quota: 顯示磁盤使用情況以及每個用戶組的配額。
  • edquota: 編輯用戶和群組的配額。
  • quotacheck: 查看文件系統的磁盤使用情況,創建、檢查並修復配額文件。
  • setquota: 設置配額。
  • quotaon: 開啟用戶或群組的配額功能。
  • quotaoff: 關閉用戶或群組的配額功能。
  • repquota: 打印指定文件系統的配額。

到此這篇關於Linux文件系統的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: