文件系统之FHS
文章目錄
- 1 什么是FHS
- 2 根目錄(/)的內容與意義
- 3 /usr 內容與意義
- 4 /var 的內容與意義
- 5 針對 FHS 各家發行版的一同,與CentOS 7的變化
1 什么是FHS
? 總所周知 Linux 是開源的,各個不同發行版本的社區、公司及個人實在是太多了,如果每個人都用自己的想法來配置文件放置的目錄,那么將造成各個系統不兼容的情況(如當初網絡協議各家私有,現在基本上統一TCP/IP),后來就有所謂的 Filesystem Hierarchy Standand 文件系統層級標準出爐。其主要目的是希望讓用戶可以了解到數據通常放置于哪個目錄下,也就是說,FHS 的重點在于規范每個特定的目錄下應該要 放置什么樣子的數據而已。
? FHS 依據文件系統使用的頻繁程度和是否允許用戶所以修改,將目錄定義成四種交互 作用的狀態:
- 可分享的(shareable):可以分享給其他系統掛載使用的目錄,所以包括執行文件與用戶的郵件等數據,是能夠分享給網絡上其他主機掛載用的目錄
- 不可分享的(unshareable):自己機器上面運行的設備文件或者是與程序有關的 socket 文件等,由于僅與自身機器有關,所以不適合分享給其他主機。
- 不變的(static):有些數據是不會經常變動的,只會隨著系統版本而變動。例如函數庫、說明文件、系統管理員所管理的主機服務配置文件等。
- 可變動的(variable):經常修改的數據,例如日志文件、一般用戶可自行接收的新聞組等。
| static | /usr (軟件放置處) | /etc (配置文件) |
| /opt (第三方輔助軟件) | /boot (啟動與內核文件) | |
| variable | /var/mail (用戶郵箱) | /var/run (程序相關) |
| /var/spool/news (新聞組) | /var/lock (程序相關) |
? 事實上 FHS 針對目錄樹架構僅定義出三層目錄下面應該放置什么數據而已,分別是下面這三個目錄的定義:
- /(root,根目錄):與系統啟動有關
- /usr(unix software resource):與軟件安裝、執行有關
- /var(variable):與系統運行過程有關
2 根目錄(/)的內容與意義
? 根目錄是整個系統最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來,同時根目錄也與啟動、還原、系統修復等操作有關
| /bin | 存放基本命令二進制文件。系統有很多存放執行文件的目錄,但/bin比較特殊。因為/bin 放置的是在單人維護模式下還能夠被使用的命令。在/bin 下面的命令可以被root 與一般賬號使用,主要有:cat、chmod、chown、date、mv、mkdir、cp等常用命令 |
| /boot | 存放引導加載成勛的靜態文件,包括LInux 內核文件以及啟動選項與啟動所需配置文件等。 |
| /dev | 存放設備文件。在Llinux中一切皆文件,任何設備與接口設備都是以文件的形式存在于這個目錄中。通過讀取這個目錄下面的某個文件,就等于讀寫某個設備,比較重要的文件有/dev/null、/dev/zero、/dev/tty等 |
| /etc | 存放系統主要的配置文件,如賬號密碼文件、各種服務的啟動文件等。一般來說這個目錄下的個文件是可以讓一般用戶看的,但只有root有權利修改。比較重要的文件有:/etc/passwd、/etc/shadow、/etc/fstab等 |
| /lib | 放置啟動時會用到的函數庫,以及在/bin、/sbin下面的命令會調用的函數庫 |
| /media | 放置可刪除的設備,包括軟盤、光盤、DVD等設備都暫時掛載于此(一般系統自動掛載的) |
| /mnt | 臨時掛載某些額外的設備可以放置到這個目錄中,一般用于手動掛載 |
| /opt | 給第三方輔助軟件放置的目錄,如KED桌面管理系統。在以前的Linux中還是習慣放在/usr/local下 |
| /run | 存放系統啟動后所產生的各種runtime信息 |
| /sbin | 啟動過程中所需要的,包括了啟動、修復、還原系統所需要的命令,如fdisk、fsck、ifconfig等。其他某些服務器軟件,一般放置在/usr/sbin,本機自行安裝軟件產生的系統執行文件則放置到/usr/local/sbin |
| /srv | srv可視為service的縮寫,是一些網絡服務啟動后,這些服務所需要使用的數據目錄,常見的如WWW、FTP等 |
| /tmp | 存放臨時文件或正在執行的程序暫時放置文件的地方 |
| /usr | 第二層 FHS |
| /var | 第二層 FHS |
| /home | 系統默認的用戶家目錄 |
| /lib | 用來存放于/lib不同格式的二進制函數庫,如/lib64 |
| /root | root用戶的家目錄 |
| /proc | 虛擬文件系統,數據都存放在內存中,如系統內核、進程信息、外接設備的狀態、網絡狀態等,比較重要的文件有:/proc/PID/、/proc/cupinfo、/proc/meminfo等 |
| /sys | 虛擬文件系統,主要也是記錄內核與系統硬件信息的相關內容,包括已加載的內核模塊與內核檢測到的硬件設備信息等 |
3 /usr 內容與意義
依據 FHS 的基本定義,/usr 里面放置的數據屬于可分享與不可變動,類似于 C:\Windows\+C:\Program Files\
| /usr/bin | 所有一般用戶能夠使用的命令都放在這里。目前CentOS 7 已將全部用戶命令放置于此,使用鏈接文件的方式將 /bin 鏈接至此。另外 FHS 要求在此目錄下不應該有子目錄 |
| /usr/lib | 基本上與 /lib 功能相同,所以 /lib 就是鏈接到此目錄的 |
| /usr/sbin | 最常見的就是某些網絡服務器軟件的服務命令。不過基本功能與 /sbin 差不多,因此目前 /sbin 就是鏈接到此目錄的 |
| /usr/local | 安裝自己下載的軟件建議安裝到此目錄,便于管理 |
| /usr/share | 主要放置只讀的數據文件,也包括共享文件,在這個目錄下放置的數據幾乎不分硬件架構,因為幾乎都是文本文件 |
4 /var 的內容與意義
/var 目錄主要針對經常性變動的文件,包括緩存、日志文件、某些軟件運行時產生的文件等,包括程序文件(鎖文件、運行文件),或如MySQL數據庫文件等
| /var/cache/ | 應用程序本身運行過程中會產生的一些緩存 |
| /var/lib/ | 程序本身執行過程中需要使用的數據文件放置的目錄。在此目錄下各自的軟件要有各自的目錄,如MySQL的數據庫放置到/var/lib/mysql/而rpm的數據庫放到/var/lib/rpm/中 |
| /var/lock/ | 放置資源鎖信息,目前此目錄已經挪到了/run/lock中 |
| /var/log/ | 日志文件放置的目錄,重要的文件有:/var/log/messages、/var/log/wtmp等 |
| /var/mail/ | 放置個人電子郵箱的目錄,不過這個目錄也被放置到/var/spool/mial/目錄中,通常這兩個目錄是互為鏈接文件 |
| /var/run/ | 某些程序或是服務啟動后,會將他們的PID放置在這個目錄下,與/run相同,這個目錄鏈接到/run目錄 |
| /var/spool/ | 這個目錄通常放置一些隊列數據,所謂隊列數據就是排隊等待其他程序使用的數據,使用后就會被刪除,如系統收到新郵件會防止到/var/spool/mail中 |
5 針對 FHS 各家發行版的一同,與CentOS 7的變化
? 由于 FHS 僅是定義出最上層(/)及次層(/usr與/var)的目錄內容應該要防止的文件或目錄數據,因此,在其他子目錄層級內,就可以隨開發者自行來配置。如CentOS的網絡設置數據放在/etc/sysconfig/network-scripts/ 目錄下,但 SUSE 則是將網絡放置在/etc/sysconfig/network/ 目錄下
? 此外,CentOS 7 在目錄的排列上與過去的版本不大相同,比較大的差異在于將許多原本應該在根目錄(/)里的目錄,將它的內容全部移到 /usr 里面去,然后進行鏈接(link)的設置:
- /bin –> /usr/bin
- /sbin –> /usr/sbin
- /lib –> /usr/lib
- /lib64 –> /usr/lib64
- /var/lock –> /run/lock
- /var/run –> /run
總結
- 上一篇: SCCM 2007 R2 setp by
- 下一篇: 中缀表达式转后缀、前缀表达式的方法