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 和一般的賬號所使用,主要有:cat ,chmod ,chown ,date ,mv ,mkdir ,cp ,bash 等常用的指令。 |
/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/ 中,常見的指令包括:fdisk 、fsck 、ifconfig 、mkfs 等。 |
/srv | srv 可以視爲service 的縮寫,是一些網絡服務啓動後,這些服務所需要取用的數據目錄。常見的服務如www 、ftp 等。舉例來說,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)。usr
是Unix 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 查看,可以發現該目錄下有bin 、etc 、include 、lib 等目錄。 |
/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