一、什麼是devicemapper存儲驅動
devicemapper是一個Linux內核模塊,負責在linux系統中提供塊設備接口,並在其上實現了鏡像、快照、緩存等基於塊存儲的高級存儲管理功能。它可以實現邏輯卷管理(LVM)、數據快照、以及塊設備的緩存等功能,可被用於構建各種各樣的存儲解決方案。
dm區域通過抽象出塊設備的概念,把每個卷組劃分為pool。DM又對pool的操作抽象為DM target,它不僅定義了如何在底層磁盤上劃分/映射pool,還指定了例如快照、緩存、鏡像等等其他附加行為。
二、devicemapper的優點
devicemapper最大的優點就是提供靈活的存儲管理服務。可以根據實際需求,自由組合LVM等功能和Docker特性來實現最佳的存儲方案。
其次,devicemapper為了提升性能,引入了寫時複製技術(Copy-on-Write, COW),使用基於塊的存儲方式,支持存儲驅動的高速緩存技術,可以在其上實現各種高級特性。
三、devicemapper中的pool
dm_pool是devicemapper最基本的概念,它是一組底層塊設備的存儲池。每個池都由至少一個線性區組成。
線性區是由幾個塊設備連續排列組合而成的區域。pool中的塊設備可以是單個物理磁盤或是一個RAID設備,甚至還可以是一個整個LVM組。pool的設計非常靈活,可以根據場景需求進行更改,從而獲得更好的性能、可靠性和安全性。
四、devicemapper中的target
target是在存儲池的基礎之上,實現一些功能的擴展。DM模塊定義了多種定製的target,例如線性區域、條帶化和鏡像等算法,可以根據不同情況的需要選擇不同的target。
DM中還有一個特殊的target,稱為thin-pool,它實現了一種基於位置映射表的塊映射方案。thin pool是一個基於分配/釋放塊的方式,動態創建一個邏輯的空間池,在這個空間池中,不同的邏輯體積可以使用實際物理數據塊創建出感覺像是真正邏輯物理盤的效果。
五、devicemapper存儲驅動與Docker
devicemapper存儲驅動是Docker的默認存儲驅動。它通過存儲池的方式來管理容器運行時的寫時複製鏡像和快照等操作。每個容器都創建了一個獨立的thin pool,用來存儲該容器的寫時複製鏡像和快照記錄。
#使用devicemapper創建容器 $ docker run -d ubuntu /bin/bash
在Docker啟用devicemapper存儲驅動,使得Docker的容器共享同一個base image的鏡像,同時也能夠節省空間,並且能夠快速啟動容器。
六、devicemapper存儲驅動的注意事項
對於使用devicemapper存儲驅動的用戶,需要注意以下幾點:
1. 當存儲池中空間不足時,需要手動增加存儲空間。
2. 需要定期清理thin pool。
3. 建議選擇使用新版本的 LVM 工具來管理存儲,以便更好地支持存儲池和 snapshot 等功能。
七、總結
devicemapper存儲驅動是一個強大、靈活的存儲管理方案,可以為用戶提供高速緩存技術、實現寫時複製等特性。在Docker中,devicemapper存儲驅動為用戶節省了存儲空間,並且提供了快速啟動容器的功能。
原創文章,作者:JMTD,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/132172.html