
내 PC에는 SSD와 HDD가 있습니다. SSD는 시스템용이고 HDD는 데이터 저장용입니다. OS를 데비안에서 우분투로 변경했지만 HDD에 lvm을 백업하는 것을 잊었습니다. 물론 데이터를 잃어버렸습니다. 동일한 크기로 새 논리 볼륨을 다시 만들어 보았습니다. 하지만 xfs_repair를 실행하면 "유효한 보조 슈퍼블록을 찾을 수 없습니다"라는 메시지가 표시됩니다. 쓸모없는 것 같습니다. 새로운 논리 볼륨을 생성했기 때문에 lvscan 솔루션도 쓸모가 없습니다. 그럼 데이터를 복원할 수 있는 방법이 있나요?
답변1
상황은 복잡합니다. 무슨 일이 일어났는지 실제로 알 수 없으며 귀하의 시도가 도움이 되지 않았을 수도 있습니다.
기본적으로 논리 볼륨을 다시 생성하면 서명이 지워지고 처음 4KiB의 데이터가 0이 됩니다. 즉, 새로 생성된 LV에 이전 파일 시스템이 표시되지 않도록 추가로 보장합니다.
-W|--wipesignatures y|n
Controls detection and subsequent wiping of signatures on new LVs.
-Z|--zero y|n
Controls zeroing of the first 4KiB of data in the new LV.
SSD의 경우 lvremove
( issue_discards = 1
lvmconfig에서) 또는 mkfs
.
LVM이 다른 데이터 오프셋을 사용하는 것도 가능합니다. 이 경우 생성하려는 모든 LV도 잘못된 오프셋에 있게 됩니다. LVM이 파티션에 있고 파티션 자체가 올바른 오프셋에서 다시 생성되지 않은 경우에도 마찬가지입니다.
논리 볼륨은 어떤 방식으로든 할당할 수 있습니다(둘 이상이거나 크기를 조정한 경우). 단일 선형 블록(예: 파티션)의 디스크에서 데이터를 사용할 수 있다는 보장은 없습니다.
따라서 누락된 LV를 복원하려면 LVM 메타데이터에 대한 자세한 지식이 필요합니다. 이러한 이유로 LVM은 해당 메타데이터의 백업을 보관합니다 /etc/lvm/{archive,backup}
. 하지만 이미 삭제되었거나 초기화되었거나 삭제된 경우에는 도움이 되지 않으며 루트 파티션을 통해 포맷한 경우에는 이러한 백업이 부족할 수 있습니다. 그래도 어쨌든 확인해 보세요. 운이 좋을 수도 있습니다.
물리 볼륨 자체에도 메타데이터 백업이 있지만, 그 위에 pvcreate/vgcreate를 사용하면 해당 백업도 이미 없어졌을 것입니다. 그래도 다음 사항을 확인하는 것은 나쁘지 않습니다.
$ strings -w /dev/disk | grep -A 1000 'Generated by LVM2'
# Generated by LVM2 version 2.02.103(2) (2013-10-04): Thu Oct 31 11:42:36 2013
...
그리고 수동으로 또는 복구에 도움이 될 수 있는 할당 정보 조각을 찾을 수도 있습니다 vgcfgrestore
. (타임스탬프를 참고하세요. 사고 이전의 타임스탬프를 찾고 있습니다.)
그럼 데이터를 복원할 수 있는 방법이 있나요?
LV가 단일 디스크에 있었고 어떤 식으로든 조각화되지 않았고 여전히 거기에 있는 경우(삭제되지 않음), 같은 파티션 복구 도구를 testdisk
사용하여 LVM이 없는 일반 파티션으로 복원할 수도 있습니다.
파티션은 논리적 주소 지정을 지원하지 않으므로 여러 세그먼트가 함께 매핑되지 않고 물리적으로 하나의 세그먼트에 있는 경우에만 LV를 파티션에 매핑할 수 있습니다.
데이터가 암호화되지 않은 한 파일 시스템 자체를 복구할 수 없는 경우 photorec
조각화되지 않은 개별 파일을 찾을 수 있습니다(콘텐츠만, 원본 파일 이름 및 구조 손실).