목적

목적

내 rootfs 스냅샷은 에 있습니다 /mnt/mydisk/my_test_snapshot. 이는 현재 시스템의 완전히 쓰기 가능한 복사본입니다.

/mnt/mydisk/my_test_snapshot루트( ) 폴더 로 사용될 가상 머신(LXC 컨테이너 등)을 시작하고 싶습니다 /.

마지막으로 가상 머신을 시작해야 합니다.

  1. 일반 폴더를 루트 파일 시스템으로 사용합니다.
  2. 가상 환경에 허용된 일부 폴더를 마운트할 수 있습니다.
  3. 브리지 네트워킹이 사용됩니다(호스트 구성이 0임 iptables).
  4. GUI 응용 프로그램을 사용하기 위해 X 창을 갖고 싶습니다.

이 목적을 위한 LXC 공식(또는 기타)이 있습니까?

목적

Docker와 같은 것을 재창조할 수 있을지는 모르겠지만 다음과 같은 이점이 필요합니다.

  1. BTRFS를 루트 파티션으로 사용함으로써 현재 시스템의 스냅샷을 무료로 촬영하고 가상 머신을 시작하고 작동할 수 있습니다(새 소프트웨어 설치, 항목 삭제 등).

  2. 가상 머신에서 수행한 작업이 마음에 들면 해당 스냅샷(가상 머신에 의해 수정됨)에서 실제 OS를 부팅할 수 있습니다.

  3. 모든 가상 머신을 무료로 복제할 수 있습니다(시간, CPU 또는 디스크 공간).

  4. 예를 들어, 이 가상 머신을 타임머신으로 사용하여 데이터베이스 서버에 백업을 제공할 수 있습니다. 좋은 점은 1분 이내에 모든 서비스를 즉시 온라인으로 전환할 수 있다는 것입니다. 재해 복구를 촉진합니다.

  5. 어떤 업그레이드나 운영 체제 변경에 관계없이 필요할 때마다 실행해야 하는 특정 애플리케이션(비즈니스에 사용)에 이를 사용할 수 있습니다. 이렇게 하면 디스크 공간 비용 없이 각 애플리케이션에 대한 샌드박스가 완전히 생성되고 BTRFS의 이점(예: 스냅샷 등)이 제공됩니다.

답변1

부분적인 답변으로 하위 볼륨에서 LXC 컨테이너를 생성하기 위해 다음 도구를 만들었습니다.https://github.com/aktos-io/lxc-to-the-future

if [[ "$(grep br0 /etc/network/interfaces)" == "" ]]; then 
    cat <<ONETIME
ERROR: No br0 bridge device found in  /etc/network/interfaces file. 
Edit your /etc/network/interfaces file and add/replace the following section 
in place of "eth0" section 

    auto br0
    iface br0 inet dhcp
        bridge-ifaces eth0
        bridge-ports eth0
        up ifconfig eth0 up

    iface eth0 inet manual


Then run the following: 
    sudo ifup br0
ONETIME
    exit
fi

echo "creating the container directory: $NAME"
mkdir $DIR/$NAME

echo "creating a writable snapshot of given subvolume"
btrfs sub snap $SUBVOL $DIR/$NAME/rootfs

echo "emptying the /etc/fstab file"
echo > $DIR/$NAME/rootfs/etc/fstab

echo "creating the config file"
cat <<CONFIG > $DIR/$NAME/config
# Distribution configuration
lxc.include = /usr/share/lxc/config/debian.common.conf
lxc.arch = x86_64
# Container specific configuration
lxc.rootfs = /var/lib/lxc/$NAME/rootfs
lxc.rootfs.backend = dir
lxc.utsname = $NAME
# Network configuration
lxc.network.type = veth
lxc.network.link = br0
lxc.network.hwaddr = 00:16:3e:7e:11:ac
lxc.network.flags = up 
CONFIG

관련 정보