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 와 같이 만듭니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat <<EOF > /etc/sysconfig/docker-storage-setup DEVS=/dev/vdc VG=docker-vg EOF
# cat <<EOF > /etc/sysconfig/docker-storage-setup DEVS=/dev/vdc VG=docker-vg EOF
docker-storage-setup 을 실행하고 출력을 검토하여 docker-pool 볼륨이 생성되었는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker-storage-setup [5/1868]
# 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 를 볼륨 그룹으로 설정합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat <<EOF > /etc/sysconfig/docker-storage-setup VG=docker-vg EOF
# cat <<EOF > /etc/sysconfig/docker-storage-setup VG=docker-vg EOF
그런 다음 docker-storage-setup 을 실행하고 출력을 검토하여 docker-pool 볼륨이 생성되었는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker-storage-setup
# 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 볼륨이 생성되었는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker-storage-setup
# 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 논리 볼륨 값이 있는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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가 실행되지 않은 경우 서비스를 활성화하고 시작한 다음 실행 중인지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl enable docker systemctl start docker systemctl is-active docker
# systemctl enable docker # systemctl start docker # systemctl is-active docker
Docker가 이미 실행 중인 경우:
Docker를 다시 초기화합니다.
주의그러면 현재 호스트에 있는 모든 컨테이너 또는 이미지가 제거됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl stop docker rm -rf /var/lib/docker/* systemctl restart docker
# systemctl stop docker # rm -rf /var/lib/docker/* # systemctl restart docker
- /var/lib/docker/ 폴더의 콘텐츠를 삭제합니다.