前言
FHS將文件根據不同的用途和特性分成了可共享的(shareable)和不可共享的(unshareable),可變的(variable)和靜態的(static)。不同的文件位于不同的目錄里面,將目錄分開了將有利于對文件的管理。
文件系統
-
可共享的
文件可以被存儲于某一個主機上,然后供其他主機使用。如果想訪問其他主機上可共享的文件,可以將其他主機目錄掛載到本地目錄。如:/usr,/opt等。
-
不可共享的
不可被共享的,如本地配置文件的。如:/boot,/etc等。
-
靜態的
如lib、bin目錄等,除了管理員賬戶外其他用戶都不能訪問的文件。靜態文件還可以為一些只讀設備上面的文件。如:/usr,/etc。
-
可變的
如/var目錄等,用戶可以修改的文件。如:/var等。
共享和靜態是兩個緯度的屬性,一個目錄可以分別具有兩種屬性,如/boot目錄,為不可共享的且靜態的,/urs為可共享的且靜態的。
FHS,Filesystem Hierarchy Standard(文件系統目錄標準)的縮寫,多數Linux版本采用這種文件組織形式。
根目錄
根目錄需要保證能引導系統啟動,且可以恢復、還原、修復系統。
引導啟動:根目錄存放了程序、配置、引導加載信息等一些必要的信息。
恢復系統:根目錄存放了一些診斷和修復程序信息。
還原系統:根目錄存放了可以通過備份還原系統的程序信息。
FHS
建議將根目錄分區設置得小一點。一方面根目錄經常通過比較小的設備安裝,沒必要太大。另一方面,根目錄存放的是系統內核和特定的配置等信息,通常根目錄是
不能共享的。較小的根目錄空間,可以服務器或工作證只需要比較小的本地空間即可。如果將根目錄設置成一個比較大的空間,有可能會出現一些跟根目錄較小的程
序不相容的情況。而且根目錄存放的是非常重要的文件和信息,較大的空間意味這更有可能出現根目錄磁盤損壞的可能。
目錄結構
如下的文件目錄或目錄連接是需要出現在根目錄(“/”)下的:
其中,要求存在的有如下目錄:
/
|—/bin
|—/boot
|—/dev
|—/etc
|—/lib
|—/media
|—/mnt
|—/opt
|—/sbin
|—/srv
|—/tmp
|—/usr
|—/var
可選擇的,而且FHS建議需要有的目錄有:
/
|—/home
|—/lib<qual>
|—/root
-
/boot : 靜態的引導加載程序
/boot目錄是啟動過程中非常重要的目。/boot 存放系統在引導過程中需要的所有數據。引導過程不需要的配置、映射程序等可以不在里面。/boo的數據在內核啟動用戶模式之前就會被用到。/boot 包含了磁盤的主引導程序和文件映射。
操作系統的內核必須在 / 或者 /root 里面。
-
/bin : 基礎的用戶命令二進制文件
/bin 包含了管理員和用戶都會用到的命令。/bin目錄下的命令被要求可以在不裝載其他文件系統的情況下(單用戶模式)使用。/bin目錄下同時還包含可以被其他腳本直接應用的命令。
在
/bin里面常見的必須有的命令有,權限管理(su、pwd、chmod),文件操作(cat、cp、mv、rm),目錄操作(ls、mkdir、
rmdir),進程管理(ps、kill)等。還有一些FHS建議需要的命令有網絡管理(netstat、ping)、文件壓縮(tar)等命令。
為了能兼容LinuxBourne Shell命令,在/bin/sh里面存放的命令實際上不是真正的二進制文件,而是指向了真正能執行的shell命令的鏈接。
-
/sbin : 系統文件
/sbin 目錄存放了供系統管理員使用的命令或工具。/sbin 包含了供系統引導啟動、修復、還原的文件。
為了更好的管理命令供某些特定的人使用還是給普通用戶使用,同時也是為了做好權限管理和系統安裝,劃分了/bin 和 /sbin 兩個目錄。一般情況下,如果普通用戶都會用到的指令就會放到 /bin 下面。除非特定的用戶或用戶組,不然禁止使用 /sbin下的指令。
-
/lib : 基礎共享庫函數和內核模塊
/lib 目錄存放了在引導啟動以及執行root命令需要的二進制文件。
-
/lib<qual> : 用戶替換的基礎庫函數
/lib<qual> 為 /lib 目錄下的一種或多種格式,用于支持多種文件格式(32位或64位)的庫函數。
一般情況下/lib<qual> 目錄會被命名為 /lib32 或 /lib64 。
-
/dev : 設備文件
/dev 目錄存放了設備文件。
-
/etc : 基于主機的系統配置
/etc 目錄存放配置文件。/etc 存放的配置文件指的是本地的配置。/etc 存放的是可以控制程序的運行配置,不允許在/etc 目錄下存放可執行的文件。
-
/opt : 附加程序的軟件包
/opt
安裝附加程序的軟件包的目錄。軟件包安裝到/opt
下時,靜態文件都被放到/opt/<package>(package為軟件的名稱)目錄下。/opt的幾個子目錄/opt/bin,
/opt/doc, /opt/include, /opt/info, /opt/lib,
/opt/man是預留給本地管理員使用的。/opt底下的軟件如果有變量則安裝在/var/opt里面,如果有配置則安裝在/etc/opt 里面。
-
/root : root用戶的home目錄
/root 目錄是root賬戶的home目錄,一般情況下不建議除了管理員賬戶之外的其他用戶訪問和使用。
-
/home : 用戶目錄
/home是基于站點的文件系統,根據不同站點內容可能不一樣。因此,程序設計的時候不要依賴于/home目錄的存儲位置。
例如小系統可能在/home目錄底下會根據用戶劃分子目錄,如/home/jack、/home/tom等。大型一點的服務器系統,在/home 目錄底下會先劃分用戶組在劃分用戶子目錄,如/home/guest/jack等。
-
/usr : 系統軟件資源
usr為Unix Software Resource的縮寫,存放了系統的軟件資源。管理員安裝的軟件主要存放在/usr目錄下。所以/usr 是一個占用空間比較大的目錄。
/usr 為一個可共享、只讀的文件夾,也就是說在兩個符合FHS標準的主機間,/usr可以被共享,但是不能被寫入信息。所以基于本機的數據不允許放在/usr底下,同時/usr盡量不要存放較大的文件。
/usr下有幾個子目錄比較重要:
/usr/bin:多數用戶命令
/usr/lib:軟件或程序的庫文件
/usr/sbin: 不太重要的系統指令
-
/var : 動態文件目錄
/var 存放了動態數據,如系統緩存、日志文件、臨時文件等。
-
/srv : 本系統為網絡服務提供的數據
/srv 包含了本系統為網絡服務提供的數據。/srv 目錄方便用戶通過網絡查找并范圍本地的數據,同時也為本地數據能根據只讀、可寫、腳本等劃分不同的目錄。
目前為止,/srv 目錄下的子目錄沒有標準,如可以通過協議命名 /srv/www,/srv/ftp,如果是大型服務器,也可以根據業務內心劃分,如/srv/physics/www等。所以程序在運行的過程中,不能依賴于/srv的目錄結構。
-
/media : 移動裝置掛載點
/media作為移動裝置的掛載點(如軟盤、CD roms等)。有時候也會以/mnt、/cdrom等目錄作為裝置的掛載點,如果全部掛載到根目錄 / 下,會導致根目錄存在大量的移動裝置子目錄了。有時候也會將/mnt 作為移動裝置的臨時掛載點。
常見的目錄有/media/cdrom,/media/floppy 等。
-
/mnt : 臨時掛載目錄的掛載點
/mnt 目錄作可以在管理員需要的時候作為臨時的掛載點。 /mnt 不能被需要安裝的程序所用。
-
/tmp : 臨時文件目錄 /
/tmp 作為程序在運行過程中臨時文件的地方,運行程序不要串改了其他程序的文件。
/tmp 重啟后可能會被系統清除掉,所以要重要的信息要保存到其他地方。
原創文章,作者:Zero,如若轉載,請注明出處:http://www.www58058.com/52024