3.9.2. 씬 풀 스토리지 구성
Docker에 포함된 docker-storage-setup 스크립트를 사용하여 씬 풀 장치를 생성하고 Docker의 스토리지 드라이버를 구성할 수 있습니다. Docker를 설치한 후 이 작업을 수행할 수 있으며 이미지 또는 컨테이너를 만들기 전에 수행해야 합니다. 이 스크립트는 /etc/sysconfig/docker-storage-setup 파일에서 구성 옵션을 읽고 논리 볼륨 생성을 위한 세 가지 옵션을 지원합니다.
- 추가 블록 장치를 사용합니다.
- 지정된 기존 볼륨 그룹을 사용합니다.
- 루트 파일 시스템이 있는 볼륨 그룹에서 남은 여유 공간을 사용합니다.
추가 블록 장치를 사용하는 것은 가장 강력한 옵션이지만 Docker 스토리지를 구성하기 전에 다른 블록 장치를 호스트에 추가해야 합니다. 다른 옵션 둘 다 호스트를 프로비저닝할 때 사용 가능한 공간을 남겨 두어야합니다. 루트 파일 시스템 볼륨 그룹의 사용 가능한 공간을 사용하는 것은 일부 애플리케이션에 문제가 발생하는 것으로 알려져 있습니다(예: Red Hat Mobile Application Platform (RHMAP).
다음 세 가지 옵션 중 하나를 사용하여 docker-pool 볼륨을 만듭니다.
추가 블록 장치를 사용하려면 다음을 수행합니다.
/etc/sysconfig/docker-storage-setup 에서1.8.0 S 를 사용할 블록 장치의 경로로 설정합니다. VG 를 볼륨 그룹 이름으로 설정하여 docker-vg 와 같이 만듭니다. 예를 들면 다음과 같습니다.
# cat <<EOF > /etc/sysconfig/docker-storage-setup DEVS=/dev/vdc VG=docker-vg EOF
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.
기존 지정된 볼륨 그룹을 사용하려면 다음을 수행합니다.
/etc/sysconfig/docker-storage-setup 에서 VG 를 볼륨 그룹으로 설정합니다. 예를 들면 다음과 같습니다.
# cat <<EOF > /etc/sysconfig/docker-storage-setup VG=docker-vg EOF
그런 다음 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.
루트 파일 시스템이 있는 볼륨 그룹에서 나머지 여유 공간을 사용하려면 다음을 수행합니다.
루트 파일 시스템이 있는 볼륨 그룹에 필요한 여유 공간이 있는지 확인한 다음 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.
구성을 확인합니다. /etc/sysconfig/docker-storage 파일에 dm.thinpooldev 및 docker-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 모니터링을 통해 볼륨 그룹을 채우기 위해 증가합니다.
Docker를 시작하거나 다시 시작합니다.
호스트에서 Docker가 실행되지 않은 경우 서비스를 활성화하고 시작한 다음 실행 중인지 확인합니다.
# systemctl enable docker # systemctl start docker # systemctl is-active docker
Docker가 이미 실행 중인 경우:
Docker를 다시 초기화합니다.
주의그러면 현재 호스트에 있는 모든 컨테이너 또는 이미지가 제거됩니다.
# systemctl stop docker # rm -rf /var/lib/docker/* # systemctl restart docker
- /var/lib/docker/ 폴더의 콘텐츠를 삭제합니다.