Btrfs를 백업 저장소로 사용하여 LXC를 사용하려고 합니다. Btrfs는 간편한 스냅샷 생성/중복 제거를 허용하며 여러 "의사 가상 머신"을 가동하는 데 적합합니다.
제가 겪고 있는 문제는 제가 테스트하고 있는 일부 응용 프로그램이 많은 양의 데이터를 디스크에 덤프한다는 것입니다. Btrfs 볼륨의 사용을 제한하려고 하여 특정 컨테이너에 대해 LXC에서 생성한 하위 볼륨에 할당량을 할당했습니다.
애플리케이션에는 오류 방지 테스트가 있습니다. 기록 중인 파일 시스템에 사용 가능한 디스크 공간이 일정량(예: 512MB) 미만인 경우 새 로그를 위한 공간을 확보하기 위해 오래된 로그를 지우기 시작합니다.
문제는 할당량이 적용된 경우에도 LXC 루트 파일 시스템이 여전히 호스트 Btrfs 파일 시스템의 전체 크기를 보고한다는 것입니다.
예: Btrfs 파일 시스템이 250GB이고 및 옵션을 사용하여 LXC 컨테이너를 생성한 경우 -B btrfs
이제 -s
Btrfs 파일 시스템에 이 새 컨테이너의 루트를 나타내는 하위 볼륨이 있습니다. 그런 다음 컨테이너가 차지하는 공간을 제한하고 싶었기 때문에 컨테이너에 32GB의 qgroup 제한을 적용했습니다. 그러나 df
LXC 컨테이너에서 이 명령을 실행할 때 전체 파일 시스템 크기는 여전히 250GB로 표시되며 사용 가능한 공간은 대략 호스트 파일 시스템의 실제 사용 가능한 공간을 기반으로 합니다. 즉, 할당량 제한은 표시되지 않습니다 df
.
이는 내 로깅 애플리케이션이 전체 할당량을 채울 수 있고 여전히 쓸 수 있는 용량이 200GB 이상이라고 믿으므로 오래된 데이터를 재활용하지 않는다는 의미입니다. 결국 할당량이 초과되고 COW 파일 시스템 제한으로 인해 할당량을 비활성화하고 이전 로그를 수동으로 삭제해야 합니다. 할당량이 여전히 동일한 크기로 적용되면 추가 공간이 없기 때문에 데이터를 삭제할 수 없습니다. 삭제 작업을 위해
나는 Btrfs에서 "여유 공간"이라는 개념이 혼란스럽고 어려울 수 있다는 것을 이해하기 위해 Btrfs에 대해 충분히 읽고 충분히 알고 있지만 LXC에서 "대략" 얻을 수 있는 방법이 있습니까? 숫자? 가급적 df
디스크 여유 공간(사용)을 가져오기 위한 표준 API를 사용하여 이 작업을 수행해야 합니다. 이는 파일 시스템에 액세스하고 대략적인 여유 공간을 알아야 하는 다른 응용 프로그램에서도 작동한다는 의미이기 때문입니다.
약 1GB의 실제 여유 공간(할당량에 따라 제공)을 확보할 수 있다면 파일 시스템이 할당량을 초과하지 않도록 로그 만료 매개변수를 조정하는 데 충분할 것입니다.
답변1
이것은 btrfs 하위 볼륨 공간 할당을 처리하기 위해 제가 찾은 최고의 도구입니다. BTRFS 스냅샷 크기 가져오기 |
모든 크레딧은 Kyle Agronik(이 스크립트 작성자)에게 전달됩니다.