CentOS7下Docker Storage Pool扩容

2017-12-30 11:25:32来源:oschina作者:xiaomin0322人点击

分享
CentOS7下Docker Storage Pool扩容 博客分类: dubbo

前言:在docker刚起步的时候,RHEL的内核并不支持AUFS作为docker的后端存储而将移植工作推迟。后来,红帽和docker合作开发一种基于Device Mapper技术的后端存储框架,也就是现在的device-mapper插件。

问题

systemctl start docker.service 提示启动失败。

分析

使用命令查看docker启动日志:


➜# journalctl -xe 1

发现docker-pool容量不足,不能继续分配新的空间,错误信息如下:


Insufficient Free Extents for a docker-pool 1

由于centos上的docker使用存储池,也就是基于LVM的块系统,所以只要增加docker-pool的容量就可以解决问题了。

收集证据

不看日志不行,比如有没有闲置的硬盘?物理卷挂在哪个硬盘?卷组挂在那个物理卷上?逻辑卷各自有多大?


查看磁盘容量:


➜# df -h
➜# fdisk -l 1
2

查看物理卷(pv)信息:


➜# pvscan 1

查看卷组(vg)信息:


➜# vgdisplay 1

查看逻辑卷(lv)信息:


➜# lvdisplay 1
解决问题 查看卷组(vg)的使用和卷组的物理卷(PV)的情况:➜# pvs -o+pv_used 1

发现sdc确没有剩余空间了,查询结果如下:


➜# pvs -o+pv_used
PVVGFmtAttr PSize PFree Used
/dev/sdc2VolGroup00 lvm2 a-- 558.69g 0 558.69g 1
2
3

新加一块硬盘就解决问题了。就怕没有新硬盘,需要重新划分区,move物理卷。

fdisk /dev/sde;
创建主分区和扩展分区都行;
创建逻辑分区;这里有个坑,不创建逻辑分区是无法格式化硬盘的,格不了硬盘,pvcreate会报错。
格式化逻辑分区 mkfs.ext3 /dev/sde2;

创建物理卷

➜# pvcreate /dev/sde2 1 为卷组VolGroup00添加新的物理卷sde2来增大卷组的容量➜# vgextend VolGroup00 /dev/sde2 1 用vg里新增的空间扩展LVM逻辑卷(lv)的大小➜# lvextend -L +1T /dev/VolGroup00/docker-pool 1 重启电脑,使划分生效,比较暴力好用(软刷新使用resizefs2)。resize2fs /dev/VolGroup00/docker-pool 1

很不幸,执行resize2fs时报错了。直接reboot解决问题。

最后一步重启docker服务systemctl start docker.service 1

终于要见到佛祖了,想想心里还有些小激动~~


然而启动又失败了,第一件事是做什么,还不赶紧看看日志!


journalctl -xe 1

发现172.17.0.1这个ip无法bind, 看了看网卡,日,docker0的虚拟net-card没了。这里不卖关子了,大部分情况是/var/lib/docker下的配置出错了,解决方案有两种:

创建docker用户组,保证用户有足够的权限运行docker。

sudo usermod -aG docker $(whoami) 1

简单暴力我喜欢的方法,直接删掉/var/lib/docker,相当于重置docker的运行配置,重启解决问题。(友情提示:删除之前要备份,文件再拷贝过去就可以正常用了)

sudo service docker stop
sudo rm -rf /var/lib/docker
sudo service docker start1
2
3

一切都平静了,去喝杯咖啡。

➜# docker info
Containers: 37
Running: 5
Paused: 0
Stopped: 32
Images: 365
Server Version: 1.10.3
Storage Driver: devicemapper
Pool Name: VolGroup00-docker--pool
Pool Blocksize: 524.3 kB
Base Device Size: 107.4 GB
Backing Filesystem: xfs
Data file:
Metadata file:
Data Space Used: 263.7 GB
Data Space Total: 1.388 TB
Data Space Available: 1.124 TB
Metadata Space Used: 35.59 MB
Metadata Space Total: 604 MB
Metadata Space Available: 568.4 MB
Udev Sync Supported: true
Deferred Removal Enabled: true
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Library Version: 1.02.107-RHEL7 (2016-06-09)
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 3.10.0-327.36.3.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 2
CPUs: 24
Total Memory: 251.7 GiB
Name: localhost.localdomain
ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Registries: 190087c6.m.daocloud.io (secure), docker.io (secure 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

docker storage pool再多说几句。因为是基于LVM的,所以镜像和容器都在块系统中,也就是VolGroup00这个池子里。/var/lib/docker主要存储的是镜像和容器的配置文件和device-mapper映射文件等,所以这个目录不会太大。



http://blog.csdn.net/counsellor/article/details/53413743

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台