CentOS7目錄配置

CentOS7目錄配置

  Linux系統有很多種,但他們的目錄結構卻是大同小異,主要原因是他們都遵循着FHS(Filesystem Hierarchy Standard)標準。FHS重點在於規範每個特定的目錄下應該防止什麼樣子的數據。FHS針對目錄樹架構,定義出三層目錄底下應該放置什麼數據:
- /(root,根目錄):與開機系統有關;
- /usr(unix software resource):與軟件安裝/執行有關;
- /var(variable):與系統運作過程有關。

根目錄(/)的意義與內容

  根目錄是整個系統最重要的一個目錄,所有的目錄都是由根目錄衍生出來的,同時根目錄也與開機/還原/系統修復等動作有關。由於系統開機時需要特定的開機軟件、核心文件、開機所需程序、函數庫等文件數據,若系統出現錯誤,根目錄也必須要包含有能夠修復文件系統的程序才行。因爲根目錄這麼重要,所以FHS方面希望根目錄不要放在非常大的分區槽內,因爲分區槽越大放入的數據越多,如此一來根目錄所在的分區槽就可能會有較多發生錯誤的機會。因此FHS標準建議:根目錄(/)所在分區槽應該越小越好,且應用程序所安裝的軟件最好不要與根目錄放在同一個分區槽內,保持根目錄越小越好。如此不但效能較佳,根目錄所在的文件系統也不容易發生問題
  有鑑於上述的說明,FHS定義出根目錄(/)底下應該要有底下這些此目錄的存在,即使沒有實體目錄,FHS也希望至少有連結檔(軟鏈接和硬鏈接)存在。

FHS要求必須存在的目錄

目錄 應放置文件內容
/bin 系統有很多放置執行文件的目錄,但/bin比較特殊。因爲/bin放置的是在單人維護模式下還能夠被操作的指令。在/bin底下的指令可以被root和一般的賬號所使用,主要有:catchmodchowndatemvmkdircpbash等常用的指令。
/boot 這個目錄主要放置開機時會使用到的文件,包括Linux核心文件以及開機所需配置文件等等。Linux kernel常用的目錄名爲vmlinuz,如果使用的是grub2這個開機管理程序,則還會存在/boot/grub2這個目錄。
/dev 在Linux系統中,任何裝置與接口設備都以文件的形式存在於這個目錄中。你通過存取這個目錄下的某個文件,就相當於存取某個裝置,比較重要的文件有/dev/null/dev/zero/dev/tty/dev/loop*dev/sd*
/etc 系統的主要配置文件幾乎都在這個目錄內,如用戶的賬號密碼文件、各種服務的啓始檔等等。一般來說,這個目錄下的各文件屬性是可以讓普通賬號查看的,但只有root有修改權限,FHS建議不要放置可執行文件(binary)在這個目錄中。比較重要的文件有:/etc/modprobe.d//etc/passwd/etc/fstab/etc/issue等等。另外,FHS還規範幾個重要的目錄最好放在/etc/目錄下:①/etc/opt(必要):這個目錄放置第三方協力軟件/opt的相關配置文件。②/etc/X11/(建議):與X Window有關的各種配置文件都在這裏,尤其是xorg.conf這個X Server的配置文件。③/etc/sgml/(建議):與SGML格式有關的各項配置文件。④/etc/xml/(建議):與XML格式有關的各項配置文件
/lib 系統的函式庫非常多,/lib放置的是開機時會用到的函式庫,以及在/bin/sbin底下的指令會呼叫的函式庫。什麼叫函式庫?你可以將他想成外掛,一些指令必須要有這些外掛才能夠順利完成程序的執行。另外,FHS還要求必須存在下面的目錄:/lib/modules/:這個目錄主要放置可抽換式的核心相關模塊(驅動程序)
/media media是媒體的意思,顧名思義,/media底下放置的就是可移除的裝置,包括軟盤、光盤、DVD等裝置都暫時掛載在此,常見的檔名有:/media/floppy/media/cdrom等等
/mnt 如果想要暫時掛載某些額外的裝置,一般建議你可以放置在這個目錄中。早期,這個目錄的作用於/media相同,後來有了/media,這個目錄就用來暫時掛載用了
/opt 這個是給第三方協力軟件放置的目錄。什麼是第三方協力軟件?舉例來說,KDE這個桌面管理系統是一個獨立的計劃,不過他可以安裝到Linux中,一次KDE的軟件就建議放在此目錄下。另外,如果你想要自行安裝額外的軟件(非原本的distribution提供的),那麼也可以將軟件安裝到這裏。不過,以前的Linux系統中,我們習慣把軟件放在/usr/local目錄下
/run 早期的FHS規定系統開機後所產生的各項信息應該放在/var/run目錄下,新版的FHS則規範到/run下。由於/run可以使用內存來仿真,因此效能上會好很多。
/sbin Linux有非常多的指令是用來設定系統環境的,這些指令只有root能夠用來設定系統,其他用戶最多隻能用來查詢放在/sbin下的爲開機過程中所需要的,包括開機、修復、還原系統所需要的指令。至於某些服務器軟件程序,一般放置到/usr/sbin/中。至於本機自行安裝的軟件所產生的系統執行文件(system binary),則放置到/usr/local/sbin/中,常見的指令包括:fdiskfsckifconfigmkfs等。
/srv srv可以視爲service的縮寫,是一些網絡服務啓動後,這些服務所需要取用的數據目錄。常見的服務如wwwftp等。舉例來說,www服務器需要的網頁資料就放在/srv/www裏面。不過,系統的服務數據如果尚未要提供給因特網任何人瀏覽的話,預設還是建議放置到/var/lib底下即可。
/tmp 這是讓一般用戶或者正在執行的程序暫時存放文件的地方。這個目錄是任何用戶都能夠存取的,所以需要定期清理一下。當然,重要數據不能放在此目錄中。因爲FHS甚至建議在開機時,應該要將/tmp中的數據都刪掉。
/usr 第二層FHS設定,後續介紹
/var 第二層FHS設定,主要放置變動性的數據,後續介紹

FHS建議可以存在的目錄

目錄 應放置文件內容
/home 系統默認的用戶家目錄(home directory)。在你新增一個普通賬號時,默認會在該目錄下生成一個用戶目錄。家目錄有兩種表示符號:①~:代表目前這個用戶的家目錄,②~username:代表username的家目錄。
/lib64 用來存放於/lib不同格式的二進制函式庫,支持64位的函式庫
/root 系統管理員的家目錄。之所以放在這裏,是因爲如果進入單人維護模式而僅掛載根目錄時,該目錄就能夠擁有root的家目錄

根目錄下的一些常見目錄

  FHS對根目錄定義的標準就只有以上那些目錄,不過以下的目錄平時在根目錄下也是常見的。

目錄 應放置文件內容
/lost+found 這個目錄是使用標準的ext2/ext3/ext4文件系統格式纔會產生的一個目錄,目的在於當文件系統發生錯誤時,將一些遺失的片段放置到這個目錄下。如果使用xfs文件系統,是不會存在這個目錄的。
/proc 這個目錄本身是一個虛擬文件系統(virtual filesystem)。他放置的數據都是在內存中,例如系統核心、進程信息(process)、周邊裝置的狀態和網絡狀態等。因爲這個目錄下的數據都是在內存當中,所以本身不佔任何硬盤空間。比較重要的文件有:/proc/cupinfo/proc/dma/proc/interrupts/proc/ioports/proc/net/*等等
/sys 這個目錄和/proc類似、也是一個虛擬的文件系統,主要記錄核心與系統硬件較相關的信息,包括目前已加載的核心模塊與核心偵測到的硬件裝置信息等。這個目錄同樣不佔用硬盤空間。

/usr的意義與內容

  依據FHS的定義,/usr裏面放置的數據是可分享和不可變動的(shareable,static)。usrUnix Software Resource的縮寫,是Unix操作系統軟件資源放置的目錄,不是用戶的數據。FHS建議所有軟件開發者,應該將他們的數據合理的放置到這個目錄下的次目錄,不要自行建立軟件獨立的目錄。所有系統默認的軟件(distribution發佈這提供的軟件)都會放置到/usr下,因此這個目錄有點像Windows系統的C:\Windows\部分目錄+C:\Program files的綜合體,系統剛安裝完畢,這個目錄會佔用最多的硬盤容量。

FHS要求必須存在的目錄

目錄 應放置文件內容
/usr/bin/ 所有一般用戶能夠使用的指令都在這個目錄下。目前CentOS7已經將所有的用戶指令都放置於此,並且使用連結檔的方式將/bin連接至此。也就是說,/usr/bin與/bin是一模一樣的。另外,FHS要求在此目錄下不應該有子目錄。
/usr/lib/ 基本上與/lib的功能相同,所以/lib是鏈接到此目錄的。
/usr/local/ 系統管理員在本機自行安裝自己下載的軟件(非distribution默認提供),建議安裝到此目錄,這樣會比較利於管理。舉例來說,你的distribution提供的軟件較舊,你想安裝較新的軟件但又不想移除舊版,此時你可以將新版軟件安裝到/usr/local/目錄下,與原先的舊版軟件區分開。進入/usr/local查看,可以發現該目錄下有binetcincludelib等目錄。
/usr/sbin/ 非系統正常運行所需的系統指令。最常見的就是默寫網絡服務器軟件的服務指令(daemon)。不過基本功能和/sbin差不多,所以目前/sbin就是鏈接到此目錄的。
/usr/share/ 主要放置只讀架構的數據文件,包括共享文件。在這個目錄下放置的數據幾乎是部分硬件架構均可讀取的數據,因爲幾乎都是文本文件。此目錄下常見的此目錄有以下這些:①/usr/share/man:聯機幫助文件;②/usr/share/doc:軟件雜項的文件說明;③/usr/share/zoneinfo:與時區有關的時區文件。

FHS建議可以存在的目錄

目錄 應放置文件內容
/usr/games/ 放置與遊戲比較相關的數據
/usr/include/ c/c++等程序語言的檔頭(header)與包含檔(include)放置處,當我們以tarball方式(*.tar.gz的方式安裝軟件)安裝某些數據時,會使用到裏面的許多包含檔。
/usr/libexec/ 某些不被一般使用者慣用的執行檔或腳本(script)等等,都會放在此目錄中。例如大部分X窗口底下的操作指令,很多都是放在此目錄下。
/usr/lib64/ /lib64功能相同,/lib64就是鏈接到此目錄。
/usr/src/ 一般原始碼建議放置到這裏,src有source的意思。至於核心原始碼則建議放置到/usr/src/linux/目錄下

/var的意義與內容

  如果/usr是系統安裝時會佔用較大硬盤容量的目錄,那麼/var就是在系統運行後纔會漸漸佔用硬盤容量的目錄。因爲/var目錄主要針對常態性變動文件,包括快取(cache)、登錄檔(log file)以及某些軟件運行所產生的文件,包括程序文件(lock file,run file),或者例如MySQL數據庫的文件等等。

FHS要求必須存在的目錄

目錄 應放置文件內容
/var/cache/ 應用程序本身運作過程中產生的一些贊存檔會保存在這裏。
/var/lib/ 程序本身執行過程中,需要使用到的數據文件放置的目錄。在此目錄下各自的軟件應該要有各自的目錄。舉例來說,MySQL的數據庫放置到/var/lib/mysql,而rpm的數據庫則放到/var/lib/rpm下。
/var/lock/ 某些裝置或者文件資源一次只能被一個應用程序使用,如果同時有兩個程序使用該裝置時,就可能產生一些錯誤的狀況,因此就得要將該裝置上鎖(lock),以確保該裝置只會給單一軟件使用。舉例來說,刻錄機正在刻錄一塊光盤,如果兩個人同時刻錄,那光盤寫入的是誰的資料?所以當第一個人在刻錄時,該刻錄機會被上鎖,第二個人得等到該裝置被解除鎖定(前一個人使用結束)才能繼續使用。目前此目錄已挪到/run/lock中。
/var/log/ 重要到不行!這是登錄文件放置的目錄,裏面比較重要的文件有/var/log/messages/var/log/wtmp(記錄登錄者的信息)等等。
/var/mail/ 放置個人電子郵件信箱的目錄,不過這個目錄被放置到/var/spool/mail/目錄中。通常這兩個目錄互爲鏈接文件。
/var/run/ 某些程序或者服務啓動後,會將他們的PID放置在這個目錄下。與/run相同,這個目錄鏈接到/run目錄。
/var/spool/ 這個目錄通常放置一些隊列數據,所謂的隊列就是排隊等候其他程序使用的數據。這些數據被使用後通常都會被刪除。舉例來說,系統說到新信會放到/var/spool/mail/中,但使用者收下該信後該信原則上會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中,等到被送出後就刪除。如果是計劃任務(crontab),就會被放置到/var/spool/cron/中。

CentOS7的變化

CentOS7在目錄的編排上與過去的版本不同,較大的差異就是將許多原本應該要放在根目錄(/)的目錄,將他內部數據都挪到/usr裏面去了,然後進行連結設定。主要包括底下這些:

  • /bin/usr/bin
  • /sbin/usr/sbin
  • /lib/usr/lib
  • /lib64/usr/lib64
  • /var/lock/run/lock
  • /var/run/run
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章