내 Proxmox 6.4 호스트에는 250GB 크기의 LVM 씬 풀이 있었습니다. 여기에 Ubuntu VM(루트 파티션에도 LVM을 사용함)을 생성했지만 실수로 초과 구독하여 VM 내부 PV가 500GB로 설정되었습니다.
숨겨진 250GB 제한을 초과하고 I/O 오류로 인해 VM이 충돌하고 부팅을 거부할 때까지 한동안 모든 것이 잘 작동했습니다. 그래서 지금 디스크를 복구하려고 합니다. 디스크의 파티션 테이블은 그대로 나타납니다.
$ fdisk -l /dev/vm-disks/vm-101-disk-0
Disk /dev/vm-disks/vm-101-disk-0: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disklabel type: gpt
Disk identifier: 30874BBC-0B29-4083-B5BF-E973C665D87F
Device Start End Sectors Size Type
/dev/vm-disks/vm-101-disk-0p1 2048 4095 2048 1M BIOS boot
/dev/vm-disks/vm-101-disk-0p2 4096 2101247 2097152 1G Linux filesystem
/dev/vm-disks/vm-101-disk-0p3 2101248 1048573951 1046472704 499G Linux filesystem
나는 달렸다
$ kpartx -a /dev/vm-disks/vm-101-disk-0
/dev/mapper
내부에 3개의 파티션에 대한 항목을 생성하면 vm-101-disk-0
작동합니다. 내가 실행하면 :
$ file -sL /dev/mapper/vm--disks-vm--101--disk--0p3
/dev/mapper/vm--disks-vm--101--disk--0p3: LVM2 PV (Linux Logical Volume Manager), UUID: fdOzWR-sPcy-hyYo-Lj2H-YEnZ-wK3c-J6biES, size: 535794024448
그러면 디스크의 3번째 파티션 안에 PV가 보입니다. 하지만 데이터 복구를 시작하기 위해 호스트 어딘가에 이를 마운트하려면 어떻게 해야 합니까? 분명히 pvscan
다른 LV 내부에 있기 때문에 호스트 시스템에서는 이를 볼 수 없습니다. 여기에 복구를 위한 옵션이 있습니까? 아니면 VM이 500GB라고 생각했지만 실제로는 복구할 수 없을 정도로 손상되었다는 의미는 아니었습니까?
답변1
가상 풀의 공간이 모두 소진되면 VM에 쓰기 I/O 오류가 발생했습니다. VM의 경우 하드 디스크가 예기치 않게 모든 쓰기를 거부한 것처럼 보입니다. 따라서 VM이 베어 하드웨어인 경우 첫 번째 조치는 새 하드 디스크를 찾아 이 불량 디스크를 여기에 복제하는 것이었습니다. HW가 수정된 후 논리적 구조를 수정할 수 있습니다.
가상 머신의 경우 손상된 하드웨어가 없으면 씬 볼륨 작업을 복원하여 "하드 디스크"를 "수정"할 수 있습니다. 씬 풀을 확대하고 lvextend
씬 풀 LV를 사용하여 공간을 추가하세요.
그리고 완료되면 일부 복구(가상) 미디어에서 VM을 부팅하고 표준 파일 시스템 복구를 수행합니다. 기억하세요. 그다지 어려움은 없을 것입니다. 일반적으로 이러한 종류의 오류를 견딜 수 있도록 설계된 최신 파일 시스템입니다.
씬 LVM을 모니터링합니다. 데이터 공간 고갈은 그렇게 큰 문제는 아니지만,메타데이터피로는 훨씬 더 큰 영향을 미칠 수 있습니다. 이런 일이 발생하도록 허용하지 마십시오.