背景
- 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驱动配置失败。
三种方式配置后端存储
1. 添加一块空闲的硬盘座位后端存储
[root@harbor ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part /
sdb 8:16 0 10G 0 disk
编辑 /usr/share/container-storage-setup/container-storage-setup 配置如下内容:
DEVS=/dev/sdb # 添加的硬盘
VG=docker-vg
执行
[root@harbor ~]# docker-storage-setup
INFO: Volume group backing root filesystem could not be determined
INFO: Writing zeros to first 4MB of device /dev/sdb
4+0 records in
4+0 records out
4194304 bytes (4.2 MB) copied, 0.0068868 s, 609 MB/s
INFO: Device node /dev/sdb1 exists.
Physical volume "/dev/sdb1" successfully created.
Volume group "dockervg" successfully created
此操作将空余块设备(可以是分区)创建成physical volume(pv)
在由这些PV组成volume group(vg)
从vg中建立两个logical volume(lv),data和matedata
将data和matedata映射成thin-pool
2. 使用一个已存在的volume group
编辑 /usr/share/container-storage-setup/container-storage-setup VG=docker-vg 完成以后直接执行命令 #docker-storage-setup
3. 直接使用系统剩余空间
直接执行命令 docker-storage-setup
|