BTRFS 스냅샷을 많이 사용하는 Ubuntu 14.04 애플리케이션 어플라이언스가 있습니다. 애플리케이션은 하이퍼바이저에 구애받지 않으며 문제를 해결해야 하는 경우를 대비해 스냅샷을 VM 이미지와 함께 저장해야 합니다. BTRFS 스냅샷 대신 스냅샷 방법에 내장된 하이퍼바이저를 사용하려면 VM에서 하이퍼바이저에 대한 API 액세스가 필요하기 때문에 더 많은 작업이 필요합니다. 이는 보안상의 이유로 원하지 않습니다. 또한 머신을 종료하거나 하이퍼바이저 API에 액세스하지 않고도 어플라이언스 명령줄에서 직접 ssh를 통해 BTRFS 스냅샷 파일 시스템 하위 볼륨에 원격으로 액세스할 수 있습니다.
과거에는 이 애플리케이션을 vmware 기반 하이퍼바이저에 배포했습니다. 나는 항상 vmware 디스크에서 씬 프로비저닝을 사용하고 성능 문제를 전혀 발견하지 못했습니다. 저는 이 장치에서 많은 테스트를 수행하고 동시에 여러 테스트를 실행하기 위해 여러 장치를 한 번에 배포하는 경향이 있기 때문에 씬 프로비저닝을 사용하고 있습니다.
디스크 증가가 통제를 벗어나지 않도록 스크립트로 스토리지를 과도하게 커밋하지 않도록 매우 주의하고 있습니다. 씬 프로비저닝된 디스크 요구 사항이 증가할 때 발생하는 I/O 드롭도 눈에 띄지 않습니다.
이제 KVM을 지원해야 하며 디스크를 씬/스파스 프로비저닝 상태로 유지하고 싶지만 CoW 파일 시스템을 다른 CoW 파일 시스템과 혼합하는 것은 지나치게 중복된 쓰기 및 디스크로 인해 좋지 않다는 내용을 읽었습니다. 아이디어 등의 주어진 일반적인 예는 BTRFS 형식의 볼륨에 저장된 qcow2 형식의 디스크를 사용하여 가상 머신을 실행하는 것입니다. 나에게는 그 반대가 사실입니다. qcow2 이미지에서 실행되는 가상 머신에 BTRFS 형식의 파일 시스템을 갖고 싶습니다. qcow2 이미지 위에 BTRFS 스냅샷이 성능에 미치는 영향에 대한 자세한 내용은 찾지 못했습니다.
질문: KVM이 사용하는 디스크 크기에 따라 커지는 다른 스파스 파일 형식이 있습니까?
나는 희소 원시 파일을 사용하여 탐색했지만 cp, untar/gunzip 다운로드 등을 통해 희소하게 유지할 수 없는 것 같습니다. 희박한 원본 파일을 사용하고 싶다면 단순히 이동할 수 없기 때문에 배포가 어려운 것 같습니다.
답변1
문제는 KVM이 디스크 이미징을 전혀 지원하지 않는다는 것입니다. vmware와 달리 KVM은 올인원 솔루션입니다.오직가상화 솔루션을 구축할 수 있는 가상화 기능을 제공합니다.
...핵심 가상화 인프라를 제공하는 로드 가능한 커널 모듈 kvm.ko와 프로세서별 모듈 kvm-intel.ko 또는 kvm-amd.ko로 구성됩니다. -http://www.linux-kvm.org/page/Main%5F페이지
일반적으로 KVM 기반 솔루션에는 다음의 조합이 포함됩니다.
- KVM - CPU의 가상화 기능에 액세스하는 데 사용됩니다.
- QEMU- BIOS/UEFI 등의 에뮬레이션 비트 제공
- 기타 라이브러리 및 도구 - 예:라이브러리 가상 머신그리고가상 머신 관리자
QEMU
QEMU는 두 가지를 지원합니다.국가의디스크 형식(VDI와 같은 다른 형식도 있음):
날것의
원시 디스크 이미지 형식(기본값). 이 형식의 장점은
간단하고 다른 모든 에뮬레이터로 쉽게 내보낼 수 있다는 것입니다.
파일 시스템이 익스플로잇(예: Linux의 ext2 또는 ext3, Windows의 NTFS)을 지원 하는 경우 작성된 섹터만 공간을 예약합니다. - 사람들 qemu-img
Q소/2
QEMU 이미지 형식은 가장 일반적인 형식입니다. 이를 사용하면
더 작은 이미지(
Windows와 같이 파일 시스템이 익스플로잇을 지원하지 않는 경우
유용함 ), 선택적 AES 암호화, zlib 기반 압축 및 여러 VM 스냅샷 지원을 얻을 수 있습니다. - 사람들 qemu-img
라이브러리 가상 머신
libvirt는 디스크 이미지를 저장하는 여러 가지 방법을 제공합니다.
- 디렉토리 백엔드
- 로컬 파일 시스템 백엔드
- 네트워크 파일 시스템 백엔드
- 논리적 백엔드 - LVM이지만 씬 프로비저닝은 없음 :(
- 디스크 백엔드
- iSCSI 백엔드
- SCSI 백엔드
- 다중 경로 백엔드
- RBD(RADOS 블록 장치) 백엔드
- 셰퍼드 백엔드
- Gluster 백엔드
- ZFS 백엔드
- Virtuozzo 스토리지 백엔드
이를 확인하고 귀하의 요구 사항을 충족하는 것이 있는지 확인하십시오. 바라보다https://libvirt.org/storage.html, 또는 더 나은https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Administration_Guide/chap-Virtualization_Administration_Guide-Storage_Pools-Storage_Pools.html
답변2
내 개인적인 경험으로는 희소 기능을 갖춘 호스트 파일 시스템에서 원시 파일을 사용할 수 있다는 것입니다.
ext4 호스트 파일 시스템에 원시 파일이 있습니다. VM을 종료한 후 원본 파일(루프 장치로 마운트됨)에서 "zerofree"를 사용할 수 있고 cp --sparse=always oldfile newfile을 사용하면 파일 크기를 줄일 수 있습니다. 나는 테스트 시스템의 이미지를 "보관"하는 데만 이 방법을 사용하기 때문에 사용 중에 파일이 드물게 유지되는지는 모르겠습니다.
그런데 스냅샷이 많은 btrfs는 좋지 않은 생각인 것 같습니다. https://btrfs.wiki.kernel.org/index.php/Gotchas#Having_many_subvolumes_can_be_very_slow