linux文件系统、文件系统结构、虚拟文件系统
參考:linux文件系統及其目錄結構、虛擬文件系統
作者:丶PURSUING
發布時間: 2021-02-15 09:33:29
網址:https://blog.csdn.net/weixin_44742824/article/details/113806239?spm=1001.2014.3001.5502
本文為學習筆記,整合課程內容以及部分文章,參考的原文鏈接如下:
文件系統目錄結構板塊:
參考:原文鏈接
作者:DreamDZhu
虛擬文件系統板塊:
參考:原文鏈接。
作者:uestc-leon
目錄
- 文件系統概述
- 學術定義
- 文件系統種類
- 什么是分區
- 簡單理解windows和linux文件系統的區別
- 文件系統結構
- /etc目錄下可以設置開機啟動程序
- 切換為root超級用戶
- /proc目錄舉例
- 絕對路徑與相對路徑
- 虛擬文件系統(Virtual File System)(VFS)
- 是什么?
- 有什么作用?
- EG1:cp指令的實現
- EG2:從系統編程,從上層到底層來看
文件系統概述
學術定義
文件系統是操作系統用于明確存儲設備的文件和數據結構,即在存儲設備上組織文件的方法。
根分區/根目錄
文件系統種類
文件的格式又有FAT,HFS,…
常見的:
vfat:boot (bootloader,kernel)
ext4:根目錄
tmpfs:內存文件系統
比如,windows用的是NTFS。
樹莓派的有
df -T- 1
什么是分區
windows對于分區的管理較為“隨意”,因為其面向普通PC用戶。C,D盤隨意存放文件。
而linux較為嚴格,按照功能來分區,大多面向開發者。
嵌入式系統可分為4個區:
bootloader:啟動代碼
para:啟動代碼向內核傳遞參數的位置
kernel:內核分區(前面內核編譯時SD卡映射的data1)
根分區/根目錄:文件系統結構(前面內核編譯時SD卡映射的data2)
簡單理解windows和linux文件系統的區別
在windows下會有驅動器盤符(C,D,E等),某個文件確切的存在于某個盤符中,占用一段連續的存儲空間。
在linux下沒有盤符的概念,所有的文件都在根目錄(/),通過cd /指令進入。(cd或者cd ~ 進入的是工作目錄home)下。可以理解為所有文件都分散到整個磁盤上,你看到的同一個文件夾下內容可能來自于不同的分區。
文件系統結構
參考:原文鏈接
作者:DreamDZhu
要求熟悉且記憶。
在Linux系統中,目錄被組織成一個單根倒置樹結構,文件系統從根目錄開始,用/來表示,是按照功能劃分的。
/:根目錄,位于Linux文件系統目錄結構的頂層,一般根目錄下只存放目錄,不要存放文件,/etc、/bin、/dev、/lib、/sbin應該和根目錄放置在一個分區中。
/bin : 提供用戶使用的基本命令, 存放二進制命令,不允許關聯到獨立分區,OS啟動會用到里面的程序。
/boot:用于存放引導文件,內核文件,引導加載器.
/sbin:管理類的基本命令,不能關聯到獨立分區,OS啟動時會用到的程序(重要的命令通常處于bin,不重要的則安裝在sbin)。
/lib:存放系統在啟動時依賴的基本共享庫文件以及內核模塊文件. 系統使用的函數庫的目錄 也存放了大量的腳本庫文件 ,程序在執行過程中,需要調用時會用到
/lib64:存放64位系統上的輔助共享庫文件.
/etc: 系統配置文件存放的目錄,該目錄存放系統的大部分配置文件和子目錄,不建議在此目錄下存放可執行文件。
/etc目錄下可以設置開機啟動程序
為什么KTV的點歌機開機就是點歌界面,而不是linux的啟動界面,通過配置更改。
例如要設置智能家居的程序,當芯片上電后自動運行,而不是還去拿電腦去開始運行。
- 復制可執行文件的絕對路徑,例如
- 1
- 粘貼到etc目錄下的rc.local的exit 0之前。
要加超級用戶權限,否則只能進行只讀操作
sudo vi /etc/rc.local- 1
這里可以看到之前的開機自動配置ip地址的操作。
/home:普通用戶主目錄,當新建賬戶時,都會分配在此,建議單獨分區,并分配額外空間用于存儲數據。
/root: 系統管理員root的宿主目錄,系統第一個啟動的分區為/,所以最好將/root和/放置在一個分區下。
切換為root超級用戶
如果我非要進去呢?(嘗嘗鮮看看就好),通常是沒有權限去更改root密碼。樹莓派玩玩罷了。
- 強制創建一個新密碼
- 1
- 獲取root超級權限
- 1
用ls可以發現/root下啥也看不到
刪庫跑路:直接干掉根目錄(別嘗試哈)
cd .. //回到上級目錄 /rm / -rf切換回普通用戶
su - pi- 1
/media:便攜式移動設備掛載點目錄.
/mnt:臨時文件系統掛載點,比如設置的共享文件夾
/dev: 設備(device)文件目錄,存放linux系統下的設備文件,訪問該目錄下某個文件,相當于訪問某個設備,存放連接到計算機上的設備(終端、磁盤驅動器、光驅及網卡等)的對應文件 (b 隨機訪問,c 線性訪問)
/opt:第三方應用程序的安裝位置.
/srv: 服務啟動之后需要訪問的數據目錄,存放系統上運行的服務用到的數據,如www服務需要訪問的網頁數據存放在/srv/www內。
/tmp:存儲臨時文件, 任何人都可以訪問,重要數據一定不要放在此目錄下。
/usr: 應用程序存放目錄,/usr/bin 存放保證系統擁有完整功能而提供的應用程序, /usr/share 存放共享數據,/usr/lib 存放不能直接運行的,卻是許多程序運行所必需的一些函數庫文件,_/usr/local 存放軟件升級包,第三方應用程序的安裝位置,/usr/share/doc _系統說明文件存放目錄。
/var :放置系統中經常要發生變化的文件,如日志文件。/var/log 日志目錄及文件./var/tmp:保存系統兩次重啟之間產生的臨時數據.
/proc: 用于輸出內核與進程信息相關的虛擬文件系統,目錄中的數據都在內存中,如系統核心,外部設備,網絡狀態,由于數據都存放于內存中,所以不占用磁盤空間
/proc目錄舉例
- 可以在這個目錄下查看cpu的更詳細的信息
- 1
processor是核心,有n個就是n核cpu
- 也可以在這個目錄下查看內存的相關信息
- 1
sys: 用于輸出當前系統上硬件設備相關的虛擬文件系統.
/selinux:存放selinux相關的信息安全策略等信息.
絕對路徑與相對路徑
絕對路徑 :以/開始,表示該文件從根目錄開始的完整位置路徑,必須以根開始。
相對路徑 :不以/開始,指該文件相對于該目錄的路徑或某個目錄的路徑,不以根開始。可以作為一個簡短的形式來指定一個文件名。
虛擬文件系統(Virtual File System)(VFS)
參考:原文鏈接。
作者:uestc-leon
是什么?
VFS是對各種文件系統的一個抽象,它為各種文件系統提供了一個通用接口
有什么作用?
文件對應的分區可能不一樣,有的來自ext4,或者tmps。即為文件系統的類型可能不一樣,數據存儲的方式不一樣,訪問方式也就不一樣,沒辦法做到操作統一化,給編程開發帶來困難。
而虛擬文件系統的存在正是解決了這個問題:簡化上層應用程序員的開發,不管是什么文件類型,磁盤還是設備,通通都是用open,read,write統一操作。
EG1:cp指令的實現
用戶輸入以下指令:
cp /floppy/TEST /tmp/test- 1
其中/floppy是MS-DOS磁盤的一個安裝點,而/tmp是一個標準的第二擴展文件系統(second Extended Filesystom, Ext2)的目錄。正如圖(a)所示,VFS是用戶的應用程序與文件系統實現之間的抽象層。因此,cp程序并不需要知道/floppy/TEST 和 /tmp/test是什么文件系統類型。相反,cp程序直接與VFS交互,這是通過Unix程序設計人員都熟悉的普通系統調用來進行的。cp的執行代碼如圖(b)所示:
EG2:從系統編程,從上層到底層來看
如果從分區的角度,串口操作的就是/dev;普通文件如 .config在ext4上;共享內存 tmpfs dev/shm…
之前所學的Linux系統編程,各種應用層的知識,vfs都提供了幫助。
總結
以上是生活随笔為你收集整理的linux文件系统、文件系统结构、虚拟文件系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派Linux内核源码配置、编译、挂载
- 下一篇: Android实现访斗鱼视频播放