天天看點

Docker存儲驅動devicemapper介紹和配置

注:Device Mapper是Linux的一種技術架構,而devicemapper是Docker Engine基于Device Mapper提供的一種存儲驅動。

早期的Docker運作在Ubuntu和Debian Linux上并使用AUFS作為後端存儲。Docker流行之後,越來越多的的公司希望在Red Hat Enterprise Linux這類企業級的作業系統上面運作Docker,但可惜的是RHEL的核心并不支援AUFS。

這個時候紅帽公司出手了,決定和Docker公司合作去開發一種基于Device Mapper技術的後端存儲,也就是現在的devicemapper。

loop-lvm是預設的模式,它使用OS層面離散的檔案來建構精簡池(thin pool)。該模式主要是設計出來讓Docker能夠簡單的被”開箱即用(out-of-the-box)”而無需額外的配置。但如果是在生産環境的部署Docker,官方明文不推薦使用該模式。我們使用docker info指令可以看到以下警告:

 WARNING: Usage of loopback devices is strongly discouraged for production use. Either use `–storage-opt dm.thinpooldev` or use `–storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.

direct-lvm是Docker推薦的生産環境的推薦模式,他使用塊裝置來建構精簡池來存放鏡像和容器的資料。

注:Linux核心在3.18以上才能支援overlayfs,但RHEL 7.2的核心版本為3.10,是以原生并不支援。但是的确有人在RHEL7.2上成功應用了overlayfs驅動,個人猜測可能是手動在核心裡面加載了overlay的子產品。

如果Docker服務已在運作且有需要保留的鏡像和容器,停服務前把相關資料給備份。個人也強烈建議如果是在生産環境使用Docker的話,拿到host的第一時間就将direct-lvm模式給配置了。(當然也可以選擇其他的storage driver)

檢視目前devicemapper模式

基于highlight的内容可以看到目前模式為loop-lvm

停止docker服務

本例以Nutanix的ABS功能來配置設定一塊iSCSI盤到docker主控端,推薦使用外部共享存儲的裝置但不局限于此種方式,可根據自己的環境決定。

添加50GB的盤

将Volume Group挂給docker主控端

檢視裝置

建立PV

建立VG

檢視VG資訊

建立pool

資料LV大小為VG的95%,中繼資料LV大小為VG的1%,剩餘的空間用來自動擴充。

将pool轉換為thinpool

配置池的自動擴充

應用配置變更

狀态監控檢查

修改服務配置檔案

ExecStart後加入storage相關配置參數,如果配置了$OPTIONS也可以在對應的EnvironmentFile中加入。

清除graphdriver

Error starting daemon: error initializing graphdriver: devmapper: Base Device UUID and Filesystem verification failed: devicemapper: Error running deviceCreate (ActivateDevice) dm_task_run failed

啟動docker服務

檢查devicemapper配置

基于highlight的内容可以看到目前模式為direct-lvm

可以看到Data%在pull一個busybox鏡像後使用率由0.04變為0.08,說明direct-lvm配置成功且正常工作。

本文轉自    憬薇   51CTO部落格,原文連結:http://blog.51cto.com/welcomeweb/1921288

繼續閱讀