4000개 마운트 후 마운트 속도가 느려짐

4000개 마운트 후 마운트 속도가 느려짐

다양한 chroot에 대해 총 10,000개의 바인드 마운트를 생성해야 합니다. 약 3000-4000번 마운트한 후에는 100/s에서 약 5-10/s로 상당히 느려집니다. 나는 이것이 커널에서 가능한 할당에 대한 이상한 내부 제한에 도달하고 커널이 각 설치마다 이를 확장해야 한다고 가정합니다. 이를 미리 개선할 수 있는 알려진 sysctl 설정이 있습니까?

답변1

네임스페이스 측면에서 생각하면 필요한 설치 수를 줄일 수 있습니다. chroot 환경에 사용하고 있으므로 각 환경에 대해 여러 설치를 수행하고 있는 것 같습니다.

템플릿 환경을 만들고 자체 네임스페이스에 애플리케이션을 설치하면 이를 줄일 수 있습니다.

WikipediaLinux 네임스페이스:

Linux 네임스페이스는 2002년 2.4.19 커널에서 시작되었습니다.

네임스페이스 내에서 다른 프로세스와 공유되지 않는 마운트를 생성할 수 있습니다. 따라서 새 네임스페이스를 시작하고 애플리케이션을 chroot 환경에 바인드 마운트한 다음 해당 환경으로 chroot할 수 있습니다. 다른 응용 프로그램에서는 마지막 설치를 볼 수 없습니다.

각 환경에 필요한 것이 무엇인지 알고 있다고 가정하면 다음과 같이 /etc /dev /proc /sys /tmp /bin템플릿을 만들 수 있습니다 /chroot_env.

# bind mount
/chroot_env
/chroot_env/etc
/chroot_env/dev
/chroot_env/proc
/chroot_env/sys
/chroot_env/tmp
/chroot_env/bin
# With empty directories
/chroot_env/opt
/chroot_env/opt/app

그런 다음 실제로 전화를 걸기 전에 다음을 chroot수행할 수 있습니다.

# Start a new shell in a new namespace
unshare --mount
mount --bind /opt/my_app /chroot_env/opt/app

# run the app as a chroot
chroot /chroot_env /opt/my_app

스크립트에서 이 작업을 수행하려면 다음을 수행해야 할 수도 있습니다.

unshare --mount sh -c 'mount --bind /opt/my_app /chroot_env/opt/app && chroot /chroot_env /opt/my_app/run'

/opt/app, 환경당 한 번이 아니라 애플리케이션당 한 번(?)만 설치하면 됩니다.

관련 정보