LXD 컨테이너를 다른 저장소로 이동

LXD 컨테이너를 다른 저장소로 이동

현재 파일(btrfs)에 문제가 있습니다 storage.img. 컨테이너 안에 2TB의 데이터가 있었기 때문에 Storage.img의 크기는 2TB가 되었습니다. 그 후 모든 것을 삭제하고 100GB의 실제 데이터만 남았습니다. 이제 문제는 Storage.img가 100GB로 줄어들지 않았다는 것입니다. 그래도 2TB가 크네요.

newstorage.img명령을 사용하여 LXD에 다른 저장소(btrfs)를 생성했지만 lxc storage create newstorage컨테이너를 새 저장소로 전송하는 방법을 모르겠습니다.옳은 길그래서 이전 것을 삭제 storage.img하고 HDD 공간을 회수할 수 있습니다.

두 개의 imgs를 수동으로 마운트하고 수행하는 등의 작업을 시도했지만 cp -R /one/* /new/컨테이너를 시작할 수 없습니다.

답변1

트릭이 필요하지 않습니다.

lxc stop container_name
lxc move container_name temp_container_name -s new_storage_pool
lxc move temp_container_name container_name
lxc start container_name

크레딧:https://discuss.linuxcontainers.org/t/how-to-move-containers-to-a-new-storage-pool-on-the-same-host/2798

답변2

문제를 해결하는 "해킹"을 발견했습니다.

문제는 lxc storage create newstorage기본적으로 15GB 이미지를 생성한다는 것입니다. 이 값은 변경할 수 없습니다.

LXD를 새로 설치하여 다른 Linux 시스템에 액세스하고 lxd init그곳에서 실행해야 합니다. 원하는 새 이미지 용량의 루프 장치 크기인 btrfs와 이미지 이름을 선택합니다. 이제 새 Storage.img를 서버에 복사하세요.

내용을 복사하는 단계는 다음과 같습니다.

  1. 모든 컨테이너 종료
  2. 머신 재부팅
  3. old Storage.img를 /mnt/oldstorage에 마운트합니다.
  4. 새 Storage.img를 /mnt/newstorage에 마운트합니다.
  5. sudo cp -rpv /mnt/oldstorage /mnt/newstorage를 실행합니다.
  6. /var/lib/lxd/disks/ 폴더에서 이전 Storage.img를 이동하세요.
  7. 새 Storage.img를 /var/lib/lxd/disks/로 이동합니다.
  8. 머신 재부팅
  9. 모든 컨테이너 시작

편집하다: 이 방법은 기존 컨테이너를 삭제하지 않는 한 잘 작동합니다. LXD는 각 컨테이너에 대해 하위 볼륨을 생성합니다. 기존 컨테이너를 삭제하는 기능을 유지하려면 각 컨테이너에 대해 하위 볼륨을 생성해야 합니다.

btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>

관련 정보