Linux文件系統

文件是什么?
存儲空間內存儲的有邊界的一段流式數據,對數據可以做到按名存取。
眾多文件是如何有效的組織起來?
1.  平面化
把眾多文件放在一起。當想查找某個文件時,需要遍歷所有文件,當文件數目足夠多的時候,查找一個文件將會非常慢,效率極低。
2.  層級結構化
根據后續查找文件的篩選條件進行分類,逐層放置,通常要查找一個文件,只需要從最高層級開始,逐層進行查找,最后在底層層級的存儲單元內進行文件遍歷,極大的提升了文件查找效率。

總結
從上述兩種管理方式的對比來看,針對于海量文件的管理來講,層級結構化管理,無疑是最適合的方式,Linux也采用了這種文件管理理念。

FHS(Filesystem Hierarchy Standard):文件系統層級結構標準
為了規范各Linux發行版的文件系統層級結構設定,FHS出現了,對目錄層級結構做出了如下定義:

目錄 | 目錄存在的目的
—— | ———————
/bin | 所有用戶可用的基本命令程序文件
/sbin | 供系統管理使用的工具程序
/boot | 引導加載器必須用到的各靜態文件:kernel, initramfs(initrd), grub等
/dev | 存儲特殊文件或設備文件(包括字符設備、塊設備)
/etc | 系統程序的靜態配置文件,只能是靜態的,不存放二進制可執行文件
/home | 普通用戶的家目錄的集中位置
/lib | 為系統啟動或根文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及為內核提供內核模塊(/lib/modules目錄)
/lib64 | 64位系統特有的存放64位共享庫的路徑
/media | 便攜式設備掛載點,例如:cdrom, floppy等
/mnt | 其他文件系統的臨時掛載點
/opt | 附加應用程序的安裝位置
/root | root用戶的家目錄
/srv | 當前主機為服務提供的數據
/tmp | 為那些會產生臨時文件的程序提供的用于存儲臨時文件的目錄,可供所有用戶執行寫入操作,有特殊權限
/usr | 全局共享的只讀數據路徑,自己本身是一個層級結構
/var | 存儲經常發生變化的數據的目錄,自己本身是一個層級結構
/proc | 虛擬文件系統,為內核和進程存儲其相關信息,多為內核參數,例如:net.ipv4.ip_forward,虛擬為/proc/sys/net/ipv4/ip_forward
/sys | sysfs虛擬文件系統提供了一種比proc更為理想的訪問內核數據的途徑,其主要作用在于為管理Linux設備提供了一種統一模型的接口
 

設備文件包含字符設備和塊設備,其中

設備名 | 意義
———— | ———
字符設備      | 線性設備,有次序的,以字符為單位,比如鍵盤
塊設備          | 隨機訪問設備,可以實現隨機訪問,被分為指定大小的數據塊,比如磁盤

/lib目錄下的共享庫文件中

庫名類型 | 意義
———— | —–
libc.so.*  | C語言的動態鏈接庫
ld*          | 運行時鏈接器或加載器
modules | 存放內核模塊的目錄

/usr目錄層級結構

目錄 | 目錄存在的目的 | 是否必選
—— | ——————— | ————
bin | 大多數用戶命令 | 是
include | C程序用到的頭文件 | 是
lib | 庫文件 | 是
local | 讓系統管理員安裝本地應用程序,也通常用于安裝第三方應用程序,也是一個層級目錄 | 是
sbin | 非系統自身運行和維護需要用到的管理命令 | 是
share | 與架構無關的數據,例如命令幫助文件,命令自帶說明文件 | 是
X11R6 | X Windows程序的安裝位置,11是版本,6是發行號 | 否
games | 游戲和有關教育的二進制程序文件 | 否
lib64 | 其他可選庫文件 | 否
src | 源碼 | 否

/usr/local目錄層級結構

目錄 | 目錄存在的目的 
—— | ———————
bin | 本地二進制程序文件 
etc | 本地程序文件的配置文件存放目錄
games | 本地游戲程序文件
include | 本地C語言程序頭文件
lib | 本地庫文件
man | 本地在線幫助文檔
sbin | 本地系統程序文件
share | 本地與架構無關的層級目錄
src | 本地源碼

/var目錄層級機構

目錄 | 目錄存在的目的 
—— | ———————
cache | 應用緩存數據
lib | 變量狀態信息
local | /usr/local目錄的變量數據
lock | 鎖文件
log | 日志文件和目錄
opt | /opt目錄的變量數據
run | 正在運行進程的相關數據
spool | 應用程序的假脫機數據
tmp | 系統重新啟動時保存的臨時文件

/sys目錄的層級結構

目錄 | 目錄存在的目的 
—— | ———————
devices | 這是內核對系統中所有設備的分層次表達模型,也是/sys文件系統管理設備的最重要的目錄結構
dev | 這個目錄下維護一個按字符設備和塊設備的主次號碼(major.minor)連接到真實的設備(/sys/devices下)的符號鏈接文件,它是在內核2.6.26首次引入
bus | 這是內核設備按總線類型分層放置的目錄結構,devices中的所有設備都是連接于某種總線之下,在這里的每一種具體總線之下可以找到每一個具體設備的符號鏈接,它也是構成Linux統一設備模型的一部分
class | 這是按照設備功能分類的設備模型,如系統所有輸入設備都會出現在/sys/class/input之下,而不論它們是以何種總線連接到系統,它也是構成Linux統一設備模型的一部分
block | 這里是系統中當前所有的塊設備所在,從2.6.22開始已經標記為過時
firmware | 這里是系統加載固件機制的對用戶控件的接口,關于固件有專用于固件加載的一套API
fs | 這里按照設計是用于描述系統中所有文件系統,包括文件系統本身和按文件系統分類存放的已掛載點,但目前只有fuse, gfs2等少數文件系統支持sysfs接口
kernel | 這里是內核所有可調整參數的位置
module | 這里有系統中所有模塊的信息
power | 這里是系統中電源選項,這個目錄下有幾個屬性文件可以用于控制整個機器的電源狀態,如可以向其中寫入控制命令讓機器關機、重啟等

原創文章,作者:N27_sapbcs,如若轉載,請注明出處:http://www.www58058.com/86313

(0)
N27_sapbcsN27_sapbcs
上一篇 2017-09-05 09:46
下一篇 2017-09-05 21:41

相關推薦

  • httpd-2.2和httpd-2.4區別 、請求方法和響應狀態碼、虛擬主機、訪問控制、持久鏈接

    第十周
    The Apache HTTP Server is a powerful, efficient, and extensible web server.
    2018/2/4 16:33

    2018-02-04
  • 初學Linux之快速獲取幫助

    Windows操作系統和Linux操作系統的界面區別,導致了初學Linux時,我們會遇到比較大的障礙。Windows操作系統時圖形這種形象化的操作界面,而Linux則不同,時以字符界面為主的。當我們遇到困難,我們可以獲取系統提供的幫助信息,越過我們遇到的障礙,快速的熟悉Linux。獲取幫助的方法包括:Linux手冊(man),命令的幫助頁,info幫助。

    2017-11-19
  • 馬哥教育網絡班21期-第六周課程練習

    1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;  # :%s@^[[:space:]]\+@#&@g 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符; &nb…

    Linux干貨 2016-08-15
  • 馬哥教育網絡班26期+第一周學習宣言

    30歲前,目標年薪50w!gogogo

    Linux干貨 2016-12-27
  • Linux基礎目錄名稱及功用

    FHS目錄規則 Filesystem Hierarchy Standard(文件系統目錄標準)的縮寫,多數Linux版本采用這種文件組織形式,類似于Windows操作系統中c盤的文件目錄,FHS采用樹形結構組織文件。FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾處理。   FHS定義了兩層規范,第一層是,…

    Linux干貨 2016-10-30
  • 程序包管理之編譯安裝apache

    編譯就是講開發者提供的源代碼,通過編譯器,匯編器,連接器轉換成可以直接在操作系統上運行的二進制指令的過程。C/C++源碼的編譯通常包括以下幾個過程:     預處理(Preprocessing)     編譯(Compilation)    &nbs…

    Linux干貨 2016-08-24
欧美性久久久久