5.4. 그래프 드라이버 선택


컨테이너 런타임은 이미지와 컨테이너를 그래프 드라이버(예: DeviceMapper 및 OverlayFS)에 저장합니다. 각각에는 장단점이 있습니다.

지원 가능성 및 사용 경고 등 OverlayFS에 대한 자세한 내용은 해당 버전의 Red Hat Enterprise Linux (RHEL) 7 릴리스 노트 를 참조하십시오.

표 5.3. 그래프 드라이버 비교
이름설명혜택제한 사항

OverlayFS

  • 오버레이
  • overlay2

하위 시스템(parent)과 상위(parent) 파일 시스템과 작업 디렉터리(하위 시스템과 동일한 파일 시스템)를 결합합니다. 하위 파일 시스템은 기본 이미지이며 새 컨테이너를 만들 때 델타가 포함된 새로운 상위 파일 시스템이 생성됩니다.

  • 컨테이너 시작 및 중지 시 장치 매퍼보다 빠릅니다. 장치 매퍼와 Overlay의 시작 시간 차이점은 일반적으로 1초 미만입니다.
  • 페이지 캐시 공유를 허용합니다.

POSIX 호환이 아닙니다.

장치 매퍼 씬 프로비저닝

LVM, 장치 매퍼 및 dm-thinp 커널 모듈을 사용합니다. 루프백 장치를 제거하는 것과는 다릅니다. 원시 파티션(파일 시스템 없음)과 간단히 대화합니다.

  • 중간 부하 및 고밀도에서는 성능상의 이점을 얻을 수 있습니다.
  • 용량에 대한 컨테이너별 제한을 제공합니다(기본적으로 10G).
  • 이를 위해 전용 파티션이 있어야합니다.
  • RHEL(Red Hat Enterprise Linux)에서는 기본적으로 설정되어 있지 않습니다.
  • 모든 컨테이너 및 이미지는 동일한 용량 풀을 공유합니다. 풀을 삭제하고 다시 생성하지 않고 크기를 조정할 수 없습니다.

장치 Mapper loop-lvm

장치 매퍼 씬 프로비저닝 모듈(dm-thin-pool)을 사용하여 CoW(Copy-On-Write) 스냅샷을 구현합니다. 각 장치 매퍼 그래프 위치에 대해 각각 두 개의 블록 장치를 기반으로 하는 씬 풀이 생성됩니다. 하나는 데이터용이고 하나는 메타데이터용입니다. 기본적으로 이러한 블록 장치는 자동으로 생성된 스파스 파일의 루프백 마운트를 사용하여 자동으로 생성됩니다.

이는 상자 밖으로 작동하므로 프로토타이핑 및 개발 목적에 유용합니다.

  • Unix(POSIX) 기능을 위한 모든 이식 가능한 운영 체제 인터페이스가 작동하는 것은 아닙니다(예: O_DIRECT). 가장 중요한 점은 이 모드는 프로덕션 워크로드에 대해 지원되지 않는 것입니다.
  • 모든 컨테이너 및 이미지는 동일한 용량 풀을 공유합니다. 풀을 삭제하고 다시 생성하지 않고 크기를 조정할 수 없습니다.

성능 향상을 위해 Red Hat은 장치 매퍼를 통해 overlayFS 스토리지 드라이버를 사용하는 것이 좋습니다. 그러나 프로덕션 환경에서 이미 Device Mapper를 사용하는 경우 컨테이너 이미지 및 컨테이너 루트 파일 시스템에 씬 프로비저닝을 사용하는 것이 좋습니다. 그러지 않으면 항상 CRI-O에 Docker 엔진 또는 overlayFS에 overlayfs2를 사용합니다.

루프 장치를 사용하면 성능에 영향을 줄 수 있습니다. 계속 사용할 수 있지만 다음 경고 메시지가 기록됩니다.

devmapper: Usage of loopback devices is strongly discouraged for production use.
Please use `--storage-opt dm.thinpooldev` or use `man docker` to refer to
dm.thinpooldev section.

간편한 스토리지 설정을 위해 docker-storage-setup 유틸리티를 사용하면 많은 설정 세부 정보를 자동화할 수 있습니다.

Overlay의 경우

  1. /etc/sysconfig/docker-storage-setup 파일을 편집하여 장치 드라이버를 지정합니다.

    STORAGE_DRIVER=overlay2
    참고

    CRI-O를 사용하는 경우 STORAGE_DRIVER=overlay 를 지정합니다.

    CRI-O에서는 기본 오버레이 스토리지 드라이버에서 overlay2 최적화를 사용합니다.

    OverlayFS를 사용하면 다른 논리 볼륨에 imagefs 가 필요한 경우 CONTAINER_ROOT_LV_NAMECONTAINER _ROOT_LV_MOUNT_PATH 를 설정해야 합니다. CONTAINER_ROOT_LV_MOUNT_PATH 를 설정하려면 CONTAINER_ROOT_LV_NAME 을 설정해야 합니다. 예를 들어 CONTAINER_ROOT_LV_NAME="container-root-lv". 자세한 내용은 Overlay Graph 드라이버 사용을 참조하십시오.

  2. docker 스토리지(예: /dev/xvdb) 전용 디스크 드라이브가 있는 경우 /etc/sysconfig/docker-storage-setup 파일에 다음을 추가합니다.

    DEVS=/dev/xvdb
    VG=docker_vg
  3. docker-storage-setup 서비스를 다시 시작하십시오.

    # systemctl restart docker-storage-setup
  4. docker가 overlay2를 사용하고 있고 디스크 공간 사용을 모니터링하려면 docker info 명령을 실행합니다.

    # docker info | egrep -i 'storage|pool|space|filesystem'

    출력 예

    Storage Driver: overlay2 1
     Backing Filesystem: extfs

    1
    overlay2 를 사용할 때 docker info 출력.

    OverlayFS는 Red Hat Enterprise Linux 7.2의 컨테이너 런타임 사용 사례에서도 지원되며, 보다 빠르게 시작 시간 및 페이지 캐시 공유를 제공하므로 전체 메모리 활용도를 줄임으로써 밀도를 향상시킬 수 있습니다.

Thinpool의 경우

  1. /etc/sysconfig/docker-storage-setup 파일을 편집하여 장치 드라이버를 지정합니다.

    STORAGE_DRIVER=devicemapper
  2. docker 스토리지(예: /dev/xvdb) 전용 디스크 드라이브가 있는 경우 /etc/sysconfig/docker-storage-setup 파일에 다음을 추가합니다.

    DEVS=/dev/xvdb
    VG=docker_vg
  3. docker-storage-setup 서비스를 다시 시작하십시오.

    # systemctl restart docker-storage-setup

    다시 시작한 후 docker-storage-setupdocker_vg 라는 볼륨 그룹을 설정하고 thin-pool 논리 볼륨을 생성합니다. RHEL의 씬 프로비저닝 문서는 LVM 관리자 가이드에서 확인할 수 있습니다. lsblk 명령을 사용하여 새로 생성된 볼륨을 확인합니다.

    # lsblk /dev/xvdb

    출력 예

    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    xvdb 202:16 0 20G 0 disk
    └─xvdb1 202:17 0 10G 0 part
      ├─docker_vg-docker--pool_tmeta 253:0 0 12M 0 lvm
      │ └─docker_vg-docker--pool 253:2 0 6.9G 0 lvm
      └─docker_vg-docker--pool_tdata 253:1 0 6.9G 0 lvm
      └─docker_vg-docker--pool 253:2 0 6.9G 0 lvm

    참고

    씬 프로비저닝된 볼륨은 마운트되지 않으며 파일 시스템(프로덕션 컨테이너에 XFS 파일 시스템이 있음)이 없으므로 df 출력에 표시되지 않습니다.

  4. docker가 LVM thinpool을 사용하고 있는지 확인하고 디스크 공간 사용을 모니터링하려면 docker info 명령을 실행합니다.

    # docker info | egrep -i 'storage|pool|space|filesystem'

    출력 예

    Storage Driver: devicemapper 1
     Pool Name: docker_vg-docker--pool 2
     Pool Blocksize: 524.3 kB
     Backing Filesystem: xfs
     Data Space Used: 62.39 MB
     Data Space Total: 6.434 GB
     Data Space Available: 6.372 GB
     Metadata Space Used: 40.96 kB
     Metadata Space Total: 16.78 MB
     Metadata Space Available: 16.74 MB

    1
    devicemapper 를 사용할 때 docker info 출력입니다.
    2
    /etc/sysconfig/docker-storage-setup 에서 지정한 VG 에 해당합니다.

기본적으로 씬 풀은 기본 블록 장치의 40%를 사용하도록 구성됩니다. 스토리지를 사용하면 LVM에서 씬 풀을 100%까지 자동으로 확장합니다. 따라서 Data Space Total 값이 기본 LVM 장치의 전체 크기와 일치하지 않습니다.

개발 시 Red Hat 배포판의 docker는 기본적으로 루프백이 마운트된 스파스 파일로 설정됩니다. 시스템이 루프백 모드를 사용하고 있는지 확인하려면 다음을 수행합니다.

# docker info|grep loop0

출력 예

 Data file: /dev/loop0

5.4.1. SELinux에서 OverlayFS 또는 DeviceMapper 사용의 이점

OverlayFS 그래프의 주요 장점은 동일한 노드에서 이미지를 공유하는 컨테이너 간에 Linux 페이지 캐시를 공유하는 것입니다. OverlayFS의 이 특성으로 인해 컨테이너를 시작하는 동안 I/O(I/O)가 감소되고(따라서 여러 100밀리초 동안 컨테이너 시작 시간이 빨라짐) 및 노드에서 유사한 이미지가 실행될 때 메모리 사용량이 감소됩니다. 이 두 가지 결과는 특히 밀도를 최적화하기위한 목표를 가진 많은 환경에서 유용하며 높은 컨테이너 량율 (예: 빌드 파업) 또는 이미지 콘텐츠에 중요한 중복을 가진 사람들이 있습니다.

씬 프로비저닝된 장치가 컨테이너별로 할당되므로 페이지 캐시 공유는 DeviceMapper에서 불가능합니다.

참고

OverlayFS는 RHEL (Red Hat Enterprise Linux) 7.5의 기본 Docker 스토리지 드라이버이며 7.3 이상에서 지원됩니다. 성능을 향상시키기 위해 OverlayFS를 RHEL의 기본 Docker 스토리지 구성으로 설정합니다. Docker 컨테이너 런타임과 함께 사용하려면 OverlayFS 구성 지침을 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.