현재 파일(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
답변2
문제를 해결하는 "해킹"을 발견했습니다.
문제는 lxc storage create newstorage
기본적으로 15GB 이미지를 생성한다는 것입니다. 이 값은 변경할 수 없습니다.
LXD를 새로 설치하여 다른 Linux 시스템에 액세스하고 lxd init
그곳에서 실행해야 합니다. 원하는 새 이미지 용량의 루프 장치 크기인 btrfs와 이미지 이름을 선택합니다. 이제 새 Storage.img를 서버에 복사하세요.
내용을 복사하는 단계는 다음과 같습니다.
- 모든 컨테이너 종료
- 머신 재부팅
- old Storage.img를 /mnt/oldstorage에 마운트합니다.
- 새 Storage.img를 /mnt/newstorage에 마운트합니다.
- sudo cp -rpv /mnt/oldstorage /mnt/newstorage를 실행합니다.
- /var/lib/lxd/disks/ 폴더에서 이전 Storage.img를 이동하세요.
- 새 Storage.img를 /var/lib/lxd/disks/로 이동합니다.
- 머신 재부팅
- 모든 컨테이너 시작
편집하다: 이 방법은 기존 컨테이너를 삭제하지 않는 한 잘 작동합니다. LXD는 각 컨테이너에 대해 하위 볼륨을 생성합니다. 기존 컨테이너를 삭제하는 기능을 유지하려면 각 컨테이너에 대해 하위 볼륨을 생성해야 합니다.
btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>