나는 한 컴퓨터에서 여러 개의 LXC 컨테이너를 실행하고 있습니다. 해당 rootfs는 기본 위치에 있습니다 /var/lib/lxc/*/rootfs
. 이 디렉터리는 호스트 시스템의 상당히 작은 파티션에 있습니다. 훨씬 더 큰 파티션을 설치했습니다 /home
.
백업 저장소를 다음으로 이동할 수 있는 옵션이 있습니까 /home
? 바람직하게는 컨테이너당입니다.
나도 해낼 수 있었단 걸 알아앞으로실행 중인 컨테이너가 여러 개 있습니다( lxc-create -P PATH
). 하지만 이제 그들이 일어섰으니 나는 그들을 잃고 싶지 않습니다.
답변1
rootfs는 구성 옵션입니다. 컨테이너가 중지되면 백업 디렉터리를 원하는 위치로 이동하고 구성 파일에 지정할 수 있습니다.
lxc.rootfs = /home/utsname
이는 심볼릭 링크를 사용하는 것보다 나을 수 있습니다.
LXC는 파일 백업도 허용합니다. 블록 장치와 원시 이미지를 사용할 수 있습니다.
원천:https://linuxcontainers.org/lxc/manpages/man5/lxc.container.conf.5.html
답변2
나는 개인적으로 다른 접근 방식을 선호합니다. 컨테이너의 OS 부분이 상대적으로 작다는 점을 고려하면(많은 서비스를 실행하는 데비안 jessie 서버의 경우 최대 2GB, 원격 데스크톱에서 작동하는 우분투 이미지의 경우 약 3GB) OS를 /var/lib/lxc에 상주하고 다음을 사용합니다. 컨테이너 데이터 별도의 파티션.
간단히 /var/lib/lxc/container/fstab 파일을 수정하면 됩니다:
/mnt/data/container-data/ /var/lib/lxc/container/rootfs/home/ none bind 0 0
마스터 호스트에 폴더(소스 및 대상)를 생성하고, 컨테이너를 중지하고, 데이터를 이동하고, 컨테이너를 다시 시작하세요!
위의 예에서 두 디렉토리는 모두 lxc 호스트의 /mnt/data 파티션에 있는데, 제 경우에는 대용량 디스크입니다.
이 접근 방식에는 많은 장점이 있습니다. 운영 체제와 데이터를 분할하면 위험한 작업을 완료해야 할 때 테스트 컨테이너를 빠르게 복사하고 시작할 수 있습니다(예: "aptitude -f dist-upgrade").
컨테이너를 중지합니다(fstab의 파티션은 /var/lib/lxc/container/rootfs/ 디렉터리에서 분리됩니다).
lxc-stop -n container
컨테이너를 복사합니다.
mkdir /var/lib/lxc/containertest rsync -Pavv /var/lib/lxc/container/ /var/lib/lxc/containertest/
/var/lib/lxc/containertest/config 및 /var/lib/lxc/containertest/fstab을 적절히 수정해야 합니다.
새로운 컨테이너 테스트를 시작하고, 사용하고, 결과를 확인해보세요!
lxc-start -n containertest
또한, 여러분의 고민에 답해드리자면, 이렇게 하지 않는다고 걱정하지 않으셔도 됩니다.앞으로:lxc의 가장 큰 장점 중 하나는 다양성입니다!
답변3
게으른 사람이라고 부르세요. 하지만 /var/lib/lxc에 큰 디렉터리를 마운트(바인딩)할 수 있다면 왜 구성 파일을 엉망으로 만들까요?
컨테이너를 종료하고 내용을 /home/lxc/whatever로 옮긴 다음 다시 바인드 마운트하면 됩니다. 완료됩니다!
답변4
기본적으로 모든 새 컨테이너의 경로를 변경하는 것이 좋습니다.
# vim /etc/lxc/lxc.conf
lxc.lxcpath=/media/other/programs/OS/containers/
/media/other/programs/OS/containers/
모든 컨테이너는 디렉토리에 위치합니다 .
모든 이전 컨테이너는 이 사람처럼 이동 mv
되고 구성이 편집 됩니다.https://unix.stackexchange.com/a/191620/53139