원래 qcow2 내보내기의 스냅샷인 파일 시스템 유형 "LVM2_member"의 zvol 파티션을 마운트합니다.

원래 qcow2 내보내기의 스냅샷인 파일 시스템 유형 "LVM2_member"의 zvol 파티션을 마운트합니다.

현재 qcow2 파일에 저장된 일부 가상 머신을 ZFS ZVOL로 마이그레이션하려고 합니다.

정말로 이 작업을 수행할지 결정하기 전에 하고 싶은 한 가지는 전원이 꺼진 VM의 스냅샷을 생성한 다음 해당 스냅샷을 읽기 전용 모드로 호스트에 마운트하여 탐색할 수 있는지 확인하는 것입니다. 자유롭게 파일을 보거나 복사할 수 있습니다.

다음과 같은 워크플로가 있습니다.

정보 얻기:

/kvm-images $ sudo qemu-img info Ubuntu-Server-20.04.qcow2

image: Ubuntu-Server-20.04.qcow2
file format: qcow2
virtual size: 128 GiB (137438953472 bytes)
disk size: 41.4 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: true
    refcount bits: 16
    corrupt: false
    extended l2: false   

ZVOL 생성

/kvm-images $ sudo zfs create -V 137438953472 tank/kvm-images/Ubuntu-Server-20.04

qcow2 파일에서 ZVOL로 이미지 내보내기

/kvm-images $ sudo qemu-img convert -O raw /kvm-images/Ubuntu-Server-20.04.qcow2 /dev/zvol/tank/kvm-images/Ubuntu-Server-20.04

그런 다음 VM Virtio Disk 1 xml을 수정합니다.

<disk type="file" device="disk">
  <driver name="qemu" type="qcow2"/>
  <source file="/kvm-images/Ubuntu-Server-20.04.qcow2"/>
  <target dev="vda" bus="virtio"/>
  <boot order="1"/>
  <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</disk>

도착하다

<disk type="block" device="disk">
  <driver name="qemu" type="raw" cache="none" io="native" discard="unmap"/>
  <source dev="/dev/zvol/tank/kvm-images/Ubuntu-Server-20.04" index="2"/>
  <backingStore/>
  <target dev="vda" bus="virtio"/>
  <boot order="1"/>
  <alias name="virtio-disk0"/>
  <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</disk>

가상 머신으로 부팅할 수 있는데 모든 것이 이전과 같은 것 같습니다.

그래서 VM을 종료하고 스냅샷을 생성했습니다.

/kvm-images $ sudo zfs snapshot tank/kvm-images/Ubuntu-Server-20.04@test-01

보낸 후

sudo zfs set snapdev=visible tank/kvm-images/Ubuntu-Server-20.04

스냅샷의 파티션을 볼 수 있습니다/dev/zvol/tank/kvm-images

/dev/zvol/tank/kvm-images $ ls -lsah
total 0
0 drwxr-xr-x 2 root root 280 Jul 25 16:31 .
0 drwxr-xr-x 3 root root  80 Jul 25 11:47 ..
0 lrwxrwxrwx 1 root root  13 Jul 25 15:53 Ubuntu-Server-20.04 -> ../../../zd48
0 lrwxrwxrwx 1 root root  15 Jul 25 15:53 Ubuntu-Server-20.04-part1 -> ../../../zd48p1
0 lrwxrwxrwx 1 root root  15 Jul 25 15:53 Ubuntu-Server-20.04-part2 -> ../../../zd48p2
0 lrwxrwxrwx 1 root root  15 Jul 25 15:53 Ubuntu-Server-20.04-part3 -> ../../../zd48p3
0 lrwxrwxrwx 1 root root  13 Jul 25 16:31 Ubuntu-Server-20.04@test-01 -> ../../../zd64
0 lrwxrwxrwx 1 root root  15 Jul 25 16:31 Ubuntu-Server-20.04@test-01-part1 -> ../../../zd64p1
0 lrwxrwxrwx 1 root root  15 Jul 25 16:31 Ubuntu-Server-20.04@test-01-part2 -> ../../../zd64p2
0 lrwxrwxrwx 1 root root  15 Jul 25 16:31 Ubuntu-Server-20.04@test-01-part3 -> ../../../zd64p3

사용해봐도 zfs mount별 효과가 없었고,

sudo zfs mount tank/kvm-images/Ubuntu-Server-20.04@test-01

Ubuntu-Server-20.04 이후에는 자동으로 수행할 수 없으며 강제로 언급되는 경우

cannot open 'tank/kvm-images/Ubuntu-Server-20.04@test-01': snapshot delimiter '@' is not expected here

그래서 레거시인 것처럼 수동으로 설치해 보았습니다.

sudo mount /dev/zvol/tank/kvm-images/Ubuntu-Server-20.04@test-01-part3 /mnt/snapshots/ubuntu

mount: /mnt/snapshots/ubuntu: unknown filesystem type 'LVM2_member'.

파티션 2( Ubuntu-Server-20.04@test-01-part2)는 마운트 및 탐색이 가능하며 이 파티션을 포함합니다 /boot.

발행 sudo vgscan --mknodes수익률

WARNING: Not using device /dev/zd64p3 for PV aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa.
WARNING: PV aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa prefers device /dev/zd48p3 because device is used by LV.
Found volume group "ubuntu-vg" using metadata type lvm2
WARNING: Not using device /dev/zd64p3 for PV aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa.
WARNING: PV aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa prefers device /dev/zd48p3 because device is used by LV.

이러한 고유 ID(aaa)는 모두 동일합니다.

따라서 이러한 모든 결과를 바탕으로 다음 위치에 있는 스냅샷 파일에 어떻게 액세스합니까?/dev/zvol/tank/kvm-images/Ubuntu-Server-20.04@test-01-part3

또한 저는 ZFS를 처음 접했고(지난 주에 ZFS에 대해 많이 읽었습니다) LVM에 대한 경험이 전혀 없습니다(OS 설치 프로그램에서 기본값으로 사용하도록 허용하는 것 제외). 따라서 다른 방법이 있을 수 있습니다. 이 작업에 대한 올바른 방법을 수행하십시오.

qcow2 파일을 ZFS 파일 시스템으로 이동하고 거기에서 계속 사용하면 스냅샷을 만드는 것이 더 쉬워지나요? 이 작업을 수행했고 작동했지만(테스트 스냅샷은 없음) 이것이 CoW의 CoW이므로 피해야 한다는 내용을 읽었으므로 이 ZVOL 접근 방식을 테스트하고 있습니다.

관련 정보