콘텐츠로 이동

8장: 컨테이너 스냅샷

이 장에서는 권한이 없는 사용자로서의 명령을 실행해야 합니다(이 책을 처음부터 따라오고 있다면 "lxdadmin"입니다).

스냅샷 컨테이너는 나중에 자세히 다루겠지만, 아마도 운영 중인 LXD 서버에서 가장 중요한 측면입니다. 스냅샷은 빠른 복구를 보장합니다. 특정 컨테이너에서 실행 중인 주요 소프트웨어를 업데이트할 때에는 예방책으로 스냅샷을 사용하는 것이 좋습니다. 업데이트 도중 해당 응용프로그램을 손상시키는 문제가 발생하면, 스냅샷을 복원하여 몇 초간의 다운타임만으로 다시 작동 상태로 돌아갈 수 있습니다.

저자는 PowerDNS의 공개 서버에 LXD 컨테이너를 사용했으며, 이러한 응용프로그램을 업데이트하는 과정이 스냅샷을 찍는 덕분에 더 이상 걱정이 되지 않게 되었습니다.

심지어 컨테이너가 실행 중일 때도 스냅샷을 찍을 수 있습니다.

스냅샷 프로세스

다음 명령을 사용하여 ubuntu-test 컨테이너의 스냅샷을 가져옵니다:

lxc snapshot ubuntu-test ubuntu-test-1

여기서 스냅샷의 이름을 "ubuntu-test-1"로 지정했지만, 다른 이름으로도 지정할 수 있습니다. 스냅샷이 제대로 생성되었는지 확인하기 위해 컨테이너의 "lxc info" 명령을 실행하세요:

lxc info ubuntu-test

이미 정보 화면을 확인한 적이 있습니다. 하단으로 스크롤하면 다음과 같이 표시됩니다:

Snapshots:
  ubuntu-test-1 (taken at 2021/04/29 15:57 UTC) (stateless)

성공입니다! 스냅샷이 준비되었습니다.

이제 ubuntu-test 컨테이너로 이동합니다.

lxc exec ubuntu-test bash

그리고 touch 명령으로 빈 파일을 생성하세요.

touch this_file.txt

이제 컨테이너를 종료합니다.

파일을 생성하기 전의 상태로 컨테이너를 복원하는 가장 안전한 방법은 특히 많은 변경이 있었을 경우에는 먼저 컨테이너를 중지하는 것입니다:

lxc stop ubuntu-test

그런 다음 복원하십시오.

lxc restore ubuntu-test ubuntu-test-1

그런 다음 컨테이너를 다시 시작합니다.

lxc start ubuntu-test

컨테이너로 다시 들어가서 "this_file.txt" 파일을 확인해보면, 이전에 생성한 파일이 사라진 것을 확인할 수 있습니다.

더 이상 스냅샷을 사용하지 않는다면, 스냅샷을 삭제할 수 있습니다:

lxc delete ubuntu-test/ubuntu-test-1

주의

컨테이너가 실행 중인 상태에서 항상 스냅샷을 삭제해야 합니다. 왜일까요? 왜냐하면 lxc delete 명령은 전체 컨테이너를 삭제하는 데에도 사용되기 때문입니다. 만약 위의 명령에서 "ubuntu-test" 다음에 실수로 Enter 키를 누른 경우 컨테이너가 중지되면 컨테이너가 삭제됩니다. 경고 메시지가 표시되지 않으며, 단순히 요청한 대로 수행합니다.

그러나 컨테이너가 실행 중인 경우에는 다음과 같은 메시지가 표시됩니다:

Error: The instance is currently running, stop it first or pass --force

그래서 항상 컨테이너가 실행 중일 때 스냅샷을 삭제하도록 하세요.

자동으로 스냅샷을 생성하고, 특정 시간이 지나면 사라지도록 스냅샷 만료를 설정하고, 스냅샷 서버에 스냅샷을 자동으로 새로 고치는 과정은 다음 장에서 자세히 설명합니다.

  • 자동으로 스냅샷을 생성하는 프로세스 설정
  • 스냅샷의 만료를 설정하여 일정 기간이 지나면 사라지도록 설정
  • 스냅샷 서버로 스냅샷을 자동으로 갱신하도록 설정

Author: Steven Spencer

Contributors: Ezequiel Bruni