透明文件系統

文件系統
下面開始深入地瞭解文件系統與上面分區的關係,系統有rootfs_rom這個隱藏的只讀文件系統,也有rootfs_data這個可寫的文件分區,它們之間是什麼關係呢?這是OpenWrt設計的一個有意思的地方。
(1)首先,引導程序啓動內核完成之後,由內核加載roofs_rom只讀分區部分來完成系統的初步啓動。
(2)rootfs_rom只讀分區採用的是Linux內核支持的squashFS文件系統(一種壓縮只讀文件系統),加載完畢後將其掛載到/rom目錄(同時也掛載爲/根目錄)。
(3)系統將使用JFFS2文件系統格式化的rootfs_data可寫文件分區並且將這部分掛載到/overlay目錄。
(4)系統再將/overlay透明掛載爲/根目錄。
(5)最後將一部分內存掛載爲/tmp目錄。
(6)掛載情況如下。
root@OpenWrt:~# df
Filesystem      1K-blocks   Used Available Use% Mounted on
rootfs          13248    464   12784  4%/
/dev/root         1792   1792     0 100%/rom
tmpfs           30940   15116   15824 49%/tmp
/dev/mtdblock5      13248    464   12784  4%/overlay
overlayfs:/overlay    13248    464   12784  4%/
tmpfs            512     0    512  0%/dev
7.2.1 透明掛載/根目錄
OpenWrt設計的一個特點是:系統先將rootfs_rom掛載爲/根目錄,這樣就具備了一個完整的系統,然後再將rootfs_data以透明方式掛載在/根目錄上。OpenWrt透明掛載處理流程如圖7-2所示,這樣重疊之後的效果是:
(1)我們所看到的根文件系統是由rootfs_rom和rootfs_data兩個分區組合在一起的;
(2)當我們修改一個任何位置的文件的時候,所做的修改在rootfs_data裏都會記錄;
(3)當我們刪除一個文件的時候,所做的修改在rootfs_data裏都會記錄;
(4)當我們增加一個文件的時候,所做的修改在rootfs_data裏都會記錄;
(5)當我們讀取文件的時候,首先檢測rootfs_data裏的狀態,再檢測rootfs_rom裏的內容,一直到最後給你一個結果。
[插圖]
圖7-2 OpenWrt透明掛載處理流程示意圖
這樣做的好處和壞處爲:
(1)當對文件進行操作的時候,比如我們修改了一個名字爲abc的文件,那麼同時在/rom裏還有修改之前的那個abc,同時在/overlay裏有修改之後的abc,所佔的空間是倍增的;
(2)系統不論任何時候,只要通過簡單地刪除掉/overlay裏所有文件,就能達到復原的效果。
一個簡單的例子如下。
root@OpenWrt:~# ls/31test
ls:/31test: No such fi le or directory
root@OpenWrt:~# ls/overlay/31test
ls:/overlay/31test: No such fi le or directory
root@OpenWrt:~# touch/31test
root@OpenWrt:~# ls/31test
/31test
root@OpenWrt:~# ls/overlay/31test
/overlay/31test
root@OpenWrt:~# rm/31test
root@OpenWrt:~# ls/overlay/31test
ls:/overlay/31test: No such fi le or directory
不過不建議直接在/overlay裏刪除,否則會出現不同步的情況!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章