내 컴퓨터에는 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
조각화되지 않은 일부 개별 파일이 발견될 수 있습니다(콘텐츠, 원본 파일 이름 및 구조만 손실됨).