磁盘文件系统、挂载
參考:https://zhuanlan.zhihu.com/p/106459445
https://blog.csdn.net/qq_39521554/article/details/79501714
文件系統
持久化的數據是存儲在外部磁盤上的,如果沒有文件系統,訪問這些數據需要直接讀寫磁盤的sector,而文件系統存在的意義,就是能更有效的組織、管理和使用磁盤中的數據。
文件系統的組成
要管理,先劃分,因為磁盤上的數據要和內存交互,而內存通常是以4KB為單位,所以從邏輯上,把磁盤按照4KB劃分比較方便。
被劃分的blocks中除了存儲文件自身的數據(user data)外,還需要存儲文件的訪問權限、大小、創建時間等控制信息(meta data),meta data存儲的數據結構就是inode。inode是“index node”的簡稱,早期的Unix系統中,這些nodes是通過數組組織起來的,因此要依靠index來索引數據中的inode。
同內存分配一樣,當有了新的數據產生時,需要選擇一個空閑的block來存放數據,還需要一個空閑的inode。最簡單的辦法就是使用bitmap,包括記錄inode使用情況的bitmap(如圖中I),和記錄data block的bitmap(如圖中D)。還剩下一個block留給superblock(如圖中S),這個superblock包含了一個文件系統所有的控制信息,比如系統中有多少個inodes和data blocks、inode的信息起始于哪個block,可能還有一個區別不同文件系統類型的magic number。
掛載
文件系統生成后,還不能直接使用,需要借助mount操作,將這個文件系統加入到Linux的管理,這樣用戶才能看到并訪問。
linux下面所有的文件、目錄、設備都有一個路徑,這個路徑永遠以/開頭,用/分隔,如果一個路徑是另一個路徑的前綴,則這兩個路徑有邏輯上的父子關系。
但是并不是所有邏輯上的父子關系都必須要是同一個設備,決定不同路徑對應到哪個設備的機制就叫做mount(掛載)。通過mount,可以設置當前的路徑與設備的對應關系。
作者:靈劍
鏈接:https://www.zhihu.com/question/266907637/answer/315386532
來源:知乎
每個設備會設置一個掛載點,掛載點是一個空目錄。一般來說必須有一個設備掛載在/這個根路徑下面,叫做rootfs。其他掛載點可以是/tmp,/boot,/dev等等,通過在rootfs上面創建一個空目錄然后用mount命令就可以將設備掛載到這個目錄上。掛載之后,這個目錄下的子路徑,就會映射到被掛載的設備里面。
其他
1.使用了 mount /dev/sdb1 ~/Share/ ,把新硬盤的區sdb1掛載到工作目錄的~/Share/文件夾下,之后訪問這個~/Share/文件夾就相當于訪問這個硬盤2的sdb1分區了。對/Share/的任何操作,都相當于對sdb1里文件的操作。所以Linux下,mount掛載的作用,就是將一個設備(通常是存儲設備)掛接到一個已存在的目錄上。訪問這個目錄就是訪問該存儲設備。
2.掛載就是把設備放在一個目錄下,讓系統知道怎么管理這個設備里的文件,了解這個存儲設備的可讀寫特性之類的過程。
3.我們不是有/dev/sdb1 嗎,直接對它操作不就行了?這不是它的目錄嗎?
這不是它的目錄。雖然/dev是個目錄,但/dev/sdb1不是目錄。可以發現ls /dev/sdb1無法執行。/dev/sdb1,是一個類似指針的東西,指向這個分區的原始數據塊。mount前,系統并不知道這個數據塊哪部分數據代表文件,如何對它們操作。
總結
- 上一篇: 刮痧多少钱一次
- 下一篇: 操作系统习题——第一章