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ù)。