3.9.2. 配置精简池存储


您可以使用 Docker 中包含的 docker-storage-setup 脚本来创建精简池设备并配置 Docker 的存储驱动程序。安装 Docker 后,可以进行此操作,且必须在创建镜像或容器前进行此操作。该脚本从 /etc/sysconfig/docker-storage-setup 文件中读取配置选项,并支持 3 个创建逻辑卷的选项:

  • 使用附加块设备。
  • 使用一个已存在的指定的卷组。
  • 使用 root 文件系统所在卷组中的剩余空间。

使用附加块设备是最可靠的选项,但需要在配置 Docker 存储前向您的主机添加另一个块设备。其他选项都需要在置备主机时保留可用空间。使用 root 文件系统卷组中剩余的可用空间会导致一些应用程序出现问题,例如 Red Hat Mobile Application Platform(RHMAP)。

  1. 使用以下三个选项之一创建 docker-pool 卷:

    • 使用附加块设备:

      1. /etc/sysconfig/docker-storage-setup 中,将 DEVS 设置为要使用的块设备的路径。将 VG 设置为要创建的卷组名称,如 docker-vg。例如:

        # cat <<EOF > /etc/sysconfig/docker-storage-setup
        DEVS=/dev/vdc
        VG=docker-vg
        EOF
      2. 运行 docker-storage-setup 并查看输出以确保创建 docker-pool 卷:

        # docker-storage-setup                                                                                                                                                                                                                                [5/1868]
        0
        Checking that no-one is using this disk right now ...
        OK
        
        Disk /dev/vdc: 31207 cylinders, 16 heads, 63 sectors/track
        sfdisk:  /dev/vdc: unrecognized partition table type
        
        Old situation:
        sfdisk: No partitions found
        
        New situation:
        Units: sectors of 512 bytes, counting from 0
        
           Device Boot    Start       End   #sectors  Id  System
        /dev/vdc1          2048  31457279   31455232  8e  Linux LVM
        /dev/vdc2             0         -          0   0  Empty
        /dev/vdc3             0         -          0   0  Empty
        /dev/vdc4             0         -          0   0  Empty
        Warning: partition 1 does not start at a cylinder boundary
        Warning: partition 1 does not end at a cylinder boundary
        Warning: no primary partition is marked bootable (active)
        This does not matter for LILO, but the DOS MBR will not boot this disk.
        Successfully wrote the new partition table
        
        Re-reading the partition table ...
        
        If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
        to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
        (See fdisk(8).)
          Physical volume "/dev/vdc1" successfully created
          Volume group "docker-vg" successfully created
          Rounding up size to full physical extent 16.00 MiB
          Logical volume "docker-poolmeta" created.
          Logical volume "docker-pool" created.
          WARNING: Converting logical volume docker-vg/docker-pool and docker-vg/docker-poolmeta to pool's data and metadata volumes.
          THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
          Converted docker-vg/docker-pool to thin pool.
          Logical volume "docker-pool" changed.
    • 使用现有的、指定的卷组:

      1. /etc/sysconfig/docker-storage-setup 中,将 VG 设置为卷组。例如:

        # cat <<EOF > /etc/sysconfig/docker-storage-setup
        VG=docker-vg
        EOF
      2. 然后运行 docker-storage-setup 并查看输出以确保创建 docker-pool 卷:

        # docker-storage-setup
          Rounding up size to full physical extent 16.00 MiB
          Logical volume "docker-poolmeta" created.
          Logical volume "docker-pool" created.
          WARNING: Converting logical volume docker-vg/docker-pool and docker-vg/docker-poolmeta to pool's data and metadata volumes.
          THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
          Converted docker-vg/docker-pool to thin pool.
          Logical volume "docker-pool" changed.
    • 使用您的根文件系统所在卷组中的剩余空间:

      1. 验证 root 文件系统所在的卷组是否有所需可用空间,然后运行 docker-storage-setup 并查看输出以确保创建了 docker-pool 卷:

        # docker-storage-setup
          Rounding up size to full physical extent 32.00 MiB
          Logical volume "docker-poolmeta" created.
          Logical volume "docker-pool" created.
          WARNING: Converting logical volume rhel/docker-pool and rhel/docker-poolmeta to pool's data and metadata volumes.
          THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
          Converted rhel/docker-pool to thin pool.
          Logical volume "docker-pool" changed.
  2. 验证您的配置。确认 /etc/sysconfig/docker-storage 文件有 dm.thinpooldevdocker-pool 逻辑卷值:

    # cat /etc/sysconfig/docker-storage
    DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/rhel-docker--pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true "
    
    # lvs
      LV          VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      docker-pool rhel twi-a-t---  9.29g             0.00   0.12
    重要

    在使用 Docker 或 OpenShift Container Platform 前,请验证 docker-pool 逻辑卷是否足够大,以满足您的需要。使 docker-pool 卷 60% 成为可用卷组,它将通过 LVM 监控来充满卷组。

  3. 启动或重启 Docker。

    • 如果 Docker 从未在主机上运行,请启用并启动该服务,然后验证它是否正在运行:

      # systemctl enable docker
      # systemctl start docker
      # systemctl is-active docker
    • 如果 Docker 已在运行:

      1. 重新初始化 Docker:

        警告

        这将破坏当前主机上的所有容器或镜像。

        # systemctl stop docker
        # rm -rf /var/lib/docker/*
        # systemctl restart docker
      2. 删除 /var/lib/docker/ 目录中的所有内容。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.