• DOCKER 从入门到放弃(五)


    添加docker启动参数修改存储大小

    添加--storage-opt 参数设置thin-pool和元数据大小
    --storage-opt dm.loopmetadatasize=10G --storage-opt dm.loopdatasize=400G 修改thin-pool池大小为400g,元数据大小为10g

    [root@docker opt]# cat /etc/sysconfig/docker|grep -v "^#"
    
    OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --graph=/opt/docker --storage-opt dm.loopmetadatasize=10G    --storage-opt dm.loopdatasize=400G'
    if [ -z "${DOCKER_CERT_PATH}" ]; then
        DOCKER_CERT_PATH=/etc/docker
    fi
    
    --storage-opt dm.loopmetadatasize=10G    --storage-opt dm.loopdatasize=400G
    

    也可以修改/usr/lib/systemd/system/docker.service 文件,但是要使用systemctl daemon-reload重载配置文件

    重启docker,不建议使用systemctl restart docker 命令,存在不会卸载环回设备直接启动docker,导致存储大小无法修改

    [root@docker opt]# systemctl stop docker
    [root@docker opt]# systemctl start docker
    
    

    查看修改后的存储容量

    [root@docker opt]# docker info|grep -i data
     WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
     Data file: /dev/loop0
     Metadata file: /dev/loop1
     Data Space Used: 907.9 MB
     Data Space Total: 429.5 GB
     Data Space Available: 14.89 GB
     Metadata Space Used: 3.92 MB
     Metadata Space Total: 10.74 GB
     Metadata Space Available: 10.73 GB
     Data loop file: /opt/docker/devicemapper/devicemapper/data
     Metadata loop file: /opt/docker/devicemapper/devicemapper/metadata
     
    

    使用truncat 命令扩大环回设备文件大小

    先找到存储的环回设备文件路径

    [root@docker opt]# docker info|grep "loop file"
     
     Data loop file: /opt/docker/devicemapper/devicemapper/data
     Metadata loop file: /opt/docker/devicemapper/devicemapper/metadata
    

    使用truncate 命令扩大空间

    [root@docker opt]# truncate -s 800g /opt/docker/devicemapper/devicemapper/data     #扩大thin-pool到800g
    [root@docker opt]# truncate -s 20g /opt/docker/devicemapper/devicemapper/metadata    #扩大元数据到20g
    

    重启docker,不建议使用systemctl restart docker 命令,存在不会卸载环回设备直接启动docker,导致存储大小无法修改

    [root@docker opt]# systemctl stop docker
    [root@docker opt]# systemctl start docker
    

    在重新挂载环回设备后,环回设备容量变化后docker 会自动更新devicemap的映射表,也可以在重启前手动完成更新操作,如下:

    此方法无法修改metadata space的大小

    查看环回设备在内存中的大小信息为1000g

    [root@docker devicemapper]# echo $[ $(sudo blockdev --getsize64 /dev/loop0) / 1024 / 1024 / 1024 ]
    1000
    

    使用使用truncate 命令扩大空间

    [root@docker devicemapper]# truncate -s 2000g data 
    [root@docker devicemapper]# ll -h
    total 175M
    -rw------- 1 root root 2.0T Oct 10 01:13 data
    -rw------- 1 root root 100G Oct 10 00:52 metadata
    

    查看在内存中的信息仍然为1000g

    [root@docker devicemapper]# echo $[ $(sudo blockdev --getsize64 /dev/loop0) / 1024 / 1024 / 1024 ]
    1000
    

    重新加载环回设备在内存中的信息

    [root@docker devicemapper]# losetup -c /dev/loop0
    [root@docker devicemapper]# echo $[ $(sudo blockdev --getsize64 /dev/loop0) / 1024 / 1024 / 1024 ]
    2000
    

    查看docker的存储thin-pool池的名称

    [root@docker devicemapper]# dmsetup status | grep ' thin-pool ' | awk -F ': ' {'print $1'}
    docker-253:0-34124585-pool
    

    查看devicemap的映射表中docker存储thin-pool池信息

    [root@docker devicemapper]# dmsetup table docker-253:0-34124585-pool
    0 2097152000 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing 
    

    更新映射表中的信息,先挂起thin-pool池,在修改表中信息,在退出挂起状态

    [root@docker devicemapper]# dmsetup suspend  docker-253:0-34124585-pool
    [root@docker devicemapper]# dmsetup reload docker-253:0-34124585-pool --table '0 4194304000 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing'  #4194304000 是扇区大小值,对应为2T,这儿只修改了逻辑卷组对应到物理磁盘的扇区大小
    [root@docker devicemapper]#  dmsetup resume docker-253:0-34124585-pool
    

    参考资料

    http://www.cnblogs.com/hustcat/p/3908985.html
    https://www.ibm.com/developerworks/cn/linux/l-devmapper/index.html#resources
    https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#increase-capacity-on-a-running-device

  • 相关阅读:
    设计模式-总览
    restful
    springmvc异常统一处理(二)
    springmvc参数校验(二)
    跨语言的RPC
    更安全的RPC接口
    RPC版 “Hello World”
    用例(Use Case)
    参与者
    数据库知识基础入门
  • 原文地址:https://www.cnblogs.com/panjunbai/p/7645662.html
Copyright © 2020-2023  润新知