docker深入2-儲存驅動之使用devicemapper(direct-lvm)模式

來源:互聯網
上載者:User

標籤:system   display   minimum   b/s   nim   monitor   準備   hold   conf   

docker深入2-儲存驅動之使用devicemapper(direct-lvm)模式

2016/12/9

一、現狀1、預設使用的是 devicemapper(loop-lvm)[[email protected] lib]# docker info     (略)        Server Version: 1.12.3Storage Driver: devicemapper Pool Name: docker-253:3-33517-pool Pool Blocksize: 65.54 kB Base Device Size: 10.74 GB Backing Filesystem: xfs Data file: /dev/loop0 Metadata file: /dev/loop1 Data Space Used: 11.8 MB Data Space Total: 107.4 GB Data Space Available: 7.433 GB Metadata Space Used: 581.6 kB Metadata Space Total: 2.147 GB Metadata Space Available: 2.147 GB Thin Pool Minimum Free Space: 10.74 GB Udev Sync Supported: true Deferred Removal Enabled: false Deferred Deletion Enabled: false Deferred Deleted Device Count: 0 Data loop file: /var/lib/docker/devicemapper/devicemapper/data WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device. Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata(略)Docker Root Dir: /var/lib/docker(略)2、對應的裝置[[email protected] lib]# lsblk -I 7NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTloop0                       7:0    0  100G  0 loop └─docker-253:3-33517-pool 252:0    0  100G  0 dm   loop1                       7:1    0    2G  0 loop └─docker-253:3-33517-pool 252:0    0  100G  0 dm 二、調整為 devicemapper(direct-lvm)1、準備工作安裝 lvm2[[email protected] ~]# yum install lvm2增加一塊磁碟[[email protected] ~]# ls /dev/vdb/dev/vdb停止 docker 服務[[email protected] ~]# systemctl stop docker2、配置裝置1)pv[[email protected] ~]# pvcreate /dev/vdb2)建立一個名稱為 docker 的 vg [[email protected] ~]# vgcreate docker /dev/vdb3)建立2個 lv,分別對應 data 和 metadata 裝置[[email protected] ~]# lvcreate --wipesignatures y -n thinpool docker -l 95%VG[[email protected] ~]# lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG4)轉換 pool 為 thinpool 格式[[email protected] ~]# lvconvert -y --zero n -c 512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta5)調整 lvm 配置The value should be the percentage of space used before lvm attempts to autoextend the available space (100 = disabled).定義一個百分比的閾值,表明觸發 lvm 自動擴容前,已用空間佔比。thin_pool_autoextend_threshold = 80The value’s setting is the percentage of space to increase the thin pool (100 = disabled)每次擴容 thin pool 空間的比例thin_pool_autoextend_percent = 20[[email protected] ~]# cat /etc/lvm/profile/docker-thinpool.profileactivation {    thin_pool_autoextend_threshold=80    thin_pool_autoextend_percent=20}6)lvchange 應用配置[[email protected] ~]# lvchange --metadataprofile docker-thinpool docker/thinpool7)lvs 查看卷的資訊,驗證 monitor 的狀態[[email protected] ~]# lvs -o+seg_monitor  LV       VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Monitor    thinpool docker twi-a-t--- 190.00g             0.00   0.01                             monitored3、調整 docker 儲存1)備份[[email protected] ~]# mkdir /var/lib/docker.bk[[email protected] ~]# mv /var/lib/docker/* /var/lib/docker.bk如果這個 docker engine 上已經有部分 images 在使用,且需要儲存,請先提前推送到自己的 registry 中儲存。2)調整服務配置a、第一種方式[[email protected] ~]# vim /lib/systemd/system/docker.service 增加參數:--storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool --storage-opt=dm.use_deferred_removal=true --storage-opt=dm.use_deferred_deletion=true或者:[[email protected] ~]# sed -i ‘/^ExecStart=/c\ExecStart=/usr/bin/dockerd --storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool --storage-opt=dm.use_deferred_removal=true --storage-opt=dm.use_deferred_deletion=true‘ /lib/systemd/system/docker.service b、第2種方式調整 daemon.json 的配置:[[email protected] ~]# cat /etc/docker/daemon.json{    "storage-driver": "devicemapper",    "storage-opts": [        "dm.thinpooldev=/dev/mapper/docker-thinpool",        "dm.use_deferred_removal=true",        "dm.use_deferred_deletion=true"    ]}c、注意事項Note: Always set both dm.use_deferred_removal=true and dm.use_deferred_deletion=true to prevent unintentionally leaking mount points.啟用上述2個參數來阻止可能意外產生的掛載點泄漏問題3)重啟服務[[email protected] ~]# systemctl daemon-reload[[email protected] ~]# systemctl start docker4)驗證[[email protected] lib]# docker info     (略)  Storage Driver: devicemapper Pool Name: docker-thinpool Pool Blocksize: 524.3 kB Base Device Size: 10.74 GB Backing Filesystem: xfs Data file:  Metadata file:  Data Space Used: 20.45 MB Data Space Total: 204 GB Data Space Available: 204 GB Metadata Space Used: 266.2 kB Metadata Space Total: 2.143 GB Metadata Space Available: 2.143 GB Thin Pool Minimum Free Space: 20.4 GB Udev Sync Supported: true Deferred Removal Enabled: true Deferred Deletion Enabled: true Deferred Deleted Device Count: 0 Library Version: 1.02.107-RHEL7 (2016-06-09)(略) 5)可以通過 lvs, lvdisplay, vgs 等指令來查看 lvm 卷的狀態6)可以查看日誌,瞭解 thin pool 在自動擴容觸及閾值時的狀態[[email protected] ~]# journalctl -fu dm-event.service7)對應的裝置[[email protected] ~]# lsblk -I ‘253‘ |grep -v vdaNAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTvdb                     253:16   0  200G  0 disk ├─docker-thinpool_tmeta 252:0    0    2G  0 lvm  │ └─docker-thinpool     252:2    0  190G  0 lvm  └─docker-thinpool_tdata 252:1    0  190G  0 lvm    └─docker-thinpool     252:2    0  190G  0 lvm 8)確認無誤後,可以清理舊的資料[[email protected] ~]# rm /var/lib/docker.bk -fr4、整合到一個小指令碼中來配置direct-lvm的儲存[[email protected] ~]# cat docker_direct_lvm_setup.sh    #!/bin/bash##2016/12/8#v1.0.5 @PC## 分配一塊獨立的磁碟供docker使用,本例使用的是 /dev/vdbdev_name=‘/dev/vdb‘yum -y -q install lvm2echo ‘+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++‘pvcreate ${dev_name}vgcreate docker ${dev_name}lvcreate --wipesignatures y -n thinpool docker -l 95%VGlvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VGlvconvert -y --zero n -c 512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmetacat <<‘_EOF‘ >/etc/lvm/profile/docker-thinpool.profileactivation {    thin_pool_autoextend_threshold=80    thin_pool_autoextend_percent=20}_EOFlvchange --metadataprofile docker-thinpool docker/thinpoolecho ‘+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++‘lvs -o+seg_monitorecho ‘+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++‘cat <<‘_EOF‘+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++接下來的操作步驟樣本:[1] 如果 docker 有舊的資料,先推送到registry中再移除;# mkdir /var/lib/docker.bk# mv /var/lib/docker/* /var/lib/docker.bk[2] 更新docker服務的配置:(方式一: 調整 docker.service 的配置參數)# sed -i ‘/^ExecStart=/c\ExecStart=/usr/bin/dockerd --storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool --storage-opt=dm.use_deferred_removal=true --storage-opt=dm.use_deferred_deletion=true‘ /lib/systemd/system/docker.service (方式二: 在 daemon.json 中配置參數)# cat /etc/docker/daemon.json{    "storage-driver": "devicemapper",    "storage-opts": [        "dm.thinpooldev=/dev/mapper/docker-thinpool",        "dm.use_deferred_removal=true",        "dm.use_deferred_deletion=true"    ]}[3] 重啟服務# systemctl daemon-reload && systemctl start docker[4] 驗證是否調整完畢# docker info+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++_EOFZYXW、參考1、docshttps://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#/configure-direct-lvm-mode-for-production2、Docker Device Mapper 使用 direct-lvmhttp://www.cnblogs.com/SZLLQ2000/p/5486834.html3、daemon.jsonhttps://docs.docker.com/engine/reference/commandline/dockerd/


docker深入2-儲存驅動之使用devicemapper(direct-lvm)模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.