Linux的文件系統架構基礎

前言

    當今計算機操作系統來說常見功能主要有:進程調度、內存管理、文件系統管理、網絡協議棧支持、驅動程序管理、安全功能等。所有對于我們來講學習Linux文件系統也是一個十分重要的知識,也是學習Linux的必備基礎知識,學習好Linux的文件系統知識也是為接下來學習Linux的其他知識奠定良好的基礎

關鍵詞

    Linux的哲學思想、Linux的文件和目錄、根文件系統、目錄樹、FHS、絕對路徑與相對路徑、工作目錄、家目錄

Linux的哲學思想

    1.一切皆文件(硬件設備亦表現為文件)

    2.由眾多目的單一的小程序組成;一個程序只做一件事,并且要做好

    3.組合小程序完成復雜任務

    4.盡可能避免跟用戶交互,方便了腳本編程實現自動化運維

    5.使用文本文件保存程序的配置信息,好處是使用一個文本編輯器即可完成系統及服務配置工作

根文件系統

     文件系統是對一個存儲設備上的數據和元數據進行組織的進制。根文件系統首先也是一種文件系統,相較于普通的文件系統而言它的特殊之處在于,它是內核啟動時所掛載的第一個文件系統,內核代碼的映像文件保存在根文件系統中,系統引導啟動程序會在根文件系統掛載之后從中把一些初始化腳本和服務加載到內存中去運行。根目錄是整個文件系統最重要的一個目錄,所有的目錄都是由根目錄衍生出來的,同時根目錄也與開機/還原/系統修復等動作有關。借鑒了Unix的思想理念,Linux文件系統管理也是采用根文件系統。

Linux的文件系統結構和目錄

 1.Linux文件系統

     Linux由于采用了根文件系統,所以所有其他的目錄和文件都是在根之下,根是處于最頂級的位置,由根衍生出文件系統的各種目錄和文件。這就好像一棵倒置的樹,由樹的根開始開出各種分叉,分叉下又有子分叉,到最后是樹的葉子;樹的分叉就是根下的目錄或子目錄,而葉子則就是具體的文件了,也叫葉子結點

 2.Linux的目錄樹

    Linux底下,所有的文件與目錄都是由根目錄開始的,它是所有目錄與文件的源頭,然后再一個一個的分支下來,跟樹的樹狀類似,因此也稱這種目錄配置方式為目錄樹

    一個目錄對于上層的父目錄來說它也是父目錄下的一個文件,同時該目錄下可以有子目錄或文件,所以也可以這樣說:一個目錄就是一個名稱空間

    在同一個名稱空間內不能有兩個相同名稱的文件,在不同名稱空間內則可以存在兩個名稱相同的文件。

3.絕對路徑與相對路徑

    由于所有的目錄和文件都是由根開始的,當我們要表示一個文件時,由某一個點開始到指定文件位置的經過就叫路徑。Linux中的路徑表示法有絕對路徑和相對路徑。

    絕對路徑:由根目錄(/)這個頂級名稱空間起始到目標位置的文件名或目錄名稱的路徑,例如 /home/magedu/.bashc;

    相對路徑:從非頂級空間,由相對于當前位置起始到目標位置的路徑,例如 ./home/magedu 或者 ../..  ../home 等等,可以這么說路徑開頭不是(/)的就是相對路徑的寫法。

     特殊目錄表示方法

    . : 代表當前目錄

    .. : 代表當前目錄的上一層目錄(父目錄,例如:

blob.png

 blob.png

Linux目錄配置的依據FHS:文件系統層級結構標準

    由于Linux開源軟件的特點,利用Linux來開發產品或發布distributions的發行商公司或社群、個人有很多,如果每個人都用自己的想法來組織Linux文件系統結構,則Linux的學習和實際生產環境使用管理可能會造成很多管理上的困擾,所以就有了FHS標準的出爐了

    FHS依據文件系統使用的頻繁與否與是否允許使用者隨意更改,而將目錄定義成為四種交互作用的形態,如下圖所示

blob.png

    可分享就是能夠分享給網絡上的其他主機掛載使用的目錄;不可分享如主機上的配置文件,由于僅與本機自身有關不適合分享給其他主機;不變的如函數庫、說明文件、系統管理員所管理的主機服務配置文件等;可變動的就是經常改變的數據,如登錄文件等

Linux文件結構標準

一般來說由根開始默認Linux有以下幾個目錄,如下圖:

blob.png

目錄的詳細介紹:

   1. /bin 系統放置執行文件的目錄,在/bin底下的命令可以被root與普通管理員等所有用戶使用

blob.png

   2. /sbin 只有管理員才可以使用的管理命令的存放路徑,Linux有非常多的命令是用來設定系統環境的,這些命令只有root才能夠使用,其他用戶最多只能查詢

   /bin/sbin包含了系統自身啟動和運行時可能會用到的核心二進制命令。

blob.png

   3. /lib 共享庫文件和內核模塊的存放目錄,放置的是在開機時會用到的函數庫和內核核心相關的模塊(如驅動程序)等

   4. /lib64 只在64位系統上有,類似于/lib

blob.png

   5. /etc  存放的是系統和程序的配置文件,系統主要的配置文件幾乎都放置在這個目錄內,一般來說,這個目錄下的各文件的屬性是可以讓一般使用者查詢的,但是只有root有權限修改

blob.png

   6. /usr :Unix Software Resources  unix操作系統軟件資源的縮寫),所有系統默認的軟件(發行商提供的軟件)都會放置在該目錄下,這個目錄有點類似于windows系統的“C:\Windows”和“C:\Program Files”這兩個目錄的綜合體,系統剛安裝完畢時這個目錄會占用最多的硬盤容量;里面的文件不和特定的用戶相關,也不會在正常使用中修改,可以通過網絡共享這個目錄,這樣當管理員在這個目錄下安裝了新的軟件后,所有共享這個目錄的計算機均可以使用該新軟件

      /usr/bin 絕大部分用戶可使用的命令都放在這里,它與/bin的不同之處在于是否與開機過程有關

      /usr/sbin 放置非系統正常動作所需要的核心系統命令

      /usr/lib/usr/lib64 用戶使用的和非核心系統命令所依賴的庫文件存放路徑

      /usr/share 放置共享文件的地方,該目錄下的數據不分硬件架構均可讀取的數據,常見的有/usr/share/man,/usr/share/doc 程序的幫助文件目錄

blob.png

   7. /dev  device的簡寫,在Linux系統上任何裝置與接口設備都是以文件的形態存在于這個目錄中的,設備文件通常也稱為特殊文件,僅有元數據而沒有數據的,僅僅做為某個設備的訪問入口用于標識一個設備使用的

blob.png

   8. /proc 偽文件系統,該目錄本身是一個虛擬文件系統;是系統內存的映射存放的數據都是在內存當中,可直接通過訪問這個目錄來獲取當前系統的相關信息;如系統核心、進程信息、網絡狀態等,該目錄本身不占任何硬盤空間。

blob.png

   9. /sys 該目錄與/proc非常類似也是一個虛擬文件系統,主要包括目前已加載的核心模塊和內核所識別到的硬件設備信息等

blob.png

   10. /boot 該目錄放置開機系統啟動引導時會使用到的文件,包括內核和ramdiskCentOS 5:initrd,CentOS 6initramfs),grubbootloader 引導加載器)等

blob.png

   11. /mnt 用來臨時掛載某些額外的設備,這個目錄的用途與/media相同,只是有了/media之后,這個目錄就用來作為臨時掛載使用了

   12. /media 放置的是可移動或便攜的裝置,例如軟盤、光盤、DVD

   13. /tmp 用戶臨時文件存放位置,讓一般用戶或者是正在執行的程序暫時存放文件的目錄,這個目錄是任何人都能夠訪問存取的,重要數據不可放置在此目錄。

blob.png

   14. /srv  service的縮寫,當前系統上一些服務啟動之后所用到的數據存放的目錄,例如WWW服務所需要的網頁資料就可以放置在/srv/www 里面

   15. /opt 第三方應用程序的安裝目錄為早期Linux版本使用,現在第三方應用程序的安裝目錄為/usr/local

   16. /var variable的縮寫,就是在系統運行后才會逐漸占用硬盤容量的目錄,主要放置一些經常變動的文件以及某些軟件運行時產生的臨時文件等,常見的交目錄有:/var/cache/var/lib,/var/log/var/mail,/var/spool

blob.png

   17. /misc 備用目錄,放置雜項不便歸檔分類的文件

   18. /selinux Security Enhanced Linux 安全加強的Linux功能相關的文件存放目錄

blob.png

   19. /lost+found 這個目錄在使用ext2/ext3文件系統格式才會產生的一個目錄,用于在當文件系統發生錯誤時,將一些遺失的片段放置到這個目錄下,一般位置磁盤分區的根目錄下

 

需要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載,因此根目錄下與開機過程有關的目錄,就不能夠與根目錄放到不同的磁盤分區中去,有以下5個目錄:

/etc  /bin  /dev  /lib  /sbin

工作目錄、家目錄概念

       由于Linux一切皆文件的哲學思想,當用于登錄系統后每時每刻都是處在一個目錄中的,而用戶當前所處的目錄就稱為工作目錄(working directory),又稱為當前目錄(current directory),在任何時候命令行模式下可以通過命令pwd 顯示當前所處的工作目錄

blob.png

     家目錄:用戶登錄系統后默認所處的目錄,而root和普通用戶家目錄有所不同,root管理員的家目錄為/root,而普通用戶的家目錄則是在/home目錄下,以當前用戶名稱命令的一個目錄,如普通用戶test的家目錄就是/home/test這個目錄。

blob.png

 

總結:

    要深刻理解Linux的哲學思想;理解根文件系統、Linux層次化結構的文件系統;了解FHS和Linux標準的文件結構下常見的目錄

原創文章,作者:廈門-仗劍,如若轉載,請注明出處:http://www.www58058.com/3223

(0)
廈門-仗劍廈門-仗劍
上一篇 2015-04-16
下一篇 2015-04-16

相關推薦

  • linux文件管理類命令匯總及幾個通配的查找事例

    linux文件管理類命令匯總 1.文本文件查看類命令:cat,tac,more,less,tail,head cat(tac): 正向(反向)顯示 cat [OPTION]… [FILE]…                -E:顯示行結束符$ -n:對顯示出的每一行進行編…

    Linux干貨 2016-09-24
  • N21沉舟15周作業

    1、總結sed和awk的詳細用法; 2、刪除/boot/grub/grub.conf文件中所有行的行首的空白字符; #  sed 's@^[[:space:]]@@' /boot/grub/grub.conf 3、刪除/etc/fstab文件中所有以#開頭,后跟至少一個空白字符的行的行首的#和空白字…

    Linux干貨 2016-11-14
  • 馬哥教育網絡班21期+第五周課程練習

    第五周作業 1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; cat /boot/grub/grub.conf  | grep "^[[:space:]]\+" 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至…

    Linux干貨 2016-10-17
  • sed講解與使用

            sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理…

    Linux干貨 2016-08-15
  • 系統用戶基本信息

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 who | cut -d" " -f1 | sort -u who | cut -d" " -f1 | uniq 2、取出最后登錄到當前系統的用戶的相關信息。 who | tail -1 3、取出當前系統上被用戶當作其默認she…

    Linux干貨 2016-11-20
  • 根DNS域名解析的實現

    一、實現從根,com,rj.com 模擬互聯網的DNS架構 DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。 接下來就一起開始搭建吧 首先,我們需要計劃好實驗環境,包括實驗的步驟思路 1)實驗環境(最好是畫圖展示,能使思路清…

    2017-04-25

評論列表(1條)

  • stanley
    stanley 2015-04-16 22:53

    不錯不錯,有圖有文,有主有次,很有文檔功底,贊。另外,關鍵詞寫到標簽可以增加搜索命中率

欧美性久久久久