linux內核文件系統:proc、tmpfs、devfs、sysfs
proc:虛擬文件系統,在linux系統中被掛載與/proc目錄下。里面的文件包含了很多系統信息,比如cpu負載、 內存、網絡配置和文件系統等等。我們可以通過內部文本流來查看進程信息(正在運行的各個進程的PID號也以目錄名形式存在/proc目錄下)和機器的狀態。
常見的目錄:
- apm # 高級電源管理信息
- bus # 總線配置信息(USB的配置也記錄在此)
- cmdline # 內核命令行
- Cpuinfo # 關於Cpu信息
- Devices # 可以用到的設備(塊設備/字符設備)
- Dma # 使用的DMA通道
- Filesystems # 支持的文件系統
- Interrupts # 中斷的使用
- Ioports # I/O端口的使用
- Kcore # 內核核心印象
- Kmsg # 內核消息
- Ksyms # 內核符號表
- Loadavg # 負載均衡
- Locks # 內核鎖
- Meminfo # 內存信息
- Misc # 雜項
- Modules # 加載模塊列表(可以想成是驅動程序)
- Mounts # 加載的文件系統
- Partitions # 系統識別的分區表
- PCI # 在PCI總線上,每台設備的詳細情況(可以使用lspci來查看)
- Rtc # 實時時鍾
- Slabinfo Slab # 池信息
- Stat # 全面統計狀態表
- Swaps # 對換空間的利用情況
- Version # 內核版本
- Uptime # 系統正常運行時間
tmpfs:虛擬內存文件系統,使用內存作為臨時存儲分區,掉電之后會丟失數據,創建時不需要使用mkfs等格式化
1.tmpfs掛載:
mount -t tmpfs -o size=20M tmpfs /tmp
df -h
使用/etc/fstab條目:tmpfs /tmp tmpfs default 0 0
2.tmpfs使用:
用來存儲臨時生成信息
正常使用掛載目錄:創建文件,存儲信息,刪除文件等
3.tmpfs作用
因為內存的訪問速度高於flash,所以可以提高存儲效率,避免對flash頻繁讀寫(flash壽命有限)
devfs:設備文件,提供類似於文件的方法來管理位於/dev目錄下的設備
1.根目錄/dev
設備文件創建
創建根文件系統時創建基本的,比如console,tty*等等
設備驅動加載時創建相應的設備文件
2.特殊設備文件
/dev/console
/dev/null /dev/zero :黑洞文件
3.缺點
不確定的設備映射,有時一個設備映射的設備文件可能不同,假如掛載的u盤可能對應sda也可能對應sdb
沒有足夠的主/輔設備號,當設備過多的時候,顯然會成為一個問題
sysfs:虛擬內存文件系統,2.6內核之前沒有規定sysfs的標准掛載目錄,但是在2.6之后就規定了要掛載到/sys目錄下(針對以前的 sysfs 掛載位置不固定或沒有標准被掛載,有些程序從 /proc/mounts 中解析出 sysfs 是否被掛載以及具體的掛載點,這個步驟現在已經不需要了)。它的作用類似於proc,但除了與 proc 相同的具有查看和設定內核參數功能之外,還有為 Linux 統一設備模型作為管理之用。相比於 proc 文件系統,使用 sysfs 導出內核數據的方式更為統一,並且組織的方式更好。
與proc的比較:
sysfs 與 proc 相比有很多優點,最重要的莫過於設計上的清晰。一個 proc 虛擬文件可能有內部格式,如 /proc/scsi/scsi
,它是可讀可寫的,(其文件權限被錯誤地標記為了 0444 !,這是內核的一個BUG),並且讀寫格式不一樣,代表不同的操作,應用程序中讀到了這個文件的內容一般還需要進行字符串解析,而在寫入時需要先用字符串格式化按指定的格式寫入字符串進行操作;相比而言, sysfs 的設計原則是一個屬性文件只做一件事情, sysfs 屬性文件一般只有一個值,直接讀取或寫入。整個 /proc/scsi
目錄在2.6內核中已被標記為過時(LEGACY),它的功能已經被相應的 /sys 屬性文件所完全取代。新設計的內核機制應該盡量使用 sysfs 機制,而將 proc 保留給純凈的“進程文件系統”。
掛載:
mkdir sys
mount -t sysfs /sysfs
很好的參考文章:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/(使用 /sys 文件系統訪問 Linux 內核)