Overlay文件系統(tǒng)
一個Overlay文件系統(tǒng)包含兩個文件:
- 一個upper文件系統(tǒng)
- 一個lower文件系統(tǒng)
lower文件系統(tǒng)的數(shù)據(jù)不會被修改萌焰,所以修改都發(fā)生在upper文件系統(tǒng)中丑掺。除此之外,還有2個空目錄:work和merged涂滴。work目錄屬于操作過程文件,merged屬于overlay掛載目錄(即掛載后的目錄)晴音,會包含lower和upper兩個系統(tǒng)的內(nèi)容柔纵。
Overlay文件系統(tǒng)如何掛載?
- 首先加載overlay模塊: $sudo modprobe overlay
- 創(chuàng)建四個文件目錄:lower, upper, merged, work, 并在lower和upper下創(chuàng)建幾個測試數(shù)據(jù)锤躁。
- 在/root目錄下執(zhí)行如下掛載指令搁料,可以看到空的merged文件夾中已經(jīng)包含了lower以及upper文件夾中的所有文件和目錄。
$ mount -t overlay overlay -o lowerdir=./lower, upperdir=./upper, workdir=./work ./merged
- 使用df -h命令可以查看新構(gòu)建的overlay文件系統(tǒng)已經(jīng)掛載系羞。
overlay文件系統(tǒng)的讀郭计、寫與刪除操作
讀取操作
- 讀upper沒有而lower與的文件時,從lower讀
- 讀只在upper有的文件時椒振,從lower讀
- 讀lower和upper都有的文件昭伸,則需要從upper讀
寫入操作
- 寫只在upper有的文件, 直接在upper上寫
- 寫在lower和upper都有的文件澎迎,直接在upper寫
- 寫只在lower有的文件時庐杨,則會做一個copy_up的操作,先從lower拷貝一份文件到upper中夹供,同時為文件創(chuàng)建一個硬鏈接灵份。此時可以看到upper目錄下生成了2個新的文件,寫的操作支隊從lower復(fù)制到upper文件生效哮洽,而lower還是原文件填渠。
刪除操作
- 刪除lower和upper都有的文件時,upper中文件被刪除,在upper目錄下創(chuàng)建一個without文件揭蜒,而lower文件不會被刪除横浑。
- 刪除lower有而upper沒有的文件,會為被刪除的文件在upper目錄下創(chuàng)建一個without文件屉更,而在lower下的不會被刪除徙融。
- 刪除lower和upper都有的目錄時時,upper的會被刪除瑰谜,在upper目錄下創(chuàng)建一個類似without文件的opaqu目錄欺冀,而lower下的不會被刪除。
因而萨脑,可以發(fā)現(xiàn)隐轩,lower是只讀的,無論對lower上文件或目錄做任何操作都不會對lower做更改渤早。所有的操作都只在upper上進(jìn)行职车。
注意:在掛載完成后,目錄將變?yōu)榭勺x可寫鹊杖,但所有的修改(在upper上)都是暫時的悴灵,重啟后恢復(fù)。