簡(jiǎn)介
Btrfs是下一代的copy-on-write文件系統(tǒng),它支持很多高級(jí)特性,使其更加適合Docker。Btrfs合并在內(nèi)核主線中,并且它的on-disk-format也逐漸穩(wěn)定了。不過,它的很多特性還仍然處于開發(fā)中。
Docker的btrfs存儲(chǔ)驅(qū)動(dòng)利用了很多Btrfs特性來管理鏡像和容器。這些特性中最重要的就是thin provisioning(超配)、copy-on-write和快照。
Btrfs特性
Btrfs一直被認(rèn)為是Linux文件系統(tǒng)的未來。在Linux內(nèi)核主線的全力支持下,穩(wěn)定的on-disk-format,關(guān)注于穩(wěn)定性的積極開發(fā),使得Btrfs逐漸成為現(xiàn)實(shí)。
只要Docker還在Linux平臺(tái)上運(yùn)行,人們就會(huì)認(rèn)為btrfs存儲(chǔ)驅(qū)動(dòng)會(huì)替代devicemapper存儲(chǔ)驅(qū)動(dòng),成為潛在的長(zhǎng)期的存儲(chǔ)驅(qū)動(dòng)。然而,在寫耗時(shí)上,devicemapper被認(rèn)為更安全,更穩(wěn)定,更適合商品化。只有當(dāng)你很了解Btrfs,并且有豐富的經(jīng)驗(yàn)時(shí),才可以考慮btrfs驅(qū)動(dòng)商品化。
鏡像分層和共享Btrfs
Docker利用Btrfs的子卷(subvolumes)和快照來管理鏡像和容器層的on-disk組件。Btrfs子卷像是一個(gè)普通的Unix文件系統(tǒng)。同樣,當(dāng)掛靠到Unix文件系統(tǒng)時(shí),它們可以有自己的內(nèi)部目錄結(jié)構(gòu)。
子卷是原生的copy-on-write,還有著按需分配的足夠的空間,這些空間來自于下層的存儲(chǔ)池。它們也可以擁有子卷,也可以使用快照。下圖顯示了4個(gè)子卷,子卷2和子卷3掛靠在其他子卷之上,子卷4顯示了自己內(nèi)部的目錄樹。