将/var/lib/docker挂载到新磁盘
场景描述:
使用云主机,默认配备一块40G磁盘,且未分区,在docker运行一段时间后,/var/lib/docker耗用空间越来越大,为避免撑爆根目录,需要将/var/lib/docker目录挂载到新磁盘。现有5块20G物理磁盘,使用LVM将它们创建为大容量的逻辑卷。
LVM原理简介:
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现。
LVM包括Physical volume (PV)、Volume group (VG)、Logical volume(LV)、 Physical extent (PE)等概念,下图简单说明了物理卷(PV)、卷组(VG)、逻辑卷(LV)等关系。
结合此场景,可以看出LVM在此处的作用是将多个小容量物理磁盘融合为一个大容量的卷组,再从中按需划分出一定容量的逻辑卷给/var/lib/docker。
系统环境:CentOs7.4,docker18.06
步骤:
1、查看当前磁盘情况
[root@preview-cluster4 ~]# lsblk
其中vda为系统磁盘,vdb-vdf为新增磁盘
2、为新增盘创建pv、vg、lv
创建pv
[root@preview-cluster4 ~]# pvcreate /dev/vdb /dev/vdc /dev/vdd /dev/vde /dev/vdf
创建一个名为docker的vg
[root@preview-cluster4 ~]# vgcreate docker /dev/vdb /dev/vdc /dev/vdd /dev/vde /dev/vdf
查看vg创建情况
[root@preview-cluster4 ~]# vgdisplay docker
创建名为thinpool的lv,占总VG空间的95%
[root@preview-cluster4 ~]# lvcreate --wipesignatures y -n thinpool docker -l 95%VG
查看
3、关闭docker,备份/var/lib/docker
关闭docker
[root@preview-cluster4 ~]# systemctl stop docker
备份
[root@preview-cluster4 ~]# mv /var/lib/docker /var/lib/docker.bak
新建 /var/lib/docker
[root@preview-cluster4 ~]# mkdir /var/lib/docker
格式化
[root@preview-cluster4 ~]# mkfs.ext4 /dev/docker/thinpool
挂载
[root@preview-cluster4 ~]# mount /dev/docker/thinpool /var/lib/docker
查看
[root@preview-cluster4 ~]# df -h
编辑 /etc/fstab,开机自动挂载
[root@preview-cluster4 ~]# vim /etc/fstab
UUID=4fb2****-8b37--9-eced787a** / xfs defaults 0 0
/dev/mapper/docker-thinpool /var/lib/docker ext4 errors=remount-ro 0 1
还原文件
[root@preview-cluster4 ~]# mv /var/lib/docker.bak/* /var/lib/docker/
启动docker
[root@preview-cluster4 ~]# systemctl start docker
[root@preview-cluster4 ~]# docker info
参考链接:
https://www.dwhd.org/20150521_225146.html
https://www.cnblogs.com/kuku0223/p/8120373.html