docker动态扩空磁盘和修改路径

  • docker修改保存路径:

  .docker容器默认保存路径在/var/lib/docker中;
  .若docker存储路径中内存不足,用命令df -Th 查看分区目录,查找磁盘大的分区,将docker目录放到分区
  .  df -Th

[root@mips64el-fedora-master2 mapper]# df -Th
文件系统                           类型      容量  已用  可用 已用% 挂载点
devtmpfs                           devtmpfs   16G     0   16G    0% /dev
tmpfs                              tmpfs      16G     0   16G    0% /dev/shm
tmpfs                              tmpfs      16G  4.8M   16G    1% /run
tmpfs                              tmpfs      16G     0   16G    0% /sys/fs/cgroup
/dev/mapper/fedora_sunhaiyong-root ext4       50G   40G   10G   80% /
tmpfs                              tmpfs      16G   16K   16G    1% /tmp
/dev/sda1                          ext3      477M   45M  407M   10% /boot
/dev/mapper/fedora_sunhaiyong-home ext4      1.8T  132G  1.6T    8% /home
tmpfs                              tmpfs     3.2G   16K  3.2G    1% /run/user/989
/dev/dm-4                          xfs        50G  1.7G   49G    4% /var/lib/docker/devicemapper/mnt/95acd1b267faf716049e1b70ab4a682df0744bf5dc42b36b9c6948e2eae053dc
shm                                tmpfs      64M     0   64M    0% /var/lib/docker/containers/b3fa22e3172fd464bc873403f66ac538a82af1c71e67d01ab7ed05b911a4c866/shm
/dev/dm-5                          xfs        50G  5.5G   45G   11% /var/lib/docker/devicemapper/mnt/e692c78e33d7709db886baf72ae8508bcaf052ad17cfa2b495ad73e4a648ffb2
/dev/dm-6                          xfs        50G  9.5G   41G   19% /var/lib/docker/devicemapper/mnt/5f9a028080889e05b201b0737ec8b34b62c27796c74ff9e2c73610b33afbeff2
/dev/dm-7                          xfs        50G  5.3G   45G   11% /var/lib/docker/devicemapper/mnt/b629cdc99fd45d90c4ab3816c6d21c3d0137df2a3c05e193af27020dd79ee596
shm                                tmpfs      64M     0   64M    0% /var/lib/docker/containers/37c649ad313aa15ca7dee1150621c6272bfe0ab17ac646185f21024b780d0a6f/shm
shm                                tmpfs      64M     0   64M    0% /var/lib/docker/containers/f7e2dc963186060212ca67e22280ee118d665e5f2ab7f36636c09ed5633e1208/shm
shm                                tmpfs      64M     0   64M    0% /var/lib/docker/containers/4b958b316337b51feb2f55f5cc9886795370063cfaa2f47ee7d198536c8e8e5d/shm
tmpfs                              tmpfs     3.2G     0  3.2G    0% /run/user/0
/dev/dm-8                          xfs        42G  420M   42G    1% /var/lib/docker/devicemapper/mnt/e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d
shm                                tmpfs      64M     0   64M    0% /var/lib/docker/containers/2dacd6996d97df1e7ae4238b28e8e3425f23b3fe30f9b87b5341c0009960815f/shm

  .首先关闭docker
      systemctl stop docker
  .在home目录下建立一个docker目录
      mv /var/lib/docker* /home/docker
  .建立软链接,保持docker的默认路径不变
      ln -s /home/docker /var/lib/docker
  .启动docker
      systemctl start docker
  .df -hT查看
文件系统                           类型      容量  已用  可用 已用% 挂载点
devtmpfs                           devtmpfs   16G     0   16G    0% /dev
tmpfs                              tmpfs      16G     0   16G    0% /dev/shm
tmpfs                              tmpfs      16G  4.8M   16G    1% /run
tmpfs                              tmpfs      16G     0   16G    0% /sys/fs/cgroup
/dev/mapper/fedora_sunhaiyong-root ext4       50G   12G   36G   24% /
tmpfs                              tmpfs      16G   16K   16G    1% /tmp
/dev/sda1                          ext3      477M   45M  407M   10% /boot
/dev/mapper/fedora_sunhaiyong-home ext4      1.8T  132G  1.6T    8% /home
tmpfs                              tmpfs     3.2G   16K  3.2G    1% /run/user/989
/dev/dm-4                          xfs        50G  1.7G   49G    4% /home/docker/devicemapper/mnt/95acd1b267faf716049e1b70ab4a682df0744bf5dc42b36b9c6948e2eae053dc
shm                                tmpfs      64M     0   64M    0% /home/docker/containers/b3fa22e3172fd464bc873403f66ac538a82af1c71e67d01ab7ed05b911a4c866/shm
/dev/dm-5                          xfs        50G  5.5G   45G   11% /home/docker/devicemapper/mnt/e692c78e33d7709db886baf72ae8508bcaf052ad17cfa2b495ad73e4a648ffb2
/dev/dm-6                          xfs        50G  9.5G   41G   19% /home/docker/devicemapper/mnt/5f9a028080889e05b201b0737ec8b34b62c27796c74ff9e2c73610b33afbeff2
/dev/dm-7                          xfs        50G  5.3G   45G   11% /home/docker/devicemapper/mnt/b629cdc99fd45d90c4ab3816c6d21c3d0137df2a3c05e193af27020dd79ee596
shm                                tmpfs      64M     0   64M    0% /home/docker/containers/37c649ad313aa15ca7dee1150621c6272bfe0ab17ac646185f21024b780d0a6f/shm
shm                                tmpfs      64M     0   64M    0% /home/docker/containers/f7e2dc963186060212ca67e22280ee118d665e5f2ab7f36636c09ed5633e1208/shm
shm                                tmpfs      64M     0   64M    0% /home/docker/containers/4b958b316337b51feb2f55f5cc9886795370063cfaa2f47ee7d198536c8e8e5d/shm
tmpfs                              tmpfs     3.2G     0  3.2G    0% /run/user/0
/dev/dm-8                          xfs        42G  420M   42G    1% /home/docker/devicemapper/mnt/e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d
shm                                tmpfs      64M     0   64M    0% /home/docker/containers/2dacd6996d97df1e7ae4238b28e8e3425f23b3fe30f9b87b5341c0009960815f/shm

 

  • docker扩充磁盘容量

  .docker默认安装后磁盘容量是10G,若磁盘容量不够,导致集群节点unheathy
  .查看docker容器的磁盘大小

root@2dacd6996d97:/# df -hT
Filesystem                                                                                         Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d xfs     10G  419M  9.6G   5% /
tmpfs                                                                                              tmpfs   16G     0   16G   0% /dev
tmpfs                                                                                              tmpfs   16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/fedora_sunhaiyong-home                                                                 ext4   1.8T  132G  1.6T   8% /etc/hosts
shm                                                                                                tmpfs   64M     0   64M   0% /dev/shm
 
  .动态扩充容器磁盘
     退出容器,到主机上,执行dmsetup table ,查看正在运行的容器卷
[root@mips64el-fedora-master2 mapper]# dmsetup table
docker-254:2-92012681-pool: 0 4194304000 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing
fedora_sunhaiyong-home: 0 3768238080 linear 8:2 32770048
docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d: 0 20971520 thin 254:3 183736
fedora_sunhaiyong-swap: 0 32768000 linear 8:2 2048
docker-254:2-92012681-5f9a028080889e05b201b0737ec8b34b62c27796c74ff9e2c73610b33afbeff2: 0 20971520 thin 254:3 183881
docker-254:2-92012681-95acd1b267faf716049e1b70ab4a682df0744bf5dc42b36b9c6948e2eae053dc: 0 20971520 thin 254:3 183908
fedora_sunhaiyong-root: 0 104857600 linear 8:2 3801008128
docker-254:2-92012681-e692c78e33d7709db886baf72ae8508bcaf052ad17cfa2b495ad73e4a648ffb2: 0 20971520 thin 254:3 183883
docker-254:2-92012681-b629cdc99fd45d90c4ab3816c6d21c3d0137df2a3c05e193af27020dd79ee596: 0 20971520 thin 254:3 183879
 
  .上面的20971520 就是代表10G磁盘
  .计算要扩充到的磁盘大小(若50G)
[root@mips64el-fedora-master2 mapper]# echo $((50*1024*1024*1024/512))
104857600

  .使用命令
[root@mips64el-fedora-master2 mapper]# dmsetup table docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d
0 20971520 thin 254:3 183736

  .使用命令修改磁盘大小
[root@mips64el-fedora-master2 mapper]# echo 0 104857600 thin 254:3 183736 | dmsetup load docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d
 
  .现在,如果我们再次检查表,它仍然是相同的,因为新表必须首先激活,使用以下命令:
[root@mips64el-fedora-master2 mapper]# dmsetup resume docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d

  .在该命令之后,再次检查该表,它将具有新的扇区数。我们已经调整了块设备的大小,但我们仍然需要调整文件系统的大小。
[root@mips64el-fedora-master2 mapper]# resize2fs /dev/mapper/docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d

若报错:
    resize2fs: Bad magic number in super-block 当尝试打开 /dev/mapper/docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d 时
找不到有效的文件系统超级块.
解决:
    .看上面的磁盘分区情况,确认文件系统是xfs,xfs扩充磁盘空间用 xfs_growfs 命令
[root@mips64el-fedora-master2 ~]# xfs_growfs /dev/mapper/docker-254:2-92012681-e692c78e33d7709db886baf72ae8508bcaf052ad17cfa2b495ad73e4a648ffb2
xfs_growfs: /dev/mapper/docker-254:2-92012681-e692c78e33d7709db886baf72ae8508bcaf052ad17cfa2b495ad73e4a648ffb2 is not a mounted XFS filesystem

    .进入容器,查看容器磁盘并没有改变

    .这时才想到我们docker的保存路径改变了,因此用以下命令查找具体位置
[root@mips64el-fedora-master2 mapper]# mount |grep docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d
/dev/mapper/docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d on /home/docker/devicemapper/mnt/e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d type xfs (rw,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota)

    .执行命令 xfs_growfs /home/docker/devicemapper/mnt/e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d 完成文件磁盘的扩容
fs_growfs /home/docker/devicemapper/mnt/e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d
meta-data=/dev/mapper/docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d isize=256    agcount=16, agsize=163824 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=2621184, imaxpct=25
         =                       sunit=16     swidth=16 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=16 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2621184 to 2621440
   
   .进入容器查看磁盘变化
root@2dacd6996d97:/# df -hT
Filesystem                                                                                         Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-254:2-92012681-e044dfa0c0c7e1187a014b3f2c4cc974c243e677c61b4b54153a6f07a142cc3d xfs     50G  420M   49G   1% /
tmpfs                                                                                              tmpfs   16G     0   16G   0% /dev
tmpfs                                                                                              tmpfs   16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/fedora_sunhaiyong-home                                                                 ext4   1.8T  132G  1.6T   8% /etc/hosts
shm                                                                                                tmpfs   64M     0   64M   0% /dev/shm

 

可参考官网链接:http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值