CentOS 7配置Docker Storage

背景

CentOS 7已经集成了Docker Engine, 并且提供了docker-storage-setup服务来帮助配置docker服务的devicemapper存储驱动,如果该驱动自动配置失败,则docker服务的存储驱动会降级为lvm-loop驱动。由于loop设备的缓存问题,lvm-loop模式不适合生产环境。

CentOS 7的安装程序默认使用lvm模式管理磁盘,如果仅有一块磁盘,安装程序会在该物理卷(pv)上创建centos卷组(vg), 并同时使用所有空间创建home和root逻辑卷(lv)。

服务docker-storage-setup默认会尝试使用root文件系统所属的vg, 即centos vg,但是由于该vg上已经没有剩余空间,从而导致devicemapper驱动配置失败。

减小home lvm的大小创建docker lvm

CentOS 7默认安装程序创建的home lv空间一般比较大,先减小其大小:

lvresize -L -50G /dev/centos/home
 

重新创建并挂载home文件系统

umount /home
mkfs.xfs /dev/centos/home
mount /home
 

使用docker-storage-setup配置devicemapper驱动, 执行:

servicedockerstop
rm -rf /var/lib/docker
servicedockerstart
 

添加新的存储设备创建docker lvm

停止docker服务,并清除已有的docker storage:

servicedockerstop
rm -rf /var/lib/docker
 

编辑/etc/sysconfig/docker-storage-setup:

DEVS=/dev/sdb
VG=docker
 

配置devicemapper驱动:

[root@localhost ~]# docker-storage-setup
INFO: Volumegroupbackingrootfilesystemcouldnot bedetermined
INFO: Device /dev/sdbis alreadypartitionedand is partofvolumegroupdocker
  Roundingupsizeto fullphysicalextent 12.00 MiB
  Logicalvolume "docker-poolmeta" created.
  Logicalvolume "docker-pool" created.
  WARNING: Convertinglogicalvolumedocker/docker-pooland docker/docker-poolmetato pool's dataand metadatavolumes.
  THIS WILLDESTROYCONTENTOFLOGICALVOLUME (filesystemetc.)
  Converteddocker/docker-poolto thinpool.
  Logicalvolume "docker-pool" changed.
 

重启docker服务:

servicedockerstart
 

确认配置生效: a) vg信息:

[root@localhost ~]# vgdisplay
  --- Volumegroup ---
  VGName              docker
  SystemID
  Format                lvm2
  MetadataAreas        1
  MetadataSequenceNo  6
  VGAccess            read/write
  VGStatus            resizable
  MAXLV                0
  CurLV                1
  OpenLV              0
  MaxPV                0
  CurPV                1
  ActPV                1
  VGSize              10.00 GiB
  PESize              4.00 MiB
  TotalPE              2559
  AllocPE / Size      1028 / 4.02 GiB
  Free  PE / Size      1531 / 5.98 GiB
  VGUUID              v1eiA1-P7CS-pUx9-D0uS-eVwZ-41pA-SKdlef
 

b) docker info:

[root@localhost ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
ServerVersion: 1.10.3
StorageDriver: devicemapper
 PoolName: docker-docker--pool
 PoolBlocksize: 524.3 kB
 BaseDeviceSize: 10.74 GB
 BackingFilesystem: xfs
 Datafile:
 Metadatafile:
 DataSpaceUsed: 20.45 MB
 DataSpaceTotal: 4.287 GB
 DataSpaceAvailable: 4.266 GB
 MetadataSpaceUsed: 40.96 kB
 MetadataSpaceTotal: 12.58 MB
 MetadataSpaceAvailable: 12.54 MB
 UdevSyncSupported: true
 DeferredRemovalEnabled: true
 DeferredDeletionEnabled: true
 DeferredDeletedDeviceCount: 0
 LibraryVersion: 1.02.107-RHEL7 (2016-06-09)
ExecutionDriver: native-0.2
LoggingDriver: json-file
Plugins:
 Volume: local
 Network: bridgenull host
KernelVersion: 3.10.0-327.22.2.el7.x86_64
OperatingSystem: CentOSLinux 7 (Core)
OSType: linux
Architecture: x86_64
NumberofDockerHooks: 2
CPUs: 2
TotalMemory: 1.782 GiB
Name: localhost.localdomain
ID: AY7O:H2RJ:33J5:62FY:GHZE:AGFH:F42E:AH3J:WY7N:JXQK:LHBS:BDKY
WARNING: bridge-nf-call-iptablesis disabled
WARNING: bridge-nf-call-ip6tablesis disabled
Registries: docker.io (secure)
 

3) Docker Storage配置选项,查看/etc/sysconfig/docker-storage:

DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/centos-docker--pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true "

http://www.tuicool.com/articles/UFJFRzN

 

参考

猜你喜欢

转载自m635674608.iteye.com/blog/2357247